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,3212 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+
6
+ // src/ts/consts/config.ts
7
+ var import_sia_reactor = require("sia-reactor");
8
+
9
+ // src/ts/consts/actions.ts
10
+ var ACTIONS_BUILD = {
11
+ // --- Keyboard-only actions (no default voice triggers; path router covers voice) ---
12
+ playPause: { label: "Play / Pause" },
13
+ skipFwd: { label: "Skip Forward", notify: "fwd" },
14
+ skipBwd: { label: "Skip Back", notify: "bwd" },
15
+ volumeUp: { label: "Volume Up", notify: "volumeup" },
16
+ volumeDown: { label: "Volume Down", notify: "volumedown" },
17
+ brightnessUp: { label: "Brightness Up", notify: "brightnessup" },
18
+ brightnessDown: { label: "Brightness Down", notify: "brightnessdown" },
19
+ playbackRateUp: { label: "Playback Rate Up", notify: "playbackrateup" },
20
+ playbackRateDown: { label: "Playback Rate Down", notify: "playbackratedown" },
21
+ stepFwd: { label: "Step Forward", notify: "fwd" },
22
+ stepBwd: { label: "Step Back", notify: "bwd" },
23
+ prev: { label: "Previous", notify: "mediaprev" },
24
+ next: { label: "Next", notify: "medianext" },
25
+ captions: { label: "Captions", notify: "captions" },
26
+ captionsFontSizeUp: { label: "Captions: Font Size Up" },
27
+ captionsFontSizeDown: { label: "Captions: Font Size Down" },
28
+ captionsFontFamily: { label: "Captions: Font Family" },
29
+ captionsFontWeight: { label: "Captions: Font Weight" },
30
+ captionsFontVariant: { label: "Captions: Font Variant" },
31
+ captionsFontOpacity: { label: "Captions: Font Opacity" },
32
+ captionsBackgroundOpacity: { label: "Captions: Background Opacity" },
33
+ captionsWindowOpacity: { label: "Captions: Window Opacity" },
34
+ captionsCharacterEdgeStyle: { label: "Captions: Character Edge" },
35
+ captionsTextAlignment: { label: "Captions: Text Alignment" },
36
+ objectFit: { label: "Object Fit" },
37
+ capture: { label: "Capture Frame", notify: "capture" },
38
+ cast: { label: "Cast", notify: "cast" },
39
+ airplay: { label: "AirPlay", notify: "airplay" },
40
+ dark: { label: "Dark Mode" },
41
+ settings: { label: "Settings", zen: true },
42
+ // --- Logic-expressible actions (logic[] + keyboard, no default voice triggers) ---
43
+ mute: { label: "Mute", notify: "volumemuted" },
44
+ fullscreen: { label: "Fullscreen", notify: "fullscreen", logic: [{ path: "media.intent.fullscreen", op: "toggle" }] },
45
+ theater: { label: "Theater", notify: "theater", logic: [{ path: "media.intent.theater", op: "toggle" }] },
46
+ pictureInPicture: { label: "Picture in Picture", notify: "pictureinpicture", logic: [{ path: "media.intent.pictureInPicture", op: "toggle" }] },
47
+ timeFormat: { label: "Time Format" },
48
+ timeMode: { label: "Time Mode" },
49
+ // --- Compound (voice|time)-only actions (voice engine meta, path router can't reach these) ---
50
+ timeTravelUndo: { label: "Time Travel: Undo", zen: true },
51
+ timeTravelRedo: { label: "Time Travel: Redo", zen: true },
52
+ voiceQuit: { label: "Voice: Quit", zen: true },
53
+ voiceSleep: { label: "Voice: Sleep", zen: true },
54
+ voiceSubmit: { label: "Voice: Submit", zen: true },
55
+ voiceHistoryFirst: { label: "Voice: Go to Root", zen: true },
56
+ voiceHistoryPrev: { label: "Voice: Go Back", zen: true },
57
+ voiceHistoryNext: { label: "Voice: Go Forward", zen: true },
58
+ voiceHistoryLast: { label: "Voice: Go to Leaf", zen: true },
59
+ voiceHistoryClear: { label: "Voice: Clear History", zen: true },
60
+ voiceToggleOn: { label: "Voice: Toggle On", zen: true },
61
+ voiceToggleOff: { label: "Voice: Toggle Off", zen: true }
62
+ };
63
+
64
+ // src/ts/consts/config.ts
65
+ var CONFIG_BUILD = {
66
+ mediaType: "video",
67
+ mediaPlayer: "TMG",
68
+ media: { intent: { playsInline: true, textVisible: true, brightness: 100 } },
69
+ actions: Object.fromEntries(Object.entries(ACTIONS_BUILD).map(([k, v]) => [k, { id: k, ...v }])),
70
+ logicPathBlacklist: ["media.state", "media.status", "media.tech", "media.features", "media.type", "media.element", "media.pseudoElement", "media.container", "media.pseudoContainer"],
71
+ settings: {
72
+ // techOrder: [
73
+ // "youtube", // 1. Black-box (Regex must catch these URLs instantly)
74
+ // "vimeo", // 2. Black-box (Regex must catch these URLs instantly)
75
+ // "shaka", // 3. THE APEX PREDATOR (Catches .mpd and .m3u8 first)
76
+ // "hls", // 4. Fallback (Catches .m3u8 ONLY if Shaka is disabled/fails)
77
+ // "dash", // 5. Fallback (Catches .mpd ONLY if Shaka is disabled/fails)
78
+ // "html5", // 6. The Native Floor (Catches raw .mp4, .webm, .mp3, etc.)
79
+ // ],
80
+ },
81
+ debug: true,
82
+ devMode: import_sia_reactor.CTX.isDevEnv,
83
+ noPlugList: []
84
+ // dev: "settings.persist"
85
+ };
86
+
87
+ // src/ts/core/registries.ts
88
+ var import_utils = require("sia-reactor/utils");
89
+ var BaseRegistry = class {
90
+ constructor() {
91
+ __publicField(this, "items", []);
92
+ }
93
+ register(name, value, config) {
94
+ return this.unregister(name), this.items.push({ name, value, config }), this;
95
+ }
96
+ unregister(name, idx = this.items.findIndex((i) => i.name === name)) {
97
+ return idx !== -1 && this.items.splice(idx, 1), this;
98
+ }
99
+ get(name) {
100
+ return this.items.find((i) => i.name === name)?.value;
101
+ }
102
+ getAll(order) {
103
+ if (!order) return this.items.map((i) => i.value);
104
+ 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);
105
+ }
106
+ clear() {
107
+ return this.items = [], this;
108
+ }
109
+ };
110
+ var OrderedRegistry = class extends BaseRegistry {
111
+ registerFirst(name, value, config) {
112
+ return this.unregister(name), this.items.unshift({ name, value, config }), this;
113
+ }
114
+ registerBefore(key, name, value, config) {
115
+ this.unregister(name);
116
+ const idx = this.items.findIndex((i) => i.name === key);
117
+ return idx !== -1 ? (this.items.splice(idx, 0, { name, value, config }), this) : this.register(name, value, config);
118
+ }
119
+ registerAfter(key, name, value, config) {
120
+ this.unregister(name);
121
+ const idx = this.items.findIndex((i) => i.name === key);
122
+ return idx !== -1 ? (this.items.splice(idx + 1, 0, { name, value, config }), this) : this.register(name, value, config);
123
+ }
124
+ };
125
+ var _TechRegistry = class _TechRegistry extends OrderedRegistry {
126
+ static get(name) {
127
+ return this.instance.get(name);
128
+ }
129
+ static register(Tech) {
130
+ this.instance.register(Tech.techName, Tech);
131
+ }
132
+ static unregister(name) {
133
+ this.instance.unregister(name);
134
+ }
135
+ static registerBefore(key, Tech) {
136
+ this.instance.registerBefore(key, Tech.techName, Tech);
137
+ }
138
+ static registerAfter(key, Tech) {
139
+ this.instance.registerAfter(key, Tech.techName, Tech);
140
+ }
141
+ static pick(src, techOrder) {
142
+ return this.instance.getAll(techOrder).find((Tech) => Tech.canPlaySource(src)) || null;
143
+ }
144
+ };
145
+ __publicField(_TechRegistry, "instance", new _TechRegistry());
146
+ var TechRegistry = _TechRegistry;
147
+ var _PlugRegistry = class _PlugRegistry extends OrderedRegistry {
148
+ static get(name) {
149
+ return this.instance.get(name);
150
+ }
151
+ static register(Plug, editBuild = Plug.BUILD !== void 0) {
152
+ this.instance.register(Plug.fullName, Plug);
153
+ editBuild && (0, import_utils.setPath)(CONFIG_BUILD, Plug.fullName, Plug.BUILD);
154
+ }
155
+ static unregister(fullName, editBuild = true) {
156
+ this.instance.unregister(fullName);
157
+ editBuild && (0, import_utils.deletePath)(CONFIG_BUILD, fullName);
158
+ }
159
+ static registerBefore(key, Plug) {
160
+ this.instance.registerBefore(key, Plug.fullName, Plug);
161
+ }
162
+ static registerAfter(key, Plug) {
163
+ this.instance.registerAfter(key, Plug.fullName, Plug);
164
+ }
165
+ static getOrdered() {
166
+ return this.instance.getAll();
167
+ }
168
+ };
169
+ __publicField(_PlugRegistry, "instance", new _PlugRegistry());
170
+ var PlugRegistry = _PlugRegistry;
171
+ var _PinRegistry = class _PinRegistry extends BaseRegistry {
172
+ static get(name) {
173
+ return this.instance.get(name);
174
+ }
175
+ static register(Pin, editBuild = Pin.BUILD !== void 0) {
176
+ this.instance.register(Pin.fullName, Pin);
177
+ editBuild && (0, import_utils.setPath)(CONFIG_BUILD, Pin.Plug.fullName + "." + Pin.pinName, Pin.BUILD);
178
+ }
179
+ static unregister(fullName, editBuild = true) {
180
+ this.instance.unregister(fullName);
181
+ editBuild && (0, import_utils.deletePath)(fullName.slice(0, fullName.indexOf(".")) in CONFIG_BUILD ? CONFIG_BUILD : CONFIG_BUILD.settings, fullName);
182
+ }
183
+ };
184
+ __publicField(_PinRegistry, "instance", new _PinRegistry());
185
+ var PinRegistry = _PinRegistry;
186
+ var _MenuRegistry = class _MenuRegistry extends BaseRegistry {
187
+ static get(name) {
188
+ return this.instance.get(name);
189
+ }
190
+ static register(name, factory) {
191
+ this.instance.register(name, factory);
192
+ }
193
+ static unregister(name) {
194
+ this.instance.unregister(name);
195
+ }
196
+ };
197
+ __publicField(_MenuRegistry, "instance", new _MenuRegistry());
198
+ var MenuRegistry = _MenuRegistry;
199
+ var _ComponentRegistry = class _ComponentRegistry extends BaseRegistry {
200
+ static get(name) {
201
+ return this.instance.get(name);
202
+ }
203
+ static register(Comp) {
204
+ this.instance.register(Comp.componentName, Comp);
205
+ }
206
+ static unregister(name) {
207
+ this.instance.unregister(name);
208
+ }
209
+ static init(name, ctlr, config = {}) {
210
+ const Comp = this.instance.get(name);
211
+ if (!Comp) return null;
212
+ const instance = new Comp(ctlr, config);
213
+ return instance.create(), instance.setup();
214
+ }
215
+ static getAll() {
216
+ return this.instance.getAll();
217
+ }
218
+ };
219
+ __publicField(_ComponentRegistry, "instance", new _ComponentRegistry());
220
+ var ComponentRegistry = _ComponentRegistry;
221
+ var _IconRegistry = class _IconRegistry extends BaseRegistry {
222
+ static get(name, raw = false, token = /\btmg-media-[^\s"']+\s*/g) {
223
+ return (raw ? this.instance.get(name)?.replace(token, "") : this.instance.get(name)) || `<svg></svg>`;
224
+ }
225
+ static register(name, svg) {
226
+ this.instance.register(name, svg);
227
+ }
228
+ static unregister(name) {
229
+ this.instance.unregister(name);
230
+ }
231
+ // Bulk register a map of icons { play: "<svg...>", pause: "<svg...>" }
232
+ static registerAll(icons) {
233
+ for (const k of Object.keys(icons)) this.instance.register(k, icons[k]);
234
+ }
235
+ };
236
+ __publicField(_IconRegistry, "instance", new _IconRegistry());
237
+ var IconRegistry = _IconRegistry;
238
+
239
+ // src/ts/plugs/main/playlist/build.ts
240
+ var PLAYLIST_ITEM_BUILD = {
241
+ media: {
242
+ intent: {
243
+ src: "",
244
+ tracks: []
245
+ },
246
+ settings: {
247
+ metadata: {
248
+ title: "",
249
+ chapterInfo: [],
250
+ links: {
251
+ title: ""
252
+ }
253
+ }
254
+ }
255
+ },
256
+ settings: {
257
+ time: {
258
+ start: 0
259
+ },
260
+ controlPanel: {
261
+ timeline: {
262
+ previews: false,
263
+ marks: []
264
+ }
265
+ }
266
+ }
267
+ };
268
+
269
+ // src/ts/plugs/menus/main/playlist.ts
270
+ var import_utils2 = require("sia-reactor/utils");
271
+ var getMainPlaylistMenu = (plug) => ({
272
+ id: "playlist",
273
+ label: "Playlist",
274
+ icon: "playlist",
275
+ widget: "drag-select",
276
+ feature: "playlist",
277
+ configPaths: ["playlist", "playlist.content"],
278
+ getValue: () => plug.config.content?.[plug.state.currentIndex]?.media.settings.metadata.title || plug.media.settings.metadata.title || "Playlist",
279
+ getOptions: () => (plug.config.content?.length ? plug.config.content : [{ media: { settings: { metadata: { title: plug.media.settings.metadata.title || "Unknown" } } } }]).map((opt, i) => ({ value: String(i), display: opt.media.settings.metadata.title || "Unknown" })),
280
+ getDisabled: () => plug.config.content?.length === 0 && !plug.config.allowOverride.add,
281
+ onChange: (val) => plug.moveTo(Number(val), true),
282
+ onReorder: plug.config.allowOverride.move ? (oldIdx, newIdx) => {
283
+ const p = plug.config.content;
284
+ if (!p) return;
285
+ const [moved] = p.splice(oldIdx, 1);
286
+ p.splice(newIdx, 0, moved);
287
+ } : void 0,
288
+ onDelete: plug.config.allowOverride.delete ? plug.remove : void 0,
289
+ tipHTML: plug.config.allowOverride.move ? "You can drag to reorder items" : void 0,
290
+ actions: [...plug.config.allowOverride.move ? [{ id: "shuffle", getLabel: () => "Shuffle", icon: "shuffle", onClick: plug.shuffle }] : [], ...plug.config.allowOverride.add ? [{ id: "add", getLabel: () => "Add", icon: "add", onClick: () => plug.ctlr.plug("settings.settingsView")?.menu?.goTo("playlist-add") }] : []],
291
+ items: [
292
+ {
293
+ id: "playlist-add",
294
+ label: "Add to Playlist",
295
+ icon: "add",
296
+ widget: "input",
297
+ inputs: [
298
+ { label: "Video URL", placeholder: "https://www.youtube.com/...", type: "url", required: true, helperText: { info: "Input any media (video or audio) url" } },
299
+ { label: "Title", placeholder: "My Awesome Video", type: "text" }
300
+ ],
301
+ getValue: () => "",
302
+ onChange: (vals) => {
303
+ const firstItem = { media: { intent: { src: plug.media.state.src }, settings: { metadata: { title: plug.media.settings.metadata.title || "Unknown", chapterInfo: plug.media.settings.metadata.chapterInfo, links: { title: plug.media.settings.metadata.links.title } } } }, settings: { time: { start: plug.settings.time.start }, controlPanel: { timeline: { previews: plug.settings.controlPanel.timeline.previews, marks: [...plug.settings.controlPanel.timeline.marks || []] } } } }, newItem = { media: { intent: { src: vals["Video URL"] }, settings: { metadata: { title: vals["Title"] } } } };
304
+ plug.config.content = [...plug.config.content ?? [(0, import_utils2.mergeObjs)(PLAYLIST_ITEM_BUILD, firstItem)], (0, import_utils2.mergeObjs)(PLAYLIST_ITEM_BUILD, newItem)];
305
+ plug.ctlr.plug("settings.settingsView")?.menu?.goBack();
306
+ }
307
+ }
308
+ ]
309
+ });
310
+
311
+ // src/ts/plugs/menus/main/skeleton.ts
312
+ var getSkeletonGeneralMenu = (_ctlr) => ({
313
+ id: "general",
314
+ label: "Advanced",
315
+ icon: "settings",
316
+ widget: "group",
317
+ getValue: () => "",
318
+ items: []
319
+ });
320
+
321
+ // src/ts/plugs/menus/settings/ambience.ts
322
+ var getSettingsAmbienceMenu = (plug) => ({
323
+ id: "ambience",
324
+ label: "Ambience",
325
+ icon: "ambience",
326
+ widget: "toggle",
327
+ getValue: () => plug.config.active ? "On" : "Off",
328
+ onChange: (val) => plug.config.active = val,
329
+ configPaths: ["settings.ambience.active"]
330
+ });
331
+
332
+ // ../t007-tools/packages/utils/dist/chunk-ZALPHCSJ.js
333
+ var import_utils3 = require("sia-reactor/utils");
334
+ var import_utils4 = require("sia-reactor/utils");
335
+ var import_sia_reactor2 = require("sia-reactor");
336
+ var import_sia_reactor3 = require("sia-reactor");
337
+ var import_utils5 = require("sia-reactor/utils");
338
+ var import_utils6 = require("sia-reactor/utils");
339
+ var import_utils7 = require("sia-reactor/utils");
340
+ var import_utils8 = require("sia-reactor/utils");
341
+ var import_utils9 = require("sia-reactor/utils");
342
+ var VIRTUAL_RESOURCE = /* @__PURE__ */ Symbol.for("T007_VIRTUAL_RESOURCE");
343
+ function isBool(val) {
344
+ return "boolean" === typeof val;
345
+ }
346
+ function isNum(val) {
347
+ return "number" === typeof val;
348
+ }
349
+ function isStr(val) {
350
+ return "string" === typeof val;
351
+ }
352
+ function isArr(obj) {
353
+ return Array.isArray(obj);
354
+ }
355
+ function isFunc(val) {
356
+ return "function" === typeof val;
357
+ }
358
+ function capitalize(word = "") {
359
+ return word.replace(/^(\s*)([a-z])/i, (_, s, l) => s + l.toUpperCase());
360
+ }
361
+ function camelize(str = "", { source } = /[\s_-]+/, { preserveInnerCase: pIC = true, upperFirst: uF = false } = {}) {
362
+ return (pIC ? str : str.toLowerCase()).replace(new RegExp(source + "(\\w)", "g"), (_, c) => c.toUpperCase()).replace(/^\w/, (c) => c[uF ? "toUpperCase" : "toLowerCase"]());
363
+ }
364
+ function uncamelize(str, separator = " ") {
365
+ return str.replace(/([a-z])([A-Z])/g, `$1${separator}$2`).toLowerCase();
366
+ }
367
+ if ("undefined" !== typeof window) {
368
+ (window.t007 ?? (window.t007 = {})).VIRTUAL_RESOURCE = VIRTUAL_RESOURCE;
369
+ window.T007_TOAST_JS_SRC ?? (window.T007_TOAST_JS_SRC = `https://cdn.jsdelivr.net/npm/@t007/toast@latest`);
370
+ window.T007_INPUT_JS_SRC ?? (window.T007_INPUT_JS_SRC = `https://cdn.jsdelivr.net/npm/@t007/input@latest`);
371
+ window.T007_DIALOG_JS_SRC ?? (window.T007_DIALOG_JS_SRC = `https://cdn.jsdelivr.net/npm/@t007/dialog@latest`);
372
+ window.T007_TOAST_CSS_SRC ?? (window.T007_TOAST_CSS_SRC = `https://cdn.jsdelivr.net/npm/@t007/toast@latest/dist/index.min.css`);
373
+ window.T007_INPUT_CSS_SRC ?? (window.T007_INPUT_CSS_SRC = `https://cdn.jsdelivr.net/npm/@t007/input@latest/dist/index.min.css`);
374
+ window.T007_DIALOG_CSS_SRC ?? (window.T007_DIALOG_CSS_SRC = `https://cdn.jsdelivr.net/npm/@t007/dialog@latest/dist/index.min.css`);
375
+ }
376
+
377
+ // src/ts/utils/obj.ts
378
+ var import_utils11 = require("sia-reactor/utils");
379
+ function isUISetting(obj) {
380
+ return (0, import_utils5.isObj)(obj) && "options" in obj && isArr(obj.options);
381
+ }
382
+ function isUIOption(opt) {
383
+ return (0, import_utils5.isObj)(opt) && "value" in opt;
384
+ }
385
+ function getBoolOrStr(value) {
386
+ return value === "true" ? true : value === "false" ? false : value;
387
+ }
388
+ function getUIOpt(opts, value, key = "display") {
389
+ if (opts)
390
+ for (const opt of opts) {
391
+ const p = parseUIOpt(opt);
392
+ if (p.value == value) return p[key];
393
+ }
394
+ return String(value);
395
+ }
396
+ function getUniqueOpts(options) {
397
+ const counts = {};
398
+ options.forEach((opt) => counts[opt.display] = (counts[opt.display] || 0) + 1);
399
+ const seen = {};
400
+ for (let i = options.length - 1; i >= 0; i--) {
401
+ const opt = options[i];
402
+ if (counts[opt.display] > 1) {
403
+ seen[opt.display] = (seen[opt.display] || 0) + 1;
404
+ const num = counts[opt.display] - seen[opt.display] + 1;
405
+ opt.display = `${opt.display} (${num})`;
406
+ }
407
+ }
408
+ return options;
409
+ }
410
+ function parseUIOpt(opt) {
411
+ return isUIOption(opt) ? { value: opt.value, display: String(opt.display ?? opt.value), infoText: opt.infoText } : { value: opt, display: String(opt) };
412
+ }
413
+ function parseUIObj(obj) {
414
+ const result = {}, keys = Object.keys(obj);
415
+ for (let i = 0; i < keys.length; i++) {
416
+ const entry = obj[keys[i]];
417
+ if (!(0, import_utils5.isObj)(entry)) continue;
418
+ if (isUISetting(entry))
419
+ result[keys[i]] = {
420
+ values: entry.options.map((opt) => parseUIOpt(opt).value),
421
+ displays: entry.options.map((opt) => parseUIOpt(opt).display)
422
+ };
423
+ else result[keys[i]] = parseUIObj(entry);
424
+ }
425
+ return result;
426
+ }
427
+ function parsePanelBottomObj(obj = [], arr = false) {
428
+ if (!(0, import_utils5.isObj)(obj) && !isArr(obj)) return false;
429
+ const [third = [], second = [], first = []] = (0, import_utils5.isObj)(obj) ? Object.values(obj).reverse() : isArr(obj[0]) ? [...obj].reverse() : [obj];
430
+ return arr ? [...third, ...second, ...first] : { 1: first, 2: second, 3: third };
431
+ }
432
+ function getPanelSplitCtrls(row) {
433
+ if (!row?.length) return { left: [], center: [], right: [] };
434
+ const s1 = row.indexOf("spacer"), s2 = row.indexOf("spacer", s1 + 1);
435
+ 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) };
436
+ }
437
+ function getPanelLocation(b, id) {
438
+ 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" };
439
+ if (isArr(b.center) && b.center.includes(id)) return { path: "center", row: b.center, zone: "zone" };
440
+ if (b.bottom) {
441
+ const dB = parsePanelBottomObj(b.bottom);
442
+ if (dB) {
443
+ for (const k in dB) if (dB[k]?.includes(id)) return { path: `bottom.${k}`, row: dB[k], zone: getPanelSplitCtrls(dB[k]).left.includes(id) ? "left" : getPanelSplitCtrls(dB[k]).center.includes(id) ? "center" : "right" };
444
+ }
445
+ }
446
+ return { path: "bottom.1", row: [], zone: "left" };
447
+ }
448
+ function insertPanelCtrl(current, defaults, id) {
449
+ let s = 0;
450
+ for (let i = 0; i < defaults.indexOf(id); i++) if (defaults[i] === "spacer") s++;
451
+ for (let i = defaults.indexOf(id) + 1; i < defaults.length; i++)
452
+ if (defaults[i] === "spacer") {
453
+ let c = 0;
454
+ for (let j = 0; j < current.length; j++) if (current[j] === "spacer" && ++c === s + 1) return void current.splice(j, 0, id);
455
+ } else {
456
+ const idx = current.indexOf(defaults[i]);
457
+ if (idx !== -1) return void current.splice(idx, 0, id);
458
+ }
459
+ current.push(id);
460
+ }
461
+
462
+ // src/ts/plugs/menus/settings/auto.ts
463
+ var getSettingsAutoMenu = (plug) => ({
464
+ id: "autoplay",
465
+ label: "Autoplay",
466
+ icon: "autoplay",
467
+ widget: "group",
468
+ getValue: () => getUIOpt(plug.config.play.options, plug.config.play.value),
469
+ tipHTML: "Configure automatic playback settings and transitions",
470
+ configPaths: ["settings.auto.play.value"],
471
+ items: [
472
+ {
473
+ id: "autoPlay",
474
+ label: "Autoplay",
475
+ widget: "select",
476
+ getValue: () => getUIOpt(plug.config.play.options, plug.config.play.value),
477
+ getOptions: () => plug.config.play.options,
478
+ onChange: (val) => plug.config.play.value = getBoolOrStr(val),
479
+ configPaths: ["settings.auto.play.value"],
480
+ tipHTML: "Automatically start playback when the player enters or leaves the viewport based on the selected option"
481
+ },
482
+ {
483
+ id: "autoPause",
484
+ label: "Auto-pause",
485
+ widget: "select",
486
+ getValue: () => getUIOpt(plug.config.pause.options, plug.config.pause.value),
487
+ getOptions: () => plug.config.pause.options,
488
+ onChange: (val) => plug.config.pause.value = getBoolOrStr(val),
489
+ configPaths: ["settings.auto.pause.value"],
490
+ tipHTML: "Automatically pause playback when the player enters or leaves the viewport based on the selected option"
491
+ },
492
+ {
493
+ id: "autoNext",
494
+ label: "Auto-next",
495
+ widget: "group",
496
+ getValue: () => plug.config.next.value === -1 ? "Off" : `${plug.config.next.value}ms`,
497
+ configPaths: ["settings.auto.next.value"],
498
+ items: [
499
+ {
500
+ id: "autoNextTime",
501
+ label: "Countdown Time",
502
+ widget: "input",
503
+ inputs: [{ label: "ms", placeholder: "20000", helperText: { info: "Time in ms to wait before automatically playing the next item in the playlist. Set to -1 to disable." }, type: "number", min: "-1", value: () => plug.config.next.value }],
504
+ getValue: () => plug.config.next.value === -1 ? "Off" : `${plug.config.next.value}ms`,
505
+ onChange: (val) => plug.config.next.value = val["ms"],
506
+ configPaths: ["settings.auto.next.value"]
507
+ },
508
+ {
509
+ id: "autoNextPreview",
510
+ label: "Preview",
511
+ widget: "group",
512
+ getValue: () => "",
513
+ items: [
514
+ {
515
+ id: "autoNextPreviewUsePoster",
516
+ label: "Use poster",
517
+ widget: "toggle",
518
+ getValue: () => plug.config.next.preview.usePoster ? "On" : "Off",
519
+ onChange: (val) => plug.config.next.preview.usePoster = val,
520
+ configPaths: ["settings.auto.next.preview.usePoster"],
521
+ tipHTML: "Display the next video's poster during the countdown."
522
+ },
523
+ {
524
+ id: "autoNextPreviewTease",
525
+ label: "Tease video",
526
+ widget: "toggle",
527
+ getValue: () => plug.config.next.preview.tease ? "On" : "Off",
528
+ onChange: (val) => plug.config.next.preview.tease = val,
529
+ configPaths: ["settings.auto.next.preview.tease"],
530
+ tipHTML: "Play a short silent preview of the next when no poster is present."
531
+ },
532
+ {
533
+ id: "autoNextPreviewTime",
534
+ label: "Preview Time",
535
+ widget: "input",
536
+ inputs: [{ label: "ms", placeholder: "4000", helperText: { info: "The poster fallback preview time in ms in the next video, where the tease ends." }, type: "number", min: "0", value: () => plug.config.next.preview.time * 1e3 }],
537
+ getValue: () => `${plug.config.next.preview.time * 1e3}ms`,
538
+ onChange: (val) => plug.config.next.preview.time = val["ms"] / 1e3,
539
+ configPaths: ["settings.auto.next.preview.time"]
540
+ }
541
+ ]
542
+ }
543
+ ]
544
+ }
545
+ ]
546
+ });
547
+
548
+ // src/ts/plugs/menus/settings/brightness.ts
549
+ var import_utils14 = require("sia-reactor/utils");
550
+ var getSettingsBrightnessMenu = (plug) => ({
551
+ id: "limits",
552
+ label: "Limits",
553
+ icon: "configure",
554
+ widget: "group",
555
+ getValue: () => "",
556
+ items: [
557
+ {
558
+ id: "brightnessLimits",
559
+ label: "Brightness",
560
+ widget: "limits",
561
+ configPaths: ["settings.brightness.min", "settings.brightness.max", "settings.brightness.skip"],
562
+ getValue: () => "",
563
+ getLimits: () => [{ name: "brightness", label: "Clamp bounds", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],
564
+ onChange: (val) => (0, import_utils14.fanout)(plug.config, { min: val.brightness_min, max: val.brightness_max, skip: val.brightness_step }, { skipUndefined: true })
565
+ }
566
+ ]
567
+ });
568
+
569
+ // src/ts/plugs/settings/captions/build.ts
570
+ var STYLE_PATHS = ["captions.font.family.value", "captions.font.size.value", "captions.font.color.value", "captions.font.opacity.value", "captions.font.weight.value", "captions.font.variant.value", "captions.background.color.value", "captions.background.opacity.value", "captions.window.color.value", "captions.window.opacity.value", "captions.characterEdgeStyle.value", "captions.textAlignment.value"];
571
+ var CAPTIONS_BUILD = {
572
+ multiple: false,
573
+ allowOverride: true,
574
+ font: {
575
+ family: {
576
+ value: "",
577
+ options: [
578
+ { value: "", display: "Default" },
579
+ { value: "monospace", display: "Monospace" },
580
+ { value: "sans-serif", display: "Sans Serif" },
581
+ { value: "serif", display: "Serif" },
582
+ { value: "cursive", display: "Cursive" },
583
+ { value: "fantasy", display: "Fantasy" },
584
+ { value: "system-ui", display: "System UI" },
585
+ { value: "arial", display: "Arial" },
586
+ { value: "verdana", display: "Verdana" },
587
+ { value: "tahoma", display: "Tahoma" },
588
+ { value: "times new roman", display: "Times New Roman" },
589
+ { value: "georgia", display: "Georgia" },
590
+ { value: "impact", display: "Impact" },
591
+ { value: "comic sans ms", display: "Comic Sans MS" }
592
+ ]
593
+ },
594
+ size: {
595
+ min: 100,
596
+ max: 400,
597
+ value: 100,
598
+ skip: 100,
599
+ options: [
600
+ { value: 25, display: "25%" },
601
+ { value: 50, display: "50%" },
602
+ { value: 75, display: "75%" },
603
+ { value: 100, display: "100%" },
604
+ { value: 150, display: "150%" },
605
+ { value: 200, display: "200%" },
606
+ { value: 300, display: "300%" },
607
+ { value: 400, display: "400%" }
608
+ ]
609
+ },
610
+ color: {
611
+ value: "#ffffff",
612
+ options: [
613
+ { value: "#ffffff", display: "White" },
614
+ { value: "#ffff00", display: "Yellow" },
615
+ { value: "#00ff00", display: "Green" },
616
+ { value: "#00ffff", display: "Cyan" },
617
+ { value: "#0000ff", display: "Blue" },
618
+ { value: "#ff00ff", display: "Magenta" },
619
+ { value: "#ff0000", display: "Red" },
620
+ { value: "#000000", display: "Black" }
621
+ ]
622
+ },
623
+ opacity: {
624
+ value: 100,
625
+ options: [
626
+ { value: 25, display: "25%" },
627
+ { value: 50, display: "50%" },
628
+ { value: 75, display: "75%" },
629
+ { value: 100, display: "100%" }
630
+ ]
631
+ },
632
+ weight: {
633
+ value: "400",
634
+ options: [
635
+ { value: "100", display: "Thin" },
636
+ { value: "200", display: "Extra Light" },
637
+ { value: "300", display: "Light" },
638
+ { value: "400", display: "Normal" },
639
+ { value: "500", display: "Medium" },
640
+ { value: "600", display: "Semi Bold" },
641
+ { value: "700", display: "Bold" },
642
+ { value: "800", display: "Extra Bold" },
643
+ { value: "900", display: "Black" }
644
+ ]
645
+ },
646
+ variant: {
647
+ value: "normal",
648
+ options: [
649
+ { value: "normal", display: "Normal" },
650
+ { value: "small-caps", display: "Small Caps" },
651
+ { value: "all-small-caps", display: "All Small Caps" }
652
+ ]
653
+ }
654
+ },
655
+ background: {
656
+ color: {
657
+ value: "#000000",
658
+ options: [
659
+ { value: "#ffffff", display: "White" },
660
+ { value: "#ffff00", display: "Yellow" },
661
+ { value: "#00ff00", display: "Green" },
662
+ { value: "#00ffff", display: "Cyan" },
663
+ { value: "#0000ff", display: "Blue" },
664
+ { value: "#ff00ff", display: "Magenta" },
665
+ { value: "#ff0000", display: "Red" },
666
+ { value: "#000000", display: "Black" }
667
+ ]
668
+ },
669
+ opacity: {
670
+ value: 75,
671
+ options: [
672
+ { value: 0, display: "0%" },
673
+ { value: 25, display: "25%" },
674
+ { value: 50, display: "50%" },
675
+ { value: 75, display: "75%" },
676
+ { value: 100, display: "100%" }
677
+ ]
678
+ }
679
+ },
680
+ window: {
681
+ color: {
682
+ value: "#000000",
683
+ options: [
684
+ { value: "#ffffff", display: "White" },
685
+ { value: "#ffff00", display: "Yellow" },
686
+ { value: "#00ff00", display: "Green" },
687
+ { value: "#00ffff", display: "Cyan" },
688
+ { value: "#0000ff", display: "Blue" },
689
+ { value: "#ff00ff", display: "Magenta" },
690
+ { value: "#ff0000", display: "Red" },
691
+ { value: "#000000", display: "Black" }
692
+ ]
693
+ },
694
+ opacity: {
695
+ value: 0,
696
+ options: [
697
+ { value: 0, display: "0%" },
698
+ { value: 25, display: "25%" },
699
+ { value: 50, display: "50%" },
700
+ { value: 75, display: "75%" },
701
+ { value: 100, display: "100%" }
702
+ ]
703
+ }
704
+ },
705
+ characterEdgeStyle: {
706
+ value: "none",
707
+ options: [
708
+ { value: "none", display: "None" },
709
+ { value: "drop-shadow", display: "Drop Shadow" },
710
+ { value: "raised", display: "Raised" },
711
+ { value: "depressed", display: "Depressed" },
712
+ { value: "outline", display: "Outline" }
713
+ ]
714
+ },
715
+ textAlignment: {
716
+ value: "left",
717
+ options: [
718
+ { value: "left", display: "Left" },
719
+ { value: "center", display: "Center" },
720
+ { value: "right", display: "Right" }
721
+ ]
722
+ },
723
+ previewTimeout: 1500
724
+ };
725
+
726
+ // src/ts/plugs/menus/settings/captions.ts
727
+ var import_utils15 = require("sia-reactor/utils");
728
+ var getSettingsCaptionsMenu = (plug) => [
729
+ {
730
+ id: "captions",
731
+ label: "Captions",
732
+ icon: "captions",
733
+ widget: "group",
734
+ mediaPaths: ["state.currentTextTrack", "status.textTracks"],
735
+ configPaths: ["settings.captions.multiple"],
736
+ onWire: (syncUI, signal) => plug.state.watch("secondaryTracks", syncUI, { signal }),
737
+ getValue() {
738
+ const isMulti = plug.config.multiple, list = plug.media.status.textTracks;
739
+ if (!isMulti) return plug.media.state.currentTextTrack === -1 ? "Off" : list[plug.media.state.currentTextTrack]?.label || list[plug.media.state.currentTextTrack]?.language || `Track ${plug.media.state.currentTextTrack + 1}`;
740
+ if (plug.media.state.currentTextTrack === -1) return plug.state.secondaryTracks.length ? `Off +${plug.state.secondaryTracks.length}` : "Off";
741
+ const track = list[plug.media.state.currentTextTrack], primLabel = track?.label || track?.language || `Track ${plug.media.state.currentTextTrack + 1}`;
742
+ return plug.state.secondaryTracks.length ? `${primLabel} +${plug.state.secondaryTracks.length}` : primLabel;
743
+ },
744
+ actions: [
745
+ {
746
+ id: "goToStyles",
747
+ getLabel: () => "Styles",
748
+ onClick: () => plug.ctlr.plug("settings.settingsView")?.menu.goTo("subtitleStyle")
749
+ }
750
+ ],
751
+ items: [
752
+ {
753
+ id: "captionsList",
754
+ label: "Tracks",
755
+ widget: "select",
756
+ inline: true,
757
+ getMultiple: () => plug.config.multiple,
758
+ getValue() {
759
+ const isMulti = plug.config.multiple, list = plug.media.status.textTracks;
760
+ if (!isMulti) return plug.media.state.currentTextTrack === -1 ? "Off" : list[plug.media.state.currentTextTrack]?.label || list[plug.media.state.currentTextTrack]?.language || `Track ${plug.media.state.currentTextTrack + 1}`;
761
+ if (plug.media.state.currentTextTrack === -1 && !plug.state.secondaryTracks.length) return ["Off"];
762
+ const vals = [];
763
+ if (plug.media.state.currentTextTrack > -1) vals.push(list[plug.media.state.currentTextTrack]?.label || list[plug.media.state.currentTextTrack]?.language || `Track ${plug.media.state.currentTextTrack + 1}`);
764
+ plug.state.secondaryTracks.forEach((idx) => {
765
+ const tr = list[idx];
766
+ if (tr) vals.push(tr.label || tr.language || `Track ${idx + 1}`);
767
+ });
768
+ return vals.length ? vals : ["Off"];
769
+ },
770
+ getOptions() {
771
+ const list = plug.media.status.textTracks;
772
+ const opts = !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));
773
+ if (opts.length) opts.unshift({ value: -1, display: "Off" });
774
+ return opts.length ? opts : [{ value: -1, display: "Off" }];
775
+ },
776
+ onChange: (val) => {
777
+ if (val === -1) {
778
+ plug.media.intent.textVisible = false;
779
+ plug.media.intent.currentTextTrack = -1;
780
+ plug.state.secondaryTracks = [];
781
+ } else {
782
+ plug.media.intent.textVisible = true;
783
+ if (plug.config.multiple) {
784
+ const idx = plug.state.secondaryTracks.indexOf(val);
785
+ if (idx > -1) {
786
+ const arr = [...plug.state.secondaryTracks];
787
+ arr.splice(idx, 1);
788
+ plug.state.secondaryTracks = arr;
789
+ } else if (val !== plug.media.state.currentTextTrack) plug.state.secondaryTracks = [...plug.state.secondaryTracks, val];
790
+ } else {
791
+ plug.media.intent.currentTextTrack = val;
792
+ plug.state.secondaryTracks = [];
793
+ }
794
+ }
795
+ },
796
+ mediaPaths: ["status.textTracks", "state.currentTextTrack"]
797
+ },
798
+ {
799
+ id: "captionsMulti",
800
+ label: "Multiple Captions",
801
+ widget: "toggle",
802
+ inline: true,
803
+ feature: "multipleCaptions",
804
+ getValue: () => plug.config.multiple ? "On" : "Off",
805
+ onChange: (val) => {
806
+ plug.config.multiple = val;
807
+ if (!val) plug.state.secondaryTracks = [];
808
+ plug.ctlr.plug("settings.settingsView")?.menu.syncUI();
809
+ }
810
+ },
811
+ {
812
+ id: "subtitleStyle",
813
+ label: "Styles",
814
+ widget: "group",
815
+ hidden: true,
816
+ // Hide from rows list but still accessible via actions
817
+ getValue: () => "",
818
+ configPaths: STYLE_PATHS.map((p) => `settings.${p}`),
819
+ items: [
820
+ ...STYLE_PATHS.map((p) => {
821
+ const id = camelize(p.replace(".value", ""), /\./), pathParts = p.replace("captions.", "").replace(".value", ""), getCurr = () => (0, import_utils15.getPath)(plug.config, pathParts), parsed = (0, import_utils15.getPath)(parseUIObj(plug.config), pathParts), hasNum = !!parsed?.values?.length && parsed.values.every((v) => !isBool(v) && !isNaN(Number(v))), isColor = !hasNum && parsed?.values?.some((v) => String(v).startsWith("#")), actMin = hasNum ? Math.min(...parsed.values.map(Number)) : 0, actMax = hasNum ? Math.max(...parsed.values.map(Number)) : 100, configPaths = ["settings." + p];
822
+ return {
823
+ id,
824
+ label: uncamelize(pathParts.replace(/\./g, " ")).split(" ").map(capitalize).join(" "),
825
+ widget: hasNum ? "group" : isColor ? "color" : "select",
826
+ getValue: (curr = getCurr()) => getUIOpt(curr.options, curr.value),
827
+ getOptions: (curr = getCurr()) => curr.options,
828
+ onChange: (val, curr = getCurr()) => curr.value = val,
829
+ tipHTML: () => {
830
+ if (p.includes("font.variant")) return "Apply variants like small capitals to the text";
831
+ if (p.includes("window.color")) return "Change the background color of the entire caption bounding box (differs from text background)";
832
+ if (p.includes("window.opacity")) return "Adjust how transparent the entire caption bounding box is";
833
+ if (p.includes("characterEdgeStyle")) return "Add borders or shadows to the text to make it more readable";
834
+ return void 0;
835
+ },
836
+ items: hasNum ? [
837
+ {
838
+ id: `${id}Slider`,
839
+ label: "Custom",
840
+ widget: "range",
841
+ inline: true,
842
+ getValue: (curr = getCurr()) => `${Math.round(Number(curr.value))}%`,
843
+ onChange: (val, curr = getCurr()) => curr.value = isStr(curr.value) ? String(val) : Number(val),
844
+ getRange: (curr = getCurr()) => ({ min: Math.min(curr.min ?? actMin, actMin), max: Math.max(curr.max ?? actMax, actMax), formatTooltip: (v) => Math.round(v) + "%", options: curr.options }),
845
+ configPaths
846
+ },
847
+ {
848
+ id: `${id}Select`,
849
+ label: "Presets",
850
+ widget: "select",
851
+ inline: true,
852
+ getOptions: (curr = getCurr()) => curr.options,
853
+ getValue: (curr = getCurr()) => String(curr.value),
854
+ onChange: (val, curr = getCurr()) => curr.value = isStr(curr.value) ? String(val) : Number(val),
855
+ configPaths
856
+ }
857
+ ] : void 0,
858
+ configPaths
859
+ };
860
+ }),
861
+ {
862
+ id: "resetCaptions",
863
+ label: "Reset",
864
+ widget: "button",
865
+ getValue: () => "",
866
+ onChange: () => {
867
+ plug.config.allowOverride = CAPTIONS_BUILD.allowOverride;
868
+ const cssCache = plug.media.tech.ctlr?.plug("settings.css")?._cache;
869
+ STYLE_PATHS.forEach((p, _, __, val = cssCache?.[camelize(p.replace(".value", ""), /\./)]) => (val = p.includes("opacity") && val !== void 0 ? Number(val) * 100 : val, (0, import_utils15.setPath)(plug.config, p.replace("captions.", ""), val ?? (0, import_utils15.getPath)(CAPTIONS_BUILD, p.replace("captions.", "")))));
870
+ }
871
+ },
872
+ {
873
+ id: "allowOverride",
874
+ label: "Allow media override",
875
+ widget: "toggle",
876
+ getValue: () => plug.config.allowOverride ? "On" : "Off",
877
+ onChange: (val) => plug.config.allowOverride = val,
878
+ configPaths: ["settings.captions.allowOverride"],
879
+ title: "Allow media content to override your custom caption styling with its own styling (if available)"
880
+ }
881
+ ]
882
+ }
883
+ ]
884
+ },
885
+ {
886
+ id: "limits",
887
+ label: "Limits",
888
+ icon: "configure",
889
+ widget: "group",
890
+ getValue: () => "",
891
+ items: [
892
+ {
893
+ id: "captionSizeLimits",
894
+ label: "Caption size",
895
+ widget: "limits",
896
+ configPaths: ["settings.captions.font.size.min", "settings.captions.font.size.max", "settings.captions.font.size.skip"],
897
+ getValue: () => "",
898
+ getLimits: () => [{ name: "captionSize", label: "Clamp bounds", min: plug.config.font.size.min, max: plug.config.font.size.max, step: plug.config.font.size.skip }],
899
+ onChange: (val) => (0, import_utils15.fanout)(plug.config.font.size, { min: val.captionSize_min, max: val.captionSize_max, skip: val.captionSize_step }, { skipUndefined: true })
900
+ }
901
+ ]
902
+ }
903
+ ];
904
+
905
+ // src/ts/utils/env.ts
906
+ var win = "undefined" !== typeof window ? window : void 0;
907
+ var nav = win?.navigator;
908
+ var ua = nav?.userAgent || "";
909
+ var uaData = nav?.userAgentData;
910
+ var IS_ANDROID = false;
911
+ var IS_WINDOWS = false;
912
+ var IS_FIREFOX = false;
913
+ var IS_EDGE = false;
914
+ var IS_CHROME = false;
915
+ var IS_CHROMIUM = false;
916
+ var IS_SAFARI = false;
917
+ var IS_IE = false;
918
+ var IS_TIZEN = false;
919
+ var IS_WEBOS = false;
920
+ var IS_IPOD = false;
921
+ var IS_IPAD = false;
922
+ var IS_IPHONE = false;
923
+ var IOS_VERSION = null;
924
+ var ANDROID_VERSION = null;
925
+ var CHROME_VERSION = null;
926
+ var CHROMIUM_VERSION = null;
927
+ var IE_VERSION = null;
928
+ var IS_IOS = false;
929
+ var IS_MOBILE = false;
930
+ var IS_SMART_TV = false;
931
+ var IS_CHROMECAST_RECEIVER = Boolean(win?.cast?.framework?.CastReceiverContext);
932
+ var MSE_ENABLED = Boolean(win && ("MediaSource" in win || "webkitMediaSource" in win));
933
+ var TOUCH_ENABLED = Boolean(win && ("ontouchstart" in win || nav?.maxTouchPoints || win.DocumentTouch && win.document instanceof win.DocumentTouch));
934
+ if (uaData?.platform && uaData?.brands) {
935
+ const pickVersion = (brands, needle) => brands.find((b) => b.brand === needle && b.version)?.version || null;
936
+ IS_ANDROID = uaData.platform === "Android";
937
+ IS_WINDOWS = uaData.platform === "Windows";
938
+ IS_EDGE = uaData.brands.some((b) => b.brand === "Microsoft Edge");
939
+ IS_CHROMIUM = uaData.brands.some((b) => b.brand === "Chromium" || b.brand === "Google Chrome");
940
+ IS_CHROME = IS_CHROMIUM && !IS_EDGE;
941
+ CHROMIUM_VERSION = CHROME_VERSION = pickVersion(uaData.brands, "Chromium") || pickVersion(uaData.brands, "Google Chrome");
942
+ }
943
+ if (true) {
944
+ IS_ANDROID || (IS_ANDROID = /Android/i.test(ua));
945
+ IS_WINDOWS || (IS_WINDOWS = /Windows/i.test(ua));
946
+ IS_FIREFOX = /Firefox|FxiOS/i.test(ua);
947
+ IS_EDGE || (IS_EDGE = /Edg|EdgiOS/i.test(ua));
948
+ IS_CHROMIUM || (IS_CHROMIUM = /Chrome|CriOS/i.test(ua));
949
+ IS_CHROME = IS_CHROMIUM && !IS_EDGE;
950
+ IS_SAFARI = /Safari/i.test(ua) && !IS_CHROME && !IS_FIREFOX && !IS_EDGE;
951
+ IS_IE = /MSIE|(Trident\/7.0)|(rv:11.0)/i.test(ua);
952
+ IS_TIZEN = /Tizen/i.test(ua);
953
+ IS_WEBOS = /Web0S/i.test(ua);
954
+ IS_IPOD = /iPod/i.test(ua);
955
+ IS_IPAD = /iPad/i.test(ua) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(ua);
956
+ IS_IPHONE = /iPhone/i.test(ua) && !IS_IPAD;
957
+ IOS_VERSION = ua.match(/OS (\d+)_/i)?.[1] ?? null;
958
+ ANDROID_VERSION = ua.match(/Android\s(\d+(?:\.\d+)+)/i)?.[1] ?? null;
959
+ CHROMIUM_VERSION = CHROME_VERSION = ua.match(/(?:Chrome|CriOS)\/(\d+)/)?.[1] ?? CHROMIUM_VERSION;
960
+ IE_VERSION = ua.match(/MSIE\s(\d+)\.\d/)?.[1] || (/Trident\/7.0/i.test(ua) && /rv:11.0/.test(ua) ? "11.0" : null);
961
+ }
962
+ IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;
963
+ IS_MOBILE = Boolean(IS_ANDROID || IS_IPHONE || IS_IPOD || IS_IPAD);
964
+ IS_SMART_TV = IS_TIZEN || IS_WEBOS;
965
+
966
+ // src/ts/plugs/settings/controlPanel/build.ts
967
+ var CONTROLS = ["expandminiplayer", "removeminiplayer", "meta", "timeline", "capture", "fullscreenorientation", "fullscreenlock", "backward10", "prev", "playpause", "next", "forward10", "brightness", "volume", "timeandduration", "spacer", "captions", "settings", "objectfit", "pictureinpicture", "theater", "fullscreen", "cast", "airplay", "chapter"];
968
+ var BIG_CONTROLS = ["bigprev", "bigplaypause", "bignext"];
969
+ var CONTROL_PANEL_BUILD = {
970
+ profile: true,
971
+ title: true,
972
+ artist: true,
973
+ top: ["expandminiplayer", "spacer", "meta", "spacer", "capture", "fullscreenlock", "airplay", "cast", "fullscreenorientation", "removeminiplayer"],
974
+ center: ["bigprev", "bigplaypause", "bignext"],
975
+ bottom: {
976
+ 1: [],
977
+ 2: ["spacer", "timeline", "spacer"],
978
+ 3: [...!IS_MOBILE ? ["prev", "playpause", "next"] : [], "brightness", "volume", "timeandduration", "chapter", "spacer", "captions", "settings", "objectfit", "pictureinpicture", "theater", "fullscreen"]
979
+ },
980
+ buffer: {
981
+ value: "eclipse",
982
+ options: [
983
+ { value: "eclipse", display: "Eclipse" },
984
+ { value: "accent", display: "Accent" },
985
+ { value: false, display: "Off" }
986
+ ]
987
+ },
988
+ timeline: {
989
+ thumb: {
990
+ value: true,
991
+ options: [
992
+ { value: "auto", display: "Auto" },
993
+ { value: true, display: "On" },
994
+ { value: false, display: "Off" }
995
+ ]
996
+ },
997
+ previews: false,
998
+ scrub: {
999
+ sync: false,
1000
+ relative: !IS_MOBILE,
1001
+ cancel: {
1002
+ delta: 15,
1003
+ timeout: 2e3
1004
+ }
1005
+ },
1006
+ label: "Media Timeline",
1007
+ tooltip: false,
1008
+ autopause: true,
1009
+ compact: IS_MOBILE,
1010
+ bufferMarks: false,
1011
+ playedMarks: false
1012
+ },
1013
+ progressBar: IS_MOBILE
1014
+ // draggable: CONTROL_PANEL_DRAGGABLE_BUILD,
1015
+ };
1016
+
1017
+ // src/ts/plugs/menus/settings/controlPanel.ts
1018
+ var import_utils16 = require("sia-reactor/utils");
1019
+ var isEnabled = (plug, id) => getPanelLocation(plug.config, id).row.includes(id);
1020
+ var setEnabled = (plug, id, enabled, b = plug.ctlr._build.settings.controlPanel) => {
1021
+ const cLoc = getPanelLocation(plug.config, id);
1022
+ if (!enabled) return void (cLoc.row.includes(id) && (0, import_utils16.setPath)(plug.config, cLoc.path, cLoc.row.filter((c) => c !== id)));
1023
+ if (cLoc.row.includes(id)) return;
1024
+ const bLoc = getPanelLocation(b, id), cfgRow = (0, import_utils16.getPath)(plug.config, bLoc.path);
1025
+ Array.isArray(cfgRow) && bLoc.row.length ? insertPanelCtrl(cfgRow, bLoc.row, id) : plug.config.bottom[1].push(id);
1026
+ };
1027
+ var getSettingsControlPanelMenu = (plug) => ({
1028
+ id: "general",
1029
+ label: "Advanced",
1030
+ icon: "settings",
1031
+ widget: "group",
1032
+ getValue: () => "",
1033
+ items: [
1034
+ {
1035
+ id: "layoutControlPanel",
1036
+ label: "Control panel",
1037
+ widget: "group",
1038
+ getValue: () => "",
1039
+ tipHTML: "Configure player controls, layout, and visual feedback",
1040
+ items: [
1041
+ {
1042
+ id: "layoutToggleControls",
1043
+ label: "Toggle controls",
1044
+ widget: "group",
1045
+ getValue: () => "",
1046
+ configPaths: ["settings.controlPanel.top", "settings.controlPanel.center", "settings.controlPanel.bottom"],
1047
+ items: [...CONTROLS, ...BIG_CONTROLS].filter((id) => id !== "spacer").map((id) => ({
1048
+ id: `toggle-cp-${id}`,
1049
+ label: id.replace(/([A-Z])/g, " $1").toLowerCase().replace(/^./, (s) => s.toUpperCase()),
1050
+ widget: "toggle",
1051
+ getValue: () => isEnabled(plug, id) ? "On" : "Off",
1052
+ onChange: (val) => setEnabled(plug, id, val),
1053
+ configPaths: ["settings.controlPanel.top", "settings.controlPanel.center", "settings.controlPanel.bottom"]
1054
+ }))
1055
+ },
1056
+ {
1057
+ id: "layoutTimeline",
1058
+ label: "Timeline",
1059
+ widget: "group",
1060
+ getValue: () => "",
1061
+ items: [
1062
+ {
1063
+ id: "timelineThumb",
1064
+ label: "Show thumb",
1065
+ widget: "select",
1066
+ getValue: () => getUIOpt(plug.config.timeline.thumb.options, plug.config.timeline.thumb.value),
1067
+ getOptions: () => plug.config.timeline.thumb.options,
1068
+ onChange: (val) => plug.config.timeline.thumb.value = val === "auto" ? "auto" : val === "true",
1069
+ configPaths: ["settings.controlPanel.timeline.thumb.value"]
1070
+ },
1071
+ {
1072
+ id: "timelineCompact",
1073
+ label: "Compact mode",
1074
+ widget: "toggle",
1075
+ getValue: () => plug.comp("timeline")?.config.compact ? "On" : "Off",
1076
+ onChange: (val) => plug.config.timeline.compact = val,
1077
+ configPaths: ["settings.controlPanel.timeline.compact"],
1078
+ title: "Make the timeline thinner and more minimalist to conserve space"
1079
+ },
1080
+ {
1081
+ id: "timelineAutopause",
1082
+ label: "Pause-to-preview",
1083
+ widget: "toggle",
1084
+ getValue: () => plug.comp("timeline")?.config.autopause ? "On" : "Off",
1085
+ onChange: (val) => plug.config.timeline.autopause = val,
1086
+ configPaths: ["settings.controlPanel.timeline.autopause"],
1087
+ title: "Automatically pauses the video while you are dragging the timeline to seek"
1088
+ },
1089
+ {
1090
+ id: "timelinePlayedMarks",
1091
+ label: "Played marks",
1092
+ widget: "toggle",
1093
+ getValue: () => plug.comp("timeline")?.config.playedMarks ? "On" : "Off",
1094
+ onChange: (val) => plug.config.timeline.playedMarks = val,
1095
+ configPaths: ["settings.controlPanel.timeline.playedMarks"],
1096
+ title: "Displays colored indicators on the timeline for sections you've already watched"
1097
+ },
1098
+ {
1099
+ id: "timelineBufferMarks",
1100
+ label: "Buffer marks",
1101
+ widget: "toggle",
1102
+ getValue: () => plug.comp("timeline")?.config.bufferMarks ? "On" : "Off",
1103
+ onChange: (val) => plug.config.timeline.bufferMarks = val,
1104
+ configPaths: ["settings.controlPanel.timeline.bufferMarks"],
1105
+ title: "Shows a progress bar indicating how much of the video has been pre-loaded"
1106
+ },
1107
+ {
1108
+ id: "timelinePreviews",
1109
+ label: "Seek previews",
1110
+ widget: "toggle",
1111
+ getValue: () => plug.comp("timeline")?.config.previews ? "On" : "Off",
1112
+ onChange: (val) => plug.config.timeline.previews = val,
1113
+ configPaths: ["settings.controlPanel.timeline.previews"],
1114
+ title: "Displays a thumbnail preview of the video frame when hovering over the timeline. Note: If a specific preview type (e.g. sprite/image src) was set by the developer, toggling this will reset it to 'auto'."
1115
+ },
1116
+ {
1117
+ id: "timelineScrub",
1118
+ label: "Scrub behaviour",
1119
+ widget: "group",
1120
+ getValue: () => "",
1121
+ items: [
1122
+ {
1123
+ id: "timelineScrubSync",
1124
+ label: "Sync scrubbing",
1125
+ widget: "toggle",
1126
+ getValue: () => plug.comp("timeline")?.config.scrub.sync ? "On" : "Off",
1127
+ onChange: (val) => plug.config.timeline.scrub.sync = val,
1128
+ configPaths: ["settings.controlPanel.timeline.scrub.sync"],
1129
+ title: "Updates the video frame in real-time as you drag the timeline cursor"
1130
+ },
1131
+ {
1132
+ id: "timelineScrubRelative",
1133
+ label: "Relative scrubbing",
1134
+ widget: "toggle",
1135
+ getValue: () => plug.comp("timeline")?.config.scrub.relative ? "On" : "Off",
1136
+ onChange: (val) => plug.config.timeline.scrub.relative = val,
1137
+ configPaths: ["settings.controlPanel.timeline.scrub.relative"],
1138
+ title: "Whether the scrubbing pointer should follow your finger exactly or move relative to your initial point of touch"
1139
+ },
1140
+ {
1141
+ id: "timelineScrubCancel",
1142
+ label: "Scrub cancellation",
1143
+ widget: "group",
1144
+ getValue: () => plug.comp("timeline")?.config.scrub.cancel.delta && plug.comp("timeline")?.config.scrub.cancel.timeout ? "On" : "Off",
1145
+ configPaths: ["settings.controlPanel.timeline.scrub.cancel.delta", "settings.controlPanel.timeline.scrub.cancel.timeout"],
1146
+ items: [
1147
+ {
1148
+ id: "timelineScrubCancelDelta",
1149
+ label: "Cancel distance",
1150
+ widget: "range",
1151
+ getValue: () => `${Math.round(plug.comp("timeline")?.config.scrub.cancel.delta)}px`,
1152
+ getRange: () => ({ min: 0, max: 100, step: 5 }),
1153
+ onChange: (val) => plug.config.timeline.scrub.cancel.delta = val,
1154
+ configPaths: ["settings.controlPanel.timeline.scrub.cancel.delta"],
1155
+ tipHTML: "Horizontal distance from your initial drag position before a scrub is considered cancelled."
1156
+ },
1157
+ {
1158
+ id: "timelineScrubCancelTimeout",
1159
+ label: "Cancel timeout",
1160
+ widget: "input",
1161
+ inputs: [{ label: "ms", placeholder: "2500", type: "number", min: "0", helperText: { info: "How long to wait before allowing you to resume scrubbing after a cancellation." }, value: () => plug.comp("timeline")?.config.scrub.cancel.timeout }],
1162
+ getValue: () => `${plug.comp("timeline")?.config.scrub.cancel.timeout}ms`,
1163
+ onChange: (val) => plug.config.timeline.scrub.cancel.timeout = val["ms"],
1164
+ configPaths: ["settings.controlPanel.timeline.scrub.cancel.timeout"],
1165
+ tipHTML: "How long to wait before allowing you to resume scrubbing after a cancellation attempt."
1166
+ }
1167
+ ]
1168
+ }
1169
+ ]
1170
+ },
1171
+ {
1172
+ id: "timelineWheelGroup",
1173
+ label: "Wheel seek",
1174
+ widget: "group",
1175
+ getValue: () => plug.comp("timeline")?.config.wheel.disabled ? "Off" : "On",
1176
+ items: [
1177
+ {
1178
+ id: "timelineWheelDisabled",
1179
+ label: "Disable",
1180
+ widget: "toggle",
1181
+ getValue: () => plug.comp("timeline")?.config.wheel.disabled ? "On" : "Off",
1182
+ onChange: (val) => plug.config.timeline.wheel.disabled = val,
1183
+ configPaths: ["settings.controlPanel.timeline.wheel"],
1184
+ title: "Enables seeking through the video by scrolling the mouse wheel over the timeline"
1185
+ },
1186
+ {
1187
+ id: "timelineWheelAxisRatio",
1188
+ label: "Sensitivity",
1189
+ widget: "range",
1190
+ getValue: () => String(plug.comp("timeline")?.config.wheel.axisRatio),
1191
+ getRange: () => ({ min: 1, max: 50, step: 1 }),
1192
+ onChange: (val) => plug.config.timeline.wheel.axisRatio = val,
1193
+ configPaths: ["settings.controlPanel.timeline.wheel"],
1194
+ tipHTML: "Adjusts how much the video seeks per scroll wheel notch"
1195
+ }
1196
+ ]
1197
+ },
1198
+ {
1199
+ id: "timelineMarkers",
1200
+ label: "Add marker",
1201
+ widget: "input",
1202
+ inputs: [
1203
+ { label: "Label", placeholder: "Chapter 2", helperText: { info: "e.g. Chapter 2" }, required: true },
1204
+ { label: "Position (%)", placeholder: "50", helperText: { info: "0 \u2013 100" }, type: "number", required: true },
1205
+ { label: "End (%)", helperText: { info: "Optional" }, type: "number" }
1206
+ ],
1207
+ getValue: () => `${plug.comp("timeline")?.config.marks.length || 0} marker${(plug.comp("timeline")?.config.marks.length || 0) !== 1 ? "s" : ""}`,
1208
+ onChange: (val) => plug.config.timeline.marks = [...plug.config.timeline.marks || [], { label: val["Label"] || void 0, start: Number(val["Position (%)"]) || 0, end: val["End (%)"] ? Number(val["End (%)"]) : void 0 }],
1209
+ configPaths: ["settings.controlPanel.timeline.marks"]
1210
+ }
1211
+ ]
1212
+ },
1213
+ {
1214
+ id: "layoutBuffer",
1215
+ label: "Loading spinner",
1216
+ widget: "select",
1217
+ getValue: () => getUIOpt(plug.config.buffer.options, plug.config.buffer.value),
1218
+ getOptions: () => plug.config.buffer.options,
1219
+ onChange: (val) => plug.config.buffer.value = getBoolOrStr(val),
1220
+ configPaths: ["settings.controlPanel.buffer.value"]
1221
+ },
1222
+ {
1223
+ id: "layoutProgressBar",
1224
+ label: "Progress bar",
1225
+ widget: "toggle",
1226
+ getValue: () => plug.config.progressBar ? "On" : "Off",
1227
+ onChange: (val) => plug.config.progressBar = val,
1228
+ configPaths: ["settings.controlPanel.progressBar"]
1229
+ },
1230
+ {
1231
+ id: "layoutDraggable",
1232
+ label: "Drag & drop layout",
1233
+ widget: "toggle",
1234
+ getValue: () => plug.config.draggable ? "On" : "Off",
1235
+ onChange: (val) => plug.config.draggable = val,
1236
+ configPaths: ["settings.controlPanel.draggable"]
1237
+ }
1238
+ ]
1239
+ }
1240
+ ]
1241
+ });
1242
+
1243
+ // src/ts/plugs/menus/settings/fastPlay.ts
1244
+ var fPRgx = /all|mouse|touch|pen/;
1245
+ var getSettingsFastPlayMenu = (plug) => ({
1246
+ id: "general",
1247
+ label: "Advanced",
1248
+ icon: "settings",
1249
+ widget: "group",
1250
+ getValue: () => "",
1251
+ items: [
1252
+ {
1253
+ id: "fastPlay",
1254
+ label: "Fast play",
1255
+ widget: "group",
1256
+ getValue: () => plug.config.key || fPRgx.test(plug.config.pointer.type.value) ? "On" : "Off",
1257
+ tipHTML: "Configure fast playback gestures, speed, and triggers",
1258
+ configPaths: ["settings.fastPlay.key", "settings.fastPlay.pointer.type.value"],
1259
+ items: [
1260
+ {
1261
+ id: "fastPlayRate",
1262
+ label: "Fast play speed",
1263
+ widget: "range",
1264
+ getValue: () => `${plug.config.playbackRate}x`,
1265
+ getRange() {
1266
+ const divs = [];
1267
+ for (let i = Math.ceil(plug.settings.playbackRate.min); i <= plug.settings.playbackRate.max; i++) divs.push(i);
1268
+ return { min: plug.settings.playbackRate.min, max: plug.settings.playbackRate.max, step: 0.05, formatTooltip: (v) => `${v.toFixed(2)}x`, divs };
1269
+ },
1270
+ onChange: (val) => plug.config.playbackRate = val,
1271
+ configPaths: ["settings.fastPlay.playbackRate", "settings.playbackRate.min", "settings.playbackRate.max"],
1272
+ tipHTML: "Playback speed multiplier when fast play is active"
1273
+ },
1274
+ {
1275
+ id: "fastPlayKey",
1276
+ label: "Keyboard hold trigger",
1277
+ widget: "toggle",
1278
+ getValue: () => plug.config.key ? "On" : "Off",
1279
+ onChange: (val) => plug.config.key = val,
1280
+ configPaths: ["settings.fastPlay.key"],
1281
+ title: "Press and hold the Left/Right arrow keys to temporarily rewind or fast-forward"
1282
+ },
1283
+ {
1284
+ id: "fastPlayPointer",
1285
+ label: "Pointer hold trigger",
1286
+ widget: "group",
1287
+ getValue: () => plug.config.pointer.threshold && fPRgx.test(plug.config.pointer.type.value) ? "On" : "Off",
1288
+ tipHTML: "Press and hold the video with your mouse or finger to temporarily rewind or fast-forward",
1289
+ configPaths: ["settings.fastPlay.pointer.type.value", "settings.fastPlay.pointer.threshold"],
1290
+ items: [
1291
+ {
1292
+ id: "fastPlayPointerType",
1293
+ label: "Pointer type",
1294
+ widget: "select",
1295
+ getValue: () => getUIOpt(plug.config.pointer.type.options, plug.config.pointer.type.value),
1296
+ getOptions: () => plug.config.pointer.type.options,
1297
+ onChange: (val) => plug.config.pointer.type.value = val,
1298
+ configPaths: ["settings.fastPlay.pointer.type.value"],
1299
+ tipHTML: "Which input devices can trigger fast play by long pressing the video."
1300
+ },
1301
+ {
1302
+ id: "fastPlayPointerThreshold",
1303
+ label: "Hold Duration",
1304
+ widget: "input",
1305
+ inputs: [{ label: "ms", placeholder: "2500", helperText: { info: "How long you need to hold your finger or mouse down before fast play starts." }, type: "number", min: "0", value: () => plug.config.pointer.threshold }],
1306
+ getValue: () => `${plug.config.pointer.threshold}ms`,
1307
+ onChange: (val) => plug.config.pointer.threshold = val["ms"],
1308
+ configPaths: ["settings.fastPlay.pointer.threshold"]
1309
+ },
1310
+ {
1311
+ id: "fastPlayPointerInset",
1312
+ label: "Edge inset",
1313
+ widget: "range",
1314
+ getValue: () => `${Math.round(plug.config.pointer.inset)}px`,
1315
+ getRange: () => ({ min: 0, max: 100, step: 5, formatTooltip: (v) => `${Math.round(v)}px` }),
1316
+ onChange: (val) => plug.config.pointer.inset = val,
1317
+ configPaths: ["settings.fastPlay.pointer.inset"],
1318
+ tipHTML: "Distance from the screen edges to ignore long presses (prevents accidental triggers)"
1319
+ }
1320
+ ]
1321
+ },
1322
+ {
1323
+ id: "fastPlayReset",
1324
+ label: "Reset paused on release",
1325
+ widget: "toggle",
1326
+ getValue: () => plug.config.resetPaused ? "On" : "Off",
1327
+ onChange: (val) => plug.config.resetPaused = val,
1328
+ configPaths: ["settings.fastPlay.resetPaused"],
1329
+ title: "Automatically reset play state when you release the trigger"
1330
+ },
1331
+ {
1332
+ id: "fastPlayRewind",
1333
+ label: "Allow rewind",
1334
+ widget: "toggle",
1335
+ getValue: () => plug.config.rewind ? "On" : "Off",
1336
+ onChange: (val) => plug.config.rewind = val,
1337
+ configPaths: ["settings.fastPlay.rewind"],
1338
+ title: "Allow fast playing backwards (rewinding) if triggered on the left side of the screen"
1339
+ }
1340
+ ]
1341
+ }
1342
+ ]
1343
+ });
1344
+
1345
+ // src/ts/utils/time.ts
1346
+ function formatMediaTime({ time, format = "digital", elapsed = true, showMs = false, casing = "normal" } = { time: 0 }) {
1347
+ const long = format.endsWith("long"), sx = (n = 0) => n == 1 ? "" : "s", cs = (str) => casing === "upper" ? str.toUpperCase() : casing === "title" ? str.replace(/^([a-z])/i, (m2) => m2.toUpperCase()) : str.toLowerCase(), 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") }), pad = (v, n = 2, f) => long && !f ? v : String(v).padStart(n, isNum(+n) ? "0" : "-");
1348
+ if (isNaN(time ?? NaN) || time === Infinity) return format !== "digital" ? ("-" + wrd().h + pad("-") + wrd().m + (!elapsed ? "left" : "")).trim() : !elapsed ? "-:--" : "-:--";
1349
+ const s = Math.floor(Math.abs(time) % 60), m = Math.floor(Math.abs(time) / 60) % 60, h = Math.floor(Math.abs(time) / 3600) % 24, d = Math.floor(Math.abs(time) / 86400), ms = Math.floor(Math.abs(time) % 1 * 1e3);
1350
+ if (format === "digital") {
1351
+ const base2 = 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);
1352
+ return !elapsed ? "-" + base2 : base2;
1353
+ }
1354
+ 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, msPart = showMs && ms ? pad(ms, 3) + wrd(ms).ms : "";
1355
+ return (base + msPart + (!long ? " " : "") + (!elapsed ? "left" : "")).trim();
1356
+ }
1357
+
1358
+ // src/ts/utils/dom.ts
1359
+ var import_sia_reactor4 = require("sia-reactor");
1360
+ var win2 = "undefined" !== typeof window ? window : void 0;
1361
+ var intersectionObserver = win2 ? new IntersectionObserver(
1362
+ (entries) => {
1363
+ for (const entry of entries) if (entry.target._intersectCbs) for (const cb of entry.target._intersectCbs) cb(entry);
1364
+ },
1365
+ { root: null, rootMargin: "0px", threshold: 0.3 }
1366
+ ) : null;
1367
+ var resizeObserver = win2 ? new ResizeObserver((entries) => {
1368
+ for (const entry of entries) if (entry.target._resizeCbs) for (const cb of entry.target._resizeCbs) cb(entry);
1369
+ }) : null;
1370
+ var mutationObserver = win2 ? new MutationObserver((mutations) => {
1371
+ const target = mutations[0].target;
1372
+ if (target._mutationCbs) for (const cb of target._mutationCbs) cb(mutations);
1373
+ }) : null;
1374
+
1375
+ // src/ts/utils/media.ts
1376
+ var import_utils20 = require("sia-reactor/utils");
1377
+ function getBooleanMediaProps(media, prop = "intent") {
1378
+ return Object.keys(media[prop]).filter((k) => typeof media[prop][k] === "boolean");
1379
+ }
1380
+ var DUMMY_VID = (0, import_utils3.createEl)("video");
1381
+ var DUMMY_AUD = (0, import_utils3.createEl)("audio");
1382
+
1383
+ // src/ts/plugs/menus/settings/gesture.ts
1384
+ var getClickOptions = (plug) => [{ value: false, display: "None" }, ...getBooleanMediaProps(plug.media).map((k) => ({ value: k, display: capitalize(k.replace(/([A-Z])/g, " $1").toLowerCase()) }))];
1385
+ var getSettingsGestureMenu = (plug) => ({
1386
+ id: "general",
1387
+ label: "Advanced",
1388
+ icon: "settings",
1389
+ widget: "group",
1390
+ getValue: () => "",
1391
+ items: [
1392
+ {
1393
+ id: "gestures",
1394
+ label: "Gestures",
1395
+ widget: "group",
1396
+ getValue: () => plug.config.click === false && plug.config.dblClick === false && !plug.config.touch.volume && !plug.config.touch.brightness && !plug.config.touch.timeline && !plug.config.wheel.volume && !plug.config.wheel.brightness && !plug.config.wheel.timeline ? "Off" : "On",
1397
+ tipHTML: "Configure touch, swipe, and click interactions",
1398
+ configPaths: ["settings.gesture.click", "settings.gesture.dblClick", "settings.gesture.touch.volume", "settings.gesture.touch.brightness", "settings.gesture.touch.timeline", "settings.gesture.wheel.volume", "settings.gesture.wheel.brightness", "settings.gesture.wheel.timeline"],
1399
+ items: [
1400
+ {
1401
+ id: "gestureClick",
1402
+ label: "Single click",
1403
+ widget: "select",
1404
+ getValue: () => plug.config.click === false ? "None" : capitalize(String(plug.config.click)),
1405
+ getOptions: () => getClickOptions(plug),
1406
+ onChange: (val) => plug.config.click = getBoolOrStr(val),
1407
+ configPaths: ["settings.gesture.click"],
1408
+ tipHTML: "Action to perform when tapping once on the video player"
1409
+ },
1410
+ {
1411
+ id: "gestureDblClick",
1412
+ label: "Double click",
1413
+ widget: "select",
1414
+ getValue: () => plug.config.dblClick === false ? "None" : capitalize(String(plug.config.dblClick)),
1415
+ getOptions: () => getClickOptions(plug),
1416
+ onChange: (val) => plug.config.dblClick = getBoolOrStr(val),
1417
+ configPaths: ["settings.gesture.dblClick"],
1418
+ tipHTML: "Action to perform when double tapping on the video player"
1419
+ },
1420
+ {
1421
+ id: "gestureTouchGroup",
1422
+ label: "Touch gestures",
1423
+ widget: "group",
1424
+ getValue: () => plug.config.touch.volume || plug.config.touch.brightness || plug.config.touch.timeline ? "On" : "Off",
1425
+ items: [
1426
+ {
1427
+ id: "gestureTouchVolume",
1428
+ label: "Volume swipe",
1429
+ widget: "toggle",
1430
+ getValue: () => plug.config.touch.volume ? "On" : "Off",
1431
+ onChange: (val) => plug.config.touch.volume = val,
1432
+ configPaths: ["settings.gesture.touch.volume"],
1433
+ title: "Swipe up or down on the right side of the screen to adjust volume"
1434
+ },
1435
+ {
1436
+ id: "gestureTouchBrightness",
1437
+ label: "Brightness swipe",
1438
+ widget: "toggle",
1439
+ getValue: () => plug.config.touch.brightness ? "On" : "Off",
1440
+ onChange: (val) => plug.config.touch.brightness = val,
1441
+ configPaths: ["settings.gesture.touch.brightness"],
1442
+ title: "Swipe up or down on the left side of the screen to adjust brightness"
1443
+ },
1444
+ {
1445
+ id: "gestureTouchTimeline",
1446
+ label: "Seek swipe",
1447
+ widget: "toggle",
1448
+ getValue: () => plug.config.touch.timeline ? "On" : "Off",
1449
+ onChange: (val) => plug.config.touch.timeline = val,
1450
+ configPaths: ["settings.gesture.touch.timeline"],
1451
+ title: "Swipe left or right anywhere on the screen to seek."
1452
+ },
1453
+ {
1454
+ id: "gestureTouchThreshold",
1455
+ label: "Swipe Threshold",
1456
+ widget: "input",
1457
+ inputs: [{ label: "ms", placeholder: "200", helperText: { info: "Time in ms before a touch is acknowledged to start a swipe gesture, provided it did not move during the hold duration." }, type: "number", min: "0", value: () => plug.config.touch.threshold }],
1458
+ getValue: () => `${plug.config.touch.threshold}ms`,
1459
+ onChange: (val) => plug.config.touch.threshold = val["ms"],
1460
+ configPaths: ["settings.gesture.touch.threshold"]
1461
+ },
1462
+ {
1463
+ id: "gestureTouchSliderTimeout",
1464
+ label: "Slider timeout",
1465
+ widget: "input",
1466
+ inputs: [{ label: "ms", placeholder: "2500", helperText: { info: "How long the gesture indicator stays on screen after swiping." }, type: "number", min: "0", value: () => plug.config.touch.sliderTimeout }],
1467
+ getValue: () => `${plug.config.touch.sliderTimeout}ms`,
1468
+ onChange: (val) => plug.config.touch.sliderTimeout = val["ms"],
1469
+ configPaths: ["settings.gesture.touch.sliderTimeout"]
1470
+ },
1471
+ {
1472
+ id: "gestureTouchAxesRatio",
1473
+ label: "Axes ratio",
1474
+ widget: "range",
1475
+ getValue: () => String(plug.config.touch.axesRatio),
1476
+ getRange: () => ({ min: 0.1, max: 10, step: 0.25, formatTooltip: (v) => v.toFixed(1) }),
1477
+ onChange: (val) => plug.config.touch.axesRatio = val,
1478
+ configPaths: ["settings.gesture.touch.axesRatio"],
1479
+ tipHTML: "Multiplier for vertical vs horizontal swipe dominance"
1480
+ },
1481
+ {
1482
+ id: "gestureTouchInset",
1483
+ label: "Edge inset",
1484
+ widget: "range",
1485
+ getValue: () => `${Math.round(plug.config.touch.inset)}px`,
1486
+ getRange: () => ({ min: 0, max: 100, step: 5, formatTooltip: (v) => `${Math.round(v)}px` }),
1487
+ onChange: (val) => plug.config.touch.inset = val,
1488
+ configPaths: ["settings.gesture.touch.inset"],
1489
+ tipHTML: "Distance from the screen edges to ignore swipes (prevents accidental gestures)"
1490
+ }
1491
+ ]
1492
+ },
1493
+ {
1494
+ id: "gestureWheelGroup",
1495
+ label: "Scroll wheel",
1496
+ widget: "group",
1497
+ getValue: () => plug.config.wheel.volume || plug.config.wheel.brightness || plug.config.wheel.timeline ? "On" : "Off",
1498
+ items: [
1499
+ {
1500
+ id: "gestureWheelVolume",
1501
+ label: "Volume scroll",
1502
+ widget: "toggle",
1503
+ getValue: () => plug.config.wheel.volume ? "On" : "Off",
1504
+ onChange: (val) => plug.config.wheel.volume = val,
1505
+ configPaths: ["settings.gesture.wheel.volume"]
1506
+ },
1507
+ {
1508
+ id: "gestureWheelBrightness",
1509
+ label: "Brightness scroll",
1510
+ widget: "toggle",
1511
+ getValue: () => plug.config.wheel.brightness ? "On" : "Off",
1512
+ onChange: (val) => plug.config.wheel.brightness = val,
1513
+ configPaths: ["settings.gesture.wheel.brightness"]
1514
+ },
1515
+ {
1516
+ id: "gestureWheelTimeline",
1517
+ label: "Seek scroll",
1518
+ widget: "toggle",
1519
+ getValue: () => plug.config.wheel.timeline ? "On" : "Off",
1520
+ onChange: (val) => plug.config.wheel.timeline = val,
1521
+ configPaths: ["settings.gesture.wheel.timeline"]
1522
+ },
1523
+ {
1524
+ id: "gestureWheelTimeout",
1525
+ label: "Wheel timeout",
1526
+ widget: "input",
1527
+ inputs: [{ label: "ms", placeholder: "2500", type: "number", min: "0", value: () => plug.config.wheel.timeout }],
1528
+ getValue: () => `${plug.config.wheel.timeout}ms`,
1529
+ onChange: (val) => plug.config.wheel.timeout = val["ms"],
1530
+ configPaths: ["settings.gesture.wheel.timeout"]
1531
+ },
1532
+ {
1533
+ id: "gestureWheelXRatio",
1534
+ label: "Horizontal sensitivity",
1535
+ widget: "range",
1536
+ getValue: () => String(plug.config.wheel.xRatio),
1537
+ getRange: () => ({ min: 1, max: 50, step: 1 }),
1538
+ onChange: (val) => plug.config.wheel.xRatio = val,
1539
+ configPaths: ["settings.gesture.wheel.xRatio"]
1540
+ },
1541
+ {
1542
+ id: "gestureWheelYRatio",
1543
+ label: "Vertical sensitivity",
1544
+ widget: "range",
1545
+ getValue: () => String(plug.config.wheel.yRatio),
1546
+ getRange: () => ({ min: 1, max: 50, step: 1 }),
1547
+ onChange: (val) => plug.config.wheel.yRatio = val,
1548
+ configPaths: ["settings.gesture.wheel.yRatio"]
1549
+ }
1550
+ ]
1551
+ }
1552
+ ]
1553
+ }
1554
+ ]
1555
+ });
1556
+
1557
+ // src/ts/plugs/settings/keys/build.ts
1558
+ var KEY_SHORTCUT_MOD_ACTIONS = ["skip", "volume", "brightness", "playbackRate", "captionsFontSize"];
1559
+
1560
+ // src/ts/plugs/menus/settings/keys.ts
1561
+ var fmt = (action) => capitalize(action.replace(/([A-Z])/g, " $1"));
1562
+ var getSettingsKeysMenu = (plug) => ({
1563
+ id: "general",
1564
+ label: "Advanced",
1565
+ icon: "settings",
1566
+ widget: "group",
1567
+ getValue: () => "",
1568
+ items: [
1569
+ {
1570
+ id: "keyboard",
1571
+ label: "Keyboard",
1572
+ widget: "group",
1573
+ getValue: () => plug.config.disabled ? "Off" : "On",
1574
+ tipHTML: "Configure keyboard shortcuts and modifier keys",
1575
+ configPaths: ["settings.keys.disabled"],
1576
+ items: [
1577
+ {
1578
+ id: "keyboardDisabled",
1579
+ label: "Disable",
1580
+ widget: "toggle",
1581
+ getValue: () => plug.config.disabled ? "On" : "Off",
1582
+ onChange: (val) => plug.config.disabled = val,
1583
+ configPaths: ["settings.keys.disabled"]
1584
+ },
1585
+ {
1586
+ id: "keyboardStrictMatches",
1587
+ label: "Strict Matches",
1588
+ widget: "toggle",
1589
+ getValue: () => plug.config.strictMatches ? "On" : "Off",
1590
+ onChange: (val) => plug.config.strictMatches = val,
1591
+ configPaths: ["settings.keys.strictMatches"],
1592
+ title: "Require exact key combo matches for actions (e.g., Shift+f will not trigger the action for f)."
1593
+ },
1594
+ {
1595
+ id: "keyboardMods",
1596
+ label: "Modifier keys",
1597
+ widget: "group",
1598
+ getValue: () => plug.config.mods.disabled ? "Off" : "On",
1599
+ items: [
1600
+ {
1601
+ id: "keyboardModsDisabled",
1602
+ label: "Disable",
1603
+ widget: "toggle",
1604
+ getValue: () => plug.config.mods.disabled ? "On" : "Off",
1605
+ onChange: (val) => plug.config.mods.disabled = val,
1606
+ configPaths: ["settings.keys.mods.disabled"],
1607
+ title: "Allow holding Shift or Ctrl/Cmd to change how much the action steps by (e.g. holding Shift to seek 10s instead of 5s)"
1608
+ },
1609
+ ...KEY_SHORTCUT_MOD_ACTIONS.map((mod) => ({
1610
+ id: `keyboardMod-${mod}`,
1611
+ label: `${fmt(mod)} Modifier`,
1612
+ widget: "group",
1613
+ getValue: () => "",
1614
+ items: [
1615
+ {
1616
+ id: `keyboardMod-${mod}-ctrl`,
1617
+ label: "Ctrl amount",
1618
+ widget: "input",
1619
+ inputs: [{ label: "Amount", type: "number", min: "0", step: "any", value: () => plug.config.mods[mod].ctrl }],
1620
+ getValue: () => String(plug.config.mods[mod].ctrl),
1621
+ onChange: (val) => plug.config.mods[mod].ctrl = val["Amount"],
1622
+ configPaths: [`settings.keys.mods.${mod}`]
1623
+ },
1624
+ {
1625
+ id: `keyboardMod-${mod}-shift`,
1626
+ label: "Shift amount",
1627
+ widget: "input",
1628
+ inputs: [{ label: "Amount", type: "number", min: "0", step: "any", value: () => plug.config.mods[mod].shift }],
1629
+ getValue: () => String(plug.config.mods[mod].shift),
1630
+ onChange: (val) => plug.config.mods[mod].shift = val["Amount"],
1631
+ configPaths: [`settings.keys.mods.${mod}`]
1632
+ }
1633
+ ]
1634
+ }))
1635
+ ]
1636
+ },
1637
+ {
1638
+ id: "keyboardLists",
1639
+ label: "Lists & Overrides",
1640
+ widget: "group",
1641
+ getValue: () => "",
1642
+ items: [
1643
+ {
1644
+ id: "keyboardOverrides",
1645
+ label: "Overrides",
1646
+ widget: "input",
1647
+ inputs: [{ label: "Keys", placeholder: "Space, ArrowUp", helperText: { info: "Comma-separated keys that override default browser behavior" }, value: () => plug.config.overrides.join(", ") }],
1648
+ getValue: () => plug.config.overrides.join(", "),
1649
+ // prettier-ignore
1650
+ onChange: (val) => plug.config.overrides = val["Keys"].split(",").map((s) => s.trim()).filter(Boolean),
1651
+ configPaths: ["settings.keys.overrides"]
1652
+ },
1653
+ {
1654
+ id: "keyboardBlocks",
1655
+ label: "Blocks",
1656
+ widget: "input",
1657
+ inputs: [{ label: "Keys", placeholder: "Space, ArrowUp", helperText: { info: "Comma-separated keys to completely block" }, value: () => plug.config.blocks.join(", ") }],
1658
+ getValue: () => plug.config.blocks.join(", "),
1659
+ // prettier-ignore
1660
+ onChange: (val) => plug.config.blocks = val["Keys"].split(",").map((s) => s.trim()).filter(Boolean),
1661
+ configPaths: ["settings.keys.blocks"]
1662
+ },
1663
+ {
1664
+ id: "keyboardWhitelist",
1665
+ label: "Whitelist",
1666
+ widget: "input",
1667
+ inputs: [{ label: "Keys", placeholder: "Space, ArrowUp", helperText: { info: "Comma-separated keys that are explicitly allowed" }, value: () => plug.config.whitelist.join(", ") }],
1668
+ getValue: () => plug.config.whitelist.join(", "),
1669
+ // prettier-ignore
1670
+ onChange: (val) => plug.config.whitelist = val["Keys"].split(",").map((s) => s.trim()).filter(Boolean),
1671
+ configPaths: ["settings.keys.whitelist"]
1672
+ }
1673
+ ]
1674
+ }
1675
+ ]
1676
+ }
1677
+ ]
1678
+ });
1679
+
1680
+ // src/ts/plugs/menus/settings/metadata.ts
1681
+ var import_modules = require("sia-reactor/modules");
1682
+ var getSettingsMetadataMenu = (plug) => [
1683
+ {
1684
+ id: "loop",
1685
+ label: "Loop",
1686
+ icon: "loop",
1687
+ widget: "toggle",
1688
+ getValue: () => plug.media.state.loop ? "On" : "Off",
1689
+ onChange: (val) => plug.media.intent.loop = val,
1690
+ mediaPaths: ["state.loop"]
1691
+ },
1692
+ {
1693
+ id: "quality",
1694
+ label: "Quality",
1695
+ icon: "quality",
1696
+ widget: "select",
1697
+ feature: "levels",
1698
+ getValue() {
1699
+ const list = plug.media.status.levels;
1700
+ if (!list || !list.length || plug.media.state.currentLevel === -1) return "";
1701
+ const opts = this.getOptions();
1702
+ return plug.media.state.autoLevel ? opts[0].display : opts.find((o) => o.value === plug.media.state.currentLevel)?.display || "";
1703
+ },
1704
+ getOptions() {
1705
+ const list = plug.media.status.levels;
1706
+ if (!list || !list.length) return [{ value: -1, display: "Auto" }];
1707
+ const getOpt = (i, t = list[i]) => {
1708
+ const label = t.label || (t.height ? `${t.height}p` : "") || (isStr(t) ? capitalize(t) : "Unknown");
1709
+ return { value: i, display: label, infoText: t.bandwidth || t.bitrate ? `${Math.round((t.bandwidth || t.bitrate) / 1e3)} kbps` : "" };
1710
+ };
1711
+ const opts = getUniqueOpts(Array.from(list).reduce((acc, t, i) => (isStr(t) && t.toLowerCase() === "auto" ? acc : acc.push(getOpt(i)), acc), [])).reverse(), { display, infoText } = plug.media.state.autoLevel ? getOpt(plug.media.state.currentLevel) : { display: "Unknown", infoText: "" };
1712
+ return opts.push({ value: -1, display: `Auto${display !== "Unknown" ? ` (${display})` : ""}`, infoText }), opts;
1713
+ },
1714
+ getDisabled: () => !plug.media.status.levels.length,
1715
+ onChange: (val) => val === -1 ? plug.media.intent.autoLevel = true : plug.media.intent.currentLevel = val,
1716
+ mediaPaths: ["status.levels", "state.currentLevel", "state.autoLevel"]
1717
+ },
1718
+ {
1719
+ id: "audioTracks",
1720
+ label: "Audio track",
1721
+ icon: "audiotrack",
1722
+ widget: "select",
1723
+ feature: "audioTracks",
1724
+ getValue() {
1725
+ const list = plug.media.status.audioTracks;
1726
+ if (!list || !list.length || plug.media.state.currentAudioTrack === -1) return "";
1727
+ const track = list[plug.media.state.currentAudioTrack];
1728
+ return track?.label || track?.language || `Track ${plug.media.state.currentAudioTrack + 1}`;
1729
+ },
1730
+ getOptions() {
1731
+ const list = plug.media.status.audioTracks;
1732
+ return !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));
1733
+ },
1734
+ onChange: (val) => plug.media.intent.currentAudioTrack = val,
1735
+ mediaPaths: ["status.audioTracks", "state.currentAudioTrack"]
1736
+ },
1737
+ {
1738
+ id: "videoTracks",
1739
+ label: "Video track",
1740
+ icon: "videotrack",
1741
+ widget: "select",
1742
+ feature: "videoTracks",
1743
+ getValue() {
1744
+ const list = plug.media.status.videoTracks;
1745
+ if (!list || !list.length || plug.media.state.currentVideoTrack === -1) return "";
1746
+ const track = list[plug.media.state.currentVideoTrack];
1747
+ return track?.label || track?.language || `Track ${plug.media.state.currentVideoTrack + 1}`;
1748
+ },
1749
+ getOptions() {
1750
+ const list = plug.media.status.videoTracks;
1751
+ return !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));
1752
+ },
1753
+ onChange: (val) => plug.media.intent.currentVideoTrack = val,
1754
+ mediaPaths: ["status.videoTracks", "state.currentVideoTrack"]
1755
+ },
1756
+ {
1757
+ id: "captions",
1758
+ label: "Captions",
1759
+ icon: "captions",
1760
+ widget: "select",
1761
+ feature: "textTracks",
1762
+ tipHTML: "Select a caption track",
1763
+ getValue() {
1764
+ const list = plug.media.status.textTracks;
1765
+ return !list || !list.length || plug.media.state.currentTextTrack === -1 ? "Off" : list[plug.media.state.currentTextTrack]?.label || list[plug.media.state.currentTextTrack]?.language || `Track ${plug.media.state.currentTextTrack + 1}`;
1766
+ },
1767
+ getOptions() {
1768
+ const list = plug.media.status.textTracks;
1769
+ return !list || !list.length ? [{ value: -1, display: "Off" }] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));
1770
+ },
1771
+ onChange: (val) => plug.media.intent.currentTextTrack = val,
1772
+ mediaPaths: ["status.textTracks", "state.currentTextTrack", "features.textTracks"]
1773
+ },
1774
+ {
1775
+ id: "chapters",
1776
+ label: "Chapters",
1777
+ icon: "chapters",
1778
+ widget: "select",
1779
+ feature: "currentChapter",
1780
+ tipHTML: "Navigate through video chapters",
1781
+ getValue() {
1782
+ const list = plug.media.settings.metadata.chapterInfo;
1783
+ if (!list || !list.length || plug.media.state.currentChapter === -1) return "";
1784
+ const chapter = list[plug.media.state.currentChapter];
1785
+ return chapter?.title || `Chapter ${plug.media.state.currentChapter + 1}`;
1786
+ },
1787
+ getOptions() {
1788
+ const list = plug.media.settings.metadata.chapterInfo;
1789
+ return !list || !list.length ? [] : list.map((c, i) => ({ value: i, display: c.title || `Chapter ${i + 1}`, infoText: isNum(c.startTime) ? formatMediaTime({ time: c.startTime }) : void 0 }));
1790
+ },
1791
+ onChange: (val) => (0, import_modules.silence)(() => plug.media.intent.currentChapter = val),
1792
+ mediaPaths: ["settings.metadata.chapterInfo", "state.currentChapter", "features.currentChapter"]
1793
+ }
1794
+ ];
1795
+
1796
+ // src/ts/plugs/menus/settings/modes.ts
1797
+ var getSettingsModesMenu = (plug) => ({
1798
+ id: "general",
1799
+ label: "Advanced",
1800
+ icon: "settings",
1801
+ widget: "group",
1802
+ getValue: () => "",
1803
+ items: [
1804
+ {
1805
+ id: "modes",
1806
+ label: "Modes",
1807
+ widget: "group",
1808
+ getValue: () => plug.config.fullscreen.disabled && plug.config.pictureInPicture.disabled && plug.config.theater.disabled && plug.config.miniplayer.disabled ? "Off" : "On",
1809
+ tipHTML: "Configure fullscreen, picture-in-picture, and display modes",
1810
+ configPaths: ["settings.modes.fullscreen.disabled", "settings.modes.pictureInPicture.disabled", "settings.modes.theater.disabled", "settings.modes.miniplayer.disabled"],
1811
+ items: [
1812
+ {
1813
+ id: "modesFullscreen",
1814
+ label: "Fullscreen",
1815
+ widget: "group",
1816
+ getValue: () => plug.config.fullscreen.disabled ? "Off" : "On",
1817
+ configPaths: ["settings.modes.fullscreen.disabled"],
1818
+ items: [
1819
+ {
1820
+ id: "modesFullscreenDisabled",
1821
+ label: "Disable",
1822
+ widget: "toggle",
1823
+ getValue: () => plug.config.fullscreen.disabled ? "On" : "Off",
1824
+ onChange: (val) => plug.config.fullscreen.disabled = val,
1825
+ configPaths: ["settings.modes.fullscreen.disabled"]
1826
+ },
1827
+ {
1828
+ id: "modesFullscreenOrientationLock",
1829
+ label: "Orientation lock",
1830
+ widget: "select",
1831
+ getValue: () => getUIOpt(plug.config.fullscreen.orientationLock.options, plug.config.fullscreen.orientationLock.value),
1832
+ getOptions: () => plug.config.fullscreen.orientationLock.options,
1833
+ onChange: (val) => plug.config.fullscreen.orientationLock.value = getBoolOrStr(val),
1834
+ configPaths: ["settings.modes.fullscreen.orientationLock.value"],
1835
+ tipHTML: "Lock the device orientation to a specific layout when entering fullscreen"
1836
+ },
1837
+ {
1838
+ id: "modesFullscreenOnRotate",
1839
+ label: "Auto-fullscreen on rotate",
1840
+ widget: "select",
1841
+ getValue: () => getUIOpt(plug.config.fullscreen.onRotate.options, plug.config.fullscreen.onRotate.value),
1842
+ getOptions: () => plug.config.fullscreen.onRotate.options,
1843
+ onChange: (val) => plug.config.fullscreen.onRotate.value = getBoolOrStr(val),
1844
+ configPaths: ["settings.modes.fullscreen.onRotate.value"],
1845
+ tipHTML: "Automatically enter fullscreen mode when the device is rotated"
1846
+ }
1847
+ ]
1848
+ },
1849
+ {
1850
+ id: "modesPip",
1851
+ label: "Picture in picture",
1852
+ widget: "group",
1853
+ getValue: () => plug.config.pictureInPicture.disabled ? "Off" : "On",
1854
+ configPaths: ["settings.modes.pictureInPicture.disabled"],
1855
+ items: [
1856
+ {
1857
+ id: "modesPipDisabled",
1858
+ label: "Disable",
1859
+ widget: "toggle",
1860
+ getValue: () => plug.config.pictureInPicture.disabled ? "On" : "Off",
1861
+ onChange: (val) => plug.config.pictureInPicture.disabled = val,
1862
+ configPaths: ["settings.modes.pictureInPicture.disabled"]
1863
+ },
1864
+ {
1865
+ id: "modesPipFloating",
1866
+ label: "Floating player API",
1867
+ widget: "group",
1868
+ getValue: () => "",
1869
+ items: [
1870
+ {
1871
+ id: "modesPipFloatingDisabled",
1872
+ label: "Disable",
1873
+ widget: "toggle",
1874
+ getValue: () => plug.config.pictureInPicture.floatingPlayer.disabled ? "On" : "Off",
1875
+ onChange: (val) => plug.config.pictureInPicture.floatingPlayer.disabled = val,
1876
+ configPaths: ["settings.modes.pictureInPicture.floatingPlayer.disabled"],
1877
+ title: "The floating player (Document PiP API) allows keeping the custom player UI in the Picture-in-Picture window"
1878
+ },
1879
+ {
1880
+ id: "modesPipFloatingWidth",
1881
+ label: "Initial width",
1882
+ widget: "range",
1883
+ getValue: () => `${Math.round(plug.config.pictureInPicture.floatingPlayer.width)}px`,
1884
+ getRange: () => ({ min: 100, max: 1200, step: 20, formatTooltip: (v) => `${Math.round(v)}px` }),
1885
+ onChange: (val) => plug.config.pictureInPicture.floatingPlayer.width = val,
1886
+ configPaths: ["settings.modes.pictureInPicture.floatingPlayer.width"]
1887
+ },
1888
+ {
1889
+ id: "modesPipFloatingHeight",
1890
+ label: "Initial height",
1891
+ widget: "range",
1892
+ getValue: () => `${Math.round(plug.config.pictureInPicture.floatingPlayer.height)}px`,
1893
+ getRange: () => ({ min: 100, max: 800, step: 20, formatTooltip: (v) => `${Math.round(v)}px` }),
1894
+ onChange: (val) => plug.config.pictureInPicture.floatingPlayer.height = val,
1895
+ configPaths: ["settings.modes.pictureInPicture.floatingPlayer.height"]
1896
+ },
1897
+ {
1898
+ id: "modesPipFloatingDisallowReturn",
1899
+ label: "Disallow return to opener",
1900
+ widget: "toggle",
1901
+ getValue: () => plug.config.pictureInPicture.floatingPlayer.disallowReturnToOpener ? "On" : "Off",
1902
+ onChange: (val) => plug.config.pictureInPicture.floatingPlayer.disallowReturnToOpener = val,
1903
+ configPaths: ["settings.modes.pictureInPicture.floatingPlayer.disallowReturnToOpener"],
1904
+ title: "Hide the 'Back to Tab' button in the floating window"
1905
+ },
1906
+ {
1907
+ id: "modesPipFloatingPreferInitial",
1908
+ label: "Prefer initial placement",
1909
+ widget: "toggle",
1910
+ getValue: () => plug.config.pictureInPicture.floatingPlayer.preferInitialWindowPlacement ? "On" : "Off",
1911
+ onChange: (val) => plug.config.pictureInPicture.floatingPlayer.preferInitialWindowPlacement = val,
1912
+ configPaths: ["settings.modes.pictureInPicture.floatingPlayer.preferInitialWindowPlacement"],
1913
+ title: "Try to open the floating window in the same screen position it was previously closed"
1914
+ }
1915
+ ]
1916
+ }
1917
+ ]
1918
+ },
1919
+ {
1920
+ id: "modesTheater",
1921
+ label: "Theater mode",
1922
+ widget: "group",
1923
+ getValue: () => plug.config.theater.disabled ? "Off" : "On",
1924
+ configPaths: ["settings.modes.theater.disabled"],
1925
+ items: [
1926
+ {
1927
+ id: "modesTheaterDisabled",
1928
+ label: "Disable",
1929
+ widget: "toggle",
1930
+ getValue: () => plug.config.theater.disabled ? "On" : "Off",
1931
+ onChange: (val) => plug.config.theater.disabled = val,
1932
+ configPaths: ["settings.modes.theater.disabled"]
1933
+ }
1934
+ ]
1935
+ },
1936
+ {
1937
+ id: "modesMiniplayer",
1938
+ label: "Miniplayer",
1939
+ widget: "group",
1940
+ getValue: () => plug.config.miniplayer.disabled ? "Off" : "On",
1941
+ configPaths: ["settings.modes.miniplayer.disabled"],
1942
+ items: [
1943
+ {
1944
+ id: "modesMiniplayerDisabled",
1945
+ label: "Disable",
1946
+ widget: "toggle",
1947
+ getValue: () => plug.config.miniplayer.disabled ? "On" : "Off",
1948
+ onChange: (val) => plug.config.miniplayer.disabled = val,
1949
+ configPaths: ["settings.modes.miniplayer.disabled"]
1950
+ },
1951
+ {
1952
+ id: "modesMiniplayerMinWidth",
1953
+ label: "Min window width",
1954
+ widget: "range",
1955
+ getValue: () => `${Math.round(plug.config.miniplayer.minWindowWidth)}px`,
1956
+ getRange: () => ({ min: 100, max: 1200, step: 20, formatTooltip: (v) => `${Math.round(v)}px` }),
1957
+ onChange: (val) => plug.config.miniplayer.minWindowWidth = val,
1958
+ configPaths: ["settings.modes.miniplayer.minWindowWidth"]
1959
+ }
1960
+ ]
1961
+ }
1962
+ ]
1963
+ }
1964
+ ]
1965
+ });
1966
+
1967
+ // src/ts/plugs/menus/settings/objectFit.ts
1968
+ var getSettingsObjectFitMenu = (plug) => ({
1969
+ id: "general",
1970
+ label: "Advanced",
1971
+ icon: "settings",
1972
+ widget: "group",
1973
+ getValue: () => "",
1974
+ items: [
1975
+ {
1976
+ id: "layout-objectFit",
1977
+ label: "Video fit",
1978
+ widget: "select",
1979
+ feature: "objectFit",
1980
+ getValue: () => plug.toLabel(),
1981
+ getOptions: () => plug.config.options,
1982
+ onChange: (val) => plug.media.intent.objectFit = val,
1983
+ mediaPaths: ["state.objectFit"]
1984
+ }
1985
+ ]
1986
+ });
1987
+
1988
+ // src/ts/plugs/menus/settings/overlay.ts
1989
+ var getSettingsOverlayMenu = (plug) => ({
1990
+ id: "general",
1991
+ label: "Advanced",
1992
+ icon: "settings",
1993
+ widget: "group",
1994
+ getValue: () => "",
1995
+ items: [
1996
+ {
1997
+ id: "overlayConfig",
1998
+ label: "Overlay",
1999
+ widget: "group",
2000
+ getValue: () => getUIOpt(plug.config.curtain.options, plug.config.curtain.value),
2001
+ tipHTML: "Configure the overlay behavior and appearance",
2002
+ configPaths: ["settings.overlay.curtain.value"],
2003
+ items: [
2004
+ {
2005
+ id: "overlayBehavior",
2006
+ label: "Hide behaviour",
2007
+ widget: "select",
2008
+ getValue: () => getUIOpt(plug.config.behavior.options, plug.config.behavior.value),
2009
+ getOptions: () => plug.config.behavior.options,
2010
+ onChange: (val) => plug.config.behavior.value = val,
2011
+ configPaths: ["settings.overlay.behavior.value"]
2012
+ },
2013
+ {
2014
+ id: "overlayDelay",
2015
+ label: "Auto-hide delay",
2016
+ widget: "input",
2017
+ inputs: [{ label: "ms", placeholder: "2500", type: "number", min: "0", value: () => plug.config.delay }],
2018
+ getValue: () => `${plug.config.delay}ms`,
2019
+ onChange: (val) => plug.config.delay = val["ms"],
2020
+ configPaths: ["settings.overlay.delay"]
2021
+ },
2022
+ {
2023
+ id: "overlayCurtain",
2024
+ label: "Curtain style",
2025
+ widget: "select",
2026
+ getValue: () => getUIOpt(plug.config.curtain.options, plug.config.curtain.value),
2027
+ getOptions: () => plug.config.curtain.options,
2028
+ onChange: (val) => plug.config.curtain.value = val,
2029
+ configPaths: ["settings.overlay.curtain.value"]
2030
+ }
2031
+ ]
2032
+ }
2033
+ ]
2034
+ });
2035
+
2036
+ // src/ts/plugs/menus/settings/persist.ts
2037
+ var getSettingsPersistMenu = (plug) => ({
2038
+ id: "general",
2039
+ label: "Advanced",
2040
+ icon: "settings",
2041
+ widget: "group",
2042
+ getValue: () => "",
2043
+ items: [
2044
+ {
2045
+ id: "persist",
2046
+ label: "Persistence",
2047
+ widget: "group",
2048
+ tipHTML: "Configure how settings and playback state are saved to local storage.",
2049
+ getValue: () => "On",
2050
+ items: [
2051
+ {
2052
+ id: "persistThrottle",
2053
+ label: "Save Throttle",
2054
+ widget: "input",
2055
+ inputs: [{ label: "ms", placeholder: "2500", helperText: { info: "How often the player saves state changes. Higher numbers = fewer writes but less accurate resumption." }, type: "number", min: "0", value: () => plug.module.config.throttle }],
2056
+ getValue: () => `${plug.module.config.throttle}ms`,
2057
+ onChange: (val) => plug.config.throttle = val["ms"],
2058
+ configPaths: ["settings.persist.throttle"]
2059
+ },
2060
+ {
2061
+ id: "persistStrict",
2062
+ label: "Strict resume",
2063
+ widget: "toggle",
2064
+ getValue: () => plug.module.config.strict ? "On" : "Off",
2065
+ onChange: (val) => plug.config.strict = val,
2066
+ configPaths: ["settings.persist.strict"],
2067
+ title: "Force save immediately before page closes or reloads for accurate resumption, might restore cleared data."
2068
+ },
2069
+ {
2070
+ id: "persistClearStorage",
2071
+ label: "Clear Storage",
2072
+ title: "Clear all saved player settings and preferences.",
2073
+ widget: "button",
2074
+ getValue: () => "Clear",
2075
+ onChange: async () => {
2076
+ const ok = await t007.confirm("Are you sure you want to clear all your data?", { id: `${plug.ctlr.config.id}-clear-dialog`, rootElement: plug.media.container, confirmText: "Clear", title: "Clear data" });
2077
+ if (ok) plug.module.clear(), plug.ctlr.plug("settings.toasts")?.toast?.success("Storage cleared successfully!", { tag: "tmg-persist", signal: plug.signal });
2078
+ }
2079
+ }
2080
+ ]
2081
+ }
2082
+ ]
2083
+ });
2084
+
2085
+ // src/ts/plugs/menus/settings/playbackRate.ts
2086
+ var import_utils21 = require("sia-reactor/utils");
2087
+ var getSettingsPlaybackRateMenu = (plug) => [
2088
+ {
2089
+ id: "playbackRate",
2090
+ label: "Playback speed",
2091
+ icon: "playbackrate",
2092
+ widget: "group",
2093
+ feature: "playbackRate",
2094
+ tipHTML: "Configure custom playback speeds",
2095
+ getValue: () => plug.media.state.playbackRate === 1 ? "Normal" : `${plug.media.state.playbackRate}x`,
2096
+ items: [
2097
+ {
2098
+ id: "playbackRateSlider",
2099
+ label: "Custom",
2100
+ widget: "range",
2101
+ inline: true,
2102
+ getRange() {
2103
+ const divs = [];
2104
+ for (let i = Math.ceil(plug.config.min); i <= plug.config.max; i++) divs.push(i);
2105
+ return { min: plug.config.min, max: plug.config.max, step: 0.05, formatTooltip: (v) => `${v.toFixed(2)}x`, divs };
2106
+ },
2107
+ getValue: () => plug.media.state.playbackRate.toFixed(2).replace(/\.?0+$/, "") + "x",
2108
+ onChange: (val) => plug.media.intent.playbackRate = val,
2109
+ configPaths: ["settings.playbackRate.min", "settings.playbackRate.max"],
2110
+ mediaPaths: ["state.playbackRate"]
2111
+ },
2112
+ {
2113
+ id: "playbackRateSelect",
2114
+ label: "Presets",
2115
+ widget: "select",
2116
+ inline: true,
2117
+ getOptions: () => plug.config.options.map((o) => {
2118
+ const p = parseUIOpt(o);
2119
+ return { value: p.value, display: p.value === 1 ? "Normal" : p.display };
2120
+ }),
2121
+ getValue: () => String(plug.media.state.playbackRate),
2122
+ onChange: (val) => plug.media.intent.playbackRate = val,
2123
+ mediaPaths: ["state.playbackRate"]
2124
+ }
2125
+ ],
2126
+ mediaPaths: ["state.playbackRate"]
2127
+ },
2128
+ {
2129
+ id: "limits",
2130
+ label: "Limits",
2131
+ icon: "configure",
2132
+ widget: "group",
2133
+ getValue: () => "",
2134
+ items: [
2135
+ {
2136
+ id: "playbackRateLimits",
2137
+ label: "Playback speed",
2138
+ widget: "limits",
2139
+ configPaths: ["settings.playbackRate.min", "settings.playbackRate.max", "settings.playbackRate.skip"],
2140
+ getValue: () => "",
2141
+ getLimits: () => [{ name: "playbackRate", label: "Clamp bounds", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],
2142
+ onChange: (val) => (0, import_utils21.fanout)(plug.config, { min: val.playbackRate_min, max: val.playbackRate_max, skip: val.playbackRate_step }, { skipUndefined: true })
2143
+ }
2144
+ ]
2145
+ }
2146
+ ];
2147
+
2148
+ // src/ts/plugs/menus/settings/poster.ts
2149
+ var getSettingsPosterMenu = (plug) => ({
2150
+ id: "general",
2151
+ label: "Advanced",
2152
+ icon: "settings",
2153
+ widget: "group",
2154
+ getValue: () => "",
2155
+ items: [
2156
+ {
2157
+ id: "poster",
2158
+ label: "Poster",
2159
+ widget: "group",
2160
+ tipHTML: "If strict, the poster hides as soon as playback starts or time changes, and doesn't come back when the video ends.",
2161
+ getValue: () => plug.settings.poster.strict ? "Strict" : "Normal",
2162
+ configPaths: ["settings.poster.strict"],
2163
+ items: [
2164
+ {
2165
+ id: "posterStrict",
2166
+ label: "Strict Mode",
2167
+ widget: "toggle",
2168
+ getValue: () => plug.settings.poster.strict ? "On" : "Off",
2169
+ onChange: (val) => plug.settings.poster.strict = val,
2170
+ configPaths: ["settings.poster.strict"]
2171
+ }
2172
+ ]
2173
+ }
2174
+ ]
2175
+ });
2176
+
2177
+ // src/ts/plugs/menus/settings/sleepTimer.ts
2178
+ var getSettingsSleepTimerMenu = (plug) => {
2179
+ const getEndDisplay = () => {
2180
+ const timeLeft = plug.media.status.duration - plug.media.state.currentTime;
2181
+ return Number.isFinite(timeLeft) && timeLeft > 0 ? `End of video (${Math.floor(timeLeft / 60)} minutes)` : "End of video";
2182
+ };
2183
+ return {
2184
+ id: "sleepTimer",
2185
+ label: "Sleep timer",
2186
+ icon: "timer",
2187
+ widget: "select",
2188
+ getValue: () => plug.state.ms ? plug.state.ms === -1 ? getEndDisplay() : formatMediaTime({ time: plug.state.ms / 1e3, format: "long" }) : "Off",
2189
+ getOptions: () => [
2190
+ { display: "Off", value: 0 },
2191
+ { display: "10 minutes", value: 10 * 60 * 1e3 },
2192
+ { display: "15 minutes", value: 15 * 60 * 1e3 },
2193
+ { display: "20 minutes", value: 20 * 60 * 1e3 },
2194
+ { display: "30 minutes", value: 30 * 60 * 1e3 },
2195
+ { display: "45 minutes", value: 45 * 60 * 1e3 },
2196
+ { display: "60 minutes", value: 60 * 60 * 1e3 },
2197
+ { display: getEndDisplay(), value: -1 }
2198
+ ],
2199
+ onChange: (value) => plug.setTimer(Number(value))
2200
+ };
2201
+ };
2202
+
2203
+ // src/ts/plugs/menus/settings/time.ts
2204
+ var import_utils22 = require("sia-reactor/utils");
2205
+ var getSettingsTimeMenu = (plug) => ({
2206
+ id: "limits",
2207
+ label: "Limits",
2208
+ icon: "configure",
2209
+ widget: "group",
2210
+ getValue: () => "",
2211
+ items: [
2212
+ {
2213
+ id: "timeLimits",
2214
+ label: "Time",
2215
+ widget: "limits",
2216
+ configPaths: ["settings.time.min", "settings.time.max", "settings.time.skip", "settings.time.start", "settings.time.end"],
2217
+ getValue: () => "",
2218
+ getLimits: () => [
2219
+ { name: "time", label: "Clamp bounds", min: plug.config.min, max: plug.config.max, step: plug.config.skip },
2220
+ { name: "time", label: "Start & End", start: plug.config.start ?? 0, end: plug.config.end }
2221
+ ],
2222
+ onChange: (val) => (0, import_utils22.fanout)(plug.config, { min: val.time_min, max: val.time_max, skip: val.time_step, start: val.time_start, end: val.time_end }, { skipUndefined: true })
2223
+ }
2224
+ ]
2225
+ });
2226
+
2227
+ // src/ts/plugs/menus/settings/timeTravel.ts
2228
+ var formatEntry = (entry, index) => {
2229
+ if (!entry) return { display: `(${index + 1}) Unknown`, infoText: "" };
2230
+ if (entry.nodes) return { display: `(${index + 1}) ${entry.label || `Batch (${entry.nodes.length})`}`, infoText: "" };
2231
+ const rawPath = entry.path ? String(entry.path) : "change", typeStr = rawPath.startsWith("state.") ? " (State)" : rawPath.startsWith("intent.") ? " (Intent)" : rawPath.startsWith("config.") ? " (Config)" : "", p = rawPath.replace(/^(intent|state|config)\./, "").split(".").pop() || rawPath;
2232
+ return { display: `(${index + 1}) ${capitalize(uncamelize(p))}${typeStr}`, infoText: entry.to != null ? String(entry.to) : "" };
2233
+ };
2234
+ var getSettingsTimeTravelMenu = (plug) => ({
2235
+ id: "general",
2236
+ label: "Advanced",
2237
+ icon: "settings",
2238
+ widget: "group",
2239
+ getValue: () => "",
2240
+ items: [
2241
+ {
2242
+ id: "timeTravel",
2243
+ label: "Time travel",
2244
+ widget: "group",
2245
+ getValue: () => plug.module.config.limit ? "On" : "Off",
2246
+ onWire: (syncUI, signal) => plug.module.config.on("limit", syncUI, { signal }),
2247
+ tipHTML: "\u{1F30C} Step through the space-time continuum of your player's state. Rewind mistakes, replay interactions, and witness the magic of reactive architecture firsthand.",
2248
+ items: [
2249
+ {
2250
+ id: "timeTravelHistory",
2251
+ label: "History",
2252
+ widget: "select",
2253
+ getValue: () => plug.module.state.history.length ? `(${plug.module.state.currentFrame}) of ${plug.module.state.history.length}` : "Empty",
2254
+ getOptions: () => {
2255
+ const h = plug.module.state.history, centerIdx = Math.max(0, (plug.module.state.currentFrame ?? 0) - 1), startIdx = Math.max(0, centerIdx - 10);
2256
+ return h.slice(startIdx, Math.min(h.length, centerIdx + 11)).map((entry, i) => {
2257
+ const actualIdx = startIdx + i, formatted = formatEntry(entry, actualIdx);
2258
+ return { value: `(${actualIdx + 1}) of ${plug.module.state.history.length}`, display: formatted.display, infoText: formatted.infoText };
2259
+ }).reverse();
2260
+ },
2261
+ onChange: (val) => {
2262
+ const match = val.match(/\((\d+)\)/);
2263
+ if (match) plug.module.jumpTo(Number(match[1]));
2264
+ },
2265
+ onWire: (syncUI, signal) => {
2266
+ const tk = "tt_" + Math.random();
2267
+ for (const k of ["currentFrame", "tracking", "paused"]) plug.module.state.on(k, () => plug.ctlr.throttle(tk, () => (syncUI(), plug.ctlr.plug("settings.settingsView")?.menu?.syncUI("timeTravelHistory")), 30, false), { signal });
2268
+ },
2269
+ configPaths: ["settings.timeTravel.module"],
2270
+ actions: [
2271
+ {
2272
+ id: "toggleWhitelist",
2273
+ getLabel: () => {
2274
+ const w = plug.module.config.whitelist;
2275
+ return w?.[0] === "state" || w?.[0]?.[0] === "state" ? "Record Intents" : "Record States";
2276
+ },
2277
+ onClick: () => {
2278
+ const w = plug.module.config.whitelist, isState = w?.[0] === "state" || w?.[0]?.[0] === "state";
2279
+ plug.config.module.whitelist = Array.isArray(w) ? [isState ? "intent" : "state"] : { ...w, 0: [isState ? "intent" : "state"] };
2280
+ plug.ctlr.plug("settings.settingsView")?.menu?.syncUI("timeTravelHistory");
2281
+ }
2282
+ }
2283
+ ],
2284
+ footerActions: [
2285
+ { id: "undo", getLabel: () => "Undo", onClick: () => plug.module.undo() },
2286
+ { id: "redo", getLabel: () => "Redo", onClick: () => plug.module.redo() },
2287
+ { id: "playPause", getLabel: () => plug.module.state.paused ? "Play" : "Pause", onClick: () => plug.module.state.paused ? plug.module.play() : plug.module.pause() },
2288
+ { id: "rewind", getLabel: () => "Rewind", onClick: () => plug.module.rewind() },
2289
+ { id: "toggleTrack", getLabel: () => plug.module.state.tracking ? "Untrack" : "Track", onClick: () => plug.module.state.tracking ? plug.module.untrack() : plug.module.track() },
2290
+ { id: "clear", getLabel: () => "Clear", onClick: () => plug.module.clear() }
2291
+ ]
2292
+ },
2293
+ {
2294
+ id: "timeTravelPersist",
2295
+ label: "Persist history",
2296
+ widget: "toggle",
2297
+ getValue: () => plug.config.persist ? "On" : "Off",
2298
+ onChange: (val) => plug.config.persist = val,
2299
+ configPaths: ["settings.timeTravel.persist"],
2300
+ title: "Save your state history across page reloads"
2301
+ }
2302
+ ]
2303
+ }
2304
+ ]
2305
+ });
2306
+
2307
+ // src/ts/plugs/menus/settings/toasts.ts
2308
+ var import_toast = require("@t007/toast");
2309
+ var TOAST_BOOLEAN_OPTS = [
2310
+ { option: "Default", value: "default" },
2311
+ { option: "Yes", value: "yes" },
2312
+ { option: "No", value: "no" }
2313
+ ];
2314
+ var toToastFormOpts = (opts) => [{ option: "Default", value: "default" }, ...opts.map((o) => ({ option: o.display, value: o.value }))];
2315
+ var TOAST_FORM_INPUTS = [
2316
+ { label: "Type", type: "select", options: toToastFormOpts(import_toast.TOAST_UI_TYPES) },
2317
+ { label: "Position", type: "select", options: toToastFormOpts(import_toast.TOAST_UI_POSITIONS) },
2318
+ { label: "Animation", type: "select", options: toToastFormOpts(import_toast.TOAST_UI_ANIMATIONS) },
2319
+ { label: "Close Button", type: "select", options: TOAST_BOOLEAN_OPTS },
2320
+ { label: "Hide Progress Bar", type: "select", options: TOAST_BOOLEAN_OPTS },
2321
+ { label: "Close On Click", type: "select", options: TOAST_BOOLEAN_OPTS },
2322
+ { label: "Drag To Close", type: "select", options: toToastFormOpts(import_toast.TOAST_UI_DRAG_OPTIONS) },
2323
+ { label: "Drag Direction", type: "select", options: toToastFormOpts(import_toast.TOAST_UI_DRAG_DIRECTIONS) },
2324
+ { label: "Auto Close (ms)", type: "number", helperText: { info: "Blank for Default, -1 for None" }, min: "-1" }
2325
+ ];
2326
+ var getActionLogicOpts = (plug) => [
2327
+ { option: "None", value: "none" },
2328
+ ...Object.keys(plug.ctlr.actions).filter((k) => !plug.ctlr.actions[k]?.private).map((k) => ({ value: k, option: plug.ctlr.actions[k]?.label || capitalize(k.replace(/([A-Z])/g, " $1").toLowerCase()) }))
2329
+ ];
2330
+ var getSettingsToastsMenu = (plug) => ({
2331
+ id: "general",
2332
+ label: "Advanced",
2333
+ widget: "group",
2334
+ getValue: () => "",
2335
+ items: [
2336
+ {
2337
+ id: "toasts",
2338
+ label: "Notifications",
2339
+ widget: "group",
2340
+ getValue: () => plug.config.disabled ? "Off" : "On",
2341
+ configPaths: ["settings.toasts.disabled"],
2342
+ items: [
2343
+ {
2344
+ id: "toastsCustomReminders",
2345
+ label: "Custom Reminders",
2346
+ widget: "group",
2347
+ getValue: () => plug.state.reminders.length ? `${plug.state.reminders.length} Active` : "",
2348
+ items: [
2349
+ {
2350
+ id: "toastsCreateReminder",
2351
+ label: "Create Reminder",
2352
+ widget: "input",
2353
+ getValue: () => "",
2354
+ inputs: [{ label: "Message", placeholder: "Take a break!", helperText: { info: "The message to display in the reminder" }, required: true }, { label: "Delay (ms)", type: "number", helperText: { info: "0 for Immediate" }, required: true, min: "0", value: 0 }, { label: "Action", type: "select", options: getActionLogicOpts(plug) }, ...TOAST_FORM_INPUTS],
2355
+ onChange: (val) => {
2356
+ const parse = (v) => v === "default" ? void 0 : v === "yes" ? true : v === "no" ? false : v === "none" ? false : !isNaN(Number(v)) && isStr(v) ? Number(v) : v;
2357
+ plug.addReminder({ message: val.Message, delay: val["Delay (ms)"], actionId: val.Action, type: parse(val.Type), position: parse(val.Position), animation: parse(val.Animation), closeButton: parse(val["Close Button"]), hideProgressBar: parse(val["Hide Progress Bar"]), closeOnClick: parse(val["Close On Click"]), dragToClose: parse(val["Drag To Close"]), dragToCloseDir: parse(val["Drag Direction"]), autoClose: val["Auto Close (ms)"] === -1 ? false : val["Auto Close (ms)"] });
2358
+ plug.ctlr.plug("settings.settingsView")?.menu.syncUI();
2359
+ }
2360
+ },
2361
+ {
2362
+ id: "toastsActiveReminders",
2363
+ label: "Active",
2364
+ widget: "drag-select",
2365
+ getValue: () => "",
2366
+ getOptions: () => plug.state.reminders.map((r) => ({ value: r.id, display: r.message, infoText: (r.delay ? `${Math.floor(r.delay / 1e3 / 60)} minutes` : "Immediately") + (r.actionId && r.actionId !== "none" ? ` -> ${plug.ctlr.actions[r.actionId]?.label || capitalize(r.actionId.replace(/([A-Z])/g, " $1").toLowerCase())}` : "") })),
2367
+ onDelete: (idx) => {
2368
+ const id = plug.state.reminders[idx]?.id;
2369
+ id && (plug.removeReminder(id), plug.ctlr.plug("settings.settingsView")?.menu.syncUI());
2370
+ }
2371
+ }
2372
+ ]
2373
+ },
2374
+ {
2375
+ id: "toastsDisabled",
2376
+ label: "Disable",
2377
+ widget: "toggle",
2378
+ getValue: () => plug.config.disabled ? "On" : "Off",
2379
+ onChange: (val) => (plug.config.disabled = val, !val && plug.toast?.("Notifications enabled!", { tag: "tmg-tsts", type: "success", renotify: true })),
2380
+ configPaths: ["settings.toasts.disabled"]
2381
+ },
2382
+ {
2383
+ id: "toastsPosition",
2384
+ label: "Position",
2385
+ widget: "select",
2386
+ getOptions: () => import_toast.TOAST_UI_POSITIONS,
2387
+ getValue: () => import_toast.TOAST_UI_POSITIONS.find((o) => o.value === plug.config.position)?.display,
2388
+ onChange: (val) => (plug.config.position = val, plug.toast?.("Position updated!", { tag: "tmg-tsts", position: val, type: "success", renotify: true })),
2389
+ configPaths: ["settings.toasts.position"],
2390
+ tipHTML: "Where the toasts should appear on the screen"
2391
+ },
2392
+ {
2393
+ id: "toastAnimation",
2394
+ label: "Animation",
2395
+ widget: "select",
2396
+ getOptions: () => import_toast.TOAST_UI_ANIMATIONS,
2397
+ getValue: () => import_toast.TOAST_UI_ANIMATIONS.find((o) => o.value === (isStr(plug.config.animation) ? plug.config.animation : "slide"))?.display,
2398
+ onChange: (val) => (plug.config.animation = val, plug.toast?.("Animation updated!", { tag: "tmg-tsts", animation: val, type: "success", renotify: true })),
2399
+ configPaths: ["settings.toasts.animation"]
2400
+ },
2401
+ {
2402
+ id: "toastsLimit",
2403
+ label: "Max Visible",
2404
+ widget: "range",
2405
+ getValue: () => String(plug.config.limit),
2406
+ getRange: () => ({ min: 1, max: 30, step: 1, formatTooltip: (v) => String(Math.round(v)) }),
2407
+ onChange: (val) => plug.config.limit = val,
2408
+ configPaths: ["settings.toasts.limit"]
2409
+ },
2410
+ {
2411
+ id: "toastsNewestOnTop",
2412
+ label: "Newest on Top",
2413
+ widget: "toggle",
2414
+ getValue: () => plug.config.newestOnTop ? "On" : "Off",
2415
+ onChange: (val) => plug.config.newestOnTop = val,
2416
+ configPaths: ["settings.toasts.newestOnTop"]
2417
+ },
2418
+ {
2419
+ id: "toastsProgressBar",
2420
+ label: "Hide Progress Bar",
2421
+ widget: "toggle",
2422
+ getValue: () => plug.config.hideProgressBar ? "On" : "Off",
2423
+ onChange: (val) => (plug.config.hideProgressBar = val, plug.toast?.("Progress bar visibility updated!", { tag: "tmg-tsts", hideProgressBar: val, type: "info", renotify: true })),
2424
+ configPaths: ["settings.toasts.hideProgressBar"]
2425
+ },
2426
+ {
2427
+ id: "toastsCloseButton",
2428
+ label: "Show Close Button",
2429
+ widget: "toggle",
2430
+ getValue: () => plug.config.closeButton ? "On" : "Off",
2431
+ onChange: (val) => (plug.config.closeButton = val, plug.toast?.("Close button visibility updated!", { tag: "tmg-tsts", closeButton: val, type: "info", renotify: true })),
2432
+ configPaths: ["settings.toasts.closeButton"]
2433
+ },
2434
+ {
2435
+ id: "toastsCloseOnClick",
2436
+ label: "Close on Click",
2437
+ widget: "toggle",
2438
+ getValue: () => plug.config.closeOnClick ? "On" : "Off",
2439
+ onChange: (val) => plug.config.closeOnClick = val,
2440
+ configPaths: ["settings.toasts.closeOnClick"]
2441
+ },
2442
+ {
2443
+ id: "toastsPauseOnHover",
2444
+ label: "Pause on Hover",
2445
+ widget: "toggle",
2446
+ getValue: () => plug.config.pauseOnHover ? "On" : "Off",
2447
+ onChange: (val) => plug.config.pauseOnHover = val,
2448
+ configPaths: ["settings.toasts.pauseOnHover"]
2449
+ },
2450
+ {
2451
+ id: "toastsPauseOnFocusLoss",
2452
+ label: "Pause on Focus Loss",
2453
+ widget: "toggle",
2454
+ getValue: () => plug.config.pauseOnFocusLoss ? "On" : "Off",
2455
+ onChange: (val) => plug.config.pauseOnFocusLoss = val,
2456
+ configPaths: ["settings.toasts.pauseOnFocusLoss"]
2457
+ },
2458
+ {
2459
+ id: "toastsDragToClose",
2460
+ label: "Drag to Close",
2461
+ widget: "toggle",
2462
+ getValue: () => import_toast.TOAST_UI_DRAG_OPTIONS.find((o) => o.value === plug.config.dragToClose)?.display,
2463
+ onChange: (val) => plug.config.dragToClose = val,
2464
+ configPaths: ["settings.toasts.dragToClose"]
2465
+ },
2466
+ {
2467
+ id: "toastsDragToCloseDir",
2468
+ label: "Drag Direction",
2469
+ widget: "select",
2470
+ getValue: () => import_toast.TOAST_UI_DRAG_DIRECTIONS.find((o) => o.value === plug.config.dragToCloseDir)?.display,
2471
+ getOptions: () => import_toast.TOAST_UI_DRAG_DIRECTIONS,
2472
+ onChange: (val) => plug.config.dragToCloseDir = val,
2473
+ configPaths: ["settings.toasts.dragToCloseDir"]
2474
+ }
2475
+ ]
2476
+ }
2477
+ ]
2478
+ });
2479
+
2480
+ // src/ts/plugs/menus/settings/volume.ts
2481
+ var import_utils23 = require("sia-reactor/utils");
2482
+ var getSettingsVolumeMenu = (plug) => ({
2483
+ id: "limits",
2484
+ label: "Limits",
2485
+ icon: "configure",
2486
+ widget: "group",
2487
+ getValue: () => "",
2488
+ items: [
2489
+ {
2490
+ id: "volumeLimits",
2491
+ label: "Volume",
2492
+ widget: "limits",
2493
+ configPaths: ["settings.volume.skip"],
2494
+ getValue: () => "",
2495
+ getLimits: () => [{ name: "volume", label: "Clamp bounds", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],
2496
+ onChange: (val) => (0, import_utils23.fanout)(plug.config, { min: val.volume_min, max: val.volume_max, skip: val.volume_step }, { skipUndefined: true })
2497
+ }
2498
+ ]
2499
+ });
2500
+
2501
+ // src/ts/plugs/menus/settings/voice.ts
2502
+ var getSettingsVoiceMenu = (plug) => ({
2503
+ id: "general",
2504
+ label: "Advanced",
2505
+ icon: "settings",
2506
+ widget: "group",
2507
+ getValue: () => "",
2508
+ items: [
2509
+ {
2510
+ id: "voice",
2511
+ label: "Voice",
2512
+ widget: "group",
2513
+ getValue: () => getUIOpt(plug.config.active.options, plug.config.active.value),
2514
+ configPaths: ["settings.voice.active.value"],
2515
+ items: [
2516
+ {
2517
+ id: "voiceActive",
2518
+ label: "Active",
2519
+ widget: "select",
2520
+ getValue: () => getUIOpt(plug.config.active.options, plug.config.active.value),
2521
+ getOptions: () => plug.config.active.options,
2522
+ onChange: (val) => plug.config.active.value = getBoolOrStr(val),
2523
+ configPaths: ["settings.voice.active.value"],
2524
+ tipHTML: "Turn the voice control engine on or off or passive (listens for the wake word to turn on)."
2525
+ },
2526
+ {
2527
+ id: "voiceWakeWord",
2528
+ label: "Wake word",
2529
+ widget: "input",
2530
+ inputs: [{ label: "Phrase", placeholder: "hey player", type: "text", value: () => plug.config.wakeWord, helperText: { info: "Phrase used to wake the assistant hands-free. Clear to disable." } }],
2531
+ getValue: () => plug.config.wakeWord ? `"${plug.config.wakeWord}"` : "",
2532
+ onChange: (val) => plug.config.wakeWord = val["Phrase"].trim(),
2533
+ configPaths: ["settings.voice.wakeWord"]
2534
+ },
2535
+ {
2536
+ id: "voiceBehavior",
2537
+ label: "UI Behavior",
2538
+ widget: "select",
2539
+ getOptions: () => plug.config.behavior.options,
2540
+ getValue: () => getUIOpt(plug.config.behavior.options, plug.config.behavior.value),
2541
+ onChange: (val) => plug.config.behavior.value = val,
2542
+ configPaths: ["settings.voice.behavior.value"],
2543
+ tipHTML: "Determines how and when the voice listening toast appears on screen."
2544
+ },
2545
+ {
2546
+ id: "voiceTimeout",
2547
+ label: "Sleep timeout",
2548
+ widget: "input",
2549
+ inputs: [{ label: "ms", placeholder: "7000", helperText: { info: "Time in ms of silence before the voice assistant goes back to sleep." }, type: "number", min: "1000", value: () => plug.config.timeout }],
2550
+ getValue: () => `${plug.config.timeout}ms`,
2551
+ onChange: (val) => plug.config.timeout = Number(val["ms"]),
2552
+ configPaths: ["settings.voice.timeout"]
2553
+ },
2554
+ {
2555
+ id: "voiceInputs",
2556
+ label: "Inputs",
2557
+ widget: "group",
2558
+ getValue: () => "",
2559
+ items: [
2560
+ {
2561
+ id: "voiceInputsDirect",
2562
+ label: "Direct",
2563
+ widget: "toggle",
2564
+ getValue: () => plug.config.inputs.direct ? "On" : "Off",
2565
+ onChange: (val) => plug.config.inputs.direct = val,
2566
+ configPaths: ["settings.voice.inputs.direct"],
2567
+ title: "Skips the root menu, dropping you straight into Media > Intent so you can say things like 'Volume 80' immediately."
2568
+ },
2569
+ {
2570
+ id: "voiceInputsStrict",
2571
+ label: "Strict",
2572
+ widget: "select",
2573
+ getOptions: () => plug.config.inputs.strict.options,
2574
+ getValue: () => getUIOpt(plug.config.inputs.strict.options, plug.config.inputs.strict.value),
2575
+ onChange: (val) => plug.config.inputs.strict.value = getBoolOrStr(val),
2576
+ configPaths: ["settings.voice.inputs.strict"],
2577
+ title: "If enabled, the voice assistant will always require your approval before executing a command otherwise they'll be executed automatically except for text."
2578
+ },
2579
+ {
2580
+ id: "voiceInputsAccuracy",
2581
+ label: "Match accuracy",
2582
+ widget: "range",
2583
+ getValue: () => `${Math.round(plug.config.inputs.accuracy * 100)}%`,
2584
+ getRange: () => ({ min: 10, max: 100, step: 5, formatTooltip: (v) => `${Math.round(v)}%` }),
2585
+ onChange: (val) => plug.config.inputs.accuracy = Number(val) / 100,
2586
+ configPaths: ["settings.voice.inputs.accuracy"],
2587
+ tipHTML: "Lower values allow for more speech-to-text typos (e.g., 'metadata' vs 'metadita'), but may trigger the wrong command."
2588
+ }
2589
+ ]
2590
+ },
2591
+ {
2592
+ id: "voiceCommands",
2593
+ label: "Commands",
2594
+ widget: "group",
2595
+ getValue: () => "",
2596
+ items: [
2597
+ {
2598
+ id: "voiceCommandsDisabled",
2599
+ label: "Disabled",
2600
+ widget: "toggle",
2601
+ getValue: () => plug.config.commandsDisabled ? "On" : "Off",
2602
+ onChange: (val) => plug.config.commandsDisabled = val,
2603
+ configPaths: ["settings.voice.commandsDisabled"],
2604
+ tipHTML: "Disable all custom and built-in voice commands (direct paths navigation will still work)."
2605
+ },
2606
+ {
2607
+ id: "voiceAutoToggles",
2608
+ label: "Auto-toggles",
2609
+ widget: "toggle",
2610
+ getValue: () => plug.config.autoToggles ? "On" : "Off",
2611
+ onChange: (val) => plug.config.autoToggles = val,
2612
+ configPaths: ["settings.voice.autoToggles"],
2613
+ tipHTML: "Automatically toggle boolean values when navigating directly to their path without needing an explicit on/off phrase."
2614
+ }
2615
+ ]
2616
+ },
2617
+ {
2618
+ id: "voicePositionGroup",
2619
+ label: "Positioning",
2620
+ widget: "group",
2621
+ getValue: () => "",
2622
+ items: [
2623
+ {
2624
+ id: "voiceListenerPos",
2625
+ label: "Listener",
2626
+ widget: "select",
2627
+ getOptions: () => plug.config.listenerPos.options,
2628
+ getValue: () => getUIOpt(plug.config.listenerPos.options, plug.config.listenerPos.value),
2629
+ onChange: (val) => plug.config.listenerPos.value = val,
2630
+ configPaths: ["settings.voice.listenerPos.value"],
2631
+ tipHTML: "Where the main microphone transcript appears"
2632
+ },
2633
+ {
2634
+ id: "voicePredictPos",
2635
+ label: "Predictor",
2636
+ widget: "select",
2637
+ getOptions: () => plug.config.predictorPos.options,
2638
+ getValue: () => getUIOpt(plug.config.predictorPos.options, plug.config.predictorPos.value),
2639
+ onChange: (val) => plug.config.predictorPos.value = val,
2640
+ configPaths: ["settings.voice.predictorPos.value"],
2641
+ tipHTML: "Where the AI prediction hints appear"
2642
+ }
2643
+ ]
2644
+ }
2645
+ ]
2646
+ }
2647
+ ]
2648
+ });
2649
+
2650
+ // src/ts/plugs/menus/settings/frame.ts
2651
+ var getSettingsFrameMenu = (plug) => ({
2652
+ id: "general",
2653
+ label: "Advanced",
2654
+ icon: "settings",
2655
+ widget: "group",
2656
+ getValue: () => "",
2657
+ items: [
2658
+ {
2659
+ id: "frameCapture",
2660
+ label: "Frame Capture",
2661
+ widget: "group",
2662
+ getValue: () => plug.config.disabled ? "Off" : "On",
2663
+ configPaths: ["settings.frame.disabled"],
2664
+ items: [
2665
+ {
2666
+ id: "frameDisabled",
2667
+ label: "Disable",
2668
+ widget: "toggle",
2669
+ getValue: () => plug.config.disabled ? "On" : "Off",
2670
+ onChange: (val) => plug.config.disabled = val,
2671
+ configPaths: ["settings.frame.disabled"]
2672
+ },
2673
+ {
2674
+ id: "frameCaptureAutoClose",
2675
+ label: "Notification Timeout (ms)",
2676
+ widget: "input",
2677
+ inputs: [{ label: "Timeout (ms)", type: "number", min: "0", step: "1", value: () => isBool(plug.config.captureAutoClose) ? -1 : plug.config.captureAutoClose, helperText: { info: "How long the captured image preview stays on screen before disappearing, -1 for None" } }],
2678
+ getValue: () => String(plug.config.captureAutoClose),
2679
+ onChange: (val) => plug.config.captureAutoClose = val["Timeout (ms)"] === -1 ? false : val["Timeout (ms)"],
2680
+ configPaths: ["settings.frame.captureAutoClose"]
2681
+ }
2682
+ ]
2683
+ }
2684
+ ]
2685
+ });
2686
+
2687
+ // src/ts/plugs/menus/settings/locked.ts
2688
+ var getSettingsLockedMenu = (plug) => ({
2689
+ id: "general",
2690
+ label: "Advanced",
2691
+ icon: "settings",
2692
+ widget: "group",
2693
+ getValue: () => "",
2694
+ items: [
2695
+ {
2696
+ id: "locked",
2697
+ label: "Lockable",
2698
+ widget: "group",
2699
+ getValue: () => plug.config.disabled ? "Off" : "On",
2700
+ configPaths: ["settings.locked.disabled"],
2701
+ tipHTML: "Configure whether the player can be locked to prevent accidental interactions.",
2702
+ items: [
2703
+ {
2704
+ id: "lockedDisabled",
2705
+ label: "Disable",
2706
+ widget: "toggle",
2707
+ getValue: () => plug.config.disabled ? "On" : "Off",
2708
+ onChange: (val) => plug.config.disabled = val,
2709
+ configPaths: ["settings.locked.disabled"]
2710
+ }
2711
+ ]
2712
+ }
2713
+ ]
2714
+ });
2715
+
2716
+ // src/ts/plugs/menus/settings/settingsView.ts
2717
+ var getSettingsSettingsViewMenu = (plug) => ({
2718
+ id: "general",
2719
+ label: "Advanced",
2720
+ icon: "settings",
2721
+ widget: "group",
2722
+ getValue: () => "",
2723
+ items: [
2724
+ {
2725
+ id: "settingsView",
2726
+ label: "Settings View",
2727
+ widget: "group",
2728
+ getValue: () => "",
2729
+ items: [
2730
+ {
2731
+ id: "settingsViewAutoPause",
2732
+ label: "Auto-pause on open",
2733
+ widget: "toggle",
2734
+ getValue: () => plug.config.autoPause ? "On" : "Off",
2735
+ onChange: (val) => plug.config.autoPause = val,
2736
+ configPaths: ["settings.settingsView.autoPause"],
2737
+ title: "Automatically pause the media when the settings view is opened"
2738
+ },
2739
+ {
2740
+ id: "settingsViewMenu",
2741
+ label: "Menu",
2742
+ widget: "group",
2743
+ getValue: () => "",
2744
+ items: [
2745
+ {
2746
+ id: "settingsViewPreserveStack",
2747
+ label: "Remember last opened",
2748
+ widget: "toggle",
2749
+ getValue: () => plug.config.menu.preserveStack ? "On" : "Off",
2750
+ onChange: (val) => plug.config.menu.preserveStack = val,
2751
+ configPaths: ["settings.settingsView.menu.preserveStack"],
2752
+ title: "Remember the last opened menu when re-opening the settings menu"
2753
+ }
2754
+ ]
2755
+ }
2756
+ ]
2757
+ },
2758
+ // Dev Mode is last in General, registered by settingsView (the last General contributor)
2759
+ {
2760
+ id: "generalDevMode",
2761
+ label: "Developer Mode",
2762
+ widget: "toggle",
2763
+ getValue: () => plug.ctlr.config.devMode ? "On" : "Off",
2764
+ onChange: (val) => plug.ctlr.config.devMode = val,
2765
+ configPaths: ["devMode"],
2766
+ tipHTML: "Enables developer tools, verbose logging, and debug overlays."
2767
+ }
2768
+ ]
2769
+ });
2770
+
2771
+ // src/ts/plugs/menus/settings/actions.ts
2772
+ var import_utils25 = require("sia-reactor/utils");
2773
+
2774
+ // src/ts/utils/keys.ts
2775
+ function formatActionForDisplay(keyShortcut, voiceCmd) {
2776
+ const kArr = Array.isArray(keyShortcut) ? keyShortcut : keyShortcut ? [keyShortcut] : [];
2777
+ return [kArr.length ? `\u2328\uFE0F ${kArr.map((c) => (0, import_utils8.cleanKeyCombo)(c).replace(" ", "space")).join(" or ")}` : "", voiceCmd?.length ? `\u{1F399}\uFE0F "${voiceCmd[0]}"` : ""].filter(Boolean).join(" \xB7 ");
2778
+ }
2779
+
2780
+ // src/ts/plugs/menus/settings/actions.ts
2781
+ var fmt2 = (s) => capitalize(
2782
+ s.replace(/([A-Z])/g, " $1").replace(/[._]/g, " ").trim()
2783
+ );
2784
+ var toId = (label) => camelize(
2785
+ label.trim().toLowerCase().replace(/[^a-z0-9\s]/g, "").trim()
2786
+ ) || "";
2787
+ var OPS = ["set", "increment", "decrement", "toggle"];
2788
+ var confirmDelete = (label, ctlr) => t007.confirm(`Delete "${label}"? This cannot be undone.`, {
2789
+ id: `${ctlr.config.id}-delete-confirm`,
2790
+ rootElement: ctlr.plug("settings.settingsView")?.menu.el ?? ctlr.media.container,
2791
+ confirmText: "Delete",
2792
+ title: "Confirm Delete"
2793
+ });
2794
+ var NAV_ROOT_ID = (actionId, stepTag) => `actions-${actionId}-logic-nav-${stepTag}`;
2795
+ var NAV_NODE_ID = (actionId, stepTag, path) => `actions-${actionId}-logic-nav-${stepTag}-${path.replace(/\./g, "-")}`;
2796
+ function buildPathNavNode(actionId, stepTag, path, root, ctlr, onConfirm, existingStep) {
2797
+ const label = path === "__root__" ? "Choose Path" : capitalize(
2798
+ path.split(".").pop().replace(/([A-Z])/g, " $1")
2799
+ ), val = path === "__root__" ? root : (0, import_utils25.getPath)(root, path), isLeaf = path !== "__root__" && (Array.isArray(val) || (0, import_utils25.isLeafPath)(root, path, void 0, val));
2800
+ if (isLeaf) {
2801
+ const type = Array.isArray(val) ? "array" : typeof val, displayVal = Array.isArray(val) ? `[${val.join(", ")}]` : String(val), tempStep = { path, op: existingStep?.path === path && existingStep?.op ? existingStep?.op : type === "boolean" ? "toggle" : "set", value: existingStep?.path === path ? existingStep?.value : void 0 };
2802
+ return {
2803
+ id: NAV_NODE_ID(actionId, stepTag, path),
2804
+ label,
2805
+ widget: "group",
2806
+ getValue: () => path,
2807
+ tipHTML: `Path: <code>${path}</code>, current value: <code>${displayVal}</code>`,
2808
+ items: [
2809
+ {
2810
+ id: `${NAV_NODE_ID(actionId, stepTag, path)}-op`,
2811
+ label: "Operation",
2812
+ widget: "select",
2813
+ getValue: () => tempStep.op ?? "set",
2814
+ getOptions: () => OPS.map((o) => ({ value: o, display: capitalize(o) })),
2815
+ onChange: (v) => tempStep.op = v
2816
+ },
2817
+ ...type !== "boolean" ? [
2818
+ {
2819
+ id: `${NAV_NODE_ID(actionId, stepTag, path)}-value`,
2820
+ label: "Value",
2821
+ widget: "input",
2822
+ inputs: [
2823
+ {
2824
+ label: "Value",
2825
+ type: type === "number" ? "number" : "text",
2826
+ placeholder: type === "number" ? "e.g. 80" : type === "array" ? "e.g. a, b, c" : "e.g. hello",
2827
+ value: () => tempStep.value !== void 0 ? String(tempStep.value) : "",
2828
+ helperText: { info: type === "number" ? "Enter a number" : type === "array" ? "Comma-separated values" : "Text value, leave blank for increment/decrement" }
2829
+ }
2830
+ ],
2831
+ getValue: () => tempStep.value !== void 0 ? String(tempStep.value) : "",
2832
+ onChange: (v) => {
2833
+ const raw = String(v["Value"] ?? "").trim();
2834
+ tempStep.value = raw === "" ? void 0 : raw === "true" ? true : raw === "false" ? false : type === "number" || !isNaN(+raw) ? +raw : type === "array" ? raw.split(",").map((s) => s.trim()) : raw;
2835
+ ctlr.plug("settings.settingsView")?.menu.syncUI(NAV_NODE_ID(actionId, stepTag, path));
2836
+ }
2837
+ }
2838
+ ] : [],
2839
+ {
2840
+ id: `${NAV_NODE_ID(actionId, stepTag, path)}-confirm`,
2841
+ label: "Confirm Step",
2842
+ widget: "button",
2843
+ getValue: () => "",
2844
+ onChange: () => {
2845
+ onConfirm({ ...tempStep });
2846
+ const menu = ctlr.plug("settings.settingsView")?.menu;
2847
+ if (!menu) return;
2848
+ const target = actionId === "new" ? "actions-add" : `actions-logic-${actionId}`;
2849
+ while (menu.navStack.length > 1 && menu.navStack[menu.navStack.length - 1] !== target) menu.goBack();
2850
+ menu.syncUI(`actions-logic-${actionId}`);
2851
+ }
2852
+ }
2853
+ ]
2854
+ };
2855
+ }
2856
+ const childPaths = path === "__root__" ? ["media", "settings"] : (0, import_utils25.getPaths)(root, path, { depth: 1 }).filter((p) => ctlr.isLogicPath(p)).sort((a, b) => a.localeCompare(b)), childNodes = childPaths.map((p) => buildPathNavNode(actionId, stepTag, p, root, ctlr, onConfirm, existingStep)), directInputId = `${path === "__root__" ? NAV_ROOT_ID(actionId, stepTag) : NAV_NODE_ID(actionId, stepTag, path)}-direct`;
2857
+ const directInput = {
2858
+ id: directInputId,
2859
+ label: "Type path",
2860
+ widget: "input",
2861
+ inline: true,
2862
+ inputs: [
2863
+ {
2864
+ label: "Path",
2865
+ type: "text",
2866
+ placeholder: childPaths.map((p) => p.split(".").pop()).join(", "),
2867
+ helperText: { info: "Type the exact property name to navigate directly, or just pick from the list above." }
2868
+ }
2869
+ ],
2870
+ getValue: () => "",
2871
+ onChange: (v) => {
2872
+ const typed = String(v["Path"] ?? "").trim(), match = typed ? childPaths.find((p) => p.split(".").pop()?.toLowerCase() === typed.toLowerCase()) : null;
2873
+ if (match) return void (0, import_utils7.requestAnimationFrame)(() => ctlr.plug("settings.settingsView")?.menu.goTo(NAV_NODE_ID(actionId, stepTag, match)), ctlr.signal);
2874
+ const fullPath = path === "__root__" ? typed : `${path}.${typed}`, val2 = ctlr.isLogicPath(fullPath) ? (0, import_utils25.getPath)(root, fullPath) : void 0, id = NAV_NODE_ID(actionId, stepTag, fullPath), menu = ctlr.plug("settings.settingsView")?.menu;
2875
+ if (typed && val2 !== void 0 && menu) !menu.getItem(id) && menu.register(buildPathNavNode(actionId, stepTag, fullPath, root, ctlr, onConfirm, existingStep)), (0, import_utils7.requestAnimationFrame)(() => menu.goTo(id), ctlr.signal);
2876
+ }
2877
+ };
2878
+ return {
2879
+ id: path === "__root__" ? NAV_ROOT_ID(actionId, stepTag) : NAV_NODE_ID(actionId, stepTag, path),
2880
+ label,
2881
+ widget: "group",
2882
+ getValue: () => path === "__root__" ? "Pick a path" : path,
2883
+ tipHTML: path === "__root__" ? "<code>media</code> controls the player (volume, fullscreen, etc.). <code>settings</code> controls configuration values." : `Drilling into <code>${path}</code>, pick a sub-property or type its name above.`,
2884
+ items: [...childNodes, directInput]
2885
+ };
2886
+ }
2887
+ var makeLogicNavTree = (actionId, stepTag, ctlr, onConfirm, existingStep) => buildPathNavNode(actionId, stepTag, "__root__", { media: ctlr.media, settings: ctlr.settings }, ctlr, onConfirm, existingStep);
2888
+ var stepLabel = (step) => step.path ? `${step.path} (${step.op ?? "set"}${step.value !== void 0 ? ` ${step.value}` : ""})` : "Empty step";
2889
+ function makeLogicStepView(step, idx, actionId, ctlr, logicItems) {
2890
+ const navTree = makeLogicNavTree(
2891
+ actionId,
2892
+ String(idx),
2893
+ ctlr,
2894
+ (newStep) => {
2895
+ const a = ctlr.actions[actionId];
2896
+ a.logic[idx] = newStep;
2897
+ logicItems[idx] = makeLogicStepView(a.logic[idx], idx, actionId, ctlr, logicItems);
2898
+ ctlr.plug("settings.settingsView")?.menu.syncUI(`actions-logic-${actionId}`);
2899
+ },
2900
+ step
2901
+ );
2902
+ return {
2903
+ id: `actions-${actionId}-logic-${idx}`,
2904
+ label: `Step ${idx + 1}`,
2905
+ widget: "group",
2906
+ getValue: () => stepLabel(step),
2907
+ items: [navTree]
2908
+ };
2909
+ }
2910
+ function makeLogicGroup(action, ctlr, logicItems) {
2911
+ const hasLogicSupport = action.logic !== void 0 || action.userCreated, liveLogic = () => ctlr.actions[action.id].logic ?? [];
2912
+ return {
2913
+ id: `actions-logic-${action.id}`,
2914
+ label: "Logic Steps",
2915
+ widget: "drag-select",
2916
+ getValue: () => {
2917
+ if (!hasLogicSupport) return "Internal";
2918
+ const len = liveLogic().length;
2919
+ return len ? `${len} step${len !== 1 ? "s" : ""}` : "None";
2920
+ },
2921
+ getDisabled: () => !hasLogicSupport,
2922
+ getOptions: () => liveLogic().map((step, i) => ({ value: String(i), display: stepLabel(step), title: step.value !== void 0 ? `Value: ${step.value}` : void 0 })),
2923
+ onReorder: (from, to) => {
2924
+ const steps = [...liveLogic()];
2925
+ steps.splice(to, 0, ...steps.splice(from, 1));
2926
+ ctlr.actions[action.id].logic = steps;
2927
+ logicItems.splice(0, logicItems.length, ...steps.map((s, i) => makeLogicStepView(s, i, action.id, ctlr, logicItems)));
2928
+ ctlr.plug("settings.settingsView")?.menu.syncUI(`actions-logic-${action.id}`);
2929
+ },
2930
+ onEdit: (i) => ctlr.plug("settings.settingsView")?.menu.goTo(liveLogic()[i].path ? NAV_NODE_ID(action.id, String(i), liveLogic()[i].path) : NAV_ROOT_ID(action.id, String(i))),
2931
+ onDelete: async (i) => {
2932
+ if (!await confirmDelete("this logic step", ctlr)) return;
2933
+ const steps = [...liveLogic()];
2934
+ steps.splice(i, 1), ctlr.actions[action.id].logic = steps;
2935
+ logicItems.splice(0, logicItems.length, ...steps.map((s, j) => makeLogicStepView(s, j, action.id, ctlr, logicItems))), ctlr.plug("settings.settingsView")?.menu.syncUI(`actions-logic-${action.id}`);
2936
+ },
2937
+ actions: hasLogicSupport ? [
2938
+ {
2939
+ id: "add",
2940
+ getLabel: () => "Add Step",
2941
+ icon: "add",
2942
+ onClick: () => {
2943
+ const a = ctlr.actions[action.id];
2944
+ if (!a.logic) a.logic = [];
2945
+ const tag = `new-${ctlr.config.id}-${Math.random().toString(36).slice(2, 9)}`, navTree = makeLogicNavTree(action.id, tag, ctlr, (newStep) => {
2946
+ const act = ctlr.actions[action.id];
2947
+ act.logic = [...act.logic ?? [], newStep];
2948
+ logicItems.splice(0, logicItems.length, ...act.logic.map((s, j) => makeLogicStepView(s, j, action.id, ctlr, logicItems))), ctlr.plug("settings.settingsView")?.menu.syncUI(`actions-logic-${action.id}`);
2949
+ }), placeholder = { id: `actions-${action.id}-logic-${tag}`, label: "New Step", widget: "group", getValue: () => "New", items: [navTree] };
2950
+ logicItems.push(placeholder), ctlr.plug("settings.settingsView")?.menu.goTo(NAV_ROOT_ID(action.id, tag));
2951
+ }
2952
+ }
2953
+ ] : void 0,
2954
+ items: logicItems,
2955
+ tipHTML: hasLogicSupport ? "Logic runs top-to-bottom when triggered. Use + to add a step. Drag to reorder." : "This action runs native code. Logic steps are not supported."
2956
+ };
2957
+ }
2958
+ function makeActionContent(action, ctlr, logicItems) {
2959
+ const live = () => ctlr.actions[action.id], parseBool = (v) => v === "default" ? void 0 : v === "yes" ? true : v === "no" ? false : !isNaN(Number(v)) && isStr(v) ? Number(v) : v;
2960
+ return [
2961
+ {
2962
+ id: `actions-key-${action.id}`,
2963
+ label: "Keyboard Shortcut",
2964
+ widget: "input",
2965
+ inputs: [
2966
+ {
2967
+ label: "Key",
2968
+ type: "text",
2969
+ placeholder: "f, Shift+f",
2970
+ value: () => {
2971
+ const s = ctlr.settings.keys.shortcuts[action.id];
2972
+ return Array.isArray(s) ? s.join(", ") : s ?? "";
2973
+ },
2974
+ helperText: { info: "Comma-separated key combos (e.g. f, Shift+f). Save to apply." }
2975
+ },
2976
+ {
2977
+ label: "Phase",
2978
+ type: "select",
2979
+ options: [
2980
+ { option: "Key Down", value: "keydown" },
2981
+ { option: "Key Up", value: "keyup" }
2982
+ ],
2983
+ value: () => live().keyboard?.phase ?? "keydown"
2984
+ }
2985
+ ],
2986
+ getValue: () => formatActionForDisplay(ctlr.settings.keys.shortcuts[action.id]) || "None",
2987
+ onChange: (val) => {
2988
+ const keys = val["Key"].split(",").map((k) => k.trim()).filter(Boolean), obj = ctlr.settings.keys.shortcuts;
2989
+ if (obj) obj[action.id] = keys.length > 1 ? keys : keys[0] ?? "";
2990
+ live().keyboard = { ...live().keyboard, phase: val["Phase"] };
2991
+ },
2992
+ configPaths: [`settings.keys.shortcuts.${action.id}`]
2993
+ },
2994
+ {
2995
+ id: `actions-voice-${action.id}`,
2996
+ label: "Voice Triggers",
2997
+ widget: "input",
2998
+ inputs: [
2999
+ {
3000
+ label: "Phrases",
3001
+ type: "text",
3002
+ placeholder: "play, start playing",
3003
+ value: () => {
3004
+ const t = ctlr.settings.voice.commands[action.id] ?? "";
3005
+ return Array.isArray(t) ? t.join(", ") : String(t);
3006
+ },
3007
+ helperText: { info: "Comma-separated phrases. Voice control matches any of them." }
3008
+ },
3009
+ {
3010
+ label: "Stage",
3011
+ type: "select",
3012
+ options: [
3013
+ { option: "Anytime", value: "anytime" },
3014
+ { option: "Pre-Route", value: "pre-route" },
3015
+ { option: "Post-Route", value: "post-route" }
3016
+ ],
3017
+ value: () => live().voice?.stage ?? "post-route"
3018
+ }
3019
+ ],
3020
+ getValue: () => {
3021
+ const t = ctlr.settings.voice.commands[action.id] ?? "";
3022
+ const val = Array.isArray(t) && t.length > 0 ? t.join(", ") : String(t);
3023
+ return val ? `\u{1F399}\uFE0F ${val}` : "None";
3024
+ },
3025
+ onChange: (val) => {
3026
+ const triggers = val["Phrases"].split(",").map((s) => s.trim()).filter(Boolean), obj = ctlr.settings.voice.commands;
3027
+ if (obj) obj[action.id] = triggers.length > 0 ? triggers : [];
3028
+ live().voice = { ...live().voice, stage: val["Stage"] };
3029
+ },
3030
+ configPaths: [`actions.${action.id}.voice`, `settings.voice.commands.${action.id}`]
3031
+ },
3032
+ makeLogicGroup(action, ctlr, logicItems),
3033
+ {
3034
+ id: `actions-notify-${action.id}`,
3035
+ label: "Pop-up",
3036
+ widget: "select",
3037
+ getOptions: () => [{ value: "", display: "None" }, ...Array.from(new Set(ctlr.plug("settings.notifiers")?.state.events ?? [])).map((n) => ({ value: n, display: n }))],
3038
+ getValue: () => live().notify || "None",
3039
+ onChange: (val) => live().notify = val || void 0,
3040
+ configPaths: [`actions.${action.id}.notify`]
3041
+ },
3042
+ {
3043
+ id: `actions-toast-${action.id}`,
3044
+ label: "Notification",
3045
+ widget: "input",
3046
+ getValue: () => {
3047
+ const r = live().toast?.render;
3048
+ return r ? typeof r === "function" ? "Dynamic text" : String(r) : "None";
3049
+ },
3050
+ inputs: [
3051
+ { label: "Message", type: "text", value: () => (isFunc(live().toast?.render) ? live().toast.render?.() : live().toast?.render) ?? "", placeholder: "Action triggered!", helperText: { info: "The message to display in the notification" } },
3052
+ ...TOAST_FORM_INPUTS.map((input) => {
3053
+ const map = {
3054
+ Type: "type",
3055
+ Position: "position",
3056
+ Animation: "animation",
3057
+ "Close Button": "closeButton",
3058
+ "Hide Progress Bar": "hideProgressBar",
3059
+ "Close On Click": "closeOnClick",
3060
+ "Drag To Close": "dragToClose",
3061
+ "Drag Direction": "dragToCloseDir",
3062
+ "Auto Close (ms)": "autoClose"
3063
+ };
3064
+ const key = map[input.label];
3065
+ return {
3066
+ ...input,
3067
+ value: key === "autoClose" ? () => live().toast?.autoClose === false ? -1 : live().toast?.autoClose : () => {
3068
+ const val = live().toast?.[key];
3069
+ return val === void 0 ? "default" : val === true ? "yes" : val === false ? "no" : val;
3070
+ }
3071
+ };
3072
+ })
3073
+ ],
3074
+ onChange: (val) => {
3075
+ if (!val.Message) return void (live().toast = void 0);
3076
+ const rawOpts = { render: val.Message, type: parseBool(val.Type), position: parseBool(val.Position), animation: parseBool(val.Animation), closeButton: parseBool(val["Close Button"]), hideProgressBar: parseBool(val["Hide Progress Bar"]), closeOnClick: parseBool(val["Close On Click"]), dragToClose: parseBool(val["Drag To Close"]), dragToCloseDir: parseBool(val["Drag Direction"]), autoClose: val["Auto Close (ms)"] === -1 ? false : val["Auto Close (ms)"] === "" ? void 0 : parseBool(val["Auto Close (ms)"]) };
3077
+ live().toast = Object.fromEntries(Object.entries(rawOpts).filter(([, v]) => v !== void 0));
3078
+ }
3079
+ },
3080
+ {
3081
+ id: `actions-zen-${action.id}`,
3082
+ label: "Zen",
3083
+ widget: "toggle",
3084
+ getValue: () => live().zen ? "On" : "Off",
3085
+ onChange: (val) => live().zen = val,
3086
+ configPaths: [`actions.${action.id}.zen`],
3087
+ title: () => `Run even while ${ctlr.zenlist.map(fmt2).join(" / ")} is open`
3088
+ }
3089
+ ];
3090
+ }
3091
+ function makeActionDetail(action, ctlr, onDeleteAction) {
3092
+ const live = () => ctlr.actions[action.id], canDelete = !!action.userCreated, logicItems = [];
3093
+ logicItems.push(...(action.logic ?? []).map((step, i) => makeLogicStepView(step, i, action.id, ctlr, logicItems)));
3094
+ return {
3095
+ id: `actions-detail-${action.id}`,
3096
+ label: action.label ?? fmt2(action.id),
3097
+ widget: "group",
3098
+ getValue: () => formatActionForDisplay(ctlr.settings.keys.shortcuts[action.id], ctlr.settings.voice.commands[action.id]) || "None",
3099
+ configPaths: [`actions.${action.id}`, `settings.keys.shortcuts.${action.id}`],
3100
+ actions: canDelete ? [
3101
+ {
3102
+ id: "delete",
3103
+ getLabel: () => "Delete",
3104
+ icon: "delete",
3105
+ onClick: async () => {
3106
+ if (!await confirmDelete(live().label ?? fmt2(action.id), ctlr)) return;
3107
+ delete ctlr.actions[action.id], onDeleteAction(), ctlr.plug("settings.settingsView")?.menu.goBack();
3108
+ }
3109
+ }
3110
+ ] : void 0,
3111
+ items: makeActionContent(action, ctlr, logicItems)
3112
+ };
3113
+ }
3114
+ function makeActionForm(ctlr, onAdd) {
3115
+ return {
3116
+ id: "actions-add",
3117
+ label: "Create Action",
3118
+ widget: "input",
3119
+ hidden: true,
3120
+ inputs: [
3121
+ { label: "Label", type: "text", placeholder: "My Custom Action", required: true, helperText: { info: "Give it a name. The ID is auto-generated from it." } },
3122
+ { label: "Keyboard Shortcut", type: "text", placeholder: "f, Shift+f", helperText: { info: "Optional, you can add or change this later." } },
3123
+ { label: "Voice Triggers", type: "text", placeholder: "play, start playing", helperText: { info: "Optional, you can add or change this later. After creating, go add logic steps." } }
3124
+ ],
3125
+ getValue: () => "",
3126
+ onChange: (vals) => {
3127
+ const label = vals["Label"].trim(), id = toId(label);
3128
+ if (!id || ctlr.actions[id]) return;
3129
+ const triggers = vals["Voice Triggers"].split(",").map((s) => s.trim()).filter(Boolean), keys = vals["Keyboard Shortcut"].split(",").map((s) => s.trim()).filter(Boolean);
3130
+ ctlr.registerAction(id, { label, fn: () => {
3131
+ }, logic: [], userCreated: true });
3132
+ const voiceObj = ctlr.settings.voice.commands, keysObj = ctlr.settings.keys.shortcuts;
3133
+ if (voiceObj && triggers.length) voiceObj[id] = triggers;
3134
+ if (keysObj && keys.length) keysObj[id] = keys.length > 1 ? keys : keys[0];
3135
+ onAdd(), ctlr.plug("settings.settingsView")?.menu.goBack(), (0, import_utils7.requestAnimationFrame)(() => ctlr.plug("settings.settingsView")?.menu.goTo(`actions-detail-${id}`), ctlr.signal);
3136
+ }
3137
+ };
3138
+ }
3139
+ var getSettingsActionsMenu = (ctlr) => {
3140
+ const visibleActions = () => Object.values(ctlr.actions).filter((a) => !a.private).sort((a, b) => (a.label ?? a.id).localeCompare(b.label ?? b.id)), actionItems = [], rebuildActionItems = () => actionItems.splice(0, actionItems.length, addForm, ...visibleActions().map((a) => makeActionDetail(a, ctlr, rebuildActionItems))), addForm = makeActionForm(ctlr, rebuildActionItems);
3141
+ let lastSig = "";
3142
+ const getSig = () => visibleActions().map((a) => a.id + (a.label ?? "")).join(",");
3143
+ rebuildActionItems();
3144
+ lastSig = getSig();
3145
+ return {
3146
+ id: "general",
3147
+ label: "Advanced",
3148
+ icon: "settings",
3149
+ widget: "group",
3150
+ getValue: () => "",
3151
+ items: [
3152
+ {
3153
+ id: "actions",
3154
+ label: "Actions",
3155
+ widget: "group",
3156
+ getValue: () => {
3157
+ const all = visibleActions(), user = all.filter((a) => a.userCreated).length;
3158
+ return user ? `${all.length} (${user} custom)` : String(all.length);
3159
+ },
3160
+ tipHTML: "Actions are player-wide commands. Use + to create your own, pair them with keyboard shortcuts, voice triggers, or chain logic steps.",
3161
+ onWire: (syncUI, signal) => ctlr.config.on(
3162
+ "actions",
3163
+ () => {
3164
+ const sig = getSig();
3165
+ if (sig !== lastSig) {
3166
+ lastSig = sig;
3167
+ rebuildActionItems();
3168
+ }
3169
+ syncUI();
3170
+ ctlr.plug("settings.settingsView")?.menu.syncUI("actions");
3171
+ },
3172
+ { signal }
3173
+ ),
3174
+ actions: [{ id: "add", getLabel: () => "Add", icon: "add", onClick: () => ctlr.plug("settings.settingsView")?.menu.goTo("actions-add") }],
3175
+ items: actionItems
3176
+ }
3177
+ ]
3178
+ };
3179
+ };
3180
+
3181
+ // src/ts/plugs/menus/z-register.ts
3182
+ for (const [key, menu] of [
3183
+ ["main.skeleton", getSkeletonGeneralMenu],
3184
+ ["playlist", getMainPlaylistMenu],
3185
+ ["settings.ambience", getSettingsAmbienceMenu],
3186
+ ["settings.auto", getSettingsAutoMenu],
3187
+ ["settings.brightness", getSettingsBrightnessMenu],
3188
+ ["settings.captions", getSettingsCaptionsMenu],
3189
+ ["settings.controlPanel", getSettingsControlPanelMenu],
3190
+ ["settings.fastPlay", getSettingsFastPlayMenu],
3191
+ ["settings.gesture", getSettingsGestureMenu],
3192
+ ["settings.keys", getSettingsKeysMenu],
3193
+ ["settings.metadata", getSettingsMetadataMenu],
3194
+ ["settings.modes", getSettingsModesMenu],
3195
+ ["settings.objectFit", getSettingsObjectFitMenu],
3196
+ ["settings.overlay", getSettingsOverlayMenu],
3197
+ ["settings.persist", getSettingsPersistMenu],
3198
+ ["settings.playbackRate", getSettingsPlaybackRateMenu],
3199
+ ["settings.poster", getSettingsPosterMenu],
3200
+ ["settings.sleepTimer", getSettingsSleepTimerMenu],
3201
+ ["settings.time", getSettingsTimeMenu],
3202
+ ["settings.timeTravel", getSettingsTimeTravelMenu],
3203
+ ["settings.toasts", getSettingsToastsMenu],
3204
+ ["settings.volume", getSettingsVolumeMenu],
3205
+ ["settings.voice", getSettingsVoiceMenu],
3206
+ ["settings.frame", getSettingsFrameMenu],
3207
+ ["settings.locked", getSettingsLockedMenu],
3208
+ ["settings.settingsView", getSettingsSettingsViewMenu],
3209
+ ["settings.actions", getSettingsActionsMenu]
3210
+ ])
3211
+ MenuRegistry.register(key, menu);
3212
+ //# sourceMappingURL=z-register.cjs.map