tmg-media-player 0.0.1

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 (1861) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/chunk-25AZZYCL.js +85 -0
  4. package/dist/chunk-25AZZYCL.js.map +1 -0
  5. package/dist/chunk-25IKIKAB.js +60 -0
  6. package/dist/chunk-25IKIKAB.js.map +1 -0
  7. package/dist/chunk-25ZZLGZ6.js +45 -0
  8. package/dist/chunk-25ZZLGZ6.js.map +1 -0
  9. package/dist/chunk-274C5J22.js +12 -0
  10. package/dist/chunk-274C5J22.js.map +1 -0
  11. package/dist/chunk-27FHLV4M.js +12 -0
  12. package/dist/chunk-27FHLV4M.js.map +1 -0
  13. package/dist/chunk-27MVVVJ7.js +405 -0
  14. package/dist/chunk-27MVVVJ7.js.map +1 -0
  15. package/dist/chunk-27SBY2N7.js +50 -0
  16. package/dist/chunk-27SBY2N7.js.map +1 -0
  17. package/dist/chunk-2J3FJY73.js +9 -0
  18. package/dist/chunk-2J3FJY73.js.map +1 -0
  19. package/dist/chunk-2JW4RYM4.js +170 -0
  20. package/dist/chunk-2JW4RYM4.js.map +1 -0
  21. package/dist/chunk-2PA7FU47.js +185 -0
  22. package/dist/chunk-2PA7FU47.js.map +1 -0
  23. package/dist/chunk-2VOAIUTU.js +9 -0
  24. package/dist/chunk-2VOAIUTU.js.map +1 -0
  25. package/dist/chunk-2W5XWGGE.js +7 -0
  26. package/dist/chunk-2W5XWGGE.js.map +1 -0
  27. package/dist/chunk-3C3GK24X.js +88 -0
  28. package/dist/chunk-3C3GK24X.js.map +1 -0
  29. package/dist/chunk-3KD22Z7D.js +9 -0
  30. package/dist/chunk-3KD22Z7D.js.map +1 -0
  31. package/dist/chunk-3OLEZVYI.js +196 -0
  32. package/dist/chunk-3OLEZVYI.js.map +1 -0
  33. package/dist/chunk-3OZEBWCF.js +12 -0
  34. package/dist/chunk-3OZEBWCF.js.map +1 -0
  35. package/dist/chunk-3T5CFCYB.js +45 -0
  36. package/dist/chunk-3T5CFCYB.js.map +1 -0
  37. package/dist/chunk-3VCTHGL6.js +86 -0
  38. package/dist/chunk-3VCTHGL6.js.map +1 -0
  39. package/dist/chunk-3WHPH6Q5.js +9 -0
  40. package/dist/chunk-3WHPH6Q5.js.map +1 -0
  41. package/dist/chunk-43MLKGCT.js +45 -0
  42. package/dist/chunk-43MLKGCT.js.map +1 -0
  43. package/dist/chunk-46QVDU2K.js +25 -0
  44. package/dist/chunk-46QVDU2K.js.map +1 -0
  45. package/dist/chunk-474PEQ33.js +78 -0
  46. package/dist/chunk-474PEQ33.js.map +1 -0
  47. package/dist/chunk-4FCGFO2J.js +9 -0
  48. package/dist/chunk-4FCGFO2J.js.map +1 -0
  49. package/dist/chunk-4JOPUUAL.js +185 -0
  50. package/dist/chunk-4JOPUUAL.js.map +1 -0
  51. package/dist/chunk-4QQXED6P.js +11 -0
  52. package/dist/chunk-4QQXED6P.js.map +1 -0
  53. package/dist/chunk-4VG5KHDO.js +52 -0
  54. package/dist/chunk-4VG5KHDO.js.map +1 -0
  55. package/dist/chunk-4W6H5CZF.js +1 -0
  56. package/dist/chunk-4W6H5CZF.js.map +1 -0
  57. package/dist/chunk-56CRICX7.js +154 -0
  58. package/dist/chunk-56CRICX7.js.map +1 -0
  59. package/dist/chunk-57L2PE3B.js +9 -0
  60. package/dist/chunk-57L2PE3B.js.map +1 -0
  61. package/dist/chunk-5CLVIO4N.js +33 -0
  62. package/dist/chunk-5CLVIO4N.js.map +1 -0
  63. package/dist/chunk-5GX67WSG.js +7 -0
  64. package/dist/chunk-5GX67WSG.js.map +1 -0
  65. package/dist/chunk-5SGNTRPL.js +47 -0
  66. package/dist/chunk-5SGNTRPL.js.map +1 -0
  67. package/dist/chunk-5TJURBKV.js +9 -0
  68. package/dist/chunk-5TJURBKV.js.map +1 -0
  69. package/dist/chunk-63E6JXTT.js +162 -0
  70. package/dist/chunk-63E6JXTT.js.map +1 -0
  71. package/dist/chunk-66HGOYPR.js +180 -0
  72. package/dist/chunk-66HGOYPR.js.map +1 -0
  73. package/dist/chunk-6IFGKHVM.js +9 -0
  74. package/dist/chunk-6IFGKHVM.js.map +1 -0
  75. package/dist/chunk-6K4HCMUL.js +32 -0
  76. package/dist/chunk-6K4HCMUL.js.map +1 -0
  77. package/dist/chunk-6KYXFWBF.js +32 -0
  78. package/dist/chunk-6KYXFWBF.js.map +1 -0
  79. package/dist/chunk-6R5BZZM6.js +95 -0
  80. package/dist/chunk-6R5BZZM6.js.map +1 -0
  81. package/dist/chunk-6S5BMP4A.js +9 -0
  82. package/dist/chunk-6S5BMP4A.js.map +1 -0
  83. package/dist/chunk-6SHHKTGD.js +73 -0
  84. package/dist/chunk-6SHHKTGD.js.map +1 -0
  85. package/dist/chunk-6U3M7V32.js +46 -0
  86. package/dist/chunk-6U3M7V32.js.map +1 -0
  87. package/dist/chunk-73XT2QVM.js +47 -0
  88. package/dist/chunk-73XT2QVM.js.map +1 -0
  89. package/dist/chunk-7FB3XGXR.js +471 -0
  90. package/dist/chunk-7FB3XGXR.js.map +1 -0
  91. package/dist/chunk-7HRR4LG4.js +115 -0
  92. package/dist/chunk-7HRR4LG4.js.map +1 -0
  93. package/dist/chunk-7I6DRKIN.js +58 -0
  94. package/dist/chunk-7I6DRKIN.js.map +1 -0
  95. package/dist/chunk-7MOZI57I.js +59 -0
  96. package/dist/chunk-7MOZI57I.js.map +1 -0
  97. package/dist/chunk-7PHLWSKV.js +95 -0
  98. package/dist/chunk-7PHLWSKV.js.map +1 -0
  99. package/dist/chunk-7Y4LQ5ED.js +45 -0
  100. package/dist/chunk-7Y4LQ5ED.js.map +1 -0
  101. package/dist/chunk-7YDZDHZH.js +19 -0
  102. package/dist/chunk-7YDZDHZH.js.map +1 -0
  103. package/dist/chunk-A7EG6K2X.js +54 -0
  104. package/dist/chunk-A7EG6K2X.js.map +1 -0
  105. package/dist/chunk-ABRBZ4IH.js +108 -0
  106. package/dist/chunk-ABRBZ4IH.js.map +1 -0
  107. package/dist/chunk-ACF6B245.js +17 -0
  108. package/dist/chunk-ACF6B245.js.map +1 -0
  109. package/dist/chunk-ACUUGJUG.js +53 -0
  110. package/dist/chunk-ACUUGJUG.js.map +1 -0
  111. package/dist/chunk-AIYSHJLG.js +42 -0
  112. package/dist/chunk-AIYSHJLG.js.map +1 -0
  113. package/dist/chunk-AKHJD2A3.js +50 -0
  114. package/dist/chunk-AKHJD2A3.js.map +1 -0
  115. package/dist/chunk-ATE4NMIF.js +22 -0
  116. package/dist/chunk-ATE4NMIF.js.map +1 -0
  117. package/dist/chunk-AZTSMVMN.js +138 -0
  118. package/dist/chunk-AZTSMVMN.js.map +1 -0
  119. package/dist/chunk-BFFQZMZX.js +108 -0
  120. package/dist/chunk-BFFQZMZX.js.map +1 -0
  121. package/dist/chunk-BKJRLSXA.js +329 -0
  122. package/dist/chunk-BKJRLSXA.js.map +1 -0
  123. package/dist/chunk-BLJDDFX2.js +228 -0
  124. package/dist/chunk-BLJDDFX2.js.map +1 -0
  125. package/dist/chunk-BROAUWON.js +123 -0
  126. package/dist/chunk-BROAUWON.js.map +1 -0
  127. package/dist/chunk-BU4AX4DA.js +49 -0
  128. package/dist/chunk-BU4AX4DA.js.map +1 -0
  129. package/dist/chunk-C2TANFKK.js +167 -0
  130. package/dist/chunk-C2TANFKK.js.map +1 -0
  131. package/dist/chunk-CAIDFMLB.js +164 -0
  132. package/dist/chunk-CAIDFMLB.js.map +1 -0
  133. package/dist/chunk-CCD3ZXIT.js +54 -0
  134. package/dist/chunk-CCD3ZXIT.js.map +1 -0
  135. package/dist/chunk-CEEX3HQ2.js +44 -0
  136. package/dist/chunk-CEEX3HQ2.js.map +1 -0
  137. package/dist/chunk-CIN7HWLH.js +26 -0
  138. package/dist/chunk-CIN7HWLH.js.map +1 -0
  139. package/dist/chunk-CL24QYM6.js +48 -0
  140. package/dist/chunk-CL24QYM6.js.map +1 -0
  141. package/dist/chunk-CTSPKWKN.js +9 -0
  142. package/dist/chunk-CTSPKWKN.js.map +1 -0
  143. package/dist/chunk-CYUYF57A.js +139 -0
  144. package/dist/chunk-CYUYF57A.js.map +1 -0
  145. package/dist/chunk-D5XNDZ4S.js +21 -0
  146. package/dist/chunk-D5XNDZ4S.js.map +1 -0
  147. package/dist/chunk-D7JQDN74.js +9 -0
  148. package/dist/chunk-D7JQDN74.js.map +1 -0
  149. package/dist/chunk-DKS7SZFN.js +165 -0
  150. package/dist/chunk-DKS7SZFN.js.map +1 -0
  151. package/dist/chunk-DM4ZIS4L.js +50 -0
  152. package/dist/chunk-DM4ZIS4L.js.map +1 -0
  153. package/dist/chunk-DNY72SCR.js +9 -0
  154. package/dist/chunk-DNY72SCR.js.map +1 -0
  155. package/dist/chunk-DQLWWVM3.js +25 -0
  156. package/dist/chunk-DQLWWVM3.js.map +1 -0
  157. package/dist/chunk-E56H3EOR.js +1 -0
  158. package/dist/chunk-E56H3EOR.js.map +1 -0
  159. package/dist/chunk-E56PSUT2.js +435 -0
  160. package/dist/chunk-E56PSUT2.js.map +1 -0
  161. package/dist/chunk-EF7RQIJK.js +9 -0
  162. package/dist/chunk-EF7RQIJK.js.map +1 -0
  163. package/dist/chunk-EHQJNRJV.js +449 -0
  164. package/dist/chunk-EHQJNRJV.js.map +1 -0
  165. package/dist/chunk-EIT6CZXJ.js +50 -0
  166. package/dist/chunk-EIT6CZXJ.js.map +1 -0
  167. package/dist/chunk-ERPQNMED.js +292 -0
  168. package/dist/chunk-ERPQNMED.js.map +1 -0
  169. package/dist/chunk-ESAOH6X5.js +15 -0
  170. package/dist/chunk-ESAOH6X5.js.map +1 -0
  171. package/dist/chunk-ESNKONBW.js +80 -0
  172. package/dist/chunk-ESNKONBW.js.map +1 -0
  173. package/dist/chunk-EUQ7SC5J.js +33 -0
  174. package/dist/chunk-EUQ7SC5J.js.map +1 -0
  175. package/dist/chunk-EUX3RZ3L.js +66 -0
  176. package/dist/chunk-EUX3RZ3L.js.map +1 -0
  177. package/dist/chunk-EVUTNLHC.js +7 -0
  178. package/dist/chunk-EVUTNLHC.js.map +1 -0
  179. package/dist/chunk-EY7PB3LA.js +59 -0
  180. package/dist/chunk-EY7PB3LA.js.map +1 -0
  181. package/dist/chunk-FCQDAU2C.js +7 -0
  182. package/dist/chunk-FCQDAU2C.js.map +1 -0
  183. package/dist/chunk-FHL5Z6MX.js +13 -0
  184. package/dist/chunk-FHL5Z6MX.js.map +1 -0
  185. package/dist/chunk-FIUVWAAQ.js +35 -0
  186. package/dist/chunk-FIUVWAAQ.js.map +1 -0
  187. package/dist/chunk-FN32KVQT.js +188 -0
  188. package/dist/chunk-FN32KVQT.js.map +1 -0
  189. package/dist/chunk-FX3UTAZK.js +31 -0
  190. package/dist/chunk-FX3UTAZK.js.map +1 -0
  191. package/dist/chunk-FXIL7BGP.js +43 -0
  192. package/dist/chunk-FXIL7BGP.js.map +1 -0
  193. package/dist/chunk-G7KANQFO.js +131 -0
  194. package/dist/chunk-G7KANQFO.js.map +1 -0
  195. package/dist/chunk-GDC7I2CJ.js +66 -0
  196. package/dist/chunk-GDC7I2CJ.js.map +1 -0
  197. package/dist/chunk-GM7YMURS.js +14 -0
  198. package/dist/chunk-GM7YMURS.js.map +1 -0
  199. package/dist/chunk-GQ7ITX5B.js +7 -0
  200. package/dist/chunk-GQ7ITX5B.js.map +1 -0
  201. package/dist/chunk-GSKI4IRL.js +34 -0
  202. package/dist/chunk-GSKI4IRL.js.map +1 -0
  203. package/dist/chunk-GUIBL2MZ.js +1 -0
  204. package/dist/chunk-GUIBL2MZ.js.map +1 -0
  205. package/dist/chunk-H24E5FRE.js +9 -0
  206. package/dist/chunk-H24E5FRE.js.map +1 -0
  207. package/dist/chunk-HA2GK6KH.js +9 -0
  208. package/dist/chunk-HA2GK6KH.js.map +1 -0
  209. package/dist/chunk-HCSCY6DU.js +458 -0
  210. package/dist/chunk-HCSCY6DU.js.map +1 -0
  211. package/dist/chunk-HGXGXW2U.js +26 -0
  212. package/dist/chunk-HGXGXW2U.js.map +1 -0
  213. package/dist/chunk-HH7PMFLU.js +33 -0
  214. package/dist/chunk-HH7PMFLU.js.map +1 -0
  215. package/dist/chunk-HJORMYPQ.js +66 -0
  216. package/dist/chunk-HJORMYPQ.js.map +1 -0
  217. package/dist/chunk-HN2UT66M.js +9 -0
  218. package/dist/chunk-HN2UT66M.js.map +1 -0
  219. package/dist/chunk-HNPBSC2A.js +132 -0
  220. package/dist/chunk-HNPBSC2A.js.map +1 -0
  221. package/dist/chunk-HNTARWVL.js +57 -0
  222. package/dist/chunk-HNTARWVL.js.map +1 -0
  223. package/dist/chunk-HPPHGUTD.js +1 -0
  224. package/dist/chunk-HPPHGUTD.js.map +1 -0
  225. package/dist/chunk-HPWORM77.js +199 -0
  226. package/dist/chunk-HPWORM77.js.map +1 -0
  227. package/dist/chunk-HYG6W442.js +66 -0
  228. package/dist/chunk-HYG6W442.js.map +1 -0
  229. package/dist/chunk-I3LBJOUW.js +249 -0
  230. package/dist/chunk-I3LBJOUW.js.map +1 -0
  231. package/dist/chunk-I47VPMZS.js +40 -0
  232. package/dist/chunk-I47VPMZS.js.map +1 -0
  233. package/dist/chunk-ID72UAJE.js +7 -0
  234. package/dist/chunk-ID72UAJE.js.map +1 -0
  235. package/dist/chunk-IENUYESB.js +33 -0
  236. package/dist/chunk-IENUYESB.js.map +1 -0
  237. package/dist/chunk-IFYBKLFH.js +15 -0
  238. package/dist/chunk-IFYBKLFH.js.map +1 -0
  239. package/dist/chunk-IJJ4F6HI.js +105 -0
  240. package/dist/chunk-IJJ4F6HI.js.map +1 -0
  241. package/dist/chunk-IKKQYZNA.js +43 -0
  242. package/dist/chunk-IKKQYZNA.js.map +1 -0
  243. package/dist/chunk-IUS3FRXS.js +446 -0
  244. package/dist/chunk-IUS3FRXS.js.map +1 -0
  245. package/dist/chunk-IVA7LFT2.js +12 -0
  246. package/dist/chunk-IVA7LFT2.js.map +1 -0
  247. package/dist/chunk-IXLSSEE7.js +39 -0
  248. package/dist/chunk-IXLSSEE7.js.map +1 -0
  249. package/dist/chunk-J2SIL62L.js +142 -0
  250. package/dist/chunk-J2SIL62L.js.map +1 -0
  251. package/dist/chunk-J54J2AED.js +117 -0
  252. package/dist/chunk-J54J2AED.js.map +1 -0
  253. package/dist/chunk-JFWYJV3J.js +61 -0
  254. package/dist/chunk-JFWYJV3J.js.map +1 -0
  255. package/dist/chunk-JP5X5JDL.js +10 -0
  256. package/dist/chunk-JP5X5JDL.js.map +1 -0
  257. package/dist/chunk-JPWNE7JO.js +11 -0
  258. package/dist/chunk-JPWNE7JO.js.map +1 -0
  259. package/dist/chunk-JRWYWTTT.js +9 -0
  260. package/dist/chunk-JRWYWTTT.js.map +1 -0
  261. package/dist/chunk-JZXJAJNW.js +316 -0
  262. package/dist/chunk-JZXJAJNW.js.map +1 -0
  263. package/dist/chunk-K4UHBEDT.js +9 -0
  264. package/dist/chunk-K4UHBEDT.js.map +1 -0
  265. package/dist/chunk-K7AAKFQF.js +12 -0
  266. package/dist/chunk-K7AAKFQF.js.map +1 -0
  267. package/dist/chunk-KD3OBG25.js +15 -0
  268. package/dist/chunk-KD3OBG25.js.map +1 -0
  269. package/dist/chunk-KJ74PGBI.js +45 -0
  270. package/dist/chunk-KJ74PGBI.js.map +1 -0
  271. package/dist/chunk-KLAI7YSD.js +7 -0
  272. package/dist/chunk-KLAI7YSD.js.map +1 -0
  273. package/dist/chunk-KMENKVHP.js +110 -0
  274. package/dist/chunk-KMENKVHP.js.map +1 -0
  275. package/dist/chunk-KOAHN3L5.js +9 -0
  276. package/dist/chunk-KOAHN3L5.js.map +1 -0
  277. package/dist/chunk-KQXT3GDF.js +16 -0
  278. package/dist/chunk-KQXT3GDF.js.map +1 -0
  279. package/dist/chunk-L6J66EOL.js +44 -0
  280. package/dist/chunk-L6J66EOL.js.map +1 -0
  281. package/dist/chunk-LNUYM3ZX.js +26 -0
  282. package/dist/chunk-LNUYM3ZX.js.map +1 -0
  283. package/dist/chunk-LSKNTXY2.js +57 -0
  284. package/dist/chunk-LSKNTXY2.js.map +1 -0
  285. package/dist/chunk-LTEL7NEG.js +219 -0
  286. package/dist/chunk-LTEL7NEG.js.map +1 -0
  287. package/dist/chunk-LTVS74EO.js +45 -0
  288. package/dist/chunk-LTVS74EO.js.map +1 -0
  289. package/dist/chunk-LVDP2QOX.js +99 -0
  290. package/dist/chunk-LVDP2QOX.js.map +1 -0
  291. package/dist/chunk-LWLNQS3O.js +569 -0
  292. package/dist/chunk-LWLNQS3O.js.map +1 -0
  293. package/dist/chunk-LYKZAKVN.js +19 -0
  294. package/dist/chunk-LYKZAKVN.js.map +1 -0
  295. package/dist/chunk-M2NVOKGL.js +97 -0
  296. package/dist/chunk-M2NVOKGL.js.map +1 -0
  297. package/dist/chunk-M3UOD7TX.js +427 -0
  298. package/dist/chunk-M3UOD7TX.js.map +1 -0
  299. package/dist/chunk-M5C4XQO2.js +45 -0
  300. package/dist/chunk-M5C4XQO2.js.map +1 -0
  301. package/dist/chunk-M5DFGJF7.js +10 -0
  302. package/dist/chunk-M5DFGJF7.js.map +1 -0
  303. package/dist/chunk-MAXX5M6N.js +9 -0
  304. package/dist/chunk-MAXX5M6N.js.map +1 -0
  305. package/dist/chunk-MEAGFRLE.js +37 -0
  306. package/dist/chunk-MEAGFRLE.js.map +1 -0
  307. package/dist/chunk-MFYNCWAO.js +25 -0
  308. package/dist/chunk-MFYNCWAO.js.map +1 -0
  309. package/dist/chunk-MJ26PFRF.js +12 -0
  310. package/dist/chunk-MJ26PFRF.js.map +1 -0
  311. package/dist/chunk-MP2GRDUX.js +10 -0
  312. package/dist/chunk-MP2GRDUX.js.map +1 -0
  313. package/dist/chunk-MTQLUS5O.js +51 -0
  314. package/dist/chunk-MTQLUS5O.js.map +1 -0
  315. package/dist/chunk-MUDO3ZPJ.js +10 -0
  316. package/dist/chunk-MUDO3ZPJ.js.map +1 -0
  317. package/dist/chunk-N2Q3TZXW.js +9 -0
  318. package/dist/chunk-N2Q3TZXW.js.map +1 -0
  319. package/dist/chunk-N52KK6K5.js +48 -0
  320. package/dist/chunk-N52KK6K5.js.map +1 -0
  321. package/dist/chunk-N5F2YHLD.js +28 -0
  322. package/dist/chunk-N5F2YHLD.js.map +1 -0
  323. package/dist/chunk-NGX5YDCB.js +7 -0
  324. package/dist/chunk-NGX5YDCB.js.map +1 -0
  325. package/dist/chunk-NHDRXRXA.js +33 -0
  326. package/dist/chunk-NHDRXRXA.js.map +1 -0
  327. package/dist/chunk-NPK5ITEG.js +7 -0
  328. package/dist/chunk-NPK5ITEG.js.map +1 -0
  329. package/dist/chunk-NPTM6BGC.js +15 -0
  330. package/dist/chunk-NPTM6BGC.js.map +1 -0
  331. package/dist/chunk-NTNVW4BG.js +7 -0
  332. package/dist/chunk-NTNVW4BG.js.map +1 -0
  333. package/dist/chunk-OBASYXH2.js +26 -0
  334. package/dist/chunk-OBASYXH2.js.map +1 -0
  335. package/dist/chunk-OBQNTU5F.js +7 -0
  336. package/dist/chunk-OBQNTU5F.js.map +1 -0
  337. package/dist/chunk-OEHNS7YX.js +7 -0
  338. package/dist/chunk-OEHNS7YX.js.map +1 -0
  339. package/dist/chunk-OJAUFHEW.js +107 -0
  340. package/dist/chunk-OJAUFHEW.js.map +1 -0
  341. package/dist/chunk-ONW4BD2Z.js +38 -0
  342. package/dist/chunk-ONW4BD2Z.js.map +1 -0
  343. package/dist/chunk-OOXUZMZ7.js +9 -0
  344. package/dist/chunk-OOXUZMZ7.js.map +1 -0
  345. package/dist/chunk-OP3PIADD.js +45 -0
  346. package/dist/chunk-OP3PIADD.js.map +1 -0
  347. package/dist/chunk-OSDM6ZVT.js +7 -0
  348. package/dist/chunk-OSDM6ZVT.js.map +1 -0
  349. package/dist/chunk-OZEEIRCS.js +9 -0
  350. package/dist/chunk-OZEEIRCS.js.map +1 -0
  351. package/dist/chunk-PGSBJUJ4.js +9 -0
  352. package/dist/chunk-PGSBJUJ4.js.map +1 -0
  353. package/dist/chunk-PPIDZONA.js +38 -0
  354. package/dist/chunk-PPIDZONA.js.map +1 -0
  355. package/dist/chunk-PTMZQ7E3.js +7 -0
  356. package/dist/chunk-PTMZQ7E3.js.map +1 -0
  357. package/dist/chunk-PV24XKW2.js +11 -0
  358. package/dist/chunk-PV24XKW2.js.map +1 -0
  359. package/dist/chunk-PXU563OY.js +26 -0
  360. package/dist/chunk-PXU563OY.js.map +1 -0
  361. package/dist/chunk-Q2XYS26I.js +11 -0
  362. package/dist/chunk-Q2XYS26I.js.map +1 -0
  363. package/dist/chunk-Q5NG3DY7.js +31 -0
  364. package/dist/chunk-Q5NG3DY7.js.map +1 -0
  365. package/dist/chunk-QADXAWA6.js +71 -0
  366. package/dist/chunk-QADXAWA6.js.map +1 -0
  367. package/dist/chunk-QG2FZCJ6.js +7 -0
  368. package/dist/chunk-QG2FZCJ6.js.map +1 -0
  369. package/dist/chunk-QMLGJPHC.js +7 -0
  370. package/dist/chunk-QMLGJPHC.js.map +1 -0
  371. package/dist/chunk-QQKXAEXW.js +50 -0
  372. package/dist/chunk-QQKXAEXW.js.map +1 -0
  373. package/dist/chunk-QS3C4KCF.js +95 -0
  374. package/dist/chunk-QS3C4KCF.js.map +1 -0
  375. package/dist/chunk-R4HNE7TL.js +7 -0
  376. package/dist/chunk-R4HNE7TL.js.map +1 -0
  377. package/dist/chunk-R5PBXGKK.js +10 -0
  378. package/dist/chunk-R5PBXGKK.js.map +1 -0
  379. package/dist/chunk-RFQXCN62.js +13 -0
  380. package/dist/chunk-RFQXCN62.js.map +1 -0
  381. package/dist/chunk-RGPGW4ZJ.js +9 -0
  382. package/dist/chunk-RGPGW4ZJ.js.map +1 -0
  383. package/dist/chunk-RKBRRJY6.js +9 -0
  384. package/dist/chunk-RKBRRJY6.js.map +1 -0
  385. package/dist/chunk-RM6NFJ7V.js +32 -0
  386. package/dist/chunk-RM6NFJ7V.js.map +1 -0
  387. package/dist/chunk-RRYAXULQ.js +48 -0
  388. package/dist/chunk-RRYAXULQ.js.map +1 -0
  389. package/dist/chunk-RS4W2FAL.js +89 -0
  390. package/dist/chunk-RS4W2FAL.js.map +1 -0
  391. package/dist/chunk-RSUFDTAH.js +110 -0
  392. package/dist/chunk-RSUFDTAH.js.map +1 -0
  393. package/dist/chunk-S2XKXJNC.js +30 -0
  394. package/dist/chunk-S2XKXJNC.js.map +1 -0
  395. package/dist/chunk-S4NKJDRC.js +79 -0
  396. package/dist/chunk-S4NKJDRC.js.map +1 -0
  397. package/dist/chunk-S7QGB2FC.js +27 -0
  398. package/dist/chunk-S7QGB2FC.js.map +1 -0
  399. package/dist/chunk-SCL4FW6F.js +425 -0
  400. package/dist/chunk-SCL4FW6F.js.map +1 -0
  401. package/dist/chunk-SITF6GNM.js +7 -0
  402. package/dist/chunk-SITF6GNM.js.map +1 -0
  403. package/dist/chunk-SPCINICO.js +5 -0
  404. package/dist/chunk-SPCINICO.js.map +1 -0
  405. package/dist/chunk-SPOTTHMN.js +24 -0
  406. package/dist/chunk-SPOTTHMN.js.map +1 -0
  407. package/dist/chunk-SWYNIQHD.js +77 -0
  408. package/dist/chunk-SWYNIQHD.js.map +1 -0
  409. package/dist/chunk-SXXITYPP.js +69 -0
  410. package/dist/chunk-SXXITYPP.js.map +1 -0
  411. package/dist/chunk-T4YZKI3Y.js +133 -0
  412. package/dist/chunk-T4YZKI3Y.js.map +1 -0
  413. package/dist/chunk-T7AIKZ6A.js +44 -0
  414. package/dist/chunk-T7AIKZ6A.js.map +1 -0
  415. package/dist/chunk-T7EX6RI2.js +34 -0
  416. package/dist/chunk-T7EX6RI2.js.map +1 -0
  417. package/dist/chunk-TB3GE2MH.js +93 -0
  418. package/dist/chunk-TB3GE2MH.js.map +1 -0
  419. package/dist/chunk-TE4JFCHB.js +52 -0
  420. package/dist/chunk-TE4JFCHB.js.map +1 -0
  421. package/dist/chunk-TGQYCEFL.js +37 -0
  422. package/dist/chunk-TGQYCEFL.js.map +1 -0
  423. package/dist/chunk-TMTWPBFD.js +10 -0
  424. package/dist/chunk-TMTWPBFD.js.map +1 -0
  425. package/dist/chunk-TSAEQFDM.js +65 -0
  426. package/dist/chunk-TSAEQFDM.js.map +1 -0
  427. package/dist/chunk-U3FX24C6.js +1 -0
  428. package/dist/chunk-U3FX24C6.js.map +1 -0
  429. package/dist/chunk-U776U22S.js +45 -0
  430. package/dist/chunk-U776U22S.js.map +1 -0
  431. package/dist/chunk-UCBDCGYX.js +9 -0
  432. package/dist/chunk-UCBDCGYX.js.map +1 -0
  433. package/dist/chunk-UGNYASFC.js +59 -0
  434. package/dist/chunk-UGNYASFC.js.map +1 -0
  435. package/dist/chunk-UJTVBENE.js +7 -0
  436. package/dist/chunk-UJTVBENE.js.map +1 -0
  437. package/dist/chunk-UKVFVAOO.js +75 -0
  438. package/dist/chunk-UKVFVAOO.js.map +1 -0
  439. package/dist/chunk-URKWHZXA.js +25 -0
  440. package/dist/chunk-URKWHZXA.js.map +1 -0
  441. package/dist/chunk-UVKRO5ER.js +13 -0
  442. package/dist/chunk-UVKRO5ER.js.map +1 -0
  443. package/dist/chunk-V3D7FBSR.js +14 -0
  444. package/dist/chunk-V3D7FBSR.js.map +1 -0
  445. package/dist/chunk-VCVMCKZI.js +10 -0
  446. package/dist/chunk-VCVMCKZI.js.map +1 -0
  447. package/dist/chunk-VNGMGQF5.js +1 -0
  448. package/dist/chunk-VNGMGQF5.js.map +1 -0
  449. package/dist/chunk-VSK7766S.js +163 -0
  450. package/dist/chunk-VSK7766S.js.map +1 -0
  451. package/dist/chunk-VZLDFZC7.js +241 -0
  452. package/dist/chunk-VZLDFZC7.js.map +1 -0
  453. package/dist/chunk-W2KUESDN.js +25 -0
  454. package/dist/chunk-W2KUESDN.js.map +1 -0
  455. package/dist/chunk-W2SHHRYX.js +420 -0
  456. package/dist/chunk-W2SHHRYX.js.map +1 -0
  457. package/dist/chunk-WBLZ5GBM.js +158 -0
  458. package/dist/chunk-WBLZ5GBM.js.map +1 -0
  459. package/dist/chunk-WODJ2VQH.js +41 -0
  460. package/dist/chunk-WODJ2VQH.js.map +1 -0
  461. package/dist/chunk-WQXLL5IV.js +9 -0
  462. package/dist/chunk-WQXLL5IV.js.map +1 -0
  463. package/dist/chunk-WR3327CL.js +89 -0
  464. package/dist/chunk-WR3327CL.js.map +1 -0
  465. package/dist/chunk-WSBH5QD6.js +309 -0
  466. package/dist/chunk-WSBH5QD6.js.map +1 -0
  467. package/dist/chunk-WTHHXWQM.js +7 -0
  468. package/dist/chunk-WTHHXWQM.js.map +1 -0
  469. package/dist/chunk-WW56NFQS.js +7 -0
  470. package/dist/chunk-WW56NFQS.js.map +1 -0
  471. package/dist/chunk-WYVXNXZI.js +73 -0
  472. package/dist/chunk-WYVXNXZI.js.map +1 -0
  473. package/dist/chunk-X3MYMAS2.js +56 -0
  474. package/dist/chunk-X3MYMAS2.js.map +1 -0
  475. package/dist/chunk-X7CDYCQF.js +22 -0
  476. package/dist/chunk-X7CDYCQF.js.map +1 -0
  477. package/dist/chunk-XGVDXMS3.js +90 -0
  478. package/dist/chunk-XGVDXMS3.js.map +1 -0
  479. package/dist/chunk-XHXIXEGS.js +7 -0
  480. package/dist/chunk-XHXIXEGS.js.map +1 -0
  481. package/dist/chunk-XJ6HO3WP.js +46 -0
  482. package/dist/chunk-XJ6HO3WP.js.map +1 -0
  483. package/dist/chunk-XMR6HHTA.js +59 -0
  484. package/dist/chunk-XMR6HHTA.js.map +1 -0
  485. package/dist/chunk-XR2KBJIP.js +54 -0
  486. package/dist/chunk-XR2KBJIP.js.map +1 -0
  487. package/dist/chunk-XVN5W3A7.js +50 -0
  488. package/dist/chunk-XVN5W3A7.js.map +1 -0
  489. package/dist/chunk-XXYOJDOZ.js +11 -0
  490. package/dist/chunk-XXYOJDOZ.js.map +1 -0
  491. package/dist/chunk-XZROR7RJ.js +25 -0
  492. package/dist/chunk-XZROR7RJ.js.map +1 -0
  493. package/dist/chunk-YF3LWJL4.js +7 -0
  494. package/dist/chunk-YF3LWJL4.js.map +1 -0
  495. package/dist/chunk-YFM4P3Z3.js +309 -0
  496. package/dist/chunk-YFM4P3Z3.js.map +1 -0
  497. package/dist/chunk-YFVOBSKP.js +52 -0
  498. package/dist/chunk-YFVOBSKP.js.map +1 -0
  499. package/dist/chunk-YFZW72PC.js +45 -0
  500. package/dist/chunk-YFZW72PC.js.map +1 -0
  501. package/dist/chunk-YHTCXXEG.js +9 -0
  502. package/dist/chunk-YHTCXXEG.js.map +1 -0
  503. package/dist/chunk-YJVUJ6AA.js +93 -0
  504. package/dist/chunk-YJVUJ6AA.js.map +1 -0
  505. package/dist/chunk-YKB67FZ5.js +46 -0
  506. package/dist/chunk-YKB67FZ5.js.map +1 -0
  507. package/dist/chunk-YS2PK7QA.js +35 -0
  508. package/dist/chunk-YS2PK7QA.js.map +1 -0
  509. package/dist/chunk-YURDFQ6X.js +33 -0
  510. package/dist/chunk-YURDFQ6X.js.map +1 -0
  511. package/dist/chunk-YVCKIDL5.js +61 -0
  512. package/dist/chunk-YVCKIDL5.js.map +1 -0
  513. package/dist/chunk-YXO6NQ4E.js +49 -0
  514. package/dist/chunk-YXO6NQ4E.js.map +1 -0
  515. package/dist/chunk-Z2AEG3J7.js +53 -0
  516. package/dist/chunk-Z2AEG3J7.js.map +1 -0
  517. package/dist/chunk-Z4I2MQ7B.js +26 -0
  518. package/dist/chunk-Z4I2MQ7B.js.map +1 -0
  519. package/dist/chunk-ZBPKZKIJ.js +25 -0
  520. package/dist/chunk-ZBPKZKIJ.js.map +1 -0
  521. package/dist/chunk-ZCMJVQ6P.js +10 -0
  522. package/dist/chunk-ZCMJVQ6P.js.map +1 -0
  523. package/dist/chunk-ZCQ5UWVE.js +27 -0
  524. package/dist/chunk-ZCQ5UWVE.js.map +1 -0
  525. package/dist/chunk-ZFCTBLWX.js +12 -0
  526. package/dist/chunk-ZFCTBLWX.js.map +1 -0
  527. package/dist/chunk-ZJ6KVLUS.js +296 -0
  528. package/dist/chunk-ZJ6KVLUS.js.map +1 -0
  529. package/dist/chunk-ZRCFHUS4.js +37 -0
  530. package/dist/chunk-ZRCFHUS4.js.map +1 -0
  531. package/dist/chunk-ZSB6HGB5.js +50 -0
  532. package/dist/chunk-ZSB6HGB5.js.map +1 -0
  533. package/dist/chunk-ZSG6ROJA.js +45 -0
  534. package/dist/chunk-ZSG6ROJA.js.map +1 -0
  535. package/dist/chunk-ZSQIEOQO.js +61 -0
  536. package/dist/chunk-ZSQIEOQO.js.map +1 -0
  537. package/dist/chunk-ZTMXXISI.js +158 -0
  538. package/dist/chunk-ZTMXXISI.js.map +1 -0
  539. package/dist/chunk-ZUMPSWHW.js +138 -0
  540. package/dist/chunk-ZUMPSWHW.js.map +1 -0
  541. package/dist/chunk-ZUYSQ37E.js +88 -0
  542. package/dist/chunk-ZUYSQ37E.js.map +1 -0
  543. package/dist/components/base/index.cjs +156 -0
  544. package/dist/components/base/index.cjs.map +1 -0
  545. package/dist/components/base/index.js +15 -0
  546. package/dist/components/base/index.js.map +1 -0
  547. package/dist/components/base/types.cjs +19 -0
  548. package/dist/components/base/types.cjs.map +1 -0
  549. package/dist/components/base/types.js +1 -0
  550. package/dist/components/base/types.js.map +1 -0
  551. package/dist/components/buffer.cjs +184 -0
  552. package/dist/components/buffer.cjs.map +1 -0
  553. package/dist/components/buffer.js +18 -0
  554. package/dist/components/buffer.js.map +1 -0
  555. package/dist/components/captionsview.cjs +378 -0
  556. package/dist/components/captionsview.cjs.map +1 -0
  557. package/dist/components/captionsview.js +22 -0
  558. package/dist/components/captionsview.js.map +1 -0
  559. package/dist/components/controls/airplay.cjs +441 -0
  560. package/dist/components/controls/airplay.cjs.map +1 -0
  561. package/dist/components/controls/airplay.js +21 -0
  562. package/dist/components/controls/airplay.js.map +1 -0
  563. package/dist/components/controls/backward10.cjs +427 -0
  564. package/dist/components/controls/backward10.cjs.map +1 -0
  565. package/dist/components/controls/backward10.js +21 -0
  566. package/dist/components/controls/backward10.js.map +1 -0
  567. package/dist/components/controls/bignext.cjs +448 -0
  568. package/dist/components/controls/bignext.cjs.map +1 -0
  569. package/dist/components/controls/bignext.js +21 -0
  570. package/dist/components/controls/bignext.js.map +1 -0
  571. package/dist/components/controls/bigplaypause.cjs +440 -0
  572. package/dist/components/controls/bigplaypause.cjs.map +1 -0
  573. package/dist/components/controls/bigplaypause.js +21 -0
  574. package/dist/components/controls/bigplaypause.js.map +1 -0
  575. package/dist/components/controls/bigprev.cjs +448 -0
  576. package/dist/components/controls/bigprev.cjs.map +1 -0
  577. package/dist/components/controls/bigprev.js +21 -0
  578. package/dist/components/controls/bigprev.js.map +1 -0
  579. package/dist/components/controls/brightness/index.cjs +767 -0
  580. package/dist/components/controls/brightness/index.cjs.map +1 -0
  581. package/dist/components/controls/brightness/index.js +25 -0
  582. package/dist/components/controls/brightness/index.js.map +1 -0
  583. package/dist/components/controls/brightness/slider.cjs +460 -0
  584. package/dist/components/controls/brightness/slider.cjs.map +1 -0
  585. package/dist/components/controls/brightness/slider.js +21 -0
  586. package/dist/components/controls/brightness/slider.js.map +1 -0
  587. package/dist/components/controls/captions.cjs +452 -0
  588. package/dist/components/controls/captions.cjs.map +1 -0
  589. package/dist/components/controls/captions.js +21 -0
  590. package/dist/components/controls/captions.js.map +1 -0
  591. package/dist/components/controls/capture.cjs +455 -0
  592. package/dist/components/controls/capture.cjs.map +1 -0
  593. package/dist/components/controls/capture.js +21 -0
  594. package/dist/components/controls/capture.js.map +1 -0
  595. package/dist/components/controls/cast.cjs +441 -0
  596. package/dist/components/controls/cast.cjs.map +1 -0
  597. package/dist/components/controls/cast.js +21 -0
  598. package/dist/components/controls/cast.js.map +1 -0
  599. package/dist/components/controls/chapter.cjs +213 -0
  600. package/dist/components/controls/chapter.cjs.map +1 -0
  601. package/dist/components/controls/chapter.js +18 -0
  602. package/dist/components/controls/chapter.js.map +1 -0
  603. package/dist/components/controls/duration.cjs +217 -0
  604. package/dist/components/controls/duration.cjs.map +1 -0
  605. package/dist/components/controls/duration.js +18 -0
  606. package/dist/components/controls/duration.js.map +1 -0
  607. package/dist/components/controls/expandminiplayer.cjs +430 -0
  608. package/dist/components/controls/expandminiplayer.cjs.map +1 -0
  609. package/dist/components/controls/expandminiplayer.js +21 -0
  610. package/dist/components/controls/expandminiplayer.js.map +1 -0
  611. package/dist/components/controls/forward10.cjs +427 -0
  612. package/dist/components/controls/forward10.cjs.map +1 -0
  613. package/dist/components/controls/forward10.js +21 -0
  614. package/dist/components/controls/forward10.js.map +1 -0
  615. package/dist/components/controls/fullscreen.cjs +441 -0
  616. package/dist/components/controls/fullscreen.cjs.map +1 -0
  617. package/dist/components/controls/fullscreen.js +21 -0
  618. package/dist/components/controls/fullscreen.js.map +1 -0
  619. package/dist/components/controls/fullscreenlock.cjs +433 -0
  620. package/dist/components/controls/fullscreenlock.cjs.map +1 -0
  621. package/dist/components/controls/fullscreenlock.js +21 -0
  622. package/dist/components/controls/fullscreenlock.js.map +1 -0
  623. package/dist/components/controls/fullscreenorientation.cjs +436 -0
  624. package/dist/components/controls/fullscreenorientation.cjs.map +1 -0
  625. package/dist/components/controls/fullscreenorientation.js +21 -0
  626. package/dist/components/controls/fullscreenorientation.js.map +1 -0
  627. package/dist/components/controls/meta.cjs +298 -0
  628. package/dist/components/controls/meta.cjs.map +1 -0
  629. package/dist/components/controls/meta.js +18 -0
  630. package/dist/components/controls/meta.js.map +1 -0
  631. package/dist/components/controls/next.cjs +444 -0
  632. package/dist/components/controls/next.cjs.map +1 -0
  633. package/dist/components/controls/next.js +21 -0
  634. package/dist/components/controls/next.js.map +1 -0
  635. package/dist/components/controls/objectfit.cjs +444 -0
  636. package/dist/components/controls/objectfit.cjs.map +1 -0
  637. package/dist/components/controls/objectfit.js +21 -0
  638. package/dist/components/controls/objectfit.js.map +1 -0
  639. package/dist/components/controls/pictureinpicture.cjs +441 -0
  640. package/dist/components/controls/pictureinpicture.cjs.map +1 -0
  641. package/dist/components/controls/pictureinpicture.js +21 -0
  642. package/dist/components/controls/pictureinpicture.js.map +1 -0
  643. package/dist/components/controls/playpause.cjs +441 -0
  644. package/dist/components/controls/playpause.cjs.map +1 -0
  645. package/dist/components/controls/playpause.js +21 -0
  646. package/dist/components/controls/playpause.js.map +1 -0
  647. package/dist/components/controls/prev.cjs +444 -0
  648. package/dist/components/controls/prev.cjs.map +1 -0
  649. package/dist/components/controls/prev.js +21 -0
  650. package/dist/components/controls/prev.js.map +1 -0
  651. package/dist/components/controls/removeminiplayer.cjs +432 -0
  652. package/dist/components/controls/removeminiplayer.cjs.map +1 -0
  653. package/dist/components/controls/removeminiplayer.js +21 -0
  654. package/dist/components/controls/removeminiplayer.js.map +1 -0
  655. package/dist/components/controls/settings.cjs +443 -0
  656. package/dist/components/controls/settings.cjs.map +1 -0
  657. package/dist/components/controls/settings.js +21 -0
  658. package/dist/components/controls/settings.js.map +1 -0
  659. package/dist/components/controls/theater.cjs +441 -0
  660. package/dist/components/controls/theater.cjs.map +1 -0
  661. package/dist/components/controls/theater.js +21 -0
  662. package/dist/components/controls/theater.js.map +1 -0
  663. package/dist/components/controls/time.cjs +230 -0
  664. package/dist/components/controls/time.cjs.map +1 -0
  665. package/dist/components/controls/time.js +18 -0
  666. package/dist/components/controls/time.js.map +1 -0
  667. package/dist/components/controls/timeandduration.cjs +251 -0
  668. package/dist/components/controls/timeandduration.cjs.map +1 -0
  669. package/dist/components/controls/timeandduration.js +18 -0
  670. package/dist/components/controls/timeandduration.js.map +1 -0
  671. package/dist/components/controls/timeline/index.cjs +713 -0
  672. package/dist/components/controls/timeline/index.cjs.map +1 -0
  673. package/dist/components/controls/timeline/index.js +25 -0
  674. package/dist/components/controls/timeline/index.js.map +1 -0
  675. package/dist/components/controls/timeline/types.cjs +19 -0
  676. package/dist/components/controls/timeline/types.cjs.map +1 -0
  677. package/dist/components/controls/timeline/types.js +1 -0
  678. package/dist/components/controls/timeline/types.js.map +1 -0
  679. package/dist/components/controls/volume/index.cjs +767 -0
  680. package/dist/components/controls/volume/index.cjs.map +1 -0
  681. package/dist/components/controls/volume/index.js +25 -0
  682. package/dist/components/controls/volume/index.js.map +1 -0
  683. package/dist/components/controls/volume/slider.cjs +460 -0
  684. package/dist/components/controls/volume/slider.cjs.map +1 -0
  685. package/dist/components/controls/volume/slider.js +21 -0
  686. package/dist/components/controls/volume/slider.js.map +1 -0
  687. package/dist/components/holders/airplayplaceholder.cjs +446 -0
  688. package/dist/components/holders/airplayplaceholder.cjs.map +1 -0
  689. package/dist/components/holders/airplayplaceholder.js +21 -0
  690. package/dist/components/holders/airplayplaceholder.js.map +1 -0
  691. package/dist/components/holders/castplaceholder.cjs +446 -0
  692. package/dist/components/holders/castplaceholder.cjs.map +1 -0
  693. package/dist/components/holders/castplaceholder.js +21 -0
  694. package/dist/components/holders/castplaceholder.js.map +1 -0
  695. package/dist/components/holders/pipplaceholder.cjs +446 -0
  696. package/dist/components/holders/pipplaceholder.cjs.map +1 -0
  697. package/dist/components/holders/pipplaceholder.js +30 -0
  698. package/dist/components/holders/pipplaceholder.js.map +1 -0
  699. package/dist/components/icons/add.cjs +27 -0
  700. package/dist/components/icons/add.cjs.map +1 -0
  701. package/dist/components/icons/add.js +8 -0
  702. package/dist/components/icons/add.js.map +1 -0
  703. package/dist/components/icons/airplay.cjs +30 -0
  704. package/dist/components/icons/airplay.cjs.map +1 -0
  705. package/dist/components/icons/airplay.js +8 -0
  706. package/dist/components/icons/airplay.js.map +1 -0
  707. package/dist/components/icons/airplayplaceholder.cjs +39 -0
  708. package/dist/components/icons/airplayplaceholder.cjs.map +1 -0
  709. package/dist/components/icons/airplayplaceholder.js +8 -0
  710. package/dist/components/icons/airplayplaceholder.js.map +1 -0
  711. package/dist/components/icons/ambience.cjs +27 -0
  712. package/dist/components/icons/ambience.cjs.map +1 -0
  713. package/dist/components/icons/ambience.js +8 -0
  714. package/dist/components/icons/ambience.js.map +1 -0
  715. package/dist/components/icons/audiotrack.cjs +27 -0
  716. package/dist/components/icons/audiotrack.cjs.map +1 -0
  717. package/dist/components/icons/audiotrack.js +8 -0
  718. package/dist/components/icons/audiotrack.js.map +1 -0
  719. package/dist/components/icons/autoplay.cjs +27 -0
  720. package/dist/components/icons/autoplay.cjs.map +1 -0
  721. package/dist/components/icons/autoplay.js +8 -0
  722. package/dist/components/icons/autoplay.js.map +1 -0
  723. package/dist/components/icons/backward10.cjs +29 -0
  724. package/dist/components/icons/backward10.cjs.map +1 -0
  725. package/dist/components/icons/backward10.js +8 -0
  726. package/dist/components/icons/backward10.js.map +1 -0
  727. package/dist/components/icons/brightnessdark.cjs +29 -0
  728. package/dist/components/icons/brightnessdark.cjs.map +1 -0
  729. package/dist/components/icons/brightnessdark.js +8 -0
  730. package/dist/components/icons/brightnessdark.js.map +1 -0
  731. package/dist/components/icons/brightnesshigh.cjs +29 -0
  732. package/dist/components/icons/brightnesshigh.cjs.map +1 -0
  733. package/dist/components/icons/brightnesshigh.js +8 -0
  734. package/dist/components/icons/brightnesshigh.js.map +1 -0
  735. package/dist/components/icons/brightnesslow.cjs +29 -0
  736. package/dist/components/icons/brightnesslow.cjs.map +1 -0
  737. package/dist/components/icons/brightnesslow.js +8 -0
  738. package/dist/components/icons/brightnesslow.js.map +1 -0
  739. package/dist/components/icons/bwd.cjs +31 -0
  740. package/dist/components/icons/bwd.cjs.map +1 -0
  741. package/dist/components/icons/bwd.js +8 -0
  742. package/dist/components/icons/bwd.js.map +1 -0
  743. package/dist/components/icons/captions.cjs +29 -0
  744. package/dist/components/icons/captions.cjs.map +1 -0
  745. package/dist/components/icons/captions.js +8 -0
  746. package/dist/components/icons/captions.js.map +1 -0
  747. package/dist/components/icons/capture.cjs +29 -0
  748. package/dist/components/icons/capture.cjs.map +1 -0
  749. package/dist/components/icons/capture.js +8 -0
  750. package/dist/components/icons/capture.js.map +1 -0
  751. package/dist/components/icons/cast.cjs +29 -0
  752. package/dist/components/icons/cast.cjs.map +1 -0
  753. package/dist/components/icons/cast.js +8 -0
  754. package/dist/components/icons/cast.js.map +1 -0
  755. package/dist/components/icons/castplaceholder.cjs +42 -0
  756. package/dist/components/icons/castplaceholder.cjs.map +1 -0
  757. package/dist/components/icons/castplaceholder.js +8 -0
  758. package/dist/components/icons/castplaceholder.js.map +1 -0
  759. package/dist/components/icons/chapters.cjs +27 -0
  760. package/dist/components/icons/chapters.cjs.map +1 -0
  761. package/dist/components/icons/chapters.js +8 -0
  762. package/dist/components/icons/chapters.js.map +1 -0
  763. package/dist/components/icons/configure.cjs +27 -0
  764. package/dist/components/icons/configure.cjs.map +1 -0
  765. package/dist/components/icons/configure.js +8 -0
  766. package/dist/components/icons/configure.js.map +1 -0
  767. package/dist/components/icons/deleteicon.cjs +27 -0
  768. package/dist/components/icons/deleteicon.cjs.map +1 -0
  769. package/dist/components/icons/deleteicon.js +8 -0
  770. package/dist/components/icons/deleteicon.js.map +1 -0
  771. package/dist/components/icons/doubletriangleleft.cjs +27 -0
  772. package/dist/components/icons/doubletriangleleft.cjs.map +1 -0
  773. package/dist/components/icons/doubletriangleleft.js +8 -0
  774. package/dist/components/icons/doubletriangleleft.js.map +1 -0
  775. package/dist/components/icons/doubletriangleright.cjs +27 -0
  776. package/dist/components/icons/doubletriangleright.cjs.map +1 -0
  777. package/dist/components/icons/doubletriangleright.js +8 -0
  778. package/dist/components/icons/doubletriangleright.js.map +1 -0
  779. package/dist/components/icons/dragindicator.cjs +27 -0
  780. package/dist/components/icons/dragindicator.cjs.map +1 -0
  781. package/dist/components/icons/dragindicator.js +8 -0
  782. package/dist/components/icons/dragindicator.js.map +1 -0
  783. package/dist/components/icons/edit.cjs +27 -0
  784. package/dist/components/icons/edit.cjs.map +1 -0
  785. package/dist/components/icons/edit.js +8 -0
  786. package/dist/components/icons/edit.js.map +1 -0
  787. package/dist/components/icons/enterfullscreen.cjs +32 -0
  788. package/dist/components/icons/enterfullscreen.cjs.map +1 -0
  789. package/dist/components/icons/enterfullscreen.js +8 -0
  790. package/dist/components/icons/enterfullscreen.js.map +1 -0
  791. package/dist/components/icons/enterpip.cjs +29 -0
  792. package/dist/components/icons/enterpip.cjs.map +1 -0
  793. package/dist/components/icons/enterpip.js +8 -0
  794. package/dist/components/icons/enterpip.js.map +1 -0
  795. package/dist/components/icons/entertheater.cjs +29 -0
  796. package/dist/components/icons/entertheater.cjs.map +1 -0
  797. package/dist/components/icons/entertheater.js +8 -0
  798. package/dist/components/icons/entertheater.js.map +1 -0
  799. package/dist/components/icons/expandminiplayer.cjs +29 -0
  800. package/dist/components/icons/expandminiplayer.cjs.map +1 -0
  801. package/dist/components/icons/expandminiplayer.js +8 -0
  802. package/dist/components/icons/expandminiplayer.js.map +1 -0
  803. package/dist/components/icons/forward10.cjs +29 -0
  804. package/dist/components/icons/forward10.cjs.map +1 -0
  805. package/dist/components/icons/forward10.js +8 -0
  806. package/dist/components/icons/forward10.js.map +1 -0
  807. package/dist/components/icons/fullscreenorientation.cjs +30 -0
  808. package/dist/components/icons/fullscreenorientation.cjs.map +1 -0
  809. package/dist/components/icons/fullscreenorientation.js +8 -0
  810. package/dist/components/icons/fullscreenorientation.js.map +1 -0
  811. package/dist/components/icons/fwd.cjs +31 -0
  812. package/dist/components/icons/fwd.cjs.map +1 -0
  813. package/dist/components/icons/fwd.js +8 -0
  814. package/dist/components/icons/fwd.js.map +1 -0
  815. package/dist/components/icons/leavefullscreen.cjs +32 -0
  816. package/dist/components/icons/leavefullscreen.cjs.map +1 -0
  817. package/dist/components/icons/leavefullscreen.js +8 -0
  818. package/dist/components/icons/leavefullscreen.js.map +1 -0
  819. package/dist/components/icons/leavepip.cjs +29 -0
  820. package/dist/components/icons/leavepip.cjs.map +1 -0
  821. package/dist/components/icons/leavepip.js +8 -0
  822. package/dist/components/icons/leavepip.js.map +1 -0
  823. package/dist/components/icons/leavetheater.cjs +29 -0
  824. package/dist/components/icons/leavetheater.cjs.map +1 -0
  825. package/dist/components/icons/leavetheater.js +8 -0
  826. package/dist/components/icons/leavetheater.js.map +1 -0
  827. package/dist/components/icons/lock.cjs +30 -0
  828. package/dist/components/icons/lock.cjs.map +1 -0
  829. package/dist/components/icons/lock.js +8 -0
  830. package/dist/components/icons/lock.js.map +1 -0
  831. package/dist/components/icons/loop.cjs +27 -0
  832. package/dist/components/icons/loop.cjs.map +1 -0
  833. package/dist/components/icons/loop.js +8 -0
  834. package/dist/components/icons/loop.js.map +1 -0
  835. package/dist/components/icons/next.cjs +30 -0
  836. package/dist/components/icons/next.cjs.map +1 -0
  837. package/dist/components/icons/next.js +8 -0
  838. package/dist/components/icons/next.js.map +1 -0
  839. package/dist/components/icons/objectfitcontain.cjs +32 -0
  840. package/dist/components/icons/objectfitcontain.cjs.map +1 -0
  841. package/dist/components/icons/objectfitcontain.js +8 -0
  842. package/dist/components/icons/objectfitcontain.js.map +1 -0
  843. package/dist/components/icons/objectfitcover.cjs +32 -0
  844. package/dist/components/icons/objectfitcover.cjs.map +1 -0
  845. package/dist/components/icons/objectfitcover.js +8 -0
  846. package/dist/components/icons/objectfitcover.js.map +1 -0
  847. package/dist/components/icons/objectfitfill.cjs +32 -0
  848. package/dist/components/icons/objectfitfill.cjs.map +1 -0
  849. package/dist/components/icons/objectfitfill.js +8 -0
  850. package/dist/components/icons/objectfitfill.js.map +1 -0
  851. package/dist/components/icons/pause.cjs +29 -0
  852. package/dist/components/icons/pause.cjs.map +1 -0
  853. package/dist/components/icons/pause.js +8 -0
  854. package/dist/components/icons/pause.js.map +1 -0
  855. package/dist/components/icons/pipplaceholder.cjs +50 -0
  856. package/dist/components/icons/pipplaceholder.cjs.map +1 -0
  857. package/dist/components/icons/pipplaceholder.js +8 -0
  858. package/dist/components/icons/pipplaceholder.js.map +1 -0
  859. package/dist/components/icons/play.cjs +29 -0
  860. package/dist/components/icons/play.cjs.map +1 -0
  861. package/dist/components/icons/play.js +8 -0
  862. package/dist/components/icons/play.js.map +1 -0
  863. package/dist/components/icons/playbackrate.cjs +27 -0
  864. package/dist/components/icons/playbackrate.cjs.map +1 -0
  865. package/dist/components/icons/playbackrate.js +8 -0
  866. package/dist/components/icons/playbackrate.js.map +1 -0
  867. package/dist/components/icons/playlist.cjs +27 -0
  868. package/dist/components/icons/playlist.cjs.map +1 -0
  869. package/dist/components/icons/playlist.js +8 -0
  870. package/dist/components/icons/playlist.js.map +1 -0
  871. package/dist/components/icons/prev.cjs +30 -0
  872. package/dist/components/icons/prev.cjs.map +1 -0
  873. package/dist/components/icons/prev.js +8 -0
  874. package/dist/components/icons/prev.js.map +1 -0
  875. package/dist/components/icons/quality.cjs +27 -0
  876. package/dist/components/icons/quality.cjs.map +1 -0
  877. package/dist/components/icons/quality.js +8 -0
  878. package/dist/components/icons/quality.js.map +1 -0
  879. package/dist/components/icons/removeminiplayer.cjs +29 -0
  880. package/dist/components/icons/removeminiplayer.cjs.map +1 -0
  881. package/dist/components/icons/removeminiplayer.js +8 -0
  882. package/dist/components/icons/removeminiplayer.js.map +1 -0
  883. package/dist/components/icons/replay.cjs +29 -0
  884. package/dist/components/icons/replay.cjs.map +1 -0
  885. package/dist/components/icons/replay.js +8 -0
  886. package/dist/components/icons/replay.js.map +1 -0
  887. package/dist/components/icons/returnback.cjs +30 -0
  888. package/dist/components/icons/returnback.cjs.map +1 -0
  889. package/dist/components/icons/returnback.js +8 -0
  890. package/dist/components/icons/returnback.js.map +1 -0
  891. package/dist/components/icons/settings.cjs +29 -0
  892. package/dist/components/icons/settings.cjs.map +1 -0
  893. package/dist/components/icons/settings.js +8 -0
  894. package/dist/components/icons/settings.js.map +1 -0
  895. package/dist/components/icons/shuffle.cjs +27 -0
  896. package/dist/components/icons/shuffle.cjs.map +1 -0
  897. package/dist/components/icons/shuffle.js +8 -0
  898. package/dist/components/icons/shuffle.js.map +1 -0
  899. package/dist/components/icons/subtitles.cjs +29 -0
  900. package/dist/components/icons/subtitles.cjs.map +1 -0
  901. package/dist/components/icons/subtitles.js +8 -0
  902. package/dist/components/icons/subtitles.js.map +1 -0
  903. package/dist/components/icons/timer.cjs +27 -0
  904. package/dist/components/icons/timer.cjs.map +1 -0
  905. package/dist/components/icons/timer.js +8 -0
  906. package/dist/components/icons/timer.js.map +1 -0
  907. package/dist/components/icons/triangleleft.cjs +29 -0
  908. package/dist/components/icons/triangleleft.cjs.map +1 -0
  909. package/dist/components/icons/triangleleft.js +8 -0
  910. package/dist/components/icons/triangleleft.js.map +1 -0
  911. package/dist/components/icons/tripletriangleleft.cjs +27 -0
  912. package/dist/components/icons/tripletriangleleft.cjs.map +1 -0
  913. package/dist/components/icons/tripletriangleleft.js +8 -0
  914. package/dist/components/icons/tripletriangleleft.js.map +1 -0
  915. package/dist/components/icons/tripletriangleright.cjs +27 -0
  916. package/dist/components/icons/tripletriangleright.cjs.map +1 -0
  917. package/dist/components/icons/tripletriangleright.js +8 -0
  918. package/dist/components/icons/tripletriangleright.js.map +1 -0
  919. package/dist/components/icons/unlock.cjs +30 -0
  920. package/dist/components/icons/unlock.cjs.map +1 -0
  921. package/dist/components/icons/unlock.js +8 -0
  922. package/dist/components/icons/unlock.js.map +1 -0
  923. package/dist/components/icons/videotrack.cjs +27 -0
  924. package/dist/components/icons/videotrack.cjs.map +1 -0
  925. package/dist/components/icons/videotrack.js +8 -0
  926. package/dist/components/icons/videotrack.js.map +1 -0
  927. package/dist/components/icons/volumehigh.cjs +29 -0
  928. package/dist/components/icons/volumehigh.cjs.map +1 -0
  929. package/dist/components/icons/volumehigh.js +8 -0
  930. package/dist/components/icons/volumehigh.js.map +1 -0
  931. package/dist/components/icons/volumelow.cjs +29 -0
  932. package/dist/components/icons/volumelow.cjs.map +1 -0
  933. package/dist/components/icons/volumelow.js +8 -0
  934. package/dist/components/icons/volumelow.js.map +1 -0
  935. package/dist/components/icons/volumemuted.cjs +29 -0
  936. package/dist/components/icons/volumemuted.cjs.map +1 -0
  937. package/dist/components/icons/volumemuted.js +8 -0
  938. package/dist/components/icons/volumemuted.js.map +1 -0
  939. package/dist/components/icons/z-register.cjs +633 -0
  940. package/dist/components/icons/z-register.cjs.map +1 -0
  941. package/dist/components/icons/z-register.js +66 -0
  942. package/dist/components/icons/z-register.js.map +1 -0
  943. package/dist/components/notifiers/airplay.cjs +450 -0
  944. package/dist/components/notifiers/airplay.cjs.map +1 -0
  945. package/dist/components/notifiers/airplay.js +22 -0
  946. package/dist/components/notifiers/airplay.js.map +1 -0
  947. package/dist/components/notifiers/base.cjs +191 -0
  948. package/dist/components/notifiers/base.cjs.map +1 -0
  949. package/dist/components/notifiers/base.js +16 -0
  950. package/dist/components/notifiers/base.js.map +1 -0
  951. package/dist/components/notifiers/brightness.cjs +469 -0
  952. package/dist/components/notifiers/brightness.cjs.map +1 -0
  953. package/dist/components/notifiers/brightness.js +22 -0
  954. package/dist/components/notifiers/brightness.js.map +1 -0
  955. package/dist/components/notifiers/cancelscrub.cjs +216 -0
  956. package/dist/components/notifiers/cancelscrub.cjs.map +1 -0
  957. package/dist/components/notifiers/cancelscrub.js +19 -0
  958. package/dist/components/notifiers/cancelscrub.js.map +1 -0
  959. package/dist/components/notifiers/captions.cjs +450 -0
  960. package/dist/components/notifiers/captions.cjs.map +1 -0
  961. package/dist/components/notifiers/captions.js +22 -0
  962. package/dist/components/notifiers/captions.js.map +1 -0
  963. package/dist/components/notifiers/capture.cjs +450 -0
  964. package/dist/components/notifiers/capture.cjs.map +1 -0
  965. package/dist/components/notifiers/capture.js +22 -0
  966. package/dist/components/notifiers/capture.js.map +1 -0
  967. package/dist/components/notifiers/cast.cjs +450 -0
  968. package/dist/components/notifiers/cast.cjs.map +1 -0
  969. package/dist/components/notifiers/cast.js +22 -0
  970. package/dist/components/notifiers/cast.js.map +1 -0
  971. package/dist/components/notifiers/chapter.cjs +225 -0
  972. package/dist/components/notifiers/chapter.cjs.map +1 -0
  973. package/dist/components/notifiers/chapter.js +19 -0
  974. package/dist/components/notifiers/chapter.js.map +1 -0
  975. package/dist/components/notifiers/fastplay.cjs +467 -0
  976. package/dist/components/notifiers/fastplay.cjs.map +1 -0
  977. package/dist/components/notifiers/fastplay.js +22 -0
  978. package/dist/components/notifiers/fastplay.js.map +1 -0
  979. package/dist/components/notifiers/fwdbwd.cjs +457 -0
  980. package/dist/components/notifiers/fwdbwd.cjs.map +1 -0
  981. package/dist/components/notifiers/fwdbwd.js +22 -0
  982. package/dist/components/notifiers/fwdbwd.js.map +1 -0
  983. package/dist/components/notifiers/objectfit.cjs +468 -0
  984. package/dist/components/notifiers/objectfit.cjs.map +1 -0
  985. package/dist/components/notifiers/objectfit.js +22 -0
  986. package/dist/components/notifiers/objectfit.js.map +1 -0
  987. package/dist/components/notifiers/playbackrate.cjs +466 -0
  988. package/dist/components/notifiers/playbackrate.cjs.map +1 -0
  989. package/dist/components/notifiers/playbackrate.js +22 -0
  990. package/dist/components/notifiers/playbackrate.js.map +1 -0
  991. package/dist/components/notifiers/playpause.cjs +457 -0
  992. package/dist/components/notifiers/playpause.cjs.map +1 -0
  993. package/dist/components/notifiers/playpause.js +22 -0
  994. package/dist/components/notifiers/playpause.js.map +1 -0
  995. package/dist/components/notifiers/prevnext.cjs +457 -0
  996. package/dist/components/notifiers/prevnext.cjs.map +1 -0
  997. package/dist/components/notifiers/prevnext.js +22 -0
  998. package/dist/components/notifiers/prevnext.js.map +1 -0
  999. package/dist/components/notifiers/scrub.cjs +449 -0
  1000. package/dist/components/notifiers/scrub.cjs.map +1 -0
  1001. package/dist/components/notifiers/scrub.js +22 -0
  1002. package/dist/components/notifiers/scrub.js.map +1 -0
  1003. package/dist/components/notifiers/timer.cjs +451 -0
  1004. package/dist/components/notifiers/timer.cjs.map +1 -0
  1005. package/dist/components/notifiers/timer.js +22 -0
  1006. package/dist/components/notifiers/timer.js.map +1 -0
  1007. package/dist/components/notifiers/touchbrightness.cjs +474 -0
  1008. package/dist/components/notifiers/touchbrightness.cjs.map +1 -0
  1009. package/dist/components/notifiers/touchbrightness.js +22 -0
  1010. package/dist/components/notifiers/touchbrightness.js.map +1 -0
  1011. package/dist/components/notifiers/touchtimeline.cjs +218 -0
  1012. package/dist/components/notifiers/touchtimeline.cjs.map +1 -0
  1013. package/dist/components/notifiers/touchtimeline.js +21 -0
  1014. package/dist/components/notifiers/touchtimeline.js.map +1 -0
  1015. package/dist/components/notifiers/touchvolume.cjs +474 -0
  1016. package/dist/components/notifiers/touchvolume.cjs.map +1 -0
  1017. package/dist/components/notifiers/touchvolume.js +22 -0
  1018. package/dist/components/notifiers/touchvolume.js.map +1 -0
  1019. package/dist/components/notifiers/volume.cjs +469 -0
  1020. package/dist/components/notifiers/volume.cjs.map +1 -0
  1021. package/dist/components/notifiers/volume.js +22 -0
  1022. package/dist/components/notifiers/volume.js.map +1 -0
  1023. package/dist/components/notifiers/z-register.cjs +778 -0
  1024. package/dist/components/notifiers/z-register.cjs.map +1 -0
  1025. package/dist/components/notifiers/z-register.js +36 -0
  1026. package/dist/components/notifiers/z-register.js.map +1 -0
  1027. package/dist/components/rangeinput/build.cjs +52 -0
  1028. package/dist/components/rangeinput/build.cjs.map +1 -0
  1029. package/dist/components/rangeinput/build.js +8 -0
  1030. package/dist/components/rangeinput/build.js.map +1 -0
  1031. package/dist/components/rangeinput/index.cjs +433 -0
  1032. package/dist/components/rangeinput/index.cjs.map +1 -0
  1033. package/dist/components/rangeinput/index.js +20 -0
  1034. package/dist/components/rangeinput/index.js.map +1 -0
  1035. package/dist/components/rangeinput/types.cjs +19 -0
  1036. package/dist/components/rangeinput/types.cjs.map +1 -0
  1037. package/dist/components/rangeinput/types.js +1 -0
  1038. package/dist/components/rangeinput/types.js.map +1 -0
  1039. package/dist/components/screenlock.cjs +438 -0
  1040. package/dist/components/screenlock.cjs.map +1 -0
  1041. package/dist/components/screenlock.js +21 -0
  1042. package/dist/components/screenlock.js.map +1 -0
  1043. package/dist/components/z-register.cjs +2345 -0
  1044. package/dist/components/z-register.cjs.map +1 -0
  1045. package/dist/components/z-register.js +64 -0
  1046. package/dist/components/z-register.js.map +1 -0
  1047. package/dist/consts/actions.cjs +79 -0
  1048. package/dist/consts/actions.cjs.map +1 -0
  1049. package/dist/consts/actions.js +8 -0
  1050. package/dist/consts/actions.js.map +1 -0
  1051. package/dist/consts/config.cjs +105 -0
  1052. package/dist/consts/config.cjs.map +1 -0
  1053. package/dist/consts/config.js +9 -0
  1054. package/dist/consts/config.js.map +1 -0
  1055. package/dist/consts/generics.cjs +29 -0
  1056. package/dist/consts/generics.cjs.map +1 -0
  1057. package/dist/consts/generics.js +10 -0
  1058. package/dist/consts/generics.js.map +1 -0
  1059. package/dist/consts/media.cjs +201 -0
  1060. package/dist/consts/media.cjs.map +1 -0
  1061. package/dist/consts/media.js +16 -0
  1062. package/dist/consts/media.js.map +1 -0
  1063. package/dist/core/controllable.cjs +91 -0
  1064. package/dist/core/controllable.cjs.map +1 -0
  1065. package/dist/core/controllable.js +13 -0
  1066. package/dist/core/controllable.js.map +1 -0
  1067. package/dist/core/controller.cjs +1664 -0
  1068. package/dist/core/controller.cjs.map +1 -0
  1069. package/dist/core/controller.js +27 -0
  1070. package/dist/core/controller.js.map +1 -0
  1071. package/dist/core/registries.cjs +268 -0
  1072. package/dist/core/registries.cjs.map +1 -0
  1073. package/dist/core/registries.js +24 -0
  1074. package/dist/core/registries.js.map +1 -0
  1075. package/dist/index.cjs +1934 -0
  1076. package/dist/index.cjs.map +1 -0
  1077. package/dist/index.css +3148 -0
  1078. package/dist/index.css.map +1 -0
  1079. package/dist/index.js +75 -0
  1080. package/dist/index.js.map +1 -0
  1081. package/dist/init.cjs +1890 -0
  1082. package/dist/init.cjs.map +1 -0
  1083. package/dist/init.js +24 -0
  1084. package/dist/init.js.map +1 -0
  1085. package/dist/plugs/base/index.cjs +407 -0
  1086. package/dist/plugs/base/index.cjs.map +1 -0
  1087. package/dist/plugs/base/index.js +19 -0
  1088. package/dist/plugs/base/index.js.map +1 -0
  1089. package/dist/plugs/base/slider.cjs +458 -0
  1090. package/dist/plugs/base/slider.cjs.map +1 -0
  1091. package/dist/plugs/base/slider.js +18 -0
  1092. package/dist/plugs/base/slider.js.map +1 -0
  1093. package/dist/plugs/base/types.cjs +19 -0
  1094. package/dist/plugs/base/types.cjs.map +1 -0
  1095. package/dist/plugs/base/types.js +1 -0
  1096. package/dist/plugs/base/types.js.map +1 -0
  1097. package/dist/plugs/main/disabled/build.cjs +27 -0
  1098. package/dist/plugs/main/disabled/build.cjs.map +1 -0
  1099. package/dist/plugs/main/disabled/build.js +8 -0
  1100. package/dist/plugs/main/disabled/build.js.map +1 -0
  1101. package/dist/plugs/main/disabled/index.cjs +421 -0
  1102. package/dist/plugs/main/disabled/index.cjs.map +1 -0
  1103. package/dist/plugs/main/disabled/index.js +22 -0
  1104. package/dist/plugs/main/disabled/index.js.map +1 -0
  1105. package/dist/plugs/main/disabled/types.cjs +19 -0
  1106. package/dist/plugs/main/disabled/types.cjs.map +1 -0
  1107. package/dist/plugs/main/disabled/types.js +1 -0
  1108. package/dist/plugs/main/disabled/types.js.map +1 -0
  1109. package/dist/plugs/main/lightState/build.cjs +34 -0
  1110. package/dist/plugs/main/lightState/build.cjs.map +1 -0
  1111. package/dist/plugs/main/lightState/build.js +8 -0
  1112. package/dist/plugs/main/lightState/build.js.map +1 -0
  1113. package/dist/plugs/main/lightState/index.cjs +458 -0
  1114. package/dist/plugs/main/lightState/index.cjs.map +1 -0
  1115. package/dist/plugs/main/lightState/index.js +22 -0
  1116. package/dist/plugs/main/lightState/index.js.map +1 -0
  1117. package/dist/plugs/main/lightState/types.cjs +19 -0
  1118. package/dist/plugs/main/lightState/types.cjs.map +1 -0
  1119. package/dist/plugs/main/lightState/types.js +1 -0
  1120. package/dist/plugs/main/lightState/types.js.map +1 -0
  1121. package/dist/plugs/main/playlist/build.cjs +59 -0
  1122. package/dist/plugs/main/playlist/build.cjs.map +1 -0
  1123. package/dist/plugs/main/playlist/build.js +10 -0
  1124. package/dist/plugs/main/playlist/build.js.map +1 -0
  1125. package/dist/plugs/main/playlist/index.cjs +511 -0
  1126. package/dist/plugs/main/playlist/index.cjs.map +1 -0
  1127. package/dist/plugs/main/playlist/index.js +25 -0
  1128. package/dist/plugs/main/playlist/index.js.map +1 -0
  1129. package/dist/plugs/main/playlist/types.cjs +19 -0
  1130. package/dist/plugs/main/playlist/types.cjs.map +1 -0
  1131. package/dist/plugs/main/playlist/types.js +1 -0
  1132. package/dist/plugs/main/playlist/types.js.map +1 -0
  1133. package/dist/plugs/main/skeleton/build.cjs +29 -0
  1134. package/dist/plugs/main/skeleton/build.cjs.map +1 -0
  1135. package/dist/plugs/main/skeleton/build.js +8 -0
  1136. package/dist/plugs/main/skeleton/build.js.map +1 -0
  1137. package/dist/plugs/main/skeleton/index.cjs +539 -0
  1138. package/dist/plugs/main/skeleton/index.cjs.map +1 -0
  1139. package/dist/plugs/main/skeleton/index.js +25 -0
  1140. package/dist/plugs/main/skeleton/index.js.map +1 -0
  1141. package/dist/plugs/main/skeleton/types.cjs +19 -0
  1142. package/dist/plugs/main/skeleton/types.cjs.map +1 -0
  1143. package/dist/plugs/main/skeleton/types.js +1 -0
  1144. package/dist/plugs/main/skeleton/types.js.map +1 -0
  1145. package/dist/plugs/menus/main/playlist.cjs +98 -0
  1146. package/dist/plugs/menus/main/playlist.cjs.map +1 -0
  1147. package/dist/plugs/menus/main/playlist.js +9 -0
  1148. package/dist/plugs/menus/main/playlist.js.map +1 -0
  1149. package/dist/plugs/menus/main/skeleton.cjs +34 -0
  1150. package/dist/plugs/menus/main/skeleton.cjs.map +1 -0
  1151. package/dist/plugs/menus/main/skeleton.js +8 -0
  1152. package/dist/plugs/menus/main/skeleton.js.map +1 -0
  1153. package/dist/plugs/menus/settings/actions.cjs +492 -0
  1154. package/dist/plugs/menus/settings/actions.cjs.map +1 -0
  1155. package/dist/plugs/menus/settings/actions.js +15 -0
  1156. package/dist/plugs/menus/settings/actions.js.map +1 -0
  1157. package/dist/plugs/menus/settings/ambience.cjs +35 -0
  1158. package/dist/plugs/menus/settings/ambience.cjs.map +1 -0
  1159. package/dist/plugs/menus/settings/ambience.js +8 -0
  1160. package/dist/plugs/menus/settings/ambience.js.map +1 -0
  1161. package/dist/plugs/menus/settings/auto.cjs +153 -0
  1162. package/dist/plugs/menus/settings/auto.cjs.map +1 -0
  1163. package/dist/plugs/menus/settings/auto.js +12 -0
  1164. package/dist/plugs/menus/settings/auto.js.map +1 -0
  1165. package/dist/plugs/menus/settings/brightness.cjs +45 -0
  1166. package/dist/plugs/menus/settings/brightness.cjs.map +1 -0
  1167. package/dist/plugs/menus/settings/brightness.js +8 -0
  1168. package/dist/plugs/menus/settings/brightness.js.map +1 -0
  1169. package/dist/plugs/menus/settings/captions.cjs +437 -0
  1170. package/dist/plugs/menus/settings/captions.cjs.map +1 -0
  1171. package/dist/plugs/menus/settings/captions.js +13 -0
  1172. package/dist/plugs/menus/settings/captions.js.map +1 -0
  1173. package/dist/plugs/menus/settings/controlPanel.cjs +442 -0
  1174. package/dist/plugs/menus/settings/controlPanel.cjs.map +1 -0
  1175. package/dist/plugs/menus/settings/controlPanel.js +14 -0
  1176. package/dist/plugs/menus/settings/controlPanel.js.map +1 -0
  1177. package/dist/plugs/menus/settings/fastPlay.cjs +166 -0
  1178. package/dist/plugs/menus/settings/fastPlay.cjs.map +1 -0
  1179. package/dist/plugs/menus/settings/fastPlay.js +12 -0
  1180. package/dist/plugs/menus/settings/fastPlay.js.map +1 -0
  1181. package/dist/plugs/menus/settings/frame.cjs +90 -0
  1182. package/dist/plugs/menus/settings/frame.cjs.map +1 -0
  1183. package/dist/plugs/menus/settings/frame.js +12 -0
  1184. package/dist/plugs/menus/settings/frame.js.map +1 -0
  1185. package/dist/plugs/menus/settings/gesture.cjs +255 -0
  1186. package/dist/plugs/menus/settings/gesture.cjs.map +1 -0
  1187. package/dist/plugs/menus/settings/gesture.js +17 -0
  1188. package/dist/plugs/menus/settings/gesture.js.map +1 -0
  1189. package/dist/plugs/menus/settings/keys.cjs +173 -0
  1190. package/dist/plugs/menus/settings/keys.cjs.map +1 -0
  1191. package/dist/plugs/menus/settings/keys.js +12 -0
  1192. package/dist/plugs/menus/settings/keys.js.map +1 -0
  1193. package/dist/plugs/menus/settings/locked.cjs +53 -0
  1194. package/dist/plugs/menus/settings/locked.cjs.map +1 -0
  1195. package/dist/plugs/menus/settings/locked.js +8 -0
  1196. package/dist/plugs/menus/settings/locked.js.map +1 -0
  1197. package/dist/plugs/menus/settings/metadata.cjs +202 -0
  1198. package/dist/plugs/menus/settings/metadata.cjs.map +1 -0
  1199. package/dist/plugs/menus/settings/metadata.js +13 -0
  1200. package/dist/plugs/menus/settings/metadata.js.map +1 -0
  1201. package/dist/plugs/menus/settings/modes.cjs +238 -0
  1202. package/dist/plugs/menus/settings/modes.cjs.map +1 -0
  1203. package/dist/plugs/menus/settings/modes.js +12 -0
  1204. package/dist/plugs/menus/settings/modes.js.map +1 -0
  1205. package/dist/plugs/menus/settings/objectFit.cjs +45 -0
  1206. package/dist/plugs/menus/settings/objectFit.cjs.map +1 -0
  1207. package/dist/plugs/menus/settings/objectFit.js +8 -0
  1208. package/dist/plugs/menus/settings/objectFit.js.map +1 -0
  1209. package/dist/plugs/menus/settings/overlay.cjs +112 -0
  1210. package/dist/plugs/menus/settings/overlay.cjs.map +1 -0
  1211. package/dist/plugs/menus/settings/overlay.js +12 -0
  1212. package/dist/plugs/menus/settings/overlay.js.map +1 -0
  1213. package/dist/plugs/menus/settings/persist.cjs +73 -0
  1214. package/dist/plugs/menus/settings/persist.cjs.map +1 -0
  1215. package/dist/plugs/menus/settings/persist.js +8 -0
  1216. package/dist/plugs/menus/settings/persist.js.map +1 -0
  1217. package/dist/plugs/menus/settings/playbackRate.cjs +119 -0
  1218. package/dist/plugs/menus/settings/playbackRate.cjs.map +1 -0
  1219. package/dist/plugs/menus/settings/playbackRate.js +12 -0
  1220. package/dist/plugs/menus/settings/playbackRate.js.map +1 -0
  1221. package/dist/plugs/menus/settings/poster.cjs +53 -0
  1222. package/dist/plugs/menus/settings/poster.cjs.map +1 -0
  1223. package/dist/plugs/menus/settings/poster.js +8 -0
  1224. package/dist/plugs/menus/settings/poster.js.map +1 -0
  1225. package/dist/plugs/menus/settings/settingsView.cjs +79 -0
  1226. package/dist/plugs/menus/settings/settingsView.cjs.map +1 -0
  1227. package/dist/plugs/menus/settings/settingsView.js +8 -0
  1228. package/dist/plugs/menus/settings/settingsView.js.map +1 -0
  1229. package/dist/plugs/menus/settings/sleepTimer.cjs +89 -0
  1230. package/dist/plugs/menus/settings/sleepTimer.cjs.map +1 -0
  1231. package/dist/plugs/menus/settings/sleepTimer.js +10 -0
  1232. package/dist/plugs/menus/settings/sleepTimer.js.map +1 -0
  1233. package/dist/plugs/menus/settings/time.cjs +48 -0
  1234. package/dist/plugs/menus/settings/time.cjs.map +1 -0
  1235. package/dist/plugs/menus/settings/time.js +8 -0
  1236. package/dist/plugs/menus/settings/time.js.map +1 -0
  1237. package/dist/plugs/menus/settings/timeTravel.cjs +133 -0
  1238. package/dist/plugs/menus/settings/timeTravel.cjs.map +1 -0
  1239. package/dist/plugs/menus/settings/timeTravel.js +11 -0
  1240. package/dist/plugs/menus/settings/timeTravel.js.map +1 -0
  1241. package/dist/plugs/menus/settings/toasts.cjs +232 -0
  1242. package/dist/plugs/menus/settings/toasts.cjs.map +1 -0
  1243. package/dist/plugs/menus/settings/toasts.js +18 -0
  1244. package/dist/plugs/menus/settings/toasts.js.map +1 -0
  1245. package/dist/plugs/menus/settings/voice.cjs +216 -0
  1246. package/dist/plugs/menus/settings/voice.cjs.map +1 -0
  1247. package/dist/plugs/menus/settings/voice.js +12 -0
  1248. package/dist/plugs/menus/settings/voice.js.map +1 -0
  1249. package/dist/plugs/menus/settings/volume.cjs +45 -0
  1250. package/dist/plugs/menus/settings/volume.cjs.map +1 -0
  1251. package/dist/plugs/menus/settings/volume.js +8 -0
  1252. package/dist/plugs/menus/settings/volume.js.map +1 -0
  1253. package/dist/plugs/menus/z-register.cjs +3212 -0
  1254. package/dist/plugs/menus/z-register.cjs.map +1 -0
  1255. package/dist/plugs/menus/z-register.js +48 -0
  1256. package/dist/plugs/menus/z-register.js.map +1 -0
  1257. package/dist/plugs/settings/airplay/build.cjs +27 -0
  1258. package/dist/plugs/settings/airplay/build.cjs.map +1 -0
  1259. package/dist/plugs/settings/airplay/build.js +8 -0
  1260. package/dist/plugs/settings/airplay/build.js.map +1 -0
  1261. package/dist/plugs/settings/airplay/index.cjs +416 -0
  1262. package/dist/plugs/settings/airplay/index.cjs.map +1 -0
  1263. package/dist/plugs/settings/airplay/index.js +19 -0
  1264. package/dist/plugs/settings/airplay/index.js.map +1 -0
  1265. package/dist/plugs/settings/ambience/build.cjs +33 -0
  1266. package/dist/plugs/settings/ambience/build.cjs.map +1 -0
  1267. package/dist/plugs/settings/ambience/build.js +8 -0
  1268. package/dist/plugs/settings/ambience/build.js.map +1 -0
  1269. package/dist/plugs/settings/ambience/index.cjs +464 -0
  1270. package/dist/plugs/settings/ambience/index.cjs.map +1 -0
  1271. package/dist/plugs/settings/ambience/index.js +24 -0
  1272. package/dist/plugs/settings/ambience/index.js.map +1 -0
  1273. package/dist/plugs/settings/ambience/types.cjs +19 -0
  1274. package/dist/plugs/settings/ambience/types.cjs.map +1 -0
  1275. package/dist/plugs/settings/ambience/types.js +1 -0
  1276. package/dist/plugs/settings/ambience/types.js.map +1 -0
  1277. package/dist/plugs/settings/auto/build.cjs +76 -0
  1278. package/dist/plugs/settings/auto/build.cjs.map +1 -0
  1279. package/dist/plugs/settings/auto/build.js +13 -0
  1280. package/dist/plugs/settings/auto/build.js.map +1 -0
  1281. package/dist/plugs/settings/auto/index.cjs +533 -0
  1282. package/dist/plugs/settings/auto/index.cjs.map +1 -0
  1283. package/dist/plugs/settings/auto/index.js +30 -0
  1284. package/dist/plugs/settings/auto/index.js.map +1 -0
  1285. package/dist/plugs/settings/auto/types.cjs +19 -0
  1286. package/dist/plugs/settings/auto/types.cjs.map +1 -0
  1287. package/dist/plugs/settings/auto/types.js +1 -0
  1288. package/dist/plugs/settings/auto/types.js.map +1 -0
  1289. package/dist/plugs/settings/brightness/build.cjs +31 -0
  1290. package/dist/plugs/settings/brightness/build.cjs.map +1 -0
  1291. package/dist/plugs/settings/brightness/build.js +8 -0
  1292. package/dist/plugs/settings/brightness/build.js.map +1 -0
  1293. package/dist/plugs/settings/brightness/index.cjs +522 -0
  1294. package/dist/plugs/settings/brightness/index.cjs.map +1 -0
  1295. package/dist/plugs/settings/brightness/index.js +24 -0
  1296. package/dist/plugs/settings/brightness/index.js.map +1 -0
  1297. package/dist/plugs/settings/brightness/types.cjs +19 -0
  1298. package/dist/plugs/settings/brightness/types.cjs.map +1 -0
  1299. package/dist/plugs/settings/brightness/types.js +1 -0
  1300. package/dist/plugs/settings/brightness/types.js.map +1 -0
  1301. package/dist/plugs/settings/captions/build.cjs +184 -0
  1302. package/dist/plugs/settings/captions/build.cjs.map +1 -0
  1303. package/dist/plugs/settings/captions/build.js +12 -0
  1304. package/dist/plugs/settings/captions/build.js.map +1 -0
  1305. package/dist/plugs/settings/captions/index.cjs +793 -0
  1306. package/dist/plugs/settings/captions/index.cjs.map +1 -0
  1307. package/dist/plugs/settings/captions/index.js +32 -0
  1308. package/dist/plugs/settings/captions/index.js.map +1 -0
  1309. package/dist/plugs/settings/captions/types.cjs +19 -0
  1310. package/dist/plugs/settings/captions/types.cjs.map +1 -0
  1311. package/dist/plugs/settings/captions/types.js +1 -0
  1312. package/dist/plugs/settings/captions/types.js.map +1 -0
  1313. package/dist/plugs/settings/cast/build.cjs +27 -0
  1314. package/dist/plugs/settings/cast/build.cjs.map +1 -0
  1315. package/dist/plugs/settings/cast/build.js +8 -0
  1316. package/dist/plugs/settings/cast/build.js.map +1 -0
  1317. package/dist/plugs/settings/cast/index.cjs +644 -0
  1318. package/dist/plugs/settings/cast/index.cjs.map +1 -0
  1319. package/dist/plugs/settings/cast/index.js +24 -0
  1320. package/dist/plugs/settings/cast/index.js.map +1 -0
  1321. package/dist/plugs/settings/cast/types.cjs +19 -0
  1322. package/dist/plugs/settings/cast/types.cjs.map +1 -0
  1323. package/dist/plugs/settings/cast/types.js +1 -0
  1324. package/dist/plugs/settings/cast/types.js.map +1 -0
  1325. package/dist/plugs/settings/controlPanel/build.cjs +144 -0
  1326. package/dist/plugs/settings/controlPanel/build.cjs.map +1 -0
  1327. package/dist/plugs/settings/controlPanel/build.js +17 -0
  1328. package/dist/plugs/settings/controlPanel/build.js.map +1 -0
  1329. package/dist/plugs/settings/controlPanel/draggable.cjs +1021 -0
  1330. package/dist/plugs/settings/controlPanel/draggable.cjs.map +1 -0
  1331. package/dist/plugs/settings/controlPanel/draggable.js +24 -0
  1332. package/dist/plugs/settings/controlPanel/draggable.js.map +1 -0
  1333. package/dist/plugs/settings/controlPanel/index.cjs +1031 -0
  1334. package/dist/plugs/settings/controlPanel/index.cjs.map +1 -0
  1335. package/dist/plugs/settings/controlPanel/index.js +37 -0
  1336. package/dist/plugs/settings/controlPanel/index.js.map +1 -0
  1337. package/dist/plugs/settings/controlPanel/types.cjs +19 -0
  1338. package/dist/plugs/settings/controlPanel/types.cjs.map +1 -0
  1339. package/dist/plugs/settings/controlPanel/types.js +1 -0
  1340. package/dist/plugs/settings/controlPanel/types.js.map +1 -0
  1341. package/dist/plugs/settings/css/build.cjs +29 -0
  1342. package/dist/plugs/settings/css/build.cjs.map +1 -0
  1343. package/dist/plugs/settings/css/build.js +8 -0
  1344. package/dist/plugs/settings/css/build.js.map +1 -0
  1345. package/dist/plugs/settings/css/index.cjs +444 -0
  1346. package/dist/plugs/settings/css/index.cjs.map +1 -0
  1347. package/dist/plugs/settings/css/index.js +22 -0
  1348. package/dist/plugs/settings/css/index.js.map +1 -0
  1349. package/dist/plugs/settings/css/types.cjs +19 -0
  1350. package/dist/plugs/settings/css/types.cjs.map +1 -0
  1351. package/dist/plugs/settings/css/types.js +1 -0
  1352. package/dist/plugs/settings/css/types.js.map +1 -0
  1353. package/dist/plugs/settings/errors/build.cjs +45 -0
  1354. package/dist/plugs/settings/errors/build.cjs.map +1 -0
  1355. package/dist/plugs/settings/errors/build.js +10 -0
  1356. package/dist/plugs/settings/errors/build.js.map +1 -0
  1357. package/dist/plugs/settings/errors/index.cjs +417 -0
  1358. package/dist/plugs/settings/errors/index.cjs.map +1 -0
  1359. package/dist/plugs/settings/errors/index.js +24 -0
  1360. package/dist/plugs/settings/errors/index.js.map +1 -0
  1361. package/dist/plugs/settings/errors/types.cjs +19 -0
  1362. package/dist/plugs/settings/errors/types.cjs.map +1 -0
  1363. package/dist/plugs/settings/errors/types.js +1 -0
  1364. package/dist/plugs/settings/errors/types.js.map +1 -0
  1365. package/dist/plugs/settings/fastPlay/build.cjs +46 -0
  1366. package/dist/plugs/settings/fastPlay/build.cjs.map +1 -0
  1367. package/dist/plugs/settings/fastPlay/build.js +8 -0
  1368. package/dist/plugs/settings/fastPlay/build.js.map +1 -0
  1369. package/dist/plugs/settings/fastPlay/index.cjs +510 -0
  1370. package/dist/plugs/settings/fastPlay/index.cjs.map +1 -0
  1371. package/dist/plugs/settings/fastPlay/index.js +23 -0
  1372. package/dist/plugs/settings/fastPlay/index.js.map +1 -0
  1373. package/dist/plugs/settings/fastPlay/types.cjs +19 -0
  1374. package/dist/plugs/settings/fastPlay/types.cjs.map +1 -0
  1375. package/dist/plugs/settings/fastPlay/types.js +1 -0
  1376. package/dist/plugs/settings/fastPlay/types.js.map +1 -0
  1377. package/dist/plugs/settings/frame/build.cjs +31 -0
  1378. package/dist/plugs/settings/frame/build.cjs.map +1 -0
  1379. package/dist/plugs/settings/frame/build.js +8 -0
  1380. package/dist/plugs/settings/frame/build.js.map +1 -0
  1381. package/dist/plugs/settings/frame/index.cjs +542 -0
  1382. package/dist/plugs/settings/frame/index.cjs.map +1 -0
  1383. package/dist/plugs/settings/frame/index.js +29 -0
  1384. package/dist/plugs/settings/frame/index.js.map +1 -0
  1385. package/dist/plugs/settings/frame/types.cjs +19 -0
  1386. package/dist/plugs/settings/frame/types.cjs.map +1 -0
  1387. package/dist/plugs/settings/frame/types.js +1 -0
  1388. package/dist/plugs/settings/frame/types.js.map +1 -0
  1389. package/dist/plugs/settings/gesture/base.cjs +187 -0
  1390. package/dist/plugs/settings/gesture/base.cjs.map +1 -0
  1391. package/dist/plugs/settings/gesture/base.js +24 -0
  1392. package/dist/plugs/settings/gesture/base.js.map +1 -0
  1393. package/dist/plugs/settings/gesture/build.cjs +116 -0
  1394. package/dist/plugs/settings/gesture/build.cjs.map +1 -0
  1395. package/dist/plugs/settings/gesture/build.js +13 -0
  1396. package/dist/plugs/settings/gesture/build.js.map +1 -0
  1397. package/dist/plugs/settings/gesture/index.cjs +877 -0
  1398. package/dist/plugs/settings/gesture/index.cjs.map +1 -0
  1399. package/dist/plugs/settings/gesture/index.js +38 -0
  1400. package/dist/plugs/settings/gesture/index.js.map +1 -0
  1401. package/dist/plugs/settings/gesture/touch.cjs +784 -0
  1402. package/dist/plugs/settings/gesture/touch.cjs.map +1 -0
  1403. package/dist/plugs/settings/gesture/touch.js +27 -0
  1404. package/dist/plugs/settings/gesture/touch.js.map +1 -0
  1405. package/dist/plugs/settings/gesture/types.cjs +19 -0
  1406. package/dist/plugs/settings/gesture/types.cjs.map +1 -0
  1407. package/dist/plugs/settings/gesture/types.js +1 -0
  1408. package/dist/plugs/settings/gesture/types.js.map +1 -0
  1409. package/dist/plugs/settings/gesture/wheel.cjs +757 -0
  1410. package/dist/plugs/settings/gesture/wheel.cjs.map +1 -0
  1411. package/dist/plugs/settings/gesture/wheel.js +27 -0
  1412. package/dist/plugs/settings/gesture/wheel.js.map +1 -0
  1413. package/dist/plugs/settings/keys/build.cjs +117 -0
  1414. package/dist/plugs/settings/keys/build.cjs.map +1 -0
  1415. package/dist/plugs/settings/keys/build.js +13 -0
  1416. package/dist/plugs/settings/keys/build.js.map +1 -0
  1417. package/dist/plugs/settings/keys/index.cjs +612 -0
  1418. package/dist/plugs/settings/keys/index.cjs.map +1 -0
  1419. package/dist/plugs/settings/keys/index.js +34 -0
  1420. package/dist/plugs/settings/keys/index.js.map +1 -0
  1421. package/dist/plugs/settings/keys/types.cjs +19 -0
  1422. package/dist/plugs/settings/keys/types.cjs.map +1 -0
  1423. package/dist/plugs/settings/keys/types.js +1 -0
  1424. package/dist/plugs/settings/keys/types.js.map +1 -0
  1425. package/dist/plugs/settings/locked/build.cjs +92 -0
  1426. package/dist/plugs/settings/locked/build.cjs.map +1 -0
  1427. package/dist/plugs/settings/locked/build.js +9 -0
  1428. package/dist/plugs/settings/locked/build.js.map +1 -0
  1429. package/dist/plugs/settings/locked/index.cjs +532 -0
  1430. package/dist/plugs/settings/locked/index.cjs.map +1 -0
  1431. package/dist/plugs/settings/locked/index.js +25 -0
  1432. package/dist/plugs/settings/locked/index.js.map +1 -0
  1433. package/dist/plugs/settings/locked/types.cjs +19 -0
  1434. package/dist/plugs/settings/locked/types.cjs.map +1 -0
  1435. package/dist/plugs/settings/locked/types.js +1 -0
  1436. package/dist/plugs/settings/locked/types.js.map +1 -0
  1437. package/dist/plugs/settings/metadata/build.cjs +29 -0
  1438. package/dist/plugs/settings/metadata/build.cjs.map +1 -0
  1439. package/dist/plugs/settings/metadata/build.js +8 -0
  1440. package/dist/plugs/settings/metadata/build.js.map +1 -0
  1441. package/dist/plugs/settings/metadata/index.cjs +455 -0
  1442. package/dist/plugs/settings/metadata/index.cjs.map +1 -0
  1443. package/dist/plugs/settings/metadata/index.js +24 -0
  1444. package/dist/plugs/settings/metadata/index.js.map +1 -0
  1445. package/dist/plugs/settings/metadata/types.cjs +19 -0
  1446. package/dist/plugs/settings/metadata/types.cjs.map +1 -0
  1447. package/dist/plugs/settings/metadata/types.js +1 -0
  1448. package/dist/plugs/settings/metadata/types.js.map +1 -0
  1449. package/dist/plugs/settings/modes/build.cjs +162 -0
  1450. package/dist/plugs/settings/modes/build.cjs.map +1 -0
  1451. package/dist/plugs/settings/modes/build.js +22 -0
  1452. package/dist/plugs/settings/modes/build.js.map +1 -0
  1453. package/dist/plugs/settings/modes/fullscreen.cjs +625 -0
  1454. package/dist/plugs/settings/modes/fullscreen.cjs.map +1 -0
  1455. package/dist/plugs/settings/modes/fullscreen.js +30 -0
  1456. package/dist/plugs/settings/modes/fullscreen.js.map +1 -0
  1457. package/dist/plugs/settings/modes/index.cjs +1031 -0
  1458. package/dist/plugs/settings/modes/index.cjs.map +1 -0
  1459. package/dist/plugs/settings/modes/index.js +51 -0
  1460. package/dist/plugs/settings/modes/index.js.map +1 -0
  1461. package/dist/plugs/settings/modes/miniplayer.cjs +618 -0
  1462. package/dist/plugs/settings/modes/miniplayer.cjs.map +1 -0
  1463. package/dist/plugs/settings/modes/miniplayer.js +30 -0
  1464. package/dist/plugs/settings/modes/miniplayer.js.map +1 -0
  1465. package/dist/plugs/settings/modes/pictureInPicture.cjs +704 -0
  1466. package/dist/plugs/settings/modes/pictureInPicture.cjs.map +1 -0
  1467. package/dist/plugs/settings/modes/pictureInPicture.js +30 -0
  1468. package/dist/plugs/settings/modes/pictureInPicture.js.map +1 -0
  1469. package/dist/plugs/settings/modes/theater.cjs +557 -0
  1470. package/dist/plugs/settings/modes/theater.cjs.map +1 -0
  1471. package/dist/plugs/settings/modes/theater.js +30 -0
  1472. package/dist/plugs/settings/modes/theater.js.map +1 -0
  1473. package/dist/plugs/settings/modes/types.cjs +19 -0
  1474. package/dist/plugs/settings/modes/types.cjs.map +1 -0
  1475. package/dist/plugs/settings/modes/types.js +1 -0
  1476. package/dist/plugs/settings/modes/types.js.map +1 -0
  1477. package/dist/plugs/settings/notifiers/build.cjs +30 -0
  1478. package/dist/plugs/settings/notifiers/build.cjs.map +1 -0
  1479. package/dist/plugs/settings/notifiers/build.js +8 -0
  1480. package/dist/plugs/settings/notifiers/build.js.map +1 -0
  1481. package/dist/plugs/settings/notifiers/index.cjs +451 -0
  1482. package/dist/plugs/settings/notifiers/index.cjs.map +1 -0
  1483. package/dist/plugs/settings/notifiers/index.js +24 -0
  1484. package/dist/plugs/settings/notifiers/index.js.map +1 -0
  1485. package/dist/plugs/settings/notifiers/types.cjs +19 -0
  1486. package/dist/plugs/settings/notifiers/types.cjs.map +1 -0
  1487. package/dist/plugs/settings/notifiers/types.js +1 -0
  1488. package/dist/plugs/settings/notifiers/types.js.map +1 -0
  1489. package/dist/plugs/settings/objectFit/build.cjs +35 -0
  1490. package/dist/plugs/settings/objectFit/build.cjs.map +1 -0
  1491. package/dist/plugs/settings/objectFit/build.js +10 -0
  1492. package/dist/plugs/settings/objectFit/build.js.map +1 -0
  1493. package/dist/plugs/settings/objectFit/index.cjs +514 -0
  1494. package/dist/plugs/settings/objectFit/index.cjs.map +1 -0
  1495. package/dist/plugs/settings/objectFit/index.js +30 -0
  1496. package/dist/plugs/settings/objectFit/index.js.map +1 -0
  1497. package/dist/plugs/settings/objectFit/types.cjs +19 -0
  1498. package/dist/plugs/settings/objectFit/types.cjs.map +1 -0
  1499. package/dist/plugs/settings/objectFit/types.js +1 -0
  1500. package/dist/plugs/settings/objectFit/types.js.map +1 -0
  1501. package/dist/plugs/settings/overlay/build.cjs +46 -0
  1502. package/dist/plugs/settings/overlay/build.cjs.map +1 -0
  1503. package/dist/plugs/settings/overlay/build.js +8 -0
  1504. package/dist/plugs/settings/overlay/build.js.map +1 -0
  1505. package/dist/plugs/settings/overlay/index.cjs +502 -0
  1506. package/dist/plugs/settings/overlay/index.cjs.map +1 -0
  1507. package/dist/plugs/settings/overlay/index.js +24 -0
  1508. package/dist/plugs/settings/overlay/index.js.map +1 -0
  1509. package/dist/plugs/settings/overlay/types.cjs +19 -0
  1510. package/dist/plugs/settings/overlay/types.cjs.map +1 -0
  1511. package/dist/plugs/settings/overlay/types.js +1 -0
  1512. package/dist/plugs/settings/overlay/types.js.map +1 -0
  1513. package/dist/plugs/settings/persist/build.cjs +41 -0
  1514. package/dist/plugs/settings/persist/build.cjs.map +1 -0
  1515. package/dist/plugs/settings/persist/build.js +8 -0
  1516. package/dist/plugs/settings/persist/build.js.map +1 -0
  1517. package/dist/plugs/settings/persist/index.cjs +413 -0
  1518. package/dist/plugs/settings/persist/index.cjs.map +1 -0
  1519. package/dist/plugs/settings/persist/index.js +22 -0
  1520. package/dist/plugs/settings/persist/index.js.map +1 -0
  1521. package/dist/plugs/settings/persist/types.cjs +19 -0
  1522. package/dist/plugs/settings/persist/types.cjs.map +1 -0
  1523. package/dist/plugs/settings/persist/types.js +1 -0
  1524. package/dist/plugs/settings/persist/types.js.map +1 -0
  1525. package/dist/plugs/settings/playbackRate/build.cjs +32 -0
  1526. package/dist/plugs/settings/playbackRate/build.cjs.map +1 -0
  1527. package/dist/plugs/settings/playbackRate/build.js +8 -0
  1528. package/dist/plugs/settings/playbackRate/build.js.map +1 -0
  1529. package/dist/plugs/settings/playbackRate/index.cjs +448 -0
  1530. package/dist/plugs/settings/playbackRate/index.cjs.map +1 -0
  1531. package/dist/plugs/settings/playbackRate/index.js +23 -0
  1532. package/dist/plugs/settings/playbackRate/index.js.map +1 -0
  1533. package/dist/plugs/settings/playbackRate/types.cjs +19 -0
  1534. package/dist/plugs/settings/playbackRate/types.cjs.map +1 -0
  1535. package/dist/plugs/settings/playbackRate/types.js +1 -0
  1536. package/dist/plugs/settings/playbackRate/types.js.map +1 -0
  1537. package/dist/plugs/settings/poster/build.cjs +29 -0
  1538. package/dist/plugs/settings/poster/build.cjs.map +1 -0
  1539. package/dist/plugs/settings/poster/build.js +8 -0
  1540. package/dist/plugs/settings/poster/build.js.map +1 -0
  1541. package/dist/plugs/settings/poster/index.cjs +435 -0
  1542. package/dist/plugs/settings/poster/index.cjs.map +1 -0
  1543. package/dist/plugs/settings/poster/index.js +24 -0
  1544. package/dist/plugs/settings/poster/index.js.map +1 -0
  1545. package/dist/plugs/settings/poster/types.cjs +19 -0
  1546. package/dist/plugs/settings/poster/types.cjs.map +1 -0
  1547. package/dist/plugs/settings/poster/types.js +1 -0
  1548. package/dist/plugs/settings/poster/types.js.map +1 -0
  1549. package/dist/plugs/settings/settingsView/build.cjs +35 -0
  1550. package/dist/plugs/settings/settingsView/build.cjs.map +1 -0
  1551. package/dist/plugs/settings/settingsView/build.js +8 -0
  1552. package/dist/plugs/settings/settingsView/build.js.map +1 -0
  1553. package/dist/plugs/settings/settingsView/index.cjs +1369 -0
  1554. package/dist/plugs/settings/settingsView/index.cjs.map +1 -0
  1555. package/dist/plugs/settings/settingsView/index.js +42 -0
  1556. package/dist/plugs/settings/settingsView/index.js.map +1 -0
  1557. package/dist/plugs/settings/settingsView/menu/index.cjs +1164 -0
  1558. package/dist/plugs/settings/settingsView/menu/index.cjs.map +1 -0
  1559. package/dist/plugs/settings/settingsView/menu/index.js +36 -0
  1560. package/dist/plugs/settings/settingsView/menu/index.js.map +1 -0
  1561. package/dist/plugs/settings/settingsView/menu/panel/index.cjs +144 -0
  1562. package/dist/plugs/settings/settingsView/menu/panel/index.cjs.map +1 -0
  1563. package/dist/plugs/settings/settingsView/menu/panel/index.js +16 -0
  1564. package/dist/plugs/settings/settingsView/menu/panel/index.js.map +1 -0
  1565. package/dist/plugs/settings/settingsView/menu/panel/main.cjs +524 -0
  1566. package/dist/plugs/settings/settingsView/menu/panel/main.cjs.map +1 -0
  1567. package/dist/plugs/settings/settingsView/menu/panel/main.js +33 -0
  1568. package/dist/plugs/settings/settingsView/menu/panel/main.js.map +1 -0
  1569. package/dist/plugs/settings/settingsView/menu/panel/sub.cjs +617 -0
  1570. package/dist/plugs/settings/settingsView/menu/panel/sub.cjs.map +1 -0
  1571. package/dist/plugs/settings/settingsView/menu/panel/sub.js +33 -0
  1572. package/dist/plugs/settings/settingsView/menu/panel/sub.js.map +1 -0
  1573. package/dist/plugs/settings/settingsView/menu/widgets/base.cjs +357 -0
  1574. package/dist/plugs/settings/settingsView/menu/widgets/base.cjs.map +1 -0
  1575. package/dist/plugs/settings/settingsView/menu/widgets/base.js +19 -0
  1576. package/dist/plugs/settings/settingsView/menu/widgets/base.js.map +1 -0
  1577. package/dist/plugs/settings/settingsView/menu/widgets/button.cjs +392 -0
  1578. package/dist/plugs/settings/settingsView/menu/widgets/button.cjs.map +1 -0
  1579. package/dist/plugs/settings/settingsView/menu/widgets/button.js +20 -0
  1580. package/dist/plugs/settings/settingsView/menu/widgets/button.js.map +1 -0
  1581. package/dist/plugs/settings/settingsView/menu/widgets/color.cjs +498 -0
  1582. package/dist/plugs/settings/settingsView/menu/widgets/color.cjs.map +1 -0
  1583. package/dist/plugs/settings/settingsView/menu/widgets/color.js +31 -0
  1584. package/dist/plugs/settings/settingsView/menu/widgets/color.js.map +1 -0
  1585. package/dist/plugs/settings/settingsView/menu/widgets/dragselect.cjs +563 -0
  1586. package/dist/plugs/settings/settingsView/menu/widgets/dragselect.cjs.map +1 -0
  1587. package/dist/plugs/settings/settingsView/menu/widgets/dragselect.js +31 -0
  1588. package/dist/plugs/settings/settingsView/menu/widgets/dragselect.js.map +1 -0
  1589. package/dist/plugs/settings/settingsView/menu/widgets/group.cjs +500 -0
  1590. package/dist/plugs/settings/settingsView/menu/widgets/group.cjs.map +1 -0
  1591. package/dist/plugs/settings/settingsView/menu/widgets/group.js +31 -0
  1592. package/dist/plugs/settings/settingsView/menu/widgets/group.js.map +1 -0
  1593. package/dist/plugs/settings/settingsView/menu/widgets/index.cjs +912 -0
  1594. package/dist/plugs/settings/settingsView/menu/widgets/index.cjs.map +1 -0
  1595. package/dist/plugs/settings/settingsView/menu/widgets/index.js +53 -0
  1596. package/dist/plugs/settings/settingsView/menu/widgets/index.js.map +1 -0
  1597. package/dist/plugs/settings/settingsView/menu/widgets/input.cjs +409 -0
  1598. package/dist/plugs/settings/settingsView/menu/widgets/input.cjs.map +1 -0
  1599. package/dist/plugs/settings/settingsView/menu/widgets/input.js +31 -0
  1600. package/dist/plugs/settings/settingsView/menu/widgets/input.js.map +1 -0
  1601. package/dist/plugs/settings/settingsView/menu/widgets/limits.cjs +411 -0
  1602. package/dist/plugs/settings/settingsView/menu/widgets/limits.cjs.map +1 -0
  1603. package/dist/plugs/settings/settingsView/menu/widgets/limits.js +31 -0
  1604. package/dist/plugs/settings/settingsView/menu/widgets/limits.js.map +1 -0
  1605. package/dist/plugs/settings/settingsView/menu/widgets/range.cjs +420 -0
  1606. package/dist/plugs/settings/settingsView/menu/widgets/range.cjs.map +1 -0
  1607. package/dist/plugs/settings/settingsView/menu/widgets/range.js +31 -0
  1608. package/dist/plugs/settings/settingsView/menu/widgets/range.js.map +1 -0
  1609. package/dist/plugs/settings/settingsView/menu/widgets/select.cjs +490 -0
  1610. package/dist/plugs/settings/settingsView/menu/widgets/select.cjs.map +1 -0
  1611. package/dist/plugs/settings/settingsView/menu/widgets/select.js +31 -0
  1612. package/dist/plugs/settings/settingsView/menu/widgets/select.js.map +1 -0
  1613. package/dist/plugs/settings/settingsView/menu/widgets/toggle.cjs +401 -0
  1614. package/dist/plugs/settings/settingsView/menu/widgets/toggle.cjs.map +1 -0
  1615. package/dist/plugs/settings/settingsView/menu/widgets/toggle.js +31 -0
  1616. package/dist/plugs/settings/settingsView/menu/widgets/toggle.js.map +1 -0
  1617. package/dist/plugs/settings/settingsView/types.cjs +19 -0
  1618. package/dist/plugs/settings/settingsView/types.cjs.map +1 -0
  1619. package/dist/plugs/settings/settingsView/types.js +1 -0
  1620. package/dist/plugs/settings/settingsView/types.js.map +1 -0
  1621. package/dist/plugs/settings/sleepTimer/build.cjs +29 -0
  1622. package/dist/plugs/settings/sleepTimer/build.cjs.map +1 -0
  1623. package/dist/plugs/settings/sleepTimer/build.js +8 -0
  1624. package/dist/plugs/settings/sleepTimer/build.js.map +1 -0
  1625. package/dist/plugs/settings/sleepTimer/index.cjs +431 -0
  1626. package/dist/plugs/settings/sleepTimer/index.cjs.map +1 -0
  1627. package/dist/plugs/settings/sleepTimer/index.js +24 -0
  1628. package/dist/plugs/settings/sleepTimer/index.js.map +1 -0
  1629. package/dist/plugs/settings/sleepTimer/types.cjs +19 -0
  1630. package/dist/plugs/settings/sleepTimer/types.cjs.map +1 -0
  1631. package/dist/plugs/settings/sleepTimer/types.js +2 -0
  1632. package/dist/plugs/settings/sleepTimer/types.js.map +1 -0
  1633. package/dist/plugs/settings/time/build.cjs +32 -0
  1634. package/dist/plugs/settings/time/build.cjs.map +1 -0
  1635. package/dist/plugs/settings/time/build.js +8 -0
  1636. package/dist/plugs/settings/time/build.js.map +1 -0
  1637. package/dist/plugs/settings/time/index.cjs +604 -0
  1638. package/dist/plugs/settings/time/index.cjs.map +1 -0
  1639. package/dist/plugs/settings/time/index.js +29 -0
  1640. package/dist/plugs/settings/time/index.js.map +1 -0
  1641. package/dist/plugs/settings/time/types.cjs +19 -0
  1642. package/dist/plugs/settings/time/types.cjs.map +1 -0
  1643. package/dist/plugs/settings/time/types.js +1 -0
  1644. package/dist/plugs/settings/time/types.js.map +1 -0
  1645. package/dist/plugs/settings/timeTravel/build.cjs +36 -0
  1646. package/dist/plugs/settings/timeTravel/build.cjs.map +1 -0
  1647. package/dist/plugs/settings/timeTravel/build.js +8 -0
  1648. package/dist/plugs/settings/timeTravel/build.js.map +1 -0
  1649. package/dist/plugs/settings/timeTravel/index.cjs +461 -0
  1650. package/dist/plugs/settings/timeTravel/index.cjs.map +1 -0
  1651. package/dist/plugs/settings/timeTravel/index.js +33 -0
  1652. package/dist/plugs/settings/timeTravel/index.js.map +1 -0
  1653. package/dist/plugs/settings/timeTravel/types.cjs +19 -0
  1654. package/dist/plugs/settings/timeTravel/types.cjs.map +1 -0
  1655. package/dist/plugs/settings/timeTravel/types.js +1 -0
  1656. package/dist/plugs/settings/timeTravel/types.js.map +1 -0
  1657. package/dist/plugs/settings/toasts/build.cjs +35 -0
  1658. package/dist/plugs/settings/toasts/build.cjs.map +1 -0
  1659. package/dist/plugs/settings/toasts/build.js +8 -0
  1660. package/dist/plugs/settings/toasts/build.js.map +1 -0
  1661. package/dist/plugs/settings/toasts/index.cjs +450 -0
  1662. package/dist/plugs/settings/toasts/index.cjs.map +1 -0
  1663. package/dist/plugs/settings/toasts/index.js +26 -0
  1664. package/dist/plugs/settings/toasts/index.js.map +1 -0
  1665. package/dist/plugs/settings/toasts/types.cjs +19 -0
  1666. package/dist/plugs/settings/toasts/types.cjs.map +1 -0
  1667. package/dist/plugs/settings/toasts/types.js +1 -0
  1668. package/dist/plugs/settings/toasts/types.js.map +1 -0
  1669. package/dist/plugs/settings/voice/build.cjs +81 -0
  1670. package/dist/plugs/settings/voice/build.cjs.map +1 -0
  1671. package/dist/plugs/settings/voice/build.js +8 -0
  1672. package/dist/plugs/settings/voice/build.js.map +1 -0
  1673. package/dist/plugs/settings/voice/index.cjs +757 -0
  1674. package/dist/plugs/settings/voice/index.cjs.map +1 -0
  1675. package/dist/plugs/settings/voice/index.js +26 -0
  1676. package/dist/plugs/settings/voice/index.js.map +1 -0
  1677. package/dist/plugs/settings/voice/types.cjs +19 -0
  1678. package/dist/plugs/settings/voice/types.cjs.map +1 -0
  1679. package/dist/plugs/settings/voice/types.js +1 -0
  1680. package/dist/plugs/settings/voice/types.js.map +1 -0
  1681. package/dist/plugs/settings/volume/build.cjs +31 -0
  1682. package/dist/plugs/settings/volume/build.cjs.map +1 -0
  1683. package/dist/plugs/settings/volume/build.js +8 -0
  1684. package/dist/plugs/settings/volume/build.js.map +1 -0
  1685. package/dist/plugs/settings/volume/index.cjs +592 -0
  1686. package/dist/plugs/settings/volume/index.cjs.map +1 -0
  1687. package/dist/plugs/settings/volume/index.js +34 -0
  1688. package/dist/plugs/settings/volume/index.js.map +1 -0
  1689. package/dist/plugs/settings/volume/types.cjs +19 -0
  1690. package/dist/plugs/settings/volume/types.cjs.map +1 -0
  1691. package/dist/plugs/settings/volume/types.js +1 -0
  1692. package/dist/plugs/settings/volume/types.js.map +1 -0
  1693. package/dist/plugs/z-register.cjs +5901 -0
  1694. package/dist/plugs/z-register.cjs.map +1 -0
  1695. package/dist/plugs/z-register.js +105 -0
  1696. package/dist/plugs/z-register.js.map +1 -0
  1697. package/dist/super/components/icons.cjs +630 -0
  1698. package/dist/super/components/icons.cjs.map +1 -0
  1699. package/dist/super/components/icons.js +248 -0
  1700. package/dist/super/components/icons.js.map +1 -0
  1701. package/dist/super/components/index.cjs +3111 -0
  1702. package/dist/super/components/index.cjs.map +1 -0
  1703. package/dist/super/components/index.js +498 -0
  1704. package/dist/super/components/index.js.map +1 -0
  1705. package/dist/super/components/notifiers.cjs +784 -0
  1706. package/dist/super/components/notifiers.cjs.map +1 -0
  1707. package/dist/super/components/notifiers.js +96 -0
  1708. package/dist/super/components/notifiers.js.map +1 -0
  1709. package/dist/super/consts.cjs +289 -0
  1710. package/dist/super/consts.cjs.map +1 -0
  1711. package/dist/super/consts.js +28 -0
  1712. package/dist/super/consts.js.map +1 -0
  1713. package/dist/super/plugs/index.cjs +5988 -0
  1714. package/dist/super/plugs/index.cjs.map +1 -0
  1715. package/dist/super/plugs/index.js +388 -0
  1716. package/dist/super/plugs/index.js.map +1 -0
  1717. package/dist/super/plugs/menus.cjs +2572 -0
  1718. package/dist/super/plugs/menus.cjs.map +1 -0
  1719. package/dist/super/plugs/menus.js +132 -0
  1720. package/dist/super/plugs/menus.js.map +1 -0
  1721. package/dist/super/techs.cjs +256 -0
  1722. package/dist/super/techs.cjs.map +1 -0
  1723. package/dist/super/techs.js +32 -0
  1724. package/dist/super/techs.js.map +1 -0
  1725. package/dist/super/utils.cjs +1379 -0
  1726. package/dist/super/utils.cjs.map +1 -0
  1727. package/dist/super/utils.js +400 -0
  1728. package/dist/super/utils.js.map +1 -0
  1729. package/dist/super.cjs +10191 -0
  1730. package/dist/super.cjs.map +1 -0
  1731. package/dist/super.css +3148 -0
  1732. package/dist/super.css.map +1 -0
  1733. package/dist/super.global.js +12460 -0
  1734. package/dist/super.global.js.map +1 -0
  1735. package/dist/super.js +380 -0
  1736. package/dist/super.js.map +1 -0
  1737. package/dist/techs/base.cjs +256 -0
  1738. package/dist/techs/base.cjs.map +1 -0
  1739. package/dist/techs/base.js +19 -0
  1740. package/dist/techs/base.js.map +1 -0
  1741. package/dist/techs/dash.cjs +1160 -0
  1742. package/dist/techs/dash.cjs.map +1 -0
  1743. package/dist/techs/dash.js +24 -0
  1744. package/dist/techs/dash.js.map +1 -0
  1745. package/dist/techs/hls.cjs +1164 -0
  1746. package/dist/techs/hls.cjs.map +1 -0
  1747. package/dist/techs/hls.js +24 -0
  1748. package/dist/techs/hls.js.map +1 -0
  1749. package/dist/techs/html5.cjs +988 -0
  1750. package/dist/techs/html5.cjs.map +1 -0
  1751. package/dist/techs/html5.js +23 -0
  1752. package/dist/techs/html5.js.map +1 -0
  1753. package/dist/techs/shaka.cjs +1183 -0
  1754. package/dist/techs/shaka.cjs.map +1 -0
  1755. package/dist/techs/shaka.js +197 -0
  1756. package/dist/techs/shaka.js.map +1 -0
  1757. package/dist/techs/vimeo.cjs +731 -0
  1758. package/dist/techs/vimeo.cjs.map +1 -0
  1759. package/dist/techs/vimeo.js +24 -0
  1760. package/dist/techs/vimeo.js.map +1 -0
  1761. package/dist/techs/youtube.cjs +730 -0
  1762. package/dist/techs/youtube.cjs.map +1 -0
  1763. package/dist/techs/youtube.js +22 -0
  1764. package/dist/techs/youtube.js.map +1 -0
  1765. package/dist/techs/z-register.cjs +2354 -0
  1766. package/dist/techs/z-register.cjs.map +1 -0
  1767. package/dist/techs/z-register.js +26 -0
  1768. package/dist/techs/z-register.js.map +1 -0
  1769. package/dist/tools/player.cjs +1804 -0
  1770. package/dist/tools/player.cjs.map +1 -0
  1771. package/dist/tools/player.js +29 -0
  1772. package/dist/tools/player.js.map +1 -0
  1773. package/dist/tools/queue.cjs +63 -0
  1774. package/dist/tools/queue.cjs.map +1 -0
  1775. package/dist/tools/queue.js +8 -0
  1776. package/dist/tools/queue.js.map +1 -0
  1777. package/dist/tools/runtime.cjs +1919 -0
  1778. package/dist/tools/runtime.cjs.map +1 -0
  1779. package/dist/tools/runtime.js +49 -0
  1780. package/dist/tools/runtime.js.map +1 -0
  1781. package/dist/types/UIOptions.d.cjs +19 -0
  1782. package/dist/types/UIOptions.d.cjs.map +1 -0
  1783. package/dist/types/UIOptions.d.js +1 -0
  1784. package/dist/types/UIOptions.d.js.map +1 -0
  1785. package/dist/types/actions.d.cjs +19 -0
  1786. package/dist/types/actions.d.cjs.map +1 -0
  1787. package/dist/types/actions.d.js +1 -0
  1788. package/dist/types/actions.d.js.map +1 -0
  1789. package/dist/types/config.d.cjs +19 -0
  1790. package/dist/types/config.d.cjs.map +1 -0
  1791. package/dist/types/config.d.js +1 -0
  1792. package/dist/types/config.d.js.map +1 -0
  1793. package/dist/types/contract.d.cjs +19 -0
  1794. package/dist/types/contract.d.cjs.map +1 -0
  1795. package/dist/types/contract.d.js +1 -0
  1796. package/dist/types/contract.d.js.map +1 -0
  1797. package/dist/types/generics.d.cjs +19 -0
  1798. package/dist/types/generics.d.cjs.map +1 -0
  1799. package/dist/types/generics.d.js +1 -0
  1800. package/dist/types/generics.d.js.map +1 -0
  1801. package/dist/types/global.d.cjs +22 -0
  1802. package/dist/types/global.d.cjs.map +1 -0
  1803. package/dist/types/global.d.js +2 -0
  1804. package/dist/types/global.d.js.map +1 -0
  1805. package/dist/types/registries.d.cjs +19 -0
  1806. package/dist/types/registries.d.cjs.map +1 -0
  1807. package/dist/types/registries.d.js +1 -0
  1808. package/dist/types/registries.d.js.map +1 -0
  1809. package/dist/utils/color.cjs +111 -0
  1810. package/dist/utils/color.cjs.map +1 -0
  1811. package/dist/utils/color.js +21 -0
  1812. package/dist/utils/color.js.map +1 -0
  1813. package/dist/utils/dom.cjs +269 -0
  1814. package/dist/utils/dom.cjs.map +1 -0
  1815. package/dist/utils/dom.js +58 -0
  1816. package/dist/utils/dom.js.map +1 -0
  1817. package/dist/utils/env.cjs +110 -0
  1818. package/dist/utils/env.cjs.map +1 -0
  1819. package/dist/utils/env.js +56 -0
  1820. package/dist/utils/env.js.map +1 -0
  1821. package/dist/utils/file.cjs +176 -0
  1822. package/dist/utils/file.cjs.map +1 -0
  1823. package/dist/utils/file.js +20 -0
  1824. package/dist/utils/file.js.map +1 -0
  1825. package/dist/utils/fn.cjs +133 -0
  1826. package/dist/utils/fn.cjs.map +1 -0
  1827. package/dist/utils/fn.js +41 -0
  1828. package/dist/utils/fn.js.map +1 -0
  1829. package/dist/utils/keys.cjs +66 -0
  1830. package/dist/utils/keys.cjs.map +1 -0
  1831. package/dist/utils/keys.js +28 -0
  1832. package/dist/utils/keys.js.map +1 -0
  1833. package/dist/utils/match.cjs +119 -0
  1834. package/dist/utils/match.cjs.map +1 -0
  1835. package/dist/utils/match.js +30 -0
  1836. package/dist/utils/match.js.map +1 -0
  1837. package/dist/utils/media.cjs +546 -0
  1838. package/dist/utils/media.cjs.map +1 -0
  1839. package/dist/utils/media.js +84 -0
  1840. package/dist/utils/media.js.map +1 -0
  1841. package/dist/utils/methd.cjs +50 -0
  1842. package/dist/utils/methd.cjs.map +1 -0
  1843. package/dist/utils/methd.js +15 -0
  1844. package/dist/utils/methd.js.map +1 -0
  1845. package/dist/utils/num.cjs +92 -0
  1846. package/dist/utils/num.cjs.map +1 -0
  1847. package/dist/utils/num.js +22 -0
  1848. package/dist/utils/num.js.map +1 -0
  1849. package/dist/utils/obj.cjs +204 -0
  1850. package/dist/utils/obj.cjs.map +1 -0
  1851. package/dist/utils/obj.js +58 -0
  1852. package/dist/utils/obj.js.map +1 -0
  1853. package/dist/utils/str.cjs +134 -0
  1854. package/dist/utils/str.cjs.map +1 -0
  1855. package/dist/utils/str.js +35 -0
  1856. package/dist/utils/str.js.map +1 -0
  1857. package/dist/utils/time.cjs +103 -0
  1858. package/dist/utils/time.cjs.map +1 -0
  1859. package/dist/utils/time.js +11 -0
  1860. package/dist/utils/time.js.map +1 -0
  1861. package/package.json +124 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ts/consts/config.ts","../../src/ts/consts/actions.ts","../../src/ts/core/registries.ts","../../src/ts/core/controllable.ts","../../../t007-tools/packages/utils/dist/chunk-ZALPHCSJ.js","../../src/ts/utils/obj.ts","../../src/ts/utils/keys.ts","../../src/ts/components/base/index.ts","../../src/ts/components/rangeinput/build.ts","../../src/ts/components/rangeinput/index.ts","../../src/ts/utils/dom.ts","../../../t007-tools/packages/utils/dist/hooks/vanilla.js","../../src/ts/utils/num.ts","../../src/ts/components/buffer.ts","../../src/ts/components/controls/meta.ts","../../src/ts/components/controls/bignext.ts","../../src/ts/components/controls/bigplaypause.ts","../../src/ts/components/controls/bigprev.ts","../../src/ts/components/controls/prev.ts","../../src/ts/components/controls/playpause.ts","../../src/ts/components/controls/next.ts","../../src/ts/components/controls/forward10.ts","../../src/ts/components/controls/backward10.ts","../../src/ts/components/controls/time.ts","../../src/ts/components/controls/duration.ts","../../src/ts/components/controls/timeandduration.ts","../../src/ts/components/controls/settings.ts","../../src/ts/components/controls/objectfit.ts","../../src/ts/components/controls/pictureinpicture.ts","../../src/ts/components/controls/theater.ts","../../src/ts/components/controls/capture.ts","../../src/ts/components/controls/fullscreen.ts","../../src/ts/components/controls/fullscreenlock.ts","../../src/ts/components/controls/fullscreenorientation.ts","../../src/ts/components/controls/removeminiplayer.ts","../../src/ts/components/controls/expandminiplayer.ts","../../src/ts/utils/time.ts","../../src/ts/utils/env.ts","../../src/ts/utils/media.ts","../../src/ts/components/controls/timeline/index.ts","../../src/ts/components/controls/volume/slider.ts","../../src/ts/components/controls/volume/index.ts","../../src/ts/components/controls/brightness/slider.ts","../../src/ts/components/controls/brightness/index.ts","../../src/ts/components/captionsview.ts","../../src/ts/components/controls/captions.ts","../../src/ts/components/screenlock.ts","../../src/ts/components/controls/chapter.ts","../../src/ts/components/controls/cast.ts","../../src/ts/components/controls/airplay.ts","../../src/ts/components/holders/pipplaceholder.ts","../../src/ts/components/holders/castplaceholder.ts","../../src/ts/components/holders/airplayplaceholder.ts","../../src/ts/components/z-register.ts"],"sourcesContent":["import type { CtlrConfig } from \"@defs/config\";\r\nimport { CTX, type DeepPartial } from \"sia-reactor\";\r\nimport { ACTIONS_BUILD } from \"./actions\";\r\n\r\nexport const CONFIG_BUILD: DeepPartial<CtlrConfig> = {\r\n mediaType: \"video\",\r\n mediaPlayer: \"TMG\",\r\n media: { intent: { playsInline: true, textVisible: true, brightness: 100 } },\r\n actions: Object.fromEntries(Object.entries(ACTIONS_BUILD).map(([k, v]) => [k, { id: k, ...v }])) as any,\r\n logicPathBlacklist: [\"media.state\", \"media.status\", \"media.tech\", \"media.features\", \"media.type\", \"media.element\", \"media.pseudoElement\", \"media.container\", \"media.pseudoContainer\"],\r\n settings: {\r\n // techOrder: [\r\n // \"youtube\", // 1. Black-box (Regex must catch these URLs instantly)\r\n // \"vimeo\", // 2. Black-box (Regex must catch these URLs instantly)\r\n // \"shaka\", // 3. THE APEX PREDATOR (Catches .mpd and .m3u8 first)\r\n // \"hls\", // 4. Fallback (Catches .m3u8 ONLY if Shaka is disabled/fails)\r\n // \"dash\", // 5. Fallback (Catches .mpd ONLY if Shaka is disabled/fails)\r\n // \"html5\", // 6. The Native Floor (Catches raw .mp4, .webm, .mp3, etc.)\r\n // ],\r\n },\r\n debug: true,\r\n devMode: CTX.isDevEnv,\r\n noPlugList: [], // dev: \"settings.persist\"\r\n};\r\n","export const ACTIONS_BUILD = {\n // --- Keyboard-only actions (no default voice triggers; path router covers voice) ---\n playPause: { label: \"Play / Pause\" },\n skipFwd: { label: \"Skip Forward\", notify: \"fwd\" },\n skipBwd: { label: \"Skip Back\", notify: \"bwd\" },\n volumeUp: { label: \"Volume Up\", notify: \"volumeup\" },\n volumeDown: { label: \"Volume Down\", notify: \"volumedown\" },\n brightnessUp: { label: \"Brightness Up\", notify: \"brightnessup\" },\n brightnessDown: { label: \"Brightness Down\", notify: \"brightnessdown\" },\n playbackRateUp: { label: \"Playback Rate Up\", notify: \"playbackrateup\" },\n playbackRateDown: { label: \"Playback Rate Down\", notify: \"playbackratedown\" },\n stepFwd: { label: \"Step Forward\", notify: \"fwd\" },\n stepBwd: { label: \"Step Back\", notify: \"bwd\" },\n prev: { label: \"Previous\", notify: \"mediaprev\" },\n next: { label: \"Next\", notify: \"medianext\" },\n captions: { label: \"Captions\", notify: \"captions\" },\n captionsFontSizeUp: { label: \"Captions: Font Size Up\" },\n captionsFontSizeDown: { label: \"Captions: Font Size Down\" },\n captionsFontFamily: { label: \"Captions: Font Family\" },\n captionsFontWeight: { label: \"Captions: Font Weight\" },\n captionsFontVariant: { label: \"Captions: Font Variant\" },\n captionsFontOpacity: { label: \"Captions: Font Opacity\" },\n captionsBackgroundOpacity: { label: \"Captions: Background Opacity\" },\n captionsWindowOpacity: { label: \"Captions: Window Opacity\" },\n captionsCharacterEdgeStyle: { label: \"Captions: Character Edge\" },\n captionsTextAlignment: { label: \"Captions: Text Alignment\" },\n objectFit: { label: \"Object Fit\" },\n capture: { label: \"Capture Frame\", notify: \"capture\" },\n cast: { label: \"Cast\", notify: \"cast\" },\n airplay: { label: \"AirPlay\", notify: \"airplay\" },\n dark: { label: \"Dark Mode\" },\n settings: { label: \"Settings\", zen: true },\n // --- Logic-expressible actions (logic[] + keyboard, no default voice triggers) ---\n mute: { label: \"Mute\", notify: \"volumemuted\" },\n fullscreen: { label: \"Fullscreen\", notify: \"fullscreen\", logic: [{ path: \"media.intent.fullscreen\", op: \"toggle\" }] },\n theater: { label: \"Theater\", notify: \"theater\", logic: [{ path: \"media.intent.theater\", op: \"toggle\" }] },\n pictureInPicture: { label: \"Picture in Picture\", notify: \"pictureinpicture\", logic: [{ path: \"media.intent.pictureInPicture\", op: \"toggle\" }] },\n timeFormat: { label: \"Time Format\" },\n timeMode: { label: \"Time Mode\" },\n // --- Compound (voice|time)-only actions (voice engine meta, path router can't reach these) ---\n timeTravelUndo: { label: \"Time Travel: Undo\", zen: true },\n timeTravelRedo: { label: \"Time Travel: Redo\", zen: true },\n voiceQuit: { label: \"Voice: Quit\", zen: true },\n voiceSleep: { label: \"Voice: Sleep\", zen: true },\n voiceSubmit: { label: \"Voice: Submit\", zen: true },\n voiceHistoryFirst: { label: \"Voice: Go to Root\", zen: true },\n voiceHistoryPrev: { label: \"Voice: Go Back\", zen: true },\n voiceHistoryNext: { label: \"Voice: Go Forward\", zen: true },\n voiceHistoryLast: { label: \"Voice: Go to Leaf\", zen: true },\n voiceHistoryClear: { label: \"Voice: Clear History\", zen: true },\n voiceToggleOn: { label: \"Voice: Toggle On\", zen: true },\n voiceToggleOff: { label: \"Voice: Toggle Off\", zen: true },\n} as const;\n","import type { BaseTech, TechConstructor } from \"@techs/base\";\r\nimport type { BasePin, BasePlug, PinConstructor, PlugConstructor } from \"@plugs/base\";\r\nimport type { BaseComponent, ComponentConstructor } from \"@components/base\";\r\nimport { CONFIG_BUILD as CB } from \"@consts/config\";\r\nimport type { ComponentRegistryMap, IconRegistryMap, PinRegistryMap, PlugRegistryMap, TechRegistryMap, MenuRegistryMap } from \"@defs/registries\";\r\nimport { deletePath, setPath } from \"sia-reactor/utils\";\r\nimport { Controller } from \"./controller\";\r\n\r\nexport interface RegistryItem<T> {\r\n name: string;\r\n value: T;\r\n config?: any; // no closed doors\r\n}\r\n\r\nexport class BaseRegistry<T> {\r\n protected items: RegistryItem<T>[] = [];\r\n\r\n public register(name: string, value: T, config?: any): this {\r\n return this.unregister(name), this.items.push({ name, value, config }), this;\r\n }\r\n public unregister(name: string, idx = this.items.findIndex((i) => i.name === name)): this {\r\n return idx !== -1 && this.items.splice(idx, 1), this;\r\n }\r\n public get(name: string): T | undefined {\r\n return this.items.find((i) => i.name === name)?.value;\r\n }\r\n public getAll(order?: string[]): T[] {\r\n if (!order) return this.items.map((i) => i.value);\r\n return this.items.sort((a, b, ai = order.indexOf(a.name), bi = order.indexOf(b.name)) => (ai === -1 && bi === -1 ? 0 : ai === -1 ? 1 : bi === -1 ? -1 : ai - bi)).map((i) => i.value);\r\n }\r\n public clear() {\r\n return (this.items = []), this;\r\n }\r\n}\r\n\r\nexport class OrderedRegistry<T> extends BaseRegistry<T> {\r\n public registerFirst(name: string, value: T, config?: any) {\r\n return this.unregister(name), this.items.unshift({ name, value, config }), this;\r\n }\r\n public registerBefore(key: string, name: string, value: T, config?: any) {\r\n this.unregister(name);\r\n const idx = this.items.findIndex((i) => i.name === key);\r\n return idx !== -1 ? (this.items.splice(idx, 0, { name, value, config }), this) : this.register(name, value, config);\r\n }\r\n public registerAfter(key: string, name: string, value: T, config?: any) {\r\n this.unregister(name);\r\n const idx = this.items.findIndex((i) => i.name === key);\r\n return idx !== -1 ? (this.items.splice(idx + 1, 0, { name, value, config }), this) : this.register(name, value, config);\r\n }\r\n}\r\n\r\nexport class TechRegistry extends OrderedRegistry<TechConstructor> {\r\n private static instance = new TechRegistry();\r\n\r\n public static get<K extends keyof TechRegistryMap>(name: K): TechRegistryMap[K] | undefined;\r\n public static get<T extends BaseTech = BaseTech>(name: string): TechConstructor<T> | undefined;\r\n public static get(name: string): any {\r\n return this.instance.get(name);\r\n }\r\n public static register(Tech: TechConstructor): void {\r\n this.instance.register(Tech.techName, Tech);\r\n }\r\n public static unregister(name: string): void {\r\n this.instance.unregister(name);\r\n }\r\n public static registerBefore(key: string, Tech: TechConstructor): void {\r\n this.instance.registerBefore(key, Tech.techName, Tech);\r\n }\r\n public static registerAfter(key: string, Tech: TechConstructor): void {\r\n this.instance.registerAfter(key, Tech.techName, Tech);\r\n }\r\n public static pick(src: string, techOrder?: string[]): TechConstructor | null {\r\n return this.instance.getAll(techOrder).find((Tech) => Tech.canPlaySource(src)) || null;\r\n }\r\n}\r\n\r\nexport class PlugRegistry extends OrderedRegistry<PlugConstructor> {\r\n private static instance = new PlugRegistry();\r\n\r\n public static get<K extends keyof PlugRegistryMap>(name: K): PlugRegistryMap[K] | undefined;\r\n public static get<T extends BasePlug = BasePlug>(name: string): PlugConstructor<T> | undefined;\r\n public static get(name: string): any {\r\n return this.instance.get(name);\r\n }\r\n public static register(Plug: PlugConstructor, editBuild = Plug.BUILD !== undefined): void {\r\n this.instance.register(Plug.fullName, Plug);\r\n editBuild && setPath(CB as any, Plug.fullName, Plug.BUILD);\r\n }\r\n public static unregister(fullName: string, editBuild = true): void {\r\n this.instance.unregister(fullName);\r\n editBuild && deletePath(CB as any, fullName);\r\n }\r\n public static registerBefore(key: string, Plug: PlugConstructor): void {\r\n this.instance.registerBefore(key, Plug.fullName, Plug);\r\n }\r\n public static registerAfter(key: string, Plug: PlugConstructor): void {\r\n this.instance.registerAfter(key, Plug.fullName, Plug);\r\n }\r\n public static getOrdered(): PlugConstructor[] {\r\n return this.instance.getAll();\r\n }\r\n}\r\n\r\nexport class PinRegistry extends BaseRegistry<PinConstructor> {\r\n private static instance = new PinRegistry();\r\n\r\n public static get<K extends keyof PinRegistryMap>(name: K): PinRegistryMap[K] | undefined;\r\n public static get<T extends BasePin = BasePin>(name: string): PinConstructor<T> | undefined;\r\n public static get(name: string): any {\r\n return this.instance.get(name);\r\n }\r\n public static register(Pin: PinConstructor, editBuild = Pin.BUILD !== undefined): void {\r\n this.instance.register(Pin.fullName, Pin);\r\n editBuild && setPath(CB as any, Pin.Plug.fullName + \".\" + Pin.pinName, Pin.BUILD);\r\n }\r\n public static unregister(fullName: string, editBuild = true): void {\r\n this.instance.unregister(fullName);\r\n editBuild && deletePath((fullName.slice(0, fullName.indexOf(\".\")) in CB ? CB : CB.settings) as any, fullName);\r\n }\r\n}\r\n\r\nexport class MenuRegistry extends BaseRegistry<any> {\r\n private static instance = new MenuRegistry();\r\n\r\n public static get<K extends keyof MenuRegistryMap>(name: K): MenuRegistryMap[K] | undefined;\r\n public static get(name: string): any {\r\n return this.instance.get(name);\r\n }\r\n public static register<K extends keyof MenuRegistryMap>(name: K, factory: MenuRegistryMap[K]): void;\r\n public static register(name: string, factory: any): void {\r\n this.instance.register(name, factory);\r\n }\r\n public static unregister(name: keyof MenuRegistryMap): void {\r\n this.instance.unregister(name);\r\n }\r\n}\r\n\r\nexport class ComponentRegistry extends BaseRegistry<ComponentConstructor> {\r\n private static instance = new ComponentRegistry();\r\n\r\n public static get<K extends keyof ComponentRegistryMap>(name: K): ComponentRegistryMap[K] | undefined;\r\n public static get<T extends BaseComponent = BaseComponent>(name: string): ComponentConstructor<T> | undefined;\r\n public static get(name: string): any {\r\n return this.instance.get(name);\r\n }\r\n public static register(Comp: ComponentConstructor): void {\r\n this.instance.register(Comp.componentName, Comp);\r\n }\r\n public static unregister(name: keyof ComponentRegistryMap): void {\r\n this.instance.unregister(name);\r\n }\r\n public static init<K extends keyof ComponentRegistryMap>(name: K, ctlr: Controller, config?: any): InstanceType<ComponentRegistryMap[K]> | null;\r\n public static init<T extends BaseComponent = BaseComponent>(name: string, ctlr: any, config?: any): T | null;\r\n public static init(name: string, ctlr: any, config = {}): any {\r\n const Comp = this.instance.get(name);\r\n if (!Comp) return null;\r\n const instance = new Comp(ctlr, config);\r\n return instance.create(), instance.setup();\r\n }\r\n public static getAll(): ComponentConstructor[] {\r\n return this.instance.getAll();\r\n }\r\n}\r\n\r\nexport class IconRegistry extends BaseRegistry<string> {\r\n private static instance = new IconRegistry();\r\n\r\n public static get<K extends keyof IconRegistryMap>(name: K, raw?: boolean, token?: RegExp | string): IconRegistryMap[K] | string;\r\n public static get(name: string, raw = false, token = /\\btmg-media-[^\\s\"']+\\s*/g) {\r\n return (raw ? this.instance.get(name)?.replace(token, \"\") : this.instance.get(name)) || `<svg></svg>`;\r\n }\r\n public static register<K extends keyof IconRegistryMap>(name: K, svg: IconRegistryMap[K]): void;\r\n public static register(name: string, svg: string): void {\r\n this.instance.register(name, svg);\r\n }\r\n public static unregister(name: keyof IconRegistryMap): void {\r\n this.instance.unregister(name);\r\n }\r\n // Bulk register a map of icons { play: \"<svg...>\", pause: \"<svg...>\" }\r\n public static registerAll(icons: Record<keyof IconRegistryMap, IconRegistryMap[keyof IconRegistryMap]>): void {\r\n for (const k of Object.keys(icons)) this.instance.register(k as keyof IconRegistryMap, icons[k as keyof IconRegistryMap]);\r\n }\r\n}\r\n","import { Controller } from \"./controller\";\r\nimport { type Reactive, reactive } from \"sia-reactor\";\r\nimport { nuke } from \"sia-reactor/utils\";\r\nimport { guardAllMethods } from \"@utils/methd\";\r\nimport { isObj } from \"@utils/obj\";\r\nimport { isFunc } from \"@t007/utils\";\r\n\r\n// A lifecylce controlled by it's Controller\r\n// Try to use methods for most things so they can be customized when extended and also auto guarded\r\nexport abstract class Controllable<Config = any, State = any> {\r\n protected readonly ac = new AbortController();\r\n protected readonly signal = this.ac.signal;\r\n public readonly ctlr: Controller;\r\n public readonly media: Controller[\"media\"];\r\n public readonly state!: State extends object ? Reactive<State> : State; // for reactivity needs of those who pass it up\r\n public config: Config; // may be a reactive obj node or the obj itself\r\n public get settings() {\r\n return this.ctlr.settings; // can change ref\r\n } // for easy reach, better devx\r\n\r\n constructor(ctlr: Controller, config: Config, state?: State) {\r\n guardAllMethods(this, ctlr.guard);\r\n this.signal = AbortSignal.any([this.signal, ctlr.signal]);\r\n this.ctlr = ctlr;\r\n this.media = ctlr.media; // can't change ref\r\n this.state = (isObj(state) ? reactive(state) : state) as Controllable[\"state\"];\r\n this.config = config;\r\n }\r\n\r\n public setup(): this {\r\n return this.onSetup(), this; // We let the subclass do its work\r\n }\r\n protected abstract onSetup(): void;\r\n\r\n public destroy(): void {\r\n !this.signal.aborted && this.ac.abort(`[TMG Controllable] Instance is being destroyed`); // incase controller already aborted, kills all listeners and timers before proper destruction below\r\n this.onDestroy(), (this.state as any)?.destroy?.(), this.config !== this.media && isFunc((this.config as any)?.destroy) && (this.config as any)?.destroy?.(); // Can I clean here?... Anatoly :)\r\n nuke(this);\r\n }\r\n protected onDestroy(): void {}\r\n}\r\n","// src/ts/core/dom.ts\nimport { createEl, assignEl } from \"sia-reactor/utils\";\nimport { getActiveEl } from \"sia-reactor/utils\";\nimport { NOOP } from \"sia-reactor\";\nvar INTERACTIVE_SELECTOR = \":is(button,[href],input:not([type='hidden']),select,textarea,details>summary,[contenteditable],iframe,audio[controls],video[controls],[tabindex]):not([disabled],[tabindex='-1'],[data-focus-guard],[inert],[inert] *)\";\nvar isInteractive = (target) => target instanceof HTMLElement && target.matches(INTERACTIVE_SELECTOR);\nvar VIRTUAL_RESOURCE = /* @__PURE__ */ Symbol.for(\"T007_VIRTUAL_RESOURCE\");\nfunction loadResource(req, type = \"style\", { module, media, crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, attempts = 3, retryKey = false } = {}, win = window) {\n win.t007 ??= {}, win.t007._resourceCache ??= {};\n if (req === VIRTUAL_RESOURCE || isSym(req)) return Promise.resolve();\n const src = req;\n if (win.t007._resourceCache[src]) return win.t007._resourceCache[src];\n const existing = type === \"script\" ? Array.prototype.find.call(win.document.scripts, (s) => isSameURL(s.src, src)) : type === \"style\" ? Array.prototype.find.call(win.document.styleSheets, (s) => isSameURL(s.href, src)) : null;\n if (existing) return win.t007._resourceCache[src] = Promise.resolve(existing);\n win.t007._resourceCache[src] = new Promise((resolve, reject) => {\n (function tryLoad(remaining, el) {\n const onerror = () => {\n el?.remove?.();\n if (remaining > 1) {\n setTimeout(tryLoad, 1e3, remaining - 1);\n console.warn(`Retrying ${type} load for \"${src}\" (${attempts - remaining + 1})...`);\n } else {\n delete win.t007._resourceCache[src];\n reject(new Error(`${capitalize(type)} load failed for \"${src}\" after ${attempts - 1} attempts`));\n }\n };\n const url = retryKey && remaining < attempts ? `${src}${src.includes(\"?\") ? \"&\" : \"?\"}_${retryKey}=${Date.now()}` : src;\n if (type === \"script\") win.document.body.append(el = createEl(\"script\", { src: url, type: module ? \"module\" : \"text/javascript\", crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, onload: () => resolve(el), onerror }) || \"\");\n else if (type === \"style\") win.document.head.append(el = createEl(\"link\", { rel: \"stylesheet\", href: url, media, crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, onload: () => resolve(el), onerror }) || \"\");\n else reject(new Error(`Unsupported resource type: ${type}`));\n })(attempts);\n });\n return win.t007._resourceCache[src];\n}\nfunction getWindow(el = window) {\n return el?.ownerDocument?.defaultView ?? el?.defaultView ?? window;\n}\nfunction createListRenderer({ container, getKey, createNode, updateNode = NOOP, destroyNode = NOOP, initNode }) {\n let nodeRegistry = /* @__PURE__ */ new Map();\n if (initNode) {\n const children = Array.from(container.children);\n for (let i = 0, len = children.length; i < len; i++) initNode(children[i], (key) => nodeRegistry.set(key, children[i]));\n }\n return function syncDOM(array, strict = true) {\n const newRegistry = /* @__PURE__ */ new Map(), seenKeys = /* @__PURE__ */ new Set(), oldPositions = /* @__PURE__ */ new WeakMap(), children = Array.from(container.children);\n for (let i = 0, len = children.length; i < len; i++) oldPositions.set(children[i], i);\n const futureNodes = [], oldIndices = [];\n for (let i = 0, len = array.length; i < len; i++) {\n const item = array[i], key = getKey(item);\n if (seenKeys.has(key)) throw new Error(`[List Renderer] Duplicate key \"${key}\" detected`);\n let node = nodeRegistry.get(key);\n if (!node) {\n node = createNode(item);\n if (!node) {\n if (strict) throw new Error(`[List Renderer] No HTMLElement for key \"${key}\"`);\n continue;\n }\n oldIndices.push(-1);\n } else updateNode(node, item), oldIndices.push(oldPositions.get(node) ?? -1);\n seenKeys.add(key), futureNodes.push(node), newRegistry.set(key, node);\n }\n for (const [key, node] of nodeRegistry.entries()) !seenKeys.has(key) && node.parentElement === container && (destroyNode(node, key), node.remove());\n const sequence = longestIncreasingSubsequence(oldIndices), stable = new Set(sequence);\n let anchor = null;\n for (let i = futureNodes.length - 1; i >= 0; i--) {\n const node = futureNodes[i];\n if (oldIndices[i] !== -1 && stable.has(i)) {\n anchor = node;\n continue;\n }\n container.insertBefore(node, anchor), anchor = node;\n }\n nodeRegistry = newRegistry;\n };\n}\n\n// src/ts/index.ts\nimport { NIL, NOOP as NOOP2 } from \"sia-reactor\";\n\n// src/ts/core/obj.ts\nimport { isObj } from \"sia-reactor/utils\";\nfunction isDef(val) {\n return \"undefined\" !== typeof val;\n}\nfunction isSym(val) {\n return \"symbol\" === typeof val;\n}\nfunction isBool(val) {\n return \"boolean\" === typeof val;\n}\nfunction isNum(val) {\n return \"number\" === typeof val;\n}\nfunction isStr(val) {\n return \"string\" === typeof val;\n}\nfunction isArr(obj) {\n return Array.isArray(obj);\n}\nfunction isPOJO(obj, crossRealms = false, typecheck = true) {\n return (typecheck ? isObj(obj, false) : true) && (crossRealms ? Object.prototype.toString.call(obj) === \"[object Object]\" : obj.constructor === Object);\n}\nfunction isIter(obj) {\n return obj != null && \"function\" === typeof obj[Symbol.iterator];\n}\nfunction isFunc(val) {\n return \"function\" === typeof val;\n}\nfunction inBoolArrOpt(opt, str) {\n return opt?.includes?.(str) ?? opt;\n}\n\n// src/ts/core/num.ts\nimport { clamp } from \"sia-reactor/utils\";\nfunction longestIncreasingSubsequence(array) {\n const n = array.length, parent = new Array(n), tails = [];\n for (let i = 0; i < n; i++) {\n const value = array[i];\n if (value === -1) continue;\n let left = 0;\n let right = tails.length;\n while (left < right) {\n const mid = left + right >> 1;\n if (array[tails[mid]] < value) left = mid + 1;\n else right = mid;\n }\n if (left > 0) parent[i] = tails[left - 1];\n else parent[i] = -1;\n tails[left] = i;\n }\n if (!tails.length) return [];\n const result = [];\n let k = tails[tails.length - 1];\n while (k >= 0) result.push(k), k = parent[k];\n return result.reverse(), result;\n}\n\n// src/ts/core/str.ts\nfunction uid(prefix = \"\") {\n return prefix + Date.now().toString(36) + \"_\" + performance.now().toString(36).replace(\".\", \"\") + \"_\" + Math.random().toString(36).slice(2);\n}\nfunction capitalize(word = \"\") {\n return word.replace(/^(\\s*)([a-z])/i, (_, s, l) => s + l.toUpperCase());\n}\nfunction camelize(str = \"\", { source } = /[\\s_-]+/, { preserveInnerCase: pIC = true, upperFirst: uF = false } = {}) {\n return (pIC ? str : str.toLowerCase()).replace(new RegExp(source + \"(\\\\w)\", \"g\"), (_, c) => c.toUpperCase()).replace(/^\\w/, (c) => c[uF ? \"toUpperCase\" : \"toLowerCase\"]());\n}\nfunction uncamelize(str, separator = \" \") {\n return str.replace(/([a-z])([A-Z])/g, `$1${separator}$2`).toLowerCase();\n}\nfunction remToPx(rem, el = document.documentElement) {\n return rem * parseFloat(getComputedStyle(el).fontSize);\n}\nfunction pxToRem(px, el = document.documentElement) {\n return px / parseFloat(getComputedStyle(el).fontSize);\n}\nfunction parseCSSTime(time) {\n return time?.endsWith?.(\"ms\") ? parseFloat(time) : parseFloat(time) * 1e3;\n}\nfunction parseCSSSize(size, el) {\n return size?.endsWith?.(\"px\") ? parseFloat(size) : remToPx(parseFloat(size), el);\n}\nfunction cleanURL(url) {\n try {\n const u = new URL(url, window.location.href);\n return decodeURIComponent(u.origin + u.pathname);\n } catch {\n return url.replace(/\\\\/g, \"/\").split(\"?\")[0].trim();\n }\n}\nfunction isSameURL(url1, url2) {\n if (url1 === url2) return true;\n if (!isStr(url1) || !isStr(url2) || !url1 || !url2) return false;\n return cleanURL(url1) === cleanURL(url2);\n}\n\n// src/ts/core/fn.ts\nimport { setTimeout as setTimeout2, setInterval, requestAnimationFrame } from \"sia-reactor/utils\";\nfunction throttle(key, fn, delay = 30, strict = true, signal, win) {\n const throttleMap = t007._throttlers ??= /* @__PURE__ */ new Map();\n if (strict === true) {\n const now = performance.now();\n return now - (throttleMap.get(key) ?? 0) < delay ? void 0 : (throttleMap.set(key, now), fn());\n }\n if (throttleMap.has(key)) return;\n const id = strict === false ? setTimeout2(() => throttleMap.delete(key), delay, signal, win) : strict(() => throttleMap.delete(key));\n return throttleMap.set(key, id), fn();\n}\nfunction debounce(key, fn, delay = 30, strict = true, signal, win) {\n const debounceMap = t007._debouncers ??= /* @__PURE__ */ new Map();\n if (strict) {\n const now = performance.now(), prev = debounceMap.get(key) ?? 0;\n return debounceMap.set(key, now), now - prev < delay ? void 0 : fn();\n }\n const prevId = debounceMap.get(key);\n prevId !== void 0 && (win ?? window).clearTimeout(prevId);\n const id = setTimeout2(() => (debounceMap.delete(key), fn()), delay, signal, win);\n return void debounceMap.set(key, id);\n}\nfunction RAFLoop(key, fn, signal, win) {\n const rafLoopMap = t007._RAFLoopers ??= /* @__PURE__ */ new Map();\n if (rafLoopMap.has(key)) return void rafLoopMap.set(key, fn);\n rafLoopMap.set(key, fn);\n const loop = (_ = 0, fn2 = rafLoopMap.get(key)) => fn2 && (fn2(), requestAnimationFrame(loop, signal, win));\n loop();\n}\nvar cancelRAFLoop = (key) => t007._RAFLoopers ? t007._RAFLoopers.delete(key) : false;\nfunction limited(FN_KEY, fn, opts = {}) {\n let count = 0, { key, maxTimes: max = 1, oncePerSession = true } = isStr(opts) ? { key: opts } : opts;\n const getReg = () => JSON.parse(localStorage.getItem(FN_KEY) || \"{}\"), setReg = (r) => localStorage.setItem(FN_KEY, JSON.stringify(r));\n const handle = (...args) => {\n if (oncePerSession && count > 0) return void 0;\n if (!key) return count++ < max ? fn(...args) : void 0;\n const r = getReg(), c = r[key] || 0;\n return c < max ? (count++, r[key] = c + 1, setReg(r), fn(...args)) : void 0;\n };\n handle.left = max - (handle.count = count);\n handle.reset = () => (count = 0, key && ((r) => (delete r[key], setReg(r)))(getReg()));\n handle.block = () => (count = max, key && ((r) => (r[key] = max, setReg(r)))(getReg()));\n return handle;\n}\nvar mockAsync = (timeout = 250) => new Promise((resolve) => setTimeout2(resolve, timeout));\nvar breath = (w = window) => new Promise((res) => w.requestAnimationFrame(res));\nvar deepBreath = (w = window) => new Promise((res) => w.requestAnimationFrame(() => w.requestAnimationFrame(res)));\nfunction bindCleanupToSignal(cleanup, signal) {\n signal?.aborted ? cleanup() : signal?.addEventListener(\"abort\", cleanup, { once: true });\n if (signal && !signal.aborted) cleanup = (() => (signal.removeEventListener(\"abort\", cleanup), cleanup()));\n return cleanup;\n}\n\n// src/ts/core/keys.ts\nimport { KEYS_BLOCKS, parseKeyCombo, stringifyKeyEvent, cleanKeyCombo, matchKeys, getTermsForKey, keyEventAllowed, formatKeyForDisplay, formatKeyShortcutsForDisplay, parseForARIAKS } from \"sia-reactor/utils\";\n\n// src/ts/core/file.ts\nfunction formatSize(bytes, decimals = 3, base = 1e3) {\n if (bytes < base) return `${bytes} byte${bytes == 1 ? \"\" : \"s\"}`;\n const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"], exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(base)), units.length - 1);\n return `${(bytes / Math.pow(base, exponent)).toFixed(decimals).replace(/\\.0+$/, \"\")} ${units[exponent]}`;\n}\n\n// src/ts/mixins/methd.ts\nimport { onAllMethods, bindAllMethods, guardAllMethods, guardMethod } from \"sia-reactor/utils\";\n\n// src/ts/index.ts\nif (\"undefined\" !== typeof window) {\n (window.t007 ??= {}).VIRTUAL_RESOURCE = VIRTUAL_RESOURCE;\n window.T007_TOAST_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/toast@latest`;\n window.T007_INPUT_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/input@latest`;\n window.T007_DIALOG_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/dialog@latest`;\n window.T007_TOAST_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/toast@latest/dist/index.min.css`;\n window.T007_INPUT_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/input@latest/dist/index.min.css`;\n window.T007_DIALOG_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/dialog@latest/dist/index.min.css`;\n}\n\nexport {\n createEl,\n assignEl,\n INTERACTIVE_SELECTOR,\n isInteractive,\n VIRTUAL_RESOURCE,\n loadResource,\n getWindow,\n createListRenderer,\n getActiveEl,\n isObj,\n isDef,\n isSym,\n isBool,\n isNum,\n isStr,\n isArr,\n isPOJO,\n isIter,\n isFunc,\n inBoolArrOpt,\n longestIncreasingSubsequence,\n clamp,\n uid,\n capitalize,\n camelize,\n uncamelize,\n remToPx,\n pxToRem,\n parseCSSTime,\n parseCSSSize,\n cleanURL,\n isSameURL,\n setTimeout2 as setTimeout,\n setInterval,\n requestAnimationFrame,\n throttle,\n debounce,\n RAFLoop,\n cancelRAFLoop,\n limited,\n mockAsync,\n breath,\n deepBreath,\n bindCleanupToSignal,\n KEYS_BLOCKS,\n parseKeyCombo,\n stringifyKeyEvent,\n cleanKeyCombo,\n matchKeys,\n getTermsForKey,\n keyEventAllowed,\n formatKeyForDisplay,\n formatKeyShortcutsForDisplay,\n parseForARIAKS,\n formatSize,\n onAllMethods,\n bindAllMethods,\n guardAllMethods,\n guardMethod,\n NIL,\n NOOP2 as NOOP\n};\n","import { camelize } from \"./str\";\r\nimport type { Control, ControlPanelBottomTuple } from \"@plugs/settings/controlPanel/types\";\r\nimport { type Paths, type PathValue } from \"sia-reactor\";\r\nimport { setPath } from \"sia-reactor/utils\";\r\nimport type { UIObject, UISettings, UIOption, UITuple } from \"@defs/UIOptions\";\r\nimport { isObj, isArr } from \"@t007/utils\";\r\n\r\nexport { isArr, isObj };\r\nexport { isDef, isSym, isBool, isNum, isStr, isPOJO, isIter, isFunc, inBoolArrOpt } from \"@t007/utils\";\r\n\r\n// Type Guards\r\nexport function isUISetting<T = unknown>(obj: unknown): obj is UISettings<T> {\r\n return isObj(obj) && \"options\" in obj && isArr((obj as UISettings<T>).options);\r\n}\r\nexport function isUIOption<T>(opt: UIOption<T>): opt is UITuple<T> {\r\n return isObj(opt) && \"value\" in (opt as object);\r\n}\r\n\r\n// Assignment & Derivation\r\nexport function setHTMLConfig<T extends object>(target: T, attr: `tmg--${Paths<T, \"--\">}`, value: string): void {\r\n value = value.trim();\r\n const path = attr.replace(\"tmg--\", \"\") as Paths<T, \"--\">;\r\n const parsedValue = (() => {\r\n if (value.includes(\",\")) return value.split(\",\")?.map((v: string) => v.trim());\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n if (value === \"null\") return null;\r\n if (/^\\d+$/.test(value)) return Number(value);\r\n return value;\r\n })() as PathValue<T, typeof path, \"--\">;\r\n setPath<T, \"--\">(target, path, parsedValue, \"--\", (p) => camelize(p));\r\n}\r\n\r\nexport function getBoolOrStr(value: string | boolean): string | boolean {\r\n return value === \"true\" ? true : value === \"false\" ? false : value;\r\n}\r\n\r\nexport function getUIOpt<T = unknown>(opts: UIOption<T>[] | undefined, value: T, key: \"display\" | \"value\" = \"display\"): string {\r\n if (opts)\r\n for (const opt of opts) {\r\n const p = parseUIOpt<T>(opt);\r\n if (p.value == value) return p[key] as string;\r\n }\r\n return String(value);\r\n}\r\n\r\nexport function getUniqueOpts<T>(options: UITuple<T>[]) {\r\n const counts: Record<string, number> = {};\r\n options.forEach((opt) => (counts[opt.display] = (counts[opt.display] || 0) + 1)); // First pass: Count occurrences of each display name\r\n const seen: Record<string, number> = {};\r\n for (let i = options.length - 1; i >= 0; i--) {\r\n const opt = options[i];\r\n if (counts[opt.display] > 1) {\r\n seen[opt.display] = (seen[opt.display] || 0) + 1;\r\n const num = counts[opt.display] - seen[opt.display] + 1;\r\n opt.display = `${opt.display} (${num})`;\r\n }\r\n } // Second pass: Add numbers to duplicates, tracking our current index from the back\r\n return options;\r\n}\r\n\r\nexport function parseUIOpt<T = unknown>(opt: UIOption<T>): UITuple<T> {\r\n return isUIOption<T>(opt) ? { value: opt.value, display: String(opt.display ?? opt.value), infoText: opt.infoText } : { value: opt as T, display: String(opt) };\r\n}\r\nexport function parseUIOpts<T = unknown>(opts: UIOption<T>[]): T[] {\r\n return opts.map((opt) => parseUIOpt(opt).value);\r\n}\r\n\r\nexport function parseUIObj<T extends Record<string, any>>(obj: T): UIObject<T> {\r\n const result: any = {} as UIObject<T>,\r\n keys = Object.keys(obj);\r\n for (let i = 0; i < keys.length; i++) {\r\n const entry = obj[keys[i]];\r\n if (!isObj(entry)) continue;\r\n if (isUISetting(entry))\r\n result[keys[i]] = {\r\n values: entry.options.map((opt: UIOption<unknown>) => parseUIOpt(opt).value),\r\n displays: entry.options.map((opt: UIOption<unknown>) => parseUIOpt(opt).display),\r\n };\r\n else result[keys[i]] = parseUIObj(entry); // recurse on sub-branch\r\n }\r\n return result;\r\n}\r\n\r\n// Control Panel Utilities\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown, arr?: false): ControlPanelBottomTuple | false;\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown, arr: true): Control[] | false;\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown = [], arr = false): ControlPanelBottomTuple | Control[] | false {\r\n if (!isObj(obj) && !isArr(obj)) return false;\r\n const [third = [], second = [], first = []] = isObj<Partial<ControlPanelBottomTuple>>(obj) ? (Object.values(obj).reverse() as Control[][]) : isArr((obj as Control[][])[0]) ? [...(obj as Control[][])].reverse() : [obj as Control[]];\r\n return arr ? ([...third, ...second, ...first] as Control[]) : ({ 1: first, 2: second, 3: third } as ControlPanelBottomTuple);\r\n}\r\n\r\nexport function getPanelSplitCtrls<T = any>(row: T[]): { left: T[]; center: T[]; right: T[] } {\r\n if (!row?.length) return { left: [], center: [], right: [] };\r\n const s1 = row.indexOf(\"spacer\" as any),\r\n s2 = row.indexOf(\"spacer\" as any, s1 + 1);\r\n return s1 === -1 ? { left: row, center: [], right: [] } : s2 === -1 ? { left: row.slice(0, s1), center: [], right: row.slice(s1 + 1) } : { left: row.slice(0, s1), center: row.slice(s1 + 1, s2), right: row.slice(s2 + 1) };\r\n}\r\n\r\nexport function getPanelLocation(b: any, id: string) {\r\n if (isArr(b.top) && b.top.includes(id)) return { path: \"top\", row: b.top, zone: getPanelSplitCtrls(b.top).left.includes(id) ? \"left\" : getPanelSplitCtrls(b.top).center.includes(id) ? \"center\" : \"right\" };\r\n if (isArr(b.center) && b.center.includes(id)) return { path: \"center\", row: b.center, zone: \"zone\" };\r\n if (b.bottom) {\r\n const dB = parsePanelBottomObj(b.bottom);\r\n if (dB) for (const k in dB) if ((dB as any)[k]?.includes(id)) return { path: `bottom.${k}`, row: (dB as any)[k], zone: getPanelSplitCtrls((dB as any)[k]).left.includes(id) ? \"left\" : getPanelSplitCtrls((dB as any)[k]).center.includes(id) ? \"center\" : \"right\" };\r\n }\r\n return { path: \"bottom.1\", row: [], zone: \"left\" };\r\n}\r\n\r\nexport function insertPanelCtrl(current: any[], defaults: readonly any[], id: string): void {\r\n let s = 0;\r\n for (let i = 0; i < defaults.indexOf(id); i++) if (defaults[i] === \"spacer\") s++;\r\n for (let i = defaults.indexOf(id) + 1; i < defaults.length; i++)\r\n if (defaults[i] === \"spacer\") {\r\n let c = 0;\r\n for (let j = 0; j < current.length; j++) if (current[j] === \"spacer\" && ++c === s + 1) return void current.splice(j, 0, id);\r\n } else {\r\n const idx = current.indexOf(defaults[i]);\r\n if (idx !== -1) return void current.splice(idx, 0, id);\r\n }\r\n current.push(id);\r\n}\r\n","import { cleanKeyCombo } from \"@t007/utils\";\nexport { type KeysSettings, type KeyStruct, parseKeyCombo, stringifyKeyEvent, cleanKeyCombo, matchKeys, getTermsForKey, keyEventAllowed, formatKeyShortcutsForDisplay, parseForARIAKS } from \"@t007/utils\";\n\nexport function formatActionForDisplay(keyShortcut: string | string[] | undefined, voiceCmd?: string[] | undefined): string {\n const kArr = Array.isArray(keyShortcut) ? keyShortcut : keyShortcut ? [keyShortcut] : [];\n return [kArr.length ? `⌨️ ${kArr.map((c) => cleanKeyCombo(c).replace(\" \", \"space\")).join(\" or \")}` : \"\", voiceCmd?.length ? `🎙️ \"${voiceCmd[0]}\"` : \"\"].filter(Boolean).join(\" · \");\n}\n\nexport function formatKeyForDisplay(keyShortcut: string | string[] | undefined, voiceCmd?: string[] | undefined): string {\n const combined = formatActionForDisplay(keyShortcut, voiceCmd);\n return combined ? ` ( ${combined} )` : \"\";\n}\n","import { REvent } from \"sia-reactor\";\r\nimport { Controllable } from \"@core/controllable\";\r\nimport { Controller } from \"@core/controller\";\r\nimport { parseForARIAKS } from \"@utils/keys\";\r\nimport { CtlrMedia, MediaFeatures } from \"@defs/contract\";\r\nimport { ComponentConstructor, ComponentState } from \"./types\";\r\n\r\nexport abstract class BaseComponent<Config = any, State extends ComponentState = any, El extends HTMLElement = HTMLElement> extends Controllable<Config, State> {\r\n public static readonly componentName: string;\r\n public static readonly isControl: boolean = false;\r\n public get name() {\r\n return (this.constructor as ComponentConstructor).componentName;\r\n }\r\n public element!: El;\r\n public get el() {\r\n return this.element;\r\n }\r\n\r\n constructor(ctlr: Controller, config: Config, state?: State) {\r\n super(ctlr, config, { label: \"\", cmd: \"\", active: false, disabled: false, hidden: false, ...state } as State);\r\n }\r\n protected override onSetup(): void {\r\n this.mount?.();\r\n this.ctlr.state.readyState ? this.wire?.() : this.wire && this.ctlr.state.wonce(\"readyState\", this.wire, { signal: this.signal }); // wire after all plugs setup\r\n }\r\n protected override onDestroy(): void {\r\n this.unmount();\r\n }\r\n\r\n public abstract create(): El; // Must assign to this.element before returning\r\n public mount?(): void {}\r\n public unmount(): void {\r\n this.el.remove();\r\n }\r\n public wire?(): void {} // auto unwiring\r\n\r\n public active() {\r\n this.el.classList.toggle(\"tmg-media-control-active\", (this.state.active = true));\r\n }\r\n public inactive() {\r\n this.el.classList.toggle(\"tmg-media-control-active\", (this.state.active = false));\r\n }\r\n public disable(): void {\r\n this.el.classList.toggle(\"tmg-media-control-disabled\", (this.state.disabled = true));\r\n }\r\n public enable(): void {\r\n this.el.classList.toggle(\"tmg-media-control-disabled\", (this.state.disabled = false));\r\n }\r\n public hide(): void {\r\n this.el.classList.toggle(\"tmg-media-control-hidden\", (this.state.hidden = true));\r\n }\r\n public show(): void {\r\n this.el.classList.toggle(\"tmg-media-control-hidden\", (this.state.hidden = false));\r\n }\r\n protected gate(e: REvent<CtlrMedia, `features.${keyof MediaFeatures}`>): void {\r\n !e.value ? this.hide() : this.canShow && this.show();\r\n }\r\n protected get canShow(): boolean {\r\n return true;\r\n } // override to make gating smarter\r\n\r\n protected setBtnARIA(dblAction?: string, target: HTMLElement = this.el): void {\r\n this.state.label && target.setAttribute(\"aria-label\", this.state.label);\r\n this.state.cmd && target.setAttribute(\"aria-keyshortcuts\", parseForARIAKS(this.state.cmd));\r\n if (dblAction) target.setAttribute(\"aria-description\", `Double-press to ${dblAction}`);\r\n else if (target.hasAttribute(\"aria-description\")) target.removeAttribute(\"aria-description\");\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\n","import type { RangeInputConfig } from \"./types\";\r\n\r\nexport const RANGE_INPUT_BUILD: RangeInputConfig = {\r\n label: \"Range Slider\",\r\n min: 0,\r\n max: 100,\r\n value: 0,\r\n previewValue: 50,\r\n step: 1,\r\n scrub: {\r\n sync: true,\r\n relative: true,\r\n cancel: {\r\n delta: 5,\r\n timeout: 1500,\r\n },\r\n },\r\n wheel: {\r\n disabled: false,\r\n axisRatio: 6,\r\n },\r\n preview: true,\r\n tooltip: true,\r\n readonly: false,\r\n disabled: false,\r\n divs: [],\r\n marks: [],\r\n};\r\n","import { BaseComponent } from \"../base\";\r\nimport { RangeInputChunk, RangeInputConfig, RangeState } from \"./types\";\r\nimport { RANGE_INPUT_BUILD } from \"./build\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport { reactive, type Reactive } from \"sia-reactor\";\r\nimport { mergeObjs } from \"sia-reactor/utils\";\r\nimport { createEl, getWindow, observeResize } from \"@utils/dom\";\r\nimport { clamp, stepNum } from \"@utils/num\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { startTx, endTx, Transaction } from \"sia-reactor/modules\";\r\n\r\nexport class RangeInput<Config extends RangeInputConfig = RangeInputConfig, State extends RangeState = RangeState> extends BaseComponent<Reactive<Config>, State, HTMLDivElement> {\r\n public declare config: Reactive<Config> & Reactive<RangeInputConfig>;\r\n public static readonly componentName: string = \"rangeinput\";\r\n public barsWrapper!: HTMLElement;\r\n public marksWrapper!: HTMLElement;\r\n public chunks: RangeInputChunk[] = [];\r\n public thumbEl!: HTMLElement;\r\n public tooltipEl!: HTMLElement;\r\n public isVertical = false;\r\n public isRTL = false;\r\n protected rect!: DOMRect;\r\n protected lastPtrPos = 0;\r\n protected lastThumbPos = 0;\r\n protected currentThumbPos = 0;\r\n protected stallCancelScrub = false;\r\n protected cancelScrubTimeoutId: number | null = null;\r\n protected tx: Transaction | null = null;\r\n\r\n constructor(ctlr: Controller, config?: Partial<Config>, state?: Partial<State>) {\r\n super(ctlr, reactive(mergeObjs(structuredClone(RANGE_INPUT_BUILD), config) as unknown as Reactive<Config>, { scrubbing: false, previewing: false, cancelScrub: false, ...state } as any));\r\n }\r\n\r\n public override create() {\r\n // Variables Assignments\r\n this.element = createEl(\"div\", { className: \"tmg-media-range-container\", tabIndex: 0, role: \"slider\" });\r\n this.barsWrapper = createEl(\"div\", { className: \"tmg-media-range-bars-wrapper\" });\r\n this.marksWrapper = createEl(\"div\", { className: \"tmg-media-range-marks-wrapper\" });\r\n this.thumbEl = createEl(\"div\", { className: \"tmg-media-range-thumb\" });\r\n this.tooltipEl = createEl(\"div\", { className: \"tmg-media-range-tooltip\" });\r\n // DOM Injection\r\n return this.el.append(this.barsWrapper, this.marksWrapper, this.thumbEl, this.tooltipEl), this.el;\r\n }\r\n\r\n public override wire(): void {\r\n // Variables Asignments\r\n this.rect = this.el.getBoundingClientRect();\r\n // Event Listeners\r\n this.el.addEventListener(\"pointerdown\", this.handlePointerDown, { signal: this.signal });\r\n this.el.addEventListener(\"keydown\", this.handleKeyDown, { signal: this.signal });\r\n this.el.addEventListener(\"wheel\", this.handleWheel, { passive: false, signal: this.signal });\r\n this.el.addEventListener(\"mouseover\", () => (this.rect = this.el.getBoundingClientRect()), { signal: this.signal });\r\n this.el.addEventListener(\"mousemove\", this.handleInput, { signal: this.signal });\r\n for (const e of [\"mouseleave\", \"touchend\", \"touchcancel\"]) this.el.addEventListener(e, this.stopPreviewing, { signal: this.signal });\r\n // State Watchers\r\n this.state.watch(\"scrubbing\", (value) => (value ? (this.tx = startTx(`${this.config.label} Scrub`)) : this.tx && this.config.stall(() => (endTx(this.tx!), (this.tx = null)))), { signal: this.signal });\r\n // ----- Listeners\r\n this.state.on(\"previewing\", ({ value }) => this.el.classList.toggle(\"tmg-media-control-previewing\", !!value), { signal: this.signal });\r\n this.state.on(\"scrubbing\", ({ value }) => this.el.classList.toggle(\"tmg-media-control-scrubbing\", !!value), { signal: this.signal });\r\n this.state.on(\"cancelScrub\", ({ value }) => this.el.classList.toggle(\"tmg-media-control-cancel-scrub\", !!value), { signal: this.signal });\r\n // Config Setters\r\n this.config.set(\"value\", (value) => stepNum(value, this.config), { signal: this.signal });\r\n // ------ Listeners\r\n this.config.on(\"label\", ({ value }) => (this.el.ariaLabel = value!), { init: true, signal: this.signal });\r\n this.config.on(\"min\", ({ value }) => (this.el.ariaValueMin = String(value!)), { init: true, signal: this.signal });\r\n this.config.on(\"max\", ({ value }) => (this.el.ariaValueMax = String(value!)), { init: true, signal: this.signal });\r\n this.config.watch(\"value\", this.onValue, { init: true, signal: this.signal }); // #SYNC: near native speed\r\n this.config.watch(\"previewValue\", this.onPreviewValue, { init: true, signal: this.signal }); // #SYNC: near native speed\r\n this.config.on(\"tooltip\", ({ value }) => this.el.toggleAttribute(\"data-tooltip\", !!value), { init: true, signal: this.signal });\r\n this.config.on(\"readonly\", ({ value }) => this.el.toggleAttribute(\"readonly\", !!value), { init: true, signal: this.signal });\r\n this.config.on(\"disabled\", ({ value }) => this.el.toggleAttribute(\"disabled\", !!value), { init: true, signal: this.signal });\r\n this.config.on(\"divs\", ({ currentTarget: { value } }) => this.syncDivs(value), { init: true, signal: this.signal });\r\n this.config.on(\"marks\", ({ currentTarget: { value } }) => this.syncMarks(value), { init: true, signal: this.signal });\r\n // Post Wiring\r\n observeResize(this.el, () => this.ctlr.throttle(`${this.config.label}Resizing`, this.handleResize, 30, false), this.signal);\r\n }\r\n protected scrub(value: number, bypass = false): boolean {\r\n return this.canScrub ? (!bypass ? (this.config.value = value) : this.onValue(value), true) : false;\r\n }\r\n public get canScrub(): boolean {\r\n return !this.config.readonly && !this.config.disabled;\r\n }\r\n\r\n protected onValue(value: number): void {\r\n this.syncElPos(this.thumbEl, this.getValuePos(value), false, \"auto\"), this.syncChunks(\"value\", value);\r\n if (!this.state.scrubbing) this.el.ariaValueNow = String(value);\r\n }\r\n protected onPreviewValue(value: number): void {\r\n this.syncChunks(\"preview\", value), this.config.tooltip && (this.syncElPos(this.tooltipEl, this.getValuePos(value), false, !(this.state.previewing && !this.state.scrubbing) ? \"auto\" : false, this.thumbEl), (this.tooltipEl.innerHTML = (this.config.formatTooltip ? String(this.config.formatTooltip(value)) : `${Math.round(value)}`) + ` ${this.getValueChunk(value)?.label || \"\"}`.trim()));\r\n }\r\n\r\n protected handlePointerDown(e: PointerEvent): void {\r\n if (this.state.scrubbing || this.config.readonly || this.config.disabled) return;\r\n this.state.scrubbing = true;\r\n this.el.setPointerCapture(e.pointerId);\r\n const s = getWindow(this.el).getComputedStyle(this.el);\r\n (this.isVertical = s.writingMode.includes(\"vertical\")), (this.isRTL = s.direction === \"rtl\");\r\n (this.rect = this.el.getBoundingClientRect()), (this.lastPtrPos = this.getPos(e)), (this.lastThumbPos = this.currentThumbPos = this.getValuePos());\r\n getWindow(this.el).addEventListener(\"pointermove\", this.handleInput, { signal: this.signal }), this.handleInput(e);\r\n getWindow(this.el).addEventListener(\"pointerup\", this.stopScrubbing, { signal: this.signal }), getWindow(this.el).addEventListener(\"pointercancel\", this.stopScrubbing, { signal: this.signal });\r\n }\r\n\r\n protected stopScrubbing(): void {\r\n if (!this.state.scrubbing) return;\r\n this.state.scrubbing = this.state.previewing = false;\r\n this.ctlr.cancelRAFLoop(`${this.config.label}Inputing`);\r\n this.scrub(this.getPosValue(this.state.cancelScrub ? this.lastThumbPos : this.currentThumbPos), this.state.cancelScrub);\r\n this.allowScrubbing(), this.stopPreviewing();\r\n this.stallCancelScrub = true;\r\n getWindow(this.el).removeEventListener(\"pointermove\", this.handleInput);\r\n getWindow(this.el).removeEventListener(\"pointerup\", this.stopScrubbing), getWindow(this.el).removeEventListener(\"pointercancel\", this.stopScrubbing);\r\n }\r\n protected stopPreviewing(): void {\r\n if (!this.state.previewing) return;\r\n this.state.previewing = false;\r\n !this.state.scrubbing && this.ctlr.cancelRAFLoop(`${this.config.label}Inputing`);\r\n }\r\n\r\n protected cancelScrubbing(): void {\r\n if (this.stallCancelScrub || this.state.cancelScrub || this.cancelScrubTimeoutId) return;\r\n this.state.cancelScrub = true;\r\n this.cancelScrubTimeoutId = setTimeout(() => this.allowScrubbing(false), this.config.scrub.cancel.timeout, this.signal);\r\n }\r\n protected allowScrubbing(reset = true): void {\r\n this.stallCancelScrub = this.state.cancelScrub = false;\r\n clearTimeout(this.cancelScrubTimeoutId!);\r\n if (reset) this.cancelScrubTimeoutId = null;\r\n }\r\n\r\n protected handleInput(e: MouseEvent | PointerEvent): void {\r\n if (this.config.readonly || this.config.disabled) return;\r\n this.ctlr.RAFLoop(`${this.config.label}Inputing`, () => {\r\n if (this.prevEX === e.clientX && this.prevEY === e.clientY) return; // #CONSERVATION: peak stays peak\r\n (this.prevEX = e.clientX), (this.prevEY = e.clientY);\r\n this.state.previewing ||= true;\r\n const dimension = this.isVertical ? this.rect.height : this.rect.width,\r\n progress = this.getPos(e),\r\n pos = (this.currentThumbPos = clamp(0, !this.state.scrubbing || this.config.scrub.relative ? progress : this.lastThumbPos + progress - this.lastPtrPos, 1)),\r\n value = this.getPosValue(pos);\r\n this.config.previewValue = value;\r\n if (this.state.scrubbing) {\r\n !this.config.scrub.sync ? this.syncElPos(this.thumbEl, pos, false, \"auto\") : this.scrub(value);\r\n Math.abs(pos - this.lastThumbPos) < this.config.scrub.cancel.delta / dimension ? this.cancelScrubbing() : this.allowScrubbing();\r\n }\r\n this.onInput(e, pos);\r\n });\r\n }\r\n private prevEX?: number;\r\n private prevEY?: number;\r\n protected onInput(_e: MouseEvent | PointerEvent, _pos: number): void {} // override to safely add preview logic (timeline preview image, etc.)\r\n\r\n protected handleWheel(e: WheelEvent): void {\r\n if (this.config.wheel.disabled) return;\r\n e.preventDefault(), e.stopImmediatePropagation();\r\n const dimension = this.isVertical ? getWindow(this.el).innerHeight : getWindow(this.el).innerWidth,\r\n pos = clamp(0, Math.abs(-e.deltaY), dimension * this.config.wheel.axisRatio) / (dimension * this.config.wheel.axisRatio),\r\n value = this.config.value + (-e.deltaY >= 0 ? pos : -pos) * (this.config.max - this.config.min);\r\n this.scrub(value);\r\n }\r\n protected handleKeyDown(e: KeyboardEvent): void {\r\n const key = e.key?.toLowerCase();\r\n if ([\"arrowleft\", \"arrowdown\", \"arrowright\", \"arrowup\"].includes(key)) {\r\n e.preventDefault(), e.stopImmediatePropagation();\r\n const delta = e.shiftKey ? 2 : 1,\r\n direction = [\"arrowleft\", \"arrowdown\"].includes(key) ? -1 : 1;\r\n this.scrub(this.config.value + direction * delta * this.config.step);\r\n }\r\n }\r\n\r\n protected handleResize(): void {\r\n this.rect = this.el.getBoundingClientRect();\r\n const pos = this.getValuePos();\r\n this.syncElPos(this.thumbEl, pos, false, \"auto\"), this.syncChunks(\"value\", this.config.value), this.config.tooltip && this.syncElPos(this.tooltipEl, pos, false, \"auto\", this.thumbEl);\r\n }\r\n\r\n protected getValuePos(value = this.config.value, range = this.config.max - this.config.min): number {\r\n return range ? (value - this.config.min) / range : 0;\r\n }\r\n protected getPosValue(pos: number): number {\r\n return pos * (this.config.max - this.config.min) + this.config.min;\r\n }\r\n protected getValueChunk(value = this.config.value): RangeInputChunk | undefined {\r\n for (let i = 0, len = this.chunks.length; i < len; i++) {\r\n const c = this.chunks[i];\r\n if (value >= c.start && value <= c.end) return c;\r\n }\r\n }\r\n protected getPos(e: MouseEvent | PointerEvent): number {\r\n const p = this.isVertical ? (e.clientY - this.rect.top) / this.rect.height : (e.clientX - this.rect.left) / this.rect.width;\r\n return clamp(0, this.isRTL ? 1 - p : p, 1);\r\n }\r\n\r\n public syncElPos(el: HTMLElement, pos: number, isSize = false, inBounds: boolean | \"auto\" = false, bounds = el): void {\r\n const dim = this.isVertical ? this.rect?.height : this.rect?.width,\r\n min = inBounds && dim ? (this.isVertical ? bounds.offsetHeight : bounds.offsetWidth) / 2 / dim : 0;\r\n pos = inBounds === \"auto\" ? min + pos * (1 - min * 2) : pos;\r\n const value = pos || (!isSize && pos === 0) ? `${clamp(min, pos, 1 - min) * 100}%` : \"\"; // onresize still for pixel accuracy, debounce won't stutter due to '%'\r\n if (isSize) this.isVertical ? ((el.style.blockSize = value), (el.style.inlineSize = \"\")) : ((el.style.inlineSize = value), (el.style.blockSize = \"\"));\r\n else this.isVertical ? ((el.style.insetBlockEnd = value), (el.style.insetInlineStart = \"\")) : ((el.style.insetInlineStart = value), (el.style.insetBlockEnd = \"\"));\r\n // el.style.transform = this.isVertical ? (isSize ? `scaleY(${pos})` : `translateY(-${pos * 100}%)`) : (isSize ? `scaleX(${pos})` : `translateX(${pos * 100}%)`);\r\n }\r\n protected syncChunks(key: keyof Omit<RangeInputChunk, \"start\" | \"end\" | \"size\" | \"el\" | \"label\">, value: number): void {\r\n for (let i = 0, len = this.chunks.length; i < len; i++) {\r\n const c = this.chunks[i];\r\n this.syncElPos(c[key]!, clamp(0, (value - c.start) / c.size, 1) || 0, true), c[key]!.style.setProperty(\"--tmg-media-current-range-pos\", String(this.getValuePos(value)));\r\n c.el.classList.toggle(`tmg-media-chunk-${key}-active`, value >= c.start && value <= c.end);\r\n }\r\n }\r\n protected syncDivs(divs = this.config.divs): void {\r\n this.barsWrapper.innerHTML = \"\";\r\n this.chunks = [];\r\n const range = this.config.max - this.config.min,\r\n stops = divs.toSorted((a, b) => a.value - b.value); // Sort divs chronologically\r\n if (stops.length && stops[0].value > this.config.min && stops[0].value <= this.config.min + Math.min(0.02 * range, range * 0.25)) stops[0].value = this.config.min;\r\n else if (!stops.length || stops[0].value > this.config.min) stops.unshift({ value: this.config.min, label: \"\" });\r\n if (stops[stops.length - 1].value < this.config.max) stops.push({ value: this.config.max, label: \"\" });\r\n const fragment = document.createDocumentFragment();\r\n for (let i = 0, len = stops.length; i < len - 1; i++) {\r\n // prettier-ignore\r\n const start = stops[i], end = stops[i + 1], size = end.value - start.value;\r\n if (size <= 0) continue;\r\n const el = createEl(\"div\", { className: \"tmg-media-range-chunk\" }, undefined, { cssText: `--tmg-media-current-chunk-st: ${(start.value - this.config.min) / range};` }),\r\n chunk = { base: createEl(\"div\", { className: \"tmg-media-range-bar tmg-media-range-base-bar\" }), preview: createEl(\"div\", { className: \"tmg-media-range-bar tmg-media-range-preview-bar\" }), value: createEl(\"div\", { className: \"tmg-media-range-bar tmg-media-range-value-bar\" }) };\r\n this.syncElPos(el, size / range, true), fragment.append((el.append(chunk.base, chunk.preview, chunk.value), el)), this.chunks.push({ start: start.value, end: end.value, label: start.label, size, el, ...chunk });\r\n }\r\n this.barsWrapper.append(fragment), this.onValue(this.config.value), this.onPreviewValue(this.config.previewValue);\r\n }\r\n protected syncMarks(marks = this.config.marks): void {\r\n this.marksWrapper.innerHTML = \"\";\r\n const els: HTMLElement[] = [],\r\n range = this.config.max - this.config.min;\r\n if (range <= 0) return;\r\n for (let i = 0, len = marks.length; i < len; i++) {\r\n const m = marks[i],\r\n el = createEl(\"div\", { className: `tmg-media-range-mark tmg-media-range-${marks[i].type || \"base\"}-mark`, title: marks[i].label || `${m.start}${m.end && m.end > m.start + 1 ? ` - ${m.end}` : \"\"} Mark` }, undefined);\r\n this.syncElPos(el, (m.start - this.config.min) / range, false), this.syncElPos(el, m.end ? (m.end - m.start) / range : 0, true), els.push(el);\r\n }\r\n this.marksWrapper.append(...els);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n rangeinput: typeof RangeInput;\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\n","import { NOOP } from \"sia-reactor\";\r\nimport { bindCleanupToSignal as bindSig } from \"./fn\";\r\nconst win = \"undefined\" !== typeof window ? window : undefined;\r\n\r\n// Element Factory\r\nexport { createEl, assignEl, getWindow, createListRenderer } from \"@t007/utils\";\r\nexport { initVScrollerator } from \"@t007/utils/hooks/vanilla\";\r\n\r\n// Resource Loading\r\nexport { loadResource } from \"@t007/utils\";\r\n\r\n// Viewport Checks\r\nexport function inDocView(el: Element, axis: \"x\" | \"y\" = \"y\"): boolean {\r\n const rect = el.getBoundingClientRect(),\r\n inX = rect.left + win!.scrollX >= 0 && rect.right + win!.scrollX <= win!.scrollX + (win!.innerWidth || win!.document.documentElement.clientWidth),\r\n inY = rect.top + win!.scrollY >= 0 && rect.bottom + win!.scrollY <= win!.scrollY + (win!.innerHeight || win!.document.documentElement.clientHeight);\r\n return axis === \"x\" ? inY : axis === \"y\" ? inX : inY && inX;\r\n}\r\n\r\nexport function getElSiblingAt(p: number, dir: \"x\" | \"y\", els: HTMLElement[] | NodeListOf<HTMLElement>, pos: \"before\" | \"after\" | \"at\" = \"after\"): HTMLElement | undefined {\r\n return (\r\n els.length &&\r\n (\r\n Array.prototype.reduce.call(\r\n els,\r\n ((closest: { offset: number; element: Element | undefined }, child: Element) => {\r\n const { top: cT, left: cL, width: cW, height: cH } = child.getBoundingClientRect(),\r\n offset = p - (dir === \"y\" ? cT : cL) - (dir === \"y\" ? cH : cW) / 2,\r\n condition = pos === \"after\" ? offset < 0 && offset > closest.offset : pos === \"before\" ? offset > 0 && offset < closest.offset : pos === \"at\" ? Math.abs(offset) <= (dir === \"y\" ? cH : cW) / 2 && Math.abs(offset) < Math.abs(closest.offset) : false;\r\n return condition ? { offset, element: child } : closest;\r\n }) as any,\r\n { offset: pos === \"after\" ? -Infinity : Infinity, element: undefined }\r\n ) as any\r\n ).element\r\n );\r\n}\r\n\r\n// Fullscreen & Picture-in-Picture\r\nexport const queryFullscreen = (): boolean => Boolean(queryFullscreenEl());\r\nexport const queryFullscreenEl = (d = document as any): Element | null => d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement || null;\r\n\r\nexport const queryPictureInPicture = (): boolean => Boolean(queryPictureInPictureEl());\r\nexport const queryPictureInPictureEl = () => document.pictureInPictureElement;\r\n\r\nexport const supportsFullscreen = (vp = HTMLVideoElement.prototype as any, d = document as any) => Boolean(d.fullscreenEnabled || d.mozFullscreenEnabled || d.msFullscreenEnabled || d.webkitFullscreenEnabled || d.webkitSupportsFullscreen || vp.webkitEnterFullscreen);\r\nexport const supportsPictureInPicture = (vp = HTMLVideoElement.prototype as any, d = document as any, w = window as any) => Boolean(d.pictureInPictureEnabled || vp.requestPictureInPicture || w.documentPictureInPicture);\r\n\r\nexport const enterFullscreen = (el: any): Promise<void> => (el.webkitEnterFullscreen ? el.webkitEnterFullscreen() : el.requestFullscreen ? el.requestFullscreen() : el.mozRequestFullScreen ? el.mozRequestFullScreen() : el.webkitRequestFullscreen ? el.webkitRequestFullscreen() : el.msRequestFullscreen ? el.msRequestFullscreen() : Promise.reject(new Error(\"Fullscreen API is not supported\")));\r\nexport const exitFullscreen = (el: any, d = document as any): Promise<void> => (queryFullscreenEl(d) === el ? (el.webkitExitFullscreen ? el.webkitExitFullscreen() : d.exitFullscreen ? d.exitFullscreen() : d.mozCancelFullScreen ? d.mozCancelFullScreen() : d.webkitExitFullscreen ? d.webkitExitFullscreen() : d.msExitFullscreen ? d.msExitFullscreen() : Promise.reject(new Error(\"Fullscreen API is not supported\"))) : Promise.resolve());\r\n\r\n// Safe Click Handling\r\ntype SafeClickEl = HTMLElement & {\r\n _clickHandler?: (e: MouseEvent) => void;\r\n _dblClickHandler?: (e: MouseEvent) => void;\r\n _clickTimeoutId?: ReturnType<typeof setTimeout>;\r\n};\r\nexport function addSafeClicks(el?: SafeClickEl | null, onClick: (e: MouseEvent) => any = NOOP, onDblClick: (e: MouseEvent) => any = NOOP, options?: boolean | AddEventListenerOptions): void {\r\n el && removeSafeClicks(el);\r\n el?.addEventListener(\"click\", (el._clickHandler = (e: MouseEvent) => (clearTimeout(el._clickTimeoutId), (el._clickTimeoutId = setTimeout(() => onClick(e), 300)))), options);\r\n el?.addEventListener(\"dblclick\", (el._dblClickHandler = (e: MouseEvent) => (clearTimeout(el._clickTimeoutId), onDblClick(e))), options);\r\n}\r\nexport function removeSafeClicks(el?: SafeClickEl | null): void {\r\n el?.removeEventListener(\"click\", el._clickHandler as EventListener);\r\n el?.removeEventListener(\"dblclick\", el._dblClickHandler as EventListener);\r\n}\r\n\r\n// DOM Observers\r\ndeclare global {\r\n interface Element {\r\n _resizeCbs?: Set<(entry: ResizeObserverEntry) => void>;\r\n _intersectCbs?: Set<(entry: IntersectionObserverEntry) => void>;\r\n _mutationCbs?: Set<(mutations: MutationRecord[]) => void>;\r\n }\r\n}\r\n\r\nexport const intersectionObserver = win\r\n ? new IntersectionObserver(\r\n (entries) => {\r\n for (const entry of entries) if (entry.target._intersectCbs) for (const cb of entry.target._intersectCbs) cb(entry);\r\n },\r\n { root: null, rootMargin: \"0px\", threshold: 0.3 }\r\n )\r\n : null;\r\n\r\nexport const resizeObserver = win\r\n ? new ResizeObserver((entries) => {\r\n for (const entry of entries) if (entry.target._resizeCbs) for (const cb of entry.target._resizeCbs) cb(entry);\r\n })\r\n : null;\r\n\r\nexport const mutationObserver = win\r\n ? new MutationObserver((mutations) => {\r\n // Dispatch to specific targets if they are being observed directly\r\n // Note: MutationObserver works differently; this handles the 'root' observer callbacks\r\n // We map the *target* of the observation, not the mutation target usually.\r\n // For this util, we assume the observer instance calls the callback associated with the observed node.\r\n // Since we use one global observer, we need to map back.\r\n // Actually, for MutationObserver it's cleaner to keep separate instances if configs differ,\r\n // but for \"utils\" style, we can use a Map logic or just basic callback sets.\r\n // Current implementation assumes the caller handles the mutation list.\r\n const target = mutations[0].target as Element; // Batch usually targets one observer\r\n if (target._mutationCbs) for (const cb of target._mutationCbs) cb(mutations);\r\n })\r\n : null;\r\n\r\n// --- PUBLIC API ---\r\nexport function observeResize(el: Element, cb: (entry: ResizeObserverEntry) => void, sig?: AbortSignal) {\r\n (el._resizeCbs ?? (el._resizeCbs = new Set())).add(cb);\r\n resizeObserver?.observe(el);\r\n return bindSig(() => (el._resizeCbs?.delete(cb), !el._resizeCbs?.size && resizeObserver?.unobserve(el)), sig);\r\n}\r\n\r\nexport function observeIntersection(el: Element, cb: (entry: IntersectionObserverEntry) => void, sig?: AbortSignal) {\r\n (el._intersectCbs ?? (el._intersectCbs = new Set())).add(cb);\r\n intersectionObserver?.observe(el);\r\n return bindSig(() => (el._intersectCbs?.delete(cb), !el._intersectCbs?.size && intersectionObserver?.unobserve(el)), sig);\r\n}\r\n\r\nexport function observeMutation(el: Element, cb: (mutations: MutationRecord[]) => void, options: MutationObserverInit, sig?: AbortSignal) {\r\n (el._mutationCbs ?? (el._mutationCbs = new Set())).add(cb);\r\n mutationObserver?.observe(el, options);\r\n return bindSig(() => el._mutationCbs?.delete(cb), sig);\r\n}\r\n","import {\n DEFAULT_CONFIG,\n H_NAV_KEYS,\n NAV_KEYS,\n getCommonAncestor,\n getGrid,\n getTargetIndex,\n initFocusTrap,\n initOutsideClick,\n removeFocusTrap,\n removeOutsideClick,\n rippleHandler,\n syncFocusTrap\n} from \"../chunk-NX2LWYD6.js\";\nimport {\n INTERACTIVE_SELECTOR,\n createEl,\n getActiveEl\n} from \"../chunk-ZALPHCSJ.js\";\n\n// src/ts/hooks/vanilla/scrollAssist.ts\nimport { NIL } from \"sia-reactor\";\nfunction initScrollAssist(el, { pxPerSecond = 80, assistClassName = \"t007-scroll-assist\", vertical = true, horizontal = true } = NIL) {\n const parent = el?.parentElement, existing = (t007._scrollers ??= /* @__PURE__ */ new WeakMap()).get(el);\n if (!parent || existing) return existing ? existing : void 0;\n t007._scrollers_r_observer ??= new ResizeObserver((entries) => {\n for (const { target } of entries) t007._scrollers.get(target)?.update();\n });\n t007._scrollers_m_observer ??= new MutationObserver((entries) => {\n const els = /* @__PURE__ */ new Set();\n for (const entry of entries) {\n let node = entry.target instanceof Element ? entry.target : null;\n while (node && !t007._scrollers.has(node)) node = node.parentElement;\n if (node) els.add(node);\n }\n for (const el2 of els) t007._scrollers.get(el2)?.update();\n });\n const assist = {};\n let scrollId = null, last = performance.now(), assistWidth = 20, assistHeight = 20;\n const update = () => {\n const hasInteractive = !!parent.querySelector(INTERACTIVE_SELECTOR);\n if (horizontal) {\n const w = assist.left?.offsetWidth || assistWidth, check = hasInteractive ? el.clientWidth < w * 2 : false;\n assist.left.style.display = check ? \"none\" : el.scrollLeft > 0 ? \"block\" : \"none\";\n assist.right.style.display = check ? \"none\" : el.scrollLeft + el.clientWidth < el.scrollWidth - 1 ? \"block\" : \"none\";\n assistWidth = w;\n }\n if (vertical) {\n const h = assist.up?.offsetHeight || assistHeight, check = hasInteractive ? el.clientHeight < h * 2 : false;\n assist.up.style.display = check ? \"none\" : el.scrollTop > 0 ? \"block\" : \"none\";\n assist.down.style.display = check ? \"none\" : el.scrollTop + el.clientHeight < el.scrollHeight - 1 ? \"block\" : \"none\";\n assistHeight = h;\n }\n };\n const scroll = (dir) => {\n const frame = () => {\n const now = performance.now(), dt = now - last;\n last = now;\n const d = pxPerSecond * dt / 1e3;\n if (dir === \"left\") el.scrollLeft = Math.max(0, el.scrollLeft - d);\n if (dir === \"right\") el.scrollLeft = Math.min(el.scrollWidth - el.clientWidth, el.scrollLeft + d);\n if (dir === \"up\") el.scrollTop = Math.max(0, el.scrollTop - d);\n if (dir === \"down\") el.scrollTop = Math.min(el.scrollHeight - el.clientHeight, el.scrollTop + d);\n scrollId = requestAnimationFrame(frame);\n };\n last = performance.now();\n frame();\n };\n const stop = () => (cancelAnimationFrame(scrollId ?? 0), scrollId = null);\n const addAssist = (dir) => {\n const div = createEl(\"div\", { className: assistClassName }, { scrollDirection: dir }, { display: \"none\" });\n if (!div) return;\n for (const evt of [\"pointerenter\", \"dragenter\"]) div.addEventListener(evt, () => scroll(dir));\n for (const evt of [\"pointerleave\", \"pointerup\", \"pointercancel\", \"dragleave\", \"dragend\"]) div.addEventListener(evt, stop);\n dir === \"left\" || dir === \"up\" ? parent.insertBefore(div, el) : parent.append(div);\n assist[dir] = div;\n };\n if (horizontal) for (const dir of [\"left\", \"right\"]) addAssist(dir);\n if (vertical) for (const dir of [\"up\", \"down\"]) addAssist(dir);\n const handle = {\n update,\n destroy() {\n stop(), el.removeEventListener(\"scroll\", update);\n t007._scrollers_r_observer.unobserve(el), t007._scrollers.delete(el);\n for (const a of Object.values(assist)) a.remove();\n }\n };\n update(), el.addEventListener(\"scroll\", update);\n t007._scrollers_r_observer.observe(el), t007._scrollers_m_observer.observe(el, { childList: true, subtree: true, characterData: true });\n return t007._scrollers.set(el, handle), handle;\n}\nvar removeScrollAssist = (el) => t007._scrollers.get(el)?.destroy();\n\n// src/ts/hooks/vanilla/scrollerator.ts\nimport { NIL as NIL2 } from \"sia-reactor\";\nfunction initVScrollerator({ baseSpeed = 3, maxSpeed = 10, stepDelay = 2e3, baseRate = 16, lineHeight = 80, margin = 80, car = window } = NIL2) {\n let linesPerSec = baseSpeed, accelId = null, lastTime = null;\n const drive = (clientY, brake = false, offsetY = 0) => {\n if (car !== window) clientY -= offsetY;\n const now = performance.now(), speed = linesPerSec * lineHeight * ((lastTime ? now - lastTime : baseRate) / 1e3);\n if (!brake && (clientY < margin || clientY > (car.innerHeight ?? car.offsetHeight) - margin)) {\n accelId === null ? accelId = setTimeout(() => linesPerSec += 1, stepDelay) : linesPerSec > baseSpeed && (linesPerSec = Math.min(linesPerSec + 1, maxSpeed));\n car.scrollBy?.(0, clientY < margin ? -speed : speed);\n } else reset();\n return lastTime = !brake ? now : null, speed;\n };\n const reset = () => (accelId && clearTimeout(accelId), accelId = null, linesPerSec = baseSpeed, lastTime = null);\n return { drive, reset };\n}\n\n// src/ts/hooks/vanilla/arrowNavigation.ts\nfunction initArrowNavigation(container, config = {}) {\n const existing = (t007._arrownavs ??= /* @__PURE__ */ new WeakMap()).get(container);\n if (!config.enabled || existing) return existing ? existing : void 0;\n const { enabled: isEnabled, selector, focusOnHover, loop, virtual, typeahead, resetMs, activeClass, inputSelector, defaultTabbableIndex, baseTabIndex, grid, rtl: isRtl, focusOptions, scrollIntoView, onSelect, onFocusOut, rovingTab } = { ...DEFAULT_CONFIG, ...config };\n let gridX = grid.x || 1, gridY = grid.y || 1, vGridY = grid.vY || 1, activeIndex = -1, buffer = \"\", timeout = null, items = [];\n const enabled = isEnabled ?? virtual, roving = rovingTab ?? !virtual, rtl = isRtl ?? (\"undefined\" === typeof document ? false : getComputedStyle(container).direction === \"rtl\"), shouldSnub = () => !enabled || !container, isItemDisabled = (el) => !el || el.matches('[disabled],[aria-disabled=\"true\"],[inert],:disabled'), getItems = () => items = Array.from(container.querySelectorAll(selector));\n const getAbleIndex = (targetIndex, e = { key: \"ArrowRight\", ctrlKey: false }) => {\n if (shouldSnub() || !items.length) return null;\n let index = targetIndex;\n let attempts = 0;\n while (attempts < items.length) {\n if (!isItemDisabled(items[index])) return index;\n index = getTargetIndex({ key: e.key, currIndex: index, gridX, gridY, vGridY, length: items.length, loop, ctrlKey: e.ctrlKey, rtl });\n attempts++;\n }\n return null;\n };\n const goToIndex = (targetIndex, e = { key: \"ArrowRight\" }) => {\n if (shouldSnub()) return;\n const idx = getAbleIndex(targetIndex, e);\n if (idx === null) return;\n resetActiveIndex(idx);\n onSelect?.(items[idx], e), updateDOM();\n if (virtual) {\n items[idx]?.scrollIntoView(scrollIntoView);\n container.setAttribute(\"aria-activedescendant\", items[idx].id || \"\");\n } else items[idx]?.focus(focusOptions);\n };\n const updateDOM = () => {\n if (shouldSnub() || !virtual && !roving || !items.length) return;\n const hasDefaultTabbable = defaultTabbableIndex !== null && defaultTabbableIndex !== void 0, tabbableIndex = hasDefaultTabbable && !isItemDisabled(items[defaultTabbableIndex]) ? defaultTabbableIndex : getAbleIndex(0);\n for (let i = 0, len = items.length; i < len; i++) {\n const el = items[i], isActive = i === activeIndex;\n if (roving) el.setAttribute(\"tabindex\", i === activeIndex || activeIndex === -1 && i === tabbableIndex ? baseTabIndex : \"-1\");\n else if (virtual && activeIndex > 0) el.setAttribute(\"tabindex\", i > activeIndex ? baseTabIndex : \"-1\");\n else el.setAttribute(\"tabindex\", baseTabIndex);\n if (virtual) el.setAttribute(\"aria-selected\", String(isActive)), el.classList.toggle(activeClass, isActive);\n }\n };\n const resetActiveIndex = (index = -1) => (activeIndex = index, updateDOM());\n const typeAhead = (key) => {\n if (shouldSnub() || !typeahead) return;\n buffer += key.toLowerCase();\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(() => buffer = \"\", resetMs);\n const start = activeIndex >= 0 ? activeIndex + 1 : 0;\n for (let i = 0; i < items.length; i++) {\n const idx = (start + i) % items.length, label = (items[idx].getAttribute(\"data-label\") || items[idx].innerText || \"\").trim().toLowerCase();\n if (label.startsWith(buffer)) return goToIndex(idx);\n }\n };\n const simulateKey = (e) => {\n const t = e.target;\n if (shouldSnub() || getActiveEl(t?.ownerDocument)?.matches(\"option\")) return;\n const { key } = e;\n if (!items.length) return;\n if (virtual && (key === \" \" || key === \"Enter\")) return items[activeIndex]?.click();\n if (t?.matches(DEFAULT_CONFIG.inputSelector) && !virtual) return;\n if (typeahead && key.length === 1 && /^[a-z0-9]$/i.test(key)) return typeAhead(key);\n if (!NAV_KEYS.includes(key)) return;\n if (!(e.currentTarget?.matches(DEFAULT_CONFIG.inputSelector) && gridX <= 1 && H_NAV_KEYS.includes(key))) e.preventDefault?.(), e.stopPropagation?.();\n const currIndex = virtual ? activeIndex : items.indexOf(getActiveEl(t?.ownerDocument)), targetIndex = getTargetIndex({ currIndex, gridX, gridY, vGridY, length: items.length, loop, rtl, key, ctrlKey: e.ctrlKey });\n goToIndex(targetIndex, e);\n };\n getItems(), updateDOM();\n const interactiveEls = !virtual ? [container] : [container.querySelector(inputSelector)];\n for (const el of interactiveEls) el?.addEventListener(\"keydown\", simulateKey);\n const handleFocusOut = (e) => {\n if (!container.contains(e.relatedTarget)) return resetActiveIndex(), updateDOM(), onFocusOut?.(e);\n const among = items.includes(e.relatedTarget);\n if (!among && (defaultTabbableIndex ?? -1) >= 0) return resetActiveIndex(), updateDOM();\n if (virtual) resetActiveIndex(), updateDOM();\n };\n container.addEventListener(\"focusout\", handleFocusOut);\n const handleHover = (e) => {\n if (!enabled || !focusOnHover) return;\n const el = e.currentTarget, idx = items.indexOf(el);\n if (idx !== -1) goToIndex(idx);\n };\n for (const el of items) el.addEventListener(\"mouseenter\", handleHover);\n const sync = () => {\n const oldEl = items[activeIndex];\n for (const el of items) el.removeEventListener(\"mouseenter\", handleHover);\n getItems();\n for (const el of items) el.addEventListener(\"mouseenter\", handleHover);\n calcGrid();\n const newEl = items[activeIndex];\n updateDOM();\n if (oldEl && newEl && oldEl === newEl) return;\n resetActiveIndex(), updateDOM();\n };\n const mutationObserver = new MutationObserver(sync);\n mutationObserver.observe(container, { childList: true, subtree: true });\n const setGrid = (g) => {\n if (g.x !== void 0) gridX = g.x;\n if (g.y !== void 0) gridY = g.y;\n if (g.vY !== void 0) vGridY = g.vY;\n };\n let ancestor = null;\n const resizeObserver = new ResizeObserver(() => calcGrid());\n const calcGrid = () => {\n setGrid(getGrid(items, !grid.x, !grid.y, !grid.vY));\n const next = items.length > 1 ? getCommonAncestor(items[0], items[1]) : container;\n if (next && next !== ancestor) ancestor && resizeObserver.unobserve(ancestor), ancestor = next, resizeObserver.observe(ancestor);\n };\n setGrid(grid), calcGrid();\n const destroy = () => {\n for (const el of interactiveEls) el?.removeEventListener(\"keydown\", simulateKey);\n container.removeEventListener(\"focusout\", handleFocusOut);\n for (const el of items) el.removeEventListener(\"mouseenter\", handleHover);\n mutationObserver.disconnect(), resizeObserver.disconnect();\n if (timeout) clearTimeout(timeout);\n t007._arrownavs.delete(container);\n };\n const handle = { gridX: () => gridX, gridY: () => gridY, vGridY: () => vGridY, items: () => items, activeIndex: () => activeIndex, activeItem: () => items[activeIndex] ?? null, getAbleIndex, typeAhead, goToIndex, simulateKey, sync, destroy };\n return t007._arrownavs.set(container, handle), handle;\n}\nvar removeArrowNavigation = (container) => t007._arrownavs?.get(container)?.destroy();\nvar syncArrowNavigation = (container) => t007._arrownavs?.get(container)?.sync();\nexport {\n initArrowNavigation,\n initFocusTrap,\n initOutsideClick,\n initScrollAssist,\n initVScrollerator,\n removeArrowNavigation,\n removeFocusTrap,\n removeOutsideClick,\n removeScrollAssist,\n rippleHandler,\n syncArrowNavigation,\n syncFocusTrap\n};\n","import { AptRange } from \"@defs/generics\";\r\nimport { isNum, clamp } from \"@t007/utils\";\r\n\r\n// Validators\r\nexport { clamp };\r\n\r\nexport function isSafeNum(val: any): boolean {\r\n return isNum(val) && !isNaN(val ?? NaN) && val !== Infinity;\r\n}\r\n\r\nexport function safeNum(number: any, fallback = 0): number {\r\n return isSafeNum(number) ? number : fallback;\r\n}\r\n\r\n// Parsers\r\nexport function parseIfPercent(percent: any, amount: any, autocap = 0.25): number {\r\n const val = percent?.endsWith?.(\"%\") ? safeNum((parseFloat(percent) / 100) * amount) : percent;\r\n return val && amount && autocap && amount <= val ? amount * autocap : val;\r\n}\r\n\r\nexport function parseRomanNum(roman: string, valid = /^[IVXLCDM]+$/i.test(roman), ROMAN = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 } as Record<string, number>): number {\r\n if (!valid) return 0; // ← Invalid input\r\n return roman\r\n .toUpperCase() // Ensure consistent uppercase (e.g., 'iv' becomes 'IV')\r\n .split(\"\") // Turn into array of characters: 'XIV' → ['X','I','V']\r\n .reduce((acc, val, i, arr) => {\r\n const curr = ROMAN[val] || 0, // Current character's value\r\n next = ROMAN[arr[i + 1]] || 0; // Look ahead to the next character (if any)\r\n return acc + (curr < next ? -curr : curr); // Subtractive notation: if current is less than next (e.g., I before V → 4); Otherwise, just add normally\r\n }, 0); // Start accumulator at 0\r\n}\r\n\r\n// Helpers\r\nexport function stepNum<T extends AptRange>(v = 0, { min, max, step }: T): number {\r\n const s = step ? Math.round((safeNum(v) - (min || 0)) / step) * step + (min || 0) : safeNum(v);\r\n return clamp(min, +s.toFixed(10), max); // no gymnastics, for sliders only; to reach near native speed\r\n}\r\n\r\nconst _stepsCache = new Map<string, number[]>();\r\nexport function rotateAny<T>(cur: T, steps: T[] | readonly T[], dir?: \"forwards\" | \"backwards\", wrap?: boolean): T;\r\nexport function rotateAny(cur: number, steps: AptRange, dir?: \"forwards\" | \"backwards\", wrap?: boolean): number;\r\nexport function rotateAny(cur: any, steps: any, dir: \"forwards\" | \"backwards\" = \"forwards\", wrap = true): any {\r\n let list: any[];\r\n if (Array.isArray(steps)) list = steps;\r\n else {\r\n const key = `${steps.min}|${steps.max}|${steps.step}`; // Generate cache key from min|max|step\r\n if (_stepsCache.has(key)) list = _stepsCache.get(key)!;\r\n else _stepsCache.set(key, (list = Array.from({ length: Math.floor((steps.max - steps.min) / steps.step) + 1 }, (_, i) => steps.min + i * steps.step)));\r\n }\r\n let idx = isNum(cur) ? list.reduce((p, c, x) => (Math.abs(c - cur) < Math.abs(list[p] - cur) ? x : p), 0) : list.indexOf(cur);\r\n idx = idx + (dir === \"forwards\" ? 1 : -1);\r\n return list[wrap ? (idx + list.length) % list.length : clamp(0, idx, list.length - 1)];\r\n}\r\n","import { BaseComponent, ComponentState } from \"./base\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type BufferConfig = undefined;\r\n\r\nexport class Buffer extends BaseComponent<BufferConfig, ComponentState, HTMLDivElement> {\r\n static readonly componentName = \"buffer\";\r\n\r\n public override create() {\r\n return (this.element = createEl(\"div\", { className: \"tmg-media-buffer\", innerHTML: `<div class=\"tmg-media-buffer-accent\"></div><div class=\"tmg-media-buffer-eclipse\"><div class=\"tmg-media-buffer-left\"><div class=\"tmg-media-buffer-circle\"></div></div><div class=\"tmg-media-buffer-right\"><div class=\"tmg-media-buffer-circle\"></div></div></div>` }));\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.element);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n buffer: typeof Buffer;\r\n }\r\n}\r\n","import { BaseComponent } from \"../base\";\r\nimport type { ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { initScrollAssist, removeScrollAssist } from \"@t007/utils/hooks/vanilla\";\r\n\r\nexport type MetaConfig = undefined;\r\n\r\nexport class Meta extends BaseComponent<MetaConfig, ComponentState, HTMLDivElement> {\r\n public static readonly componentName: string = \"meta\";\r\n public static readonly isControl: boolean = true;\r\n public profile!: HTMLImageElement;\r\n public title!: HTMLAnchorElement;\r\n public artist!: HTMLAnchorElement;\r\n protected scrollers: HTMLElement[] = [];\r\n\r\n public override create(): HTMLDivElement {\r\n // Variables Assignment\r\n this.element = createEl(\"div\", { className: \"tmg-media-meta-wrapper\" }, { draggableControl: \"\", dragId: \"wrapper\", controlId: this.name });\r\n const textsCover = createEl(\"div\", { className: \"tmg-media-meta-text-wrapper-cover\" }),\r\n profileLink = createEl(\"a\", { className: \"tmg-media-profile-link\" }),\r\n titleWrapper = createEl(\"div\", { className: \"tmg-media-title-wrapper\" }),\r\n artistWrapper = createEl(\"div\", { className: \"tmg-media-artist-wrapper\" });\r\n this.ctlr.DOM.mediaProfile = this.profile = this.ctlr.syncImgLoadState(createEl(\"img\", { alt: \"Profile\", className: \"tmg-media-profile\" }));\r\n this.ctlr.DOM.mediaTitle = this.title = createEl(\"a\", { className: \"tmg-media-title tmg-media-meta-text\" });\r\n this.ctlr.DOM.mediaArtist = this.artist = createEl(\"a\", { className: \"tmg-media-artist tmg-media-meta-text\" });\r\n // DOM Injection\r\n profileLink.append(this.profile), titleWrapper.append(this.title), artistWrapper.append(this.artist), textsCover.append(titleWrapper, artistWrapper);\r\n return this.el.append(profileLink, textsCover), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.controlPanel.profile\", this.syncProfile, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.controlPanel.title\", this.syncTitle, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.controlPanel.artist\", this.syncArtist, { init: true, signal: this.signal });\r\n // Post Wiring\r\n this.scrollers.push((initScrollAssist(this.title, { pxPerSecond: 60 }), this.title));\r\n this.scrollers.push((initScrollAssist(this.artist, { pxPerSecond: 30 }), this.artist));\r\n }\r\n\r\n public syncUI(): void {\r\n this.syncProfile(), this.syncTitle(), this.syncArtist();\r\n }\r\n public syncProfile(): void {\r\n const profile = this.settings.controlPanel.profile;\r\n if (profile !== true) (this.profile.dataset.loaded = \"false\"), (this.profile.dataset.mediaProfile = this.profile.src = profile || \"\");\r\n }\r\n public syncTitle(): void {\r\n const title = this.settings.controlPanel.title;\r\n if (title !== true) this.title.dataset.mediaTitle = this.title.textContent = title || \"\";\r\n }\r\n public syncArtist(): void {\r\n const artist = this.settings.controlPanel.artist;\r\n if (artist !== true) this.artist.dataset.mediaArtist = this.artist.textContent = artist || \"\";\r\n }\r\n\r\n protected override onDestroy(): void {\r\n for (const el of this.scrollers) removeScrollAssist(el);\r\n super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n meta: typeof Meta;\r\n }\r\n interface ControllerDOMMap {\r\n mediaProfile?: HTMLImageElement;\r\n mediaTitle?: HTMLAnchorElement;\r\n mediaArtist?: HTMLAnchorElement;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type BigNextConfig = undefined;\r\n\r\nexport class BigNextButton extends BaseComponent<BigNextConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"bignext\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"playlist\");\r\n }\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-big-next-btn\", type: \"button\", innerHTML: IconRegistry.get(\"next\") }, { draggableControl: \"\", dragId: \"big\", controlId: this.name });\r\n return this.disable(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Plug Listeners\r\n this.plug?.state.on(\"currentIndex\", () => this[this.plug!.atLast ? \"disable\" : \"enable\"](), { init: true, signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"playlist\", this.syncUI, { signal: this.signal, init: true, depth: 1 });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.next\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.next\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.next();\r\n }\r\n\r\n public syncUI(): void {\r\n this[this.ctlr.config.playlist.content && this.ctlr.config.playlist.content.length > 1 ? \"show\" : \"hide\"]();\r\n }\r\n public syncARIA(): void {\r\n this.state.label = \"Next\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.next, this.settings.voice.commands.next);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n bignext: typeof BigNextButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type BigPlayPauseConfig = undefined;\r\n\r\nexport class BigPlayPauseButton extends BaseComponent<BigPlayPauseConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"bigplaypause\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-big-play-pause-btn\", type: \"button\", innerHTML: IconRegistry.get(\"play\") + IconRegistry.get(\"pause\") + IconRegistry.get(\"replay\") }, { draggableControl: \"\", dragId: \"big\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.paused\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.ended\", this.syncARIA, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.playPause\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.paused = !this.media.state.paused;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.status.ended ? \"Replay\" : this.media.state.paused ? \"Play\" : \"Pause\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.playPause, this.settings.voice.commands.playPause);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n bigplaypause: typeof BigPlayPauseButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type BigPrevConfig = undefined;\r\n\r\nexport class BigPrevButton extends BaseComponent<BigPrevConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"bigprev\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"playlist\");\r\n }\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-big-prev-btn\", type: \"button\", innerHTML: IconRegistry.get(\"prev\") }, { draggableControl: \"\", dragId: \"big\", controlId: this.name });\r\n return this.disable(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Plug Listeners\r\n this.plug?.state.on(\"currentIndex\", () => this[this.plug!.atFirst ? \"disable\" : \"enable\"](), { init: true, signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"playlist\", this.syncUI, { signal: this.signal, init: true, depth: 1 });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.prev\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.prev\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.previous();\r\n }\r\n\r\n public syncUI(): void {\r\n this[this.ctlr.config.playlist.content && this.ctlr.config.playlist.content.length > 1 ? \"show\" : \"hide\"]();\r\n }\r\n public syncARIA(): void {\r\n this.state.label = \"Previous\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.prev, this.settings.voice.commands.prev);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n bigprev: typeof BigPrevButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type PrevConfig = undefined;\r\n\r\nexport class PrevButton extends BaseComponent<PrevConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"prev\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"playlist\");\r\n }\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-prev-btn\", type: \"button\", innerHTML: IconRegistry.get(\"prev\") }, { draggableControl: \"\", controlId: this.name });\r\n return this.hide(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Plug Listeners\r\n this.plug?.state.on(\"currentIndex\", () => this[this.plug!.atFirst ? \"hide\" : \"show\"](), { init: true, signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.prev\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.prev\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.previous();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = \"Previous\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.prev, this.settings.voice.commands.prev);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n prev: typeof PrevButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type PlayPauseConfig = undefined;\r\n\r\nexport class PlayPauseButton extends BaseComponent<PlayPauseConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"playpause\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-play-pause-btn\", innerHTML: IconRegistry.get(\"play\") + IconRegistry.get(\"pause\") + IconRegistry.get(\"replay\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.paused\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.ended\", this.syncARIA, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.playPause\", this.syncARIA, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.commands.playPause\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.paused = !this.media.state.paused;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.status.ended ? \"Replay\" : this.media.state.paused ? \"Play\" : \"Pause\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.playPause, this.settings.voice.commands.playPause);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n playPause: typeof PlayPauseButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type NextConfig = undefined;\r\n\r\nexport class NextButton extends BaseComponent<NextConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"next\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"playlist\");\r\n }\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-next-btn\", type: \"button\", innerHTML: IconRegistry.get(\"next\") }, { draggableControl: \"\", controlId: this.name });\r\n return this.hide(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Plug Listeners\r\n this.plug?.state.on(\"currentIndex\", () => this[this.plug!.atLast ? \"hide\" : \"show\"](), { init: true, signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.next\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.next\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.next();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = \"Next\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.next, this.settings.voice.commands.next);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n next: typeof NextButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\nimport { IconRegistry } from \"@core/registries\";\nimport { createEl } from \"@utils/dom\";\n\nexport type Forward10Config = undefined;\n\nexport class Forward10Button extends BaseComponent<Forward10Config, ComponentState, HTMLButtonElement> {\n public static readonly componentName: string = \"forward10\";\n public static readonly isControl: boolean = true;\n\n public override create() {\n return (this.element = createEl(\"button\", { className: \"tmg-media-forward10-btn\", type: \"button\", innerHTML: IconRegistry.get(\"forward10\") }, { draggableControl: \"\", controlId: this.name }));\n }\n\n public override wire(): void {\n // Event Listeners\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\n // Post Wiring\n this.syncARIA();\n }\n\n protected handleClick(): void {\n this.media.intent.currentTime += 10;\n }\n\n public syncARIA(): void {\n this.state.label = \"Forward 10s\";\n this.el.title = this.state.label + this.state.cmd;\n this.setBtnARIA();\n }\n}\n\ndeclare module \"@defs/registries\" {\n interface ComponentRegistryMap {\n forward10: typeof Forward10Button;\n }\n}\n","import { BaseComponent, ComponentState } from \"../base\";\nimport { IconRegistry } from \"@core/registries\";\nimport { createEl } from \"@utils/dom\";\n\nexport type Backward10Config = undefined;\n\nexport class Backward10Button extends BaseComponent<Backward10Config, ComponentState, HTMLButtonElement> {\n public static readonly componentName: string = \"backward10\";\n public static readonly isControl: boolean = true;\n\n public override create() {\n return (this.element = createEl(\"button\", { className: \"tmg-media-backward10-btn\", type: \"button\", innerHTML: IconRegistry.get(\"backward10\") }, { draggableControl: \"\", controlId: this.name }));\n }\n\n public override wire(): void {\n // Event Listeners\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\n // Post Wiring\n this.syncARIA();\n }\n\n protected handleClick(): void {\n this.media.intent.currentTime -= 10;\n }\n\n public syncARIA(): void {\n this.state.label = \"Backward 10s\";\n this.el.title = this.state.label + this.state.cmd;\n this.setBtnARIA();\n }\n}\n\ndeclare module \"@defs/registries\" {\n interface ComponentRegistryMap {\n backward10: typeof Backward10Button;\n }\n}\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { addSafeClicks, createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type TimeConfig = undefined;\r\n\r\nexport class TimeButton extends BaseComponent<TimeConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"time\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.time\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-time-btn tmg-media-control-text-btn\", textContent: \"-:--\" }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Feature Gating\r\n this.media.on(\"features.live\", (e) => this[e.value ? \"hide\" : \"show\"](), { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n addSafeClicks(this.element, this.handleClick, this.handleDblClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.currentTime\", this.syncUI, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.time.mode\", this.syncUI, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.time.format\", this.syncUI, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.timeMode\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.timeMode\", this.syncARIA, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.timeFormat\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.toggleMode();\r\n }\r\n protected handleDblClick(): void {\r\n this.plug?.rotateFormat();\r\n }\r\n\r\n public syncUI(): void {\r\n this.el.textContent = this.plug?.toTimeText(this.media.state.currentTime, true) || \"-:--\";\r\n this.syncARIA();\r\n }\r\n public syncARIA(): void {\r\n this.state.label = `Show ${this.plug?.nextMode} time`;\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.timeMode, this.settings.voice.commands.timeMode);\r\n this.el.title = `Switch (mode${this.state.cmd} / DblClick→format${formatKeyForDisplay(this.settings.keys.shortcuts.timeFormat, this.settings.voice.commands.timeFormat)})`;\r\n this.setBtnARIA(\"Switch time format\");\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n time: typeof TimeButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\nimport { silence } from \"sia-reactor/modules\";\r\n\r\nexport type DurationConfig = undefined;\r\n\r\nexport class DurationButton extends BaseComponent<DurationConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"duration\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.time\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-duration-btn tmg-media-control-text-btn\", textContent: \"-:--\" }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"status.duration\", this.syncUI, { signal: this.signal });\r\n this.media.on(\"state.live\", (e) => (this.el.classList.toggle(\"tmg-media-control-live\", e.value), this.el.classList.toggle(\"tmg-media-live-badge\", e.value), this.syncARIA()), { signal: this.signal });\r\n this.media.on(\"status.isLive\", (e) => (this.media.container.classList.toggle(\"tmg-media-is-live\", e.value), this.syncARIA()), { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.time.format\", this.syncUI, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.timeFormat\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.timeFormat\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n !this.media.status.isLive || this.media.state.live ? this.plug?.rotateFormat() : silence(() => (this.media.intent.live = true));\r\n }\r\n\r\n public syncUI(): void {\r\n this.el.textContent = !this.media.status.isLive ? this.plug?.toTimeText(this.media.status.duration) || \"-:--\" : \"Live\";\r\n }\r\n public syncARIA(): void {\r\n this.state.label = \"Switch time format\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.timeFormat, this.settings.voice.commands.timeFormat);\r\n this.el.title = !this.media.status.isLive || this.media.state.live ? this.state.label + this.state.cmd : \"Skip ahead to live broadcast\";\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n duration: typeof DurationButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { addSafeClicks, createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\nimport { silence } from \"sia-reactor/modules\";\r\n\r\nexport type TimeAndDurationConfig = undefined;\r\n\r\nexport class TimeAndDurationButton extends BaseComponent<TimeAndDurationConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"timeandduration\";\r\n public static readonly isControl: boolean = true;\r\n protected time!: HTMLElement;\r\n protected bridge!: HTMLElement;\r\n protected duration!: HTMLElement;\r\n protected liveBadge!: HTMLElement;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.time\");\r\n }\r\n\r\n public override create() {\r\n // Variables Assignments\r\n this.element = createEl(\"button\", { className: \"tmg-media-time-and-duration-btn tmg-media-control-text-btn\" }, { draggableControl: \"\", controlId: this.name });\r\n this.time = createEl(\"span\", { className: \"tmg-media-current-time\", textContent: \"-:--\" });\r\n this.bridge = createEl(\"span\", { className: \"tmg-media-time-bridge\", textContent: \"/\" });\r\n this.duration = createEl(\"span\", { className: \"tmg-media-duration-time\", textContent: \"-:--\" });\r\n this.liveBadge = createEl(\"span\", { className: \"tmg-media-live-badge\", textContent: \"Live\" });\r\n // DOM Injection\r\n return this.el.append(this.time, this.bridge, this.duration, this.liveBadge), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n addSafeClicks(this.element, this.handleClick, this.handleDblClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.currentTime\", this.syncTime, { signal: this.signal });\r\n this.media.on(\"state.live\", (e) => (this.liveBadge.classList.toggle(\"tmg-media-control-live\", e.value), this.syncARIA()), { signal: this.signal });\r\n this.media.on(\"status.duration\", this.syncDuration, { signal: this.signal });\r\n this.media.on(\"status.isLive\", (e) => (this.media.container.classList.toggle(\"tmg-media-is-live\", e.value), this.syncARIA()), { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.time.format\", this.syncUI, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.time.mode\", this.syncTime, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.timeMode\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.timeMode\", this.syncARIA, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.keys.shortcuts.timeFormat\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n !this.media.status.isLive || this.media.state.live ? this.plug?.toggleMode() : silence(() => (this.media.intent.live = true));\r\n }\r\n protected handleDblClick(): void {\r\n this.plug?.rotateFormat();\r\n }\r\n\r\n public syncUI(): void {\r\n this.bridge.textContent = { digital: \"/\", human: \"of\", \"human-long\": \"out of\" }[this.settings.time.format] || \"/\";\r\n this.syncTime(), this.syncDuration();\r\n }\r\n public syncTime(): void {\r\n this.time.textContent = this.plug?.toTimeText(this.media.state.currentTime, true) || \"-:--\";\r\n }\r\n public syncDuration(): void {\r\n this.duration.textContent = this.plug?.toTimeText(this.media.status.duration) || \"-:--\";\r\n }\r\n public syncARIA(): void {\r\n this.state.label = `Show ${this.plug?.nextMode} time`;\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.timeMode, this.settings.voice.commands.timeMode);\r\n this.el.title = !this.media.status.isLive || this.media.state.live ? `Switch (mode${this.state.cmd} / DblClick→format${formatKeyForDisplay(this.settings.keys.shortcuts.timeFormat, this.settings.voice.commands.timeFormat)})` : \"Skip ahead to live broadcast\";\r\n this.setBtnARIA(\"Switch time format\");\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n timeandduration: typeof TimeAndDurationButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type SettingsConfig = undefined;\r\n\r\nexport class SettingsButton extends BaseComponent<SettingsConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"settings\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.settingsView\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-settings-btn\", type: \"button\", innerHTML: IconRegistry.get(\"settings\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.settings\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.settings\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n const menu = this.plug?.menu;\r\n menu ? menu.toggle(this.el) : this.plug?.toggleView();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = \"Settings\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.settings, this.settings.voice.commands.settings);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n settings: typeof SettingsButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type ObjectFit = undefined;\r\n\r\nexport class ObjectFitButton extends BaseComponent<ObjectFit, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"objectfit\";\r\n public static readonly isControl: boolean = true;\r\n\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.objectFit\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-object-fit-btn\", type: \"button\", innerHTML: IconRegistry.get(\"objectfitcontain\") + IconRegistry.get(\"objectfitcover\") + IconRegistry.get(\"objectfitfill\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.objectFit\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.objectFit\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.objectFit\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.objectFit\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.rotateFit();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.plug?.toLabel(this.plug?.nextFit) || \"\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.objectFit, this.settings.voice.commands.objectFit);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n objectfit: typeof ObjectFitButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type PictureInPictureConfig = undefined;\r\n\r\nexport class PictureInPictureButton extends BaseComponent<PictureInPictureConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"pictureinpicture\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-picture-in-picture-btn\", type: \"button\", innerHTML: IconRegistry.get(\"enterpip\") + IconRegistry.get(\"leavepip\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.pictureInPicture\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.pictureInPicture\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.pictureInPicture\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.pictureInPicture\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.pictureInPicture = !this.media.state.pictureInPicture;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.pictureInPicture ? \"Exit picture in picture\" : \"Picture in picture\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.pictureInPicture, this.settings.voice.commands.pictureInPicture);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n pictureinpicture: typeof PictureInPictureButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type TheaterConfig = undefined;\r\n\r\nexport class TheaterButton extends BaseComponent<TheaterConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"theater\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-theater-btn\", type: \"button\", innerHTML: IconRegistry.get(\"entertheater\") + IconRegistry.get(\"leavetheater\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.theater\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.theater\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.theater\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.theater\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.theater = !this.media.state.theater;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.theater ? \"Default view\" : \"Cinema mode\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.theater, this.settings.voice.commands.theater);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n theater: typeof TheaterButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { addSafeClicks, createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type CaptureConfig = undefined;\r\n\r\nexport class CaptureButton extends BaseComponent<CaptureConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"capture\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.frame\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-capture-btn\", type: \"button\", innerHTML: IconRegistry.get(\"capture\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.frameCapture\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n addSafeClicks(this.el, this.handleClick, this.handleDblClick, { signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.capture\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.capture\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.capture();\r\n }\r\n protected handleDblClick(): void {\r\n this.plug?.capture(\"monochrome\");\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = \"Capture frame\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.capture, this.settings.voice.commands.capture);\r\n this.el.title = `Capture${this.state.cmd} ↔ DblClick→B&W (+alt)`;\r\n this.setBtnARIA(\"Capture monochrome frame\");\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n capture: typeof CaptureButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\nimport { IconRegistry } from \"@core/registries\";\nimport { createEl } from \"@utils/dom\";\nimport { formatKeyForDisplay } from \"@utils/keys\";\n\nexport type FullscreenConfig = undefined;\n\nexport class FullscreenButton extends BaseComponent<FullscreenConfig, ComponentState, HTMLButtonElement> {\n public static readonly componentName: string = \"fullscreen\";\n public static readonly isControl: boolean = true;\n\n public override create() {\n return (this.element = createEl(\"button\", { className: \"tmg-media-fullscreen-btn\", type: \"button\", innerHTML: IconRegistry.get(\"enterfullscreen\") + IconRegistry.get(\"leavefullscreen\") }, { draggableControl: \"\", controlId: this.name }));\n }\n\n public override wire(): void {\n // Features Gating\n this.media.on(\"features.fullscreen\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\n // Event Listeners\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\n // Ctlr Media Listeners\n this.media.on(\"state.fullscreen\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\n // ---- Config --------\n this.ctlr.config.on(\"settings.keys.shortcuts.fullscreen\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.fullscreen\", this.syncARIA, { signal: this.signal });\n }\n\n protected handleClick(): void {\n this.media.intent.fullscreen = !this.media.state.fullscreen;\n }\n\n public syncARIA(): void {\n this.state.label = this.media.state.fullscreen ? \"Exit full screen\" : \"Full screen\";\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.fullscreen, this.settings.voice.commands.fullscreen);\n this.el.title = this.state.label + this.state.cmd;\n this.setBtnARIA();\n }\n}\n\ndeclare module \"@defs/registries\" {\n interface ComponentRegistryMap {\n fullscreen: typeof FullscreenButton;\n }\n}\n","import { IconRegistry } from \"@core/registries\";\r\nimport { BaseComponent, ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type FullscreenLockConfig = undefined;\r\n\r\nexport class FullscreenLockButton extends BaseComponent<FullscreenLockConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"fullscreenlock\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { type: \"button\", className: \"tmg-media-fullscreen-locked-btn\", innerHTML: IconRegistry.get(\"lock\") }, { draggableControl: \"\", controlId: this.name });\r\n return this.hide(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.fullscreen\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"features.locked\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.fullscreen\", () => this[this.canShow ? \"show\" : \"hide\"](), { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.locked = true;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.el.title = this.state.label = \"Lock Screen\";\r\n this.setBtnARIA();\r\n }\r\n\r\n protected override get canShow(): boolean {\r\n return this.media.state.fullscreen && !!this.media.features.fullscreen && !!this.media.features.locked;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n fullscreenlock: typeof FullscreenLockButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type FullscreenOrientationConfig = undefined;\r\n\r\nexport class FullscreenOrientationButton extends BaseComponent<FullscreenOrientationConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"fullscreenorientation\";\r\n public static readonly isControl: boolean = true;\r\n protected get pin() {\r\n return this.ctlr.plug(\"settings.modes\")?.fullscreen;\r\n }\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-fullscreen-orientation-btn\", type: \"button\", innerHTML: IconRegistry.get(\"fullscreenorientation\") }, { draggableControl: \"\", controlId: this.name });\r\n return this.hide(), this.element;\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.fullscreen\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"features.fullscreenOrientation\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.fullscreen\", () => this[this.canShow ? \"show\" : \"hide\"](), { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected handleClick(): void {\r\n this.pin?.changeScreenOrientation();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.el.title = this.state.label = \"Change orientation\";\r\n this.setBtnARIA();\r\n }\r\n\r\n protected override get canShow(): boolean {\r\n return this.media.state.fullscreen && !!this.media.features.fullscreen && !!this.media.features.fullscreenOrientation;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n fullscreenorientation: typeof FullscreenOrientationButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type RemoveMiniplayerConfig = undefined;\r\n\r\nexport class RemoveMiniplayerButton extends BaseComponent<RemoveMiniplayerConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"removeminiplayer\";\r\n public static readonly isControl: boolean = true;\r\n protected get pin() {\r\n return this.ctlr.plug(\"settings.modes\")?.miniplayer;\r\n }\r\n\r\n public override create(): HTMLButtonElement {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-miniplayer-remove-btn\", type: \"button\", innerHTML: IconRegistry.get(\"removeminiplayer\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.miniplayer\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected handleClick(): void {\r\n this.pin?.remove();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = \"Remove miniplayer\";\r\n this.state.cmd = \" (Escape)\";\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n removeminiplayer: typeof RemoveMiniplayerButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type ExpandMiniplayerConfig = undefined;\r\n\r\nexport class ExpandMiniplayerButton extends BaseComponent<ExpandMiniplayerConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"expandminiplayer\";\r\n public static readonly isControl: boolean = true;\r\n protected get pin() {\r\n return this.ctlr.plug(\"settings.modes\")?.miniplayer;\r\n }\r\n\r\n public override create(): HTMLButtonElement {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-miniplayer-expand-btn\", type: \"button\", innerHTML: IconRegistry.get(\"expandminiplayer\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.miniplayer\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected handleClick(): void {\r\n this.pin?.expand();\r\n }\r\n\r\n public syncARIA(): void {\r\n this.el.title = this.state.label = \"Expand miniplayer\";\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n expandminiplayer: typeof ExpandMiniplayerButton;\r\n }\r\n}\r\n","import { isNum } from \"@t007/utils\";\r\n\r\n// Media Time Formatting\r\nexport function formatMediaTime({ time, format = \"digital\", elapsed = true, showMs = false, casing = \"normal\" }: { time?: number; format?: string; elapsed?: boolean; showMs?: boolean; casing?: \"normal\" | \"upper\" | \"title\" } = { time: 0 }): string {\r\n const long = format.endsWith(\"long\"),\r\n sx = (n = 0) => (n == 1 ? \"\" : \"s\"),\r\n cs = (str: string) => (casing === \"upper\" ? str.toUpperCase() : casing === \"title\" ? str.replace(/^([a-z])/i, (m) => m.toUpperCase()) : str.toLowerCase()),\r\n wrd = (n = 0) => ({ d: cs(long ? \" day\" + sx(n) + \" \" : \"d\"), h: cs(long ? \" hour\" + sx(n) + \" \" : \"h\"), m: cs(long ? \" minute\" + sx(n) + \" \" : \"m\"), s: cs(long ? \" second\" + sx(n) + \" \" : \"s\"), ms: cs(long ? \" millisecond\" + sx(n) + \" \" : \"ms\") }),\r\n pad = (v: string | number, n = 2, f?: boolean) => (long && !f ? v : String(v).padStart(n, isNum(+n) ? \"0\" : \"-\"));\r\n if (isNaN(time ?? NaN) || time === Infinity) return format !== \"digital\" ? (\"-\" + wrd().h + pad(\"-\") + wrd().m + (!elapsed ? \"left\" : \"\")).trim() : !elapsed ? \"-:--\" : \"-:--\";\r\n const s = Math.floor(Math.abs(time!) % 60),\r\n m = Math.floor(Math.abs(time!) / 60) % 60,\r\n h = Math.floor(Math.abs(time!) / 3600) % 24,\r\n d = Math.floor(Math.abs(time!) / 86400),\r\n ms = Math.floor((Math.abs(time!) % 1) * 1000); // returns early so \"!\"\r\n if (format === \"digital\") {\r\n const base = d ? d + \":\" + pad(h, 2, true) + \":\" + pad(m, 2, true) + \":\" + pad(s, 2, true) : h ? h + \":\" + pad(m, 2, true) + \":\" + pad(s, 2, true) : m + \":\" + pad(s, 2, true);\r\n return !elapsed ? \"-\" + base : base;\r\n }\r\n const base = d ? d + wrd(d).d + pad(h) + wrd(h).h + pad(m) + wrd(m).m + pad(s) + wrd(s).s : h ? h + wrd(h).h + pad(m) + wrd(m).m + pad(s) + wrd(s).s : m + wrd(m).m + pad(s) + wrd(s).s,\r\n msPart = showMs && ms ? pad(ms, 3) + wrd(ms).ms : \"\";\r\n return (base + msPart + (!long ? \" \" : \"\") + (!elapsed ? \"left\" : \"\")).trim();\r\n}\r\n\r\n// Time Ranges\r\n\r\nexport function createTimeRanges(ranges?: [number, number][] | TimeRanges | ArrayLike<any>): TimeRanges {\r\n if (ranges instanceof TimeRanges) return ranges;\r\n if (!ranges)\r\n return Object.create(TimeRanges.prototype, {\r\n length: { value: 0 },\r\n start: {\r\n value: () => {\r\n throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n },\r\n },\r\n end: {\r\n value: () => {\r\n throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n },\r\n },\r\n });\r\n // 1. Sort incoming intervals chronologically by start time\r\n const rawPairs = (Array.isArray(ranges) ? ranges : Array.from(ranges as ArrayLike<any>)).sort((a, b) => a[0] - b[0]);\r\n // 2. Spec Normalization Loop: Merge overlapping or touching timelines\r\n const pairs: [number, number][] = [];\r\n for (const current of rawPairs) {\r\n const last = pairs[pairs.length - 1];\r\n if (!last || current[0] > last[1]) pairs.push([current[0], current[1]]); // Clean discontinuity gap\r\n else last[1] = Math.max(last[1], current[1]); // Normalization: merge overlaps!\r\n }\r\n // 3. Return a fully normalized interface literal\r\n return Object.create(TimeRanges.prototype, {\r\n length: { value: pairs.length },\r\n start: {\r\n value: (i: number) => {\r\n if (i < 0 || i >= pairs.length) throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n return pairs[i][0];\r\n },\r\n },\r\n end: {\r\n value: (i: number) => {\r\n if (i < 0 || i >= pairs.length) throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n return pairs[i][1];\r\n },\r\n },\r\n });\r\n}\r\n","/*\r\n * Portions of this code are derived from Video.js\r\n * https://github.com/videojs/video.js\r\n * Licensed under Apache License 2.0\r\n * Copyright (c) Brightcove, Inc. and contributors\r\n */\r\n\r\n// Types\r\ntype Version = string | null;\r\ntype BrandEntry = { brand?: string; version?: string };\r\n\r\n// Environment guards\r\nconst win = \"undefined\" !== typeof window ? window : undefined,\r\n nav = win?.navigator,\r\n ua = nav?.userAgent || \"\",\r\n uaData = (nav as Navigator & { userAgentData?: { platform?: string; brands?: BrandEntry[] } })?.userAgentData;\r\n\r\n// Base flags: bools first, versions second for readability\r\nexport let IS_ANDROID = false;\r\nexport let IS_WINDOWS = false;\r\nexport let IS_FIREFOX = false;\r\nexport let IS_EDGE = false;\r\nexport let IS_CHROME = false;\r\nexport let IS_CHROMIUM = false;\r\nexport let IS_SAFARI = false;\r\nexport let IS_IE = false;\r\nexport let IS_TIZEN = false;\r\nexport let IS_WEBOS = false;\r\nexport let IS_IPOD = false;\r\nexport let IS_IPAD = false;\r\nexport let IS_IPHONE = false;\r\n// Versioned details\r\nexport let IOS_VERSION: Version = null;\r\nexport let ANDROID_VERSION: Version = null;\r\nexport let CHROME_VERSION: Version = null;\r\nexport let CHROMIUM_VERSION: Version = null;\r\nexport let IE_VERSION: Version = null;\r\n// Composite Flags\r\nexport let IS_IOS = false;\r\nexport let IS_MOBILE = false;\r\nexport let IS_SMART_TV = false;\r\n// Capabilities\r\nexport const IS_CHROMECAST_RECEIVER = Boolean((win as any)?.cast?.framework?.CastReceiverContext);\r\nexport const MSE_ENABLED = Boolean(win && (\"MediaSource\" in win || \"webkitMediaSource\" in win));\r\nexport const TOUCH_ENABLED = Boolean(win && (\"ontouchstart\" in win || (nav as Navigator & { maxTouchPoints?: number })?.maxTouchPoints || ((win as any).DocumentTouch && win.document instanceof (win as any).DocumentTouch)));\r\n// Media Queries\r\nexport const queryMediaMobile = (query = `(max-width: 480px), (max-width: 940px) and (max-height: 480px) and (orientation: landscape)`) => Boolean(win && \"matchMedia\" in win && win.matchMedia(query).matches);\r\n\r\n// Modern detection first (userAgentData)\r\nif (uaData?.platform && uaData?.brands) {\r\n // Helpers\r\n const pickVersion = (brands: BrandEntry[], needle: string): Version => brands.find((b) => b.brand === needle && b.version)?.version || null;\r\n // Platform first\r\n IS_ANDROID = uaData.platform === \"Android\";\r\n IS_WINDOWS = uaData.platform === \"Windows\";\r\n // Browser family\r\n IS_EDGE = uaData.brands.some((b) => b.brand === \"Microsoft Edge\");\r\n IS_CHROMIUM = uaData.brands.some((b) => b.brand === \"Chromium\" || b.brand === \"Google Chrome\");\r\n IS_CHROME = IS_CHROMIUM && !IS_EDGE;\r\n // Versions\r\n CHROMIUM_VERSION = CHROME_VERSION = pickVersion(uaData.brands, \"Chromium\") || pickVersion(uaData.brands, \"Google Chrome\");\r\n}\r\n\r\n// Fallback / additional parsing via UA string\r\nif (true || !IS_CHROMIUM || !CHROMIUM_VERSION) {\r\n // General Platforms\r\n IS_ANDROID ||= /Android/i.test(ua);\r\n IS_WINDOWS ||= /Windows/i.test(ua);\r\n // Desktop & general browsers (include iOS-branded variants)\r\n IS_FIREFOX = /Firefox|FxiOS/i.test(ua);\r\n IS_EDGE ||= /Edg|EdgiOS/i.test(ua);\r\n IS_CHROMIUM ||= /Chrome|CriOS/i.test(ua);\r\n IS_CHROME = IS_CHROMIUM && !IS_EDGE;\r\n IS_SAFARI = /Safari/i.test(ua) && !IS_CHROME && !IS_FIREFOX && !IS_EDGE;\r\n IS_IE = /MSIE|(Trident\\/7.0)|(rv:11.0)/i.test(ua);\r\n // TVs\r\n IS_TIZEN = /Tizen/i.test(ua);\r\n IS_WEBOS = /Web0S/i.test(ua);\r\n // Apple desktop/mobile device refinement\r\n IS_IPOD = /iPod/i.test(ua);\r\n IS_IPAD = /iPad/i.test(ua) || (IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(ua));\r\n IS_IPHONE = /iPhone/i.test(ua) && !IS_IPAD;\r\n // Versions\r\n IOS_VERSION = ua.match(/OS (\\d+)_/i)?.[1] ?? null;\r\n ANDROID_VERSION = ua.match(/Android\\s(\\d+(?:\\.\\d+)+)/i)?.[1] ?? null;\r\n CHROMIUM_VERSION = CHROME_VERSION = ua.match(/(?:Chrome|CriOS)\\/(\\d+)/)?.[1] ?? CHROMIUM_VERSION;\r\n IE_VERSION = ua.match(/MSIE\\s(\\d+)\\.\\d/)?.[1] || (/Trident\\/7.0/i.test(ua) && /rv:11.0/.test(ua) ? \"11.0\" : null);\r\n} // `true` override for devtools predictability\r\n\r\n// Composite Flags\r\nIS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\r\nIS_MOBILE = Boolean(IS_ANDROID || IS_IPHONE || IS_IPOD || IS_IPAD);\r\nIS_SMART_TV = IS_TIZEN || IS_WEBOS;\r\n","import { MEDIA_INTENT_BUILD, MEDIA_SETTINGS_BUILD, MEDIA_STATE_BUILD, MEDIA_STATUS_BUILD } from \"@consts/media\";\r\nimport { MediaState, MediaStatus, MediaSettings, MediaReport, CtlrMedia } from \"@defs/contract\";\r\nimport { isStr, isNum, isIter, isSameURL, cleanURL } from \"@t007/utils\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { queryFullscreenEl, queryPictureInPictureEl } from \"@utils/dom\";\r\nimport { Dimensions, MediaType, Source, Sources, Track, Tracks } from \"@defs/generics\";\r\nimport { mergeObjs as merge } from \"sia-reactor/utils\";\r\nimport { DeepPartial } from \"sia-reactor\";\r\n\r\n// ============ Video Utilities ============\r\n// Types\r\ntype SourceLike = Source | (HTMLSourceElement & Record<string, any>);\r\ntype TrackLike = Track | (HTMLTrackElement & Record<string, any>);\r\n\r\n// Report Generation\r\nexport function getMediaReport(m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, opts = { skipUndefined: true }): MediaReport {\r\n const txtTrackIdx = getTrackIdx(m, \"Text\"),\r\n report = { state: getMediaState(m, isVid, txtTrackIdx), status: getMediaStatus(m, isVid, txtTrackIdx), settings: getMediaSettings(m) };\r\n return { state: merge(MEDIA_STATE_BUILD, report.state, opts), intent: merge(MEDIA_INTENT_BUILD, report.state, opts), status: merge(MEDIA_STATUS_BUILD, report.status, opts), settings: merge(MEDIA_SETTINGS_BUILD, report.settings, opts) } as MediaReport;\r\n}\r\nexport const getMediaState = (m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, _txtTrackIdx = getTrackIdx(m, \"Text\")): Partial<MediaState> => ({ src: m.src, currentTime: m.currentTime, paused: m.paused, volume: m.volume * 100, muted: m.muted, playbackRate: m.playbackRate, pictureInPicture: queryPictureInPictureEl() === m, fullscreen: queryFullscreenEl() === m, currentTextTrack: _txtTrackIdx, currentAudioTrack: getTrackIdx(m, \"Audio\"), currentVideoTrack: getTrackIdx(m, \"Video\"), poster: isVid ? (m as HTMLVideoElement).poster : \"\", autoplay: m.autoplay, loop: m.loop, preload: m.preload, playsInline: isVid ? m.playsInline : false, crossOrigin: m.crossOrigin, controls: m.controls, controlsList: m.controlsList ?? m.getAttribute(\"controlsList\"), disablePictureInPicture: isVid ? m.disablePictureInPicture ?? m.hasAttribute(\"disablePictureInPicture\") : false, sources: getSources(m), tracks: getTracks(m) });\r\nexport const getMediaStatus = (m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, _txtTrackIdx = getTrackIdx(m, \"Text\"), _flagsOnly = false): Partial<MediaStatus> => ({ readyState: m.readyState, networkState: m.networkState, error: m.error, seeking: m.seeking, buffered: m.buffered, played: m.played, seekable: m.seekable, duration: m.duration, ended: m.ended, loadedMetadata: m.readyState >= 1, loadedData: m.readyState >= 2, canPlay: m.readyState >= 3, canPlayThrough: m.readyState >= 4, videoWidth: isVid ? (m as HTMLVideoElement).videoWidth : 0, videoHeight: isVid ? (m as HTMLVideoElement).videoHeight : 0, textTracks: _flagsOnly ? undefined : m.textTracks, audioTracks: _flagsOnly ? undefined : (m as any).audioTracks, videoTracks: _flagsOnly ? undefined : (m as any).videoTracks, activeCue: _flagsOnly ? undefined : m.textTracks[_txtTrackIdx]?.activeCues?.[0] || null });\r\nexport const getMediaSettings = (m: HTMLMediaElement): DeepPartial<MediaSettings> => ({ defaultMuted: m.defaultMuted, defaultPlaybackRate: m.defaultPlaybackRate, srcObject: m.srcObject });\r\n\r\nexport function getMediaProgress({ state: s, status: st }: CtlrMedia, time = s.currentTime): number {\r\n if (st.isLive) {\r\n if (!st.seekable.length || s.live) return 1;\r\n const min = st.seekable.start(0),\r\n dvr = st.seekable.end(st.seekable.length - 1) - min;\r\n return dvr > 0 ? (time - min) / dvr : 1;\r\n } else return time / st.duration;\r\n}\r\nexport const getMediaTime = (media: CtlrMedia, percent: number, _min = getMediaMin(media)): number => (media.status.isLive ? _min! + percent * (getMediaMax(media) - _min!) : percent * media.status.duration);\r\nexport const getMediaMin = ({ status: st, state: s }: Pick<CtlrMedia, \"state\" | \"status\">): number => (st.isLive ? (st.seekable.length ? (st.canSeekLive ? st.seekable.start(0) : st.seekable.end(st.seekable.length - 1)) : s.currentTime) : 0); // live?, can't seek?, jump to edge\r\nexport const getMediaMax = ({ status: st, state: s }: Pick<CtlrMedia, \"state\" | \"status\">): number => (st.isLive ? (st.seekable.length ? st.seekable.end(st.seekable.length - 1) : s.currentTime) : st.duration);\r\n\r\nexport function getBooleanMediaProps(media: CtlrMedia, prop: \"intent\" | \"state\" = \"intent\"): string[] {\r\n return Object.keys(media[prop]).filter((k) => typeof media[prop][k as keyof MediaState] === \"boolean\");\r\n}\r\n\r\n// Geometry\r\nexport function getRenderedBox({ videoHeight, videoWidth }: { videoHeight?: number; videoWidth?: number }, { width: clientWidth = 0, height: clientHeight = 0 }: { width?: number; height?: number }, { objectFit = \"cover\", objectPosition = \"50% 50%\" }: { objectFit?: string; objectPosition?: string }): Partial<Dimensions & { left: number; top: number }> {\r\n const bbox = { width: clientWidth, height: clientHeight } as DOMRect,\r\n obj = (((videoHeight ||= 1080), (videoWidth ||= videoHeight * (16 / 9))), videoWidth && videoHeight ? { width: videoWidth, height: videoHeight } : null);\r\n if (!obj || !objectFit || !objectPosition) return {};\r\n if (objectFit === \"scale-down\") objectFit = bbox.width < obj.width || bbox.height < obj.height ? \"contain\" : \"none\";\r\n if (objectFit === \"none\") return { ...parseObjectPos(objectPosition, bbox, obj), ...obj };\r\n else if (objectFit === \"contain\") {\r\n const objRatio = obj.height / obj.width,\r\n bboxRatio = bbox.height / bbox.width,\r\n width = bboxRatio > objRatio ? bbox.width : bbox.height / objRatio,\r\n height = bboxRatio > objRatio ? bbox.width * objRatio : bbox.height;\r\n return { ...parseObjectPos(objectPosition, bbox, { width, height }), width, height };\r\n } else if (objectFit === \"fill\") {\r\n const { left, top, rawLeft, rawTop } = parseObjectPos(objectPosition, bbox, obj);\r\n return { left: rawLeft.endsWith(\"%\") ? 0 : left, top: rawTop.endsWith(\"%\") ? 0 : top, width: bbox.width, height: bbox.height }; // Relative positioning is discarded with `obj-fit: fill`, so we need to check here if it's relative or not\r\n } else if (objectFit === \"cover\") {\r\n const minRatio = Math.min(bbox.width / obj.width, bbox.height / obj.height);\r\n let width = obj.width * minRatio,\r\n height = obj.height * minRatio,\r\n outRatio = 1;\r\n if (width < bbox.width) outRatio = bbox.width / width;\r\n if (Math.abs(outRatio - 1) < 1e-14 && height < bbox.height) outRatio = bbox.height / height;\r\n (width *= outRatio), (height *= outRatio);\r\n return { ...parseObjectPos(objectPosition, bbox, { width, height }), width, height };\r\n }\r\n return {};\r\n}\r\nconst parsePosAsPx = (str: string, bboxSize: number, objectSize: number): number => {\r\n str === \"center\" ? (str = \"50%\") : str === \"left\" || str === \"top\" ? (str = \"0%\") : (str === \"right\" || str === \"bottom\") && (str = \"100%\");\r\n const num = parseFloat(str);\r\n return !str.endsWith(\"%\") ? num : (bboxSize - objectSize) * (num / 100);\r\n};\r\nconst parseObjectPos = (position: string, bbox: DOMRect, object: Dimensions): { left: number; top: number; rawLeft: string; rawTop: string } => {\r\n if (position === \"center\") position = \"50% 50%\";\r\n const [left, top = \"50%\"] = position.split(\" \");\r\n return { left: parsePosAsPx(left, bbox.width, object.width), top: parsePosAsPx(top, bbox.height, object.height), rawLeft: left, rawTop: top };\r\n};\r\n\r\nexport function getSizeTier(container: HTMLElement, { offsetWidth: w, offsetHeight: h } = container) {\r\n return { width: w, height: h, tier: h <= 130 ? \"xxxxx\" : w <= 280 ? \"xxxx\" : w <= 380 ? \"xxx\" : w <= 480 ? \"xx\" : w <= 630 ? \"x\" : \"\" };\r\n}\r\n\r\n// Media Element Cloning\r\nexport function cloneMedia<M extends HTMLMediaElement>(v: M): M {\r\n const newV = v.cloneNode(true) as M;\r\n newV.tmgPlayer = v.tmgPlayer;\r\n v.parentElement?.replaceChild(newV, v);\r\n if (v.currentTime) newV.currentTime = v.currentTime;\r\n if (v.playbackRate !== 1) newV.playbackRate = v.playbackRate;\r\n if (v.defaultPlaybackRate !== 1) newV.defaultPlaybackRate = v.defaultPlaybackRate;\r\n if (v.volume !== 1) newV.volume = v.volume;\r\n if (v.muted) newV.muted = true;\r\n if (v.defaultMuted) newV.defaultMuted = true;\r\n if (v.srcObject) newV.srcObject = v.srcObject;\r\n if (v.autoplay) newV.autoplay = true;\r\n if (v.loop) newV.loop = true;\r\n if (v.controls) newV.controls = true;\r\n if (v.crossOrigin) newV.crossOrigin = v.crossOrigin;\r\n if (v.playsInline) newV.playsInline = true;\r\n if (v.controlsList?.length) newV.controlsList = v.controlsList;\r\n if (v.disablePictureInPicture) newV.disablePictureInPicture = true;\r\n if (!v.paused && newV.isConnected) newV.play();\r\n return newV;\r\n}\r\n\r\n// Source Management\r\nexport function putSourceDetails(source: any, el: HTMLSourceElement | Record<string, any>): void {\r\n if (source.src) el.src = source.src;\r\n if (source.type) el.type = source.type;\r\n if (source.media) el.media = source.media;\r\n}\r\nexport function addSources(sources: SourceLike | Iterable<SourceLike> = [], medium: HTMLElement): HTMLSourceElement | HTMLSourceElement[] {\r\n const addSource = (source: SourceLike, med: HTMLElement) => {\r\n const sourceEl = createEl(\"source\");\r\n putSourceDetails(source, sourceEl);\r\n return med.appendChild(sourceEl);\r\n };\r\n return isIter(sources) ? Array.from(sources as Iterable<SourceLike>, (source) => addSource(source, medium)) : addSource(sources, medium);\r\n}\r\nexport function getSources(medium: HTMLElement): MediaState[\"sources\"] {\r\n const sources = medium.querySelectorAll<HTMLSourceElement>(\"source\"),\r\n _sources: SourceLike[] = [];\r\n for (const source of sources) {\r\n const obj: Record<string, any> = {};\r\n putSourceDetails(source, obj);\r\n _sources.push(obj as SourceLike);\r\n }\r\n return _sources as MediaState[\"sources\"];\r\n}\r\nexport const removeSources = (medium: HTMLElement, sources = medium?.querySelectorAll(\"source\")): void => {\r\n if (sources) for (const source of sources) source.remove();\r\n};\r\nexport function isSameSources(a?: Sources, b?: Sources): boolean {\r\n if (!a || !b || a.length !== b.length) return false;\r\n const set = new Set(b.map((s) => `${cleanURL(s.src)}|${s.type}|${s.media}`));\r\n return a.every((s) => set.has(`${cleanURL(s.src)}|${s.type}|${s.media}`));\r\n}\r\n\r\n// Track Management\r\nexport type TrackType = \"Audio\" | \"Video\" | \"Text\";\r\nexport function putTrackDetails(track: any, el: HTMLTrackElement | Record<string, any>): void {\r\n if (track.id) el.id = track.id;\r\n if (track.kind) el.kind = track.kind;\r\n if (track.label) el.label = track.label;\r\n if (track.srclang) el.srclang = track.srclang;\r\n if (track.src) el.src = track.src;\r\n if (track.default) el.default = track.default;\r\n}\r\nexport function addTracks(tracks: TrackLike | Iterable<TrackLike> = [], medium: HTMLElement): HTMLTrackElement | HTMLTrackElement[] {\r\n const addTrack = (track: TrackLike, med: HTMLElement) => {\r\n const trackEl = createEl(\"track\");\r\n return putTrackDetails(track, trackEl), med.appendChild(trackEl);\r\n };\r\n return isIter(tracks) ? Array.from(tracks as Iterable<TrackLike>, (track) => addTrack(track, medium)) : addTrack(tracks, medium);\r\n}\r\nexport function getTracks(medium: HTMLElement, cues = false): TrackLike[] {\r\n const tracks = medium.querySelectorAll<HTMLTrackElement>(!cues ? \"track\" : \"track:is([kind='captions'], [kind='subtitles'])\"),\r\n _tracks: TrackLike[] = [];\r\n for (const track of tracks) {\r\n const obj: Record<string, any> = {};\r\n putTrackDetails(track, obj), _tracks.push(obj as TrackLike);\r\n }\r\n return _tracks;\r\n}\r\nexport const removeTracks = (medium: HTMLElement, tracks = medium?.querySelectorAll(\"track\")): void => {\r\n if (tracks) for (const track of tracks) if (track.kind === \"subtitles\" || track.kind === \"captions\") track.remove();\r\n};\r\nexport function isSameTracks(a?: Tracks, b?: Tracks): boolean {\r\n if (!a || !b || a.length !== b.length) return false;\r\n const set = new Set(b.map((t) => `${cleanURL(t.src)}|${t.kind}|${t.label}|${t.srclang}|${t.default}`));\r\n return a.every((t) => set.has(`${cleanURL(t.src)}|${t.kind}|${t.label}|${t.srclang}|${t.default}`));\r\n}\r\nconst isTrack = (type: TrackType, term: any) => `${type}Track` in window && term instanceof (window as any)[`${type}Track`];\r\nexport function getTrackIdx(medium: HTMLMediaElement, type: TrackType = \"Text\", term: any = \"active\", list = (medium as any)[`${type.toLowerCase()}Tracks`]): number {\r\n if (isNum(term)) return term;\r\n if (list && term === \"active\") {\r\n if (type === \"Text\") for (let i = 0; i < +list.length; i++) if (list[i].mode === \"showing\") return i;\r\n if (type === \"Audio\") for (let i = 0; i < +list.length; i++) if (list[i].enabled) return i;\r\n if (type === \"Video\") return list.selectedIndex ?? -1;\r\n }\r\n if (list && isTrack(type, term)) return Array.prototype.indexOf.call(list, term);\r\n if (list && isStr(term)) {\r\n term = term.toLowerCase();\r\n return !isNaN(+term) ? +term : Array.prototype.findIndex.call(list, (t: any) => t.id.toLowerCase() === term || t.label.toLowerCase() === term || t.srclang?.toLowerCase() === term || t.language.toLowerCase() === term || isSameURL(t.src, term));\r\n }\r\n return -1;\r\n}\r\nexport function setCurrentTrack(medium: HTMLMediaElement, type: TrackType = \"Text\", term: any, flush = false, list = (medium as any)[`${type.toLowerCase()}Tracks`]): void {\r\n const idx = getTrackIdx(medium, type, term, list);\r\n if (list && type !== \"Video\") for (let i = 0; i < list.length; i++) type === \"Text\" ? (list[i].mode = i === idx ? \"showing\" : flush ? \"disabled\" : \"hidden\") : (list[i].enabled = i === idx);\r\n else list?.[idx] && (list[idx].selected = true);\r\n}\r\n\r\n// Capbailities\r\nexport const DUMMY_VID = createEl(\"video\");\r\nexport const DUMMY_AUD = createEl(\"audio\");\r\nexport function canUseVolume(type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean {\r\n try {\r\n const prev = dummy.volume;\r\n dummy.volume = 0.5;\r\n const works = dummy.volume === 0.5;\r\n return (dummy.volume = prev), works;\r\n } catch {\r\n return false;\r\n }\r\n}\r\nexport const canMuteVolume = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"muted\" in dummy;\r\nexport function canUseRate(type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean {\r\n try {\r\n const prev = dummy.playbackRate;\r\n dummy.playbackRate = 0.5;\r\n const works = dummy.playbackRate === 0.5;\r\n return (dummy.playbackRate = prev), works;\r\n } catch {\r\n return false;\r\n }\r\n}\r\nexport const canTextTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"textTracks\" in dummy;\r\nexport const canVideoTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"videoTracks\" in dummy;\r\nexport const canAudioTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"audioTracks\" in dummy;\r\n\r\n// ============ Caption/Subtitle Utilities ============\r\nexport const stripTags = (text: string): string => text.replace(/<(\\/)?([a-z0-9.:]+)([^>]*)>/gi, \"\");\r\n\r\nexport function srtToVtt(srt: string, vttLines: string[] = [\"WEBVTT\", \"\"]): string {\r\n const input = srt.replace(/\\r\\n?/g, \"\\n\").trim();\r\n for (const block of input.split(/\\n{2,}/)) {\r\n const lines = block.split(\"\\n\");\r\n let idx = /^\\d+$/.test(lines[0].trim()) ? 1 : 0;\r\n const timing = lines[idx]?.trim().replace(/\\s+/g, \" \"),\r\n m = timing?.match(/(\\d{1,2}:\\d{2}:\\d{2})(?:[.,](\\d{1,3}))?\\s*-->\\s*(\\d{1,2}:\\d{2}:\\d{2})(?:[.,](\\d{1,3}))?/);\r\n if (!m) continue;\r\n const [, startHms, startMsRaw = \"0\", endHms, endMsRaw = \"0\"] = m,\r\n to3 = (ms: string) => ms.padEnd(3, \"0\").slice(0, 3);\r\n vttLines.push(startHms + \".\" + to3(startMsRaw) + \" --> \" + endHms + \".\" + to3(endMsRaw));\r\n for (let i = idx + 1; i < lines.length; i++) vttLines.push(lines[i]);\r\n vttLines.push(\"\");\r\n }\r\n return vttLines.join(\"\\n\");\r\n}\r\n\r\nexport function parseVttText(text: string): string {\r\n const state = { tag: /<(\\/)?([a-z0-9.:]+)([^>]*)>/gi, o: \"\", l: 0, p: null as string | null, c: \"\" },\r\n esc = (s: string) => s.replace(/[&<>\"']/g, (c) => ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]!));\r\n let m: RegExpExecArray | null;\r\n while ((m = state.tag.exec(text))) {\r\n const chunk = text.slice(state.l, m.index);\r\n if (chunk) state.c += esc(chunk);\r\n const [_, cls, tag_n, rest] = m,\r\n low = tag_n.toLowerCase();\r\n if (/^[0-9]/.test(tag_n)) {\r\n state.o += state.p ? `<span data-part=\"timed\" data-time=\"${state.p}\">${state.c}</span>` : state.c;\r\n state.p = tag_n;\r\n state.c = \"\";\r\n } else if (cls) state.c += [\"c\", \"v\", \"lang\"].includes(low) ? \"</span>\" : `</${low}>`;\r\n else if ([\"b\", \"i\", \"u\", \"ruby\", \"rt\"].includes(low)) state.c += `<${low}>`;\r\n else if (low === \"c\") state.c += `<span class=\"vtt-c ${rest.replace(/\\.([a-z0-9_-]+)/gi, \"$1 \").trim()}\">`;\r\n else if (low === \"v\") state.c += `<span data-part=\"voice\"${rest.trim() ? ` title=\"${esc(rest.trim())}\"` : \"\"}>`;\r\n else if (low === \"lang\") state.c += `<span lang=\"${esc(rest.trim())}\">`;\r\n state.l = state.tag.lastIndex;\r\n }\r\n const lChunk = text.slice(state.l);\r\n if (lChunk) state.c += esc(lChunk);\r\n return state.o + (state.p ? `<span data-part=\"timed\" data-time=\"${state.p}\">${state.c}</span>` : state.c);\r\n}\r\n\r\nexport function formatVttLine(p: string, maxChars: number): string[] {\r\n const state = { tokens: p.match(/<[^>]+>|\\S+/g) || [], stack: [] as string[], parts: [] as string[], line: \"\", len: 0, openStr: \"\", closeStr: \"\", timeTag: \"\", lastWasTag: false },\r\n updateTags = () => ((state.openStr = state.stack.map((n) => `<${n}>`).join(\"\")), (state.closeStr = state.stack.reduceRight((a, n) => a + `</${n}>`, \"\"))),\r\n flush = () => state.line && (state.parts.push(state.line + state.closeStr), (state.line = (state.timeTag || \"\") + state.openStr), (state.len = 0), (state.lastWasTag = true));\r\n for (const tok of state.tokens) {\r\n const tag = tok[0] === \"<\",\r\n closeTag = tag && tok[1] === \"/\";\r\n if (tag) {\r\n if (state.line && !state.lastWasTag && !closeTag) state.line += \" \";\r\n const m = tok.match(/^<\\/?\\s*([a-z0-9._:-]+)/i),\r\n n = m?.[1] || \"\",\r\n timing = /^\\d/.test(n);\r\n if (timing) {\r\n (state.timeTag = tok), (state.line += tok), (state.lastWasTag = true);\r\n continue;\r\n }\r\n if (!closeTag && !tok.endsWith(\"/>\") && n) state.stack.push(n), updateTags();\r\n if (closeTag && state.stack.length) state.stack.pop(), updateTags();\r\n (state.lastWasTag = true), (state.line += tok);\r\n continue;\r\n }\r\n const len = stripTags(tok).length,\r\n needSpace = state.line && !state.lastWasTag;\r\n if (state.len + (needSpace ? 1 : 0) + len > maxChars) flush();\r\n if (needSpace) (state.line += \" \"), (state.len += 1);\r\n (state.line += tok), (state.len += len), (state.lastWasTag = false);\r\n }\r\n return flush(), state.parts;\r\n}\r\n","import { RangeInput, RangeInputDiv, type RangeState } from \"@components/rangeinput\";\r\nimport type { TimelineConfig } from \"./types\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { REvent } from \"sia-reactor\";\r\nimport type { CtlrMedia } from \"@defs/contract\";\r\nimport { formatMediaTime } from \"@utils/time\";\r\nimport { IS_MOBILE } from \"@utils/env\";\r\nimport { getMediaMax, getMediaProgress, getMediaTime } from \"@utils/media\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { setTimeout, requestAnimationFrame } from \"@utils/fn\";\r\nimport { safeNum } from \"@utils/num\";\r\nimport { isBool } from \"@t007/utils\";\r\nimport { silence } from \"sia-reactor/modules\";\r\n\r\nexport class Timeline extends RangeInput<TimelineConfig> {\r\n public static readonly componentName = \"timeline\"; // enforced name\r\n public static readonly isControl: boolean = true;\r\n public chaptersWrapper!: HTMLDivElement;\r\n public previewContainer!: HTMLDivElement;\r\n public previewImg!: HTMLDivElement;\r\n public previewCanvas!: HTMLCanvasElement;\r\n public thumbnailImg!: HTMLDivElement;\r\n public thumbnailCanvas!: HTMLCanvasElement;\r\n public previewContext: CanvasRenderingContext2D | null = null;\r\n public thumbnailContext: CanvasRenderingContext2D | null = null;\r\n protected wasPaused = false;\r\n protected scrubbingId = -1;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.time\");\r\n }\r\n protected getProgress(time: number) {\r\n return getMediaProgress(this.media, time);\r\n }\r\n protected getTime(percent: number) {\r\n return getMediaTime(this.media, percent);\r\n }\r\n\r\n constructor(ctlr: Controller, config?: Partial<TimelineConfig>) {\r\n super(ctlr, config);\r\n }\r\n\r\n public override create() {\r\n // Variables Assignments\r\n this.element = super.create();\r\n this.el.dataset.controlId = this.name;\r\n this.previewContainer = createEl(\"div\", { className: \"tmg-media-preview-container\" });\r\n this.previewImg = createEl(\"div\", { className: \"tmg-media-preview\" });\r\n this.previewCanvas = createEl(\"canvas\", { className: \"tmg-media-preview\" });\r\n this.previewContext = this.previewCanvas.getContext(\"2d\", { alpha: false });\r\n this.thumbnailImg = createEl(\"div\", { className: \"tmg-media-thumbnail tmg-media-filtered tmg-media-object\" });\r\n this.thumbnailCanvas = createEl(\"canvas\", { className: \"tmg-media-thumbnail tmg-media-filtered tmg-media-object\" });\r\n this.thumbnailContext = this.thumbnailCanvas.getContext(\"2d\", { alpha: false });\r\n // DOM Injection\r\n this.el.classList.add(\"tmg-media-timeline-container\"), this.barsWrapper.classList.add(\"tmg-media-timeline-bars-wrapper\", \"tmg-media-timeline\"), this.thumbEl.classList.add(\"tmg-media-timeline-thumb\");\r\n this.previewContainer.append(this.previewImg, this.previewCanvas);\r\n return this.el.append(this.previewContainer), this.el; // parent handled element assignment\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.thumbnailImg, this.thumbnailCanvas);\r\n }\r\n\r\n public override wire(): void {\r\n super.wire();\r\n // Event Listeners\r\n this.media.pseudoElement.addEventListener(\"timeupdate\", this.syncCanvasPreviews, { signal: this.signal });\r\n // State Listeners\r\n this.state.on(\"scrubbing\", this.handleScrubbing, { signal: this.signal });\r\n this.state.on(\"previewing\", ({ value }) => (value ? (this.media.container.classList.add(\"tmg-media-previewing\"), this.clearCanvasPreviews()) : setTimeout(() => this.media.container.classList.remove(\"tmg-media-previewing\"), 0, this.signal)), { signal: this.signal });\r\n this.state.on(\"cancelScrub\", ({ value }) => this.ctlr.plug(\"settings.notifiers\")?.comp(\"cancelscrubnotifier\")?.el.classList.toggle(\"tmg-media-control-active\", value), { signal: this.signal });\r\n // Config --------\r\n this.config.on(\"previewValue\", this.syncPreviewText, { init: true, signal: this.signal });\r\n this.config.on(\"previews\", this.handlePreviews, { init: true, signal: this.signal });\r\n this.config.on(\"autopause\", ({ value }) => [this.thumbnailCanvas, this.thumbnailImg].forEach((el) => el.classList.toggle(\"tmg-media-control-hidden\", !value)), { init: true, signal: this.signal });\r\n this.config.on(\"compact\", ({ value }) => this.el.classList.toggle(\"tmg-media-control-compact\", value), { init: true, signal: this.signal });\r\n this.config.on(\"bufferMarks\", () => this.syncMarks(this.config.marks, true), { init: true, signal: this.signal });\r\n this.config.on(\"playedMarks\", () => this.syncMarks(this.config.marks, true), { init: true, signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.paused\", ({ value }) => (!value ? this.ctlr.RAFLoop(`${this.config.label}Updating`, this.syncValue, this.signal) : this.ctlr.cancelRAFLoop(`${this.config.label}Updating`)), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"state.currentTime\", this.handleCurrentTime, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"intent.currentTime\", this.handleCurrentTime, { signal: this.signal }); // #APPRENTICE: folklore embodiment\r\n this.media.on(\"status.buffered\", this.handleBufferedStatus, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.played\", () => this.config.playedMarks && this.syncMarks(this.config.marks, true), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.duration\", ({ value }) => (this.el.ariaValueMax = String(Math.floor(value))), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.error\", ({ value }) => value && this.syncChunks(\"buffer\", 0), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.isLive\", ({ value }) => (this.config.readonly = value && !this.media.status.canSeekLive), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.canSeekLive\", ({ value }) => (this.config.readonly = !value && !!this.media.status.isLive), { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"settings.metadata.chapterInfo\", this.handleMetadataChapterInfoSetting, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.time.format\", this.syncPreviewText, { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.time.mode\", this.syncPreviewText, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.css.currentObjectWidth\", ({ value }) => (this.thumbnailCanvas.width = parseInt(value as string)), { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.css.currentObjectHeight\", ({ value }) => (this.thumbnailCanvas.height = parseInt(value as string)), { init: true, signal: this.signal });\r\n }\r\n protected override scrub(value: number, bypass?: boolean): boolean {\r\n return super.scrub(value, bypass) ? (!bypass && (this.media.intent.currentTime = safeNum(this.getTime(value / 100))), true) : false;\r\n }\r\n\r\n protected handleCurrentTime({ target, rejectable, resolved }: REvent<CtlrMedia, \"state.currentTime\" | \"intent.currentTime\">): void {\r\n if (this.state.scrubbing || (rejectable && !resolved)) return; // shouldn't mind `.scrubbing`; it's binded to `intent.currentTime` but base class `.value` just renders faster\r\n if (this.media.state.paused) this.syncValue(false, target.value);\r\n this.el.ariaValueText = `${formatMediaTime({ time: target.value, format: \"human-long\" })} of ${formatMediaTime({ time: this.media.status.duration, format: \"human-long\" })}`;\r\n } // !a full embodiment for near native range perf but close enough\r\n\r\n protected handleBufferedStatus({ value }: REvent<CtlrMedia, \"status.buffered\">): void {\r\n this.config.bufferMarks && this.syncMarks(this.config.marks, true);\r\n for (let i = 0; i < value.length; i++) if (value.start(value.length - 1 - i) < this.media.state.currentTime) return void this.syncChunks(\"buffer\", this.getPosValue(safeNum(value.end(value.length - 1 - i) / getMediaMax(this.media))));\r\n }\r\n\r\n public syncValue(auto = true, value = this.media.state.currentTime): void {\r\n if (auto && !this.ctlr.state.mediaIntersecting) return;\r\n if (!this.state.scrubbing) this.config.value = safeNum(this.getProgress(value)) * 100; // (value / safeNum(this.media.status.duration, 60))\r\n }\r\n\r\n protected handleScrubbing({ value }: REvent<RangeState, \"scrubbing\">): void {\r\n this.media.container.classList.toggle(\"tmg-media-scrubbing\", value);\r\n if (!value) {\r\n this.config.autopause && silence(() => (this.media.intent.paused = this.wasPaused));\r\n cancelAnimationFrame(this.scrubbingId);\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"scrubnotifier\")?.inactive();\r\n } else {\r\n this.wasPaused = this.media.state.paused;\r\n this.scrubbingId = requestAnimationFrame(() => {\r\n this.config.autopause && silence(() => (this.media.intent.paused = true));\r\n IS_MOBILE && this.ctlr.plug(\"settings.notifiers\")?.comp(\"scrubnotifier\")?.active();\r\n }, this.signal);\r\n this.clearCanvasPreviews();\r\n }\r\n }\r\n protected handlePreviews({ target }: REvent<TimelineConfig, \"previews\">): void {\r\n const value = target.value === true ? {} : target.value;\r\n this.media.container.classList.toggle(\"tmg-media-no-previews\", !value || this.media.type !== \"video\");\r\n if (!value || this.media.type !== \"video\") return void (this.media.container.dataset.previewType = \"none\");\r\n const manual = value.address && (value.spf || (value.cols && value.rows)),\r\n type = manual ? (value.cols && value.rows ? \"sprite\" : \"image\") : \"canvas\";\r\n this.media.container.dataset.previewType = type;\r\n if (type === \"sprite\" && value.address) this.settings.css.currentPreviewUrl = this.settings.css.currentThumbnailUrl = `url(${value.address})`;\r\n else this.settings.css.currentPreviewPosition = this.settings.css.currentThumbnailPosition = \"center\";\r\n }\r\n\r\n protected handleMetadataChapterInfoSetting({ value }: REvent<CtlrMedia, \"settings.metadata.chapterInfo\">): void {\r\n if (!value || value.length < 2) return void (this.config.divs = []);\r\n const divs: RangeInputDiv[] = [];\r\n for (let i = 0, len = value.length; i < len; i++) divs.push({ value: (value[i].startTime / getMediaMax(this.media)) * 100, label: value[i].title });\r\n this.config.divs = divs;\r\n }\r\n\r\n public override stopScrubbing(): void {\r\n if (!this.state.scrubbing) return;\r\n if (!this.state.cancelScrub) this.media.intent.currentTime = this.getTime(this.config.value / 100);\r\n super.stopScrubbing();\r\n }\r\n\r\n protected onInput(_e: MouseEvent | PointerEvent, pos: number): void {\r\n this.ctlr.throttle(\r\n `${this.config.label}Previewing`,\r\n () => {\r\n this.syncElPos(this.previewContainer, !this.config.compact ? pos : 0.5, false, true);\r\n const previews = this.config.previews,\r\n type = this.media.container.dataset.previewType;\r\n if (type === \"sprite\" && previews && !isBool(previews) && previews.cols && previews.rows) {\r\n const frameIndex = Math.floor((pos * getMediaMax(this.media)) / (previews.spf || 1)) || 1,\r\n { cols, rows } = previews,\r\n clampedI = Math.min(frameIndex, cols * rows - 1),\r\n xPercent = ((clampedI % cols) * 100) / (cols - 1 || 1),\r\n yPercent = (Math.floor(clampedI / cols) * 100) / (rows - 1 || 1);\r\n if (!this.config.compact) this.settings.css.currentPreviewPosition = `${xPercent}% ${yPercent}%`;\r\n if (this.state.scrubbing && this.config.autopause) this.settings.css.currentThumbnailPosition = `${xPercent}% ${yPercent}%`;\r\n } else if (type === \"image\" && previews && !isBool(previews) && previews.address) {\r\n const frameIndex = Math.floor((pos * getMediaMax(this.media)) / (previews.spf || 1)) || 1,\r\n url = `url(${previews.address.replace(\"$\", String(frameIndex))})`;\r\n if (!this.config.compact) this.settings.css.currentPreviewUrl = url;\r\n if (this.state.scrubbing && this.config.autopause) this.settings.css.currentThumbnailUrl = url;\r\n } else if (previews && !this.ctlr.state.frameReadyPromise) this.media.pseudoElement.currentTime = safeNum(this.getTime(pos));\r\n },\r\n 30\r\n );\r\n }\r\n\r\n public syncPreviewText(): void {\r\n if (this.plug) this.previewContainer.dataset.previewText = `${this.plug.toTimeText(this.getTime(this.config.previewValue / 100), true)} ${this.getValueChunk(this.config.previewValue)?.label || \"\"}`.trim();\r\n }\r\n public syncCanvasPreviews(): void {\r\n if (!this.previewContext || !this.thumbnailContext || !this.media.status.loadedData || this.ctlr.state.frameReadyPromise || this.media.pseudoElement.readyState < 2) return;\r\n this.ctlr.throttle(\r\n \"canvasPreviewSync\",\r\n () => {\r\n this.previewCanvas.width = this.previewCanvas.clientWidth || this.previewCanvas.width;\r\n this.previewCanvas.height = this.previewCanvas.clientHeight || this.previewCanvas.height;\r\n if (!this.config.compact) this.previewContext!.drawImage(this.media.pseudoElement as HTMLVideoElement, 0, 0, this.previewCanvas.width, this.previewCanvas.height);\r\n if (this.state.scrubbing && this.config.autopause) this.thumbnailContext!.drawImage(this.media.pseudoElement as HTMLVideoElement, 0, 0, this.thumbnailCanvas.width, this.thumbnailCanvas.height);\r\n },\r\n 33\r\n );\r\n }\r\n public clearCanvasPreviews(bool = this.media.container.dataset.previewType === \"canvas\" && this.media.pseudoElement.readyState < 2): void {\r\n bool && (this.ctlr.setCanvasFallback(this.previewCanvas, this.previewContext), this.ctlr.setCanvasFallback(this.thumbnailCanvas, this.thumbnailContext));\r\n }\r\n\r\n protected override syncDivs(divs = this.config.divs): void {\r\n super.syncDivs(divs);\r\n for (let i = 0, len = this.chunks.length; i < len; i++) {\r\n const c = this.chunks[i];\r\n c.el.classList.add(\"tmg-media-timeline-chapter\"), c.base.classList.add(\"tmg-media-timeline-base-bar\", \"tmg-media-timeline-bar\"), c.preview.classList.add(\"tmg-media-timeline-preview-bar\", \"tmg-media-timeline-bar\"), c.value.classList.add(\"tmg-media-timeline-played-bar\", \"tmg-media-timeline-bar\");\r\n c.el.insertBefore((c.buffer = createEl(\"div\", { className: \"tmg-media-range-bar tmg-media-buffered-bar tmg-media-timeline-buffered-bar tmg-media-timeline-bar\" })), c.value);\r\n }\r\n this.handleBufferedStatus({ value: this.media.status.buffered } as REvent<CtlrMedia, \"status.buffered\">);\r\n }\r\n protected override syncMarks(marks = this.config.marks, extras = false): void {\r\n if (extras && !this.ctlr.payload.wired) return;\r\n const agg = [...marks],\r\n buf = this.media.status.buffered,\r\n ply = this.media.status.played,\r\n max = getMediaMax(this.media) || 1;\r\n if (this.config.bufferMarks)\r\n for (let i = 0, len = buf.length; i < len; i++) {\r\n const start = buf.start(i),\r\n end = buf.end(i);\r\n agg.push({ start: (start / max) * 100, end: (end / max) * 100, label: `${formatMediaTime({ time: start })}${end > start + 1 ? ` - ${formatMediaTime({ time: end })}` : \"\"} Loaded`, type: \"buffered\" });\r\n }\r\n if (this.config.playedMarks)\r\n for (let i = 0, len = ply.length; i < len; i++) {\r\n const start = ply.start(i),\r\n end = ply.end(i);\r\n agg.push({ start: (start / max) * 100, end: (end / max) * 100, label: `${formatMediaTime({ time: start })}${end > start + 1 ? ` - ${formatMediaTime({ time: end })}` : \"\"} Played`, type: \"played\" });\r\n }\r\n super.syncMarks(agg); // all weightless logic\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n timeline: typeof Timeline;\r\n }\r\n}\r\n","import { CtlrConfig } from \"@defs/config\";\r\nimport { RangeInput, type RangeInputConfig, type RangeState } from \"../../rangeinput\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { CtlrMedia } from \"@defs/contract\";\r\nimport type { REvent } from \"sia-reactor\";\r\n\r\nexport type VolumeSliderConfig = Partial<RangeInputConfig>;\r\n\r\nexport class VolumeSlider extends RangeInput<RangeInputConfig, RangeState> {\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.volume\");\r\n }\r\n\r\n constructor(ctlr: Controller, config?: VolumeSliderConfig) {\r\n super(ctlr, { label: \"Volume Slider\", ...config });\r\n }\r\n\r\n public override wire(): void {\r\n super.wire();\r\n // Config Listeners\r\n this.config.set(\"value\", (v) => Math.max(this.plug?.shouldToggle ? 0 : this.settings.volume.min, v), { signal: this.signal }); // #VALIDATOR: rules enforcement\r\n this.config.set(\"previewValue\", (v) => Math.max(this.plug?.shouldToggle ? 0 : this.settings.volume.min, v), { signal: this.signal }); // #VALIDATOR: rules enforcement\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.volume\", this.handleVolumeState, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.volume.max\", this.handleVolumeMax, { init: true, signal: this.signal });\r\n }\r\n protected override scrub(value: number, bypass?: boolean): boolean {\r\n return super.scrub(value, bypass) ? (this.plug?.handleSliderInput(value), true) : false;\r\n }\r\n\r\n protected handleVolumeState({ value }: REvent<CtlrMedia, \"state.volume\">): void {\r\n if (!this.state.scrubbing) this.config.previewValue = this.config.value = value;\r\n }\r\n\r\n protected handleVolumeMax({ value }: REvent<CtlrConfig, \"settings.volume.max\">): void {\r\n this.config.max = value;\r\n // prettier-ignore\r\n this.config.divs = value > 100 ? [{ value: 0, label: \"\" }, { value: 100, label: `<strong style=\"color: var(--tmg-media-range-track-boost-color, red); vertical-align: 4%;\">↑</strong>` },] : [];\r\n }\r\n}\r\n","import { BaseComponent, type ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { VolumeSlider, type VolumeSliderConfig } from \"./slider\";\r\n\r\nexport type VolumeConfig = VolumeSliderConfig;\r\n\r\nexport class VolumeControl extends BaseComponent<VolumeConfig, ComponentState> {\r\n public static readonly componentName: string = \"volume\";\r\n public static readonly isControl: boolean = true;\r\n public slider!: VolumeSlider;\r\n protected button!: HTMLButtonElement;\r\n protected sliderWrapper!: HTMLSpanElement;\r\n protected delayActiveId?: number;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.volume\");\r\n }\r\n\r\n public override create(): HTMLElement {\r\n // Variables Assignments\r\n this.slider = new VolumeSlider(this.ctlr, this.config);\r\n this.element = createEl(\"div\", { className: \"tmg-media-volume-container tmg-media-vb-container\" }, { draggableControl: \"\", controlId: this.name });\r\n this.button = createEl(\"button\", { className: \"tmg-media-mute-btn tmg-media-vb-btn\", type: \"button\", innerHTML: IconRegistry.get(\"volumehigh\") + IconRegistry.get(\"volumelow\") + IconRegistry.get(\"volumemuted\") });\r\n this.sliderWrapper = createEl(\"span\", { className: \"tmg-media-volume-slider-wrapper tmg-media-vb-slider-wrapper\" });\r\n const sliderEl = this.slider.create();\r\n // DOM Injection\r\n sliderEl.classList.add(\"tmg-media-vb-slider\", \"tmg-media-volume-slider\");\r\n this.sliderWrapper.append(sliderEl);\r\n return this.el.append(this.button, this.sliderWrapper), this.el;\r\n }\r\n\r\n public override mount(): void {\r\n this.slider.setup();\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.volume\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.button.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n this.el.addEventListener(\"mousemove\", this.startActive, { signal: this.signal });\r\n this.el.addEventListener(\"mouseleave\", this.stopActive, { signal: this.signal });\r\n // State Listeners\r\n this.slider.config.on(\"value\", this.delayActive, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.volume\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"state.muted\", this.syncARIA, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.mute\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.toggle(\"auto\");\r\n }\r\n\r\n protected startActive(): void {\r\n this.slider.active(), this.delayActive();\r\n }\r\n protected delayActive(): void {\r\n this.ctlr.plug(\"settings.overlay\")?.delay();\r\n clearTimeout(this.delayActiveId);\r\n this.delayActiveId = setTimeout(() => this.stopActive(), this.settings.overlay.delay, this.signal);\r\n }\r\n protected stopActive(): void {\r\n if (this.slider.el.matches(\":active\")) return this.delayActive();\r\n clearTimeout(this.delayActiveId), this.slider.inactive();\r\n this.slider.config.previewValue = this.slider.config.value;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.muted || this.media.state.volume === 0 ? \"Unmute\" : \"Mute\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.mute, this.settings.voice.commands.mute);\r\n this.button.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA(undefined, this.button);\r\n }\r\n\r\n protected override onDestroy(): void {\r\n this.slider.destroy(), super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n volume: typeof VolumeControl;\r\n }\r\n}\r\n","import { CtlrConfig } from \"@defs/config\";\r\nimport { RangeInput, type RangeInputConfig, type RangeState } from \"../../rangeinput\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { CtlrMedia } from \"@defs/contract\";\r\nimport type { REvent } from \"sia-reactor\";\r\n\r\nexport type BrightnessSliderConfig = Partial<RangeInputConfig>;\r\n\r\nexport class BrightnessSlider extends RangeInput<RangeInputConfig, RangeState> {\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.brightness\");\r\n }\r\n\r\n constructor(ctlr: Controller, config?: BrightnessSliderConfig) {\r\n super(ctlr, { label: \"Brightness Slider\", ...config });\r\n }\r\n\r\n public override wire(): void {\r\n super.wire();\r\n // Config Listeners\r\n this.config.set(\"value\", (v) => Math.max(this.plug?.shouldToggle ? 0 : this.settings.brightness.min, v), { signal: this.signal }); // #VALIDATOR: rules enforcement\r\n this.config.set(\"previewValue\", (v) => Math.max(this.plug?.shouldToggle ? 0 : this.settings.brightness.min, v), { signal: this.signal }); // #VALIDATOR: rules enforcement\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.brightness\", this.handleBrightnessState, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.brightness.max\", this.handleBrightnessMax, { init: true, signal: this.signal });\r\n }\r\n protected override scrub(value: number, bypass?: boolean): boolean {\r\n return super.scrub(value, bypass) ? (this.plug?.handleSliderInput(value), true) : false;\r\n }\r\n\r\n protected handleBrightnessState({ value }: REvent<CtlrMedia, \"state.brightness\">): void {\r\n if (!this.state.scrubbing) this.config.previewValue = this.config.value = value;\r\n }\r\n\r\n protected handleBrightnessMax({ value }: REvent<CtlrConfig, \"settings.brightness.max\">): void {\r\n this.config.max = value;\r\n // prettier-ignore\r\n this.config.divs = value > 100 ? [{ value: 0, label: \"\" }, { value: 100, label: `<strong style=\"color: var(--tmg-media-range-track-boost-color, red); vertical-align: 4%;\">↑</strong>` },] : [];\r\n }\r\n}\r\n","import { BaseComponent, type ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\nimport { BrightnessSlider, type BrightnessSliderConfig } from \"./slider\";\r\n\r\nexport type BrightnessConfig = BrightnessSliderConfig;\r\n\r\nexport class BrightnessControl extends BaseComponent<BrightnessConfig, ComponentState> {\r\n public static readonly componentName: string = \"brightness\";\r\n public static readonly isControl: boolean = true;\r\n public slider!: BrightnessSlider;\r\n protected button!: HTMLButtonElement;\r\n protected sliderWrapper!: HTMLSpanElement;\r\n protected delayActiveId?: number;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.brightness\");\r\n }\r\n\r\n public override create(): HTMLElement {\r\n // Variables Assignments\r\n this.slider = new BrightnessSlider(this.ctlr, this.config);\r\n this.element = createEl(\"div\", { className: \"tmg-media-brightness-container tmg-media-vb-container\" }, { draggableControl: \"\", controlId: this.name });\r\n this.button = createEl(\"button\", { className: \"tmg-media-dark-btn tmg-media-vb-btn\", type: \"button\", innerHTML: IconRegistry.get(\"brightnesshigh\") + IconRegistry.get(\"brightnesslow\") + IconRegistry.get(\"brightnessdark\") });\r\n this.sliderWrapper = createEl(\"span\", { className: \"tmg-media-brightness-slider-wrapper tmg-media-vb-slider-wrapper\" });\r\n const sliderEl = this.slider.create();\r\n // DOM Injection\r\n sliderEl.classList.add(\"tmg-media-vb-slider\", \"tmg-media-brightness-slider\");\r\n this.sliderWrapper.append(sliderEl);\r\n return this.el.append(this.button, this.sliderWrapper), this.el;\r\n }\r\n\r\n public override mount(): void {\r\n this.slider.setup();\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.button.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n this.el.addEventListener(\"mousemove\", this.startActive, { signal: this.signal });\r\n this.el.addEventListener(\"mouseleave\", this.stopActive, { signal: this.signal });\r\n // State Listeners\r\n this.slider.config.on(\"value\", this.delayActive, { signal: this.signal });\r\n // ---- Media Listeners\r\n this.media.on(\"state.brightness\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"state.dark\", this.syncARIA, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.dark\", this.syncARIA, { signal: this.signal });\r\n // Features Gating\r\n this.media.on(\"features.brightness\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.toggle(\"auto\");\r\n }\r\n\r\n protected startActive(): void {\r\n this.slider.active(), this.delayActive();\r\n }\r\n protected delayActive(): void {\r\n this.ctlr.plug(\"settings.overlay\")?.delay();\r\n clearTimeout(this.delayActiveId);\r\n this.delayActiveId = setTimeout(() => this.stopActive(), this.settings.overlay.delay, this.signal);\r\n }\r\n protected stopActive = (): void => {\r\n if (this.slider.el.matches(\":active\")) return this.delayActive();\r\n clearTimeout(this.delayActiveId), this.slider.inactive();\r\n this.slider.config.previewValue = this.slider.config.value;\r\n };\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.dark || this.media.state.brightness === 0 ? \"Brighten\" : \"Darken\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.dark, this.settings.voice.commands.dark);\r\n this.button.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA(undefined, this.button);\r\n }\r\n\r\n protected override onDestroy(): void {\r\n this.slider.destroy(), super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n brightness: typeof BrightnessControl;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"./base\";\r\nimport type { CueLike } from \"@plugs/settings/captions\";\r\nimport { capitalize } from \"@utils/str\";\r\nimport { clamp, parseIfPercent, safeNum } from \"@utils/num\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatVttLine, parseVttText } from \"@utils/media\";\r\nimport { isDef, isObj, isStr } from \"@utils/obj\";\r\nimport { setTimeout } from \"@utils/fn\";\r\n\r\nexport type CaptionsViewConfig = { secondaryOrder?: number };\r\ntype KaraokeNode = { el: HTMLElement; time: number };\r\n\r\nexport class CaptionsView extends BaseComponent<CaptionsViewConfig, ComponentState, HTMLDivElement> {\r\n public static readonly componentName: string = \"captionsview\";\r\n public isMain = false;\r\n protected prevCue: CueLike | null = null;\r\n protected karaokeNodes: KaraokeNode[] | null = null;\r\n protected lastPreview = \"\";\r\n protected timeoutId = -1;\r\n protected charW = 0;\r\n protected lineHPx = 0;\r\n protected lastPosX = 0;\r\n protected lastPosY = 0;\r\n protected lastPtrX = 0;\r\n protected lastPtrY = 0;\r\n protected dragX?: string;\r\n protected dragY?: string;\r\n\r\n public override create(): HTMLDivElement {\r\n return (this.element = createEl(\"div\", { className: \"tmg-media-captions-container\" }, { part: \"region\" }));\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.element);\r\n }\r\n\r\n public override wire(): void {\r\n //Variables Assignment\r\n if (!(this.isMain = this.element === this.ctlr.DOM.captionsContainer)) this.dragY = `calc((var(--tmg-media-current-captions-container-height) * ${this.config.secondaryOrder ?? 1}) + (var(--tmg-media-current-captions-container-height) / 2) + (var(--tmg-media-current-unit) / 2))`; // Offset secondary captions to avoid overlap, CSS clamps\r\n // Event Listeners\r\n this.el.addEventListener(\"pointerdown\", this.handleDragStart, { signal: this.signal });\r\n // Ctlr State Watchers\r\n this.ctlr.state.watch(\"dimensions.container.width\", () => (this.syncSize(), this.preview(\"\")), { init: true, signal: this.signal });\r\n }\r\n\r\n public syncSize(): void {\r\n this.el.style.setProperty(\"display\", \"block\", \"important\");\r\n const measurer = createEl(\"span\", { className: \"tmg-media-captions-text\", innerHTML: \"abcdefghijklmnopqrstuvwxyz\".repeat(2) }, {}, { visibility: \"hidden\" });\r\n this.el.append(measurer);\r\n this.charW = measurer.offsetWidth / 52;\r\n const { lineHeight, fontSize } = getComputedStyle(measurer);\r\n this.lineHPx = !safeNum(parseFloat(lineHeight), 0) ? safeNum(parseFloat(fontSize), 16) * 1.2 : parseFloat(lineHeight);\r\n measurer.remove(), this.el.style.removeProperty(\"display\");\r\n }\r\n\r\n public preview(cue: CueLike | string = `${capitalize(this.media.container.dataset.trackKind || \"captions\")} look like this`, flush = this.isPreviewing()): void {\r\n const text = isStr(cue) ? cue : cue.text || \"\",\r\n should = flush || !this.ctlr.isUIActive(\"captions\") || !this.el.textContent;\r\n should && this.media.container.classList.add(\"tmg-media-captions-preview\");\r\n this.render(should ? (isObj(cue) ? cue : { text: cue }) : this.prevCue);\r\n clearTimeout(this.timeoutId);\r\n this.timeoutId = setTimeout((flush = this.isPreviewing(text)) => (this.media.container.classList.remove(\"tmg-media-captions-preview\"), flush && (this.el.innerHTML = \"\")), this.settings.captions.previewTimeout, this.signal);\r\n this.lastPreview = text;\r\n }\r\n public isPreviewing(text = this.lastPreview): boolean {\r\n return !!this.el.innerHTML && this.el.textContent.replace(/\\s/g, \"\") === text?.replace(/\\s/g, \"\");\r\n }\r\n\r\n public render(cue: CueLike | null): void {\r\n const existing = this.el.querySelector<HTMLElement>(\".tmg-media-captions-wrapper\");\r\n if (!cue) return existing?.remove();\r\n const wrapper = existing ?? createEl(\"div\", { className: \"tmg-media-captions-wrapper\", ariaLive: \"Off\", ariaAtomic: \"true\" }, { part: \"cue-display\" }),\r\n { offsetWidth: vCWidth, offsetHeight: vCHeight } = this.media.container,\r\n allowOverride = this.settings.captions.allowOverride || !this.isMain;\r\n for (const attr of [\"style\", \"data-active\", \"data-scroll\"]) this.el.removeAttribute(attr);\r\n if (!this.isMain) this.dragX && this.el.style.setProperty(\"--tmg-media-current-captions-x\", this.dragX), this.dragY && this.el.style.setProperty(\"--tmg-media-current-captions-y\", this.dragY);\r\n (wrapper.innerHTML = \"\"), (cue.text ||= \"\"), (this.prevCue = cue);\r\n const lines = cue.text.replace(/(<br\\s*\\/>)|\\\\N/gi, \"\\n\").split(/\\n/);\r\n for (const p of lines) for (const l of formatVttLine(p, Math.floor(vCWidth / this.charW))) wrapper.append(createEl(\"div\", { className: \"tmg-media-captions-line\" }, cue.id ? { part: \"cue\", id: cue.id } : { part: \"cue\" }, allowOverride && cue.align ? { textAlign: cue.align } : undefined)!.appendChild(createEl(\"span\", { className: \"tmg-media-captions-text\", innerHTML: parseVttText(l) })!).parentElement!);\r\n !existing && this.el.append(wrapper);\r\n const { offsetWidth: cWidth, offsetHeight: cHeight } = this.element;\r\n this.isMain ? (this.settings.css.currentCaptionsContainerHeight = `${cHeight}px`) : this.el.style.setProperty(\"--tmg-media-current-captions-container-height\", `${cHeight}px`);\r\n this.isMain ? (this.settings.css.currentCaptionsContainerWidth = `${cWidth}px`) : this.el.style.setProperty(\"--tmg-media-current-captions-container-width\", `${cWidth}px`);\r\n if (allowOverride) {\r\n if (cue.region) {\r\n this.el.setAttribute(\"data-active\", \"\");\r\n const { width, lines: regionLines, viewportAnchorX: vpAnX, viewportAnchorY: vpAnY, scroll } = cue.region;\r\n if (isDef(vpAnX)) this.el.style.setProperty(\"--tmg-media-current-captions-x\", `${vpAnX}%`);\r\n if (isDef(vpAnY)) this.el.style.setProperty(\"--tmg-media-current-captions-y\", `${100 - Number(vpAnY)}%`);\r\n if (isDef(width)) this.el.style.maxWidth = `${width}%`;\r\n if (isDef(regionLines)) this.el.style.maxHeight = `${Number(regionLines) * ((this.lineHPx / vCHeight) * 100)}%`;\r\n if (scroll === \"up\") {\r\n this.el.style.maxHeight = `${regionLines! * ((this.lineHPx / vCHeight) * 100)}%`;\r\n this.el.dataset.scroll = scroll;\r\n this.ctlr.config.stall(() => (this.el.scrollTop = wrapper.scrollHeight));\r\n }\r\n } else {\r\n if (isDef(cue.position) && cue.position !== \"auto\") {\r\n const elHalfWPct = ((cWidth / vCWidth) * 100) / 2,\r\n posOffset = cue.positionAlign === \"line-left\" ? 0 : cue.positionAlign === \"line-right\" ? -2 * elHalfWPct : -elHalfWPct;\r\n this.el.style.setProperty(\"--tmg-media-current-captions-x\", `calc(${cue.position}% + ${posOffset}% + ${elHalfWPct}%)`);\r\n }\r\n if (isDef(cue.line) && cue.line !== \"auto\") {\r\n const line = parseIfPercent(cue.line, 100),\r\n lhPct = (this.lineHPx / vCHeight) * 100,\r\n elHalfHPct = ((cHeight / vCHeight) * 100) / 2,\r\n lAlign = cue.lineAlign && cue.lineAlign !== \"auto\" ? cue.lineAlign : line < 0 ? \"end\" : \"start\",\r\n lineOffset = lAlign === \"start\" ? -2 * elHalfHPct : lAlign === \"end\" ? 0 : -elHalfHPct,\r\n bottomVal = cue.snapToLines ? (line < 0 ? (Math.abs(line) - 1) * lhPct : 100 - line * lhPct) : 100 - line;\r\n this.el.style.setProperty(\"--tmg-media-current-captions-y\", `calc(${bottomVal}% + ${lineOffset}% + ${elHalfHPct}%)`);\r\n }\r\n if (isDef(cue.size) && cue.size !== 100) this.el.style.maxWidth = `${cue.size}%`;\r\n }\r\n if (cue.vertical) this.el.style.writingMode = cue.vertical === \"lr\" ? \"vertical-lr\" : \"vertical-rl\";\r\n }\r\n this.karaokeNodes = Array.from(wrapper.querySelectorAll<HTMLElement>(\"[data-part='timed']\")).map((el) => {\r\n const [, m, s, ms] = (el.dataset.time || \"\").match(/(\\d+):(\\d+)\\.(\\d+)/) || [];\r\n return { el, time: m ? +m * 60 + +s + +ms / 1000 : 0 };\r\n });\r\n this.syncKaraoke();\r\n }\r\n\r\n public syncKaraoke(): void {\r\n if (!this.karaokeNodes) return;\r\n for (const { el, time } of this.karaokeNodes) {\r\n const isPast = safeNum(this.media.state.currentTime) > time;\r\n el.toggleAttribute(\"data-past\", isPast), el.toggleAttribute(\"data-future\", !isPast);\r\n }\r\n }\r\n\r\n protected handleDragStart(e: PointerEvent): void {\r\n this.el.setPointerCapture(e.pointerId);\r\n const { left, bottom } = getComputedStyle(this.element);\r\n (this.lastPosX = parseFloat(left)), (this.lastPosY = parseFloat(bottom));\r\n (this.lastPtrX = e.clientX), (this.lastPtrY = e.clientY);\r\n this.el.addEventListener(\"pointermove\", this.handleDragging, { signal: this.signal });\r\n this.el.addEventListener(\"pointerup\", this.handleDragEnd, { signal: this.signal });\r\n }\r\n\r\n protected handleDragging(e: PointerEvent): void {\r\n this.media.container.classList.add(\"tmg-media-captions-dragging\");\r\n this.ctlr.RAFLoop(\"captionsDragging\", () => {\r\n if (e.clientX === this.prevEX && e.clientY === this.prevEY) return; // #CONSERVATION: peak stays peak\r\n (this.prevEX = e.clientX), (this.prevEY = e.clientY);\r\n const { offsetWidth: ww, offsetHeight: hh } = this.media.container,\r\n { offsetWidth: w, offsetHeight: h } = this.element,\r\n posX = clamp(w / 2, this.lastPosX + (e.clientX - this.lastPtrX), ww - w / 2),\r\n posY = clamp(h / 2, this.lastPosY - (e.clientY - this.lastPtrY), hh - h / 2);\r\n if (this.isMain) (this.settings.css.currentCaptionsX = `${(posX / ww) * 100}%`), (this.settings.css.currentCaptionsY = `${(posY / hh) * 100}%`);\r\n else this.el.style.setProperty(\"--tmg-media-current-captions-x\", (this.dragX = `${(posX / ww) * 100}%`)), this.el.style.setProperty(\"--tmg-media-current-captions-y\", (this.dragY = `${(posY / hh) * 100}%`));\r\n });\r\n }\r\n private prevEX?: number;\r\n private prevEY?: number;\r\n\r\n protected handleDragEnd(): void {\r\n this.ctlr.cancelRAFLoop(\"captionsDragging\");\r\n this.media.container.classList.remove(\"tmg-media-captions-dragging\");\r\n this.el.removeEventListener(\"pointermove\", this.handleDragging);\r\n this.el.removeEventListener(\"pointerup\", this.handleDragEnd);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n captionsview: typeof CaptionsView;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\nimport { capitalize } from \"@utils/str\";\r\n\r\nexport type CaptionsConfig = undefined;\r\n\r\nexport class CaptionsButton extends BaseComponent<CaptionsConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"captions\";\r\n public static readonly isControl: boolean = true;\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.captions\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-captions-btn\", type: \"button\", innerHTML: IconRegistry.get(\"subtitles\") + IconRegistry.get(\"captions\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.textVisible\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.currentTextTrack\", this.syncUI, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"status.textTracks\", this.syncUI, { signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.captions\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.captions\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.plug?.toggleVisible();\r\n }\r\n\r\n public syncUI(): void {\r\n this[!this.plug?.canVisible ? \"disable\" : \"enable\"]();\r\n this.syncARIA();\r\n }\r\n public syncARIA(): void {\r\n this.state.label = capitalize(this.plug?.getTrackKind()) || \"Captions\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.captions, this.settings.voice.commands.captions);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n captions: typeof CaptionsButton;\r\n }\r\n}\r\n","import { IconRegistry } from \"@core/registries\";\r\nimport { BaseComponent, ComponentState } from \"./base\";\r\nimport { createEl } from \"@utils/dom\";\r\n\r\nexport type ScreenLockConfig = undefined;\r\n\r\nexport class ScreenLockButton extends BaseComponent<ScreenLockConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"screenlock\";\r\n protected get plug() {\r\n return this.ctlr.plug(\"settings.locked\");\r\n }\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { type: \"button\", className: \"tmg-media-screen-locked-btn\", tabIndex: -1, innerHTML: `${IconRegistry.get(\"lock\")}${IconRegistry.get(\"unlock\")}<p>Unlock controls?</p>` }));\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.plug?.wrapper.prepend(this.el);\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Plug Listeners\r\n this.plug?.state.on(\"visible\", this.syncUI, { init: true, signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected handleClick(e: MouseEvent): void {\r\n e.stopPropagation();\r\n this.plug?.delayOverlay();\r\n if (this.el.classList.contains(\"tmg-media-control-unlock\")) this.media.intent.locked = false;\r\n else this.el.classList.add(\"tmg-media-control-unlock\");\r\n }\r\n\r\n public syncUI(): void {\r\n !this.plug?.state.visible && this.el.classList.remove(\"tmg-media-control-unlock\");\r\n }\r\n public syncARIA(): void {\r\n this.el.title = this.state.label = \"Unlock Screen\";\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n screenlock: typeof ScreenLockButton;\r\n }\r\n}\r\n","import { silence } from \"sia-reactor/modules\";\r\nimport { BaseComponent, ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\n// import { IconRegistry } from \"@core/registries\";\r\n\r\nexport type ChapterConfig = undefined;\r\n\r\nexport class ChapterButton extends BaseComponent<ChapterConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName = \"chapter\";\r\n public static readonly isControl: boolean = true;\r\n public textEl!: HTMLSpanElement;\r\n public iconEl!: HTMLSpanElement;\r\n\r\n public override create() {\r\n this.element = createEl(\"button\", { className: \"tmg-media-chapter-btn tmg-media-control-text-btn\", type: \"button\" }, { draggableControl: \"\", controlId: this.name });\r\n this.iconEl = createEl(\"span\", { className: \"tmg-media-chapter-icon\" }); // innerHTML: IconRegistry.get(\"chevronright\") || \">\"\r\n this.textEl = createEl(\"span\", { className: \"tmg-media-chapter-text\" });\r\n return this.element.append(this.textEl, this.iconEl), this.el;\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.currentChapter\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.currentChapter\", this.syncUI, { init: this.ctlr.payload.wired, signal: this.signal });\r\n this.media.on(\"settings.metadata.chapterInfo\", this.syncUI, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Post Wiring\r\n this.syncARIA();\r\n }\r\n\r\n protected async handleClick(): Promise<void> {\r\n const view = this.ctlr.plug(\"settings.settingsView\");\r\n if (view) {\r\n view.menu.open(this.el);\r\n view.menu.goTo(\"chapters\");\r\n }\r\n }\r\n\r\n protected syncUI(): void {\r\n const idx = this.media.state.currentChapter,\r\n chapters = this.media.settings.metadata.chapterInfo;\r\n if (idx === -1 || !chapters || !chapters[idx]) return void ((this.textEl.textContent = \"\"), this.hide());\r\n (this.textEl.textContent = chapters[idx].title || `Chapter ${idx + 1}`), this.show();\r\n }\r\n\r\n protected syncARIA(): void {\r\n this.el.title = this.state.label = \"View Chapter\";\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n chapter: typeof ChapterButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type CastConfig = undefined;\r\n\r\nexport class CastButton extends BaseComponent<CastConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"cast\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-cast-btn\", type: \"button\", innerHTML: IconRegistry.get(\"cast\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.cast\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.cast\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.cast\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.cast\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.cast = !this.media.state.cast;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.cast ? \"Stop casting\" : \"Cast to TV\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.cast, this.settings.voice.commands.cast);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n cast: typeof CastButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"@components/base\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type AirPlayConfig = undefined;\r\n\r\nexport class AirPlayButton extends BaseComponent<AirPlayConfig, ComponentState, HTMLButtonElement> {\r\n public static readonly componentName: string = \"airplay\";\r\n public static readonly isControl: boolean = true;\r\n\r\n public override create() {\r\n return (this.element = createEl(\"button\", { className: \"tmg-media-airplay-btn\", type: \"button\", innerHTML: IconRegistry.get(\"airplay\") }, { draggableControl: \"\", controlId: this.name }));\r\n }\r\n\r\n public override wire(): void {\r\n // Features Gating\r\n this.media.on(\"features.airplay\", this.gate, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // Event Listeners\r\n this.el.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.airplay\", this.syncARIA, { init: this.ctlr.payload.wired, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.on(\"settings.keys.shortcuts.airplay\", this.syncARIA, { init: true, signal: this.signal });\n this.ctlr.config.on(\"settings.voice.commands.airplay\", this.syncARIA, { signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n if (!this.media.state.airplay) this.media.intent.airplay = true; // AirPlay handles its own connect/disconnect UI natively, we just trigger it\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.airplay ? \"AirPlay Active\" : \"AirPlay\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.airplay, this.settings.voice.commands.airplay);\r\n this.el.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n airplay: typeof AirPlayButton;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { formatKeyForDisplay } from \"../../super/utils\";\r\n\r\nexport type PiPPlaceholderConfig = undefined;\r\n\r\nexport class PiPPlaceholder extends BaseComponent<PiPPlaceholderConfig, ComponentState, HTMLDivElement> {\r\n public static readonly componentName = \"pipplaceholder\";\r\n protected iconBtn!: HTMLButtonElement;\r\n\r\n public override create() {\r\n this.element = createEl(\"div\", { className: \"tmg-media-placeholder tmg-media-picture-in-picture-placeholder\", innerHTML: `<p>Playing in picture-in-picture</p>` });\r\n this.iconBtn = createEl(\"button\", { className: \"tmg-media-placeholder-icon-btn tmg-media-picture-in-picture-icon-btn\", innerHTML: IconRegistry.get(\"pipplaceholder\") });\r\n return this.el.prepend(this.iconBtn), this.el;\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.el);\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.iconBtn.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.pictureInPicture\", this.syncARIA, { init: true, signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.pictureInPicture = !this.media.state.pictureInPicture;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.pictureInPicture ? \"Exit picture in picture\" : \"Picture in picture\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.pictureInPicture);\r\n this.iconBtn.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA(\"\", this.iconBtn);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n pipplaceholder: typeof PiPPlaceholder;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type CastPlaceholderConfig = undefined;\r\n\r\nexport class CastPlaceholder extends BaseComponent<CastPlaceholderConfig, ComponentState, HTMLDivElement> {\r\n public static readonly componentName = \"castplaceholder\";\r\n protected iconBtn!: HTMLButtonElement;\r\n\r\n public override create() {\r\n this.element = createEl(\"div\", { className: \"tmg-media-placeholder tmg-media-cast-placeholder\", innerHTML: `<p>Casting to External Display</p>` });\r\n this.iconBtn = createEl(\"button\", { className: \"tmg-media-placeholder-icon-btn tmg-media-cast-icon-btn\", innerHTML: IconRegistry.get(\"castplaceholder\") });\r\n return this.el.prepend(this.iconBtn), this.el;\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.el);\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.iconBtn.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.cast\", this.syncARIA, { init: true, signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.cast = !this.media.state.cast;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.cast ? \"Stop casting\" : \"Cast to Display\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.cast);\r\n this.iconBtn.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA(\"\", this.iconBtn);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n castplaceholder: typeof CastPlaceholder;\r\n }\r\n}\r\n","import { BaseComponent, ComponentState } from \"../base\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { formatKeyForDisplay } from \"@utils/keys\";\r\n\r\nexport type AirPlayPlaceholderConfig = undefined;\r\n\r\nexport class AirPlayPlaceholder extends BaseComponent<AirPlayPlaceholderConfig, ComponentState, HTMLDivElement> {\r\n public static readonly componentName = \"airplayplaceholder\";\r\n protected iconBtn!: HTMLButtonElement;\r\n\r\n public override create() {\r\n this.element = createEl(\"div\", { className: \"tmg-media-placeholder tmg-media-airplay-placeholder\", innerHTML: `<p>Streaming to AirPlay Display</p>` });\r\n this.iconBtn = createEl(\"button\", { className: \"tmg-media-placeholder-icon-btn tmg-media-airplay-icon-btn\", innerHTML: IconRegistry.get(\"airplayplaceholder\") });\r\n return this.el.prepend(this.iconBtn), this.el;\r\n }\r\n\r\n public override mount(): void {\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.el);\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.iconBtn.addEventListener(\"click\", this.handleClick, { signal: this.signal });\r\n // Ctlr Config Listeners\r\n this.ctlr.config.on(\"settings.keys.shortcuts.airplay\", this.syncARIA, { init: true, signal: this.signal });\r\n }\r\n\r\n protected handleClick(): void {\r\n this.media.intent.airplay = !this.media.state.airplay;\r\n }\r\n\r\n public syncARIA(): void {\r\n this.state.label = this.media.state.airplay ? \"Stop airplaying\" : \"AirPlay to Display\";\r\n this.state.cmd = formatKeyForDisplay(this.settings.keys.shortcuts.airplay);\r\n this.iconBtn.title = this.state.label + this.state.cmd;\r\n this.setBtnARIA(\"\", this.iconBtn);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface ComponentRegistryMap {\r\n airplayplaceholder: typeof AirPlayPlaceholder;\r\n }\r\n}\r\n","import { ComponentRegistry } from \"@core/registries\";\r\nimport { RangeInput } from \"./rangeinput\";\r\nimport { Buffer } from \"./buffer\";\r\nimport { Meta } from \"./controls/meta\";\r\nimport { BigNextButton } from \"./controls/bignext\";\r\nimport { BigPlayPauseButton } from \"./controls/bigplaypause\";\r\nimport { BigPrevButton } from \"./controls/bigprev\";\r\nimport { PrevButton } from \"./controls/prev\";\r\nimport { PlayPauseButton } from \"./controls/playpause\";\r\nimport { NextButton } from \"./controls/next\";\r\nimport { Forward10Button } from \"./controls/forward10\";\r\nimport { Backward10Button } from \"./controls/backward10\";\r\nimport { TimeButton } from \"./controls/time\";\r\nimport { DurationButton } from \"./controls/duration\";\r\nimport { TimeAndDurationButton } from \"./controls/timeandduration\";\r\nimport { SettingsButton } from \"./controls/settings\";\r\nimport { ObjectFitButton } from \"./controls/objectfit\";\r\nimport { PictureInPictureButton } from \"./controls/pictureinpicture\";\r\nimport { TheaterButton } from \"./controls/theater\";\r\nimport { CaptureButton } from \"./controls/capture\";\r\nimport { FullscreenButton } from \"./controls/fullscreen\";\r\nimport { FullscreenLockButton } from \"./controls/fullscreenlock\";\r\nimport { FullscreenOrientationButton } from \"./controls/fullscreenorientation\";\r\nimport { RemoveMiniplayerButton } from \"./controls/removeminiplayer\";\r\nimport { ExpandMiniplayerButton } from \"./controls/expandminiplayer\";\r\nimport { Timeline } from \"./controls/timeline\";\r\nimport { VolumeControl } from \"./controls/volume\";\r\nimport { BrightnessControl } from \"./controls/brightness\";\r\nimport { CaptionsView } from \"./captionsview\";\r\nimport { CaptionsButton } from \"./controls/captions\";\r\nimport { ScreenLockButton } from \"./screenlock\";\r\nimport { ChapterButton } from \"./controls/chapter\";\r\nimport { CastButton } from \"./controls/cast\";\r\nimport { AirPlayButton } from \"./controls/airplay\";\r\nimport { PiPPlaceholder } from \"./holders/pipplaceholder\";\r\nimport { CastPlaceholder } from \"./holders/castplaceholder\";\r\nimport { AirPlayPlaceholder } from \"./holders/airplayplaceholder\";\r\n\r\nfor (const Comp of [\r\n // Random Order\r\n RangeInput,\r\n Buffer,\r\n Meta,\r\n BigNextButton,\r\n BigPlayPauseButton,\r\n BigPrevButton,\r\n PrevButton,\r\n PlayPauseButton,\r\n NextButton,\r\n Forward10Button,\r\n Backward10Button,\r\n TimeButton,\r\n DurationButton,\r\n TimeAndDurationButton,\r\n SettingsButton,\r\n ObjectFitButton,\r\n PictureInPictureButton,\r\n TheaterButton,\r\n CaptureButton,\r\n FullscreenButton,\r\n FullscreenLockButton,\r\n FullscreenOrientationButton,\r\n RemoveMiniplayerButton,\r\n ExpandMiniplayerButton,\r\n Timeline,\r\n VolumeControl,\r\n BrightnessControl,\r\n CaptionsView,\r\n CaptionsButton,\r\n ScreenLockButton,\r\n ChapterButton,\r\n CastButton,\r\n AirPlayButton,\r\n PiPPlaceholder,\r\n CastPlaceholder,\r\n AirPlayPlaceholder,\r\n])\r\n ComponentRegistry.register(Comp);\r\n"],"mappings":"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","names":["import_sia_reactor","import_utils","import_utils","import_sia_reactor","import_utils","formatKeyForDisplay","import_sia_reactor","import_utils","import_sia_reactor","import_sia_reactor","setTimeout2","Buffer","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","import_modules","formatKeyForDisplay","import_modules","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","m","base","win","import_utils","import_modules","setTimeout2","setTimeout2","formatKeyForDisplay","setTimeout2","formatKeyForDisplay","setTimeout2","flush","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","formatKeyForDisplay","Buffer"]}