@videojs/html 10.0.0-beta.27 → 10.0.0-beta.29

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 (676) hide show
  1. package/cdn/{adapter-XTen-YVQ.js → adapter-CEnNWvii.js} +17 -4
  2. package/cdn/adapter-CEnNWvii.js.map +1 -0
  3. package/cdn/adapter-DaKW8NzI.js +2 -0
  4. package/cdn/adapter-DaKW8NzI.js.map +1 -0
  5. package/cdn/audio-headless.dev.js +1 -1
  6. package/cdn/audio-headless.js +1 -1
  7. package/cdn/audio-minimal-ui.dev.js +2 -2
  8. package/cdn/audio-minimal-ui.js +1 -1
  9. package/cdn/audio-minimal.dev.js +5 -5
  10. package/cdn/audio-minimal.dev.js.map +1 -1
  11. package/cdn/audio-minimal.js +1 -1
  12. package/cdn/audio-minimal.js.map +1 -1
  13. package/cdn/audio-ui.dev.js +2 -2
  14. package/cdn/audio-ui.js +1 -1
  15. package/cdn/audio.dev.js +5 -5
  16. package/cdn/audio.dev.js.map +1 -1
  17. package/cdn/audio.js +1 -1
  18. package/cdn/audio.js.map +1 -1
  19. package/cdn/background-video-WKumpp49.js +59 -0
  20. package/cdn/background-video-WKumpp49.js.map +1 -0
  21. package/cdn/background-video-YHY_3-lX.js +2 -0
  22. package/cdn/background-video-YHY_3-lX.js.map +1 -0
  23. package/cdn/background.dev.js +3 -56
  24. package/cdn/background.dev.js.map +1 -1
  25. package/cdn/background.js +1 -1
  26. package/cdn/background.js.map +1 -1
  27. package/cdn/bn-CcLIScl6.js +108 -0
  28. package/cdn/bn-CcLIScl6.js.map +1 -0
  29. package/cdn/bn-KcCmQhYd.js +2 -0
  30. package/cdn/bn-KcCmQhYd.js.map +1 -0
  31. package/cdn/compounds-C4YYLyL2.js +8 -0
  32. package/cdn/compounds-C4YYLyL2.js.map +1 -0
  33. package/cdn/{compounds-CCvdpvge.js → compounds-C73u1MeO.js} +68 -71
  34. package/cdn/compounds-C73u1MeO.js.map +1 -0
  35. package/cdn/container-element-Dd0ZCdhK.js +14 -0
  36. package/cdn/container-element-Dd0ZCdhK.js.map +1 -0
  37. package/cdn/container-element-HHK_KZOE.js +376 -0
  38. package/cdn/container-element-HHK_KZOE.js.map +1 -0
  39. package/cdn/create-player-BU8LDJDL.js +2 -0
  40. package/cdn/create-player-BU8LDJDL.js.map +1 -0
  41. package/cdn/{create-player-BHFyOnWi.js → create-player-Db1CIvlK.js} +76 -424
  42. package/cdn/create-player-Db1CIvlK.js.map +1 -0
  43. package/cdn/{default-BqQDVloS.js → default-A3aM0skz.js} +2 -2
  44. package/cdn/default-A3aM0skz.js.map +1 -0
  45. package/cdn/default-BDyhiTCm.js +2 -0
  46. package/cdn/default-BDyhiTCm.js.map +1 -0
  47. package/cdn/{default-I2LasfxC.js → default-C1_k1NeB.js} +2 -2
  48. package/cdn/default-C1_k1NeB.js.map +1 -0
  49. package/cdn/default-DHrMd4ie.js +2 -0
  50. package/cdn/default-DHrMd4ie.js.map +1 -0
  51. package/cdn/embed-params-D2e8u0d4.js +2 -0
  52. package/cdn/embed-params-D2e8u0d4.js.map +1 -0
  53. package/cdn/embed-params-W6T88S8x.js +39 -0
  54. package/cdn/embed-params-W6T88S8x.js.map +1 -0
  55. package/cdn/error-surface-BID4D3DW.js +59 -0
  56. package/cdn/error-surface-BID4D3DW.js.map +1 -0
  57. package/cdn/{select-tracks-nRPBa1NC.js → error-surface-D0bo71gD.js} +442 -48
  58. package/cdn/error-surface-D0bo71gD.js.map +1 -0
  59. package/cdn/{gesture-element-BNfMI8eh.js → gesture-element-CeRy1IVs.js} +2 -2
  60. package/cdn/gesture-element-CeRy1IVs.js.map +1 -0
  61. package/cdn/{gesture-element-CG-Sx_5t.js → gesture-element-DB67OYCE.js} +3 -3
  62. package/cdn/gesture-element-DB67OYCE.js.map +1 -0
  63. package/cdn/hls-js-CiE4wOrG.js +2 -0
  64. package/cdn/{hls-js-6lW7L4th.js.map → hls-js-CiE4wOrG.js.map} +1 -1
  65. package/cdn/hls-js-DBKRCbQm.js +2 -0
  66. package/cdn/{hls-js-DCQzjzB5.js.map → hls-js-DBKRCbQm.js.map} +1 -1
  67. package/cdn/{hls-js-g1zdcyvE.js → hls-js-DX2NGCAr.js} +3 -2
  68. package/cdn/{hls-js-g1zdcyvE.js.map → hls-js-DX2NGCAr.js.map} +1 -1
  69. package/cdn/{hls-js-Cwj8UBx9.js → hls-js-JeH8yvsP.js} +3 -2
  70. package/cdn/{hls-js-Cwj8UBx9.js.map → hls-js-JeH8yvsP.js.map} +1 -1
  71. package/cdn/i18n-CE4KxKuj.js +2 -0
  72. package/cdn/i18n-CE4KxKuj.js.map +1 -0
  73. package/cdn/i18n-CpBDXf6M.js +2 -0
  74. package/cdn/{i18n-DfKGl5Rh.js.map → i18n-CpBDXf6M.js.map} +1 -1
  75. package/cdn/{i18n-Mtlmj1AA.js → i18n-D0nhPa0m.js} +2 -2
  76. package/cdn/{i18n-Mtlmj1AA.js.map → i18n-D0nhPa0m.js.map} +1 -1
  77. package/cdn/i18n-DyF_NfCk.js +157 -0
  78. package/cdn/i18n-DyF_NfCk.js.map +1 -0
  79. package/cdn/i18n.dev.js +3 -152
  80. package/cdn/i18n.dev.js.map +1 -1
  81. package/cdn/i18n.js +1 -1
  82. package/cdn/i18n.js.map +1 -1
  83. package/cdn/live-button-element-Co8z2LkI.js +2 -0
  84. package/cdn/{live-button-element-CWfkQUoy.js.map → live-button-element-Co8z2LkI.js.map} +1 -1
  85. package/cdn/{live-button-element-B_y-ZJBy.js → live-button-element-zE-8uoR2.js} +5 -4
  86. package/cdn/live-button-element-zE-8uoR2.js.map +1 -0
  87. package/cdn/live-video-minimal.dev.js +12 -10
  88. package/cdn/live-video-minimal.dev.js.map +1 -1
  89. package/cdn/live-video-minimal.js +1 -1
  90. package/cdn/live-video-minimal.js.map +1 -1
  91. package/cdn/live-video.dev.js +13 -11
  92. package/cdn/live-video.dev.js.map +1 -1
  93. package/cdn/live-video.js +1 -1
  94. package/cdn/live-video.js.map +1 -1
  95. package/cdn/locales/bn.dev.js +1 -1
  96. package/cdn/locales/bn.js +1 -1
  97. package/cdn/media/background-video.dev.d.ts +1 -0
  98. package/cdn/media/background-video.dev.js +3 -0
  99. package/cdn/media/background-video.js +1 -0
  100. package/cdn/media/cloudflare-video.dev.d.ts +1 -0
  101. package/cdn/media/cloudflare-video.dev.js +668 -0
  102. package/cdn/media/cloudflare-video.dev.js.map +1 -0
  103. package/cdn/media/cloudflare-video.js +2 -0
  104. package/cdn/media/cloudflare-video.js.map +1 -0
  105. package/cdn/media/container.dev.d.ts +1 -0
  106. package/cdn/media/container.dev.js +8 -0
  107. package/cdn/media/container.dev.js.map +1 -0
  108. package/cdn/media/container.js +2 -0
  109. package/cdn/media/container.js.map +1 -0
  110. package/cdn/media/dash-video.dev.js +2 -1
  111. package/cdn/media/dash-video.js +2 -2
  112. package/cdn/media/dash-video.js.map +1 -1
  113. package/cdn/media/google-cast.dev.js +2 -31
  114. package/cdn/media/google-cast.dev.js.map +1 -1
  115. package/cdn/media/google-cast.js +3 -3
  116. package/cdn/media/google-cast.js.map +1 -1
  117. package/cdn/media/hls-audio.dev.js +2 -1
  118. package/cdn/media/hls-audio.js +1 -1
  119. package/cdn/media/hls-audio.js.map +1 -1
  120. package/cdn/media/hls-background-video.dev.js +2 -1
  121. package/cdn/media/hls-background-video.js +1 -1
  122. package/cdn/media/hls-background-video.js.map +1 -1
  123. package/cdn/media/hls-video.dev.js +2 -1
  124. package/cdn/media/hls-video.js +1 -1
  125. package/cdn/media/hls-video.js.map +1 -1
  126. package/cdn/media/hlsjs-video.dev.js +2 -1
  127. package/cdn/media/hlsjs-video.js +1 -1
  128. package/cdn/media/hlsjs-video.js.map +1 -1
  129. package/cdn/media/mux-audio/hls-js.dev.js +3 -1
  130. package/cdn/media/mux-audio/hls-js.js +1 -1
  131. package/cdn/media/mux-audio/spf.dev.js +3 -2
  132. package/cdn/media/mux-audio/spf.js +1 -1
  133. package/cdn/media/mux-audio/spf.js.map +1 -1
  134. package/cdn/media/mux-audio.dev.js +3 -1
  135. package/cdn/media/mux-audio.js +1 -1
  136. package/cdn/media/mux-background-video.dev.js +2 -1
  137. package/cdn/media/mux-background-video.js +1 -1
  138. package/cdn/media/mux-background-video.js.map +1 -1
  139. package/cdn/media/mux-data.dev.js +2 -1
  140. package/cdn/media/mux-data.dev.js.map +1 -1
  141. package/cdn/media/mux-data.js +2 -2
  142. package/cdn/media/mux-data.js.map +1 -1
  143. package/cdn/media/mux-video/hls-js.dev.js +3 -1
  144. package/cdn/media/mux-video/hls-js.js +1 -1
  145. package/cdn/media/mux-video/spf.dev.js +3 -2
  146. package/cdn/media/mux-video/spf.js +1 -1
  147. package/cdn/media/mux-video/spf.js.map +1 -1
  148. package/cdn/media/mux-video.dev.js +3 -1
  149. package/cdn/media/mux-video.js +1 -1
  150. package/cdn/media/native-hls-video.dev.js +1 -0
  151. package/cdn/media/native-hls-video.js +1 -1
  152. package/cdn/media/native-hls-video.js.map +1 -1
  153. package/cdn/media/spotify-audio.dev.d.ts +1 -0
  154. package/cdn/media/spotify-audio.dev.js +605 -0
  155. package/cdn/media/spotify-audio.dev.js.map +1 -0
  156. package/cdn/media/spotify-audio.js +2 -0
  157. package/cdn/media/spotify-audio.js.map +1 -0
  158. package/cdn/media/tiktok-video.dev.d.ts +1 -0
  159. package/cdn/media/tiktok-video.dev.js +636 -0
  160. package/cdn/media/tiktok-video.dev.js.map +1 -0
  161. package/cdn/media/tiktok-video.js +2 -0
  162. package/cdn/media/tiktok-video.js.map +1 -0
  163. package/cdn/media/twitch-video.dev.d.ts +1 -0
  164. package/cdn/media/twitch-video.dev.js +627 -0
  165. package/cdn/media/twitch-video.dev.js.map +1 -0
  166. package/cdn/media/twitch-video.js +2 -0
  167. package/cdn/media/twitch-video.js.map +1 -0
  168. package/cdn/media/vimeo-video.dev.d.ts +1 -0
  169. package/cdn/media/vimeo-video.dev.js +3011 -0
  170. package/cdn/media/vimeo-video.dev.js.map +1 -0
  171. package/cdn/media/vimeo-video.js +16 -0
  172. package/cdn/media/vimeo-video.js.map +1 -0
  173. package/cdn/media/youtube-video.dev.d.ts +1 -0
  174. package/cdn/media/youtube-video.dev.js +713 -0
  175. package/cdn/media/youtube-video.dev.js.map +1 -0
  176. package/cdn/media/youtube-video.js +2 -0
  177. package/cdn/media/youtube-video.js.map +1 -0
  178. package/cdn/{media-Uxm0d3Vx.js → media-BI8caj07.js} +3 -3
  179. package/cdn/{media-Uxm0d3Vx.js.map → media-BI8caj07.js.map} +1 -1
  180. package/cdn/{media-B_gQXwri.js → media-BNuI0Im7.js} +30 -8
  181. package/cdn/media-BNuI0Im7.js.map +1 -0
  182. package/cdn/{media-Cp3acYc8.js → media-BavrGKqa.js} +274 -5
  183. package/cdn/media-BavrGKqa.js.map +1 -0
  184. package/cdn/media-CQxFuDcv.js +2 -0
  185. package/cdn/{media-CbWsJJhU.js.map → media-CQxFuDcv.js.map} +1 -1
  186. package/cdn/media-CanBm0Jh.js +41 -0
  187. package/cdn/media-CanBm0Jh.js.map +1 -0
  188. package/cdn/media-D4tG62L5.js +2 -0
  189. package/cdn/{media-BTipOcKo.js.map → media-D4tG62L5.js.map} +1 -1
  190. package/cdn/{media-DRo3n8tM.js → media-DI6DvYm3.js} +4 -4
  191. package/cdn/{media-DRo3n8tM.js.map → media-DI6DvYm3.js.map} +1 -1
  192. package/cdn/media-DU3Xf5XR.js +2 -0
  193. package/cdn/media-DU3Xf5XR.js.map +1 -0
  194. package/cdn/media-mYKOAsk3.js +825 -0
  195. package/cdn/media-mYKOAsk3.js.map +1 -0
  196. package/cdn/media-played-ranges-CM2zeOGr.js +2 -0
  197. package/cdn/media-played-ranges-CM2zeOGr.js.map +1 -0
  198. package/cdn/media-played-ranges-Yd9acuMt.js +156 -0
  199. package/cdn/media-played-ranges-Yd9acuMt.js.map +1 -0
  200. package/cdn/media-zReLnePj.js +2 -0
  201. package/cdn/media-zReLnePj.js.map +1 -0
  202. package/cdn/{minimal-DQCLKRyR.js → minimal-3OmH0xQS.js} +2 -2
  203. package/cdn/minimal-3OmH0xQS.js.map +1 -0
  204. package/cdn/{minimal-DLosvq31.js → minimal-6w_Vyyl9.js} +2 -2
  205. package/cdn/minimal-6w_Vyyl9.js.map +1 -0
  206. package/cdn/minimal-BWLTn7oQ.js +2 -0
  207. package/cdn/minimal-BWLTn7oQ.js.map +1 -0
  208. package/cdn/minimal-DIGrklyh.js +2 -0
  209. package/cdn/minimal-DIGrklyh.js.map +1 -0
  210. package/cdn/{minimal-ui-Bxcpf5Mb.js → minimal-ui-BCIESK8f.js} +9 -9
  211. package/cdn/{minimal-ui-Bxcpf5Mb.js.map → minimal-ui-BCIESK8f.js.map} +1 -1
  212. package/cdn/minimal-ui-BXrq3z4U.js +2 -0
  213. package/cdn/{minimal-ui-BVKu9LWj.js.map → minimal-ui-BXrq3z4U.js.map} +1 -1
  214. package/cdn/{minimal-ui--JsmpU2q.js → minimal-ui-DEalpMk6.js} +5 -5
  215. package/cdn/{minimal-ui--JsmpU2q.js.map → minimal-ui-DEalpMk6.js.map} +1 -1
  216. package/cdn/minimal-ui-vY3QgohH.js +2 -0
  217. package/cdn/{minimal-ui-AFk6Ut5f.js.map → minimal-ui-vY3QgohH.js.map} +1 -1
  218. package/cdn/mixin-BqN0V06a.js +2 -0
  219. package/cdn/{mixin-DiB7dIef.js.map → mixin-BqN0V06a.js.map} +1 -1
  220. package/cdn/{mixin-CkNZwQXF.js → mixin-C193v40v.js} +67 -67
  221. package/cdn/mixin-C193v40v.js.map +1 -0
  222. package/cdn/noop-BxkeRIz9.js +6 -0
  223. package/cdn/noop-BxkeRIz9.js.map +1 -0
  224. package/cdn/noop-Ch0IHcOP.js +2 -0
  225. package/cdn/noop-Ch0IHcOP.js.map +1 -0
  226. package/cdn/{player-C4ix6TQq.js → player-B3GlPF90.js} +3 -2
  227. package/cdn/{player-C4ix6TQq.js.map → player-B3GlPF90.js.map} +1 -1
  228. package/cdn/player-CtTC7qa5.js +2 -0
  229. package/cdn/{player-B0ccW5-n.js.map → player-CtTC7qa5.js.map} +1 -1
  230. package/cdn/player-DKkph8UM.js +2 -0
  231. package/cdn/{player-srq1RGTj.js.map → player-DKkph8UM.js.map} +1 -1
  232. package/cdn/{player-B0qnepD5.js → player-DPDmTRvg.js} +3 -2
  233. package/cdn/{player-B0qnepD5.js.map → player-DPDmTRvg.js.map} +1 -1
  234. package/cdn/player-DrDd7LJi.js +2 -0
  235. package/cdn/{player-iIewo8Y9.js.map → player-DrDd7LJi.js.map} +1 -1
  236. package/cdn/{player-D4fdOLLk.js → player-L5UpZmT4.js} +3 -2
  237. package/cdn/{player-D4fdOLLk.js.map → player-L5UpZmT4.js.map} +1 -1
  238. package/cdn/{poster-element-BP1Ypgbf.js → poster-element-B5tdJ2ub.js} +192 -39
  239. package/cdn/poster-element-B5tdJ2ub.js.map +1 -0
  240. package/cdn/poster-element-B8QwXSU_.js +2 -0
  241. package/cdn/poster-element-B8QwXSU_.js.map +1 -0
  242. package/cdn/{error-surface-drmCvBVW.js → relocation-pipelines-Dh8CcgHw.js} +5 -343
  243. package/cdn/relocation-pipelines-Dh8CcgHw.js.map +1 -0
  244. package/cdn/relocation-pipelines-DunE4gcV.js +2 -0
  245. package/cdn/relocation-pipelines-DunE4gcV.js.map +1 -0
  246. package/cdn/script-D3ZkiqwO.js +2 -0
  247. package/cdn/script-D3ZkiqwO.js.map +1 -0
  248. package/cdn/script-erPJaaTz.js +33 -0
  249. package/cdn/script-erPJaaTz.js.map +1 -0
  250. package/cdn/{seek-button-element-TErrbilI.js → seek-button-element-5co-k0Dx.js} +7 -6
  251. package/cdn/seek-button-element-5co-k0Dx.js.map +1 -0
  252. package/cdn/seek-button-element-B8TkILg-.js +2 -0
  253. package/cdn/seek-button-element-B8TkILg-.js.map +1 -0
  254. package/cdn/shallow-equal-C7S8rj2f.js +16 -0
  255. package/cdn/shallow-equal-C7S8rj2f.js.map +1 -0
  256. package/cdn/shallow-equal-KV1zFqZi.js +2 -0
  257. package/cdn/shallow-equal-KV1zFqZi.js.map +1 -0
  258. package/cdn/{skin-element-wPSb4AAs.js → skin-element-DrkI8xuM.js} +2 -2
  259. package/cdn/{skin-element-wPSb4AAs.js.map → skin-element-DrkI8xuM.js.map} +1 -1
  260. package/cdn/{skin-element-1_MG2zgS.js → skin-element-DvX6Bxsv.js} +2 -2
  261. package/cdn/{skin-element-1_MG2zgS.js.map → skin-element-DvX6Bxsv.js.map} +1 -1
  262. package/cdn/text-element-BoY6AhMn.js +2 -0
  263. package/cdn/{text-element-Bsyglab8.js.map → text-element-BoY6AhMn.js.map} +1 -1
  264. package/cdn/{text-element-DTB9_2HX.js → text-element-cg6l21cd.js} +3 -3
  265. package/cdn/{text-element-DTB9_2HX.js.map → text-element-cg6l21cd.js.map} +1 -1
  266. package/cdn/time-slider-chapters-element-BfLjdnU4.js +2 -0
  267. package/cdn/time-slider-chapters-element-BfLjdnU4.js.map +1 -0
  268. package/cdn/{time-slider-chapters-element-DPgaLdBt.js → time-slider-chapters-element-CznFQWFm.js} +7 -6
  269. package/cdn/time-slider-chapters-element-CznFQWFm.js.map +1 -0
  270. package/cdn/{translate-text-DP0CzUCC.js → translate-text-BWvoW5-r.js} +2 -7
  271. package/cdn/translate-text-BWvoW5-r.js.map +1 -0
  272. package/cdn/translate-text-TzSgu_oe.js +2 -0
  273. package/cdn/translate-text-TzSgu_oe.js.map +1 -0
  274. package/cdn/{ui-D0AokGxw.js → ui-BwzqkJNK.js} +8 -8
  275. package/cdn/{ui-D0AokGxw.js.map → ui-BwzqkJNK.js.map} +1 -1
  276. package/cdn/ui-DayfItun.js +2 -0
  277. package/cdn/{ui-CecDxhTX.js.map → ui-DayfItun.js.map} +1 -1
  278. package/cdn/ui-PSnD-pv8.js +2 -0
  279. package/cdn/{ui-ChWM6Xz2.js.map → ui-PSnD-pv8.js.map} +1 -1
  280. package/cdn/{ui-p36Szn71.js → ui-fnKp94a7.js} +10 -10
  281. package/cdn/{ui-p36Szn71.js.map → ui-fnKp94a7.js.map} +1 -1
  282. package/cdn/video-headless.dev.js +1 -1
  283. package/cdn/video-headless.js +1 -1
  284. package/cdn/video-minimal-ui.dev.js +2 -2
  285. package/cdn/video-minimal-ui.js +1 -1
  286. package/cdn/video-minimal.dev.js +8 -6
  287. package/cdn/video-minimal.dev.js.map +1 -1
  288. package/cdn/video-minimal.js +1 -1
  289. package/cdn/video-minimal.js.map +1 -1
  290. package/cdn/video-ui.dev.js +2 -2
  291. package/cdn/video-ui.js +1 -1
  292. package/cdn/video.dev.js +9 -7
  293. package/cdn/video.dev.js.map +1 -1
  294. package/cdn/video.js +1 -1
  295. package/cdn/video.js.map +1 -1
  296. package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
  297. package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
  298. package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
  299. package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
  300. package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
  301. package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
  302. package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
  303. package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
  304. package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
  305. package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
  306. package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
  307. package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
  308. package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
  309. package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
  310. package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
  311. package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  312. package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
  313. package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
  314. package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
  315. package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  316. package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  317. package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
  318. package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  319. package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
  320. package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
  321. package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  322. package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  323. package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
  324. package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
  325. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  326. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  327. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  328. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  329. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  330. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  331. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  332. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  333. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  334. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  335. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  336. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  337. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  338. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  339. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  340. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  341. package/dist/default/define/audio/minimal-skin.css +117 -118
  342. package/dist/default/define/audio/skin.css +95 -99
  343. package/dist/default/define/live-audio/minimal-skin.css +117 -118
  344. package/dist/default/define/live-audio/skin.css +95 -99
  345. package/dist/default/define/live-video/minimal-skin.css +158 -137
  346. package/dist/default/define/live-video/minimal-skin.js +1 -1
  347. package/dist/default/define/live-video/minimal-skin.js.map +1 -1
  348. package/dist/default/define/live-video/minimal-skin.tailwind.js +1 -1
  349. package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -1
  350. package/dist/default/define/live-video/skin.css +120 -106
  351. package/dist/default/define/live-video/skin.js +1 -1
  352. package/dist/default/define/live-video/skin.js.map +1 -1
  353. package/dist/default/define/live-video/skin.tailwind.js +1 -1
  354. package/dist/default/define/live-video/skin.tailwind.js.map +1 -1
  355. package/dist/default/define/ui/gesture.js +7 -0
  356. package/dist/default/define/ui/gesture.js.map +1 -0
  357. package/dist/default/define/video/minimal-skin.css +158 -137
  358. package/dist/default/define/video/minimal-skin.js +1 -1
  359. package/dist/default/define/video/minimal-skin.js.map +1 -1
  360. package/dist/default/define/video/minimal-skin.tailwind.js +1 -1
  361. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  362. package/dist/default/define/video/skin.css +120 -106
  363. package/dist/default/define/video/skin.js +1 -1
  364. package/dist/default/define/video/skin.js.map +1 -1
  365. package/dist/default/define/video/skin.tailwind.js +1 -1
  366. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  367. package/dist/default/icons/dist/element/default/icons.js +1 -1
  368. package/dist/default/icons/dist/element/default/icons.js.map +1 -1
  369. package/dist/default/icons/dist/element/minimal/icons.js +1 -1
  370. package/dist/default/icons/dist/element/minimal/icons.js.map +1 -1
  371. package/dist/default/icons/dist/html/default/airplay-exit.js +1 -1
  372. package/dist/default/icons/dist/html/default/airplay-exit.js.map +1 -1
  373. package/dist/default/icons/dist/html/minimal/airplay-exit.js +1 -1
  374. package/dist/default/icons/dist/html/minimal/airplay-exit.js.map +1 -1
  375. package/dist/default/icons/dist/render/default/index.js +1 -1
  376. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  377. package/dist/default/icons/dist/render/minimal/index.js +1 -1
  378. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  379. package/dist/default/media/hls-background-video/media.js +18 -0
  380. package/dist/default/media/hls-background-video/media.js.map +1 -1
  381. package/dist/default/media/tiktok-video/media.js +3 -2
  382. package/dist/default/media/tiktok-video/media.js.map +1 -1
  383. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
  384. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  385. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
  386. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  387. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
  388. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  389. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  390. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  391. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  392. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  393. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  394. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  395. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  396. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  397. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  398. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  399. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  400. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  401. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  402. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  403. package/dist/default/store/provider-mixin.js +22 -8
  404. package/dist/default/store/provider-mixin.js.map +1 -1
  405. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
  406. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
  407. package/dist/default/ui/captions-radio-group/captions-radio-group-element.js +1 -1
  408. package/dist/default/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
  409. package/dist/default/ui/gesture/gesture-element.js.map +1 -1
  410. package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
  411. package/dist/default/ui/menu/context.js.map +1 -1
  412. package/dist/default/ui/menu/menu-element.js +28 -27
  413. package/dist/default/ui/menu/menu-element.js.map +1 -1
  414. package/dist/default/ui/menu/menu-radio-group-element.js +14 -14
  415. package/dist/default/ui/menu/menu-radio-group-element.js.map +1 -1
  416. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  417. package/dist/default/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  418. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
  419. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
  420. package/dist/default/ui/poster/poster-element.js +138 -8
  421. package/dist/default/ui/poster/poster-element.js.map +1 -1
  422. package/dist/default/ui/quality-radio-group/quality-radio-group-element.js +1 -1
  423. package/dist/default/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
  424. package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
  425. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
  426. package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
  427. package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
  428. package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
  429. package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
  430. package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
  431. package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
  432. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
  433. package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
  434. package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
  435. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
  436. package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
  437. package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
  438. package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
  439. package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
  440. package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  441. package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
  442. package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
  443. package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
  444. package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  445. package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  446. package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
  447. package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  448. package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
  449. package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
  450. package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  451. package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  452. package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
  453. package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
  454. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  455. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  456. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  457. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  458. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +1 -1
  459. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -1
  460. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +1 -1
  461. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -1
  462. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +1 -1
  463. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -1
  464. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +1 -1
  465. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -1
  466. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  467. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  468. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  469. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  470. package/dist/dev/define/audio/minimal-skin.css +117 -118
  471. package/dist/dev/define/audio/skin.css +95 -99
  472. package/dist/dev/define/live-audio/minimal-skin.css +117 -118
  473. package/dist/dev/define/live-audio/skin.css +95 -99
  474. package/dist/dev/define/live-video/minimal-skin.css +158 -137
  475. package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -1
  476. package/dist/dev/define/live-video/minimal-skin.js +3 -1
  477. package/dist/dev/define/live-video/minimal-skin.js.map +1 -1
  478. package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  479. package/dist/dev/define/live-video/minimal-skin.tailwind.js +3 -1
  480. package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -1
  481. package/dist/dev/define/live-video/skin.css +120 -106
  482. package/dist/dev/define/live-video/skin.d.ts.map +1 -1
  483. package/dist/dev/define/live-video/skin.js +3 -1
  484. package/dist/dev/define/live-video/skin.js.map +1 -1
  485. package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -1
  486. package/dist/dev/define/live-video/skin.tailwind.js +4 -2
  487. package/dist/dev/define/live-video/skin.tailwind.js.map +1 -1
  488. package/dist/dev/define/ui/gesture.d.ts +8 -0
  489. package/dist/dev/define/ui/gesture.d.ts.map +1 -0
  490. package/dist/dev/define/ui/gesture.js +7 -0
  491. package/dist/dev/define/ui/gesture.js.map +1 -0
  492. package/dist/dev/define/video/minimal-skin.css +158 -137
  493. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  494. package/dist/dev/define/video/minimal-skin.js +3 -1
  495. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  496. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  497. package/dist/dev/define/video/minimal-skin.tailwind.js +3 -1
  498. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  499. package/dist/dev/define/video/skin.css +120 -106
  500. package/dist/dev/define/video/skin.d.ts.map +1 -1
  501. package/dist/dev/define/video/skin.js +3 -1
  502. package/dist/dev/define/video/skin.js.map +1 -1
  503. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  504. package/dist/dev/define/video/skin.tailwind.js +4 -2
  505. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  506. package/dist/dev/media/hls-background-video/media.d.ts +16 -0
  507. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
  508. package/dist/dev/media/hls-background-video/media.js +18 -0
  509. package/dist/dev/media/hls-background-video/media.js.map +1 -1
  510. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -1
  511. package/dist/dev/media/tiktok-video/media.js +10 -7
  512. package/dist/dev/media/tiktok-video/media.js.map +1 -1
  513. package/dist/dev/packages/icons/dist/element/default/icons.js +1 -1
  514. package/dist/dev/packages/icons/dist/element/default/icons.js.map +1 -1
  515. package/dist/dev/packages/icons/dist/element/minimal/icons.js +1 -1
  516. package/dist/dev/packages/icons/dist/element/minimal/icons.js.map +1 -1
  517. package/dist/dev/packages/icons/dist/html/default/airplay-exit.js +1 -1
  518. package/dist/dev/packages/icons/dist/html/default/airplay-exit.js.map +1 -1
  519. package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js +1 -1
  520. package/dist/dev/packages/icons/dist/html/minimal/airplay-exit.js.map +1 -1
  521. package/dist/dev/packages/icons/dist/render/default/index.js +1 -1
  522. package/dist/dev/packages/icons/dist/render/default/index.js.map +1 -1
  523. package/dist/dev/packages/icons/dist/render/minimal/index.js +1 -1
  524. package/dist/dev/packages/icons/dist/render/minimal/index.js.map +1 -1
  525. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js +3 -1
  526. package/dist/dev/packages/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  527. package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js +8 -1
  528. package/dist/dev/packages/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  529. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js +13 -13
  530. package/dist/dev/packages/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  531. package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  532. package/dist/dev/packages/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  533. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  534. package/dist/dev/packages/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  535. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  536. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  537. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  538. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  539. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  540. package/dist/dev/packages/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  541. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  542. package/dist/dev/packages/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  543. package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  544. package/dist/dev/packages/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  545. package/dist/dev/store/provider-mixin.d.ts.map +1 -1
  546. package/dist/dev/store/provider-mixin.js +24 -8
  547. package/dist/dev/store/provider-mixin.js.map +1 -1
  548. package/dist/dev/store/types.d.ts +2 -2
  549. package/dist/dev/store/types.d.ts.map +1 -1
  550. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js +1 -1
  551. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group-element.js.map +1 -1
  552. package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js +1 -1
  553. package/dist/dev/ui/captions-radio-group/captions-radio-group-element.js.map +1 -1
  554. package/dist/dev/ui/gesture/gesture-element.d.ts +7 -7
  555. package/dist/dev/ui/gesture/gesture-element.d.ts.map +1 -1
  556. package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
  557. package/dist/dev/ui/hotkey/hotkey-element.d.ts +6 -6
  558. package/dist/dev/ui/hotkey/hotkey-element.d.ts.map +1 -1
  559. package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
  560. package/dist/dev/ui/menu/context.d.ts +8 -8
  561. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  562. package/dist/dev/ui/menu/context.js.map +1 -1
  563. package/dist/dev/ui/menu/menu-element.d.ts.map +1 -1
  564. package/dist/dev/ui/menu/menu-element.js +28 -27
  565. package/dist/dev/ui/menu/menu-element.js.map +1 -1
  566. package/dist/dev/ui/menu/menu-radio-group-element.d.ts +1 -1
  567. package/dist/dev/ui/menu/menu-radio-group-element.d.ts.map +1 -1
  568. package/dist/dev/ui/menu/menu-radio-group-element.js +14 -14
  569. package/dist/dev/ui/menu/menu-radio-group-element.js.map +1 -1
  570. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
  571. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js +1 -2
  572. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.js.map +1 -1
  573. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js +1 -1
  574. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group-element.js.map +1 -1
  575. package/dist/dev/ui/poster/poster-element.d.ts +20 -18
  576. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
  577. package/dist/dev/ui/poster/poster-element.js +145 -8
  578. package/dist/dev/ui/poster/poster-element.js.map +1 -1
  579. package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js +1 -1
  580. package/dist/dev/ui/quality-radio-group/quality-radio-group-element.js.map +1 -1
  581. package/dist/dev/ui/slider/slider-preview-element.d.ts +2 -2
  582. package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
  583. package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
  584. package/docs/README.md +1 -1
  585. package/docs/concepts/features.md +2 -2
  586. package/docs/concepts/media-sources.md +79 -1
  587. package/docs/concepts/skins.md +122 -108
  588. package/docs/how-to/build-your-own-component.md +1 -1
  589. package/docs/how-to/customize-skins.md +499 -469
  590. package/docs/how-to/migrate-from-media-chrome.md +359 -0
  591. package/docs/how-to/migrate-from-mux-player.md +535 -0
  592. package/docs/how-to/migrate-from-plyr.md +394 -0
  593. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  594. package/docs/llms.txt +9 -0
  595. package/docs/reference/feature-volume.md +3 -1
  596. package/docs/reference/menu.md +3 -19
  597. package/docs/reference/mute-button.md +34 -0
  598. package/docs/reference/popover.md +2 -2
  599. package/docs/reference/poster.md +211 -21
  600. package/docs/reference/slider.md +1 -1
  601. package/docs/reference/time-slider.md +1 -1
  602. package/docs/reference/tooltip.md +6 -6
  603. package/docs/reference/volume-slider.md +2 -2
  604. package/package.json +15 -9
  605. package/cdn/adapter-Bk03SAxn.js +0 -2
  606. package/cdn/adapter-Bk03SAxn.js.map +0 -1
  607. package/cdn/adapter-XTen-YVQ.js.map +0 -1
  608. package/cdn/bn-DdelKD_n.js +0 -108
  609. package/cdn/bn-DdelKD_n.js.map +0 -1
  610. package/cdn/bn-YS8ruMcO.js +0 -2
  611. package/cdn/bn-YS8ruMcO.js.map +0 -1
  612. package/cdn/compounds-CCvdpvge.js.map +0 -1
  613. package/cdn/compounds-CJ6SbYAh.js +0 -8
  614. package/cdn/compounds-CJ6SbYAh.js.map +0 -1
  615. package/cdn/create-player-BHFyOnWi.js.map +0 -1
  616. package/cdn/create-player-CbpxjDaZ.js +0 -14
  617. package/cdn/create-player-CbpxjDaZ.js.map +0 -1
  618. package/cdn/default-BqQDVloS.js.map +0 -1
  619. package/cdn/default-CXWVp2oG.js +0 -2
  620. package/cdn/default-CXWVp2oG.js.map +0 -1
  621. package/cdn/default-Dw6cIEqT.js +0 -2
  622. package/cdn/default-Dw6cIEqT.js.map +0 -1
  623. package/cdn/default-I2LasfxC.js.map +0 -1
  624. package/cdn/error-surface-DCT1m2p1.js +0 -2
  625. package/cdn/error-surface-DCT1m2p1.js.map +0 -1
  626. package/cdn/error-surface-drmCvBVW.js.map +0 -1
  627. package/cdn/gesture-element-BNfMI8eh.js.map +0 -1
  628. package/cdn/gesture-element-CG-Sx_5t.js.map +0 -1
  629. package/cdn/hls-js-6lW7L4th.js +0 -2
  630. package/cdn/hls-js-DCQzjzB5.js +0 -2
  631. package/cdn/i18n-DfKGl5Rh.js +0 -2
  632. package/cdn/live-button-element-B_y-ZJBy.js.map +0 -1
  633. package/cdn/live-button-element-CWfkQUoy.js +0 -2
  634. package/cdn/media-5ODYtX1-.js +0 -2
  635. package/cdn/media-5ODYtX1-.js.map +0 -1
  636. package/cdn/media-BTipOcKo.js +0 -2
  637. package/cdn/media-B_gQXwri.js.map +0 -1
  638. package/cdn/media-CPWNSZFX.js +0 -41
  639. package/cdn/media-CPWNSZFX.js.map +0 -1
  640. package/cdn/media-CbWsJJhU.js +0 -2
  641. package/cdn/media-Cp3acYc8.js.map +0 -1
  642. package/cdn/media-Dq4zmIJa2.js +0 -2
  643. package/cdn/media-Dq4zmIJa2.js.map +0 -1
  644. package/cdn/media-suYcjCG22.js +0 -445
  645. package/cdn/media-suYcjCG22.js.map +0 -1
  646. package/cdn/minimal-BedCvMBG.js +0 -2
  647. package/cdn/minimal-BedCvMBG.js.map +0 -1
  648. package/cdn/minimal-BoP112ye.js +0 -2
  649. package/cdn/minimal-BoP112ye.js.map +0 -1
  650. package/cdn/minimal-DLosvq31.js.map +0 -1
  651. package/cdn/minimal-DQCLKRyR.js.map +0 -1
  652. package/cdn/minimal-ui-AFk6Ut5f.js +0 -2
  653. package/cdn/minimal-ui-BVKu9LWj.js +0 -2
  654. package/cdn/mixin-CkNZwQXF.js.map +0 -1
  655. package/cdn/mixin-DiB7dIef.js +0 -2
  656. package/cdn/player-B0ccW5-n.js +0 -2
  657. package/cdn/player-iIewo8Y9.js +0 -2
  658. package/cdn/player-srq1RGTj.js +0 -2
  659. package/cdn/poster-element-BP1Ypgbf.js.map +0 -1
  660. package/cdn/poster-element-S-rr412t.js +0 -2
  661. package/cdn/poster-element-S-rr412t.js.map +0 -1
  662. package/cdn/seek-button-element-DxLmm58Y.js +0 -2
  663. package/cdn/seek-button-element-DxLmm58Y.js.map +0 -1
  664. package/cdn/seek-button-element-TErrbilI.js.map +0 -1
  665. package/cdn/select-tracks-nRPBa1NC.js.map +0 -1
  666. package/cdn/select-tracks-xV1s28xD.js +0 -59
  667. package/cdn/select-tracks-xV1s28xD.js.map +0 -1
  668. package/cdn/text-element-Bsyglab8.js +0 -2
  669. package/cdn/time-slider-chapters-element-DPgaLdBt.js.map +0 -1
  670. package/cdn/time-slider-chapters-element-MdlcovBu.js +0 -2
  671. package/cdn/time-slider-chapters-element-MdlcovBu.js.map +0 -1
  672. package/cdn/translate-text-BPMWpzFm.js +0 -2
  673. package/cdn/translate-text-BPMWpzFm.js.map +0 -1
  674. package/cdn/translate-text-DP0CzUCC.js.map +0 -1
  675. package/cdn/ui-CecDxhTX.js +0 -2
  676. package/cdn/ui-ChWM6Xz2.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"audio-track-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/audio-track-radio-group/audio-track-radio-group-element.ts"],"sourcesContent":["import {\n AudioTrackRadioGroupCore,\n AudioTrackRadioGroupDataAttrs,\n type AudioTrackRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectAudioTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class AudioTrackRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-audio-track-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = AudioTrackRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new AudioTrackRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectAudioTrack);\n readonly #options = new RadioOptionsController<AudioTrackRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: AudioTrackRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuMetadata(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, AudioTrackRadioGroupDataAttrs);\n }\n}\n\nexport namespace AudioTrackRadioGroupElement {\n export type State = AudioTrackRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,8BAAb,cAAiD,sBAAsB;;;EAS1D,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,yBAAyB,aAAa;EAEnC,KAAA,QAAA,IAAI,yBAAyB;EAC7B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,gBAAgB;EAC7D,KAAA,WAAA,IAAI,uBAAmD,MAAM;GAC/E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EArBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA+C;EAEnD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,oBAAoB,MAAM,UAAU,MAAM,YAAY;EAC7D;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,6BAA6B;CAC3E;AACF"}
1
+ {"version":3,"file":"audio-track-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/audio-track-radio-group/audio-track-radio-group-element.ts"],"sourcesContent":["import {\n AudioTrackRadioGroupCore,\n AudioTrackRadioGroupDataAttrs,\n type AudioTrackRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectAudioTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class AudioTrackRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-audio-track-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = AudioTrackRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new AudioTrackRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectAudioTrack);\n readonly #options = new RadioOptionsController<AudioTrackRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: AudioTrackRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuTriggerState(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, AudioTrackRadioGroupDataAttrs);\n }\n}\n\nexport namespace AudioTrackRadioGroupElement {\n export type State = AudioTrackRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,8BAAb,cAAiD,sBAAsB;;;EAS1D,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,yBAAyB,aAAa;EAEnC,KAAA,QAAA,IAAI,yBAAyB;EAC7B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,gBAAgB;EAC7D,KAAA,WAAA,IAAI,uBAAmD,MAAM;GAC/E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EArBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA+C;EAEnD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,wBAAwB,MAAM,UAAU,MAAM,YAAY;EACjE;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,6BAA6B;CAC3E;AACF"}
@@ -56,7 +56,7 @@ var CaptionsRadioGroupElement = class extends MenuRadioGroupElement {
56
56
  state = this.#core.getState();
57
57
  this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));
58
58
  this.#options.sync(state, this.#i18n.value, this.#i18n.locale);
59
- this.publishMenuMetadata(state.disabled, state.availability);
59
+ this.publishMenuTriggerState(state.disabled, state.availability);
60
60
  }
61
61
  super.update(changed);
62
62
  if (state) applyStateDataAttrs(this, state, CaptionsRadioGroupDataAttrs);
@@ -1 +1 @@
1
- {"version":3,"file":"captions-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/captions-radio-group/captions-radio-group-element.ts"],"sourcesContent":["import { CaptionsRadioGroupCore, CaptionsRadioGroupDataAttrs, type CaptionsRadioGroupOption } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectTextTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class CaptionsRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-captions-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = CaptionsRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new CaptionsRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectTextTrack);\n readonly #options = new RadioOptionsController<CaptionsRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: CaptionsRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuMetadata(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, CaptionsRadioGroupDataAttrs);\n }\n}\n\nexport namespace CaptionsRadioGroupElement {\n export type State = CaptionsRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,4BAAb,cAA+C,sBAAsB;;;EASxD,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,uBAAuB,aAAa;EAEjC,KAAA,QAAA,IAAI,uBAAuB;EAC3B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,eAAe;EAC5D,KAAA,WAAA,IAAI,uBAAiD,MAAM;GAC7E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EArBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA6C;EAEjD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,oBAAoB,MAAM,UAAU,MAAM,YAAY;EAC7D;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,2BAA2B;CACzE;AACF"}
1
+ {"version":3,"file":"captions-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/captions-radio-group/captions-radio-group-element.ts"],"sourcesContent":["import { CaptionsRadioGroupCore, CaptionsRadioGroupDataAttrs, type CaptionsRadioGroupOption } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectTextTrack } from '@videojs/core/dom';\nimport { type Text, translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class CaptionsRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-captions-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n label: { type: String },\n } satisfies PropertyDeclarationMap<'value' | 'label' | 'disabled'>;\n\n disabled = false;\n label: Text | string = '';\n formatTrack = CaptionsRadioGroupCore.defaultProps.formatTrack;\n\n readonly #core = new CaptionsRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectTextTrack);\n readonly #options = new RadioOptionsController<CaptionsRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-track', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: CaptionsRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatTrack: this.formatTrack, disabled: this.disabled, label: this.label });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value));\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuTriggerState(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, CaptionsRadioGroupDataAttrs);\n }\n}\n\nexport namespace CaptionsRadioGroupElement {\n export type State = CaptionsRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,4BAAb,cAA+C,sBAAsB;;;EASxD,KAAA,WAAA;EACY,KAAA,QAAA;EACT,KAAA,cAAA,uBAAuB,aAAa;EAEjC,KAAA,QAAA,IAAI,uBAAuB;EAC3B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,eAAe;EAC5D,KAAA,WAAA,IAAI,uBAAiD,MAAM;GAC7E,oBAAoB,MAAM,WAAW,KAAK,aAAa,cAAc,OAAO,KAAK;GACjF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EArBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;GAC1B,OAAO,EAAE,MAAM,OAAO;EACxB;;CAMA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAA6C;EAEjD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,aAAa,KAAK;IAAa,UAAU,KAAK;IAAU,OAAO,KAAK;GAAM,CAAC;GACjG,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBAAsB,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,KAAK,CAAC;GACtF,KAAKC,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,wBAAwB,MAAM,UAAU,MAAM,YAAY;EACjE;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,2BAA2B;CACzE;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"gesture-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/gesture/gesture-element.ts"],"sourcesContent":["import {\n createDoubleTapGesture,\n createTapGesture,\n type GestureActionName,\n type GesturePointerType,\n type GestureRegion,\n resolveGestureAction,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class GestureElement extends MediaElement {\n static readonly tagName = 'media-gesture';\n\n static override properties: PropertyDeclarationMap = {\n type: { type: String },\n action: { type: String },\n value: { type: Number },\n pointer: { type: String },\n region: { type: String },\n disabled: { type: Boolean },\n };\n\n type: 'tap' | 'doubletap' | (string & {}) = '';\n action: GestureActionName | (string & {}) = '';\n value: number | undefined = undefined;\n pointer: GesturePointerType | undefined = undefined;\n region: GestureRegion | undefined = undefined;\n disabled = false;\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.type || !this.action || !store || !container) return;\n\n const resolver = resolveGestureAction(this.action);\n if (!resolver) return;\n\n const { value } = this;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = {\n pointer: this.pointer,\n region: this.region,\n disabled: this.disabled,\n action: this.action,\n value: this.value,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AAeA,IAAa,iBAAb,cAAoC,aAAa;;;EAYH,KAAA,OAAA;EACA,KAAA,SAAA;EAChB,KAAA,QAAA,KAAA;EACc,KAAA,UAAA,KAAA;EACN,KAAA,SAAA,KAAA;EACzB,KAAA,WAAA;EAEQ,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAxBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,SAAS,EAAE,MAAM,OAAO;GACxB,QAAQ,EAAE,MAAM,OAAO;GACvB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CASA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAKE,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAKA,YAAY;GACjB,KAAKD,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAKF,QAAQ;EAC3B,MAAM,YAAY,KAAKC,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,qBAAqB,KAAK,MAAM;EACjD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,UAAU;EAElB,MAAM,cAAc,UAAwB;GAC1C,SAAS;IAAE;IAAO;IAAO;GAAM,CAAC;EAClC;EAEA,MAAM,UAAU;GACd,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,OAAO,KAAK;EACd;EAEA,IAAI,KAAK,SAAS,aAChB,KAAKG,WAAW,uBAAuB,WAAW,YAAY,OAAO;OAErE,KAAKA,WAAW,iBAAiB,WAAW,YAAY,OAAO;CAEnE;CAEA,cAAoB;EAClB,KAAKA,WAAW;EAChB,KAAKA,WAAW;CAClB;AACF"}
1
+ {"version":3,"file":"gesture-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/gesture/gesture-element.ts"],"sourcesContent":["import type { GestureProps } from '@videojs/core';\nimport { createDoubleTapGesture, createTapGesture, resolveGestureAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class GestureElement extends MediaElement {\n static readonly tagName = 'media-gesture';\n\n static override properties: PropertyDeclarationMap = {\n type: { type: String },\n action: { type: String },\n value: { type: Number },\n pointer: { type: String },\n region: { type: String },\n disabled: { type: Boolean },\n };\n\n type: GestureProps['type'] | '' = '';\n action: GestureProps['action'] = '';\n value: GestureProps['value'] = undefined;\n pointer: GestureProps['pointer'] = undefined;\n region: GestureProps['region'] = undefined;\n disabled: NonNullable<GestureProps['disabled']> = false;\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.type || !this.action || !store || !container) return;\n\n const resolver = resolveGestureAction(this.action);\n if (!resolver) return;\n\n const { value } = this;\n\n const onActivate = (event: PointerEvent) => {\n resolver({ store, value, event });\n };\n\n const options = {\n pointer: this.pointer,\n region: this.region,\n disabled: this.disabled,\n action: this.action,\n value: this.value,\n };\n\n if (this.type === 'doubletap') {\n this.#cleanup = createDoubleTapGesture(container, onActivate, options);\n } else {\n this.#cleanup = createTapGesture(container, onActivate, options);\n }\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AASA,IAAa,iBAAb,cAAoC,aAAa;;;EAYb,KAAA,OAAA;EACD,KAAA,SAAA;EACF,KAAA,QAAA,KAAA;EACI,KAAA,UAAA,KAAA;EACF,KAAA,SAAA,KAAA;EACiB,KAAA,WAAA;EAE/B,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAxBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,SAAS,EAAE,MAAM,OAAO;GACxB,QAAQ,EAAE,MAAM,OAAO;GACvB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CASA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAKE,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAKA,YAAY;GACjB,KAAKD,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAKF,QAAQ;EAC3B,MAAM,YAAY,KAAKC,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,qBAAqB,KAAK,MAAM;EACjD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,UAAU;EAElB,MAAM,cAAc,UAAwB;GAC1C,SAAS;IAAE;IAAO;IAAO;GAAM,CAAC;EAClC;EAEA,MAAM,UAAU;GACd,SAAS,KAAK;GACd,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,OAAO,KAAK;EACd;EAEA,IAAI,KAAK,SAAS,aAChB,KAAKG,WAAW,uBAAuB,WAAW,YAAY,OAAO;OAErE,KAAKA,WAAW,iBAAiB,WAAW,YAAY,OAAO;CAEnE;CAEA,cAAoB;EAClB,KAAKA,WAAW;EAChB,KAAKA,WAAW;CAClB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hotkey-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/hotkey/hotkey-element.ts"],"sourcesContent":["import { createHotkey, type HotkeyActionName, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class HotkeyElement extends MediaElement {\n static readonly tagName = 'media-hotkey';\n\n static override properties: PropertyDeclarationMap = {\n keys: { type: String },\n action: { type: String },\n value: { type: Number },\n disabled: { type: Boolean },\n target: { type: String },\n };\n\n keys = '';\n action: HotkeyActionName | (string & {}) = '';\n value: number | undefined = undefined;\n disabled = false;\n target: 'player' | 'document' = 'player';\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.keys || !this.action || !store || !container) return;\n\n const resolver = resolveHotkeyAction(this.action);\n if (!resolver) return;\n\n const { value, action } = this;\n\n this.#cleanup = createHotkey(container, {\n keys: this.keys,\n action,\n value,\n target: this.target,\n disabled: this.disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,gBAAb,cAAmC,aAAa;;;EAWvC,KAAA,OAAA;EACoC,KAAA,SAAA;EACf,KAAA,QAAA,KAAA;EACjB,KAAA,WAAA;EACqB,KAAA,SAAA;EAEb,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAtBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,QAAQ,EAAE,MAAM,OAAO;EACzB;;CAQA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAKE,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAKA,YAAY;GACjB,KAAKD,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAKF,QAAQ;EAC3B,MAAM,YAAY,KAAKC,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,oBAAoB,KAAK,MAAM;EAChD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,OAAO,WAAW;EAE1B,KAAKG,WAAW,aAAa,WAAW;GACtC,MAAM,KAAK;GACX;GACA;GACA,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,YAAY,CAAC,qBAAqB,MAAM;GACxC,aAAa,QAAQ,QAAQ;IAC3B,SAAS;KAAE;KAAO;KAAK;IAAM,CAAC;GAChC;EACF,CAAC;CACH;CAEA,cAAoB;EAClB,KAAKA,WAAW;EAChB,KAAKA,WAAW;CAClB;AACF"}
1
+ {"version":3,"file":"hotkey-element.js","names":["#player","#container","#register","#unregister","#cleanup"],"sources":["../../../../src/ui/hotkey/hotkey-element.ts"],"sourcesContent":["import type { HotkeyProps } from '@videojs/core';\nimport { createHotkey, isHotkeyToggleAction, resolveHotkeyAction } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class HotkeyElement extends MediaElement {\n static readonly tagName = 'media-hotkey';\n\n static override properties: PropertyDeclarationMap = {\n keys: { type: String },\n action: { type: String },\n value: { type: Number },\n disabled: { type: Boolean },\n target: { type: String },\n };\n\n keys: HotkeyProps['keys'] = '';\n action: HotkeyProps['action'] = '';\n value: HotkeyProps['value'] = undefined;\n disabled: NonNullable<HotkeyProps['disabled']> = false;\n target: NonNullable<HotkeyProps['target']> = 'player';\n\n readonly #player = new PlayerController(this, playerContext);\n readonly #container = new ContextConsumer(this, {\n context: containerContext,\n callback: () => this.requestUpdate(),\n subscribe: true,\n });\n #cleanup: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.style.display = 'none';\n this.#register();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#unregister();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n // Re-register when attributes change.\n if (this.isConnected) {\n this.#unregister();\n this.#register();\n }\n }\n\n #register(): void {\n const store = this.#player.value;\n const container = this.#container.value?.container;\n if (!this.keys || !this.action || !store || !container) return;\n\n const resolver = resolveHotkeyAction(this.action);\n if (!resolver) return;\n\n const { value, action } = this;\n\n this.#cleanup = createHotkey(container, {\n keys: this.keys,\n action,\n value,\n target: this.target,\n disabled: this.disabled,\n repeatable: !isHotkeyToggleAction(action),\n onActivate: (_event, key) => {\n resolver({ store, key, value });\n },\n });\n }\n\n #unregister(): void {\n this.#cleanup?.();\n this.#cleanup = null;\n }\n}\n"],"mappings":";;;;;;AASA,IAAa,gBAAb,cAAmC,aAAa;;;EAWlB,KAAA,OAAA;EACI,KAAA,SAAA;EACF,KAAA,QAAA,KAAA;EACmB,KAAA,WAAA;EACJ,KAAA,SAAA;EAE1B,KAAA,UAAA,IAAI,iBAAiB,MAAM,aAAa;EACrC,KAAA,aAAA,IAAI,gBAAgB,MAAM;GAC9C,SAAS;GACT,gBAAgB,KAAK,cAAc;GACnC,WAAW;EACb,CAAC;EAC+B,KAAA,WAAA;;;EAtBN,KAAA,UAAA;;;EAE2B,KAAA,aAAA;GACnD,MAAM,EAAE,MAAM,OAAO;GACrB,QAAQ,EAAE,MAAM,OAAO;GACvB,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,QAAQ,EAAE,MAAM,OAAO;EACzB;;CAQA;CACA;CAKA;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,MAAM,UAAU;EACrB,KAAKE,UAAU;CACjB;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAKC,YAAY;CACnB;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,KAAK,aAAa;GACpB,KAAKA,YAAY;GACjB,KAAKD,UAAU;EACjB;CACF;CAEA,YAAkB;EAChB,MAAM,QAAQ,KAAKF,QAAQ;EAC3B,MAAM,YAAY,KAAKC,WAAW,OAAO;EACzC,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,WAAW;EAExD,MAAM,WAAW,oBAAoB,KAAK,MAAM;EAChD,IAAI,CAAC,UAAU;EAEf,MAAM,EAAE,OAAO,WAAW;EAE1B,KAAKG,WAAW,aAAa,WAAW;GACtC,MAAM,KAAK;GACX;GACA;GACA,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,YAAY,CAAC,qBAAqB,MAAM;GACxC,aAAa,QAAQ,QAAQ;IAC3B,SAAS;KAAE;KAAO;KAAK;IAAM,CAAC;GAChC;EACF,CAAC;CACH;CAEA,cAAoB;EAClB,KAAKA,WAAW;EAChB,KAAKA,WAAW;CAClB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/menu/context.ts"],"sourcesContent":["import type { MenuState, StateAttrMap } from '@videojs/core';\nimport type { MenuApi } from '@videojs/core/dom';\nimport { createContext } from '@videojs/element/context';\n\nexport interface MenuContextValue {\n menu: MenuApi;\n state: MenuState;\n stateAttrMap: StateAttrMap<MenuState>;\n /** Publish generic display and interaction state to this submenu's trigger. */\n setTriggerMetadata: (metadata: MenuTriggerMetadata) => void;\n}\n\nexport interface MenuTriggerMetadata {\n hint: string;\n disabled: boolean;\n availability?: 'available' | 'unavailable' | 'unsupported' | undefined;\n}\n\nexport interface MenuGroupContextValue {\n registerLabel: (id: string) => () => void;\n}\n\nconst MENU_CONTEXT_KEY = Symbol('@videojs/menu');\nconst MENU_GROUP_CONTEXT_KEY = Symbol('@videojs/menu-group');\n\nexport const menuContext = createContext<MenuContextValue>(MENU_CONTEXT_KEY);\nexport const menuGroupContext = createContext<MenuGroupContextValue>(MENU_GROUP_CONTEXT_KEY);\n\nexport {\n type RadioGroupContextValue as MenuRadioGroupContextValue,\n radioGroupContext as menuRadioGroupContext,\n} from '../radio-group/context';\n"],"mappings":";;;AAsBA,MAAM,mBAAmB,OAAO,eAAe;AAC/C,MAAM,yBAAyB,OAAO,qBAAqB;AAE3D,MAAa,cAAc,cAAgC,gBAAgB;AAC3E,MAAa,mBAAmB,cAAqC,sBAAsB"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/menu/context.ts"],"sourcesContent":["import type { MenuState, StateAttrMap } from '@videojs/core';\nimport type { MenuApi } from '@videojs/core/dom';\nimport { createContext } from '@videojs/element/context';\n\nexport interface MenuTriggerState {\n hint: string;\n disabled: boolean;\n availability?: 'available' | 'unavailable' | 'unsupported' | undefined;\n}\n\nexport interface MenuContextValue {\n menu: MenuApi;\n state: MenuState;\n stateAttrMap: StateAttrMap<MenuState>;\n /** Publish display and interaction state to this submenu's trigger. */\n setTriggerState: (state: MenuTriggerState) => void;\n}\n\nexport interface MenuGroupContextValue {\n registerLabel: (id: string) => () => void;\n}\n\nconst MENU_CONTEXT_KEY = Symbol('@videojs/menu');\nconst MENU_GROUP_CONTEXT_KEY = Symbol('@videojs/menu-group');\n\nexport const menuContext = createContext<MenuContextValue>(MENU_CONTEXT_KEY);\nexport const menuGroupContext = createContext<MenuGroupContextValue>(MENU_GROUP_CONTEXT_KEY);\n\nexport {\n type RadioGroupContextValue as MenuRadioGroupContextValue,\n radioGroupContext as menuRadioGroupContext,\n} from '../radio-group/context';\n"],"mappings":";;;AAsBA,MAAM,mBAAmB,OAAO,eAAe;AAC/C,MAAM,yBAAyB,OAAO,qBAAqB;AAE3D,MAAa,cAAc,cAAgC,gBAAgB;AAC3E,MAAa,mBAAmB,cAAqC,sBAAsB"}
@@ -10,7 +10,7 @@ import { tryHidePopover, tryShowPopover } from "@videojs/utils/dom";
10
10
  import { SnapshotController } from "@videojs/store/html";
11
11
  import { MenuCore, MenuDataAttrs, POPUP_HOST_ATTR } from "@videojs/core";
12
12
  //#region src/ui/menu/menu-element.ts
13
- const defaultTriggerMetadata = {
13
+ const defaultTriggerState = {
14
14
  hint: "",
15
15
  disabled: false
16
16
  };
@@ -44,8 +44,8 @@ var MenuElement = class extends MediaElement {
44
44
  this.#triggerAbort = null;
45
45
  this.#cleanupSizeObserver = null;
46
46
  this.#currentTrigger = null;
47
- this.#metadataTrigger = null;
48
- this.#triggerMetadata = defaultTriggerMetadata;
47
+ this.#stateTrigger = null;
48
+ this.#triggerState = defaultTriggerState;
49
49
  this.#releaseControlsLock = null;
50
50
  this.#registeredParentMenu = null;
51
51
  this.#cleanupParentRegistration = null;
@@ -67,10 +67,10 @@ var MenuElement = class extends MediaElement {
67
67
  this.#handleContentFocusOut = (event) => {
68
68
  this.#menu?.contentProps.onFocusOut(event);
69
69
  };
70
- this.#setTriggerMetadata = (metadata) => {
71
- if (metadata.hint === this.#triggerMetadata.hint && metadata.disabled === this.#triggerMetadata.disabled && metadata.availability === this.#triggerMetadata.availability) return;
72
- this.#triggerMetadata = metadata;
73
- if (metadata.disabled && this.open && this.#parentCtx.value) this.close("imperative-action");
70
+ this.#setTriggerState = (triggerState) => {
71
+ if (triggerState.hint === this.#triggerState.hint && triggerState.disabled === this.#triggerState.disabled && triggerState.availability === this.#triggerState.availability) return;
72
+ this.#triggerState = triggerState;
73
+ if (triggerState.disabled && this.open && this.#parentCtx.value) this.close("imperative-action");
74
74
  this.requestUpdate();
75
75
  };
76
76
  }
@@ -111,8 +111,8 @@ var MenuElement = class extends MediaElement {
111
111
  #triggerAbort;
112
112
  #cleanupSizeObserver;
113
113
  #currentTrigger;
114
- #metadataTrigger;
115
- #triggerMetadata;
114
+ #stateTrigger;
115
+ #triggerState;
116
116
  #releaseControlsLock;
117
117
  #registeredParentMenu;
118
118
  #cleanupParentRegistration;
@@ -151,7 +151,7 @@ var MenuElement = class extends MediaElement {
151
151
  super.disconnectedCallback();
152
152
  this.#cleanupSizeObserver?.();
153
153
  this.#cleanupSizeObserver = null;
154
- this.#syncTriggerMetadata(null);
154
+ this.#syncTriggerState(null);
155
155
  this.#cleanupTrigger();
156
156
  this.#cleanupParentRegistration?.();
157
157
  this.#cleanupParentRegistration = null;
@@ -171,7 +171,6 @@ var MenuElement = class extends MediaElement {
171
171
  super.willUpdate(changed);
172
172
  if (!this.hasUpdated && this.defaultOpen && !this.open) this.open = true;
173
173
  const parentCtx = this.#parentCtx.value ?? null;
174
- const isSubmenu = parentCtx !== null;
175
174
  this.#syncParentRegistration(parentCtx);
176
175
  this.#core.setProps({
177
176
  open: this.open,
@@ -179,8 +178,7 @@ var MenuElement = class extends MediaElement {
179
178
  side: this.side,
180
179
  align: this.align,
181
180
  closeOnEscape: this.closeOnEscape,
182
- closeOnOutsideClick: this.closeOnOutsideClick,
183
- isSubmenu
181
+ closeOnOutsideClick: this.closeOnOutsideClick
184
182
  });
185
183
  if (this.#menu && changed.has("open")) this.#menu.syncOpen(this.open);
186
184
  }
@@ -190,7 +188,10 @@ var MenuElement = class extends MediaElement {
190
188
  const parentCtx = this.#parentCtx.value ?? null;
191
189
  const isSubmenu = parentCtx !== null;
192
190
  const input = this.#menu.input.current;
193
- this.#core.setInput(input);
191
+ this.#core.setInput({
192
+ ...input,
193
+ isSubmenu
194
+ });
194
195
  const state = this.#core.getState();
195
196
  if (!isSubmenu && state.open) this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;
196
197
  else this.#releaseControlsVisibilityLock();
@@ -200,7 +201,7 @@ var MenuElement = class extends MediaElement {
200
201
  menu: this.#menu,
201
202
  state,
202
203
  stateAttrMap: MenuDataAttrs,
203
- setTriggerMetadata: this.#setTriggerMetadata
204
+ setTriggerState: this.#setTriggerState
204
205
  });
205
206
  }
206
207
  #releaseControlsVisibilityLock() {
@@ -250,7 +251,7 @@ var MenuElement = class extends MediaElement {
250
251
  const triggerElement = this.parentElement?.querySelector(`[data-has-submenu][commandfor="${this.id}"]`);
251
252
  this.#menu?.setTriggerElement(triggerElement ?? null);
252
253
  if (triggerElement) applyElementProps(triggerElement, this.#core.getTriggerAttrs(state, this.id));
253
- this.#syncTriggerMetadata(triggerElement ?? null);
254
+ this.#syncTriggerState(triggerElement ?? null);
254
255
  this.removeAttribute(MenuDataAttrs.side);
255
256
  this.removeAttribute(MenuDataAttrs.align);
256
257
  applyStateDataAttrs(this, state, MenuDataAttrs);
@@ -270,22 +271,22 @@ var MenuElement = class extends MediaElement {
270
271
  }
271
272
  #handleContentKeyDown;
272
273
  #handleContentFocusOut;
273
- #setTriggerMetadata;
274
- #syncTriggerMetadata(trigger) {
275
- if (trigger !== this.#metadataTrigger) {
276
- this.#clearTriggerMetadata();
277
- this.#metadataTrigger = trigger;
274
+ #setTriggerState;
275
+ #syncTriggerState(trigger) {
276
+ if (trigger !== this.#stateTrigger) {
277
+ this.#clearTriggerState();
278
+ this.#stateTrigger = trigger;
278
279
  }
279
280
  if (!trigger) return;
280
281
  applyElementProps(trigger, {
281
- "aria-disabled": this.#triggerMetadata.disabled || isTriggerExplicitlyDisabled(trigger) ? "true" : void 0,
282
- "data-availability": this.#triggerMetadata.availability
282
+ "aria-disabled": this.#triggerState.disabled || isTriggerExplicitlyDisabled(trigger) ? "true" : void 0,
283
+ "data-availability": this.#triggerState.availability
283
284
  });
284
285
  const hint = trigger.querySelector("[data-part~=\"hint\"]");
285
- if (hint && hint.textContent !== this.#triggerMetadata.hint) hint.textContent = this.#triggerMetadata.hint;
286
+ if (hint && hint.textContent !== this.#triggerState.hint) hint.textContent = this.#triggerState.hint;
286
287
  }
287
- #clearTriggerMetadata() {
288
- const trigger = this.#metadataTrigger;
288
+ #clearTriggerState() {
289
+ const trigger = this.#stateTrigger;
289
290
  if (!trigger) return;
290
291
  applyElementProps(trigger, {
291
292
  "aria-disabled": isTriggerExplicitlyDisabled(trigger) ? "true" : void 0,
@@ -293,7 +294,7 @@ var MenuElement = class extends MediaElement {
293
294
  });
294
295
  const hint = trigger.querySelector("[data-part~=\"hint\"]");
295
296
  if (hint?.textContent) hint.textContent = "";
296
- this.#metadataTrigger = null;
297
+ this.#stateTrigger = null;
297
298
  }
298
299
  #syncTrigger(triggerElement) {
299
300
  if (triggerElement === this.#currentTrigger) return;
@@ -1 +1 @@
1
- {"version":3,"file":"menu-element.js","names":["#menu","#parentCtx","#triggerMetadata","#core","#provider","#position","#controlsState","#containerCtx","#popupGroupCtx","#disconnect","#handleContentKeyDown","#handleContentFocusOut","#snapshot","#releaseControlsVisibilityLock","#cleanupSizeObserver","#syncTriggerMetadata","#cleanupTrigger","#cleanupParentRegistration","#registeredParentMenu","#syncParentRegistration","#releaseControlsLock","#updateAsSubmenu","#updateAsRoot","#setTriggerMetadata","#syncTrigger","#currentTrigger","#submenuActive","#metadataTrigger","#clearTriggerMetadata","#triggerAbort"],"sources":["../../../../src/ui/menu/menu-element.ts"],"sourcesContent":["import { MenuCore, MenuDataAttrs, type MenuInput, POPUP_HOST_ATTR } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createMenu,\n createTransition,\n getRootPositionOptions,\n isMenuNavigationKey,\n type MenuApi,\n type MenuChangeDetails,\n type MenuOpenChangeReason,\n MenuPositioningCSSVars,\n observeMenuSize,\n type PositioningBoundary,\n selectControls,\n syncMenuSizeChain,\n type UIFocusEvent,\n type UIKeyboardEvent,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\nimport { SnapshotController } from '@videojs/store/html';\nimport { tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { popupGroupContext } from '../../player/popup-group-context';\nimport { MediaElement } from '../media-element';\nimport { PositionController } from '../position-controller';\nimport { type MenuContextValue, type MenuTriggerMetadata, menuContext } from './context';\n\nconst defaultTriggerMetadata: MenuTriggerMetadata = {\n hint: '',\n disabled: false,\n};\n\nexport class MenuElement extends MediaElement {\n static readonly tagName: string = 'media-menu';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n closeOnEscape: { type: Boolean, attribute: 'close-on-escape' },\n closeOnOutsideClick: { type: Boolean, attribute: 'close-on-outside-click' },\n boundary: { type: String },\n } satisfies PropertyDeclarationMap<\n 'open' | 'defaultOpen' | 'side' | 'align' | 'closeOnEscape' | 'closeOnOutsideClick' | 'boundary'\n >;\n\n open = MenuCore.defaultProps.open;\n defaultOpen = MenuCore.defaultProps.defaultOpen;\n side = MenuCore.defaultProps.side;\n align = MenuCore.defaultProps.align;\n closeOnEscape = MenuCore.defaultProps.closeOnEscape;\n closeOnOutsideClick = MenuCore.defaultProps.closeOnOutsideClick;\n boundary: PositioningBoundary = 'container';\n\n readonly #core = new MenuCore();\n readonly #provider = new ContextProvider(this, { context: menuContext });\n readonly #position = new PositionController(this);\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #containerCtx = new ContextConsumer(this, { context: containerContext, subscribe: true });\n readonly #popupGroupCtx = new ContextConsumer(this, { context: popupGroupContext });\n // Consume parent menu context — present when this is a nested (submenu) element.\n readonly #parentCtx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n #menu: MenuApi | null = null;\n #snapshot: SnapshotController<MenuInput> | null = null;\n #submenuActive = false;\n\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #cleanupSizeObserver: (() => void) | null = null;\n #currentTrigger: HTMLElement | null = null;\n #metadataTrigger: HTMLElement | null = null;\n #triggerMetadata = defaultTriggerMetadata;\n #releaseControlsLock: (() => void) | null = null;\n #registeredParentMenu: MenuApi | null = null;\n #cleanupParentRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.setAttribute(POPUP_HOST_ATTR, '');\n\n this.#disconnect = new AbortController();\n\n this.#menu = createMenu({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: MenuChangeDetails) => {\n const accepted = this.dispatchEvent(\n new CustomEvent('open-change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { open: nextOpen, ...details },\n })\n );\n if (accepted) this.open = nextOpen;\n },\n closeOnEscape: () => this.closeOnEscape,\n closeOnOutsideClick: () => this.closeOnOutsideClick,\n group: () => (this.#parentCtx.value ? undefined : this.#popupGroupCtx.value),\n });\n\n // The element itself is the content (popup) for root menus.\n // Submenu detection happens in update() once parent context is available.\n this.#menu.setContentElement(this);\n\n applyElementProps(\n this,\n { onKeyDown: this.#handleContentKeyDown, onFocusOut: this.#handleContentFocusOut },\n { signal: this.#disconnect.signal }\n );\n\n if (this.#snapshot) {\n this.#snapshot.track(this.#menu.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#menu.input);\n }\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#cleanupSizeObserver?.();\n this.#cleanupSizeObserver = null;\n this.#syncTriggerMetadata(null);\n this.#cleanupTrigger();\n this.#cleanupParentRegistration?.();\n this.#cleanupParentRegistration = null;\n this.#registeredParentMenu = null;\n this.#menu?.destroy();\n this.#menu = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n close(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.close(reason);\n }\n\n openMenu(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.open(reason);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (!this.hasUpdated && this.defaultOpen && !this.open) this.open = true;\n\n const parentCtx = this.#parentCtx.value ?? null;\n const isSubmenu = parentCtx !== null;\n this.#syncParentRegistration(parentCtx);\n\n this.#core.setProps({\n open: this.open,\n defaultOpen: this.defaultOpen,\n side: this.side,\n align: this.align,\n closeOnEscape: this.closeOnEscape,\n closeOnOutsideClick: this.closeOnOutsideClick,\n isSubmenu,\n });\n\n if (this.#menu && changed.has('open')) {\n this.#menu.syncOpen(this.open);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#menu) return;\n\n const parentCtx = this.#parentCtx.value ?? null;\n const isSubmenu = parentCtx !== null;\n\n const input = this.#menu.input.current;\n this.#core.setInput(input);\n const state = this.#core.getState();\n\n if (!isSubmenu && state.open) {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n } else {\n this.#releaseControlsVisibilityLock();\n }\n\n if (isSubmenu && parentCtx) {\n this.#updateAsSubmenu(state, parentCtx);\n } else {\n this.#updateAsRoot(state);\n }\n\n // Provide context to child parts.\n this.#provider.setValue({\n menu: this.#menu,\n state,\n stateAttrMap: MenuDataAttrs,\n setTriggerMetadata: this.#setTriggerMetadata,\n });\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n #syncParentRegistration(parentCtx: MenuContextValue | null): void {\n const parentMenu = parentCtx?.menu ?? null;\n if (parentMenu === this.#registeredParentMenu || !this.#menu) return;\n\n this.#cleanupParentRegistration?.();\n this.#registeredParentMenu = parentMenu;\n this.#cleanupParentRegistration = parentMenu?.registerSubmenu(this.#menu) ?? null;\n }\n\n #updateAsRoot(state: ReturnType<MenuCore['getState']>): void {\n if (!this.#menu) return;\n\n const triggerElement = this.#position.findTrigger();\n this.#syncTrigger(triggerElement);\n\n applyElementProps(this, {\n ...this.#core.getContentAttrs(state),\n });\n applyStateDataAttrs(this, state, MenuDataAttrs);\n\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));\n }\n\n if (!state.open) {\n this.#cleanupSizeObserver?.();\n this.#cleanupSizeObserver = null;\n this.#position.cleanup();\n return;\n }\n\n this.#cleanupSizeObserver?.();\n const syncSize = () => syncMenuSizeChain(this);\n syncSize();\n this.#cleanupSizeObserver = observeMenuSize(this, syncSize);\n\n const positionOptions = getRootPositionOptions(state.side, state.align);\n if (!positionOptions || !this.#currentTrigger) return;\n\n this.#position.sync({\n anchorName: this.id,\n position: positionOptions,\n trigger: this.#currentTrigger,\n boundary: this.boundary,\n container: this.#containerCtx.value?.container ?? null,\n cssVars: MenuPositioningCSSVars,\n onSideChange: (side) => this.setAttribute(MenuDataAttrs.side, side),\n });\n }\n\n #updateAsSubmenu(state: ReturnType<MenuCore['getState']>, parentCtx: MenuContextValue): void {\n const isActive = state.open || state.status === 'ending';\n const triggerElement = this.parentElement?.querySelector<HTMLElement>(\n `[data-has-submenu][commandfor=\"${this.id}\"]`\n );\n\n this.#menu?.setTriggerElement(triggerElement ?? null);\n if (triggerElement) applyElementProps(triggerElement, this.#core.getTriggerAttrs(state, this.id));\n this.#syncTriggerMetadata(triggerElement ?? null);\n\n this.removeAttribute(MenuDataAttrs.side);\n this.removeAttribute(MenuDataAttrs.align);\n applyStateDataAttrs(this, state, MenuDataAttrs);\n\n applyElementProps(this, {\n hidden: !isActive,\n role: 'menu',\n tabIndex: -1,\n });\n\n this.#cleanupSizeObserver?.();\n const parentContentElement = parentCtx.menu.contentElement;\n const syncSize = () => syncMenuSizeChain(parentContentElement);\n syncSize();\n this.#cleanupSizeObserver =\n isActive && parentContentElement ? observeMenuSize(parentContentElement, syncSize) : null;\n\n if (isActive && !this.#submenuActive) {\n this.#menu?.highlightFirstItem({ preventScroll: true });\n } else if (!isActive && this.#submenuActive) {\n this.#menu?.restoreFocus({ preventScroll: true });\n }\n\n this.#submenuActive = isActive;\n }\n\n #handleContentKeyDown = (event: UIKeyboardEvent): void => {\n const isNavigationKey = isMenuNavigationKey(event);\n const defaultPreventedBeforeMenu = event.defaultPrevented;\n\n this.#menu?.contentProps.onKeyDown(event);\n\n const parentCtx = this.#parentCtx.value ?? null;\n\n if (!parentCtx) {\n if (event.key === 'Escape') return;\n if (isNavigationKey) {\n event.stopPropagation();\n }\n return;\n }\n\n const isBackNavigationKey = event.key === 'ArrowLeft' || event.key === 'Escape';\n\n if (isBackNavigationKey && !defaultPreventedBeforeMenu) {\n event.preventDefault();\n this.#menu?.close('escape');\n }\n\n if (isNavigationKey) event.stopPropagation();\n };\n\n #handleContentFocusOut = (event: UIFocusEvent): void => {\n this.#menu?.contentProps.onFocusOut(event);\n };\n\n #setTriggerMetadata = (metadata: MenuTriggerMetadata): void => {\n if (\n metadata.hint === this.#triggerMetadata.hint &&\n metadata.disabled === this.#triggerMetadata.disabled &&\n metadata.availability === this.#triggerMetadata.availability\n ) {\n return;\n }\n\n this.#triggerMetadata = metadata;\n if (metadata.disabled && this.open && this.#parentCtx.value) this.close('imperative-action');\n this.requestUpdate();\n };\n\n #syncTriggerMetadata(trigger: HTMLElement | null): void {\n if (trigger !== this.#metadataTrigger) {\n this.#clearTriggerMetadata();\n this.#metadataTrigger = trigger;\n }\n\n if (!trigger) return;\n\n const disabled = this.#triggerMetadata.disabled || isTriggerExplicitlyDisabled(trigger);\n applyElementProps(trigger, {\n 'aria-disabled': disabled ? 'true' : undefined,\n 'data-availability': this.#triggerMetadata.availability,\n });\n\n const hint = trigger.querySelector<HTMLElement>('[data-part~=\"hint\"]');\n if (hint && hint.textContent !== this.#triggerMetadata.hint) hint.textContent = this.#triggerMetadata.hint;\n }\n\n #clearTriggerMetadata(): void {\n const trigger = this.#metadataTrigger;\n if (!trigger) return;\n\n applyElementProps(trigger, {\n 'aria-disabled': isTriggerExplicitlyDisabled(trigger) ? 'true' : undefined,\n 'data-availability': undefined,\n });\n\n const hint = trigger.querySelector<HTMLElement>('[data-part~=\"hint\"]');\n if (hint?.textContent) hint.textContent = '';\n this.#metadataTrigger = null;\n }\n\n #syncTrigger(triggerElement: HTMLElement | null): void {\n if (triggerElement === this.#currentTrigger) return;\n\n this.#position.cleanup();\n this.#cleanupTrigger();\n this.#currentTrigger = triggerElement;\n this.#menu?.setTriggerElement(triggerElement);\n\n if (triggerElement && this.#menu) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerElement, this.#menu.triggerProps, { signal: this.#triggerAbort.signal });\n }\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, {\n 'aria-expanded': undefined,\n 'aria-haspopup': undefined,\n 'aria-controls': undefined,\n });\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n\nfunction isTriggerExplicitlyDisabled(trigger: HTMLElement): boolean {\n return (\n trigger.hasAttribute('disabled') ||\n ('disabled' in trigger && (trigger as HTMLElement & { disabled?: boolean }).disabled === true)\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu-element.js","names":["#menu","#parentCtx","#triggerState","#core","#provider","#position","#controlsState","#containerCtx","#popupGroupCtx","#disconnect","#handleContentKeyDown","#handleContentFocusOut","#snapshot","#releaseControlsVisibilityLock","#cleanupSizeObserver","#syncTriggerState","#cleanupTrigger","#cleanupParentRegistration","#registeredParentMenu","#syncParentRegistration","#releaseControlsLock","#updateAsSubmenu","#updateAsRoot","#setTriggerState","#syncTrigger","#currentTrigger","#submenuActive","#stateTrigger","#clearTriggerState","#triggerAbort"],"sources":["../../../../src/ui/menu/menu-element.ts"],"sourcesContent":["import { MenuCore, MenuDataAttrs, type MenuInput, POPUP_HOST_ATTR } from '@videojs/core';\nimport {\n applyElementProps,\n applyStateDataAttrs,\n createMenu,\n createTransition,\n getRootPositionOptions,\n isMenuNavigationKey,\n type MenuApi,\n type MenuChangeDetails,\n type MenuOpenChangeReason,\n MenuPositioningCSSVars,\n observeMenuSize,\n type PositioningBoundary,\n selectControls,\n syncMenuSizeChain,\n type UIFocusEvent,\n type UIKeyboardEvent,\n} from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport { ContextConsumer, ContextProvider } from '@videojs/element/context';\nimport { SnapshotController } from '@videojs/store/html';\nimport { tryHidePopover, tryShowPopover } from '@videojs/utils/dom';\nimport { containerContext, playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { popupGroupContext } from '../../player/popup-group-context';\nimport { MediaElement } from '../media-element';\nimport { PositionController } from '../position-controller';\nimport { type MenuContextValue, type MenuTriggerState, menuContext } from './context';\n\nconst defaultTriggerState: MenuTriggerState = {\n hint: '',\n disabled: false,\n};\n\nexport class MenuElement extends MediaElement {\n static readonly tagName: string = 'media-menu';\n\n static override properties = {\n open: { type: Boolean },\n defaultOpen: { type: Boolean, attribute: 'default-open' },\n side: { type: String },\n align: { type: String },\n closeOnEscape: { type: Boolean, attribute: 'close-on-escape' },\n closeOnOutsideClick: { type: Boolean, attribute: 'close-on-outside-click' },\n boundary: { type: String },\n } satisfies PropertyDeclarationMap<\n 'open' | 'defaultOpen' | 'side' | 'align' | 'closeOnEscape' | 'closeOnOutsideClick' | 'boundary'\n >;\n\n open = MenuCore.defaultProps.open;\n defaultOpen = MenuCore.defaultProps.defaultOpen;\n side = MenuCore.defaultProps.side;\n align = MenuCore.defaultProps.align;\n closeOnEscape = MenuCore.defaultProps.closeOnEscape;\n closeOnOutsideClick = MenuCore.defaultProps.closeOnOutsideClick;\n boundary: PositioningBoundary = 'container';\n\n readonly #core = new MenuCore();\n readonly #provider = new ContextProvider(this, { context: menuContext });\n readonly #position = new PositionController(this);\n readonly #controlsState = new PlayerController(this, playerContext, selectControls);\n readonly #containerCtx = new ContextConsumer(this, { context: containerContext, subscribe: true });\n readonly #popupGroupCtx = new ContextConsumer(this, { context: popupGroupContext });\n // Consume parent menu context — present when this is a nested (submenu) element.\n readonly #parentCtx = new ContextConsumer(this, { context: menuContext, subscribe: true });\n #menu: MenuApi | null = null;\n #snapshot: SnapshotController<MenuInput> | null = null;\n #submenuActive = false;\n\n #disconnect: AbortController | null = null;\n #triggerAbort: AbortController | null = null;\n #cleanupSizeObserver: (() => void) | null = null;\n #currentTrigger: HTMLElement | null = null;\n #stateTrigger: HTMLElement | null = null;\n #triggerState = defaultTriggerState;\n #releaseControlsLock: (() => void) | null = null;\n #registeredParentMenu: MenuApi | null = null;\n #cleanupParentRegistration: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n this.setAttribute(POPUP_HOST_ATTR, '');\n\n this.#disconnect = new AbortController();\n\n this.#menu = createMenu({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: MenuChangeDetails) => {\n const accepted = this.dispatchEvent(\n new CustomEvent('open-change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { open: nextOpen, ...details },\n })\n );\n if (accepted) this.open = nextOpen;\n },\n closeOnEscape: () => this.closeOnEscape,\n closeOnOutsideClick: () => this.closeOnOutsideClick,\n group: () => (this.#parentCtx.value ? undefined : this.#popupGroupCtx.value),\n });\n\n // The element itself is the content (popup) for root menus.\n // Submenu detection happens in update() once parent context is available.\n this.#menu.setContentElement(this);\n\n applyElementProps(\n this,\n { onKeyDown: this.#handleContentKeyDown, onFocusOut: this.#handleContentFocusOut },\n { signal: this.#disconnect.signal }\n );\n\n if (this.#snapshot) {\n this.#snapshot.track(this.#menu.input);\n } else {\n this.#snapshot = new SnapshotController(this, this.#menu.input);\n }\n }\n\n override disconnectedCallback(): void {\n this.#releaseControlsVisibilityLock();\n super.disconnectedCallback();\n this.#cleanupSizeObserver?.();\n this.#cleanupSizeObserver = null;\n this.#syncTriggerState(null);\n this.#cleanupTrigger();\n this.#cleanupParentRegistration?.();\n this.#cleanupParentRegistration = null;\n this.#registeredParentMenu = null;\n this.#menu?.destroy();\n this.#menu = null;\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n close(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.close(reason);\n }\n\n openMenu(reason: MenuOpenChangeReason = 'imperative-action'): void {\n this.#menu?.open(reason);\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (!this.hasUpdated && this.defaultOpen && !this.open) this.open = true;\n\n const parentCtx = this.#parentCtx.value ?? null;\n this.#syncParentRegistration(parentCtx);\n\n this.#core.setProps({\n open: this.open,\n defaultOpen: this.defaultOpen,\n side: this.side,\n align: this.align,\n closeOnEscape: this.closeOnEscape,\n closeOnOutsideClick: this.closeOnOutsideClick,\n });\n\n if (this.#menu && changed.has('open')) {\n this.#menu.syncOpen(this.open);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n if (!this.#menu) return;\n\n const parentCtx = this.#parentCtx.value ?? null;\n const isSubmenu = parentCtx !== null;\n\n const input = this.#menu.input.current;\n this.#core.setInput({ ...input, isSubmenu });\n const state = this.#core.getState();\n\n if (!isSubmenu && state.open) {\n this.#releaseControlsLock ??= this.#controlsState.value?.requestControlsLock() ?? null;\n } else {\n this.#releaseControlsVisibilityLock();\n }\n\n if (isSubmenu && parentCtx) {\n this.#updateAsSubmenu(state, parentCtx);\n } else {\n this.#updateAsRoot(state);\n }\n\n // Provide context to child parts.\n this.#provider.setValue({\n menu: this.#menu,\n state,\n stateAttrMap: MenuDataAttrs,\n setTriggerState: this.#setTriggerState,\n });\n }\n\n #releaseControlsVisibilityLock(): void {\n this.#releaseControlsLock?.();\n this.#releaseControlsLock = null;\n }\n\n #syncParentRegistration(parentCtx: MenuContextValue | null): void {\n const parentMenu = parentCtx?.menu ?? null;\n if (parentMenu === this.#registeredParentMenu || !this.#menu) return;\n\n this.#cleanupParentRegistration?.();\n this.#registeredParentMenu = parentMenu;\n this.#cleanupParentRegistration = parentMenu?.registerSubmenu(this.#menu) ?? null;\n }\n\n #updateAsRoot(state: ReturnType<MenuCore['getState']>): void {\n if (!this.#menu) return;\n\n const triggerElement = this.#position.findTrigger();\n this.#syncTrigger(triggerElement);\n\n applyElementProps(this, {\n ...this.#core.getContentAttrs(state),\n });\n applyStateDataAttrs(this, state, MenuDataAttrs);\n\n if (state.open) {\n tryShowPopover(this);\n } else {\n tryHidePopover(this);\n }\n\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, this.#core.getTriggerAttrs(state, this.id));\n }\n\n if (!state.open) {\n this.#cleanupSizeObserver?.();\n this.#cleanupSizeObserver = null;\n this.#position.cleanup();\n return;\n }\n\n this.#cleanupSizeObserver?.();\n const syncSize = () => syncMenuSizeChain(this);\n syncSize();\n this.#cleanupSizeObserver = observeMenuSize(this, syncSize);\n\n const positionOptions = getRootPositionOptions(state.side, state.align);\n if (!positionOptions || !this.#currentTrigger) return;\n\n this.#position.sync({\n anchorName: this.id,\n position: positionOptions,\n trigger: this.#currentTrigger,\n boundary: this.boundary,\n container: this.#containerCtx.value?.container ?? null,\n cssVars: MenuPositioningCSSVars,\n onSideChange: (side) => this.setAttribute(MenuDataAttrs.side, side),\n });\n }\n\n #updateAsSubmenu(state: ReturnType<MenuCore['getState']>, parentCtx: MenuContextValue): void {\n const isActive = state.open || state.status === 'ending';\n const triggerElement = this.parentElement?.querySelector<HTMLElement>(\n `[data-has-submenu][commandfor=\"${this.id}\"]`\n );\n\n this.#menu?.setTriggerElement(triggerElement ?? null);\n if (triggerElement) applyElementProps(triggerElement, this.#core.getTriggerAttrs(state, this.id));\n this.#syncTriggerState(triggerElement ?? null);\n\n this.removeAttribute(MenuDataAttrs.side);\n this.removeAttribute(MenuDataAttrs.align);\n applyStateDataAttrs(this, state, MenuDataAttrs);\n\n applyElementProps(this, {\n hidden: !isActive,\n role: 'menu',\n tabIndex: -1,\n });\n\n this.#cleanupSizeObserver?.();\n const parentContentElement = parentCtx.menu.contentElement;\n const syncSize = () => syncMenuSizeChain(parentContentElement);\n syncSize();\n this.#cleanupSizeObserver =\n isActive && parentContentElement ? observeMenuSize(parentContentElement, syncSize) : null;\n\n if (isActive && !this.#submenuActive) {\n this.#menu?.highlightFirstItem({ preventScroll: true });\n } else if (!isActive && this.#submenuActive) {\n this.#menu?.restoreFocus({ preventScroll: true });\n }\n\n this.#submenuActive = isActive;\n }\n\n #handleContentKeyDown = (event: UIKeyboardEvent): void => {\n const isNavigationKey = isMenuNavigationKey(event);\n const defaultPreventedBeforeMenu = event.defaultPrevented;\n\n this.#menu?.contentProps.onKeyDown(event);\n\n const parentCtx = this.#parentCtx.value ?? null;\n\n if (!parentCtx) {\n if (event.key === 'Escape') return;\n if (isNavigationKey) {\n event.stopPropagation();\n }\n return;\n }\n\n const isBackNavigationKey = event.key === 'ArrowLeft' || event.key === 'Escape';\n\n if (isBackNavigationKey && !defaultPreventedBeforeMenu) {\n event.preventDefault();\n this.#menu?.close('escape');\n }\n\n if (isNavigationKey) event.stopPropagation();\n };\n\n #handleContentFocusOut = (event: UIFocusEvent): void => {\n this.#menu?.contentProps.onFocusOut(event);\n };\n\n #setTriggerState = (triggerState: MenuTriggerState): void => {\n if (\n triggerState.hint === this.#triggerState.hint &&\n triggerState.disabled === this.#triggerState.disabled &&\n triggerState.availability === this.#triggerState.availability\n ) {\n return;\n }\n\n this.#triggerState = triggerState;\n if (triggerState.disabled && this.open && this.#parentCtx.value) this.close('imperative-action');\n this.requestUpdate();\n };\n\n #syncTriggerState(trigger: HTMLElement | null): void {\n if (trigger !== this.#stateTrigger) {\n this.#clearTriggerState();\n this.#stateTrigger = trigger;\n }\n\n if (!trigger) return;\n\n const disabled = this.#triggerState.disabled || isTriggerExplicitlyDisabled(trigger);\n applyElementProps(trigger, {\n 'aria-disabled': disabled ? 'true' : undefined,\n 'data-availability': this.#triggerState.availability,\n });\n\n const hint = trigger.querySelector<HTMLElement>('[data-part~=\"hint\"]');\n if (hint && hint.textContent !== this.#triggerState.hint) hint.textContent = this.#triggerState.hint;\n }\n\n #clearTriggerState(): void {\n const trigger = this.#stateTrigger;\n if (!trigger) return;\n\n applyElementProps(trigger, {\n 'aria-disabled': isTriggerExplicitlyDisabled(trigger) ? 'true' : undefined,\n 'data-availability': undefined,\n });\n\n const hint = trigger.querySelector<HTMLElement>('[data-part~=\"hint\"]');\n if (hint?.textContent) hint.textContent = '';\n this.#stateTrigger = null;\n }\n\n #syncTrigger(triggerElement: HTMLElement | null): void {\n if (triggerElement === this.#currentTrigger) return;\n\n this.#position.cleanup();\n this.#cleanupTrigger();\n this.#currentTrigger = triggerElement;\n this.#menu?.setTriggerElement(triggerElement);\n\n if (triggerElement && this.#menu) {\n this.#triggerAbort = new AbortController();\n applyElementProps(triggerElement, this.#menu.triggerProps, { signal: this.#triggerAbort.signal });\n }\n }\n\n #cleanupTrigger(): void {\n if (this.#currentTrigger) {\n applyElementProps(this.#currentTrigger, {\n 'aria-expanded': undefined,\n 'aria-haspopup': undefined,\n 'aria-controls': undefined,\n });\n }\n\n this.#triggerAbort?.abort();\n this.#triggerAbort = null;\n this.#currentTrigger = null;\n }\n}\n\nfunction isTriggerExplicitlyDisabled(trigger: HTMLElement): boolean {\n return (\n trigger.hasAttribute('disabled') ||\n ('disabled' in trigger && (trigger as HTMLElement & { disabled?: boolean }).disabled === true)\n );\n}\n"],"mappings":"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"}
@@ -15,10 +15,10 @@ var MenuRadioGroupElement = class extends RadioGroupElement {
15
15
  subscribe: true
16
16
  });
17
17
  #ariaLabel = null;
18
- #metadataMenu = null;
19
- #setTriggerMetadata = null;
18
+ #triggerMenu = null;
19
+ #setTriggerState = null;
20
20
  disconnectedCallback() {
21
- this.#clearMenuMetadata();
21
+ this.#clearMenuTriggerState();
22
22
  super.disconnectedCallback();
23
23
  }
24
24
  update(changed) {
@@ -38,29 +38,29 @@ var MenuRadioGroupElement = class extends RadioGroupElement {
38
38
  this.#ariaLabel = label;
39
39
  this.setAttribute("aria-label", label);
40
40
  }
41
- publishMenuMetadata(disabled, availability) {
41
+ publishMenuTriggerState(disabled, availability) {
42
42
  const context = this.#menu.value ?? null;
43
- if (context?.menu !== this.#metadataMenu) {
44
- this.#clearMenuMetadata();
45
- this.#metadataMenu = context?.menu ?? null;
46
- this.#setTriggerMetadata = context?.setTriggerMetadata ?? null;
43
+ if (context?.menu !== this.#triggerMenu) {
44
+ this.#clearMenuTriggerState();
45
+ this.#triggerMenu = context?.menu ?? null;
46
+ this.#setTriggerState = context?.setTriggerState ?? null;
47
47
  }
48
- if (!this.#setTriggerMetadata) return;
48
+ if (!this.#setTriggerState) return;
49
49
  const selectedItem = findElementChild(this, (item) => item instanceof MenuRadioItemElement && item.value === this.value);
50
50
  const hint = selectedItem?.querySelector("[data-part~=\"label\"]")?.textContent ?? selectedItem?.textContent?.trim() ?? "";
51
- this.#setTriggerMetadata({
51
+ this.#setTriggerState({
52
52
  hint,
53
53
  disabled,
54
54
  availability
55
55
  });
56
56
  }
57
- #clearMenuMetadata() {
58
- this.#setTriggerMetadata?.({
57
+ #clearMenuTriggerState() {
58
+ this.#setTriggerState?.({
59
59
  hint: "",
60
60
  disabled: false
61
61
  });
62
- this.#metadataMenu = null;
63
- this.#setTriggerMetadata = null;
62
+ this.#triggerMenu = null;
63
+ this.#setTriggerState = null;
64
64
  }
65
65
  };
66
66
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"menu-radio-group-element.js","names":["#group","#menu","#clearMenuMetadata","#ariaLabel","#metadataMenu","#setTriggerMetadata"],"sources":["../../../../src/ui/menu/menu-radio-group-element.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { findElementChild } from '@videojs/utils/dom';\n\nimport { RadioGroupElement } from '../radio-group/radio-group-element';\nimport { type MenuContextValue, type MenuTriggerMetadata, menuContext } from './context';\nimport { MenuGroupController } from './menu-group-controller';\nimport { MenuRadioItemElement } from './menu-radio-item-element';\n\nexport class MenuRadioGroupElement extends RadioGroupElement {\n static readonly tagName: string = 'media-menu-radio-group';\n\n readonly #group = new MenuGroupController(this);\n readonly #menu = new ContextConsumer(this, { context: menuContext, subscribe: true });\n #ariaLabel: string | null = null;\n #metadataMenu: MenuContextValue['menu'] | null = null;\n #setTriggerMetadata: ((metadata: MenuTriggerMetadata) => void) | null = null;\n\n override disconnectedCallback(): void {\n this.#clearMenuMetadata();\n super.disconnectedCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n this.#group.applyProps();\n }\n\n protected setItemLabel(item: MenuRadioItemElement, label: string): void {\n const labelPart = item.querySelector<HTMLElement>('[data-part~=\"label\"]');\n\n if (labelPart) {\n labelPart.textContent = label;\n } else {\n item.textContent = label;\n }\n }\n\n /** Applies a generated fallback without replacing an author-provided accessible name. */\n protected applyDefaultAriaLabel(label: string): void {\n if (this.hasAttribute('aria-labelledby')) return;\n\n const current = this.getAttribute('aria-label');\n if (current !== null && current !== this.#ariaLabel) return;\n\n this.#ariaLabel = label;\n this.setAttribute('aria-label', label);\n }\n\n protected publishMenuMetadata(disabled: boolean, availability?: 'available' | 'unavailable' | 'unsupported'): void {\n const context = this.#menu.value ?? null;\n\n if (context?.menu !== this.#metadataMenu) {\n this.#clearMenuMetadata();\n this.#metadataMenu = context?.menu ?? null;\n this.#setTriggerMetadata = context?.setTriggerMetadata ?? null;\n }\n\n if (!this.#setTriggerMetadata) return;\n\n const selectedItem = findElementChild(\n this,\n (item): item is MenuRadioItemElement => item instanceof MenuRadioItemElement && item.value === this.value\n );\n const label = selectedItem?.querySelector<HTMLElement>('[data-part~=\"label\"]')?.textContent;\n const hint = label ?? selectedItem?.textContent?.trim() ?? '';\n\n this.#setTriggerMetadata({ hint, disabled, availability });\n }\n\n #clearMenuMetadata(): void {\n this.#setTriggerMetadata?.({ hint: '', disabled: false });\n this.#metadataMenu = null;\n this.#setTriggerMetadata = null;\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,wBAAb,cAA2C,kBAAkB;;EACzB,KAAA,UAAA;;CAElC,SAAkB,IAAI,oBAAoB,IAAI;CAC9C,QAAiB,IAAI,gBAAgB,MAAM;EAAE,SAAS;EAAa,WAAW;CAAK,CAAC;CACpF,aAA4B;CAC5B,gBAAiD;CACjD,sBAAwE;CAExE,uBAAsC;EACpC,KAAKE,mBAAmB;EACxB,MAAM,qBAAqB;CAC7B;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,KAAKF,OAAO,WAAW;CACzB;CAEA,aAAuB,MAA4B,OAAqB;EACtE,MAAM,YAAY,KAAK,cAA2B,wBAAsB;EAExE,IAAI,WACF,UAAU,cAAc;OAExB,KAAK,cAAc;CAEvB;;CAGA,sBAAgC,OAAqB;EACnD,IAAI,KAAK,aAAa,iBAAiB,GAAG;EAE1C,MAAM,UAAU,KAAK,aAAa,YAAY;EAC9C,IAAI,YAAY,QAAQ,YAAY,KAAKG,YAAY;EAErD,KAAKA,aAAa;EAClB,KAAK,aAAa,cAAc,KAAK;CACvC;CAEA,oBAA8B,UAAmB,cAAkE;EACjH,MAAM,UAAU,KAAKF,MAAM,SAAS;EAEpC,IAAI,SAAS,SAAS,KAAKG,eAAe;GACxC,KAAKF,mBAAmB;GACxB,KAAKE,gBAAgB,SAAS,QAAQ;GACtC,KAAKC,sBAAsB,SAAS,sBAAsB;EAC5D;EAEA,IAAI,CAAC,KAAKA,qBAAqB;EAE/B,MAAM,eAAe,iBACnB,OACC,SAAuC,gBAAgB,wBAAwB,KAAK,UAAU,KAAK,KACtG;EAEA,MAAM,OADQ,cAAc,cAA2B,wBAAsB,CAAC,EAAE,eAC1D,cAAc,aAAa,KAAK,KAAK;EAE3D,KAAKA,oBAAoB;GAAE;GAAM;GAAU;EAAa,CAAC;CAC3D;CAEA,qBAA2B;EACzB,KAAKA,sBAAsB;GAAE,MAAM;GAAI,UAAU;EAAM,CAAC;EACxD,KAAKD,gBAAgB;EACrB,KAAKC,sBAAsB;CAC7B;AACF"}
1
+ {"version":3,"file":"menu-radio-group-element.js","names":["#group","#menu","#clearMenuTriggerState","#ariaLabel","#triggerMenu","#setTriggerState"],"sources":["../../../../src/ui/menu/menu-radio-group-element.ts"],"sourcesContent":["import type { PropertyValues } from '@videojs/element';\nimport { ContextConsumer } from '@videojs/element/context';\nimport { findElementChild } from '@videojs/utils/dom';\n\nimport { RadioGroupElement } from '../radio-group/radio-group-element';\nimport { type MenuContextValue, type MenuTriggerState, menuContext } from './context';\nimport { MenuGroupController } from './menu-group-controller';\nimport { MenuRadioItemElement } from './menu-radio-item-element';\n\nexport class MenuRadioGroupElement extends RadioGroupElement {\n static readonly tagName: string = 'media-menu-radio-group';\n\n readonly #group = new MenuGroupController(this);\n readonly #menu = new ContextConsumer(this, { context: menuContext, subscribe: true });\n #ariaLabel: string | null = null;\n #triggerMenu: MenuContextValue['menu'] | null = null;\n #setTriggerState: ((state: MenuTriggerState) => void) | null = null;\n\n override disconnectedCallback(): void {\n this.#clearMenuTriggerState();\n super.disconnectedCallback();\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n this.#group.applyProps();\n }\n\n protected setItemLabel(item: MenuRadioItemElement, label: string): void {\n const labelPart = item.querySelector<HTMLElement>('[data-part~=\"label\"]');\n\n if (labelPart) {\n labelPart.textContent = label;\n } else {\n item.textContent = label;\n }\n }\n\n /** Applies a generated fallback without replacing an author-provided accessible name. */\n protected applyDefaultAriaLabel(label: string): void {\n if (this.hasAttribute('aria-labelledby')) return;\n\n const current = this.getAttribute('aria-label');\n if (current !== null && current !== this.#ariaLabel) return;\n\n this.#ariaLabel = label;\n this.setAttribute('aria-label', label);\n }\n\n protected publishMenuTriggerState(\n disabled: boolean,\n availability?: 'available' | 'unavailable' | 'unsupported'\n ): void {\n const context = this.#menu.value ?? null;\n\n if (context?.menu !== this.#triggerMenu) {\n this.#clearMenuTriggerState();\n this.#triggerMenu = context?.menu ?? null;\n this.#setTriggerState = context?.setTriggerState ?? null;\n }\n\n if (!this.#setTriggerState) return;\n\n const selectedItem = findElementChild(\n this,\n (item): item is MenuRadioItemElement => item instanceof MenuRadioItemElement && item.value === this.value\n );\n const label = selectedItem?.querySelector<HTMLElement>('[data-part~=\"label\"]')?.textContent;\n const hint = label ?? selectedItem?.textContent?.trim() ?? '';\n\n this.#setTriggerState({ hint, disabled, availability });\n }\n\n #clearMenuTriggerState(): void {\n this.#setTriggerState?.({ hint: '', disabled: false });\n this.#triggerMenu = null;\n this.#setTriggerState = null;\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,wBAAb,cAA2C,kBAAkB;;EACzB,KAAA,UAAA;;CAElC,SAAkB,IAAI,oBAAoB,IAAI;CAC9C,QAAiB,IAAI,gBAAgB,MAAM;EAAE,SAAS;EAAa,WAAW;CAAK,CAAC;CACpF,aAA4B;CAC5B,eAAgD;CAChD,mBAA+D;CAE/D,uBAAsC;EACpC,KAAKE,uBAAuB;EAC5B,MAAM,qBAAqB;CAC7B;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAEpB,KAAKF,OAAO,WAAW;CACzB;CAEA,aAAuB,MAA4B,OAAqB;EACtE,MAAM,YAAY,KAAK,cAA2B,wBAAsB;EAExE,IAAI,WACF,UAAU,cAAc;OAExB,KAAK,cAAc;CAEvB;;CAGA,sBAAgC,OAAqB;EACnD,IAAI,KAAK,aAAa,iBAAiB,GAAG;EAE1C,MAAM,UAAU,KAAK,aAAa,YAAY;EAC9C,IAAI,YAAY,QAAQ,YAAY,KAAKG,YAAY;EAErD,KAAKA,aAAa;EAClB,KAAK,aAAa,cAAc,KAAK;CACvC;CAEA,wBACE,UACA,cACM;EACN,MAAM,UAAU,KAAKF,MAAM,SAAS;EAEpC,IAAI,SAAS,SAAS,KAAKG,cAAc;GACvC,KAAKF,uBAAuB;GAC5B,KAAKE,eAAe,SAAS,QAAQ;GACrC,KAAKC,mBAAmB,SAAS,mBAAmB;EACtD;EAEA,IAAI,CAAC,KAAKA,kBAAkB;EAE5B,MAAM,eAAe,iBACnB,OACC,SAAuC,gBAAgB,wBAAwB,KAAK,UAAU,KAAK,KACtG;EAEA,MAAM,OADQ,cAAc,cAA2B,wBAAsB,CAAC,EAAE,eAC1D,cAAc,aAAa,KAAK,KAAK;EAE3D,KAAKA,iBAAiB;GAAE;GAAM;GAAU;EAAa,CAAC;CACxD;CAEA,yBAA+B;EAC7B,KAAKA,mBAAmB;GAAE,MAAM;GAAI,UAAU;EAAM,CAAC;EACrD,KAAKD,eAAe;EACpB,KAAKC,mBAAmB;CAC1B;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { playerContext } from "../../player/context.js";
2
2
  import { PlayerController } from "../../player/player-controller.js";
3
3
  import { MediaButtonElement } from "../media-button-element.js";
4
- import { toggleCommandTarget } from "../command-for.js";
5
4
  import { applyElementProps, selectPlaybackRate } from "@videojs/core/dom";
6
5
  import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from "@videojs/core";
7
6
  //#region src/ui/playback-rate-button/playback-rate-button-element.ts
@@ -26,7 +25,7 @@ var PlaybackRateButtonElement = class extends MediaButtonElement {
26
25
  }
27
26
  activate(state, event) {
28
27
  if (this.commandfor) {
29
- if (event instanceof KeyboardEvent) toggleCommandTarget(this, this.commandfor);
28
+ if (event instanceof KeyboardEvent) this.click();
30
29
  return;
31
30
  }
32
31
  this.core.cycle(state);
@@ -1 +1 @@
1
- {"version":3,"file":"playback-rate-button-element.js","names":[],"sources":["../../../../src/ui/playback-rate-button/playback-rate-button-element.ts"],"sourcesContent":["import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectPlaybackRate, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaPlaybackRateState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { toggleCommandTarget } from '../command-for';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor'>;\n\n commandfor: string | undefined = undefined;\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n protected override readonly hotkeyAction = 'speedUp';\n\n protected activate(state: MediaPlaybackRateState, event?: UIEvent): void {\n if (this.commandfor) {\n if (event instanceof KeyboardEvent) {\n toggleCommandTarget(this, this.commandfor);\n }\n return;\n }\n this.core.cycle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n if (super.getIsButtonDisabled()) return true;\n if (this.commandfor && media && media.playbackRates.length === 0) return true;\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor')) {\n if (this.commandfor) {\n this.setAttribute('commandfor', this.commandfor);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media || !this.commandfor) return;\n\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n}\n\nexport namespace PlaybackRateButtonElement {\n export type State = PlaybackRateButtonCore.State;\n}\n"],"mappings":";;;;;;;AAUA,IAAa,4BAAb,cAA+C,mBAA2C;;;EASvD,KAAA,aAAA,KAAA;EAEP,KAAA,OAAA,IAAI,uBAAuB;EACnB,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,kBAAkB;EACjD,KAAA,eAAA;;;EAbjB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,YAAY,EAAE,MAAM,OAAO;EAC7B;;CASA,SAAmB,OAA+B,OAAuB;EACvE,IAAI,KAAK,YAAY;GACnB,IAAI,iBAAiB,eACnB,oBAAoB,MAAM,KAAK,UAAU;GAE3C;EACF;EACA,KAAK,KAAK,MAAM,KAAK;CACvB;CAEA,sBAAkD;EAChD,MAAM,QAAQ,KAAK,WAAW;EAC9B,IAAI,MAAM,oBAAoB,GAAG,OAAO;EACxC,IAAI,KAAK,cAAc,SAAS,MAAM,cAAc,WAAW,GAAG,OAAO;EACzE,OAAO;CACT;CAEA,WAA8B,SAA+B;EAC3D,MAAM,WAAW,OAAO;EAExB,IAAI,QAAQ,IAAI,YAAY,GAC1B,IAAI,KAAK,YACP,KAAK,aAAa,cAAc,KAAK,UAAU;OAE/C,KAAK,gBAAgB,YAAY;CAGvC;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,CADU,KAAK,WAAW,SAChB,CAAC,KAAK,YAAY;EAEhC,kBAAkB,MAAM,EACtB,iBAAiB,KAAK,oBAAoB,IAAI,SAAS,KAAA,EACzD,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"playback-rate-button-element.js","names":[],"sources":["../../../../src/ui/playback-rate-button/playback-rate-button-element.ts"],"sourcesContent":["import { PlaybackRateButtonCore, PlaybackRateButtonDataAttrs } from '@videojs/core';\nimport { applyElementProps, selectPlaybackRate, type UIEvent } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\nimport type { MediaPlaybackRateState } from '@videojs/media';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PlaybackRateButtonElement extends MediaButtonElement<PlaybackRateButtonCore> {\n static readonly tagName = 'media-playback-rate-button';\n\n static override properties = {\n label: { type: String },\n disabled: { type: Boolean },\n commandfor: { type: String },\n } satisfies PropertyDeclarationMap<'label' | 'disabled' | 'commandfor'>;\n\n commandfor: string | undefined = undefined;\n\n protected readonly core = new PlaybackRateButtonCore();\n protected readonly stateAttrMap = PlaybackRateButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n protected override readonly hotkeyAction = 'speedUp';\n\n protected activate(state: MediaPlaybackRateState, event?: UIEvent): void {\n if (this.commandfor) {\n if (event instanceof KeyboardEvent) {\n // Custom elements do not synthesize a click from keyboard activation.\n // Dispatch one so the linked menu follows its normal open lifecycle.\n this.click();\n }\n return;\n }\n this.core.cycle(state);\n }\n\n protected override getIsButtonDisabled(): boolean {\n const media = this.mediaState.value;\n if (super.getIsButtonDisabled()) return true;\n if (this.commandfor && media && media.playbackRates.length === 0) return true;\n return false;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n\n if (changed.has('commandfor')) {\n if (this.commandfor) {\n this.setAttribute('commandfor', this.commandfor);\n } else {\n this.removeAttribute('commandfor');\n }\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n if (!media || !this.commandfor) return;\n\n applyElementProps(this, {\n 'aria-disabled': this.getIsButtonDisabled() ? 'true' : undefined,\n });\n }\n}\n\nexport namespace PlaybackRateButtonElement {\n export type State = PlaybackRateButtonCore.State;\n}\n"],"mappings":";;;;;;AASA,IAAa,4BAAb,cAA+C,mBAA2C;;;EASvD,KAAA,aAAA,KAAA;EAEP,KAAA,OAAA,IAAI,uBAAuB;EACnB,KAAA,eAAA;EACF,KAAA,aAAA,IAAI,iBAAiB,MAAM,eAAe,kBAAkB;EACjD,KAAA,eAAA;;;EAbjB,KAAA,UAAA;;;EAEG,KAAA,aAAA;GAC3B,OAAO,EAAE,MAAM,OAAO;GACtB,UAAU,EAAE,MAAM,QAAQ;GAC1B,YAAY,EAAE,MAAM,OAAO;EAC7B;;CASA,SAAmB,OAA+B,OAAuB;EACvE,IAAI,KAAK,YAAY;GACnB,IAAI,iBAAiB,eAGnB,KAAK,MAAM;GAEb;EACF;EACA,KAAK,KAAK,MAAM,KAAK;CACvB;CAEA,sBAAkD;EAChD,MAAM,QAAQ,KAAK,WAAW;EAC9B,IAAI,MAAM,oBAAoB,GAAG,OAAO;EACxC,IAAI,KAAK,cAAc,SAAS,MAAM,cAAc,WAAW,GAAG,OAAO;EACzE,OAAO;CACT;CAEA,WAA8B,SAA+B;EAC3D,MAAM,WAAW,OAAO;EAExB,IAAI,QAAQ,IAAI,YAAY,GAC1B,IAAI,KAAK,YACP,KAAK,aAAa,cAAc,KAAK,UAAU;OAE/C,KAAK,gBAAgB,YAAY;CAGvC;CAEA,OAA0B,SAA+B;EACvD,MAAM,OAAO,OAAO;EAGpB,IAAI,CADU,KAAK,WAAW,SAChB,CAAC,KAAK,YAAY;EAEhC,kBAAkB,MAAM,EACtB,iBAAiB,KAAK,oBAAoB,IAAI,SAAS,KAAA,EACzD,CAAC;CACH;AACF"}
@@ -53,7 +53,7 @@ var PlaybackRateRadioGroupElement = class extends MenuRadioGroupElement {
53
53
  state = this.#core.getState();
54
54
  this.applyDefaultAriaLabel(translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state)));
55
55
  this.#options.sync(state, this.#i18n.value, this.#i18n.locale);
56
- this.publishMenuMetadata(state.disabled, state.availability);
56
+ this.publishMenuTriggerState(state.disabled, state.availability);
57
57
  }
58
58
  super.update(changed);
59
59
  if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);
@@ -1 +1 @@
1
- {"version":3,"file":"playback-rate-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/playback-rate-radio-group/playback-rate-radio-group-element.ts"],"sourcesContent":["import {\n PlaybackRateRadioGroupCore,\n PlaybackRateRadioGroupDataAttrs,\n type PlaybackRateRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-playback-rate-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n disabled = false;\n formatRate = PlaybackRateRadioGroupCore.defaultProps.formatRate;\n\n readonly #core = new PlaybackRateRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n readonly #options = new RadioOptionsController<PlaybackRateRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-rate', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: PlaybackRateRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatRate: this.formatRate, disabled: this.disabled });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(\n translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state))\n );\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuMetadata(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);\n }\n}\n\nexport namespace PlaybackRateRadioGroupElement {\n export type State = PlaybackRateRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,gCAAb,cAAmD,sBAAsB;;;EAQ5D,KAAA,WAAA;EACE,KAAA,aAAA,2BAA2B,aAAa;EAEpC,KAAA,QAAA,IAAI,2BAA2B;EAC/B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,kBAAkB;EAC/D,KAAA,WAAA,IAAI,uBAAqD,MAAM;GACjF,oBAAoB,MAAM,WAAW,KAAK,aAAa,aAAa,OAAO,KAAK;GAChF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EAnBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CAKA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAAiD;EAErD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,YAAY,KAAK;IAAY,UAAU,KAAK;GAAS,CAAC;GAC5E,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBACH,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,OAAO,KAAKD,MAAM,eAAe,KAAK,CAAC,CAC9F;GACA,KAAKE,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,oBAAoB,MAAM,UAAU,MAAM,YAAY;EAC7D;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,+BAA+B;CAC7E;AACF"}
1
+ {"version":3,"file":"playback-rate-radio-group-element.js","names":["#mediaState","#core","#i18n","#options"],"sources":["../../../../src/ui/playback-rate-radio-group/playback-rate-radio-group-element.ts"],"sourcesContent":["import {\n PlaybackRateRadioGroupCore,\n PlaybackRateRadioGroupDataAttrs,\n type PlaybackRateRadioGroupOption,\n} from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlaybackRate } from '@videojs/core/dom';\nimport { translateText } from '@videojs/core/i18n';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { i18nContext } from '../../i18n/context';\nimport { I18nController } from '../../i18n/controller';\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MenuRadioGroupElement } from '../menu/menu-radio-group-element';\nimport { RadioOptionsController } from '../radio-options/radio-options-controller';\n\nexport class PlaybackRateRadioGroupElement extends MenuRadioGroupElement {\n static override readonly tagName = 'media-playback-rate-radio-group';\n\n static override properties = {\n ...MenuRadioGroupElement.properties,\n disabled: { type: Boolean },\n } satisfies PropertyDeclarationMap<'value' | 'disabled'>;\n\n disabled = false;\n formatRate = PlaybackRateRadioGroupCore.defaultProps.formatRate;\n\n readonly #core = new PlaybackRateRadioGroupCore();\n readonly #i18n = new I18nController(this, i18nContext);\n readonly #mediaState = new PlayerController(this, playerContext, selectPlaybackRate);\n readonly #options = new RadioOptionsController<PlaybackRateRadioGroupOption>(this, {\n setItemAttributes: (item, option) => item.setAttribute('data-rate', option.value),\n onValueChange: (value) => {\n const media = this.#mediaState.value;\n if (media) this.#core.selectValue(media, value);\n },\n });\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.destroyed) return;\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n const media = this.#mediaState.value;\n let state: PlaybackRateRadioGroupCore.State | null = null;\n\n if (media) {\n this.#core.setProps({ formatRate: this.formatRate, disabled: this.disabled });\n this.#core.setMedia(media);\n state = this.#core.getState();\n\n this.applyDefaultAriaLabel(\n translateText(this.#core.getLabel(state), this.#i18n.value, this.#core.getLabelParams(state))\n );\n this.#options.sync(state, this.#i18n.value, this.#i18n.locale);\n this.publishMenuTriggerState(state.disabled, state.availability);\n }\n\n super.update(changed);\n\n if (state) applyStateDataAttrs(this, state, PlaybackRateRadioGroupDataAttrs);\n }\n}\n\nexport namespace PlaybackRateRadioGroupElement {\n export type State = PlaybackRateRadioGroupCore.State;\n}\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,gCAAb,cAAmD,sBAAsB;;;EAQ5D,KAAA,WAAA;EACE,KAAA,aAAA,2BAA2B,aAAa;EAEpC,KAAA,QAAA,IAAI,2BAA2B;EAC/B,KAAA,QAAA,IAAI,eAAe,MAAM,WAAW;EAC9B,KAAA,cAAA,IAAI,iBAAiB,MAAM,eAAe,kBAAkB;EAC/D,KAAA,WAAA,IAAI,uBAAqD,MAAM;GACjF,oBAAoB,MAAM,WAAW,KAAK,aAAa,aAAa,OAAO,KAAK;GAChF,gBAAgB,UAAU;IACxB,MAAM,QAAQ,KAAKA,YAAY;IAC/B,IAAI,OAAO,KAAKC,MAAM,YAAY,OAAO,KAAK;GAChD;EACF,CAAC;;;EAnBkC,KAAA,UAAA;;;EAEN,KAAA,aAAA;GAC3B,GAAG,sBAAsB;GACzB,UAAU,EAAE,MAAM,QAAQ;EAC5B;;CAKA;CACA;CACA;CACA;CAQA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,IAAI,KAAK,WAAW;CAKtB;CAEA,OAA0B,SAA+B;EACvD,MAAM,QAAQ,KAAKD,YAAY;EAC/B,IAAI,QAAiD;EAErD,IAAI,OAAO;GACT,KAAKC,MAAM,SAAS;IAAE,YAAY,KAAK;IAAY,UAAU,KAAK;GAAS,CAAC;GAC5E,KAAKA,MAAM,SAAS,KAAK;GACzB,QAAQ,KAAKA,MAAM,SAAS;GAE5B,KAAK,sBACH,cAAc,KAAKA,MAAM,SAAS,KAAK,GAAG,KAAKC,MAAM,OAAO,KAAKD,MAAM,eAAe,KAAK,CAAC,CAC9F;GACA,KAAKE,SAAS,KAAK,OAAO,KAAKD,MAAM,OAAO,KAAKA,MAAM,MAAM;GAC7D,KAAK,wBAAwB,MAAM,UAAU,MAAM,YAAY;EACjE;EAEA,MAAM,OAAO,OAAO;EAEpB,IAAI,OAAO,oBAAoB,MAAM,OAAO,+BAA+B;CAC7E;AACF"}