@videojs/html 10.0.0-beta.30 → 10.0.0-beta.31

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 (357) hide show
  1. package/cdn/audio-minimal-ui.dev.js +1 -1
  2. package/cdn/audio-minimal-ui.js +1 -1
  3. package/cdn/audio-minimal.dev.js +4 -4
  4. package/cdn/audio-minimal.dev.js.map +1 -1
  5. package/cdn/audio-minimal.js +1 -1
  6. package/cdn/audio-minimal.js.map +1 -1
  7. package/cdn/audio-player.dev.js +1 -0
  8. package/cdn/audio-player.js +1 -0
  9. package/cdn/audio-ui.dev.js +1 -1
  10. package/cdn/audio-ui.js +1 -1
  11. package/cdn/audio.dev.js +4 -4
  12. package/cdn/audio.dev.js.map +1 -1
  13. package/cdn/audio.js +1 -1
  14. package/cdn/audio.js.map +1 -1
  15. package/cdn/background.dev.js +1 -1
  16. package/cdn/background.js +1 -1
  17. package/cdn/{compounds-D1FPw7jg.js → compounds-BA8gXlmJ.js} +32 -188
  18. package/cdn/compounds-BA8gXlmJ.js.map +1 -0
  19. package/cdn/compounds-DKoFv2f8.js +8 -0
  20. package/cdn/compounds-DKoFv2f8.js.map +1 -0
  21. package/cdn/{create-player-5UrHNqBI.js → create-player-BEEc22xK.js} +18 -2
  22. package/cdn/{create-player-5UrHNqBI.js.map → create-player-BEEc22xK.js.map} +1 -1
  23. package/cdn/create-player-D5WQ_jzZ.js +2 -0
  24. package/cdn/{create-player-LjvbIxIq.js.map → create-player-D5WQ_jzZ.js.map} +1 -1
  25. package/cdn/{gesture-element-BbNy1Pjt.js → gesture-element-CxdagZOo.js} +2 -2
  26. package/cdn/{gesture-element-BbNy1Pjt.js.map → gesture-element-CxdagZOo.js.map} +1 -1
  27. package/cdn/{gesture-element-KdpjbbBD.js → gesture-element-x6kojUJk.js} +3 -3
  28. package/cdn/{gesture-element-KdpjbbBD.js.map → gesture-element-x6kojUJk.js.map} +1 -1
  29. package/cdn/i18n-CE4KxKuj.js.map +1 -1
  30. package/cdn/{i18n-DeI9j-ko.js → i18n-C_WyuIHd.js} +2 -2
  31. package/cdn/{i18n-DeI9j-ko.js.map → i18n-C_WyuIHd.js.map} +1 -1
  32. package/cdn/i18n-DyF_NfCk.js.map +1 -1
  33. package/cdn/i18n-o3_t8fxw.js +2 -0
  34. package/cdn/{i18n-R3TQ8P2f.js.map → i18n-o3_t8fxw.js.map} +1 -1
  35. package/cdn/live-audio-minimal-ui.dev.js +2 -0
  36. package/cdn/live-audio-minimal-ui.js +1 -0
  37. package/cdn/live-audio-minimal.dev.d.ts +1 -0
  38. package/cdn/live-audio-minimal.dev.js +97 -0
  39. package/cdn/live-audio-minimal.dev.js.map +1 -0
  40. package/cdn/live-audio-minimal.js +2 -0
  41. package/cdn/live-audio-minimal.js.map +1 -0
  42. package/cdn/live-audio-player.dev.d.ts +1 -0
  43. package/cdn/live-audio-player.dev.js +1 -0
  44. package/cdn/live-audio-player.js +1 -0
  45. package/cdn/live-audio-ui.dev.d.ts +1 -0
  46. package/cdn/live-audio-ui.dev.js +2 -0
  47. package/cdn/live-audio-ui.js +1 -0
  48. package/cdn/live-audio.dev.d.ts +1 -0
  49. package/cdn/live-audio.dev.js +97 -0
  50. package/cdn/live-audio.dev.js.map +1 -0
  51. package/cdn/live-audio.js +2 -0
  52. package/cdn/live-audio.js.map +1 -0
  53. package/cdn/{live-button-element-CylfQD0v.js → live-button-element-BFufqFFV.js} +3 -3
  54. package/cdn/{live-button-element-CylfQD0v.js.map → live-button-element-BFufqFFV.js.map} +1 -1
  55. package/cdn/live-button-element-CEbrR59d.js +2 -0
  56. package/cdn/{live-button-element-C-WypudK.js.map → live-button-element-CEbrR59d.js.map} +1 -1
  57. package/cdn/live-video-minimal-ui.dev.d.ts +1 -0
  58. package/cdn/live-video-minimal-ui.dev.js +2 -0
  59. package/cdn/live-video-minimal-ui.js +1 -0
  60. package/cdn/live-video-minimal.dev.js +5 -36
  61. package/cdn/live-video-minimal.dev.js.map +1 -1
  62. package/cdn/live-video-minimal.js +1 -1
  63. package/cdn/live-video-minimal.js.map +1 -1
  64. package/cdn/live-video-player.dev.d.ts +1 -0
  65. package/cdn/live-video-player.dev.js +1 -0
  66. package/cdn/live-video-player.js +1 -0
  67. package/cdn/live-video-ui.dev.d.ts +1 -0
  68. package/cdn/live-video-ui.dev.js +2 -0
  69. package/cdn/live-video-ui.js +1 -0
  70. package/cdn/live-video.dev.js +5 -38
  71. package/cdn/live-video.dev.js.map +1 -1
  72. package/cdn/live-video.js +1 -1
  73. package/cdn/live-video.js.map +1 -1
  74. package/cdn/media/hls-background-video.dev.js +1 -1
  75. package/cdn/media/hls-background-video.js +1 -1
  76. package/cdn/media/hls-background-video.js.map +1 -1
  77. package/cdn/media/mux-background-video.dev.js +1 -1
  78. package/cdn/media/mux-background-video.js +1 -1
  79. package/cdn/media/mux-background-video.js.map +1 -1
  80. package/cdn/media/mux-data.dev.js +1 -1
  81. package/cdn/media/mux-data.dev.js.map +1 -1
  82. package/cdn/media/mux-data.js +1 -1
  83. package/cdn/media/mux-data.js.map +1 -1
  84. package/cdn/{media-B4uT13xV.js → media-B4uT13xV2.js} +1 -1
  85. package/cdn/media-B4uT13xV2.js.map +1 -0
  86. package/cdn/{media-D6Xer97u.js → media-D6Xer97u2.js} +1 -1
  87. package/cdn/media-D6Xer97u2.js.map +1 -0
  88. package/cdn/minimal-ui-0eDc51VS.js +2 -0
  89. package/cdn/{minimal-ui-D3XCtSx_.js.map → minimal-ui-0eDc51VS.js.map} +1 -1
  90. package/cdn/minimal-ui-C2vRjwax.js +36 -0
  91. package/cdn/minimal-ui-C2vRjwax.js.map +1 -0
  92. package/cdn/{minimal-ui-ajeAXABk.js → minimal-ui-CLBGXvp5.js} +4 -4
  93. package/cdn/{minimal-ui-ajeAXABk.js.map → minimal-ui-CLBGXvp5.js.map} +1 -1
  94. package/cdn/minimal-ui-ClCvmIm4.js +2 -0
  95. package/cdn/minimal-ui-ClCvmIm4.js.map +1 -0
  96. package/cdn/minimal-ui-DDM48qb3.js +2 -0
  97. package/cdn/minimal-ui-DDM48qb3.js.map +1 -0
  98. package/cdn/minimal-ui-DY4C1zGt.js +23 -0
  99. package/cdn/minimal-ui-DY4C1zGt.js.map +1 -0
  100. package/cdn/{minimal-ui-KUzZkG_3.js → minimal-ui-Dk4_XLp4.js} +8 -8
  101. package/cdn/{minimal-ui-KUzZkG_3.js.map → minimal-ui-Dk4_XLp4.js.map} +1 -1
  102. package/cdn/{minimal-ui-p9QCZfCz.js → minimal-ui-JHiRECkp.js} +2 -2
  103. package/cdn/{minimal-ui-p9QCZfCz.js.map → minimal-ui-JHiRECkp.js.map} +1 -1
  104. package/cdn/{player-POHYt5tr.js → player-BGAk4zHP.js} +2 -2
  105. package/cdn/{player-POHYt5tr.js.map → player-BGAk4zHP.js.map} +1 -1
  106. package/cdn/{player-CngT-cVQ.js → player-Bb9oakYz.js} +2 -2
  107. package/cdn/{player-CngT-cVQ.js.map → player-Bb9oakYz.js.map} +1 -1
  108. package/cdn/{player-BXQMSpgR.js → player-BrlY19A2.js} +2 -2
  109. package/cdn/{player-BXQMSpgR.js.map → player-BrlY19A2.js.map} +1 -1
  110. package/cdn/{player-BuxifKSM.js → player-CQENs37B.js} +2 -2
  111. package/cdn/{player-BuxifKSM.js.map → player-CQENs37B.js.map} +1 -1
  112. package/cdn/player-DdOHaN9e.js +2 -0
  113. package/cdn/player-DdOHaN9e.js.map +1 -0
  114. package/cdn/{player-B5zkgqwT.js → player-DtcVc6sP.js} +2 -2
  115. package/cdn/{player-B5zkgqwT.js.map → player-DtcVc6sP.js.map} +1 -1
  116. package/cdn/{player-DMP2pc3L.js → player-bEUswOOg.js} +2 -2
  117. package/cdn/{player-DMP2pc3L.js.map → player-bEUswOOg.js.map} +1 -1
  118. package/cdn/player-qLOeas8M.js +18 -0
  119. package/cdn/player-qLOeas8M.js.map +1 -0
  120. package/cdn/poster-element-BA7p_OJL.js +2 -0
  121. package/cdn/{poster-element-Djlm5fwC.js.map → poster-element-BA7p_OJL.js.map} +1 -1
  122. package/cdn/{poster-element-CuCEBVr3.js → poster-element-BTynHaSW.js} +4 -3
  123. package/cdn/{poster-element-CuCEBVr3.js.map → poster-element-BTynHaSW.js.map} +1 -1
  124. package/cdn/radio-options-controller-Cz5yFvUh.js +138 -0
  125. package/cdn/radio-options-controller-Cz5yFvUh.js.map +1 -0
  126. package/cdn/radio-options-controller-hybHJkeC.js +2 -0
  127. package/cdn/radio-options-controller-hybHJkeC.js.map +1 -0
  128. package/cdn/seek-button-element-C4g3qPbc.js +2 -0
  129. package/cdn/{seek-button-element-CgaXVFPS.js.map → seek-button-element-C4g3qPbc.js.map} +1 -1
  130. package/cdn/{seek-button-element-BD2caCd5.js → seek-button-element-CirtfRSE.js} +4 -3
  131. package/cdn/seek-button-element-CirtfRSE.js.map +1 -0
  132. package/cdn/{skin-element-PDwjO4v0.js → skin-element-BF1a0EIj.js} +2 -2
  133. package/cdn/{skin-element-PDwjO4v0.js.map → skin-element-BF1a0EIj.js.map} +1 -1
  134. package/cdn/skin-element-BTt7JKoR.js +2 -0
  135. package/cdn/{skin-element-DE8OodF5.js.map → skin-element-BTt7JKoR.js.map} +1 -1
  136. package/cdn/template-BKUlUXWF.js +2 -0
  137. package/cdn/template-BKUlUXWF.js.map +1 -0
  138. package/cdn/template-ClYP_1RH.js +31 -0
  139. package/cdn/template-ClYP_1RH.js.map +1 -0
  140. package/cdn/text-element-DW2FuvdI.js +2 -0
  141. package/cdn/text-element-DW2FuvdI.js.map +1 -0
  142. package/cdn/{text-element-dyiwucQB.js → text-element-LzVNdZbp.js} +50 -2
  143. package/cdn/text-element-LzVNdZbp.js.map +1 -0
  144. package/cdn/time-slider-chapters-element-Bf4gYppH.js +2 -0
  145. package/cdn/{time-slider-chapters-element-b6oeaZtJ.js.map → time-slider-chapters-element-Bf4gYppH.js.map} +1 -1
  146. package/cdn/{time-slider-chapters-element-BTMqnBhM.js → time-slider-chapters-element-DMkTYNg3.js} +5 -3
  147. package/cdn/time-slider-chapters-element-DMkTYNg3.js.map +1 -0
  148. package/cdn/{ui-BsUcH4YJ.js → ui-BL6b1m09.js} +7 -7
  149. package/cdn/{ui-BsUcH4YJ.js.map → ui-BL6b1m09.js.map} +1 -1
  150. package/cdn/ui-BbpSrILu.js +2 -0
  151. package/cdn/{ui-DLvwCbsU.js.map → ui-BbpSrILu.js.map} +1 -1
  152. package/cdn/ui-BmCfIOl5.js +38 -0
  153. package/cdn/ui-BmCfIOl5.js.map +1 -0
  154. package/cdn/ui-Bu9GX-M_.js +28 -0
  155. package/cdn/ui-Bu9GX-M_.js.map +1 -0
  156. package/cdn/ui-CBrFrvmm.js +2 -0
  157. package/cdn/{ui-CxftD4RF.js.map → ui-CBrFrvmm.js.map} +1 -1
  158. package/cdn/{ui-CtONjPC2.js → ui-CQsP0EFA.js} +9 -9
  159. package/cdn/{ui-CtONjPC2.js.map → ui-CQsP0EFA.js.map} +1 -1
  160. package/cdn/ui-Crbp7m4I.js +2 -0
  161. package/cdn/ui-Crbp7m4I.js.map +1 -0
  162. package/cdn/ui-DRKjxVsj.js +2 -0
  163. package/cdn/ui-DRKjxVsj.js.map +1 -0
  164. package/cdn/video-minimal-ui.dev.js +1 -1
  165. package/cdn/video-minimal-ui.js +1 -1
  166. package/cdn/video-minimal.dev.js +13 -12
  167. package/cdn/video-minimal.dev.js.map +1 -1
  168. package/cdn/video-minimal.js +1 -1
  169. package/cdn/video-minimal.js.map +1 -1
  170. package/cdn/video-player.dev.d.ts +1 -0
  171. package/cdn/video-player.dev.js +1 -0
  172. package/cdn/video-player.js +1 -0
  173. package/cdn/video-ui.dev.js +1 -1
  174. package/cdn/video-ui.js +1 -1
  175. package/cdn/video.dev.js +14 -13
  176. package/cdn/video.dev.js.map +1 -1
  177. package/cdn/video.js +1 -1
  178. package/cdn/video.js.map +1 -1
  179. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  180. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  181. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  182. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  183. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  184. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  185. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  186. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  187. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  188. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  189. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  190. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  191. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  192. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  193. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  194. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  195. package/dist/default/define/audio/minimal-skin.css +39 -7
  196. package/dist/default/define/audio/skin.css +31 -7
  197. package/dist/default/define/live-audio/minimal-skin.css +39 -7
  198. package/dist/default/define/live-audio/skin.css +31 -7
  199. package/dist/default/define/live-video/minimal-skin.css +39 -7
  200. package/dist/default/define/live-video/minimal-skin.js +1 -1
  201. package/dist/default/define/live-video/minimal-skin.js.map +1 -1
  202. package/dist/default/define/live-video/minimal-skin.tailwind.js +1 -1
  203. package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -1
  204. package/dist/default/define/live-video/skin.css +31 -7
  205. package/dist/default/define/live-video/skin.js +1 -1
  206. package/dist/default/define/live-video/skin.js.map +1 -1
  207. package/dist/default/define/live-video/skin.tailwind.js +1 -1
  208. package/dist/default/define/live-video/skin.tailwind.js.map +1 -1
  209. package/dist/default/define/video/minimal-skin.css +39 -7
  210. package/dist/default/define/video/minimal-skin.js +1 -1
  211. package/dist/default/define/video/minimal-skin.js.map +1 -1
  212. package/dist/default/define/video/minimal-skin.tailwind.js +1 -1
  213. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  214. package/dist/default/define/video/skin.css +31 -7
  215. package/dist/default/define/video/skin.js +1 -1
  216. package/dist/default/define/video/skin.js.map +1 -1
  217. package/dist/default/define/video/skin.tailwind.js +1 -1
  218. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  219. package/dist/default/i18n/provider-mixin.js +24 -0
  220. package/dist/default/i18n/provider-mixin.js.map +1 -1
  221. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  222. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  223. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  224. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  225. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -7
  226. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  227. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  228. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  229. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  230. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  231. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  232. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  233. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  234. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  235. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  236. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  237. package/dist/default/ui/slider/slider-element.js +1 -2
  238. package/dist/default/ui/slider/slider-element.js.map +1 -1
  239. package/dist/default/ui/time-slider/time-slider-element.js +1 -2
  240. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  241. package/dist/default/ui/volume-slider/volume-slider-element.js +1 -2
  242. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  243. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  244. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  245. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  246. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  247. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  248. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  249. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  250. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  251. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  252. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  253. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  254. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  255. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  256. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  257. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  258. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  259. package/dist/dev/define/audio/minimal-skin.css +39 -7
  260. package/dist/dev/define/audio/skin.css +31 -7
  261. package/dist/dev/define/live-audio/minimal-skin.css +39 -7
  262. package/dist/dev/define/live-audio/skin.css +31 -7
  263. package/dist/dev/define/live-video/minimal-skin.css +39 -7
  264. package/dist/dev/define/live-video/minimal-skin.js +1 -1
  265. package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
  266. package/dist/dev/define/live-video/minimal-skin.tailwind.js +1 -1
  267. package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
  268. package/dist/dev/define/live-video/skin.css +31 -7
  269. package/dist/dev/define/live-video/skin.js +1 -1
  270. package/dist/dev/define/live-video/skin.js.map +1 -1
  271. package/dist/dev/define/live-video/skin.tailwind.js +1 -1
  272. package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
  273. package/dist/dev/define/video/minimal-skin.css +39 -7
  274. package/dist/dev/define/video/minimal-skin.js +8 -8
  275. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  276. package/dist/dev/define/video/minimal-skin.tailwind.js +12 -12
  277. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  278. package/dist/dev/define/video/skin.css +31 -7
  279. package/dist/dev/define/video/skin.js +8 -8
  280. package/dist/dev/define/video/skin.js.map +1 -1
  281. package/dist/dev/define/video/skin.tailwind.js +12 -12
  282. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  283. package/dist/dev/i18n/provider-mixin.d.ts.map +1 -1
  284. package/dist/dev/i18n/provider-mixin.js +24 -0
  285. package/dist/dev/i18n/provider-mixin.js.map +1 -1
  286. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  287. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  288. package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js +1 -1
  289. package/dist/dev/packages/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  290. package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js +8 -7
  291. package/dist/dev/packages/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  292. package/dist/dev/packages/skins/dist/default/default/tailwind/components/time.js +1 -1
  293. package/dist/dev/packages/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  294. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  295. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  296. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  297. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  298. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  299. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  300. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  301. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/time.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 +1 -2
  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 +1 -2
  307. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  308. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
  309. package/dist/dev/ui/volume-slider/volume-slider-element.js +1 -2
  310. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  311. package/docs/README.md +1 -1
  312. package/docs/concepts/media-sources.md +26 -2
  313. package/docs/concepts/skins.md +39 -15
  314. package/docs/how-to/customize-skins.md +7662 -48
  315. package/docs/how-to/i18n-switch-locale.md +27 -0
  316. package/docs/how-to/installation.md +4 -4
  317. package/docs/how-to/migrate-from-plyr.md +1 -5
  318. package/docs/llms.txt +7 -0
  319. package/docs/reference/cloudflare-video.md +483 -0
  320. package/docs/reference/dash-video.md +54 -0
  321. package/docs/reference/feature-metadata.md +3 -1
  322. package/docs/reference/hlsjs-video.md +626 -0
  323. package/docs/reference/native-hls-video.md +40 -0
  324. package/docs/reference/shaka-video.md +588 -0
  325. package/docs/reference/spotify-audio.md +394 -0
  326. package/docs/reference/tiktok-video.md +504 -0
  327. package/docs/reference/title.md +1 -1
  328. package/docs/reference/twitch-video.md +447 -0
  329. package/docs/reference/vimeo-video.md +1038 -0
  330. package/docs/reference/youtube-video.md +573 -0
  331. package/package.json +9 -9
  332. package/cdn/audio-headless.dev.js +0 -1
  333. package/cdn/audio-headless.js +0 -1
  334. package/cdn/compounds-CHlzbAKu.js +0 -8
  335. package/cdn/compounds-CHlzbAKu.js.map +0 -1
  336. package/cdn/compounds-D1FPw7jg.js.map +0 -1
  337. package/cdn/create-player-LjvbIxIq.js +0 -2
  338. package/cdn/i18n-R3TQ8P2f.js +0 -2
  339. package/cdn/live-button-element-C-WypudK.js +0 -2
  340. package/cdn/media-B4uT13xV.js.map +0 -1
  341. package/cdn/media-D6Xer97u.js.map +0 -1
  342. package/cdn/minimal-ui-D3XCtSx_.js +0 -2
  343. package/cdn/poster-element-Djlm5fwC.js +0 -2
  344. package/cdn/seek-button-element-BD2caCd5.js.map +0 -1
  345. package/cdn/seek-button-element-CgaXVFPS.js +0 -2
  346. package/cdn/skin-element-DE8OodF5.js +0 -2
  347. package/cdn/text-element-BJyj7nLo.js +0 -2
  348. package/cdn/text-element-BJyj7nLo.js.map +0 -1
  349. package/cdn/text-element-dyiwucQB.js.map +0 -1
  350. package/cdn/time-slider-chapters-element-BTMqnBhM.js.map +0 -1
  351. package/cdn/time-slider-chapters-element-b6oeaZtJ.js +0 -2
  352. package/cdn/ui-CxftD4RF.js +0 -2
  353. package/cdn/ui-DLvwCbsU.js +0 -2
  354. package/cdn/video-headless.dev.js +0 -1
  355. package/cdn/video-headless.js +0 -1
  356. /package/cdn/{audio-headless.dev.d.ts → audio-player.dev.d.ts} +0 -0
  357. /package/cdn/{video-headless.dev.d.ts → live-audio-minimal-ui.dev.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/define/video/skin.ts"],"sourcesContent":["import { audioText, captionsText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createShadowStyle, createTemplate } from '@videojs/utils/dom';\nimport { renderText } from '../../i18n/render-text';\nimport { safeDefine } from '../safe-define';\nimport { SkinElement } from '../skin-element';\nimport styles from './skin.css?inline';\n\n// Register the player, container, and all UI custom elements.\nimport './ui';\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\">\n <img alt=\"\" decoding=\"async\">\n </slot>\n </media-poster>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </media-buffering-indicator>\n\n <media-error-dialog class=\"media-error\">\n <div class=\"media-error__dialog media-surface\">\n <div class=\"media-error__content\">\n <media-alert-dialog-title class=\"media-error__title\"></media-alert-dialog-title>\n <media-alert-dialog-description class=\"media-error__description\"></media-alert-dialog-description>\n </div>\n <div class=\"media-error__actions\">\n <media-alert-dialog-close class=\"media-button media-button--primary\"></media-alert-dialog-close>\n </div>\n </div>\n </media-error-dialog>\n\n <media-controls class=\"media-surface media-controls media-controls--root\">\n <media-tooltip-group>\n <div class=\"media-surface media-controls media-controls--primary\">\n <div class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--subtle 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 </div>\n\n <div class=\"media-time-controls\">\n <media-time type=\"current\" class=\"media-time\"></media-time>\n <media-time-slider class=\"media-slider\">\n <media-time-slider-chapters class=\"media-slider__chapters\">\n <template>\n <div class=\"media-slider__chapter\">\n <media-slider-track class=\"media-slider__track media-slider__chapter-track\">\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n </div>\n </template>\n </media-time-slider-chapters>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n\n <media-slider-preview overflow=\"visible\" class=\"media-slider__preview\">\n <div class=\"media-surface media-thumbnail media-slider__thumbnail\">\n <media-slider-thumbnail class=\"media-thumbnail__image\"></media-slider-thumbnail>\n ${renderIcon('spinner', { class: 'media-thumbnail__spinner media-icon' })}\n </div>\n <div class=\"media-slider__value\">\n <media-time-slider-chapter-title class=\"media-slider__chapter-title\"></media-time-slider-chapter-title>\n <media-slider-value type=\"pointer\" class=\"media-time\"></media-slider-value>\n </div>\n </media-slider-preview>\n </media-time-slider>\n <media-time toggle type=\"remaining\" class=\"media-time\"></media-time>\n </div>\n\n <div class=\"media-button-group\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <button id=\"settings-trigger\" commandfor=\"settings-menu\" aria-labelledby=\"settings-label\" class=\"media-button media-button--subtle media-button--icon media-button--settings\">\n ${renderIcon('gear', { class: 'media-icon media-icon--settings' })}\n ${renderText(settingsText, { id: 'settings-label', class: 'media-sr-only' })}\n </button>\n <media-menu id=\"settings-menu\" side=\"top\" align=\"center\" class=\"media-surface media-popover media-menu media-menu--settings\">\n <div class=\"media-menu__group\">\n <media-menu-item commandfor=\"settings-quality-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('switches', { class: 'media-icon' })}\n ${renderText(qualityText)}\n <span class=\"media-menu__hint\">\n <span data-part=\"hint\" class=\"media-menu__hint-label\"></span>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-audio-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('speech', { class: 'media-icon' })}\n ${renderText(audioText)}\n <span class=\"media-menu__hint\">\n <span data-part=\"hint\" class=\"media-menu__hint-label\"></span>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-speed-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('speed', { class: 'media-icon' })}\n ${renderText(speedText)}\n <span class=\"media-menu__hint\">\n <span data-part=\"hint\" class=\"media-menu__hint-label\"></span>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-captions-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('captions-off', { class: 'media-icon' })}\n ${renderText(captionsText)}\n <span class=\"media-menu__hint\">\n <span data-part=\"hint\" class=\"media-menu__hint-label\"></span>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n </div>\n\n <media-menu id=\"settings-quality-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(qualityText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-quality-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <span>\n <span data-part=\"label\"></span>\n <sup data-part=\"tier\" class=\"media-menu__tier\"></sup>\n </span>\n <span data-part=\"badge\" class=\"media-badge\"></span>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-quality-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-audio-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(audioText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-audio-track-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-audio-track-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-speed-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(speedText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-playback-rate-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-playback-rate-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-captions-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(captionsText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-captions-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-captions-radio-group>\n </media-menu>\n </media-menu>\n <media-tooltip id=\"settings-tooltip\" trigger=\"settings-trigger\" side=\"top\" class=\"media-surface media-tooltip\">\n ${renderText(settingsText)}\n </media-tooltip>\n </div>\n </div>\n\n <div class=\"media-surface media-controls media-controls--secondary\">\n <div class=\"media-button-group\">\n <media-cast-button commandfor=\"cast-tooltip\" class=\"media-button media-button--subtle media-button--icon media-button--cast\">\n ${renderIcon('cast-enter', { class: 'media-icon media-icon--cast-enter' })}\n ${renderIcon('cast-exit', { class: 'media-icon media-icon--cast-exit' })}\n </media-cast-button>\n <media-tooltip id=\"cast-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-airplay-button commandfor=\"airplay-tooltip\" class=\"media-button media-button--subtle media-button--icon media-button--airplay\">\n ${renderIcon('airplay-enter', { class: 'media-icon media-icon--airplay-enter' })}\n ${renderIcon('airplay-exit', { class: 'media-icon media-icon--airplay-exit' })}\n </media-airplay-button>\n <media-tooltip id=\"airplay-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n </div>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n\n <!-- Hotkeys -->\n <media-hotkey keys=\"Space\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"k\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"m\" action=\"toggleMuted\"></media-hotkey>\n <media-hotkey keys=\"f\" action=\"toggleFullscreen\"></media-hotkey>\n <media-hotkey keys=\"c\" action=\"toggleSubtitles\"></media-hotkey>\n <media-hotkey keys=\"i\" action=\"togglePictureInPicture\"></media-hotkey>\n <media-hotkey keys=\"ArrowRight\" action=\"seekStep\" value=\"5\"></media-hotkey>\n <media-hotkey keys=\"ArrowLeft\" action=\"seekStep\" value=\"-5\"></media-hotkey>\n <media-hotkey keys=\"l\" action=\"seekStep\" value=\"10\"></media-hotkey>\n <media-hotkey keys=\"j\" action=\"seekStep\" value=\"-10\"></media-hotkey>\n <media-hotkey keys=\"ArrowUp\" action=\"volumeStep\" value=\"0.05\"></media-hotkey>\n <media-hotkey keys=\"ArrowDown\" action=\"volumeStep\" value=\"-0.05\"></media-hotkey>\n <media-hotkey keys=\"0-9\" action=\"seekToPercent\"></media-hotkey>\n <media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\"></media-hotkey>\n <media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\"></media-hotkey>\n <media-hotkey keys=\">\" action=\"speedUp\"></media-hotkey>\n <media-hotkey keys=\"<\" action=\"speedDown\"></media-hotkey>\n\n <!-- Gestures -->\n <media-gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\"></media-gesture>\n <media-gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"-10\" region=\"left\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"10\" region=\"right\"></media-gesture>\n\n <!-- Input Indicators -->\n <media-status-announcer class=\"media-sr-only\"></media-status-announcer>\n <div class=\"media-input-indicator-overlay\">\n <media-volume-indicator hidden class=\"media-surface media-volume-indicator\">\n <media-volume-indicator-fill class=\"media-volume-indicator__content\">\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n <media-volume-indicator-value class=\"media-volume-indicator__value\"></media-volume-indicator-value>\n </media-volume-indicator-fill>\n </media-volume-indicator>\n <media-status-indicator\n hidden\n actions=\"toggleSubtitles toggleFullscreen togglePictureInPicture\"\n class=\"media-surface media-status-indicator media-status-indicator--state\"\n >\n <div class=\"media-status-indicator__content\">\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n ${renderIcon('pip-enter', { class: 'media-icon media-icon--pip-enter' })}\n ${renderIcon('pip-exit', { class: 'media-icon media-icon--pip-exit' })}\n <media-status-indicator-value class=\"media-status-indicator__value\"></media-status-indicator-value>\n </div>\n </media-status-indicator>\n <media-seek-indicator hidden class=\"media-seek-indicator\">\n ${renderIcon('chevron', { class: 'media-icon media-icon--seek' })}\n <media-seek-indicator-value class=\"media-seek-indicator__value\"></media-seek-indicator-value>\n </media-seek-indicator>\n <media-status-indicator hidden actions=\"togglePaused\" class=\"media-status-indicator media-status-indicator--playback\">\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-status-indicator>\n </div>\n </media-container>\n `;\n}\n\nexport class VideoSkinElement extends SkinElement {\n static readonly tagName = 'video-skin';\n static styles = createShadowStyle(styles);\n static template = createTemplate(getTemplateHTML());\n}\n\nsafeDefine(VideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinElement.tagName]: VideoSkinElement;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/define/video/skin.ts"],"sourcesContent":["import { audioText, captionsText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createShadowStyle, createTemplate } from '@videojs/utils/dom';\nimport { renderText } from '../../i18n/render-text';\nimport { safeDefine } from '../safe-define';\nimport { SkinElement } from '../skin-element';\nimport styles from './skin.css?inline';\n\n// Register the player, container, and all UI custom elements.\nimport './ui';\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\">\n <img alt=\"\" decoding=\"async\">\n </slot>\n </media-poster>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </media-buffering-indicator>\n\n <media-error-dialog class=\"media-error\">\n <div class=\"media-error__dialog media-surface\">\n <div class=\"media-error__content\">\n <media-alert-dialog-title class=\"media-error__title\"></media-alert-dialog-title>\n <media-alert-dialog-description class=\"media-error__description\"></media-alert-dialog-description>\n </div>\n <div class=\"media-error__actions\">\n <media-alert-dialog-close class=\"media-button media-button--primary\"></media-alert-dialog-close>\n </div>\n </div>\n </media-error-dialog>\n\n <media-controls class=\"media-surface media-controls media-controls--root\">\n <media-tooltip-group>\n <div class=\"media-surface media-controls media-controls--primary\">\n <div class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--subtle 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 </div>\n\n <div class=\"media-time-controls\">\n <media-time type=\"current\" class=\"media-time\"></media-time>\n <media-time-slider class=\"media-slider\">\n <media-time-slider-chapters class=\"media-slider__chapters\">\n <template>\n <div class=\"media-slider__chapter\">\n <media-slider-track class=\"media-slider__track media-slider__chapter-track\">\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n </div>\n </template>\n </media-time-slider-chapters>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n\n <media-slider-preview overflow=\"visible\" class=\"media-slider__preview\">\n <div class=\"media-surface media-thumbnail media-slider__thumbnail\">\n <media-slider-thumbnail class=\"media-thumbnail__image\"></media-slider-thumbnail>\n ${renderIcon('spinner', { class: 'media-thumbnail__spinner media-icon' })}\n </div>\n <div class=\"media-slider__value\">\n <media-time-slider-chapter-title class=\"media-slider__chapter-title\"></media-time-slider-chapter-title>\n <media-slider-value type=\"pointer\" class=\"media-time\"></media-slider-value>\n </div>\n </media-slider-preview>\n </media-time-slider>\n <media-time toggle type=\"remaining\" class=\"media-time\"></media-time>\n </div>\n\n <div class=\"media-button-group\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <button id=\"settings-trigger\" commandfor=\"settings-menu\" aria-labelledby=\"settings-label\" class=\"media-button media-button--subtle media-button--icon media-button--settings\">\n ${renderIcon('gear', { class: 'media-icon media-icon--settings' })}\n ${renderText(settingsText, { id: 'settings-label', class: 'media-sr-only' })}\n </button>\n <media-menu id=\"settings-menu\" side=\"top\" align=\"center\" class=\"media-surface media-popover media-menu media-menu--settings\">\n <div class=\"media-menu__group\">\n <media-menu-item commandfor=\"settings-quality-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('switches', { class: 'media-icon' })}\n ${renderText(qualityText)}\n <span class=\"media-menu__hint\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"media-menu__hint-label\"></bdi>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-audio-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('speech', { class: 'media-icon' })}\n ${renderText(audioText)}\n <span class=\"media-menu__hint\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"media-menu__hint-label\"></bdi>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-speed-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('speed', { class: 'media-icon' })}\n ${renderText(speedText)}\n <span class=\"media-menu__hint\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"media-menu__hint-label\"></bdi>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-captions-menu\" class=\"media-menu__item media-menu__item--submenu\">\n ${renderIcon('captions-off', { class: 'media-icon' })}\n ${renderText(captionsText)}\n <span class=\"media-menu__hint\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"media-menu__hint-label\"></bdi>\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron' })}\n </span>\n </media-menu-item>\n </div>\n\n <media-menu id=\"settings-quality-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(qualityText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-quality-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <span>\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <sup data-part=\"tier\" class=\"media-menu__tier\"></sup>\n </span>\n <span data-part=\"badge\" class=\"media-badge\"></span>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-quality-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-audio-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(audioText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-audio-track-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-audio-track-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-speed-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(speedText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-playback-rate-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-playback-rate-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-captions-menu\" class=\"media-menu__panel\">\n <media-menu-item class=\"media-menu__back\">\n ${renderIcon('chevron', { class: 'media-icon media-menu__chevron media-icon--flipped' })}\n ${renderText(captionsText)}\n </media-menu-item>\n <div class=\"media-menu__separator\"></div>\n <media-captions-radio-group class=\"media-menu__group\">\n <template>\n <media-menu-radio-item class=\"media-menu__item\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"media-menu__indicator\">\n ${renderIcon('check', { class: 'media-icon' })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-captions-radio-group>\n </media-menu>\n </media-menu>\n <media-tooltip id=\"settings-tooltip\" trigger=\"settings-trigger\" side=\"top\" class=\"media-surface media-tooltip\">\n ${renderText(settingsText)}\n </media-tooltip>\n </div>\n </div>\n\n <div class=\"media-surface media-controls media-controls--secondary\">\n <div class=\"media-button-group\">\n <media-cast-button commandfor=\"cast-tooltip\" class=\"media-button media-button--subtle media-button--icon media-button--cast\">\n ${renderIcon('cast-enter', { class: 'media-icon media-icon--cast-enter' })}\n ${renderIcon('cast-exit', { class: 'media-icon media-icon--cast-exit' })}\n </media-cast-button>\n <media-tooltip id=\"cast-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-airplay-button commandfor=\"airplay-tooltip\" class=\"media-button media-button--subtle media-button--icon media-button--airplay\">\n ${renderIcon('airplay-enter', { class: 'media-icon media-icon--airplay-enter' })}\n ${renderIcon('airplay-exit', { class: 'media-icon media-icon--airplay-exit' })}\n </media-airplay-button>\n <media-tooltip id=\"airplay-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--subtle 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"media-tooltip__kbd\"></media-tooltip-shortcut>\n </media-tooltip>\n </div>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n\n <!-- Hotkeys -->\n <media-hotkey keys=\"Space\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"k\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"m\" action=\"toggleMuted\"></media-hotkey>\n <media-hotkey keys=\"f\" action=\"toggleFullscreen\"></media-hotkey>\n <media-hotkey keys=\"c\" action=\"toggleSubtitles\"></media-hotkey>\n <media-hotkey keys=\"i\" action=\"togglePictureInPicture\"></media-hotkey>\n <media-hotkey keys=\"ArrowRight\" action=\"seekStep\" value=\"5\"></media-hotkey>\n <media-hotkey keys=\"ArrowLeft\" action=\"seekStep\" value=\"-5\"></media-hotkey>\n <media-hotkey keys=\"l\" action=\"seekStep\" value=\"10\"></media-hotkey>\n <media-hotkey keys=\"j\" action=\"seekStep\" value=\"-10\"></media-hotkey>\n <media-hotkey keys=\"ArrowUp\" action=\"volumeStep\" value=\"0.05\"></media-hotkey>\n <media-hotkey keys=\"ArrowDown\" action=\"volumeStep\" value=\"-0.05\"></media-hotkey>\n <media-hotkey keys=\"0-9\" action=\"seekToPercent\"></media-hotkey>\n <media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\"></media-hotkey>\n <media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\"></media-hotkey>\n <media-hotkey keys=\">\" action=\"speedUp\"></media-hotkey>\n <media-hotkey keys=\"<\" action=\"speedDown\"></media-hotkey>\n\n <!-- Gestures -->\n <media-gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\"></media-gesture>\n <media-gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"-10\" region=\"left\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"10\" region=\"right\"></media-gesture>\n\n <!-- Input Indicators -->\n <media-status-announcer class=\"media-sr-only\"></media-status-announcer>\n <div class=\"media-input-indicator-overlay\">\n <media-volume-indicator hidden class=\"media-surface media-volume-indicator\">\n <media-volume-indicator-fill class=\"media-volume-indicator__content\">\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n <media-volume-indicator-value class=\"media-volume-indicator__value\"></media-volume-indicator-value>\n </media-volume-indicator-fill>\n </media-volume-indicator>\n <media-status-indicator\n hidden\n actions=\"toggleSubtitles toggleFullscreen togglePictureInPicture\"\n class=\"media-surface media-status-indicator media-status-indicator--state\"\n >\n <div class=\"media-status-indicator__content\">\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n ${renderIcon('pip-enter', { class: 'media-icon media-icon--pip-enter' })}\n ${renderIcon('pip-exit', { class: 'media-icon media-icon--pip-exit' })}\n <media-status-indicator-value class=\"media-status-indicator__value\"></media-status-indicator-value>\n </div>\n </media-status-indicator>\n <media-seek-indicator hidden class=\"media-seek-indicator\">\n ${renderIcon('chevron', { class: 'media-icon media-icon--seek' })}\n <media-seek-indicator-value class=\"media-seek-indicator__value\"></media-seek-indicator-value>\n </media-seek-indicator>\n <media-status-indicator hidden actions=\"togglePaused\" class=\"media-status-indicator media-status-indicator--playback\">\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-status-indicator>\n </div>\n </media-container>\n `;\n}\n\nexport class VideoSkinElement extends SkinElement {\n static readonly tagName = 'video-skin';\n static styles = createShadowStyle(styles);\n static template = createTemplate(getTemplateHTML());\n}\n\nsafeDefine(VideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinElement.tagName]: VideoSkinElement;\n }\n}\n"],"mappings":"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"}
@@ -127,7 +127,7 @@ function getTemplateHTML() {
127
127
  ${renderIcon("switches", { class: cn(icon, menu.icon) })}
128
128
  ${renderText(qualityText)}
129
129
  <span class="${menu.hint}">
130
- <span data-part="hint" class="${menu.hintLabel}"></span>
130
+ <bdi data-part="hint" dir="auto" class="${menu.hintLabel}"></bdi>
131
131
  ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron) })}
132
132
  </span>
133
133
  </media-menu-item>
@@ -135,7 +135,7 @@ function getTemplateHTML() {
135
135
  ${renderIcon("speech", { class: icon })}
136
136
  ${renderText(audioText)}
137
137
  <span class="${menu.hint}">
138
- <span data-part="hint" class="${menu.hintLabel}"></span>
138
+ <bdi data-part="hint" dir="auto" class="${menu.hintLabel}"></bdi>
139
139
  ${renderIcon("chevron", { class: cn(icon, menu.chevron) })}
140
140
  </span>
141
141
  </media-menu-item>
@@ -143,7 +143,7 @@ function getTemplateHTML() {
143
143
  ${renderIcon("speed", { class: cn(icon, menu.icon) })}
144
144
  ${renderText(speedText)}
145
145
  <span class="${menu.hint}">
146
- <span data-part="hint" class="${menu.hintLabel}"></span>
146
+ <bdi data-part="hint" dir="auto" class="${menu.hintLabel}"></bdi>
147
147
  ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron) })}
148
148
  </span>
149
149
  </media-menu-item>
@@ -151,7 +151,7 @@ function getTemplateHTML() {
151
151
  ${renderIcon("captions-off", { class: cn(icon, menu.icon) })}
152
152
  ${renderText(captionsText)}
153
153
  <span class="${menu.hint}">
154
- <span data-part="hint" class="${menu.hintLabel}"></span>
154
+ <bdi data-part="hint" dir="auto" class="${menu.hintLabel}"></bdi>
155
155
  ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron) })}
156
156
  </span>
157
157
  </media-menu-item>
@@ -159,7 +159,7 @@ function getTemplateHTML() {
159
159
 
160
160
  <media-menu id="settings-quality-menu" class="${menu.submenuPanel}">
161
161
  <media-menu-item class="${menu.back}">
162
- ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}
162
+ ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}
163
163
  ${renderText(qualityText)}
164
164
  </media-menu-item>
165
165
  <div class="${menu.separator}"></div>
@@ -167,7 +167,7 @@ function getTemplateHTML() {
167
167
  <template>
168
168
  <media-menu-radio-item class="${menu.item}">
169
169
  <span>
170
- <span data-part="label"></span>
170
+ <bdi data-part="label" dir="auto"></bdi>
171
171
  <sup data-part="tier" class="${menu.tier}"></sup>
172
172
  </span>
173
173
  <span data-part="badge" class="${badge}"></span>
@@ -181,14 +181,14 @@ function getTemplateHTML() {
181
181
 
182
182
  <media-menu id="settings-audio-menu" class="${menu.submenuPanel}">
183
183
  <media-menu-item class="${menu.back}">
184
- ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}
184
+ ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}
185
185
  ${renderText(audioText)}
186
186
  </media-menu-item>
187
187
  <div class="${menu.separator}"></div>
188
188
  <media-audio-track-radio-group class="${menu.group}">
189
189
  <template>
190
190
  <media-menu-radio-item class="${menu.item}">
191
- <span data-part="label"></span>
191
+ <bdi data-part="label" dir="auto"></bdi>
192
192
  <media-menu-item-indicator force-mount class="${menu.indicator}">
193
193
  ${renderIcon("check", { class: icon })}
194
194
  </media-menu-item-indicator>
@@ -199,14 +199,14 @@ function getTemplateHTML() {
199
199
 
200
200
  <media-menu id="settings-speed-menu" class="${menu.submenuPanel}">
201
201
  <media-menu-item class="${menu.back}">
202
- ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}
202
+ ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}
203
203
  ${renderText(speedText)}
204
204
  </media-menu-item>
205
205
  <div class="${menu.separator}"></div>
206
206
  <media-playback-rate-radio-group class="${menu.group}">
207
207
  <template>
208
208
  <media-menu-radio-item class="${menu.item}">
209
- <span data-part="label"></span>
209
+ <bdi data-part="label" dir="auto"></bdi>
210
210
  <media-menu-item-indicator force-mount class="${menu.indicator}">
211
211
  ${renderIcon("check", { class: cn(icon, menu.icon) })}
212
212
  </media-menu-item-indicator>
@@ -217,14 +217,14 @@ function getTemplateHTML() {
217
217
 
218
218
  <media-menu id="settings-captions-menu" class="${menu.submenuPanel}">
219
219
  <media-menu-item class="${menu.back}">
220
- ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}
220
+ ${renderIcon("chevron", { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}
221
221
  ${renderText(captionsText)}
222
222
  </media-menu-item>
223
223
  <div class="${menu.separator}"></div>
224
224
  <media-captions-radio-group class="${menu.group}">
225
225
  <template>
226
226
  <media-menu-radio-item class="${menu.item}">
227
- <span data-part="label"></span>
227
+ <bdi data-part="label" dir="auto"></bdi>
228
228
  <media-menu-item-indicator force-mount class="${menu.indicator}">
229
229
  ${renderIcon("check", { class: cn(icon, menu.icon) })}
230
230
  </media-menu-item-indicator>
@@ -1 +1 @@
1
- {"version":3,"file":"skin.tailwind.js","names":[],"sources":["../../../../src/define/video/skin.tailwind.ts"],"sourcesContent":["import { audioText, captionsText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n badge,\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n container,\n controls,\n error,\n icon,\n iconFlipped,\n iconState,\n inputIndicatorOverlay,\n menu,\n overlay,\n popup,\n poster,\n primaryControls,\n secondaryControls,\n seekIndicator,\n slider,\n statusIndicator,\n thumbnail,\n time,\n volumeIndicator,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { createTemplate } from '@videojs/utils/dom';\nimport { cn } from '@videojs/utils/style';\nimport { renderText } from '../../i18n/render-text';\nimport { safeDefine } from '../safe-define';\nimport { SkinElement } from '../skin-element';\n\n// Register the player, container, and all UI custom elements.\nimport './ui';\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${container(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\">\n <img alt=\"\" decoding=\"async\">\n </slot>\n </media-poster>\n\n <media-buffering-indicator class=\"${bufferingIndicator.root}\">\n ${renderIcon('spinner', { class: icon })}\n </media-buffering-indicator>\n\n <media-error-dialog class=\"${error.root}\">\n <div class=\"${error.dialog}\">\n <div class=\"${error.content}\">\n <media-alert-dialog-title class=\"${error.title}\"></media-alert-dialog-title>\n <media-alert-dialog-description class=\"${error.description}\"></media-alert-dialog-description>\n </div>\n <div class=\"${error.actions}\">\n <media-alert-dialog-close class=\"${cn(button.base, button.primary)}\"></media-alert-dialog-close>\n </div>\n </div>\n </media-error-dialog>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group>\n <div class=\"${primaryControls}\">\n <div class=\"${buttonGroupStart}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.subtle, 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 </div>\n\n <div class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-slider class=\"${slider.root}\">\n <media-time-slider-chapters class=\"${slider.chapters}\">\n <template>\n <div class=\"${slider.chapter.base}\">\n <media-slider-track class=\"${slider.chapter.track}\">\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n </div>\n </template>\n </media-time-slider-chapters>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n\n <media-slider-preview overflow=\"visible\" class=\"${slider.preview}\">\n <div class=\"${cn(thumbnail.root, slider.thumbnail)}\">\n <media-slider-thumbnail class=\"${thumbnail.image}\"></media-slider-thumbnail>\n ${renderIcon('spinner', { class: cn(icon, thumbnail.spinner) })}\n </div>\n <div class=\"${slider.value}\">\n <media-time-slider-chapter-title class=\"${slider.chapterTitle}\"></media-time-slider-chapter-title>\n <media-slider-value type=\"pointer\"></media-slider-value>\n </div>\n </media-slider-preview>\n </media-time-slider>\n <media-time toggle type=\"remaining\" class=\"${time.duration}\"></media-time>\n </div>\n\n <div class=\"${cn(buttonGroupEnd, menu.settingsGroup)}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, button.captions, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <button id=\"settings-trigger\" commandfor=\"settings-menu\" aria-labelledby=\"settings-label\" class=\"${cn(button.base, button.subtle, button.icon, menu.settingsTrigger)}\">\n ${renderIcon('gear', { class: cn(icon, menu.settingsIcon) })}\n ${renderText(settingsText, { id: 'settings-label', class: 'sr-only' })}\n </button>\n <media-menu id=\"settings-menu\" side=\"top\" align=\"center\" class=\"${menu.settings}\">\n <div class=\"${menu.group}\">\n <media-menu-item commandfor=\"settings-quality-menu\" class=\"${menu.item}\">\n ${renderIcon('switches', { class: cn(icon, menu.icon) })}\n ${renderText(qualityText)}\n <span class=\"${menu.hint}\">\n <span data-part=\"hint\" class=\"${menu.hintLabel}\"></span>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-audio-menu\" class=\"${menu.item}\">\n ${renderIcon('speech', { class: icon })}\n ${renderText(audioText)}\n <span class=\"${menu.hint}\">\n <span data-part=\"hint\" class=\"${menu.hintLabel}\"></span>\n ${renderIcon('chevron', { class: cn(icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-speed-menu\" class=\"${menu.item}\">\n ${renderIcon('speed', { class: cn(icon, menu.icon) })}\n ${renderText(speedText)}\n <span class=\"${menu.hint}\">\n <span data-part=\"hint\" class=\"${menu.hintLabel}\"></span>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-captions-menu\" class=\"${menu.item}\">\n ${renderIcon('captions-off', { class: cn(icon, menu.icon) })}\n ${renderText(captionsText)}\n <span class=\"${menu.hint}\">\n <span data-part=\"hint\" class=\"${menu.hintLabel}\"></span>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n </div>\n\n <media-menu id=\"settings-quality-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}\n ${renderText(qualityText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-quality-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <span>\n <span data-part=\"label\"></span>\n <sup data-part=\"tier\" class=\"${menu.tier}\"></sup>\n </span>\n <span data-part=\"badge\" class=\"${badge}\"></span>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-quality-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-audio-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}\n ${renderText(audioText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-audio-track-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: icon })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-audio-track-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-speed-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}\n ${renderText(speedText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-playback-rate-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-playback-rate-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-captions-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped) })}\n ${renderText(captionsText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-captions-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <span data-part=\"label\"></span>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-captions-radio-group>\n </media-menu>\n </media-menu>\n <media-tooltip id=\"settings-tooltip\" trigger=\"settings-trigger\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n ${renderText(settingsText)}\n </media-tooltip>\n </div>\n </div>\n\n <div class=\"${secondaryControls}\">\n <div class=\"${buttonGroupEnd}\">\n <media-cast-button commandfor=\"cast-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, iconState.cast.button)}\">\n ${renderIcon('cast-enter', { class: cn(icon, iconState.cast.enter) })}\n ${renderIcon('cast-exit', { class: cn(icon, iconState.cast.exit) })}\n </media-cast-button>\n <media-tooltip id=\"cast-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-airplay-button commandfor=\"airplay-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, iconState.airplay.button)}\">\n ${renderIcon('airplay-enter', { class: cn(icon, iconState.airplay.enter) })}\n ${renderIcon('airplay-exit', { class: cn(icon, iconState.airplay.exit) })}\n </media-airplay-button>\n <media-tooltip id=\"airplay-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n </div>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n\n <!-- Hotkeys -->\n <media-hotkey keys=\"Space\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"k\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"m\" action=\"toggleMuted\"></media-hotkey>\n <media-hotkey keys=\"f\" action=\"toggleFullscreen\"></media-hotkey>\n <media-hotkey keys=\"c\" action=\"toggleSubtitles\"></media-hotkey>\n <media-hotkey keys=\"i\" action=\"togglePictureInPicture\"></media-hotkey>\n <media-hotkey keys=\"ArrowRight\" action=\"seekStep\" value=\"5\"></media-hotkey>\n <media-hotkey keys=\"ArrowLeft\" action=\"seekStep\" value=\"-5\"></media-hotkey>\n <media-hotkey keys=\"l\" action=\"seekStep\" value=\"10\"></media-hotkey>\n <media-hotkey keys=\"j\" action=\"seekStep\" value=\"-10\"></media-hotkey>\n <media-hotkey keys=\"ArrowUp\" action=\"volumeStep\" value=\"0.05\"></media-hotkey>\n <media-hotkey keys=\"ArrowDown\" action=\"volumeStep\" value=\"-0.05\"></media-hotkey>\n <media-hotkey keys=\"0-9\" action=\"seekToPercent\"></media-hotkey>\n <media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\"></media-hotkey>\n <media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\"></media-hotkey>\n <media-hotkey keys=\">\" action=\"speedUp\"></media-hotkey>\n <media-hotkey keys=\"<\" action=\"speedDown\"></media-hotkey>\n\n <!-- Gestures -->\n <media-gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\"></media-gesture>\n <media-gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"-10\" region=\"left\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"10\" region=\"right\"></media-gesture>\n\n <!-- Input Indicators -->\n <media-status-announcer class=\"sr-only\"></media-status-announcer>\n <div class=\"${inputIndicatorOverlay}\">\n <media-volume-indicator\n hidden\n class=\"${volumeIndicator.root}\"\n >\n <media-volume-indicator-fill class=\"${volumeIndicator.content}\">\n ${renderIcon('volume-high', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.high) })}\n ${renderIcon('volume-low', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.low) })}\n ${renderIcon('volume-off', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.off) })}\n <media-volume-indicator-value class=\"${volumeIndicator.value}\"></media-volume-indicator-value>\n </media-volume-indicator-fill>\n </media-volume-indicator>\n\n <media-status-indicator hidden actions=\"toggleSubtitles toggleFullscreen togglePictureInPicture\" class=\"${statusIndicator.root}\">\n <div class=\"${statusIndicator.content}\">\n ${renderIcon('captions-on', { class: cn(statusIndicator.icon.base, statusIndicator.icon.captionsOn) })}\n ${renderIcon('captions-off', { class: cn(statusIndicator.icon.base, statusIndicator.icon.captionsOff) })}\n ${renderIcon('fullscreen-enter', { class: cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenEnter) })}\n ${renderIcon('fullscreen-exit', { class: cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenExit) })}\n ${renderIcon('pip-enter', { class: cn(statusIndicator.icon.base, statusIndicator.icon.pipEnter) })}\n ${renderIcon('pip-exit', { class: cn(statusIndicator.icon.base, statusIndicator.icon.pipExit) })}\n <media-status-indicator-value class=\"${statusIndicator.value}\"></media-status-indicator-value>\n </div>\n </media-status-indicator>\n\n <media-seek-indicator hidden class=\"${seekIndicator.root}\">\n ${renderIcon('chevron', { class: seekIndicator.icon })}\n <media-seek-indicator-value class=\"${seekIndicator.value}\"></media-seek-indicator-value>\n </media-seek-indicator>\n\n <media-status-indicator hidden actions=\"togglePaused\" class=\"${statusIndicator.playback.root}\">\n ${renderIcon('play', { class: cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.play) })}\n ${renderIcon('pause', { class: cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.pause) })}\n </media-status-indicator>\n </div>\n </media-container>\n `;\n}\n\nexport class VideoSkinTailwindElement extends SkinElement {\n static readonly tagName = 'video-skin-tailwind';\n static template = createTemplate(getTemplateHTML());\n}\n\nsafeDefine(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 { audioText, captionsText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n badge,\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n container,\n controls,\n error,\n icon,\n iconFlipped,\n iconState,\n inputIndicatorOverlay,\n menu,\n overlay,\n popup,\n poster,\n primaryControls,\n secondaryControls,\n seekIndicator,\n slider,\n statusIndicator,\n thumbnail,\n time,\n volumeIndicator,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { createTemplate } from '@videojs/utils/dom';\nimport { cn } from '@videojs/utils/style';\nimport { renderText } from '../../i18n/render-text';\nimport { safeDefine } from '../safe-define';\nimport { SkinElement } from '../skin-element';\n\n// Register the player, container, and all UI custom elements.\nimport './ui';\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${container(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\">\n <img alt=\"\" decoding=\"async\">\n </slot>\n </media-poster>\n\n <media-buffering-indicator class=\"${bufferingIndicator.root}\">\n ${renderIcon('spinner', { class: icon })}\n </media-buffering-indicator>\n\n <media-error-dialog class=\"${error.root}\">\n <div class=\"${error.dialog}\">\n <div class=\"${error.content}\">\n <media-alert-dialog-title class=\"${error.title}\"></media-alert-dialog-title>\n <media-alert-dialog-description class=\"${error.description}\"></media-alert-dialog-description>\n </div>\n <div class=\"${error.actions}\">\n <media-alert-dialog-close class=\"${cn(button.base, button.primary)}\"></media-alert-dialog-close>\n </div>\n </div>\n </media-error-dialog>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group>\n <div class=\"${primaryControls}\">\n <div class=\"${buttonGroupStart}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.subtle, 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 </div>\n\n <div class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-slider class=\"${slider.root}\">\n <media-time-slider-chapters class=\"${slider.chapters}\">\n <template>\n <div class=\"${slider.chapter.base}\">\n <media-slider-track class=\"${slider.chapter.track}\">\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n </div>\n </template>\n </media-time-slider-chapters>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n\n <media-slider-preview overflow=\"visible\" class=\"${slider.preview}\">\n <div class=\"${cn(thumbnail.root, slider.thumbnail)}\">\n <media-slider-thumbnail class=\"${thumbnail.image}\"></media-slider-thumbnail>\n ${renderIcon('spinner', { class: cn(icon, thumbnail.spinner) })}\n </div>\n <div class=\"${slider.value}\">\n <media-time-slider-chapter-title class=\"${slider.chapterTitle}\"></media-time-slider-chapter-title>\n <media-slider-value type=\"pointer\"></media-slider-value>\n </div>\n </media-slider-preview>\n </media-time-slider>\n <media-time toggle type=\"remaining\" class=\"${time.duration}\"></media-time>\n </div>\n\n <div class=\"${cn(buttonGroupEnd, menu.settingsGroup)}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, button.captions, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n\n <button id=\"settings-trigger\" commandfor=\"settings-menu\" aria-labelledby=\"settings-label\" class=\"${cn(button.base, button.subtle, button.icon, menu.settingsTrigger)}\">\n ${renderIcon('gear', { class: cn(icon, menu.settingsIcon) })}\n ${renderText(settingsText, { id: 'settings-label', class: 'sr-only' })}\n </button>\n <media-menu id=\"settings-menu\" side=\"top\" align=\"center\" class=\"${menu.settings}\">\n <div class=\"${menu.group}\">\n <media-menu-item commandfor=\"settings-quality-menu\" class=\"${menu.item}\">\n ${renderIcon('switches', { class: cn(icon, menu.icon) })}\n ${renderText(qualityText)}\n <span class=\"${menu.hint}\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"${menu.hintLabel}\"></bdi>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-audio-menu\" class=\"${menu.item}\">\n ${renderIcon('speech', { class: icon })}\n ${renderText(audioText)}\n <span class=\"${menu.hint}\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"${menu.hintLabel}\"></bdi>\n ${renderIcon('chevron', { class: cn(icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-speed-menu\" class=\"${menu.item}\">\n ${renderIcon('speed', { class: cn(icon, menu.icon) })}\n ${renderText(speedText)}\n <span class=\"${menu.hint}\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"${menu.hintLabel}\"></bdi>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n <media-menu-item commandfor=\"settings-captions-menu\" class=\"${menu.item}\">\n ${renderIcon('captions-off', { class: cn(icon, menu.icon) })}\n ${renderText(captionsText)}\n <span class=\"${menu.hint}\">\n <bdi data-part=\"hint\" dir=\"auto\" class=\"${menu.hintLabel}\"></bdi>\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron) })}\n </span>\n </media-menu-item>\n </div>\n\n <media-menu id=\"settings-quality-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}\n ${renderText(qualityText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-quality-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <span>\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <sup data-part=\"tier\" class=\"${menu.tier}\"></sup>\n </span>\n <span data-part=\"badge\" class=\"${badge}\"></span>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-quality-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-audio-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}\n ${renderText(audioText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-audio-track-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: icon })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-audio-track-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-speed-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}\n ${renderText(speedText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-playback-rate-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-playback-rate-radio-group>\n </media-menu>\n\n <media-menu id=\"settings-captions-menu\" class=\"${menu.submenuPanel}\">\n <media-menu-item class=\"${menu.back}\">\n ${renderIcon('chevron', { class: cn(icon, menu.icon, menu.chevron, iconFlipped, menu.backChevron) })}\n ${renderText(captionsText)}\n </media-menu-item>\n <div class=\"${menu.separator}\"></div>\n <media-captions-radio-group class=\"${menu.group}\">\n <template>\n <media-menu-radio-item class=\"${menu.item}\">\n <bdi data-part=\"label\" dir=\"auto\"></bdi>\n <media-menu-item-indicator force-mount class=\"${menu.indicator}\">\n ${renderIcon('check', { class: cn(icon, menu.icon) })}\n </media-menu-item-indicator>\n </media-menu-radio-item>\n </template>\n </media-captions-radio-group>\n </media-menu>\n </media-menu>\n <media-tooltip id=\"settings-tooltip\" trigger=\"settings-trigger\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n ${renderText(settingsText)}\n </media-tooltip>\n </div>\n </div>\n\n <div class=\"${secondaryControls}\">\n <div class=\"${buttonGroupEnd}\">\n <media-cast-button commandfor=\"cast-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, iconState.cast.button)}\">\n ${renderIcon('cast-enter', { class: cn(icon, iconState.cast.enter) })}\n ${renderIcon('cast-exit', { class: cn(icon, iconState.cast.exit) })}\n </media-cast-button>\n <media-tooltip id=\"cast-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-airplay-button commandfor=\"airplay-tooltip\" class=\"${cn(button.base, button.subtle, button.icon, iconState.airplay.button)}\">\n ${renderIcon('airplay-enter', { class: cn(icon, iconState.airplay.enter) })}\n ${renderIcon('airplay-exit', { class: cn(icon, iconState.airplay.exit) })}\n </media-airplay-button>\n <media-tooltip id=\"airplay-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.subtle, 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 <media-tooltip-label></media-tooltip-label>\n <media-tooltip-shortcut class=\"${popup.tooltipShortcut}\"></media-tooltip-shortcut>\n </media-tooltip>\n </div>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n\n <!-- Hotkeys -->\n <media-hotkey keys=\"Space\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"k\" action=\"togglePaused\"></media-hotkey>\n <media-hotkey keys=\"m\" action=\"toggleMuted\"></media-hotkey>\n <media-hotkey keys=\"f\" action=\"toggleFullscreen\"></media-hotkey>\n <media-hotkey keys=\"c\" action=\"toggleSubtitles\"></media-hotkey>\n <media-hotkey keys=\"i\" action=\"togglePictureInPicture\"></media-hotkey>\n <media-hotkey keys=\"ArrowRight\" action=\"seekStep\" value=\"5\"></media-hotkey>\n <media-hotkey keys=\"ArrowLeft\" action=\"seekStep\" value=\"-5\"></media-hotkey>\n <media-hotkey keys=\"l\" action=\"seekStep\" value=\"10\"></media-hotkey>\n <media-hotkey keys=\"j\" action=\"seekStep\" value=\"-10\"></media-hotkey>\n <media-hotkey keys=\"ArrowUp\" action=\"volumeStep\" value=\"0.05\"></media-hotkey>\n <media-hotkey keys=\"ArrowDown\" action=\"volumeStep\" value=\"-0.05\"></media-hotkey>\n <media-hotkey keys=\"0-9\" action=\"seekToPercent\"></media-hotkey>\n <media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\"></media-hotkey>\n <media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\"></media-hotkey>\n <media-hotkey keys=\">\" action=\"speedUp\"></media-hotkey>\n <media-hotkey keys=\"<\" action=\"speedDown\"></media-hotkey>\n\n <!-- Gestures -->\n <media-gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\"></media-gesture>\n <media-gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"-10\" region=\"left\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\"></media-gesture>\n <media-gesture type=\"doubletap\" action=\"seekStep\" value=\"10\" region=\"right\"></media-gesture>\n\n <!-- Input Indicators -->\n <media-status-announcer class=\"sr-only\"></media-status-announcer>\n <div class=\"${inputIndicatorOverlay}\">\n <media-volume-indicator\n hidden\n class=\"${volumeIndicator.root}\"\n >\n <media-volume-indicator-fill class=\"${volumeIndicator.content}\">\n ${renderIcon('volume-high', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.high) })}\n ${renderIcon('volume-low', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.low) })}\n ${renderIcon('volume-off', { class: cn(volumeIndicator.icon.base, volumeIndicator.icon.off) })}\n <media-volume-indicator-value class=\"${volumeIndicator.value}\"></media-volume-indicator-value>\n </media-volume-indicator-fill>\n </media-volume-indicator>\n\n <media-status-indicator hidden actions=\"toggleSubtitles toggleFullscreen togglePictureInPicture\" class=\"${statusIndicator.root}\">\n <div class=\"${statusIndicator.content}\">\n ${renderIcon('captions-on', { class: cn(statusIndicator.icon.base, statusIndicator.icon.captionsOn) })}\n ${renderIcon('captions-off', { class: cn(statusIndicator.icon.base, statusIndicator.icon.captionsOff) })}\n ${renderIcon('fullscreen-enter', { class: cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenEnter) })}\n ${renderIcon('fullscreen-exit', { class: cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenExit) })}\n ${renderIcon('pip-enter', { class: cn(statusIndicator.icon.base, statusIndicator.icon.pipEnter) })}\n ${renderIcon('pip-exit', { class: cn(statusIndicator.icon.base, statusIndicator.icon.pipExit) })}\n <media-status-indicator-value class=\"${statusIndicator.value}\"></media-status-indicator-value>\n </div>\n </media-status-indicator>\n\n <media-seek-indicator hidden class=\"${seekIndicator.root}\">\n ${renderIcon('chevron', { class: seekIndicator.icon })}\n <media-seek-indicator-value class=\"${seekIndicator.value}\"></media-seek-indicator-value>\n </media-seek-indicator>\n\n <media-status-indicator hidden actions=\"togglePaused\" class=\"${statusIndicator.playback.root}\">\n ${renderIcon('play', { class: cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.play) })}\n ${renderIcon('pause', { class: cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.pause) })}\n </media-status-indicator>\n </div>\n </media-container>\n `;\n}\n\nexport class VideoSkinTailwindElement extends SkinElement {\n static readonly tagName = 'video-skin-tailwind';\n static template = createTemplate(getTemplateHTML());\n}\n\nsafeDefine(VideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoSkinTailwindElement.tagName]: VideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-mixin.d.ts","names":[],"sources":["../../../src/i18n/provider-mixin.ts"],"mappings":";;;;;KA6BY,qBAAqB,aAAa,0BAC5C,MAAM,SACH,YAAY,mBAAmB"}
1
+ {"version":3,"file":"provider-mixin.d.ts","names":[],"sources":["../../../src/i18n/provider-mixin.ts"],"mappings":";;;;;KA8BY,qBAAqB,aAAa,0BAC5C,MAAM,SACH,YAAY,mBAAmB"}
@@ -3,6 +3,7 @@ import { resolveProviderLocale } from "./locale.js";
3
3
  import { ContextProvider } from "@videojs/element/context";
4
4
  import { DEFAULT_LOCALE, createTranslator, findLocaleKeys, getBrowserTranslations, getI18nTranslations, loadLocale, onI18nRegistryChange, registerI18n, shouldAttemptBrowserTranslation } from "@videojs/core/i18n";
5
5
  import { mergeLocaleOverlays, subscribeAmbientLang } from "@videojs/utils/dom";
6
+ import { getTextDirection } from "@videojs/utils/i18n";
6
7
  //#region src/i18n/provider-mixin.ts
7
8
  function createI18nProviderMixin({ context, loader = loadLocale }) {
8
9
  return (Base) => {
@@ -10,6 +11,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
10
11
  constructor(..._args) {
11
12
  super(..._args);
12
13
  this.lang = "";
14
+ this.dir = "";
13
15
  this.#i18nProvider = new ContextProvider(this, {
14
16
  context,
15
17
  initialValue: {
@@ -32,6 +34,10 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
32
34
  lang: {
33
35
  type: String,
34
36
  reflect: true
37
+ },
38
+ dir: {
39
+ type: String,
40
+ reflect: true
35
41
  }
36
42
  };
37
43
  }
@@ -49,6 +55,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
49
55
  #publishedLocale;
50
56
  #publishedRegistryEpoch;
51
57
  #publishedLazyLayer;
58
+ #derivedDirection;
52
59
  get i18nValue() {
53
60
  return this.#i18nValue;
54
61
  }
@@ -83,6 +90,7 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
83
90
  const localeDriftedBeforeFirstPaint = !hadLocale && this.#lazyResetStartedForLocale !== void 0 && locale !== this.#lazyResetStartedForLocale;
84
91
  if (hadLocale || localeDriftedBeforeFirstPaint) this.#resetLazyAndLoad();
85
92
  }
93
+ this.#syncDirection(locale);
86
94
  this.#publish();
87
95
  }
88
96
  #resetLazyAndLoad() {
@@ -107,6 +115,22 @@ function createI18nProviderMixin({ context, loader = loadLocale }) {
107
115
  #resolvedLocale() {
108
116
  return resolveProviderLocale(this);
109
117
  }
118
+ #syncDirection(locale) {
119
+ const current = this.dir.trim().toLowerCase();
120
+ const isDerived = this.#derivedDirection !== void 0 && current === this.#derivedDirection;
121
+ if (!this.lang.trim()) {
122
+ if (isDerived) this.dir = "";
123
+ this.#derivedDirection = void 0;
124
+ return;
125
+ }
126
+ if (current && !isDerived) {
127
+ this.#derivedDirection = void 0;
128
+ return;
129
+ }
130
+ const direction = getTextDirection(locale);
131
+ this.#derivedDirection = direction;
132
+ if (this.dir !== direction) this.dir = direction;
133
+ }
110
134
  #publish() {
111
135
  const locale = this.#resolvedLocale();
112
136
  if (this.#publishedLocale === locale && this.#publishedRegistryEpoch === this.#registryEpoch && this.#publishedLazyLayer === this.#lazyLayer) return;
@@ -1 +1 @@
1
- {"version":3,"file":"provider-mixin.js","names":["defaultLoader","#i18nProvider","#i18nValue","#registryUnsubscribe","#registryEpoch","#ambientUnsubscribe","#resetLazyAndLoad","#publish","#lazySeq","#lazyLayer","#resolvedLocaleForLazy","#lazyResetStartedForLocale","#resolvedLocale","#publishedLocale","#publishedRegistryEpoch","#publishedLazyLayer"],"sources":["../../../src/i18n/provider-mixin.ts"],"sourcesContent":["import {\n createTranslator,\n DEFAULT_LOCALE,\n loadLocale as defaultLoader,\n type FlatTranslations,\n findLocaleKeys,\n getBrowserTranslations,\n getI18nTranslations,\n type Locale,\n onI18nRegistryChange,\n registerI18n,\n shouldAttemptBrowserTranslation,\n} from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { mergeLocaleOverlays, subscribeAmbientLang } from '@videojs/utils/dom';\nimport type { Constructor } from '@videojs/utils/types';\n\nimport type { I18nContext, I18nContextValue } from './context';\nimport { getFallbackTranslator } from './controller';\nimport { resolveProviderLocale } from './locale';\nimport type { LocaleLoader, ReactiveElementMixinBase } from './types';\n\nexport interface I18nProviderConfig {\n context: I18nContext;\n /** Override lazy loading of shipped locale packs (tests or custom loaders). */\n loader?: LocaleLoader | undefined;\n}\n\nexport type I18nProviderMixin = <Base extends ReactiveElementMixinBase>(\n Base: Base\n) => Constructor<ReactiveElement> & Base;\n\nexport function createI18nProviderMixin({ context, loader = defaultLoader }: I18nProviderConfig): I18nProviderMixin {\n return <Base extends ReactiveElementMixinBase>(Base: Base) => {\n class I18nProviderElement extends Base {\n static properties = {\n ...Base.properties,\n lang: { type: String, reflect: true },\n };\n\n lang = '';\n\n readonly #i18nProvider = new ContextProvider(this, {\n context,\n initialValue: {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n },\n });\n\n #registryUnsubscribe: (() => void) | undefined;\n #ambientUnsubscribe: (() => void) | undefined;\n #registryEpoch = 0;\n #lazyLayer: Partial<FlatTranslations> = {};\n #lazySeq = 0;\n /** Tracks locale used for `#lazyLayer`; ambient `lang` can change without the `lang` property. */\n #resolvedLocaleForLazy: Locale | undefined;\n /** Locale snapshot when the current `#lazySeq` async load was started (see `willUpdate` drift guard). */\n #lazyResetStartedForLocale: Locale | undefined;\n #i18nValue: I18nContextValue = {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n };\n #publishedLocale: Locale | undefined;\n #publishedRegistryEpoch = -1;\n #publishedLazyLayer: Partial<FlatTranslations> | undefined;\n\n protected get i18nValue(): I18nContextValue {\n return this.#i18nValue;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#registryUnsubscribe = onI18nRegistryChange(() => {\n this.#registryEpoch += 1;\n this.requestUpdate();\n });\n this.#ambientUnsubscribe = subscribeAmbientLang(() => this.requestUpdate());\n this.#resetLazyAndLoad();\n this.#publish();\n this.requestUpdate();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#registryUnsubscribe?.();\n this.#registryUnsubscribe = undefined;\n this.#ambientUnsubscribe?.();\n this.#ambientUnsubscribe = undefined;\n this.#lazySeq += 1;\n this.#lazyLayer = {};\n this.#resolvedLocaleForLazy = undefined;\n this.#lazyResetStartedForLocale = undefined;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n const locale = resolveProviderLocale(this);\n if (this.#resolvedLocaleForLazy !== locale) {\n const hadLocale = this.#resolvedLocaleForLazy !== undefined;\n this.#resolvedLocaleForLazy = locale;\n const localeDriftedBeforeFirstPaint =\n !hadLocale && this.#lazyResetStartedForLocale !== undefined && locale !== this.#lazyResetStartedForLocale;\n if (hadLocale || localeDriftedBeforeFirstPaint) {\n this.#resetLazyAndLoad();\n }\n }\n this.#publish();\n }\n\n #resetLazyAndLoad(): void {\n const localeSnapshot = resolveProviderLocale(this);\n this.#lazyResetStartedForLocale = localeSnapshot;\n this.#lazySeq += 1;\n const seq = this.#lazySeq;\n this.#lazyLayer = {};\n void (async () => {\n const { merged, loadedTags } = await mergeLocaleOverlays(localeSnapshot, loader, findLocaleKeys);\n if (seq !== this.#lazySeq) return;\n if (shouldAttemptBrowserTranslation(localeSnapshot, loadedTags, merged)) {\n const browser = await getBrowserTranslations(localeSnapshot);\n if (seq !== this.#lazySeq) return;\n if (Object.keys(browser).length) registerI18n(localeSnapshot, browser);\n }\n if (seq !== this.#lazySeq) return;\n this.#lazyLayer = merged;\n this.requestUpdate();\n })();\n }\n\n #resolvedLocale(): Locale {\n return resolveProviderLocale(this);\n }\n\n #publish(): void {\n const locale = this.#resolvedLocale();\n if (\n this.#publishedLocale === locale &&\n this.#publishedRegistryEpoch === this.#registryEpoch &&\n this.#publishedLazyLayer === this.#lazyLayer\n ) {\n return;\n }\n const registryLayer = getI18nTranslations(locale);\n const translations: FlatTranslations = {\n ...registryLayer,\n ...this.#lazyLayer,\n };\n const translator = createTranslator(translations, locale);\n this.#i18nValue = { translator, locale };\n this.#publishedLocale = locale;\n this.#publishedRegistryEpoch = this.#registryEpoch;\n this.#publishedLazyLayer = this.#lazyLayer;\n this.#i18nProvider.setValue(this.#i18nValue);\n }\n }\n return I18nProviderElement;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"provider-mixin.js","names":["defaultLoader","#i18nProvider","#i18nValue","#registryUnsubscribe","#registryEpoch","#ambientUnsubscribe","#resetLazyAndLoad","#publish","#lazySeq","#lazyLayer","#resolvedLocaleForLazy","#lazyResetStartedForLocale","#syncDirection","#derivedDirection","#resolvedLocale","#publishedLocale","#publishedRegistryEpoch","#publishedLazyLayer"],"sources":["../../../src/i18n/provider-mixin.ts"],"sourcesContent":["import {\n createTranslator,\n DEFAULT_LOCALE,\n loadLocale as defaultLoader,\n type FlatTranslations,\n findLocaleKeys,\n getBrowserTranslations,\n getI18nTranslations,\n type Locale,\n onI18nRegistryChange,\n registerI18n,\n shouldAttemptBrowserTranslation,\n} from '@videojs/core/i18n';\nimport type { PropertyValues, ReactiveElement } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\nimport { mergeLocaleOverlays, subscribeAmbientLang } from '@videojs/utils/dom';\nimport { getTextDirection, type TextDirection } from '@videojs/utils/i18n';\nimport type { Constructor } from '@videojs/utils/types';\n\nimport type { I18nContext, I18nContextValue } from './context';\nimport { getFallbackTranslator } from './controller';\nimport { resolveProviderLocale } from './locale';\nimport type { LocaleLoader, ReactiveElementMixinBase } from './types';\n\nexport interface I18nProviderConfig {\n context: I18nContext;\n /** Override lazy loading of shipped locale packs (tests or custom loaders). */\n loader?: LocaleLoader | undefined;\n}\n\nexport type I18nProviderMixin = <Base extends ReactiveElementMixinBase>(\n Base: Base\n) => Constructor<ReactiveElement> & Base;\n\nexport function createI18nProviderMixin({ context, loader = defaultLoader }: I18nProviderConfig): I18nProviderMixin {\n return <Base extends ReactiveElementMixinBase>(Base: Base) => {\n class I18nProviderElement extends Base {\n static properties = {\n ...Base.properties,\n lang: { type: String, reflect: true },\n dir: { type: String, reflect: true },\n };\n\n lang = '';\n dir = '';\n\n readonly #i18nProvider = new ContextProvider(this, {\n context,\n initialValue: {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n },\n });\n\n #registryUnsubscribe: (() => void) | undefined;\n #ambientUnsubscribe: (() => void) | undefined;\n #registryEpoch = 0;\n #lazyLayer: Partial<FlatTranslations> = {};\n #lazySeq = 0;\n /** Tracks locale used for `#lazyLayer`; ambient `lang` can change without the `lang` property. */\n #resolvedLocaleForLazy: Locale | undefined;\n /** Locale snapshot when the current `#lazySeq` async load was started (see `willUpdate` drift guard). */\n #lazyResetStartedForLocale: Locale | undefined;\n #i18nValue: I18nContextValue = {\n translator: getFallbackTranslator(),\n locale: DEFAULT_LOCALE,\n };\n #publishedLocale: Locale | undefined;\n #publishedRegistryEpoch = -1;\n #publishedLazyLayer: Partial<FlatTranslations> | undefined;\n #derivedDirection: TextDirection | undefined;\n\n protected get i18nValue(): I18nContextValue {\n return this.#i18nValue;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#registryUnsubscribe = onI18nRegistryChange(() => {\n this.#registryEpoch += 1;\n this.requestUpdate();\n });\n this.#ambientUnsubscribe = subscribeAmbientLang(() => this.requestUpdate());\n this.#resetLazyAndLoad();\n this.#publish();\n this.requestUpdate();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#registryUnsubscribe?.();\n this.#registryUnsubscribe = undefined;\n this.#ambientUnsubscribe?.();\n this.#ambientUnsubscribe = undefined;\n this.#lazySeq += 1;\n this.#lazyLayer = {};\n this.#resolvedLocaleForLazy = undefined;\n this.#lazyResetStartedForLocale = undefined;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n const locale = resolveProviderLocale(this);\n if (this.#resolvedLocaleForLazy !== locale) {\n const hadLocale = this.#resolvedLocaleForLazy !== undefined;\n this.#resolvedLocaleForLazy = locale;\n const localeDriftedBeforeFirstPaint =\n !hadLocale && this.#lazyResetStartedForLocale !== undefined && locale !== this.#lazyResetStartedForLocale;\n if (hadLocale || localeDriftedBeforeFirstPaint) {\n this.#resetLazyAndLoad();\n }\n }\n this.#syncDirection(locale);\n this.#publish();\n }\n\n #resetLazyAndLoad(): void {\n const localeSnapshot = resolveProviderLocale(this);\n this.#lazyResetStartedForLocale = localeSnapshot;\n this.#lazySeq += 1;\n const seq = this.#lazySeq;\n this.#lazyLayer = {};\n void (async () => {\n const { merged, loadedTags } = await mergeLocaleOverlays(localeSnapshot, loader, findLocaleKeys);\n if (seq !== this.#lazySeq) return;\n if (shouldAttemptBrowserTranslation(localeSnapshot, loadedTags, merged)) {\n const browser = await getBrowserTranslations(localeSnapshot);\n if (seq !== this.#lazySeq) return;\n if (Object.keys(browser).length) registerI18n(localeSnapshot, browser);\n }\n if (seq !== this.#lazySeq) return;\n this.#lazyLayer = merged;\n this.requestUpdate();\n })();\n }\n\n #resolvedLocale(): Locale {\n return resolveProviderLocale(this);\n }\n\n #syncDirection(locale: Locale): void {\n const current = this.dir.trim().toLowerCase();\n const isDerived = this.#derivedDirection !== undefined && current === this.#derivedDirection;\n\n if (!this.lang.trim()) {\n if (isDerived) this.dir = '';\n this.#derivedDirection = undefined;\n return;\n }\n\n if (current && !isDerived) {\n this.#derivedDirection = undefined;\n return;\n }\n\n const direction = getTextDirection(locale);\n this.#derivedDirection = direction;\n if (this.dir !== direction) this.dir = direction;\n }\n\n #publish(): void {\n const locale = this.#resolvedLocale();\n if (\n this.#publishedLocale === locale &&\n this.#publishedRegistryEpoch === this.#registryEpoch &&\n this.#publishedLazyLayer === this.#lazyLayer\n ) {\n return;\n }\n const registryLayer = getI18nTranslations(locale);\n const translations: FlatTranslations = {\n ...registryLayer,\n ...this.#lazyLayer,\n };\n const translator = createTranslator(translations, locale);\n this.#i18nValue = { translator, locale };\n this.#publishedLocale = locale;\n this.#publishedRegistryEpoch = this.#registryEpoch;\n this.#publishedLazyLayer = this.#lazyLayer;\n this.#i18nProvider.setValue(this.#i18nValue);\n }\n }\n return I18nProviderElement;\n };\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region ../skins/dist/default/default/tailwind/components/button-group.js
2
- const buttonGroup = "flex items-center gap-px";
2
+ const buttonGroup = "flex items-center gap-px [&:dir(rtl)]:flex-row-reverse";
3
3
  //#endregion
4
4
  export { buttonGroup };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../../skins/dist/default/default/tailwind/components/button-group.js"],"sourcesContent":["//#region src/default/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../../skins/dist/default/default/tailwind/components/button-group.js"],"sourcesContent":["//#region src/default/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px [&:dir(rtl)]:flex-row-reverse\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
@@ -1,6 +1,6 @@
1
1
  import { cn } from "@videojs/utils/style";
2
2
  //#region ../skins/dist/default/default/tailwind/components/controls.js
3
- const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center", "rounded-full", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
3
+ const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse", "rounded-full", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
4
4
  //#endregion
5
5
  export { controls };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../../skins/dist/default/default/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center\", \"rounded-full\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,wFAAwF,0EAA0E,8EAA8E,gBAAgB,4DAA4D"}
1
+ {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../../skins/dist/default/default/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse\", \"rounded-full\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,wFAAwF,0EAA0E,4GAA4G,gBAAgB,4DAA4D"}