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.
- package/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/chunk-25AZZYCL.js +85 -0
- package/dist/chunk-25AZZYCL.js.map +1 -0
- package/dist/chunk-25IKIKAB.js +60 -0
- package/dist/chunk-25IKIKAB.js.map +1 -0
- package/dist/chunk-25ZZLGZ6.js +45 -0
- package/dist/chunk-25ZZLGZ6.js.map +1 -0
- package/dist/chunk-274C5J22.js +12 -0
- package/dist/chunk-274C5J22.js.map +1 -0
- package/dist/chunk-27FHLV4M.js +12 -0
- package/dist/chunk-27FHLV4M.js.map +1 -0
- package/dist/chunk-27MVVVJ7.js +405 -0
- package/dist/chunk-27MVVVJ7.js.map +1 -0
- package/dist/chunk-27SBY2N7.js +50 -0
- package/dist/chunk-27SBY2N7.js.map +1 -0
- package/dist/chunk-2J3FJY73.js +9 -0
- package/dist/chunk-2J3FJY73.js.map +1 -0
- package/dist/chunk-2JW4RYM4.js +170 -0
- package/dist/chunk-2JW4RYM4.js.map +1 -0
- package/dist/chunk-2PA7FU47.js +185 -0
- package/dist/chunk-2PA7FU47.js.map +1 -0
- package/dist/chunk-2VOAIUTU.js +9 -0
- package/dist/chunk-2VOAIUTU.js.map +1 -0
- package/dist/chunk-2W5XWGGE.js +7 -0
- package/dist/chunk-2W5XWGGE.js.map +1 -0
- package/dist/chunk-3C3GK24X.js +88 -0
- package/dist/chunk-3C3GK24X.js.map +1 -0
- package/dist/chunk-3KD22Z7D.js +9 -0
- package/dist/chunk-3KD22Z7D.js.map +1 -0
- package/dist/chunk-3OLEZVYI.js +196 -0
- package/dist/chunk-3OLEZVYI.js.map +1 -0
- package/dist/chunk-3OZEBWCF.js +12 -0
- package/dist/chunk-3OZEBWCF.js.map +1 -0
- package/dist/chunk-3T5CFCYB.js +45 -0
- package/dist/chunk-3T5CFCYB.js.map +1 -0
- package/dist/chunk-3VCTHGL6.js +86 -0
- package/dist/chunk-3VCTHGL6.js.map +1 -0
- package/dist/chunk-3WHPH6Q5.js +9 -0
- package/dist/chunk-3WHPH6Q5.js.map +1 -0
- package/dist/chunk-43MLKGCT.js +45 -0
- package/dist/chunk-43MLKGCT.js.map +1 -0
- package/dist/chunk-46QVDU2K.js +25 -0
- package/dist/chunk-46QVDU2K.js.map +1 -0
- package/dist/chunk-474PEQ33.js +78 -0
- package/dist/chunk-474PEQ33.js.map +1 -0
- package/dist/chunk-4FCGFO2J.js +9 -0
- package/dist/chunk-4FCGFO2J.js.map +1 -0
- package/dist/chunk-4JOPUUAL.js +185 -0
- package/dist/chunk-4JOPUUAL.js.map +1 -0
- package/dist/chunk-4QQXED6P.js +11 -0
- package/dist/chunk-4QQXED6P.js.map +1 -0
- package/dist/chunk-4VG5KHDO.js +52 -0
- package/dist/chunk-4VG5KHDO.js.map +1 -0
- package/dist/chunk-4W6H5CZF.js +1 -0
- package/dist/chunk-4W6H5CZF.js.map +1 -0
- package/dist/chunk-56CRICX7.js +154 -0
- package/dist/chunk-56CRICX7.js.map +1 -0
- package/dist/chunk-57L2PE3B.js +9 -0
- package/dist/chunk-57L2PE3B.js.map +1 -0
- package/dist/chunk-5CLVIO4N.js +33 -0
- package/dist/chunk-5CLVIO4N.js.map +1 -0
- package/dist/chunk-5GX67WSG.js +7 -0
- package/dist/chunk-5GX67WSG.js.map +1 -0
- package/dist/chunk-5SGNTRPL.js +47 -0
- package/dist/chunk-5SGNTRPL.js.map +1 -0
- package/dist/chunk-5TJURBKV.js +9 -0
- package/dist/chunk-5TJURBKV.js.map +1 -0
- package/dist/chunk-63E6JXTT.js +162 -0
- package/dist/chunk-63E6JXTT.js.map +1 -0
- package/dist/chunk-66HGOYPR.js +180 -0
- package/dist/chunk-66HGOYPR.js.map +1 -0
- package/dist/chunk-6IFGKHVM.js +9 -0
- package/dist/chunk-6IFGKHVM.js.map +1 -0
- package/dist/chunk-6K4HCMUL.js +32 -0
- package/dist/chunk-6K4HCMUL.js.map +1 -0
- package/dist/chunk-6KYXFWBF.js +32 -0
- package/dist/chunk-6KYXFWBF.js.map +1 -0
- package/dist/chunk-6R5BZZM6.js +95 -0
- package/dist/chunk-6R5BZZM6.js.map +1 -0
- package/dist/chunk-6S5BMP4A.js +9 -0
- package/dist/chunk-6S5BMP4A.js.map +1 -0
- package/dist/chunk-6SHHKTGD.js +73 -0
- package/dist/chunk-6SHHKTGD.js.map +1 -0
- package/dist/chunk-6U3M7V32.js +46 -0
- package/dist/chunk-6U3M7V32.js.map +1 -0
- package/dist/chunk-73XT2QVM.js +47 -0
- package/dist/chunk-73XT2QVM.js.map +1 -0
- package/dist/chunk-7FB3XGXR.js +471 -0
- package/dist/chunk-7FB3XGXR.js.map +1 -0
- package/dist/chunk-7HRR4LG4.js +115 -0
- package/dist/chunk-7HRR4LG4.js.map +1 -0
- package/dist/chunk-7I6DRKIN.js +58 -0
- package/dist/chunk-7I6DRKIN.js.map +1 -0
- package/dist/chunk-7MOZI57I.js +59 -0
- package/dist/chunk-7MOZI57I.js.map +1 -0
- package/dist/chunk-7PHLWSKV.js +95 -0
- package/dist/chunk-7PHLWSKV.js.map +1 -0
- package/dist/chunk-7Y4LQ5ED.js +45 -0
- package/dist/chunk-7Y4LQ5ED.js.map +1 -0
- package/dist/chunk-7YDZDHZH.js +19 -0
- package/dist/chunk-7YDZDHZH.js.map +1 -0
- package/dist/chunk-A7EG6K2X.js +54 -0
- package/dist/chunk-A7EG6K2X.js.map +1 -0
- package/dist/chunk-ABRBZ4IH.js +108 -0
- package/dist/chunk-ABRBZ4IH.js.map +1 -0
- package/dist/chunk-ACF6B245.js +17 -0
- package/dist/chunk-ACF6B245.js.map +1 -0
- package/dist/chunk-ACUUGJUG.js +53 -0
- package/dist/chunk-ACUUGJUG.js.map +1 -0
- package/dist/chunk-AIYSHJLG.js +42 -0
- package/dist/chunk-AIYSHJLG.js.map +1 -0
- package/dist/chunk-AKHJD2A3.js +50 -0
- package/dist/chunk-AKHJD2A3.js.map +1 -0
- package/dist/chunk-ATE4NMIF.js +22 -0
- package/dist/chunk-ATE4NMIF.js.map +1 -0
- package/dist/chunk-AZTSMVMN.js +138 -0
- package/dist/chunk-AZTSMVMN.js.map +1 -0
- package/dist/chunk-BFFQZMZX.js +108 -0
- package/dist/chunk-BFFQZMZX.js.map +1 -0
- package/dist/chunk-BKJRLSXA.js +329 -0
- package/dist/chunk-BKJRLSXA.js.map +1 -0
- package/dist/chunk-BLJDDFX2.js +228 -0
- package/dist/chunk-BLJDDFX2.js.map +1 -0
- package/dist/chunk-BROAUWON.js +123 -0
- package/dist/chunk-BROAUWON.js.map +1 -0
- package/dist/chunk-BU4AX4DA.js +49 -0
- package/dist/chunk-BU4AX4DA.js.map +1 -0
- package/dist/chunk-C2TANFKK.js +167 -0
- package/dist/chunk-C2TANFKK.js.map +1 -0
- package/dist/chunk-CAIDFMLB.js +164 -0
- package/dist/chunk-CAIDFMLB.js.map +1 -0
- package/dist/chunk-CCD3ZXIT.js +54 -0
- package/dist/chunk-CCD3ZXIT.js.map +1 -0
- package/dist/chunk-CEEX3HQ2.js +44 -0
- package/dist/chunk-CEEX3HQ2.js.map +1 -0
- package/dist/chunk-CIN7HWLH.js +26 -0
- package/dist/chunk-CIN7HWLH.js.map +1 -0
- package/dist/chunk-CL24QYM6.js +48 -0
- package/dist/chunk-CL24QYM6.js.map +1 -0
- package/dist/chunk-CTSPKWKN.js +9 -0
- package/dist/chunk-CTSPKWKN.js.map +1 -0
- package/dist/chunk-CYUYF57A.js +139 -0
- package/dist/chunk-CYUYF57A.js.map +1 -0
- package/dist/chunk-D5XNDZ4S.js +21 -0
- package/dist/chunk-D5XNDZ4S.js.map +1 -0
- package/dist/chunk-D7JQDN74.js +9 -0
- package/dist/chunk-D7JQDN74.js.map +1 -0
- package/dist/chunk-DKS7SZFN.js +165 -0
- package/dist/chunk-DKS7SZFN.js.map +1 -0
- package/dist/chunk-DM4ZIS4L.js +50 -0
- package/dist/chunk-DM4ZIS4L.js.map +1 -0
- package/dist/chunk-DNY72SCR.js +9 -0
- package/dist/chunk-DNY72SCR.js.map +1 -0
- package/dist/chunk-DQLWWVM3.js +25 -0
- package/dist/chunk-DQLWWVM3.js.map +1 -0
- package/dist/chunk-E56H3EOR.js +1 -0
- package/dist/chunk-E56H3EOR.js.map +1 -0
- package/dist/chunk-E56PSUT2.js +435 -0
- package/dist/chunk-E56PSUT2.js.map +1 -0
- package/dist/chunk-EF7RQIJK.js +9 -0
- package/dist/chunk-EF7RQIJK.js.map +1 -0
- package/dist/chunk-EHQJNRJV.js +449 -0
- package/dist/chunk-EHQJNRJV.js.map +1 -0
- package/dist/chunk-EIT6CZXJ.js +50 -0
- package/dist/chunk-EIT6CZXJ.js.map +1 -0
- package/dist/chunk-ERPQNMED.js +292 -0
- package/dist/chunk-ERPQNMED.js.map +1 -0
- package/dist/chunk-ESAOH6X5.js +15 -0
- package/dist/chunk-ESAOH6X5.js.map +1 -0
- package/dist/chunk-ESNKONBW.js +80 -0
- package/dist/chunk-ESNKONBW.js.map +1 -0
- package/dist/chunk-EUQ7SC5J.js +33 -0
- package/dist/chunk-EUQ7SC5J.js.map +1 -0
- package/dist/chunk-EUX3RZ3L.js +66 -0
- package/dist/chunk-EUX3RZ3L.js.map +1 -0
- package/dist/chunk-EVUTNLHC.js +7 -0
- package/dist/chunk-EVUTNLHC.js.map +1 -0
- package/dist/chunk-EY7PB3LA.js +59 -0
- package/dist/chunk-EY7PB3LA.js.map +1 -0
- package/dist/chunk-FCQDAU2C.js +7 -0
- package/dist/chunk-FCQDAU2C.js.map +1 -0
- package/dist/chunk-FHL5Z6MX.js +13 -0
- package/dist/chunk-FHL5Z6MX.js.map +1 -0
- package/dist/chunk-FIUVWAAQ.js +35 -0
- package/dist/chunk-FIUVWAAQ.js.map +1 -0
- package/dist/chunk-FN32KVQT.js +188 -0
- package/dist/chunk-FN32KVQT.js.map +1 -0
- package/dist/chunk-FX3UTAZK.js +31 -0
- package/dist/chunk-FX3UTAZK.js.map +1 -0
- package/dist/chunk-FXIL7BGP.js +43 -0
- package/dist/chunk-FXIL7BGP.js.map +1 -0
- package/dist/chunk-G7KANQFO.js +131 -0
- package/dist/chunk-G7KANQFO.js.map +1 -0
- package/dist/chunk-GDC7I2CJ.js +66 -0
- package/dist/chunk-GDC7I2CJ.js.map +1 -0
- package/dist/chunk-GM7YMURS.js +14 -0
- package/dist/chunk-GM7YMURS.js.map +1 -0
- package/dist/chunk-GQ7ITX5B.js +7 -0
- package/dist/chunk-GQ7ITX5B.js.map +1 -0
- package/dist/chunk-GSKI4IRL.js +34 -0
- package/dist/chunk-GSKI4IRL.js.map +1 -0
- package/dist/chunk-GUIBL2MZ.js +1 -0
- package/dist/chunk-GUIBL2MZ.js.map +1 -0
- package/dist/chunk-H24E5FRE.js +9 -0
- package/dist/chunk-H24E5FRE.js.map +1 -0
- package/dist/chunk-HA2GK6KH.js +9 -0
- package/dist/chunk-HA2GK6KH.js.map +1 -0
- package/dist/chunk-HCSCY6DU.js +458 -0
- package/dist/chunk-HCSCY6DU.js.map +1 -0
- package/dist/chunk-HGXGXW2U.js +26 -0
- package/dist/chunk-HGXGXW2U.js.map +1 -0
- package/dist/chunk-HH7PMFLU.js +33 -0
- package/dist/chunk-HH7PMFLU.js.map +1 -0
- package/dist/chunk-HJORMYPQ.js +66 -0
- package/dist/chunk-HJORMYPQ.js.map +1 -0
- package/dist/chunk-HN2UT66M.js +9 -0
- package/dist/chunk-HN2UT66M.js.map +1 -0
- package/dist/chunk-HNPBSC2A.js +132 -0
- package/dist/chunk-HNPBSC2A.js.map +1 -0
- package/dist/chunk-HNTARWVL.js +57 -0
- package/dist/chunk-HNTARWVL.js.map +1 -0
- package/dist/chunk-HPPHGUTD.js +1 -0
- package/dist/chunk-HPPHGUTD.js.map +1 -0
- package/dist/chunk-HPWORM77.js +199 -0
- package/dist/chunk-HPWORM77.js.map +1 -0
- package/dist/chunk-HYG6W442.js +66 -0
- package/dist/chunk-HYG6W442.js.map +1 -0
- package/dist/chunk-I3LBJOUW.js +249 -0
- package/dist/chunk-I3LBJOUW.js.map +1 -0
- package/dist/chunk-I47VPMZS.js +40 -0
- package/dist/chunk-I47VPMZS.js.map +1 -0
- package/dist/chunk-ID72UAJE.js +7 -0
- package/dist/chunk-ID72UAJE.js.map +1 -0
- package/dist/chunk-IENUYESB.js +33 -0
- package/dist/chunk-IENUYESB.js.map +1 -0
- package/dist/chunk-IFYBKLFH.js +15 -0
- package/dist/chunk-IFYBKLFH.js.map +1 -0
- package/dist/chunk-IJJ4F6HI.js +105 -0
- package/dist/chunk-IJJ4F6HI.js.map +1 -0
- package/dist/chunk-IKKQYZNA.js +43 -0
- package/dist/chunk-IKKQYZNA.js.map +1 -0
- package/dist/chunk-IUS3FRXS.js +446 -0
- package/dist/chunk-IUS3FRXS.js.map +1 -0
- package/dist/chunk-IVA7LFT2.js +12 -0
- package/dist/chunk-IVA7LFT2.js.map +1 -0
- package/dist/chunk-IXLSSEE7.js +39 -0
- package/dist/chunk-IXLSSEE7.js.map +1 -0
- package/dist/chunk-J2SIL62L.js +142 -0
- package/dist/chunk-J2SIL62L.js.map +1 -0
- package/dist/chunk-J54J2AED.js +117 -0
- package/dist/chunk-J54J2AED.js.map +1 -0
- package/dist/chunk-JFWYJV3J.js +61 -0
- package/dist/chunk-JFWYJV3J.js.map +1 -0
- package/dist/chunk-JP5X5JDL.js +10 -0
- package/dist/chunk-JP5X5JDL.js.map +1 -0
- package/dist/chunk-JPWNE7JO.js +11 -0
- package/dist/chunk-JPWNE7JO.js.map +1 -0
- package/dist/chunk-JRWYWTTT.js +9 -0
- package/dist/chunk-JRWYWTTT.js.map +1 -0
- package/dist/chunk-JZXJAJNW.js +316 -0
- package/dist/chunk-JZXJAJNW.js.map +1 -0
- package/dist/chunk-K4UHBEDT.js +9 -0
- package/dist/chunk-K4UHBEDT.js.map +1 -0
- package/dist/chunk-K7AAKFQF.js +12 -0
- package/dist/chunk-K7AAKFQF.js.map +1 -0
- package/dist/chunk-KD3OBG25.js +15 -0
- package/dist/chunk-KD3OBG25.js.map +1 -0
- package/dist/chunk-KJ74PGBI.js +45 -0
- package/dist/chunk-KJ74PGBI.js.map +1 -0
- package/dist/chunk-KLAI7YSD.js +7 -0
- package/dist/chunk-KLAI7YSD.js.map +1 -0
- package/dist/chunk-KMENKVHP.js +110 -0
- package/dist/chunk-KMENKVHP.js.map +1 -0
- package/dist/chunk-KOAHN3L5.js +9 -0
- package/dist/chunk-KOAHN3L5.js.map +1 -0
- package/dist/chunk-KQXT3GDF.js +16 -0
- package/dist/chunk-KQXT3GDF.js.map +1 -0
- package/dist/chunk-L6J66EOL.js +44 -0
- package/dist/chunk-L6J66EOL.js.map +1 -0
- package/dist/chunk-LNUYM3ZX.js +26 -0
- package/dist/chunk-LNUYM3ZX.js.map +1 -0
- package/dist/chunk-LSKNTXY2.js +57 -0
- package/dist/chunk-LSKNTXY2.js.map +1 -0
- package/dist/chunk-LTEL7NEG.js +219 -0
- package/dist/chunk-LTEL7NEG.js.map +1 -0
- package/dist/chunk-LTVS74EO.js +45 -0
- package/dist/chunk-LTVS74EO.js.map +1 -0
- package/dist/chunk-LVDP2QOX.js +99 -0
- package/dist/chunk-LVDP2QOX.js.map +1 -0
- package/dist/chunk-LWLNQS3O.js +569 -0
- package/dist/chunk-LWLNQS3O.js.map +1 -0
- package/dist/chunk-LYKZAKVN.js +19 -0
- package/dist/chunk-LYKZAKVN.js.map +1 -0
- package/dist/chunk-M2NVOKGL.js +97 -0
- package/dist/chunk-M2NVOKGL.js.map +1 -0
- package/dist/chunk-M3UOD7TX.js +427 -0
- package/dist/chunk-M3UOD7TX.js.map +1 -0
- package/dist/chunk-M5C4XQO2.js +45 -0
- package/dist/chunk-M5C4XQO2.js.map +1 -0
- package/dist/chunk-M5DFGJF7.js +10 -0
- package/dist/chunk-M5DFGJF7.js.map +1 -0
- package/dist/chunk-MAXX5M6N.js +9 -0
- package/dist/chunk-MAXX5M6N.js.map +1 -0
- package/dist/chunk-MEAGFRLE.js +37 -0
- package/dist/chunk-MEAGFRLE.js.map +1 -0
- package/dist/chunk-MFYNCWAO.js +25 -0
- package/dist/chunk-MFYNCWAO.js.map +1 -0
- package/dist/chunk-MJ26PFRF.js +12 -0
- package/dist/chunk-MJ26PFRF.js.map +1 -0
- package/dist/chunk-MP2GRDUX.js +10 -0
- package/dist/chunk-MP2GRDUX.js.map +1 -0
- package/dist/chunk-MTQLUS5O.js +51 -0
- package/dist/chunk-MTQLUS5O.js.map +1 -0
- package/dist/chunk-MUDO3ZPJ.js +10 -0
- package/dist/chunk-MUDO3ZPJ.js.map +1 -0
- package/dist/chunk-N2Q3TZXW.js +9 -0
- package/dist/chunk-N2Q3TZXW.js.map +1 -0
- package/dist/chunk-N52KK6K5.js +48 -0
- package/dist/chunk-N52KK6K5.js.map +1 -0
- package/dist/chunk-N5F2YHLD.js +28 -0
- package/dist/chunk-N5F2YHLD.js.map +1 -0
- package/dist/chunk-NGX5YDCB.js +7 -0
- package/dist/chunk-NGX5YDCB.js.map +1 -0
- package/dist/chunk-NHDRXRXA.js +33 -0
- package/dist/chunk-NHDRXRXA.js.map +1 -0
- package/dist/chunk-NPK5ITEG.js +7 -0
- package/dist/chunk-NPK5ITEG.js.map +1 -0
- package/dist/chunk-NPTM6BGC.js +15 -0
- package/dist/chunk-NPTM6BGC.js.map +1 -0
- package/dist/chunk-NTNVW4BG.js +7 -0
- package/dist/chunk-NTNVW4BG.js.map +1 -0
- package/dist/chunk-OBASYXH2.js +26 -0
- package/dist/chunk-OBASYXH2.js.map +1 -0
- package/dist/chunk-OBQNTU5F.js +7 -0
- package/dist/chunk-OBQNTU5F.js.map +1 -0
- package/dist/chunk-OEHNS7YX.js +7 -0
- package/dist/chunk-OEHNS7YX.js.map +1 -0
- package/dist/chunk-OJAUFHEW.js +107 -0
- package/dist/chunk-OJAUFHEW.js.map +1 -0
- package/dist/chunk-ONW4BD2Z.js +38 -0
- package/dist/chunk-ONW4BD2Z.js.map +1 -0
- package/dist/chunk-OOXUZMZ7.js +9 -0
- package/dist/chunk-OOXUZMZ7.js.map +1 -0
- package/dist/chunk-OP3PIADD.js +45 -0
- package/dist/chunk-OP3PIADD.js.map +1 -0
- package/dist/chunk-OSDM6ZVT.js +7 -0
- package/dist/chunk-OSDM6ZVT.js.map +1 -0
- package/dist/chunk-OZEEIRCS.js +9 -0
- package/dist/chunk-OZEEIRCS.js.map +1 -0
- package/dist/chunk-PGSBJUJ4.js +9 -0
- package/dist/chunk-PGSBJUJ4.js.map +1 -0
- package/dist/chunk-PPIDZONA.js +38 -0
- package/dist/chunk-PPIDZONA.js.map +1 -0
- package/dist/chunk-PTMZQ7E3.js +7 -0
- package/dist/chunk-PTMZQ7E3.js.map +1 -0
- package/dist/chunk-PV24XKW2.js +11 -0
- package/dist/chunk-PV24XKW2.js.map +1 -0
- package/dist/chunk-PXU563OY.js +26 -0
- package/dist/chunk-PXU563OY.js.map +1 -0
- package/dist/chunk-Q2XYS26I.js +11 -0
- package/dist/chunk-Q2XYS26I.js.map +1 -0
- package/dist/chunk-Q5NG3DY7.js +31 -0
- package/dist/chunk-Q5NG3DY7.js.map +1 -0
- package/dist/chunk-QADXAWA6.js +71 -0
- package/dist/chunk-QADXAWA6.js.map +1 -0
- package/dist/chunk-QG2FZCJ6.js +7 -0
- package/dist/chunk-QG2FZCJ6.js.map +1 -0
- package/dist/chunk-QMLGJPHC.js +7 -0
- package/dist/chunk-QMLGJPHC.js.map +1 -0
- package/dist/chunk-QQKXAEXW.js +50 -0
- package/dist/chunk-QQKXAEXW.js.map +1 -0
- package/dist/chunk-QS3C4KCF.js +95 -0
- package/dist/chunk-QS3C4KCF.js.map +1 -0
- package/dist/chunk-R4HNE7TL.js +7 -0
- package/dist/chunk-R4HNE7TL.js.map +1 -0
- package/dist/chunk-R5PBXGKK.js +10 -0
- package/dist/chunk-R5PBXGKK.js.map +1 -0
- package/dist/chunk-RFQXCN62.js +13 -0
- package/dist/chunk-RFQXCN62.js.map +1 -0
- package/dist/chunk-RGPGW4ZJ.js +9 -0
- package/dist/chunk-RGPGW4ZJ.js.map +1 -0
- package/dist/chunk-RKBRRJY6.js +9 -0
- package/dist/chunk-RKBRRJY6.js.map +1 -0
- package/dist/chunk-RM6NFJ7V.js +32 -0
- package/dist/chunk-RM6NFJ7V.js.map +1 -0
- package/dist/chunk-RRYAXULQ.js +48 -0
- package/dist/chunk-RRYAXULQ.js.map +1 -0
- package/dist/chunk-RS4W2FAL.js +89 -0
- package/dist/chunk-RS4W2FAL.js.map +1 -0
- package/dist/chunk-RSUFDTAH.js +110 -0
- package/dist/chunk-RSUFDTAH.js.map +1 -0
- package/dist/chunk-S2XKXJNC.js +30 -0
- package/dist/chunk-S2XKXJNC.js.map +1 -0
- package/dist/chunk-S4NKJDRC.js +79 -0
- package/dist/chunk-S4NKJDRC.js.map +1 -0
- package/dist/chunk-S7QGB2FC.js +27 -0
- package/dist/chunk-S7QGB2FC.js.map +1 -0
- package/dist/chunk-SCL4FW6F.js +425 -0
- package/dist/chunk-SCL4FW6F.js.map +1 -0
- package/dist/chunk-SITF6GNM.js +7 -0
- package/dist/chunk-SITF6GNM.js.map +1 -0
- package/dist/chunk-SPCINICO.js +5 -0
- package/dist/chunk-SPCINICO.js.map +1 -0
- package/dist/chunk-SPOTTHMN.js +24 -0
- package/dist/chunk-SPOTTHMN.js.map +1 -0
- package/dist/chunk-SWYNIQHD.js +77 -0
- package/dist/chunk-SWYNIQHD.js.map +1 -0
- package/dist/chunk-SXXITYPP.js +69 -0
- package/dist/chunk-SXXITYPP.js.map +1 -0
- package/dist/chunk-T4YZKI3Y.js +133 -0
- package/dist/chunk-T4YZKI3Y.js.map +1 -0
- package/dist/chunk-T7AIKZ6A.js +44 -0
- package/dist/chunk-T7AIKZ6A.js.map +1 -0
- package/dist/chunk-T7EX6RI2.js +34 -0
- package/dist/chunk-T7EX6RI2.js.map +1 -0
- package/dist/chunk-TB3GE2MH.js +93 -0
- package/dist/chunk-TB3GE2MH.js.map +1 -0
- package/dist/chunk-TE4JFCHB.js +52 -0
- package/dist/chunk-TE4JFCHB.js.map +1 -0
- package/dist/chunk-TGQYCEFL.js +37 -0
- package/dist/chunk-TGQYCEFL.js.map +1 -0
- package/dist/chunk-TMTWPBFD.js +10 -0
- package/dist/chunk-TMTWPBFD.js.map +1 -0
- package/dist/chunk-TSAEQFDM.js +65 -0
- package/dist/chunk-TSAEQFDM.js.map +1 -0
- package/dist/chunk-U3FX24C6.js +1 -0
- package/dist/chunk-U3FX24C6.js.map +1 -0
- package/dist/chunk-U776U22S.js +45 -0
- package/dist/chunk-U776U22S.js.map +1 -0
- package/dist/chunk-UCBDCGYX.js +9 -0
- package/dist/chunk-UCBDCGYX.js.map +1 -0
- package/dist/chunk-UGNYASFC.js +59 -0
- package/dist/chunk-UGNYASFC.js.map +1 -0
- package/dist/chunk-UJTVBENE.js +7 -0
- package/dist/chunk-UJTVBENE.js.map +1 -0
- package/dist/chunk-UKVFVAOO.js +75 -0
- package/dist/chunk-UKVFVAOO.js.map +1 -0
- package/dist/chunk-URKWHZXA.js +25 -0
- package/dist/chunk-URKWHZXA.js.map +1 -0
- package/dist/chunk-UVKRO5ER.js +13 -0
- package/dist/chunk-UVKRO5ER.js.map +1 -0
- package/dist/chunk-V3D7FBSR.js +14 -0
- package/dist/chunk-V3D7FBSR.js.map +1 -0
- package/dist/chunk-VCVMCKZI.js +10 -0
- package/dist/chunk-VCVMCKZI.js.map +1 -0
- package/dist/chunk-VNGMGQF5.js +1 -0
- package/dist/chunk-VNGMGQF5.js.map +1 -0
- package/dist/chunk-VSK7766S.js +163 -0
- package/dist/chunk-VSK7766S.js.map +1 -0
- package/dist/chunk-VZLDFZC7.js +241 -0
- package/dist/chunk-VZLDFZC7.js.map +1 -0
- package/dist/chunk-W2KUESDN.js +25 -0
- package/dist/chunk-W2KUESDN.js.map +1 -0
- package/dist/chunk-W2SHHRYX.js +420 -0
- package/dist/chunk-W2SHHRYX.js.map +1 -0
- package/dist/chunk-WBLZ5GBM.js +158 -0
- package/dist/chunk-WBLZ5GBM.js.map +1 -0
- package/dist/chunk-WODJ2VQH.js +41 -0
- package/dist/chunk-WODJ2VQH.js.map +1 -0
- package/dist/chunk-WQXLL5IV.js +9 -0
- package/dist/chunk-WQXLL5IV.js.map +1 -0
- package/dist/chunk-WR3327CL.js +89 -0
- package/dist/chunk-WR3327CL.js.map +1 -0
- package/dist/chunk-WSBH5QD6.js +309 -0
- package/dist/chunk-WSBH5QD6.js.map +1 -0
- package/dist/chunk-WTHHXWQM.js +7 -0
- package/dist/chunk-WTHHXWQM.js.map +1 -0
- package/dist/chunk-WW56NFQS.js +7 -0
- package/dist/chunk-WW56NFQS.js.map +1 -0
- package/dist/chunk-WYVXNXZI.js +73 -0
- package/dist/chunk-WYVXNXZI.js.map +1 -0
- package/dist/chunk-X3MYMAS2.js +56 -0
- package/dist/chunk-X3MYMAS2.js.map +1 -0
- package/dist/chunk-X7CDYCQF.js +22 -0
- package/dist/chunk-X7CDYCQF.js.map +1 -0
- package/dist/chunk-XGVDXMS3.js +90 -0
- package/dist/chunk-XGVDXMS3.js.map +1 -0
- package/dist/chunk-XHXIXEGS.js +7 -0
- package/dist/chunk-XHXIXEGS.js.map +1 -0
- package/dist/chunk-XJ6HO3WP.js +46 -0
- package/dist/chunk-XJ6HO3WP.js.map +1 -0
- package/dist/chunk-XMR6HHTA.js +59 -0
- package/dist/chunk-XMR6HHTA.js.map +1 -0
- package/dist/chunk-XR2KBJIP.js +54 -0
- package/dist/chunk-XR2KBJIP.js.map +1 -0
- package/dist/chunk-XVN5W3A7.js +50 -0
- package/dist/chunk-XVN5W3A7.js.map +1 -0
- package/dist/chunk-XXYOJDOZ.js +11 -0
- package/dist/chunk-XXYOJDOZ.js.map +1 -0
- package/dist/chunk-XZROR7RJ.js +25 -0
- package/dist/chunk-XZROR7RJ.js.map +1 -0
- package/dist/chunk-YF3LWJL4.js +7 -0
- package/dist/chunk-YF3LWJL4.js.map +1 -0
- package/dist/chunk-YFM4P3Z3.js +309 -0
- package/dist/chunk-YFM4P3Z3.js.map +1 -0
- package/dist/chunk-YFVOBSKP.js +52 -0
- package/dist/chunk-YFVOBSKP.js.map +1 -0
- package/dist/chunk-YFZW72PC.js +45 -0
- package/dist/chunk-YFZW72PC.js.map +1 -0
- package/dist/chunk-YHTCXXEG.js +9 -0
- package/dist/chunk-YHTCXXEG.js.map +1 -0
- package/dist/chunk-YJVUJ6AA.js +93 -0
- package/dist/chunk-YJVUJ6AA.js.map +1 -0
- package/dist/chunk-YKB67FZ5.js +46 -0
- package/dist/chunk-YKB67FZ5.js.map +1 -0
- package/dist/chunk-YS2PK7QA.js +35 -0
- package/dist/chunk-YS2PK7QA.js.map +1 -0
- package/dist/chunk-YURDFQ6X.js +33 -0
- package/dist/chunk-YURDFQ6X.js.map +1 -0
- package/dist/chunk-YVCKIDL5.js +61 -0
- package/dist/chunk-YVCKIDL5.js.map +1 -0
- package/dist/chunk-YXO6NQ4E.js +49 -0
- package/dist/chunk-YXO6NQ4E.js.map +1 -0
- package/dist/chunk-Z2AEG3J7.js +53 -0
- package/dist/chunk-Z2AEG3J7.js.map +1 -0
- package/dist/chunk-Z4I2MQ7B.js +26 -0
- package/dist/chunk-Z4I2MQ7B.js.map +1 -0
- package/dist/chunk-ZBPKZKIJ.js +25 -0
- package/dist/chunk-ZBPKZKIJ.js.map +1 -0
- package/dist/chunk-ZCMJVQ6P.js +10 -0
- package/dist/chunk-ZCMJVQ6P.js.map +1 -0
- package/dist/chunk-ZCQ5UWVE.js +27 -0
- package/dist/chunk-ZCQ5UWVE.js.map +1 -0
- package/dist/chunk-ZFCTBLWX.js +12 -0
- package/dist/chunk-ZFCTBLWX.js.map +1 -0
- package/dist/chunk-ZJ6KVLUS.js +296 -0
- package/dist/chunk-ZJ6KVLUS.js.map +1 -0
- package/dist/chunk-ZRCFHUS4.js +37 -0
- package/dist/chunk-ZRCFHUS4.js.map +1 -0
- package/dist/chunk-ZSB6HGB5.js +50 -0
- package/dist/chunk-ZSB6HGB5.js.map +1 -0
- package/dist/chunk-ZSG6ROJA.js +45 -0
- package/dist/chunk-ZSG6ROJA.js.map +1 -0
- package/dist/chunk-ZSQIEOQO.js +61 -0
- package/dist/chunk-ZSQIEOQO.js.map +1 -0
- package/dist/chunk-ZTMXXISI.js +158 -0
- package/dist/chunk-ZTMXXISI.js.map +1 -0
- package/dist/chunk-ZUMPSWHW.js +138 -0
- package/dist/chunk-ZUMPSWHW.js.map +1 -0
- package/dist/chunk-ZUYSQ37E.js +88 -0
- package/dist/chunk-ZUYSQ37E.js.map +1 -0
- package/dist/components/base/index.cjs +156 -0
- package/dist/components/base/index.cjs.map +1 -0
- package/dist/components/base/index.js +15 -0
- package/dist/components/base/index.js.map +1 -0
- package/dist/components/base/types.cjs +19 -0
- package/dist/components/base/types.cjs.map +1 -0
- package/dist/components/base/types.js +1 -0
- package/dist/components/base/types.js.map +1 -0
- package/dist/components/buffer.cjs +184 -0
- package/dist/components/buffer.cjs.map +1 -0
- package/dist/components/buffer.js +18 -0
- package/dist/components/buffer.js.map +1 -0
- package/dist/components/captionsview.cjs +378 -0
- package/dist/components/captionsview.cjs.map +1 -0
- package/dist/components/captionsview.js +22 -0
- package/dist/components/captionsview.js.map +1 -0
- package/dist/components/controls/airplay.cjs +441 -0
- package/dist/components/controls/airplay.cjs.map +1 -0
- package/dist/components/controls/airplay.js +21 -0
- package/dist/components/controls/airplay.js.map +1 -0
- package/dist/components/controls/backward10.cjs +427 -0
- package/dist/components/controls/backward10.cjs.map +1 -0
- package/dist/components/controls/backward10.js +21 -0
- package/dist/components/controls/backward10.js.map +1 -0
- package/dist/components/controls/bignext.cjs +448 -0
- package/dist/components/controls/bignext.cjs.map +1 -0
- package/dist/components/controls/bignext.js +21 -0
- package/dist/components/controls/bignext.js.map +1 -0
- package/dist/components/controls/bigplaypause.cjs +440 -0
- package/dist/components/controls/bigplaypause.cjs.map +1 -0
- package/dist/components/controls/bigplaypause.js +21 -0
- package/dist/components/controls/bigplaypause.js.map +1 -0
- package/dist/components/controls/bigprev.cjs +448 -0
- package/dist/components/controls/bigprev.cjs.map +1 -0
- package/dist/components/controls/bigprev.js +21 -0
- package/dist/components/controls/bigprev.js.map +1 -0
- package/dist/components/controls/brightness/index.cjs +767 -0
- package/dist/components/controls/brightness/index.cjs.map +1 -0
- package/dist/components/controls/brightness/index.js +25 -0
- package/dist/components/controls/brightness/index.js.map +1 -0
- package/dist/components/controls/brightness/slider.cjs +460 -0
- package/dist/components/controls/brightness/slider.cjs.map +1 -0
- package/dist/components/controls/brightness/slider.js +21 -0
- package/dist/components/controls/brightness/slider.js.map +1 -0
- package/dist/components/controls/captions.cjs +452 -0
- package/dist/components/controls/captions.cjs.map +1 -0
- package/dist/components/controls/captions.js +21 -0
- package/dist/components/controls/captions.js.map +1 -0
- package/dist/components/controls/capture.cjs +455 -0
- package/dist/components/controls/capture.cjs.map +1 -0
- package/dist/components/controls/capture.js +21 -0
- package/dist/components/controls/capture.js.map +1 -0
- package/dist/components/controls/cast.cjs +441 -0
- package/dist/components/controls/cast.cjs.map +1 -0
- package/dist/components/controls/cast.js +21 -0
- package/dist/components/controls/cast.js.map +1 -0
- package/dist/components/controls/chapter.cjs +213 -0
- package/dist/components/controls/chapter.cjs.map +1 -0
- package/dist/components/controls/chapter.js +18 -0
- package/dist/components/controls/chapter.js.map +1 -0
- package/dist/components/controls/duration.cjs +217 -0
- package/dist/components/controls/duration.cjs.map +1 -0
- package/dist/components/controls/duration.js +18 -0
- package/dist/components/controls/duration.js.map +1 -0
- package/dist/components/controls/expandminiplayer.cjs +430 -0
- package/dist/components/controls/expandminiplayer.cjs.map +1 -0
- package/dist/components/controls/expandminiplayer.js +21 -0
- package/dist/components/controls/expandminiplayer.js.map +1 -0
- package/dist/components/controls/forward10.cjs +427 -0
- package/dist/components/controls/forward10.cjs.map +1 -0
- package/dist/components/controls/forward10.js +21 -0
- package/dist/components/controls/forward10.js.map +1 -0
- package/dist/components/controls/fullscreen.cjs +441 -0
- package/dist/components/controls/fullscreen.cjs.map +1 -0
- package/dist/components/controls/fullscreen.js +21 -0
- package/dist/components/controls/fullscreen.js.map +1 -0
- package/dist/components/controls/fullscreenlock.cjs +433 -0
- package/dist/components/controls/fullscreenlock.cjs.map +1 -0
- package/dist/components/controls/fullscreenlock.js +21 -0
- package/dist/components/controls/fullscreenlock.js.map +1 -0
- package/dist/components/controls/fullscreenorientation.cjs +436 -0
- package/dist/components/controls/fullscreenorientation.cjs.map +1 -0
- package/dist/components/controls/fullscreenorientation.js +21 -0
- package/dist/components/controls/fullscreenorientation.js.map +1 -0
- package/dist/components/controls/meta.cjs +298 -0
- package/dist/components/controls/meta.cjs.map +1 -0
- package/dist/components/controls/meta.js +18 -0
- package/dist/components/controls/meta.js.map +1 -0
- package/dist/components/controls/next.cjs +444 -0
- package/dist/components/controls/next.cjs.map +1 -0
- package/dist/components/controls/next.js +21 -0
- package/dist/components/controls/next.js.map +1 -0
- package/dist/components/controls/objectfit.cjs +444 -0
- package/dist/components/controls/objectfit.cjs.map +1 -0
- package/dist/components/controls/objectfit.js +21 -0
- package/dist/components/controls/objectfit.js.map +1 -0
- package/dist/components/controls/pictureinpicture.cjs +441 -0
- package/dist/components/controls/pictureinpicture.cjs.map +1 -0
- package/dist/components/controls/pictureinpicture.js +21 -0
- package/dist/components/controls/pictureinpicture.js.map +1 -0
- package/dist/components/controls/playpause.cjs +441 -0
- package/dist/components/controls/playpause.cjs.map +1 -0
- package/dist/components/controls/playpause.js +21 -0
- package/dist/components/controls/playpause.js.map +1 -0
- package/dist/components/controls/prev.cjs +444 -0
- package/dist/components/controls/prev.cjs.map +1 -0
- package/dist/components/controls/prev.js +21 -0
- package/dist/components/controls/prev.js.map +1 -0
- package/dist/components/controls/removeminiplayer.cjs +432 -0
- package/dist/components/controls/removeminiplayer.cjs.map +1 -0
- package/dist/components/controls/removeminiplayer.js +21 -0
- package/dist/components/controls/removeminiplayer.js.map +1 -0
- package/dist/components/controls/settings.cjs +443 -0
- package/dist/components/controls/settings.cjs.map +1 -0
- package/dist/components/controls/settings.js +21 -0
- package/dist/components/controls/settings.js.map +1 -0
- package/dist/components/controls/theater.cjs +441 -0
- package/dist/components/controls/theater.cjs.map +1 -0
- package/dist/components/controls/theater.js +21 -0
- package/dist/components/controls/theater.js.map +1 -0
- package/dist/components/controls/time.cjs +230 -0
- package/dist/components/controls/time.cjs.map +1 -0
- package/dist/components/controls/time.js +18 -0
- package/dist/components/controls/time.js.map +1 -0
- package/dist/components/controls/timeandduration.cjs +251 -0
- package/dist/components/controls/timeandduration.cjs.map +1 -0
- package/dist/components/controls/timeandduration.js +18 -0
- package/dist/components/controls/timeandduration.js.map +1 -0
- package/dist/components/controls/timeline/index.cjs +713 -0
- package/dist/components/controls/timeline/index.cjs.map +1 -0
- package/dist/components/controls/timeline/index.js +25 -0
- package/dist/components/controls/timeline/index.js.map +1 -0
- package/dist/components/controls/timeline/types.cjs +19 -0
- package/dist/components/controls/timeline/types.cjs.map +1 -0
- package/dist/components/controls/timeline/types.js +1 -0
- package/dist/components/controls/timeline/types.js.map +1 -0
- package/dist/components/controls/volume/index.cjs +767 -0
- package/dist/components/controls/volume/index.cjs.map +1 -0
- package/dist/components/controls/volume/index.js +25 -0
- package/dist/components/controls/volume/index.js.map +1 -0
- package/dist/components/controls/volume/slider.cjs +460 -0
- package/dist/components/controls/volume/slider.cjs.map +1 -0
- package/dist/components/controls/volume/slider.js +21 -0
- package/dist/components/controls/volume/slider.js.map +1 -0
- package/dist/components/holders/airplayplaceholder.cjs +446 -0
- package/dist/components/holders/airplayplaceholder.cjs.map +1 -0
- package/dist/components/holders/airplayplaceholder.js +21 -0
- package/dist/components/holders/airplayplaceholder.js.map +1 -0
- package/dist/components/holders/castplaceholder.cjs +446 -0
- package/dist/components/holders/castplaceholder.cjs.map +1 -0
- package/dist/components/holders/castplaceholder.js +21 -0
- package/dist/components/holders/castplaceholder.js.map +1 -0
- package/dist/components/holders/pipplaceholder.cjs +446 -0
- package/dist/components/holders/pipplaceholder.cjs.map +1 -0
- package/dist/components/holders/pipplaceholder.js +30 -0
- package/dist/components/holders/pipplaceholder.js.map +1 -0
- package/dist/components/icons/add.cjs +27 -0
- package/dist/components/icons/add.cjs.map +1 -0
- package/dist/components/icons/add.js +8 -0
- package/dist/components/icons/add.js.map +1 -0
- package/dist/components/icons/airplay.cjs +30 -0
- package/dist/components/icons/airplay.cjs.map +1 -0
- package/dist/components/icons/airplay.js +8 -0
- package/dist/components/icons/airplay.js.map +1 -0
- package/dist/components/icons/airplayplaceholder.cjs +39 -0
- package/dist/components/icons/airplayplaceholder.cjs.map +1 -0
- package/dist/components/icons/airplayplaceholder.js +8 -0
- package/dist/components/icons/airplayplaceholder.js.map +1 -0
- package/dist/components/icons/ambience.cjs +27 -0
- package/dist/components/icons/ambience.cjs.map +1 -0
- package/dist/components/icons/ambience.js +8 -0
- package/dist/components/icons/ambience.js.map +1 -0
- package/dist/components/icons/audiotrack.cjs +27 -0
- package/dist/components/icons/audiotrack.cjs.map +1 -0
- package/dist/components/icons/audiotrack.js +8 -0
- package/dist/components/icons/audiotrack.js.map +1 -0
- package/dist/components/icons/autoplay.cjs +27 -0
- package/dist/components/icons/autoplay.cjs.map +1 -0
- package/dist/components/icons/autoplay.js +8 -0
- package/dist/components/icons/autoplay.js.map +1 -0
- package/dist/components/icons/backward10.cjs +29 -0
- package/dist/components/icons/backward10.cjs.map +1 -0
- package/dist/components/icons/backward10.js +8 -0
- package/dist/components/icons/backward10.js.map +1 -0
- package/dist/components/icons/brightnessdark.cjs +29 -0
- package/dist/components/icons/brightnessdark.cjs.map +1 -0
- package/dist/components/icons/brightnessdark.js +8 -0
- package/dist/components/icons/brightnessdark.js.map +1 -0
- package/dist/components/icons/brightnesshigh.cjs +29 -0
- package/dist/components/icons/brightnesshigh.cjs.map +1 -0
- package/dist/components/icons/brightnesshigh.js +8 -0
- package/dist/components/icons/brightnesshigh.js.map +1 -0
- package/dist/components/icons/brightnesslow.cjs +29 -0
- package/dist/components/icons/brightnesslow.cjs.map +1 -0
- package/dist/components/icons/brightnesslow.js +8 -0
- package/dist/components/icons/brightnesslow.js.map +1 -0
- package/dist/components/icons/bwd.cjs +31 -0
- package/dist/components/icons/bwd.cjs.map +1 -0
- package/dist/components/icons/bwd.js +8 -0
- package/dist/components/icons/bwd.js.map +1 -0
- package/dist/components/icons/captions.cjs +29 -0
- package/dist/components/icons/captions.cjs.map +1 -0
- package/dist/components/icons/captions.js +8 -0
- package/dist/components/icons/captions.js.map +1 -0
- package/dist/components/icons/capture.cjs +29 -0
- package/dist/components/icons/capture.cjs.map +1 -0
- package/dist/components/icons/capture.js +8 -0
- package/dist/components/icons/capture.js.map +1 -0
- package/dist/components/icons/cast.cjs +29 -0
- package/dist/components/icons/cast.cjs.map +1 -0
- package/dist/components/icons/cast.js +8 -0
- package/dist/components/icons/cast.js.map +1 -0
- package/dist/components/icons/castplaceholder.cjs +42 -0
- package/dist/components/icons/castplaceholder.cjs.map +1 -0
- package/dist/components/icons/castplaceholder.js +8 -0
- package/dist/components/icons/castplaceholder.js.map +1 -0
- package/dist/components/icons/chapters.cjs +27 -0
- package/dist/components/icons/chapters.cjs.map +1 -0
- package/dist/components/icons/chapters.js +8 -0
- package/dist/components/icons/chapters.js.map +1 -0
- package/dist/components/icons/configure.cjs +27 -0
- package/dist/components/icons/configure.cjs.map +1 -0
- package/dist/components/icons/configure.js +8 -0
- package/dist/components/icons/configure.js.map +1 -0
- package/dist/components/icons/deleteicon.cjs +27 -0
- package/dist/components/icons/deleteicon.cjs.map +1 -0
- package/dist/components/icons/deleteicon.js +8 -0
- package/dist/components/icons/deleteicon.js.map +1 -0
- package/dist/components/icons/doubletriangleleft.cjs +27 -0
- package/dist/components/icons/doubletriangleleft.cjs.map +1 -0
- package/dist/components/icons/doubletriangleleft.js +8 -0
- package/dist/components/icons/doubletriangleleft.js.map +1 -0
- package/dist/components/icons/doubletriangleright.cjs +27 -0
- package/dist/components/icons/doubletriangleright.cjs.map +1 -0
- package/dist/components/icons/doubletriangleright.js +8 -0
- package/dist/components/icons/doubletriangleright.js.map +1 -0
- package/dist/components/icons/dragindicator.cjs +27 -0
- package/dist/components/icons/dragindicator.cjs.map +1 -0
- package/dist/components/icons/dragindicator.js +8 -0
- package/dist/components/icons/dragindicator.js.map +1 -0
- package/dist/components/icons/edit.cjs +27 -0
- package/dist/components/icons/edit.cjs.map +1 -0
- package/dist/components/icons/edit.js +8 -0
- package/dist/components/icons/edit.js.map +1 -0
- package/dist/components/icons/enterfullscreen.cjs +32 -0
- package/dist/components/icons/enterfullscreen.cjs.map +1 -0
- package/dist/components/icons/enterfullscreen.js +8 -0
- package/dist/components/icons/enterfullscreen.js.map +1 -0
- package/dist/components/icons/enterpip.cjs +29 -0
- package/dist/components/icons/enterpip.cjs.map +1 -0
- package/dist/components/icons/enterpip.js +8 -0
- package/dist/components/icons/enterpip.js.map +1 -0
- package/dist/components/icons/entertheater.cjs +29 -0
- package/dist/components/icons/entertheater.cjs.map +1 -0
- package/dist/components/icons/entertheater.js +8 -0
- package/dist/components/icons/entertheater.js.map +1 -0
- package/dist/components/icons/expandminiplayer.cjs +29 -0
- package/dist/components/icons/expandminiplayer.cjs.map +1 -0
- package/dist/components/icons/expandminiplayer.js +8 -0
- package/dist/components/icons/expandminiplayer.js.map +1 -0
- package/dist/components/icons/forward10.cjs +29 -0
- package/dist/components/icons/forward10.cjs.map +1 -0
- package/dist/components/icons/forward10.js +8 -0
- package/dist/components/icons/forward10.js.map +1 -0
- package/dist/components/icons/fullscreenorientation.cjs +30 -0
- package/dist/components/icons/fullscreenorientation.cjs.map +1 -0
- package/dist/components/icons/fullscreenorientation.js +8 -0
- package/dist/components/icons/fullscreenorientation.js.map +1 -0
- package/dist/components/icons/fwd.cjs +31 -0
- package/dist/components/icons/fwd.cjs.map +1 -0
- package/dist/components/icons/fwd.js +8 -0
- package/dist/components/icons/fwd.js.map +1 -0
- package/dist/components/icons/leavefullscreen.cjs +32 -0
- package/dist/components/icons/leavefullscreen.cjs.map +1 -0
- package/dist/components/icons/leavefullscreen.js +8 -0
- package/dist/components/icons/leavefullscreen.js.map +1 -0
- package/dist/components/icons/leavepip.cjs +29 -0
- package/dist/components/icons/leavepip.cjs.map +1 -0
- package/dist/components/icons/leavepip.js +8 -0
- package/dist/components/icons/leavepip.js.map +1 -0
- package/dist/components/icons/leavetheater.cjs +29 -0
- package/dist/components/icons/leavetheater.cjs.map +1 -0
- package/dist/components/icons/leavetheater.js +8 -0
- package/dist/components/icons/leavetheater.js.map +1 -0
- package/dist/components/icons/lock.cjs +30 -0
- package/dist/components/icons/lock.cjs.map +1 -0
- package/dist/components/icons/lock.js +8 -0
- package/dist/components/icons/lock.js.map +1 -0
- package/dist/components/icons/loop.cjs +27 -0
- package/dist/components/icons/loop.cjs.map +1 -0
- package/dist/components/icons/loop.js +8 -0
- package/dist/components/icons/loop.js.map +1 -0
- package/dist/components/icons/next.cjs +30 -0
- package/dist/components/icons/next.cjs.map +1 -0
- package/dist/components/icons/next.js +8 -0
- package/dist/components/icons/next.js.map +1 -0
- package/dist/components/icons/objectfitcontain.cjs +32 -0
- package/dist/components/icons/objectfitcontain.cjs.map +1 -0
- package/dist/components/icons/objectfitcontain.js +8 -0
- package/dist/components/icons/objectfitcontain.js.map +1 -0
- package/dist/components/icons/objectfitcover.cjs +32 -0
- package/dist/components/icons/objectfitcover.cjs.map +1 -0
- package/dist/components/icons/objectfitcover.js +8 -0
- package/dist/components/icons/objectfitcover.js.map +1 -0
- package/dist/components/icons/objectfitfill.cjs +32 -0
- package/dist/components/icons/objectfitfill.cjs.map +1 -0
- package/dist/components/icons/objectfitfill.js +8 -0
- package/dist/components/icons/objectfitfill.js.map +1 -0
- package/dist/components/icons/pause.cjs +29 -0
- package/dist/components/icons/pause.cjs.map +1 -0
- package/dist/components/icons/pause.js +8 -0
- package/dist/components/icons/pause.js.map +1 -0
- package/dist/components/icons/pipplaceholder.cjs +50 -0
- package/dist/components/icons/pipplaceholder.cjs.map +1 -0
- package/dist/components/icons/pipplaceholder.js +8 -0
- package/dist/components/icons/pipplaceholder.js.map +1 -0
- package/dist/components/icons/play.cjs +29 -0
- package/dist/components/icons/play.cjs.map +1 -0
- package/dist/components/icons/play.js +8 -0
- package/dist/components/icons/play.js.map +1 -0
- package/dist/components/icons/playbackrate.cjs +27 -0
- package/dist/components/icons/playbackrate.cjs.map +1 -0
- package/dist/components/icons/playbackrate.js +8 -0
- package/dist/components/icons/playbackrate.js.map +1 -0
- package/dist/components/icons/playlist.cjs +27 -0
- package/dist/components/icons/playlist.cjs.map +1 -0
- package/dist/components/icons/playlist.js +8 -0
- package/dist/components/icons/playlist.js.map +1 -0
- package/dist/components/icons/prev.cjs +30 -0
- package/dist/components/icons/prev.cjs.map +1 -0
- package/dist/components/icons/prev.js +8 -0
- package/dist/components/icons/prev.js.map +1 -0
- package/dist/components/icons/quality.cjs +27 -0
- package/dist/components/icons/quality.cjs.map +1 -0
- package/dist/components/icons/quality.js +8 -0
- package/dist/components/icons/quality.js.map +1 -0
- package/dist/components/icons/removeminiplayer.cjs +29 -0
- package/dist/components/icons/removeminiplayer.cjs.map +1 -0
- package/dist/components/icons/removeminiplayer.js +8 -0
- package/dist/components/icons/removeminiplayer.js.map +1 -0
- package/dist/components/icons/replay.cjs +29 -0
- package/dist/components/icons/replay.cjs.map +1 -0
- package/dist/components/icons/replay.js +8 -0
- package/dist/components/icons/replay.js.map +1 -0
- package/dist/components/icons/returnback.cjs +30 -0
- package/dist/components/icons/returnback.cjs.map +1 -0
- package/dist/components/icons/returnback.js +8 -0
- package/dist/components/icons/returnback.js.map +1 -0
- package/dist/components/icons/settings.cjs +29 -0
- package/dist/components/icons/settings.cjs.map +1 -0
- package/dist/components/icons/settings.js +8 -0
- package/dist/components/icons/settings.js.map +1 -0
- package/dist/components/icons/shuffle.cjs +27 -0
- package/dist/components/icons/shuffle.cjs.map +1 -0
- package/dist/components/icons/shuffle.js +8 -0
- package/dist/components/icons/shuffle.js.map +1 -0
- package/dist/components/icons/subtitles.cjs +29 -0
- package/dist/components/icons/subtitles.cjs.map +1 -0
- package/dist/components/icons/subtitles.js +8 -0
- package/dist/components/icons/subtitles.js.map +1 -0
- package/dist/components/icons/timer.cjs +27 -0
- package/dist/components/icons/timer.cjs.map +1 -0
- package/dist/components/icons/timer.js +8 -0
- package/dist/components/icons/timer.js.map +1 -0
- package/dist/components/icons/triangleleft.cjs +29 -0
- package/dist/components/icons/triangleleft.cjs.map +1 -0
- package/dist/components/icons/triangleleft.js +8 -0
- package/dist/components/icons/triangleleft.js.map +1 -0
- package/dist/components/icons/tripletriangleleft.cjs +27 -0
- package/dist/components/icons/tripletriangleleft.cjs.map +1 -0
- package/dist/components/icons/tripletriangleleft.js +8 -0
- package/dist/components/icons/tripletriangleleft.js.map +1 -0
- package/dist/components/icons/tripletriangleright.cjs +27 -0
- package/dist/components/icons/tripletriangleright.cjs.map +1 -0
- package/dist/components/icons/tripletriangleright.js +8 -0
- package/dist/components/icons/tripletriangleright.js.map +1 -0
- package/dist/components/icons/unlock.cjs +30 -0
- package/dist/components/icons/unlock.cjs.map +1 -0
- package/dist/components/icons/unlock.js +8 -0
- package/dist/components/icons/unlock.js.map +1 -0
- package/dist/components/icons/videotrack.cjs +27 -0
- package/dist/components/icons/videotrack.cjs.map +1 -0
- package/dist/components/icons/videotrack.js +8 -0
- package/dist/components/icons/videotrack.js.map +1 -0
- package/dist/components/icons/volumehigh.cjs +29 -0
- package/dist/components/icons/volumehigh.cjs.map +1 -0
- package/dist/components/icons/volumehigh.js +8 -0
- package/dist/components/icons/volumehigh.js.map +1 -0
- package/dist/components/icons/volumelow.cjs +29 -0
- package/dist/components/icons/volumelow.cjs.map +1 -0
- package/dist/components/icons/volumelow.js +8 -0
- package/dist/components/icons/volumelow.js.map +1 -0
- package/dist/components/icons/volumemuted.cjs +29 -0
- package/dist/components/icons/volumemuted.cjs.map +1 -0
- package/dist/components/icons/volumemuted.js +8 -0
- package/dist/components/icons/volumemuted.js.map +1 -0
- package/dist/components/icons/z-register.cjs +633 -0
- package/dist/components/icons/z-register.cjs.map +1 -0
- package/dist/components/icons/z-register.js +66 -0
- package/dist/components/icons/z-register.js.map +1 -0
- package/dist/components/notifiers/airplay.cjs +450 -0
- package/dist/components/notifiers/airplay.cjs.map +1 -0
- package/dist/components/notifiers/airplay.js +22 -0
- package/dist/components/notifiers/airplay.js.map +1 -0
- package/dist/components/notifiers/base.cjs +191 -0
- package/dist/components/notifiers/base.cjs.map +1 -0
- package/dist/components/notifiers/base.js +16 -0
- package/dist/components/notifiers/base.js.map +1 -0
- package/dist/components/notifiers/brightness.cjs +469 -0
- package/dist/components/notifiers/brightness.cjs.map +1 -0
- package/dist/components/notifiers/brightness.js +22 -0
- package/dist/components/notifiers/brightness.js.map +1 -0
- package/dist/components/notifiers/cancelscrub.cjs +216 -0
- package/dist/components/notifiers/cancelscrub.cjs.map +1 -0
- package/dist/components/notifiers/cancelscrub.js +19 -0
- package/dist/components/notifiers/cancelscrub.js.map +1 -0
- package/dist/components/notifiers/captions.cjs +450 -0
- package/dist/components/notifiers/captions.cjs.map +1 -0
- package/dist/components/notifiers/captions.js +22 -0
- package/dist/components/notifiers/captions.js.map +1 -0
- package/dist/components/notifiers/capture.cjs +450 -0
- package/dist/components/notifiers/capture.cjs.map +1 -0
- package/dist/components/notifiers/capture.js +22 -0
- package/dist/components/notifiers/capture.js.map +1 -0
- package/dist/components/notifiers/cast.cjs +450 -0
- package/dist/components/notifiers/cast.cjs.map +1 -0
- package/dist/components/notifiers/cast.js +22 -0
- package/dist/components/notifiers/cast.js.map +1 -0
- package/dist/components/notifiers/chapter.cjs +225 -0
- package/dist/components/notifiers/chapter.cjs.map +1 -0
- package/dist/components/notifiers/chapter.js +19 -0
- package/dist/components/notifiers/chapter.js.map +1 -0
- package/dist/components/notifiers/fastplay.cjs +467 -0
- package/dist/components/notifiers/fastplay.cjs.map +1 -0
- package/dist/components/notifiers/fastplay.js +22 -0
- package/dist/components/notifiers/fastplay.js.map +1 -0
- package/dist/components/notifiers/fwdbwd.cjs +457 -0
- package/dist/components/notifiers/fwdbwd.cjs.map +1 -0
- package/dist/components/notifiers/fwdbwd.js +22 -0
- package/dist/components/notifiers/fwdbwd.js.map +1 -0
- package/dist/components/notifiers/objectfit.cjs +468 -0
- package/dist/components/notifiers/objectfit.cjs.map +1 -0
- package/dist/components/notifiers/objectfit.js +22 -0
- package/dist/components/notifiers/objectfit.js.map +1 -0
- package/dist/components/notifiers/playbackrate.cjs +466 -0
- package/dist/components/notifiers/playbackrate.cjs.map +1 -0
- package/dist/components/notifiers/playbackrate.js +22 -0
- package/dist/components/notifiers/playbackrate.js.map +1 -0
- package/dist/components/notifiers/playpause.cjs +457 -0
- package/dist/components/notifiers/playpause.cjs.map +1 -0
- package/dist/components/notifiers/playpause.js +22 -0
- package/dist/components/notifiers/playpause.js.map +1 -0
- package/dist/components/notifiers/prevnext.cjs +457 -0
- package/dist/components/notifiers/prevnext.cjs.map +1 -0
- package/dist/components/notifiers/prevnext.js +22 -0
- package/dist/components/notifiers/prevnext.js.map +1 -0
- package/dist/components/notifiers/scrub.cjs +449 -0
- package/dist/components/notifiers/scrub.cjs.map +1 -0
- package/dist/components/notifiers/scrub.js +22 -0
- package/dist/components/notifiers/scrub.js.map +1 -0
- package/dist/components/notifiers/timer.cjs +451 -0
- package/dist/components/notifiers/timer.cjs.map +1 -0
- package/dist/components/notifiers/timer.js +22 -0
- package/dist/components/notifiers/timer.js.map +1 -0
- package/dist/components/notifiers/touchbrightness.cjs +474 -0
- package/dist/components/notifiers/touchbrightness.cjs.map +1 -0
- package/dist/components/notifiers/touchbrightness.js +22 -0
- package/dist/components/notifiers/touchbrightness.js.map +1 -0
- package/dist/components/notifiers/touchtimeline.cjs +218 -0
- package/dist/components/notifiers/touchtimeline.cjs.map +1 -0
- package/dist/components/notifiers/touchtimeline.js +21 -0
- package/dist/components/notifiers/touchtimeline.js.map +1 -0
- package/dist/components/notifiers/touchvolume.cjs +474 -0
- package/dist/components/notifiers/touchvolume.cjs.map +1 -0
- package/dist/components/notifiers/touchvolume.js +22 -0
- package/dist/components/notifiers/touchvolume.js.map +1 -0
- package/dist/components/notifiers/volume.cjs +469 -0
- package/dist/components/notifiers/volume.cjs.map +1 -0
- package/dist/components/notifiers/volume.js +22 -0
- package/dist/components/notifiers/volume.js.map +1 -0
- package/dist/components/notifiers/z-register.cjs +778 -0
- package/dist/components/notifiers/z-register.cjs.map +1 -0
- package/dist/components/notifiers/z-register.js +36 -0
- package/dist/components/notifiers/z-register.js.map +1 -0
- package/dist/components/rangeinput/build.cjs +52 -0
- package/dist/components/rangeinput/build.cjs.map +1 -0
- package/dist/components/rangeinput/build.js +8 -0
- package/dist/components/rangeinput/build.js.map +1 -0
- package/dist/components/rangeinput/index.cjs +433 -0
- package/dist/components/rangeinput/index.cjs.map +1 -0
- package/dist/components/rangeinput/index.js +20 -0
- package/dist/components/rangeinput/index.js.map +1 -0
- package/dist/components/rangeinput/types.cjs +19 -0
- package/dist/components/rangeinput/types.cjs.map +1 -0
- package/dist/components/rangeinput/types.js +1 -0
- package/dist/components/rangeinput/types.js.map +1 -0
- package/dist/components/screenlock.cjs +438 -0
- package/dist/components/screenlock.cjs.map +1 -0
- package/dist/components/screenlock.js +21 -0
- package/dist/components/screenlock.js.map +1 -0
- package/dist/components/z-register.cjs +2345 -0
- package/dist/components/z-register.cjs.map +1 -0
- package/dist/components/z-register.js +64 -0
- package/dist/components/z-register.js.map +1 -0
- package/dist/consts/actions.cjs +79 -0
- package/dist/consts/actions.cjs.map +1 -0
- package/dist/consts/actions.js +8 -0
- package/dist/consts/actions.js.map +1 -0
- package/dist/consts/config.cjs +105 -0
- package/dist/consts/config.cjs.map +1 -0
- package/dist/consts/config.js +9 -0
- package/dist/consts/config.js.map +1 -0
- package/dist/consts/generics.cjs +29 -0
- package/dist/consts/generics.cjs.map +1 -0
- package/dist/consts/generics.js +10 -0
- package/dist/consts/generics.js.map +1 -0
- package/dist/consts/media.cjs +201 -0
- package/dist/consts/media.cjs.map +1 -0
- package/dist/consts/media.js +16 -0
- package/dist/consts/media.js.map +1 -0
- package/dist/core/controllable.cjs +91 -0
- package/dist/core/controllable.cjs.map +1 -0
- package/dist/core/controllable.js +13 -0
- package/dist/core/controllable.js.map +1 -0
- package/dist/core/controller.cjs +1664 -0
- package/dist/core/controller.cjs.map +1 -0
- package/dist/core/controller.js +27 -0
- package/dist/core/controller.js.map +1 -0
- package/dist/core/registries.cjs +268 -0
- package/dist/core/registries.cjs.map +1 -0
- package/dist/core/registries.js +24 -0
- package/dist/core/registries.js.map +1 -0
- package/dist/index.cjs +1934 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +3148 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/init.cjs +1890 -0
- package/dist/init.cjs.map +1 -0
- package/dist/init.js +24 -0
- package/dist/init.js.map +1 -0
- package/dist/plugs/base/index.cjs +407 -0
- package/dist/plugs/base/index.cjs.map +1 -0
- package/dist/plugs/base/index.js +19 -0
- package/dist/plugs/base/index.js.map +1 -0
- package/dist/plugs/base/slider.cjs +458 -0
- package/dist/plugs/base/slider.cjs.map +1 -0
- package/dist/plugs/base/slider.js +18 -0
- package/dist/plugs/base/slider.js.map +1 -0
- package/dist/plugs/base/types.cjs +19 -0
- package/dist/plugs/base/types.cjs.map +1 -0
- package/dist/plugs/base/types.js +1 -0
- package/dist/plugs/base/types.js.map +1 -0
- package/dist/plugs/main/disabled/build.cjs +27 -0
- package/dist/plugs/main/disabled/build.cjs.map +1 -0
- package/dist/plugs/main/disabled/build.js +8 -0
- package/dist/plugs/main/disabled/build.js.map +1 -0
- package/dist/plugs/main/disabled/index.cjs +421 -0
- package/dist/plugs/main/disabled/index.cjs.map +1 -0
- package/dist/plugs/main/disabled/index.js +22 -0
- package/dist/plugs/main/disabled/index.js.map +1 -0
- package/dist/plugs/main/disabled/types.cjs +19 -0
- package/dist/plugs/main/disabled/types.cjs.map +1 -0
- package/dist/plugs/main/disabled/types.js +1 -0
- package/dist/plugs/main/disabled/types.js.map +1 -0
- package/dist/plugs/main/lightState/build.cjs +34 -0
- package/dist/plugs/main/lightState/build.cjs.map +1 -0
- package/dist/plugs/main/lightState/build.js +8 -0
- package/dist/plugs/main/lightState/build.js.map +1 -0
- package/dist/plugs/main/lightState/index.cjs +458 -0
- package/dist/plugs/main/lightState/index.cjs.map +1 -0
- package/dist/plugs/main/lightState/index.js +22 -0
- package/dist/plugs/main/lightState/index.js.map +1 -0
- package/dist/plugs/main/lightState/types.cjs +19 -0
- package/dist/plugs/main/lightState/types.cjs.map +1 -0
- package/dist/plugs/main/lightState/types.js +1 -0
- package/dist/plugs/main/lightState/types.js.map +1 -0
- package/dist/plugs/main/playlist/build.cjs +59 -0
- package/dist/plugs/main/playlist/build.cjs.map +1 -0
- package/dist/plugs/main/playlist/build.js +10 -0
- package/dist/plugs/main/playlist/build.js.map +1 -0
- package/dist/plugs/main/playlist/index.cjs +511 -0
- package/dist/plugs/main/playlist/index.cjs.map +1 -0
- package/dist/plugs/main/playlist/index.js +25 -0
- package/dist/plugs/main/playlist/index.js.map +1 -0
- package/dist/plugs/main/playlist/types.cjs +19 -0
- package/dist/plugs/main/playlist/types.cjs.map +1 -0
- package/dist/plugs/main/playlist/types.js +1 -0
- package/dist/plugs/main/playlist/types.js.map +1 -0
- package/dist/plugs/main/skeleton/build.cjs +29 -0
- package/dist/plugs/main/skeleton/build.cjs.map +1 -0
- package/dist/plugs/main/skeleton/build.js +8 -0
- package/dist/plugs/main/skeleton/build.js.map +1 -0
- package/dist/plugs/main/skeleton/index.cjs +539 -0
- package/dist/plugs/main/skeleton/index.cjs.map +1 -0
- package/dist/plugs/main/skeleton/index.js +25 -0
- package/dist/plugs/main/skeleton/index.js.map +1 -0
- package/dist/plugs/main/skeleton/types.cjs +19 -0
- package/dist/plugs/main/skeleton/types.cjs.map +1 -0
- package/dist/plugs/main/skeleton/types.js +1 -0
- package/dist/plugs/main/skeleton/types.js.map +1 -0
- package/dist/plugs/menus/main/playlist.cjs +98 -0
- package/dist/plugs/menus/main/playlist.cjs.map +1 -0
- package/dist/plugs/menus/main/playlist.js +9 -0
- package/dist/plugs/menus/main/playlist.js.map +1 -0
- package/dist/plugs/menus/main/skeleton.cjs +34 -0
- package/dist/plugs/menus/main/skeleton.cjs.map +1 -0
- package/dist/plugs/menus/main/skeleton.js +8 -0
- package/dist/plugs/menus/main/skeleton.js.map +1 -0
- package/dist/plugs/menus/settings/actions.cjs +492 -0
- package/dist/plugs/menus/settings/actions.cjs.map +1 -0
- package/dist/plugs/menus/settings/actions.js +15 -0
- package/dist/plugs/menus/settings/actions.js.map +1 -0
- package/dist/plugs/menus/settings/ambience.cjs +35 -0
- package/dist/plugs/menus/settings/ambience.cjs.map +1 -0
- package/dist/plugs/menus/settings/ambience.js +8 -0
- package/dist/plugs/menus/settings/ambience.js.map +1 -0
- package/dist/plugs/menus/settings/auto.cjs +153 -0
- package/dist/plugs/menus/settings/auto.cjs.map +1 -0
- package/dist/plugs/menus/settings/auto.js +12 -0
- package/dist/plugs/menus/settings/auto.js.map +1 -0
- package/dist/plugs/menus/settings/brightness.cjs +45 -0
- package/dist/plugs/menus/settings/brightness.cjs.map +1 -0
- package/dist/plugs/menus/settings/brightness.js +8 -0
- package/dist/plugs/menus/settings/brightness.js.map +1 -0
- package/dist/plugs/menus/settings/captions.cjs +437 -0
- package/dist/plugs/menus/settings/captions.cjs.map +1 -0
- package/dist/plugs/menus/settings/captions.js +13 -0
- package/dist/plugs/menus/settings/captions.js.map +1 -0
- package/dist/plugs/menus/settings/controlPanel.cjs +442 -0
- package/dist/plugs/menus/settings/controlPanel.cjs.map +1 -0
- package/dist/plugs/menus/settings/controlPanel.js +14 -0
- package/dist/plugs/menus/settings/controlPanel.js.map +1 -0
- package/dist/plugs/menus/settings/fastPlay.cjs +166 -0
- package/dist/plugs/menus/settings/fastPlay.cjs.map +1 -0
- package/dist/plugs/menus/settings/fastPlay.js +12 -0
- package/dist/plugs/menus/settings/fastPlay.js.map +1 -0
- package/dist/plugs/menus/settings/frame.cjs +90 -0
- package/dist/plugs/menus/settings/frame.cjs.map +1 -0
- package/dist/plugs/menus/settings/frame.js +12 -0
- package/dist/plugs/menus/settings/frame.js.map +1 -0
- package/dist/plugs/menus/settings/gesture.cjs +255 -0
- package/dist/plugs/menus/settings/gesture.cjs.map +1 -0
- package/dist/plugs/menus/settings/gesture.js +17 -0
- package/dist/plugs/menus/settings/gesture.js.map +1 -0
- package/dist/plugs/menus/settings/keys.cjs +173 -0
- package/dist/plugs/menus/settings/keys.cjs.map +1 -0
- package/dist/plugs/menus/settings/keys.js +12 -0
- package/dist/plugs/menus/settings/keys.js.map +1 -0
- package/dist/plugs/menus/settings/locked.cjs +53 -0
- package/dist/plugs/menus/settings/locked.cjs.map +1 -0
- package/dist/plugs/menus/settings/locked.js +8 -0
- package/dist/plugs/menus/settings/locked.js.map +1 -0
- package/dist/plugs/menus/settings/metadata.cjs +202 -0
- package/dist/plugs/menus/settings/metadata.cjs.map +1 -0
- package/dist/plugs/menus/settings/metadata.js +13 -0
- package/dist/plugs/menus/settings/metadata.js.map +1 -0
- package/dist/plugs/menus/settings/modes.cjs +238 -0
- package/dist/plugs/menus/settings/modes.cjs.map +1 -0
- package/dist/plugs/menus/settings/modes.js +12 -0
- package/dist/plugs/menus/settings/modes.js.map +1 -0
- package/dist/plugs/menus/settings/objectFit.cjs +45 -0
- package/dist/plugs/menus/settings/objectFit.cjs.map +1 -0
- package/dist/plugs/menus/settings/objectFit.js +8 -0
- package/dist/plugs/menus/settings/objectFit.js.map +1 -0
- package/dist/plugs/menus/settings/overlay.cjs +112 -0
- package/dist/plugs/menus/settings/overlay.cjs.map +1 -0
- package/dist/plugs/menus/settings/overlay.js +12 -0
- package/dist/plugs/menus/settings/overlay.js.map +1 -0
- package/dist/plugs/menus/settings/persist.cjs +73 -0
- package/dist/plugs/menus/settings/persist.cjs.map +1 -0
- package/dist/plugs/menus/settings/persist.js +8 -0
- package/dist/plugs/menus/settings/persist.js.map +1 -0
- package/dist/plugs/menus/settings/playbackRate.cjs +119 -0
- package/dist/plugs/menus/settings/playbackRate.cjs.map +1 -0
- package/dist/plugs/menus/settings/playbackRate.js +12 -0
- package/dist/plugs/menus/settings/playbackRate.js.map +1 -0
- package/dist/plugs/menus/settings/poster.cjs +53 -0
- package/dist/plugs/menus/settings/poster.cjs.map +1 -0
- package/dist/plugs/menus/settings/poster.js +8 -0
- package/dist/plugs/menus/settings/poster.js.map +1 -0
- package/dist/plugs/menus/settings/settingsView.cjs +79 -0
- package/dist/plugs/menus/settings/settingsView.cjs.map +1 -0
- package/dist/plugs/menus/settings/settingsView.js +8 -0
- package/dist/plugs/menus/settings/settingsView.js.map +1 -0
- package/dist/plugs/menus/settings/sleepTimer.cjs +89 -0
- package/dist/plugs/menus/settings/sleepTimer.cjs.map +1 -0
- package/dist/plugs/menus/settings/sleepTimer.js +10 -0
- package/dist/plugs/menus/settings/sleepTimer.js.map +1 -0
- package/dist/plugs/menus/settings/time.cjs +48 -0
- package/dist/plugs/menus/settings/time.cjs.map +1 -0
- package/dist/plugs/menus/settings/time.js +8 -0
- package/dist/plugs/menus/settings/time.js.map +1 -0
- package/dist/plugs/menus/settings/timeTravel.cjs +133 -0
- package/dist/plugs/menus/settings/timeTravel.cjs.map +1 -0
- package/dist/plugs/menus/settings/timeTravel.js +11 -0
- package/dist/plugs/menus/settings/timeTravel.js.map +1 -0
- package/dist/plugs/menus/settings/toasts.cjs +232 -0
- package/dist/plugs/menus/settings/toasts.cjs.map +1 -0
- package/dist/plugs/menus/settings/toasts.js +18 -0
- package/dist/plugs/menus/settings/toasts.js.map +1 -0
- package/dist/plugs/menus/settings/voice.cjs +216 -0
- package/dist/plugs/menus/settings/voice.cjs.map +1 -0
- package/dist/plugs/menus/settings/voice.js +12 -0
- package/dist/plugs/menus/settings/voice.js.map +1 -0
- package/dist/plugs/menus/settings/volume.cjs +45 -0
- package/dist/plugs/menus/settings/volume.cjs.map +1 -0
- package/dist/plugs/menus/settings/volume.js +8 -0
- package/dist/plugs/menus/settings/volume.js.map +1 -0
- package/dist/plugs/menus/z-register.cjs +3212 -0
- package/dist/plugs/menus/z-register.cjs.map +1 -0
- package/dist/plugs/menus/z-register.js +48 -0
- package/dist/plugs/menus/z-register.js.map +1 -0
- package/dist/plugs/settings/airplay/build.cjs +27 -0
- package/dist/plugs/settings/airplay/build.cjs.map +1 -0
- package/dist/plugs/settings/airplay/build.js +8 -0
- package/dist/plugs/settings/airplay/build.js.map +1 -0
- package/dist/plugs/settings/airplay/index.cjs +416 -0
- package/dist/plugs/settings/airplay/index.cjs.map +1 -0
- package/dist/plugs/settings/airplay/index.js +19 -0
- package/dist/plugs/settings/airplay/index.js.map +1 -0
- package/dist/plugs/settings/ambience/build.cjs +33 -0
- package/dist/plugs/settings/ambience/build.cjs.map +1 -0
- package/dist/plugs/settings/ambience/build.js +8 -0
- package/dist/plugs/settings/ambience/build.js.map +1 -0
- package/dist/plugs/settings/ambience/index.cjs +464 -0
- package/dist/plugs/settings/ambience/index.cjs.map +1 -0
- package/dist/plugs/settings/ambience/index.js +24 -0
- package/dist/plugs/settings/ambience/index.js.map +1 -0
- package/dist/plugs/settings/ambience/types.cjs +19 -0
- package/dist/plugs/settings/ambience/types.cjs.map +1 -0
- package/dist/plugs/settings/ambience/types.js +1 -0
- package/dist/plugs/settings/ambience/types.js.map +1 -0
- package/dist/plugs/settings/auto/build.cjs +76 -0
- package/dist/plugs/settings/auto/build.cjs.map +1 -0
- package/dist/plugs/settings/auto/build.js +13 -0
- package/dist/plugs/settings/auto/build.js.map +1 -0
- package/dist/plugs/settings/auto/index.cjs +533 -0
- package/dist/plugs/settings/auto/index.cjs.map +1 -0
- package/dist/plugs/settings/auto/index.js +30 -0
- package/dist/plugs/settings/auto/index.js.map +1 -0
- package/dist/plugs/settings/auto/types.cjs +19 -0
- package/dist/plugs/settings/auto/types.cjs.map +1 -0
- package/dist/plugs/settings/auto/types.js +1 -0
- package/dist/plugs/settings/auto/types.js.map +1 -0
- package/dist/plugs/settings/brightness/build.cjs +31 -0
- package/dist/plugs/settings/brightness/build.cjs.map +1 -0
- package/dist/plugs/settings/brightness/build.js +8 -0
- package/dist/plugs/settings/brightness/build.js.map +1 -0
- package/dist/plugs/settings/brightness/index.cjs +522 -0
- package/dist/plugs/settings/brightness/index.cjs.map +1 -0
- package/dist/plugs/settings/brightness/index.js +24 -0
- package/dist/plugs/settings/brightness/index.js.map +1 -0
- package/dist/plugs/settings/brightness/types.cjs +19 -0
- package/dist/plugs/settings/brightness/types.cjs.map +1 -0
- package/dist/plugs/settings/brightness/types.js +1 -0
- package/dist/plugs/settings/brightness/types.js.map +1 -0
- package/dist/plugs/settings/captions/build.cjs +184 -0
- package/dist/plugs/settings/captions/build.cjs.map +1 -0
- package/dist/plugs/settings/captions/build.js +12 -0
- package/dist/plugs/settings/captions/build.js.map +1 -0
- package/dist/plugs/settings/captions/index.cjs +793 -0
- package/dist/plugs/settings/captions/index.cjs.map +1 -0
- package/dist/plugs/settings/captions/index.js +32 -0
- package/dist/plugs/settings/captions/index.js.map +1 -0
- package/dist/plugs/settings/captions/types.cjs +19 -0
- package/dist/plugs/settings/captions/types.cjs.map +1 -0
- package/dist/plugs/settings/captions/types.js +1 -0
- package/dist/plugs/settings/captions/types.js.map +1 -0
- package/dist/plugs/settings/cast/build.cjs +27 -0
- package/dist/plugs/settings/cast/build.cjs.map +1 -0
- package/dist/plugs/settings/cast/build.js +8 -0
- package/dist/plugs/settings/cast/build.js.map +1 -0
- package/dist/plugs/settings/cast/index.cjs +644 -0
- package/dist/plugs/settings/cast/index.cjs.map +1 -0
- package/dist/plugs/settings/cast/index.js +24 -0
- package/dist/plugs/settings/cast/index.js.map +1 -0
- package/dist/plugs/settings/cast/types.cjs +19 -0
- package/dist/plugs/settings/cast/types.cjs.map +1 -0
- package/dist/plugs/settings/cast/types.js +1 -0
- package/dist/plugs/settings/cast/types.js.map +1 -0
- package/dist/plugs/settings/controlPanel/build.cjs +144 -0
- package/dist/plugs/settings/controlPanel/build.cjs.map +1 -0
- package/dist/plugs/settings/controlPanel/build.js +17 -0
- package/dist/plugs/settings/controlPanel/build.js.map +1 -0
- package/dist/plugs/settings/controlPanel/draggable.cjs +1021 -0
- package/dist/plugs/settings/controlPanel/draggable.cjs.map +1 -0
- package/dist/plugs/settings/controlPanel/draggable.js +24 -0
- package/dist/plugs/settings/controlPanel/draggable.js.map +1 -0
- package/dist/plugs/settings/controlPanel/index.cjs +1031 -0
- package/dist/plugs/settings/controlPanel/index.cjs.map +1 -0
- package/dist/plugs/settings/controlPanel/index.js +37 -0
- package/dist/plugs/settings/controlPanel/index.js.map +1 -0
- package/dist/plugs/settings/controlPanel/types.cjs +19 -0
- package/dist/plugs/settings/controlPanel/types.cjs.map +1 -0
- package/dist/plugs/settings/controlPanel/types.js +1 -0
- package/dist/plugs/settings/controlPanel/types.js.map +1 -0
- package/dist/plugs/settings/css/build.cjs +29 -0
- package/dist/plugs/settings/css/build.cjs.map +1 -0
- package/dist/plugs/settings/css/build.js +8 -0
- package/dist/plugs/settings/css/build.js.map +1 -0
- package/dist/plugs/settings/css/index.cjs +444 -0
- package/dist/plugs/settings/css/index.cjs.map +1 -0
- package/dist/plugs/settings/css/index.js +22 -0
- package/dist/plugs/settings/css/index.js.map +1 -0
- package/dist/plugs/settings/css/types.cjs +19 -0
- package/dist/plugs/settings/css/types.cjs.map +1 -0
- package/dist/plugs/settings/css/types.js +1 -0
- package/dist/plugs/settings/css/types.js.map +1 -0
- package/dist/plugs/settings/errors/build.cjs +45 -0
- package/dist/plugs/settings/errors/build.cjs.map +1 -0
- package/dist/plugs/settings/errors/build.js +10 -0
- package/dist/plugs/settings/errors/build.js.map +1 -0
- package/dist/plugs/settings/errors/index.cjs +417 -0
- package/dist/plugs/settings/errors/index.cjs.map +1 -0
- package/dist/plugs/settings/errors/index.js +24 -0
- package/dist/plugs/settings/errors/index.js.map +1 -0
- package/dist/plugs/settings/errors/types.cjs +19 -0
- package/dist/plugs/settings/errors/types.cjs.map +1 -0
- package/dist/plugs/settings/errors/types.js +1 -0
- package/dist/plugs/settings/errors/types.js.map +1 -0
- package/dist/plugs/settings/fastPlay/build.cjs +46 -0
- package/dist/plugs/settings/fastPlay/build.cjs.map +1 -0
- package/dist/plugs/settings/fastPlay/build.js +8 -0
- package/dist/plugs/settings/fastPlay/build.js.map +1 -0
- package/dist/plugs/settings/fastPlay/index.cjs +510 -0
- package/dist/plugs/settings/fastPlay/index.cjs.map +1 -0
- package/dist/plugs/settings/fastPlay/index.js +23 -0
- package/dist/plugs/settings/fastPlay/index.js.map +1 -0
- package/dist/plugs/settings/fastPlay/types.cjs +19 -0
- package/dist/plugs/settings/fastPlay/types.cjs.map +1 -0
- package/dist/plugs/settings/fastPlay/types.js +1 -0
- package/dist/plugs/settings/fastPlay/types.js.map +1 -0
- package/dist/plugs/settings/frame/build.cjs +31 -0
- package/dist/plugs/settings/frame/build.cjs.map +1 -0
- package/dist/plugs/settings/frame/build.js +8 -0
- package/dist/plugs/settings/frame/build.js.map +1 -0
- package/dist/plugs/settings/frame/index.cjs +542 -0
- package/dist/plugs/settings/frame/index.cjs.map +1 -0
- package/dist/plugs/settings/frame/index.js +29 -0
- package/dist/plugs/settings/frame/index.js.map +1 -0
- package/dist/plugs/settings/frame/types.cjs +19 -0
- package/dist/plugs/settings/frame/types.cjs.map +1 -0
- package/dist/plugs/settings/frame/types.js +1 -0
- package/dist/plugs/settings/frame/types.js.map +1 -0
- package/dist/plugs/settings/gesture/base.cjs +187 -0
- package/dist/plugs/settings/gesture/base.cjs.map +1 -0
- package/dist/plugs/settings/gesture/base.js +24 -0
- package/dist/plugs/settings/gesture/base.js.map +1 -0
- package/dist/plugs/settings/gesture/build.cjs +116 -0
- package/dist/plugs/settings/gesture/build.cjs.map +1 -0
- package/dist/plugs/settings/gesture/build.js +13 -0
- package/dist/plugs/settings/gesture/build.js.map +1 -0
- package/dist/plugs/settings/gesture/index.cjs +877 -0
- package/dist/plugs/settings/gesture/index.cjs.map +1 -0
- package/dist/plugs/settings/gesture/index.js +38 -0
- package/dist/plugs/settings/gesture/index.js.map +1 -0
- package/dist/plugs/settings/gesture/touch.cjs +784 -0
- package/dist/plugs/settings/gesture/touch.cjs.map +1 -0
- package/dist/plugs/settings/gesture/touch.js +27 -0
- package/dist/plugs/settings/gesture/touch.js.map +1 -0
- package/dist/plugs/settings/gesture/types.cjs +19 -0
- package/dist/plugs/settings/gesture/types.cjs.map +1 -0
- package/dist/plugs/settings/gesture/types.js +1 -0
- package/dist/plugs/settings/gesture/types.js.map +1 -0
- package/dist/plugs/settings/gesture/wheel.cjs +757 -0
- package/dist/plugs/settings/gesture/wheel.cjs.map +1 -0
- package/dist/plugs/settings/gesture/wheel.js +27 -0
- package/dist/plugs/settings/gesture/wheel.js.map +1 -0
- package/dist/plugs/settings/keys/build.cjs +117 -0
- package/dist/plugs/settings/keys/build.cjs.map +1 -0
- package/dist/plugs/settings/keys/build.js +13 -0
- package/dist/plugs/settings/keys/build.js.map +1 -0
- package/dist/plugs/settings/keys/index.cjs +612 -0
- package/dist/plugs/settings/keys/index.cjs.map +1 -0
- package/dist/plugs/settings/keys/index.js +34 -0
- package/dist/plugs/settings/keys/index.js.map +1 -0
- package/dist/plugs/settings/keys/types.cjs +19 -0
- package/dist/plugs/settings/keys/types.cjs.map +1 -0
- package/dist/plugs/settings/keys/types.js +1 -0
- package/dist/plugs/settings/keys/types.js.map +1 -0
- package/dist/plugs/settings/locked/build.cjs +92 -0
- package/dist/plugs/settings/locked/build.cjs.map +1 -0
- package/dist/plugs/settings/locked/build.js +9 -0
- package/dist/plugs/settings/locked/build.js.map +1 -0
- package/dist/plugs/settings/locked/index.cjs +532 -0
- package/dist/plugs/settings/locked/index.cjs.map +1 -0
- package/dist/plugs/settings/locked/index.js +25 -0
- package/dist/plugs/settings/locked/index.js.map +1 -0
- package/dist/plugs/settings/locked/types.cjs +19 -0
- package/dist/plugs/settings/locked/types.cjs.map +1 -0
- package/dist/plugs/settings/locked/types.js +1 -0
- package/dist/plugs/settings/locked/types.js.map +1 -0
- package/dist/plugs/settings/metadata/build.cjs +29 -0
- package/dist/plugs/settings/metadata/build.cjs.map +1 -0
- package/dist/plugs/settings/metadata/build.js +8 -0
- package/dist/plugs/settings/metadata/build.js.map +1 -0
- package/dist/plugs/settings/metadata/index.cjs +455 -0
- package/dist/plugs/settings/metadata/index.cjs.map +1 -0
- package/dist/plugs/settings/metadata/index.js +24 -0
- package/dist/plugs/settings/metadata/index.js.map +1 -0
- package/dist/plugs/settings/metadata/types.cjs +19 -0
- package/dist/plugs/settings/metadata/types.cjs.map +1 -0
- package/dist/plugs/settings/metadata/types.js +1 -0
- package/dist/plugs/settings/metadata/types.js.map +1 -0
- package/dist/plugs/settings/modes/build.cjs +162 -0
- package/dist/plugs/settings/modes/build.cjs.map +1 -0
- package/dist/plugs/settings/modes/build.js +22 -0
- package/dist/plugs/settings/modes/build.js.map +1 -0
- package/dist/plugs/settings/modes/fullscreen.cjs +625 -0
- package/dist/plugs/settings/modes/fullscreen.cjs.map +1 -0
- package/dist/plugs/settings/modes/fullscreen.js +30 -0
- package/dist/plugs/settings/modes/fullscreen.js.map +1 -0
- package/dist/plugs/settings/modes/index.cjs +1031 -0
- package/dist/plugs/settings/modes/index.cjs.map +1 -0
- package/dist/plugs/settings/modes/index.js +51 -0
- package/dist/plugs/settings/modes/index.js.map +1 -0
- package/dist/plugs/settings/modes/miniplayer.cjs +618 -0
- package/dist/plugs/settings/modes/miniplayer.cjs.map +1 -0
- package/dist/plugs/settings/modes/miniplayer.js +30 -0
- package/dist/plugs/settings/modes/miniplayer.js.map +1 -0
- package/dist/plugs/settings/modes/pictureInPicture.cjs +704 -0
- package/dist/plugs/settings/modes/pictureInPicture.cjs.map +1 -0
- package/dist/plugs/settings/modes/pictureInPicture.js +30 -0
- package/dist/plugs/settings/modes/pictureInPicture.js.map +1 -0
- package/dist/plugs/settings/modes/theater.cjs +557 -0
- package/dist/plugs/settings/modes/theater.cjs.map +1 -0
- package/dist/plugs/settings/modes/theater.js +30 -0
- package/dist/plugs/settings/modes/theater.js.map +1 -0
- package/dist/plugs/settings/modes/types.cjs +19 -0
- package/dist/plugs/settings/modes/types.cjs.map +1 -0
- package/dist/plugs/settings/modes/types.js +1 -0
- package/dist/plugs/settings/modes/types.js.map +1 -0
- package/dist/plugs/settings/notifiers/build.cjs +30 -0
- package/dist/plugs/settings/notifiers/build.cjs.map +1 -0
- package/dist/plugs/settings/notifiers/build.js +8 -0
- package/dist/plugs/settings/notifiers/build.js.map +1 -0
- package/dist/plugs/settings/notifiers/index.cjs +451 -0
- package/dist/plugs/settings/notifiers/index.cjs.map +1 -0
- package/dist/plugs/settings/notifiers/index.js +24 -0
- package/dist/plugs/settings/notifiers/index.js.map +1 -0
- package/dist/plugs/settings/notifiers/types.cjs +19 -0
- package/dist/plugs/settings/notifiers/types.cjs.map +1 -0
- package/dist/plugs/settings/notifiers/types.js +1 -0
- package/dist/plugs/settings/notifiers/types.js.map +1 -0
- package/dist/plugs/settings/objectFit/build.cjs +35 -0
- package/dist/plugs/settings/objectFit/build.cjs.map +1 -0
- package/dist/plugs/settings/objectFit/build.js +10 -0
- package/dist/plugs/settings/objectFit/build.js.map +1 -0
- package/dist/plugs/settings/objectFit/index.cjs +514 -0
- package/dist/plugs/settings/objectFit/index.cjs.map +1 -0
- package/dist/plugs/settings/objectFit/index.js +30 -0
- package/dist/plugs/settings/objectFit/index.js.map +1 -0
- package/dist/plugs/settings/objectFit/types.cjs +19 -0
- package/dist/plugs/settings/objectFit/types.cjs.map +1 -0
- package/dist/plugs/settings/objectFit/types.js +1 -0
- package/dist/plugs/settings/objectFit/types.js.map +1 -0
- package/dist/plugs/settings/overlay/build.cjs +46 -0
- package/dist/plugs/settings/overlay/build.cjs.map +1 -0
- package/dist/plugs/settings/overlay/build.js +8 -0
- package/dist/plugs/settings/overlay/build.js.map +1 -0
- package/dist/plugs/settings/overlay/index.cjs +502 -0
- package/dist/plugs/settings/overlay/index.cjs.map +1 -0
- package/dist/plugs/settings/overlay/index.js +24 -0
- package/dist/plugs/settings/overlay/index.js.map +1 -0
- package/dist/plugs/settings/overlay/types.cjs +19 -0
- package/dist/plugs/settings/overlay/types.cjs.map +1 -0
- package/dist/plugs/settings/overlay/types.js +1 -0
- package/dist/plugs/settings/overlay/types.js.map +1 -0
- package/dist/plugs/settings/persist/build.cjs +41 -0
- package/dist/plugs/settings/persist/build.cjs.map +1 -0
- package/dist/plugs/settings/persist/build.js +8 -0
- package/dist/plugs/settings/persist/build.js.map +1 -0
- package/dist/plugs/settings/persist/index.cjs +413 -0
- package/dist/plugs/settings/persist/index.cjs.map +1 -0
- package/dist/plugs/settings/persist/index.js +22 -0
- package/dist/plugs/settings/persist/index.js.map +1 -0
- package/dist/plugs/settings/persist/types.cjs +19 -0
- package/dist/plugs/settings/persist/types.cjs.map +1 -0
- package/dist/plugs/settings/persist/types.js +1 -0
- package/dist/plugs/settings/persist/types.js.map +1 -0
- package/dist/plugs/settings/playbackRate/build.cjs +32 -0
- package/dist/plugs/settings/playbackRate/build.cjs.map +1 -0
- package/dist/plugs/settings/playbackRate/build.js +8 -0
- package/dist/plugs/settings/playbackRate/build.js.map +1 -0
- package/dist/plugs/settings/playbackRate/index.cjs +448 -0
- package/dist/plugs/settings/playbackRate/index.cjs.map +1 -0
- package/dist/plugs/settings/playbackRate/index.js +23 -0
- package/dist/plugs/settings/playbackRate/index.js.map +1 -0
- package/dist/plugs/settings/playbackRate/types.cjs +19 -0
- package/dist/plugs/settings/playbackRate/types.cjs.map +1 -0
- package/dist/plugs/settings/playbackRate/types.js +1 -0
- package/dist/plugs/settings/playbackRate/types.js.map +1 -0
- package/dist/plugs/settings/poster/build.cjs +29 -0
- package/dist/plugs/settings/poster/build.cjs.map +1 -0
- package/dist/plugs/settings/poster/build.js +8 -0
- package/dist/plugs/settings/poster/build.js.map +1 -0
- package/dist/plugs/settings/poster/index.cjs +435 -0
- package/dist/plugs/settings/poster/index.cjs.map +1 -0
- package/dist/plugs/settings/poster/index.js +24 -0
- package/dist/plugs/settings/poster/index.js.map +1 -0
- package/dist/plugs/settings/poster/types.cjs +19 -0
- package/dist/plugs/settings/poster/types.cjs.map +1 -0
- package/dist/plugs/settings/poster/types.js +1 -0
- package/dist/plugs/settings/poster/types.js.map +1 -0
- package/dist/plugs/settings/settingsView/build.cjs +35 -0
- package/dist/plugs/settings/settingsView/build.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/build.js +8 -0
- package/dist/plugs/settings/settingsView/build.js.map +1 -0
- package/dist/plugs/settings/settingsView/index.cjs +1369 -0
- package/dist/plugs/settings/settingsView/index.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/index.js +42 -0
- package/dist/plugs/settings/settingsView/index.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/index.cjs +1164 -0
- package/dist/plugs/settings/settingsView/menu/index.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/index.js +36 -0
- package/dist/plugs/settings/settingsView/menu/index.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/index.cjs +144 -0
- package/dist/plugs/settings/settingsView/menu/panel/index.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/index.js +16 -0
- package/dist/plugs/settings/settingsView/menu/panel/index.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/main.cjs +524 -0
- package/dist/plugs/settings/settingsView/menu/panel/main.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/main.js +33 -0
- package/dist/plugs/settings/settingsView/menu/panel/main.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/sub.cjs +617 -0
- package/dist/plugs/settings/settingsView/menu/panel/sub.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/panel/sub.js +33 -0
- package/dist/plugs/settings/settingsView/menu/panel/sub.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/base.cjs +357 -0
- package/dist/plugs/settings/settingsView/menu/widgets/base.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/base.js +19 -0
- package/dist/plugs/settings/settingsView/menu/widgets/base.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/button.cjs +392 -0
- package/dist/plugs/settings/settingsView/menu/widgets/button.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/button.js +20 -0
- package/dist/plugs/settings/settingsView/menu/widgets/button.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/color.cjs +498 -0
- package/dist/plugs/settings/settingsView/menu/widgets/color.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/color.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/color.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/dragselect.cjs +563 -0
- package/dist/plugs/settings/settingsView/menu/widgets/dragselect.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/dragselect.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/dragselect.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/group.cjs +500 -0
- package/dist/plugs/settings/settingsView/menu/widgets/group.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/group.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/group.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/index.cjs +912 -0
- package/dist/plugs/settings/settingsView/menu/widgets/index.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/index.js +53 -0
- package/dist/plugs/settings/settingsView/menu/widgets/index.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/input.cjs +409 -0
- package/dist/plugs/settings/settingsView/menu/widgets/input.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/input.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/input.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/limits.cjs +411 -0
- package/dist/plugs/settings/settingsView/menu/widgets/limits.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/limits.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/limits.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/range.cjs +420 -0
- package/dist/plugs/settings/settingsView/menu/widgets/range.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/range.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/range.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/select.cjs +490 -0
- package/dist/plugs/settings/settingsView/menu/widgets/select.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/select.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/select.js.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/toggle.cjs +401 -0
- package/dist/plugs/settings/settingsView/menu/widgets/toggle.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/menu/widgets/toggle.js +31 -0
- package/dist/plugs/settings/settingsView/menu/widgets/toggle.js.map +1 -0
- package/dist/plugs/settings/settingsView/types.cjs +19 -0
- package/dist/plugs/settings/settingsView/types.cjs.map +1 -0
- package/dist/plugs/settings/settingsView/types.js +1 -0
- package/dist/plugs/settings/settingsView/types.js.map +1 -0
- package/dist/plugs/settings/sleepTimer/build.cjs +29 -0
- package/dist/plugs/settings/sleepTimer/build.cjs.map +1 -0
- package/dist/plugs/settings/sleepTimer/build.js +8 -0
- package/dist/plugs/settings/sleepTimer/build.js.map +1 -0
- package/dist/plugs/settings/sleepTimer/index.cjs +431 -0
- package/dist/plugs/settings/sleepTimer/index.cjs.map +1 -0
- package/dist/plugs/settings/sleepTimer/index.js +24 -0
- package/dist/plugs/settings/sleepTimer/index.js.map +1 -0
- package/dist/plugs/settings/sleepTimer/types.cjs +19 -0
- package/dist/plugs/settings/sleepTimer/types.cjs.map +1 -0
- package/dist/plugs/settings/sleepTimer/types.js +2 -0
- package/dist/plugs/settings/sleepTimer/types.js.map +1 -0
- package/dist/plugs/settings/time/build.cjs +32 -0
- package/dist/plugs/settings/time/build.cjs.map +1 -0
- package/dist/plugs/settings/time/build.js +8 -0
- package/dist/plugs/settings/time/build.js.map +1 -0
- package/dist/plugs/settings/time/index.cjs +604 -0
- package/dist/plugs/settings/time/index.cjs.map +1 -0
- package/dist/plugs/settings/time/index.js +29 -0
- package/dist/plugs/settings/time/index.js.map +1 -0
- package/dist/plugs/settings/time/types.cjs +19 -0
- package/dist/plugs/settings/time/types.cjs.map +1 -0
- package/dist/plugs/settings/time/types.js +1 -0
- package/dist/plugs/settings/time/types.js.map +1 -0
- package/dist/plugs/settings/timeTravel/build.cjs +36 -0
- package/dist/plugs/settings/timeTravel/build.cjs.map +1 -0
- package/dist/plugs/settings/timeTravel/build.js +8 -0
- package/dist/plugs/settings/timeTravel/build.js.map +1 -0
- package/dist/plugs/settings/timeTravel/index.cjs +461 -0
- package/dist/plugs/settings/timeTravel/index.cjs.map +1 -0
- package/dist/plugs/settings/timeTravel/index.js +33 -0
- package/dist/plugs/settings/timeTravel/index.js.map +1 -0
- package/dist/plugs/settings/timeTravel/types.cjs +19 -0
- package/dist/plugs/settings/timeTravel/types.cjs.map +1 -0
- package/dist/plugs/settings/timeTravel/types.js +1 -0
- package/dist/plugs/settings/timeTravel/types.js.map +1 -0
- package/dist/plugs/settings/toasts/build.cjs +35 -0
- package/dist/plugs/settings/toasts/build.cjs.map +1 -0
- package/dist/plugs/settings/toasts/build.js +8 -0
- package/dist/plugs/settings/toasts/build.js.map +1 -0
- package/dist/plugs/settings/toasts/index.cjs +450 -0
- package/dist/plugs/settings/toasts/index.cjs.map +1 -0
- package/dist/plugs/settings/toasts/index.js +26 -0
- package/dist/plugs/settings/toasts/index.js.map +1 -0
- package/dist/plugs/settings/toasts/types.cjs +19 -0
- package/dist/plugs/settings/toasts/types.cjs.map +1 -0
- package/dist/plugs/settings/toasts/types.js +1 -0
- package/dist/plugs/settings/toasts/types.js.map +1 -0
- package/dist/plugs/settings/voice/build.cjs +81 -0
- package/dist/plugs/settings/voice/build.cjs.map +1 -0
- package/dist/plugs/settings/voice/build.js +8 -0
- package/dist/plugs/settings/voice/build.js.map +1 -0
- package/dist/plugs/settings/voice/index.cjs +757 -0
- package/dist/plugs/settings/voice/index.cjs.map +1 -0
- package/dist/plugs/settings/voice/index.js +26 -0
- package/dist/plugs/settings/voice/index.js.map +1 -0
- package/dist/plugs/settings/voice/types.cjs +19 -0
- package/dist/plugs/settings/voice/types.cjs.map +1 -0
- package/dist/plugs/settings/voice/types.js +1 -0
- package/dist/plugs/settings/voice/types.js.map +1 -0
- package/dist/plugs/settings/volume/build.cjs +31 -0
- package/dist/plugs/settings/volume/build.cjs.map +1 -0
- package/dist/plugs/settings/volume/build.js +8 -0
- package/dist/plugs/settings/volume/build.js.map +1 -0
- package/dist/plugs/settings/volume/index.cjs +592 -0
- package/dist/plugs/settings/volume/index.cjs.map +1 -0
- package/dist/plugs/settings/volume/index.js +34 -0
- package/dist/plugs/settings/volume/index.js.map +1 -0
- package/dist/plugs/settings/volume/types.cjs +19 -0
- package/dist/plugs/settings/volume/types.cjs.map +1 -0
- package/dist/plugs/settings/volume/types.js +1 -0
- package/dist/plugs/settings/volume/types.js.map +1 -0
- package/dist/plugs/z-register.cjs +5901 -0
- package/dist/plugs/z-register.cjs.map +1 -0
- package/dist/plugs/z-register.js +105 -0
- package/dist/plugs/z-register.js.map +1 -0
- package/dist/super/components/icons.cjs +630 -0
- package/dist/super/components/icons.cjs.map +1 -0
- package/dist/super/components/icons.js +248 -0
- package/dist/super/components/icons.js.map +1 -0
- package/dist/super/components/index.cjs +3111 -0
- package/dist/super/components/index.cjs.map +1 -0
- package/dist/super/components/index.js +498 -0
- package/dist/super/components/index.js.map +1 -0
- package/dist/super/components/notifiers.cjs +784 -0
- package/dist/super/components/notifiers.cjs.map +1 -0
- package/dist/super/components/notifiers.js +96 -0
- package/dist/super/components/notifiers.js.map +1 -0
- package/dist/super/consts.cjs +289 -0
- package/dist/super/consts.cjs.map +1 -0
- package/dist/super/consts.js +28 -0
- package/dist/super/consts.js.map +1 -0
- package/dist/super/plugs/index.cjs +5988 -0
- package/dist/super/plugs/index.cjs.map +1 -0
- package/dist/super/plugs/index.js +388 -0
- package/dist/super/plugs/index.js.map +1 -0
- package/dist/super/plugs/menus.cjs +2572 -0
- package/dist/super/plugs/menus.cjs.map +1 -0
- package/dist/super/plugs/menus.js +132 -0
- package/dist/super/plugs/menus.js.map +1 -0
- package/dist/super/techs.cjs +256 -0
- package/dist/super/techs.cjs.map +1 -0
- package/dist/super/techs.js +32 -0
- package/dist/super/techs.js.map +1 -0
- package/dist/super/utils.cjs +1379 -0
- package/dist/super/utils.cjs.map +1 -0
- package/dist/super/utils.js +400 -0
- package/dist/super/utils.js.map +1 -0
- package/dist/super.cjs +10191 -0
- package/dist/super.cjs.map +1 -0
- package/dist/super.css +3148 -0
- package/dist/super.css.map +1 -0
- package/dist/super.global.js +12460 -0
- package/dist/super.global.js.map +1 -0
- package/dist/super.js +380 -0
- package/dist/super.js.map +1 -0
- package/dist/techs/base.cjs +256 -0
- package/dist/techs/base.cjs.map +1 -0
- package/dist/techs/base.js +19 -0
- package/dist/techs/base.js.map +1 -0
- package/dist/techs/dash.cjs +1160 -0
- package/dist/techs/dash.cjs.map +1 -0
- package/dist/techs/dash.js +24 -0
- package/dist/techs/dash.js.map +1 -0
- package/dist/techs/hls.cjs +1164 -0
- package/dist/techs/hls.cjs.map +1 -0
- package/dist/techs/hls.js +24 -0
- package/dist/techs/hls.js.map +1 -0
- package/dist/techs/html5.cjs +988 -0
- package/dist/techs/html5.cjs.map +1 -0
- package/dist/techs/html5.js +23 -0
- package/dist/techs/html5.js.map +1 -0
- package/dist/techs/shaka.cjs +1183 -0
- package/dist/techs/shaka.cjs.map +1 -0
- package/dist/techs/shaka.js +197 -0
- package/dist/techs/shaka.js.map +1 -0
- package/dist/techs/vimeo.cjs +731 -0
- package/dist/techs/vimeo.cjs.map +1 -0
- package/dist/techs/vimeo.js +24 -0
- package/dist/techs/vimeo.js.map +1 -0
- package/dist/techs/youtube.cjs +730 -0
- package/dist/techs/youtube.cjs.map +1 -0
- package/dist/techs/youtube.js +22 -0
- package/dist/techs/youtube.js.map +1 -0
- package/dist/techs/z-register.cjs +2354 -0
- package/dist/techs/z-register.cjs.map +1 -0
- package/dist/techs/z-register.js +26 -0
- package/dist/techs/z-register.js.map +1 -0
- package/dist/tools/player.cjs +1804 -0
- package/dist/tools/player.cjs.map +1 -0
- package/dist/tools/player.js +29 -0
- package/dist/tools/player.js.map +1 -0
- package/dist/tools/queue.cjs +63 -0
- package/dist/tools/queue.cjs.map +1 -0
- package/dist/tools/queue.js +8 -0
- package/dist/tools/queue.js.map +1 -0
- package/dist/tools/runtime.cjs +1919 -0
- package/dist/tools/runtime.cjs.map +1 -0
- package/dist/tools/runtime.js +49 -0
- package/dist/tools/runtime.js.map +1 -0
- package/dist/types/UIOptions.d.cjs +19 -0
- package/dist/types/UIOptions.d.cjs.map +1 -0
- package/dist/types/UIOptions.d.js +1 -0
- package/dist/types/UIOptions.d.js.map +1 -0
- package/dist/types/actions.d.cjs +19 -0
- package/dist/types/actions.d.cjs.map +1 -0
- package/dist/types/actions.d.js +1 -0
- package/dist/types/actions.d.js.map +1 -0
- package/dist/types/config.d.cjs +19 -0
- package/dist/types/config.d.cjs.map +1 -0
- package/dist/types/config.d.js +1 -0
- package/dist/types/config.d.js.map +1 -0
- package/dist/types/contract.d.cjs +19 -0
- package/dist/types/contract.d.cjs.map +1 -0
- package/dist/types/contract.d.js +1 -0
- package/dist/types/contract.d.js.map +1 -0
- package/dist/types/generics.d.cjs +19 -0
- package/dist/types/generics.d.cjs.map +1 -0
- package/dist/types/generics.d.js +1 -0
- package/dist/types/generics.d.js.map +1 -0
- package/dist/types/global.d.cjs +22 -0
- package/dist/types/global.d.cjs.map +1 -0
- package/dist/types/global.d.js +2 -0
- package/dist/types/global.d.js.map +1 -0
- package/dist/types/registries.d.cjs +19 -0
- package/dist/types/registries.d.cjs.map +1 -0
- package/dist/types/registries.d.js +1 -0
- package/dist/types/registries.d.js.map +1 -0
- package/dist/utils/color.cjs +111 -0
- package/dist/utils/color.cjs.map +1 -0
- package/dist/utils/color.js +21 -0
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/dom.cjs +269 -0
- package/dist/utils/dom.cjs.map +1 -0
- package/dist/utils/dom.js +58 -0
- package/dist/utils/dom.js.map +1 -0
- package/dist/utils/env.cjs +110 -0
- package/dist/utils/env.cjs.map +1 -0
- package/dist/utils/env.js +56 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/file.cjs +176 -0
- package/dist/utils/file.cjs.map +1 -0
- package/dist/utils/file.js +20 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/fn.cjs +133 -0
- package/dist/utils/fn.cjs.map +1 -0
- package/dist/utils/fn.js +41 -0
- package/dist/utils/fn.js.map +1 -0
- package/dist/utils/keys.cjs +66 -0
- package/dist/utils/keys.cjs.map +1 -0
- package/dist/utils/keys.js +28 -0
- package/dist/utils/keys.js.map +1 -0
- package/dist/utils/match.cjs +119 -0
- package/dist/utils/match.cjs.map +1 -0
- package/dist/utils/match.js +30 -0
- package/dist/utils/match.js.map +1 -0
- package/dist/utils/media.cjs +546 -0
- package/dist/utils/media.cjs.map +1 -0
- package/dist/utils/media.js +84 -0
- package/dist/utils/media.js.map +1 -0
- package/dist/utils/methd.cjs +50 -0
- package/dist/utils/methd.cjs.map +1 -0
- package/dist/utils/methd.js +15 -0
- package/dist/utils/methd.js.map +1 -0
- package/dist/utils/num.cjs +92 -0
- package/dist/utils/num.cjs.map +1 -0
- package/dist/utils/num.js +22 -0
- package/dist/utils/num.js.map +1 -0
- package/dist/utils/obj.cjs +204 -0
- package/dist/utils/obj.cjs.map +1 -0
- package/dist/utils/obj.js +58 -0
- package/dist/utils/obj.js.map +1 -0
- package/dist/utils/str.cjs +134 -0
- package/dist/utils/str.cjs.map +1 -0
- package/dist/utils/str.js +35 -0
- package/dist/utils/str.js.map +1 -0
- package/dist/utils/time.cjs +103 -0
- package/dist/utils/time.cjs.map +1 -0
- package/dist/utils/time.js +11 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ts/super/plugs/menus.ts","../../../src/ts/plugs/main/playlist/build.ts","../../../src/ts/plugs/menus/main/playlist.ts","../../../src/ts/plugs/menus/settings/ambience.ts","../../../../t007-tools/packages/utils/dist/chunk-ZALPHCSJ.js","../../../src/ts/utils/obj.ts","../../../src/ts/plugs/menus/settings/auto.ts","../../../src/ts/plugs/menus/settings/brightness.ts","../../../src/ts/plugs/settings/captions/build.ts","../../../src/ts/plugs/menus/settings/captions.ts","../../../src/ts/utils/env.ts","../../../src/ts/plugs/settings/controlPanel/build.ts","../../../src/ts/plugs/menus/settings/controlPanel.ts","../../../src/ts/plugs/menus/settings/fastPlay.ts","../../../src/ts/plugs/menus/settings/frame.ts","../../../src/ts/utils/time.ts","../../../src/ts/utils/dom.ts","../../../src/ts/utils/media.ts","../../../src/ts/plugs/menus/settings/gesture.ts","../../../src/ts/plugs/settings/keys/build.ts","../../../src/ts/plugs/menus/settings/keys.ts","../../../src/ts/plugs/menus/settings/locked.ts","../../../src/ts/plugs/menus/settings/metadata.ts","../../../src/ts/plugs/menus/settings/modes.ts","../../../src/ts/plugs/menus/settings/objectFit.ts","../../../src/ts/plugs/menus/settings/overlay.ts","../../../src/ts/plugs/menus/settings/persist.ts","../../../src/ts/plugs/menus/settings/playbackRate.ts","../../../src/ts/plugs/menus/settings/poster.ts","../../../src/ts/plugs/menus/settings/settingsView.ts","../../../src/ts/plugs/menus/settings/sleepTimer.ts","../../../src/ts/plugs/menus/settings/time.ts","../../../src/ts/plugs/menus/settings/timeTravel.ts","../../../src/ts/plugs/menus/settings/toasts.ts","../../../src/ts/plugs/menus/settings/voice.ts","../../../src/ts/plugs/menus/settings/volume.ts"],"sourcesContent":["export * from \"@plugs/menus/main/playlist\";\nexport * from \"@plugs/menus/settings/ambience\";\nexport * from \"@plugs/menus/settings/auto\";\nexport * from \"@plugs/menus/settings/brightness\";\nexport * from \"@plugs/menus/settings/captions\";\nexport * from \"@plugs/menus/settings/controlPanel\";\nexport * from \"@plugs/menus/settings/fastPlay\";\nexport * from \"@plugs/menus/settings/frame\";\nexport * from \"@plugs/menus/settings/gesture\";\nexport * from \"@plugs/menus/settings/keys\";\nexport * from \"@plugs/menus/settings/locked\";\nexport * from \"@plugs/menus/settings/metadata\";\nexport * from \"@plugs/menus/settings/modes\";\nexport * from \"@plugs/menus/settings/objectFit\";\nexport * from \"@plugs/menus/settings/overlay\";\nexport * from \"@plugs/menus/settings/persist\";\nexport * from \"@plugs/menus/settings/playbackRate\";\nexport * from \"@plugs/menus/settings/poster\";\nexport * from \"@plugs/menus/settings/settingsView\";\nexport * from \"@plugs/menus/settings/sleepTimer\";\nexport * from \"@plugs/menus/settings/time\";\nexport * from \"@plugs/menus/settings/timeTravel\";\nexport * from \"@plugs/menus/settings/toasts\";\nexport * from \"@plugs/menus/settings/voice\";\nexport * from \"@plugs/menus/settings/volume\";\nimport \"../../plugs/menus/z-register\";\n","import { DeepPartial } from \"sia-reactor\";\r\nimport { PlaylistConfig, PlaylistItemConfig } from \"./types\";\r\n\r\nexport const PLAYLIST_BUILD: DeepPartial<PlaylistConfig> = {\r\n allowOverride: { add: true, delete: true, move: true },\r\n content: null,\r\n};\r\n\r\nexport const PLAYLIST_ITEM_BUILD: DeepPartial<PlaylistItemConfig> = {\r\n media: {\r\n intent: {\r\n src: \"\",\r\n tracks: [],\r\n },\r\n settings: {\r\n metadata: {\r\n title: \"\",\r\n chapterInfo: [],\r\n links: {\r\n title: \"\",\r\n },\r\n },\r\n },\r\n },\r\n settings: {\r\n time: {\r\n start: 0,\r\n },\r\n controlPanel: {\r\n timeline: {\r\n previews: false,\r\n marks: [],\r\n },\r\n },\r\n },\r\n}; // for a playlist\r\n","import type { PlaylistPlug } from \"@plugs/main/playlist\";\r\nimport type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\r\nimport { PLAYLIST_ITEM_BUILD } from \"@plugs/main/playlist/build\";\r\nimport { mergeObjs } from \"sia-reactor/utils\";\r\n\r\nexport const getMainPlaylistMenu = (plug: PlaylistPlug): SettingsMenuItem => ({\r\n id: \"playlist\",\r\n label: \"Playlist\",\r\n icon: \"playlist\",\r\n widget: \"drag-select\",\r\n feature: \"playlist\",\r\n configPaths: [\"playlist\", \"playlist.content\"],\r\n getValue: () => plug.config.content?.[plug.state.currentIndex]?.media.settings.metadata.title || plug.media.settings.metadata.title || \"Playlist\",\r\n getOptions: () => (plug.config.content?.length ? plug.config.content : [{ media: { settings: { metadata: { title: plug.media.settings.metadata.title || \"Unknown\" } } } }]).map((opt: any, i: number) => ({ value: String(i), display: opt.media.settings.metadata.title || \"Unknown\" })),\r\n getDisabled: () => plug.config.content?.length === 0 && !plug.config.allowOverride.add,\r\n onChange: (val: string) => plug.moveTo(Number(val), true),\r\n onReorder: plug.config.allowOverride.move\r\n ? (oldIdx: number, newIdx: number) => {\r\n const p = plug.config.content;\r\n if (!p) return;\r\n const [moved] = p.splice(oldIdx, 1);\r\n p.splice(newIdx, 0, moved);\r\n }\r\n : undefined,\r\n onDelete: plug.config.allowOverride.delete ? plug.remove : undefined,\r\n tipHTML: plug.config.allowOverride.move ? \"You can drag to reorder items\" : undefined,\r\n actions: [...(plug.config.allowOverride.move ? [{ id: \"shuffle\", getLabel: () => \"Shuffle\", icon: \"shuffle\", onClick: plug.shuffle } as const] : []), ...(plug.config.allowOverride.add ? [{ id: \"add\", getLabel: () => \"Add\", icon: \"add\", onClick: () => plug.ctlr.plug(\"settings.settingsView\")?.menu?.goTo(\"playlist-add\") } as const] : [])],\r\n items: [\r\n {\r\n id: \"playlist-add\",\r\n label: \"Add to Playlist\",\r\n icon: \"add\",\r\n widget: \"input\",\r\n inputs: [\r\n { label: \"Video URL\", placeholder: \"https://www.youtube.com/...\", type: \"url\", required: true, helperText: { info: \"Input any media (video or audio) url\" } },\r\n { label: \"Title\", placeholder: \"My Awesome Video\", type: \"text\" },\r\n ],\r\n getValue: () => \"\",\r\n onChange: (vals: any) => {\r\n 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 || [])] } } } },\r\n newItem = { media: { intent: { src: vals[\"Video URL\"] }, settings: { metadata: { title: vals[\"Title\"] } } } };\r\n plug.config.content = [...(plug.config.content ?? [mergeObjs(PLAYLIST_ITEM_BUILD as any, firstItem as any)]), mergeObjs(PLAYLIST_ITEM_BUILD as any, newItem as any)] as any;\r\n plug.ctlr.plug(\"settings.settingsView\")?.menu?.goBack();\r\n },\r\n },\r\n ],\r\n});\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface MenuRegistryMap {\r\n playlist: typeof getMainPlaylistMenu;\r\n }\r\n}\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { AmbiencePlug } from \"@plugs/settings/ambience\";\n\nexport const getSettingsAmbienceMenu = (plug: AmbiencePlug): SettingsMenuItem => ({\n id: \"ambience\",\n label: \"Ambience\",\n icon: \"ambience\",\n widget: \"toggle\",\n getValue: () => (plug.config.active ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.active = val),\n configPaths: [\"settings.ambience.active\"],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.ambience\": typeof getSettingsAmbienceMenu;\n }\n}\n","// src/ts/core/dom.ts\nimport { createEl, assignEl } from \"sia-reactor/utils\";\nimport { getActiveEl } from \"sia-reactor/utils\";\nimport { NOOP } from \"sia-reactor\";\nvar INTERACTIVE_SELECTOR = \":is(button,[href],input:not([type='hidden']),select,textarea,details>summary,[contenteditable],iframe,audio[controls],video[controls],[tabindex]):not([disabled],[tabindex='-1'],[data-focus-guard],[inert],[inert] *)\";\nvar isInteractive = (target) => target instanceof HTMLElement && target.matches(INTERACTIVE_SELECTOR);\nvar VIRTUAL_RESOURCE = /* @__PURE__ */ Symbol.for(\"T007_VIRTUAL_RESOURCE\");\nfunction loadResource(req, type = \"style\", { module, media, crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, attempts = 3, retryKey = false } = {}, win = window) {\n win.t007 ??= {}, win.t007._resourceCache ??= {};\n if (req === VIRTUAL_RESOURCE || isSym(req)) return Promise.resolve();\n const src = req;\n if (win.t007._resourceCache[src]) return win.t007._resourceCache[src];\n const existing = type === \"script\" ? Array.prototype.find.call(win.document.scripts, (s) => isSameURL(s.src, src)) : type === \"style\" ? Array.prototype.find.call(win.document.styleSheets, (s) => isSameURL(s.href, src)) : null;\n if (existing) return win.t007._resourceCache[src] = Promise.resolve(existing);\n win.t007._resourceCache[src] = new Promise((resolve, reject) => {\n (function tryLoad(remaining, el) {\n const onerror = () => {\n el?.remove?.();\n if (remaining > 1) {\n setTimeout(tryLoad, 1e3, remaining - 1);\n console.warn(`Retrying ${type} load for \"${src}\" (${attempts - remaining + 1})...`);\n } else {\n delete win.t007._resourceCache[src];\n reject(new Error(`${capitalize(type)} load failed for \"${src}\" after ${attempts - 1} attempts`));\n }\n };\n const url = retryKey && remaining < attempts ? `${src}${src.includes(\"?\") ? \"&\" : \"?\"}_${retryKey}=${Date.now()}` : src;\n if (type === \"script\") win.document.body.append(el = createEl(\"script\", { src: url, type: module ? \"module\" : \"text/javascript\", crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, onload: () => resolve(el), onerror }) || \"\");\n else if (type === \"style\") win.document.head.append(el = createEl(\"link\", { rel: \"stylesheet\", href: url, media, crossOrigin, integrity, referrerPolicy, nonce, fetchPriority, onload: () => resolve(el), onerror }) || \"\");\n else reject(new Error(`Unsupported resource type: ${type}`));\n })(attempts);\n });\n return win.t007._resourceCache[src];\n}\nfunction getWindow(el = window) {\n return el?.ownerDocument?.defaultView ?? el?.defaultView ?? window;\n}\nfunction createListRenderer({ container, getKey, createNode, updateNode = NOOP, destroyNode = NOOP, initNode }) {\n let nodeRegistry = /* @__PURE__ */ new Map();\n if (initNode) {\n const children = Array.from(container.children);\n for (let i = 0, len = children.length; i < len; i++) initNode(children[i], (key) => nodeRegistry.set(key, children[i]));\n }\n return function syncDOM(array, strict = true) {\n const newRegistry = /* @__PURE__ */ new Map(), seenKeys = /* @__PURE__ */ new Set(), oldPositions = /* @__PURE__ */ new WeakMap(), children = Array.from(container.children);\n for (let i = 0, len = children.length; i < len; i++) oldPositions.set(children[i], i);\n const futureNodes = [], oldIndices = [];\n for (let i = 0, len = array.length; i < len; i++) {\n const item = array[i], key = getKey(item);\n if (seenKeys.has(key)) throw new Error(`[List Renderer] Duplicate key \"${key}\" detected`);\n let node = nodeRegistry.get(key);\n if (!node) {\n node = createNode(item);\n if (!node) {\n if (strict) throw new Error(`[List Renderer] No HTMLElement for key \"${key}\"`);\n continue;\n }\n oldIndices.push(-1);\n } else updateNode(node, item), oldIndices.push(oldPositions.get(node) ?? -1);\n seenKeys.add(key), futureNodes.push(node), newRegistry.set(key, node);\n }\n for (const [key, node] of nodeRegistry.entries()) !seenKeys.has(key) && node.parentElement === container && (destroyNode(node, key), node.remove());\n const sequence = longestIncreasingSubsequence(oldIndices), stable = new Set(sequence);\n let anchor = null;\n for (let i = futureNodes.length - 1; i >= 0; i--) {\n const node = futureNodes[i];\n if (oldIndices[i] !== -1 && stable.has(i)) {\n anchor = node;\n continue;\n }\n container.insertBefore(node, anchor), anchor = node;\n }\n nodeRegistry = newRegistry;\n };\n}\n\n// src/ts/index.ts\nimport { NIL, NOOP as NOOP2 } from \"sia-reactor\";\n\n// src/ts/core/obj.ts\nimport { isObj } from \"sia-reactor/utils\";\nfunction isDef(val) {\n return \"undefined\" !== typeof val;\n}\nfunction isSym(val) {\n return \"symbol\" === typeof val;\n}\nfunction isBool(val) {\n return \"boolean\" === typeof val;\n}\nfunction isNum(val) {\n return \"number\" === typeof val;\n}\nfunction isStr(val) {\n return \"string\" === typeof val;\n}\nfunction isArr(obj) {\n return Array.isArray(obj);\n}\nfunction isPOJO(obj, crossRealms = false, typecheck = true) {\n return (typecheck ? isObj(obj, false) : true) && (crossRealms ? Object.prototype.toString.call(obj) === \"[object Object]\" : obj.constructor === Object);\n}\nfunction isIter(obj) {\n return obj != null && \"function\" === typeof obj[Symbol.iterator];\n}\nfunction isFunc(val) {\n return \"function\" === typeof val;\n}\nfunction inBoolArrOpt(opt, str) {\n return opt?.includes?.(str) ?? opt;\n}\n\n// src/ts/core/num.ts\nimport { clamp } from \"sia-reactor/utils\";\nfunction longestIncreasingSubsequence(array) {\n const n = array.length, parent = new Array(n), tails = [];\n for (let i = 0; i < n; i++) {\n const value = array[i];\n if (value === -1) continue;\n let left = 0;\n let right = tails.length;\n while (left < right) {\n const mid = left + right >> 1;\n if (array[tails[mid]] < value) left = mid + 1;\n else right = mid;\n }\n if (left > 0) parent[i] = tails[left - 1];\n else parent[i] = -1;\n tails[left] = i;\n }\n if (!tails.length) return [];\n const result = [];\n let k = tails[tails.length - 1];\n while (k >= 0) result.push(k), k = parent[k];\n return result.reverse(), result;\n}\n\n// src/ts/core/str.ts\nfunction uid(prefix = \"\") {\n return prefix + Date.now().toString(36) + \"_\" + performance.now().toString(36).replace(\".\", \"\") + \"_\" + Math.random().toString(36).slice(2);\n}\nfunction capitalize(word = \"\") {\n return word.replace(/^(\\s*)([a-z])/i, (_, s, l) => s + l.toUpperCase());\n}\nfunction camelize(str = \"\", { source } = /[\\s_-]+/, { preserveInnerCase: pIC = true, upperFirst: uF = false } = {}) {\n return (pIC ? str : str.toLowerCase()).replace(new RegExp(source + \"(\\\\w)\", \"g\"), (_, c) => c.toUpperCase()).replace(/^\\w/, (c) => c[uF ? \"toUpperCase\" : \"toLowerCase\"]());\n}\nfunction uncamelize(str, separator = \" \") {\n return str.replace(/([a-z])([A-Z])/g, `$1${separator}$2`).toLowerCase();\n}\nfunction remToPx(rem, el = document.documentElement) {\n return rem * parseFloat(getComputedStyle(el).fontSize);\n}\nfunction pxToRem(px, el = document.documentElement) {\n return px / parseFloat(getComputedStyle(el).fontSize);\n}\nfunction parseCSSTime(time) {\n return time?.endsWith?.(\"ms\") ? parseFloat(time) : parseFloat(time) * 1e3;\n}\nfunction parseCSSSize(size, el) {\n return size?.endsWith?.(\"px\") ? parseFloat(size) : remToPx(parseFloat(size), el);\n}\nfunction cleanURL(url) {\n try {\n const u = new URL(url, window.location.href);\n return decodeURIComponent(u.origin + u.pathname);\n } catch {\n return url.replace(/\\\\/g, \"/\").split(\"?\")[0].trim();\n }\n}\nfunction isSameURL(url1, url2) {\n if (url1 === url2) return true;\n if (!isStr(url1) || !isStr(url2) || !url1 || !url2) return false;\n return cleanURL(url1) === cleanURL(url2);\n}\n\n// src/ts/core/fn.ts\nimport { setTimeout as setTimeout2, setInterval, requestAnimationFrame } from \"sia-reactor/utils\";\nfunction throttle(key, fn, delay = 30, strict = true, signal, win) {\n const throttleMap = t007._throttlers ??= /* @__PURE__ */ new Map();\n if (strict === true) {\n const now = performance.now();\n return now - (throttleMap.get(key) ?? 0) < delay ? void 0 : (throttleMap.set(key, now), fn());\n }\n if (throttleMap.has(key)) return;\n const id = strict === false ? setTimeout2(() => throttleMap.delete(key), delay, signal, win) : strict(() => throttleMap.delete(key));\n return throttleMap.set(key, id), fn();\n}\nfunction debounce(key, fn, delay = 30, strict = true, signal, win) {\n const debounceMap = t007._debouncers ??= /* @__PURE__ */ new Map();\n if (strict) {\n const now = performance.now(), prev = debounceMap.get(key) ?? 0;\n return debounceMap.set(key, now), now - prev < delay ? void 0 : fn();\n }\n const prevId = debounceMap.get(key);\n prevId !== void 0 && (win ?? window).clearTimeout(prevId);\n const id = setTimeout2(() => (debounceMap.delete(key), fn()), delay, signal, win);\n return void debounceMap.set(key, id);\n}\nfunction RAFLoop(key, fn, signal, win) {\n const rafLoopMap = t007._RAFLoopers ??= /* @__PURE__ */ new Map();\n if (rafLoopMap.has(key)) return void rafLoopMap.set(key, fn);\n rafLoopMap.set(key, fn);\n const loop = (_ = 0, fn2 = rafLoopMap.get(key)) => fn2 && (fn2(), requestAnimationFrame(loop, signal, win));\n loop();\n}\nvar cancelRAFLoop = (key) => t007._RAFLoopers ? t007._RAFLoopers.delete(key) : false;\nfunction limited(FN_KEY, fn, opts = {}) {\n let count = 0, { key, maxTimes: max = 1, oncePerSession = true } = isStr(opts) ? { key: opts } : opts;\n const getReg = () => JSON.parse(localStorage.getItem(FN_KEY) || \"{}\"), setReg = (r) => localStorage.setItem(FN_KEY, JSON.stringify(r));\n const handle = (...args) => {\n if (oncePerSession && count > 0) return void 0;\n if (!key) return count++ < max ? fn(...args) : void 0;\n const r = getReg(), c = r[key] || 0;\n return c < max ? (count++, r[key] = c + 1, setReg(r), fn(...args)) : void 0;\n };\n handle.left = max - (handle.count = count);\n handle.reset = () => (count = 0, key && ((r) => (delete r[key], setReg(r)))(getReg()));\n handle.block = () => (count = max, key && ((r) => (r[key] = max, setReg(r)))(getReg()));\n return handle;\n}\nvar mockAsync = (timeout = 250) => new Promise((resolve) => setTimeout2(resolve, timeout));\nvar breath = (w = window) => new Promise((res) => w.requestAnimationFrame(res));\nvar deepBreath = (w = window) => new Promise((res) => w.requestAnimationFrame(() => w.requestAnimationFrame(res)));\nfunction bindCleanupToSignal(cleanup, signal) {\n signal?.aborted ? cleanup() : signal?.addEventListener(\"abort\", cleanup, { once: true });\n if (signal && !signal.aborted) cleanup = (() => (signal.removeEventListener(\"abort\", cleanup), cleanup()));\n return cleanup;\n}\n\n// src/ts/core/keys.ts\nimport { KEYS_BLOCKS, parseKeyCombo, stringifyKeyEvent, cleanKeyCombo, matchKeys, getTermsForKey, keyEventAllowed, formatKeyForDisplay, formatKeyShortcutsForDisplay, parseForARIAKS } from \"sia-reactor/utils\";\n\n// src/ts/core/file.ts\nfunction formatSize(bytes, decimals = 3, base = 1e3) {\n if (bytes < base) return `${bytes} byte${bytes == 1 ? \"\" : \"s\"}`;\n const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"], exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(base)), units.length - 1);\n return `${(bytes / Math.pow(base, exponent)).toFixed(decimals).replace(/\\.0+$/, \"\")} ${units[exponent]}`;\n}\n\n// src/ts/mixins/methd.ts\nimport { onAllMethods, bindAllMethods, guardAllMethods, guardMethod } from \"sia-reactor/utils\";\n\n// src/ts/index.ts\nif (\"undefined\" !== typeof window) {\n (window.t007 ??= {}).VIRTUAL_RESOURCE = VIRTUAL_RESOURCE;\n window.T007_TOAST_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/toast@latest`;\n window.T007_INPUT_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/input@latest`;\n window.T007_DIALOG_JS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/dialog@latest`;\n window.T007_TOAST_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/toast@latest/dist/index.min.css`;\n window.T007_INPUT_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/input@latest/dist/index.min.css`;\n window.T007_DIALOG_CSS_SRC ??= `https://cdn.jsdelivr.net/npm/@t007/dialog@latest/dist/index.min.css`;\n}\n\nexport {\n createEl,\n assignEl,\n INTERACTIVE_SELECTOR,\n isInteractive,\n VIRTUAL_RESOURCE,\n loadResource,\n getWindow,\n createListRenderer,\n getActiveEl,\n isObj,\n isDef,\n isSym,\n isBool,\n isNum,\n isStr,\n isArr,\n isPOJO,\n isIter,\n isFunc,\n inBoolArrOpt,\n longestIncreasingSubsequence,\n clamp,\n uid,\n capitalize,\n camelize,\n uncamelize,\n remToPx,\n pxToRem,\n parseCSSTime,\n parseCSSSize,\n cleanURL,\n isSameURL,\n setTimeout2 as setTimeout,\n setInterval,\n requestAnimationFrame,\n throttle,\n debounce,\n RAFLoop,\n cancelRAFLoop,\n limited,\n mockAsync,\n breath,\n deepBreath,\n bindCleanupToSignal,\n KEYS_BLOCKS,\n parseKeyCombo,\n stringifyKeyEvent,\n cleanKeyCombo,\n matchKeys,\n getTermsForKey,\n keyEventAllowed,\n formatKeyForDisplay,\n formatKeyShortcutsForDisplay,\n parseForARIAKS,\n formatSize,\n onAllMethods,\n bindAllMethods,\n guardAllMethods,\n guardMethod,\n NIL,\n NOOP2 as NOOP\n};\n","import { camelize } from \"./str\";\r\nimport type { Control, ControlPanelBottomTuple } from \"@plugs/settings/controlPanel/types\";\r\nimport { type Paths, type PathValue } from \"sia-reactor\";\r\nimport { setPath } from \"sia-reactor/utils\";\r\nimport type { UIObject, UISettings, UIOption, UITuple } from \"@defs/UIOptions\";\r\nimport { isObj, isArr } from \"@t007/utils\";\r\n\r\nexport { isArr, isObj };\r\nexport { isDef, isSym, isBool, isNum, isStr, isPOJO, isIter, isFunc, inBoolArrOpt } from \"@t007/utils\";\r\n\r\n// Type Guards\r\nexport function isUISetting<T = unknown>(obj: unknown): obj is UISettings<T> {\r\n return isObj(obj) && \"options\" in obj && isArr((obj as UISettings<T>).options);\r\n}\r\nexport function isUIOption<T>(opt: UIOption<T>): opt is UITuple<T> {\r\n return isObj(opt) && \"value\" in (opt as object);\r\n}\r\n\r\n// Assignment & Derivation\r\nexport function setHTMLConfig<T extends object>(target: T, attr: `tmg--${Paths<T, \"--\">}`, value: string): void {\r\n value = value.trim();\r\n const path = attr.replace(\"tmg--\", \"\") as Paths<T, \"--\">;\r\n const parsedValue = (() => {\r\n if (value.includes(\",\")) return value.split(\",\")?.map((v: string) => v.trim());\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n if (value === \"null\") return null;\r\n if (/^\\d+$/.test(value)) return Number(value);\r\n return value;\r\n })() as PathValue<T, typeof path, \"--\">;\r\n setPath<T, \"--\">(target, path, parsedValue, \"--\", (p) => camelize(p));\r\n}\r\n\r\nexport function getBoolOrStr(value: string | boolean): string | boolean {\r\n return value === \"true\" ? true : value === \"false\" ? false : value;\r\n}\r\n\r\nexport function getUIOpt<T = unknown>(opts: UIOption<T>[] | undefined, value: T, key: \"display\" | \"value\" = \"display\"): string {\r\n if (opts)\r\n for (const opt of opts) {\r\n const p = parseUIOpt<T>(opt);\r\n if (p.value == value) return p[key] as string;\r\n }\r\n return String(value);\r\n}\r\n\r\nexport function getUniqueOpts<T>(options: UITuple<T>[]) {\r\n const counts: Record<string, number> = {};\r\n options.forEach((opt) => (counts[opt.display] = (counts[opt.display] || 0) + 1)); // First pass: Count occurrences of each display name\r\n const seen: Record<string, number> = {};\r\n for (let i = options.length - 1; i >= 0; i--) {\r\n const opt = options[i];\r\n if (counts[opt.display] > 1) {\r\n seen[opt.display] = (seen[opt.display] || 0) + 1;\r\n const num = counts[opt.display] - seen[opt.display] + 1;\r\n opt.display = `${opt.display} (${num})`;\r\n }\r\n } // Second pass: Add numbers to duplicates, tracking our current index from the back\r\n return options;\r\n}\r\n\r\nexport function parseUIOpt<T = unknown>(opt: UIOption<T>): UITuple<T> {\r\n return isUIOption<T>(opt) ? { value: opt.value, display: String(opt.display ?? opt.value), infoText: opt.infoText } : { value: opt as T, display: String(opt) };\r\n}\r\nexport function parseUIOpts<T = unknown>(opts: UIOption<T>[]): T[] {\r\n return opts.map((opt) => parseUIOpt(opt).value);\r\n}\r\n\r\nexport function parseUIObj<T extends Record<string, any>>(obj: T): UIObject<T> {\r\n const result: any = {} as UIObject<T>,\r\n keys = Object.keys(obj);\r\n for (let i = 0; i < keys.length; i++) {\r\n const entry = obj[keys[i]];\r\n if (!isObj(entry)) continue;\r\n if (isUISetting(entry))\r\n result[keys[i]] = {\r\n values: entry.options.map((opt: UIOption<unknown>) => parseUIOpt(opt).value),\r\n displays: entry.options.map((opt: UIOption<unknown>) => parseUIOpt(opt).display),\r\n };\r\n else result[keys[i]] = parseUIObj(entry); // recurse on sub-branch\r\n }\r\n return result;\r\n}\r\n\r\n// Control Panel Utilities\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown, arr?: false): ControlPanelBottomTuple | false;\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown, arr: true): Control[] | false;\r\nexport function parsePanelBottomObj(obj: Partial<ControlPanelBottomTuple> | Control[][] | Control[] | unknown = [], arr = false): ControlPanelBottomTuple | Control[] | false {\r\n if (!isObj(obj) && !isArr(obj)) return false;\r\n const [third = [], second = [], first = []] = isObj<Partial<ControlPanelBottomTuple>>(obj) ? (Object.values(obj).reverse() as Control[][]) : isArr((obj as Control[][])[0]) ? [...(obj as Control[][])].reverse() : [obj as Control[]];\r\n return arr ? ([...third, ...second, ...first] as Control[]) : ({ 1: first, 2: second, 3: third } as ControlPanelBottomTuple);\r\n}\r\n\r\nexport function getPanelSplitCtrls<T = any>(row: T[]): { left: T[]; center: T[]; right: T[] } {\r\n if (!row?.length) return { left: [], center: [], right: [] };\r\n const s1 = row.indexOf(\"spacer\" as any),\r\n s2 = row.indexOf(\"spacer\" as any, s1 + 1);\r\n return s1 === -1 ? { left: row, center: [], right: [] } : s2 === -1 ? { left: row.slice(0, s1), center: [], right: row.slice(s1 + 1) } : { left: row.slice(0, s1), center: row.slice(s1 + 1, s2), right: row.slice(s2 + 1) };\r\n}\r\n\r\nexport function getPanelLocation(b: any, id: string) {\r\n if (isArr(b.top) && b.top.includes(id)) return { path: \"top\", row: b.top, zone: getPanelSplitCtrls(b.top).left.includes(id) ? \"left\" : getPanelSplitCtrls(b.top).center.includes(id) ? \"center\" : \"right\" };\r\n if (isArr(b.center) && b.center.includes(id)) return { path: \"center\", row: b.center, zone: \"zone\" };\r\n if (b.bottom) {\r\n const dB = parsePanelBottomObj(b.bottom);\r\n if (dB) for (const k in dB) if ((dB as any)[k]?.includes(id)) return { path: `bottom.${k}`, row: (dB as any)[k], zone: getPanelSplitCtrls((dB as any)[k]).left.includes(id) ? \"left\" : getPanelSplitCtrls((dB as any)[k]).center.includes(id) ? \"center\" : \"right\" };\r\n }\r\n return { path: \"bottom.1\", row: [], zone: \"left\" };\r\n}\r\n\r\nexport function insertPanelCtrl(current: any[], defaults: readonly any[], id: string): void {\r\n let s = 0;\r\n for (let i = 0; i < defaults.indexOf(id); i++) if (defaults[i] === \"spacer\") s++;\r\n for (let i = defaults.indexOf(id) + 1; i < defaults.length; i++)\r\n if (defaults[i] === \"spacer\") {\r\n let c = 0;\r\n for (let j = 0; j < current.length; j++) if (current[j] === \"spacer\" && ++c === s + 1) return void current.splice(j, 0, id);\r\n } else {\r\n const idx = current.indexOf(defaults[i]);\r\n if (idx !== -1) return void current.splice(idx, 0, id);\r\n }\r\n current.push(id);\r\n}\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { AutoPlug } from \"@plugs/settings/auto\";\nimport { getBoolOrStr, getUIOpt } from \"@utils/obj\";\n\nexport const getSettingsAutoMenu = (plug: AutoPlug): SettingsMenuItem => ({\n id: \"autoplay\",\n label: \"Autoplay\",\n icon: \"autoplay\",\n widget: \"group\",\n getValue: () => getUIOpt(plug.config.play.options, plug.config.play.value),\n tipHTML: \"Configure automatic playback settings and transitions\",\n configPaths: [\"settings.auto.play.value\"],\n items: [\n {\n id: \"autoPlay\",\n label: \"Autoplay\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.play.options, plug.config.play.value),\n getOptions: () => plug.config.play.options!,\n onChange: (val: string) => (plug.config.play.value = getBoolOrStr(val) as typeof plug.config.play.value),\n configPaths: [\"settings.auto.play.value\"],\n tipHTML: \"Automatically start playback when the player enters or leaves the viewport based on the selected option\",\n },\n {\n id: \"autoPause\",\n label: \"Auto-pause\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.pause.options, plug.config.pause.value),\n getOptions: () => plug.config.pause.options!,\n onChange: (val: string) => (plug.config.pause.value = getBoolOrStr(val) as typeof plug.config.pause.value),\n configPaths: [\"settings.auto.pause.value\"],\n tipHTML: \"Automatically pause playback when the player enters or leaves the viewport based on the selected option\",\n },\n {\n id: \"autoNext\",\n label: \"Auto-next\",\n widget: \"group\",\n getValue: () => (plug.config.next.value === -1 ? \"Off\" : `${plug.config.next.value}ms`),\n configPaths: [\"settings.auto.next.value\"],\n items: [\n {\n id: \"autoNextTime\",\n label: \"Countdown Time\",\n widget: \"input\",\n 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 }],\n getValue: () => (plug.config.next.value === -1 ? \"Off\" : `${plug.config.next.value}ms`),\n onChange: (val: Record<string, any>) => (plug.config.next.value = val[\"ms\"]),\n configPaths: [\"settings.auto.next.value\"],\n },\n {\n id: \"autoNextPreview\",\n label: \"Preview\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"autoNextPreviewUsePoster\",\n label: \"Use poster\",\n widget: \"toggle\",\n getValue: () => (plug.config.next.preview.usePoster ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.next.preview.usePoster = val),\n configPaths: [\"settings.auto.next.preview.usePoster\"],\n tipHTML: \"Display the next video's poster during the countdown.\",\n },\n {\n id: \"autoNextPreviewTease\",\n label: \"Tease video\",\n widget: \"toggle\",\n getValue: () => (plug.config.next.preview.tease ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.next.preview.tease = val),\n configPaths: [\"settings.auto.next.preview.tease\"],\n tipHTML: \"Play a short silent preview of the next when no poster is present.\",\n },\n {\n id: \"autoNextPreviewTime\",\n label: \"Preview Time\",\n widget: \"input\",\n 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 * 1000 }],\n getValue: () => `${plug.config.next.preview.time * 1000}ms`,\n onChange: (val: Record<string, any>) => (plug.config.next.preview.time = val[\"ms\"] / 1000),\n configPaths: [\"settings.auto.next.preview.time\"],\n },\n ],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.auto\": typeof getSettingsAutoMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { BrightnessPlug } from \"@plugs/settings/brightness\";\nimport { fanout } from \"sia-reactor/utils\";\n\nexport const getSettingsBrightnessMenu = (plug: BrightnessPlug): SettingsMenuItem => ({\n id: \"limits\",\n label: \"Limits\",\n icon: \"configure\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"brightnessLimits\",\n label: \"Brightness\",\n widget: \"limits\",\n configPaths: [\"settings.brightness.min\", \"settings.brightness.max\", \"settings.brightness.skip\"],\n getValue: () => \"\",\n getLimits: () => [{ name: \"brightness\", label: \"Clamp bounds\", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],\n onChange: (val: Record<string, number>) => fanout(plug.config, { min: val.brightness_min, max: val.brightness_max, skip: val.brightness_step }, { skipUndefined: true }),\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.brightness\": typeof getSettingsBrightnessMenu;\n }\n}\n","import { DeepPartial } from \"sia-reactor\";\r\nimport { CaptionsConfig } from \"./types\";\r\n\r\nexport const 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\"] as const;\r\nexport const ROTATE_PATHS = [\"captions.font.family.value\", \"captions.font.weight.value\", \"captions.font.variant.value\", \"captions.font.opacity.value\", \"captions.background.opacity.value\", \"captions.window.opacity.value\", \"captions.characterEdgeStyle.value\", \"captions.textAlignment.value\"] as const;\r\n\r\nexport const CAPTIONS_BUILD: DeepPartial<CaptionsConfig> = {\r\n multiple: false,\r\n allowOverride: true,\r\n font: {\r\n family: {\r\n value: \"\",\r\n options: [\r\n { value: \"\", display: \"Default\" },\r\n { value: \"monospace\", display: \"Monospace\" },\r\n { value: \"sans-serif\", display: \"Sans Serif\" },\r\n { value: \"serif\", display: \"Serif\" },\r\n { value: \"cursive\", display: \"Cursive\" },\r\n { value: \"fantasy\", display: \"Fantasy\" },\r\n { value: \"system-ui\", display: \"System UI\" },\r\n { value: \"arial\", display: \"Arial\" },\r\n { value: \"verdana\", display: \"Verdana\" },\r\n { value: \"tahoma\", display: \"Tahoma\" },\r\n { value: \"times new roman\", display: \"Times New Roman\" },\r\n { value: \"georgia\", display: \"Georgia\" },\r\n { value: \"impact\", display: \"Impact\" },\r\n { value: \"comic sans ms\", display: \"Comic Sans MS\" },\r\n ],\r\n },\r\n size: {\r\n min: 100,\r\n max: 400,\r\n value: 100,\r\n skip: 100,\r\n options: [\r\n { value: 25, display: \"25%\" },\r\n { value: 50, display: \"50%\" },\r\n { value: 75, display: \"75%\" },\r\n { value: 100, display: \"100%\" },\r\n { value: 150, display: \"150%\" },\r\n { value: 200, display: \"200%\" },\r\n { value: 300, display: \"300%\" },\r\n { value: 400, display: \"400%\" },\r\n ],\r\n },\r\n color: {\r\n value: \"#ffffff\",\r\n options: [\r\n { value: \"#ffffff\", display: \"White\" },\r\n { value: \"#ffff00\", display: \"Yellow\" },\r\n { value: \"#00ff00\", display: \"Green\" },\r\n { value: \"#00ffff\", display: \"Cyan\" },\r\n { value: \"#0000ff\", display: \"Blue\" },\r\n { value: \"#ff00ff\", display: \"Magenta\" },\r\n { value: \"#ff0000\", display: \"Red\" },\r\n { value: \"#000000\", display: \"Black\" },\r\n ],\r\n },\r\n opacity: {\r\n value: 100,\r\n options: [\r\n { value: 25, display: \"25%\" },\r\n { value: 50, display: \"50%\" },\r\n { value: 75, display: \"75%\" },\r\n { value: 100, display: \"100%\" },\r\n ],\r\n },\r\n weight: {\r\n value: \"400\",\r\n options: [\r\n { value: \"100\", display: \"Thin\" },\r\n { value: \"200\", display: \"Extra Light\" },\r\n { value: \"300\", display: \"Light\" },\r\n { value: \"400\", display: \"Normal\" },\r\n { value: \"500\", display: \"Medium\" },\r\n { value: \"600\", display: \"Semi Bold\" },\r\n { value: \"700\", display: \"Bold\" },\r\n { value: \"800\", display: \"Extra Bold\" },\r\n { value: \"900\", display: \"Black\" },\r\n ],\r\n },\r\n variant: {\r\n value: \"normal\",\r\n options: [\r\n { value: \"normal\", display: \"Normal\" },\r\n { value: \"small-caps\", display: \"Small Caps\" },\r\n { value: \"all-small-caps\", display: \"All Small Caps\" },\r\n ],\r\n },\r\n },\r\n background: {\r\n color: {\r\n value: \"#000000\",\r\n options: [\r\n { value: \"#ffffff\", display: \"White\" },\r\n { value: \"#ffff00\", display: \"Yellow\" },\r\n { value: \"#00ff00\", display: \"Green\" },\r\n { value: \"#00ffff\", display: \"Cyan\" },\r\n { value: \"#0000ff\", display: \"Blue\" },\r\n { value: \"#ff00ff\", display: \"Magenta\" },\r\n { value: \"#ff0000\", display: \"Red\" },\r\n { value: \"#000000\", display: \"Black\" },\r\n ],\r\n },\r\n opacity: {\r\n value: 75,\r\n options: [\r\n { value: 0, display: \"0%\" },\r\n { value: 25, display: \"25%\" },\r\n { value: 50, display: \"50%\" },\r\n { value: 75, display: \"75%\" },\r\n { value: 100, display: \"100%\" },\r\n ],\r\n },\r\n },\r\n window: {\r\n color: {\r\n value: \"#000000\",\r\n options: [\r\n { value: \"#ffffff\", display: \"White\" },\r\n { value: \"#ffff00\", display: \"Yellow\" },\r\n { value: \"#00ff00\", display: \"Green\" },\r\n { value: \"#00ffff\", display: \"Cyan\" },\r\n { value: \"#0000ff\", display: \"Blue\" },\r\n { value: \"#ff00ff\", display: \"Magenta\" },\r\n { value: \"#ff0000\", display: \"Red\" },\r\n { value: \"#000000\", display: \"Black\" },\r\n ],\r\n },\r\n opacity: {\r\n value: 0,\r\n options: [\r\n { value: 0, display: \"0%\" },\r\n { value: 25, display: \"25%\" },\r\n { value: 50, display: \"50%\" },\r\n { value: 75, display: \"75%\" },\r\n { value: 100, display: \"100%\" },\r\n ],\r\n },\r\n },\r\n characterEdgeStyle: {\r\n value: \"none\",\r\n options: [\r\n { value: \"none\", display: \"None\" },\r\n { value: \"drop-shadow\", display: \"Drop Shadow\" },\r\n { value: \"raised\", display: \"Raised\" },\r\n { value: \"depressed\", display: \"Depressed\" },\r\n { value: \"outline\", display: \"Outline\" },\r\n ],\r\n },\r\n textAlignment: {\r\n value: \"left\",\r\n options: [\r\n { value: \"left\", display: \"Left\" },\r\n { value: \"center\", display: \"Center\" },\r\n { value: \"right\", display: \"Right\" },\r\n ],\r\n },\r\n previewTimeout: 1500,\r\n};\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { CaptionsPlug } from \"@plugs/settings/captions\";\nimport { CAPTIONS_BUILD, STYLE_PATHS } from \"@plugs/settings/captions/build\";\nimport { setPath, getPath, fanout } from \"sia-reactor/utils\";\nimport { parseUIObj, getUIOpt, isStr, isBool } from \"@utils/obj\";\nimport type { UISettings, UIOption } from \"@defs/UIOptions\";\nimport { camelize, capitalize, uncamelize } from \"@utils/str\";\n\nexport const getSettingsCaptionsMenu = (plug: CaptionsPlug): SettingsMenuItem[] => [\n {\n id: \"captions\",\n label: \"Captions\",\n icon: \"captions\",\n widget: \"group\",\n mediaPaths: [\"state.currentTextTrack\", \"status.textTracks\"],\n configPaths: [\"settings.captions.multiple\"],\n onWire: (syncUI, signal) => plug.state.watch(\"secondaryTracks\", syncUI, { signal }),\n getValue() {\n const isMulti = plug.config.multiple,\n list = plug.media.status.textTracks;\n 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}`;\n \n if (plug.media.state.currentTextTrack === -1) return plug.state.secondaryTracks.length ? `Off +${plug.state.secondaryTracks.length}` : \"Off\";\n const track = list[plug.media.state.currentTextTrack],\n primLabel = track?.label || track?.language || `Track ${plug.media.state.currentTextTrack + 1}`;\n return plug.state.secondaryTracks.length ? `${primLabel} +${plug.state.secondaryTracks.length}` : primLabel;\n },\n actions: [\n {\n id: \"goToStyles\",\n getLabel: () => \"Styles\",\n onClick: () => plug.ctlr.plug(\"settings.settingsView\")?.menu.goTo(\"subtitleStyle\"),\n },\n ],\n items: [\n {\n id: \"captionsList\",\n label: \"Tracks\",\n widget: \"select\",\n inline: true,\n getMultiple: () => plug.config.multiple,\n getValue() {\n const isMulti = plug.config.multiple,\n list = plug.media.status.textTracks;\n 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}`;\n \n if (plug.media.state.currentTextTrack === -1 && !plug.state.secondaryTracks.length) return [\"Off\"];\n\n const vals: string[] = [];\n 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}`);\n plug.state.secondaryTracks.forEach((idx: number) => {\n const tr = list[idx];\n if (tr) vals.push(tr.label || tr.language || `Track ${idx + 1}`);\n });\n return vals.length ? vals : [\"Off\"];\n },\n getOptions() {\n const list = plug.media.status.textTracks;\n const opts = !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));\n if (opts.length) opts.unshift({ value: -1, display: \"Off\" });\n return opts.length ? opts : [{ value: -1, display: \"Off\" }];\n },\n onChange: (val: number) => {\n if (val === -1) {\n plug.media.intent.textVisible = false;\n plug.media.intent.currentTextTrack = -1;\n plug.state.secondaryTracks = [];\n } else {\n plug.media.intent.textVisible = true;\n if (plug.config.multiple) {\n const idx = plug.state.secondaryTracks.indexOf(val);\n if (idx > -1) {\n const arr = [...plug.state.secondaryTracks];\n arr.splice(idx, 1);\n plug.state.secondaryTracks = arr;\n }\n else if (val !== plug.media.state.currentTextTrack) plug.state.secondaryTracks = [...plug.state.secondaryTracks, val];\n } else {\n plug.media.intent.currentTextTrack = val;\n plug.state.secondaryTracks = [];\n }\n }\n },\n mediaPaths: [\"status.textTracks\", \"state.currentTextTrack\"],\n },\n {\n id: \"captionsMulti\",\n label: \"Multiple Captions\",\n widget: \"toggle\",\n inline: true,\n feature: \"multipleCaptions\",\n getValue: () => plug.config.multiple ? \"On\" : \"Off\",\n onChange: (val: boolean) => {\n plug.config.multiple = val;\n if (!val) plug.state.secondaryTracks = [];\n plug.ctlr.plug(\"settings.settingsView\")?.menu.syncUI();\n },\n },\n {\n id: \"subtitleStyle\",\n label: \"Styles\",\n widget: \"group\",\n hidden: true, // Hide from rows list but still accessible via actions\n getValue: () => \"\",\n configPaths: STYLE_PATHS.map((p) => `settings.${p}` as const),\n items: [\n ...STYLE_PATHS.map((p) => {\n const id = camelize(p.replace(\".value\", \"\"), /\\./),\n pathParts = p.replace(\"captions.\", \"\").replace(\".value\", \"\"),\n getCurr = () => getPath(plug.config as any, pathParts) as UISettings<number | string>,\n parsed = getPath(parseUIObj(plug.config as any), pathParts as any) as { values: any[]; displays: string[] },\n hasNum = !!parsed?.values?.length && parsed.values.every((v) => !isBool(v) && !isNaN(Number(v))),\n isColor = !hasNum && parsed?.values?.some((v) => String(v).startsWith(\"#\")),\n actMin = hasNum ? Math.min(...parsed.values.map(Number)) : 0,\n actMax = hasNum ? Math.max(...parsed.values.map(Number)) : 100,\n configPaths = [\"settings.\" + p];\n return {\n id,\n label: uncamelize(pathParts.replace(/\\./g, \" \")).split(\" \").map(capitalize).join(\" \"),\n widget: hasNum ? \"group\" : isColor ? \"color\" : \"select\",\n getValue: (curr = getCurr()) => getUIOpt(curr.options, curr.value),\n getOptions: (curr = getCurr()) => curr.options,\n onChange: (val: number | string, curr = getCurr()) => (curr.value = val),\n tipHTML: () => {\n if (p.includes(\"font.variant\")) return \"Apply variants like small capitals to the text\";\n if (p.includes(\"window.color\")) return \"Change the background color of the entire caption bounding box (differs from text background)\";\n if (p.includes(\"window.opacity\")) return \"Adjust how transparent the entire caption bounding box is\";\n if (p.includes(\"characterEdgeStyle\")) return \"Add borders or shadows to the text to make it more readable\";\n return undefined;\n },\n items: hasNum\n ? [\n {\n id: `${id}Slider`,\n label: \"Custom\",\n widget: \"range\",\n inline: true,\n getValue: (curr = getCurr()) => `${Math.round(Number(curr.value))}%`,\n onChange: (val: number | string, curr = getCurr()) => (curr.value = isStr(curr.value) ? String(val) : Number(val)),\n getRange: (curr = getCurr()) => ({ min: Math.min((curr.min as number) ?? actMin, actMin), max: Math.max((curr.max as number) ?? actMax, actMax), formatTooltip: (v: number) => Math.round(v) + \"%\", options: curr.options as UIOption<number>[] }),\n configPaths,\n },\n {\n id: `${id}Select`,\n label: \"Presets\",\n widget: \"select\",\n inline: true,\n getOptions: (curr = getCurr()) => curr.options,\n getValue: (curr = getCurr()) => String(curr.value),\n onChange: (val: number | string, curr = getCurr()) => (curr.value = isStr(curr.value) ? String(val) : Number(val)),\n configPaths,\n },\n ]\n : undefined,\n configPaths,\n } as SettingsMenuItem;\n }),\n {\n id: \"resetCaptions\",\n label: \"Reset\",\n widget: \"button\",\n getValue: () => \"\",\n onChange: () => {\n plug.config.allowOverride = CAPTIONS_BUILD.allowOverride!;\n const cssCache = plug.media.tech.ctlr?.plug(\"settings.css\")?._cache;\n STYLE_PATHS.forEach((p, _, __, val = cssCache?.[camelize(p.replace(\".value\", \"\"), /\\./)]) => ((val = p.includes(\"opacity\") && val !== undefined ? Number(val) * 100 : val), setPath(plug.config as any, p.replace(\"captions.\", \"\"), val ?? getPath(CAPTIONS_BUILD as any, p.replace(\"captions.\", \"\")))));\n },\n },\n {\n id: \"allowOverride\",\n label: \"Allow media override\",\n widget: \"toggle\",\n getValue: () => (plug.config.allowOverride ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.allowOverride = val),\n configPaths: [\"settings.captions.allowOverride\"],\n title: \"Allow media content to override your custom caption styling with its own styling (if available)\",\n },\n ],\n },\n ],\n },\n {\n id: \"limits\",\n label: \"Limits\",\n icon: \"configure\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"captionSizeLimits\",\n label: \"Caption size\",\n widget: \"limits\",\n configPaths: [\"settings.captions.font.size.min\", \"settings.captions.font.size.max\", \"settings.captions.font.size.skip\"],\n getValue: () => \"\",\n getLimits: () => [{ name: \"captionSize\", label: \"Clamp bounds\", min: plug.config.font.size.min, max: plug.config.font.size.max, step: plug.config.font.size.skip }],\n onChange: (val: Record<string, number>) => fanout(plug.config.font.size, { min: val.captionSize_min, max: val.captionSize_max, skip: val.captionSize_step }, { skipUndefined: true }),\n },\n ],\n },\n];\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.captions\": typeof getSettingsCaptionsMenu;\n }\n}\n","/*\r\n * Portions of this code are derived from Video.js\r\n * https://github.com/videojs/video.js\r\n * Licensed under Apache License 2.0\r\n * Copyright (c) Brightcove, Inc. and contributors\r\n */\r\n\r\n// Types\r\ntype Version = string | null;\r\ntype BrandEntry = { brand?: string; version?: string };\r\n\r\n// Environment guards\r\nconst win = \"undefined\" !== typeof window ? window : undefined,\r\n nav = win?.navigator,\r\n ua = nav?.userAgent || \"\",\r\n uaData = (nav as Navigator & { userAgentData?: { platform?: string; brands?: BrandEntry[] } })?.userAgentData;\r\n\r\n// Base flags: bools first, versions second for readability\r\nexport let IS_ANDROID = false;\r\nexport let IS_WINDOWS = false;\r\nexport let IS_FIREFOX = false;\r\nexport let IS_EDGE = false;\r\nexport let IS_CHROME = false;\r\nexport let IS_CHROMIUM = false;\r\nexport let IS_SAFARI = false;\r\nexport let IS_IE = false;\r\nexport let IS_TIZEN = false;\r\nexport let IS_WEBOS = false;\r\nexport let IS_IPOD = false;\r\nexport let IS_IPAD = false;\r\nexport let IS_IPHONE = false;\r\n// Versioned details\r\nexport let IOS_VERSION: Version = null;\r\nexport let ANDROID_VERSION: Version = null;\r\nexport let CHROME_VERSION: Version = null;\r\nexport let CHROMIUM_VERSION: Version = null;\r\nexport let IE_VERSION: Version = null;\r\n// Composite Flags\r\nexport let IS_IOS = false;\r\nexport let IS_MOBILE = false;\r\nexport let IS_SMART_TV = false;\r\n// Capabilities\r\nexport const IS_CHROMECAST_RECEIVER = Boolean((win as any)?.cast?.framework?.CastReceiverContext);\r\nexport const MSE_ENABLED = Boolean(win && (\"MediaSource\" in win || \"webkitMediaSource\" in win));\r\nexport const TOUCH_ENABLED = Boolean(win && (\"ontouchstart\" in win || (nav as Navigator & { maxTouchPoints?: number })?.maxTouchPoints || ((win as any).DocumentTouch && win.document instanceof (win as any).DocumentTouch)));\r\n// Media Queries\r\nexport const queryMediaMobile = (query = `(max-width: 480px), (max-width: 940px) and (max-height: 480px) and (orientation: landscape)`) => Boolean(win && \"matchMedia\" in win && win.matchMedia(query).matches);\r\n\r\n// Modern detection first (userAgentData)\r\nif (uaData?.platform && uaData?.brands) {\r\n // Helpers\r\n const pickVersion = (brands: BrandEntry[], needle: string): Version => brands.find((b) => b.brand === needle && b.version)?.version || null;\r\n // Platform first\r\n IS_ANDROID = uaData.platform === \"Android\";\r\n IS_WINDOWS = uaData.platform === \"Windows\";\r\n // Browser family\r\n IS_EDGE = uaData.brands.some((b) => b.brand === \"Microsoft Edge\");\r\n IS_CHROMIUM = uaData.brands.some((b) => b.brand === \"Chromium\" || b.brand === \"Google Chrome\");\r\n IS_CHROME = IS_CHROMIUM && !IS_EDGE;\r\n // Versions\r\n CHROMIUM_VERSION = CHROME_VERSION = pickVersion(uaData.brands, \"Chromium\") || pickVersion(uaData.brands, \"Google Chrome\");\r\n}\r\n\r\n// Fallback / additional parsing via UA string\r\nif (true || !IS_CHROMIUM || !CHROMIUM_VERSION) {\r\n // General Platforms\r\n IS_ANDROID ||= /Android/i.test(ua);\r\n IS_WINDOWS ||= /Windows/i.test(ua);\r\n // Desktop & general browsers (include iOS-branded variants)\r\n IS_FIREFOX = /Firefox|FxiOS/i.test(ua);\r\n IS_EDGE ||= /Edg|EdgiOS/i.test(ua);\r\n IS_CHROMIUM ||= /Chrome|CriOS/i.test(ua);\r\n IS_CHROME = IS_CHROMIUM && !IS_EDGE;\r\n IS_SAFARI = /Safari/i.test(ua) && !IS_CHROME && !IS_FIREFOX && !IS_EDGE;\r\n IS_IE = /MSIE|(Trident\\/7.0)|(rv:11.0)/i.test(ua);\r\n // TVs\r\n IS_TIZEN = /Tizen/i.test(ua);\r\n IS_WEBOS = /Web0S/i.test(ua);\r\n // Apple desktop/mobile device refinement\r\n IS_IPOD = /iPod/i.test(ua);\r\n IS_IPAD = /iPad/i.test(ua) || (IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(ua));\r\n IS_IPHONE = /iPhone/i.test(ua) && !IS_IPAD;\r\n // Versions\r\n IOS_VERSION = ua.match(/OS (\\d+)_/i)?.[1] ?? null;\r\n ANDROID_VERSION = ua.match(/Android\\s(\\d+(?:\\.\\d+)+)/i)?.[1] ?? null;\r\n CHROMIUM_VERSION = CHROME_VERSION = ua.match(/(?:Chrome|CriOS)\\/(\\d+)/)?.[1] ?? CHROMIUM_VERSION;\r\n IE_VERSION = ua.match(/MSIE\\s(\\d+)\\.\\d/)?.[1] || (/Trident\\/7.0/i.test(ua) && /rv:11.0/.test(ua) ? \"11.0\" : null);\r\n} // `true` override for devtools predictability\r\n\r\n// Composite Flags\r\nIS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\r\nIS_MOBILE = Boolean(IS_ANDROID || IS_IPHONE || IS_IPOD || IS_IPAD);\r\nIS_SMART_TV = IS_TIZEN || IS_WEBOS;\r\n","import { DeepPartial } from \"sia-reactor\";\r\nimport { ControlPanelConfig, ControlPanelDraggable } from \"./types\";\r\nimport { IS_MOBILE } from \"@utils/env\";\r\n\r\nexport const ROWS_ARR = [1, 2, 3] as const;\r\n\r\nexport const 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\"] as const;\r\n\r\nexport const BIG_CONTROLS = [\"bigprev\", \"bigplaypause\", \"bignext\"] as const;\r\n\r\nexport const CONTROL_PANEL_DRAGGABLE_BUILD: ControlPanelDraggable = [\"\", \"big\", \"wrapper\"];\r\n\r\nexport const CONTROL_PANEL_BUILD: DeepPartial<ControlPanelConfig> = {\r\n profile: true,\r\n title: true,\r\n artist: true,\r\n top: [\"expandminiplayer\", \"spacer\", \"meta\", \"spacer\", \"capture\", \"fullscreenlock\", \"airplay\", \"cast\", \"fullscreenorientation\", \"removeminiplayer\"],\r\n center: [\"bigprev\", \"bigplaypause\", \"bignext\"],\r\n bottom: {\r\n 1: [],\r\n 2: [\"spacer\", \"timeline\", \"spacer\"],\r\n 3: [...(!IS_MOBILE ? ([\"prev\", \"playpause\", \"next\"] as const) : []), \"brightness\", \"volume\", \"timeandduration\", \"chapter\", \"spacer\", \"captions\", \"settings\", \"objectfit\", \"pictureinpicture\", \"theater\", \"fullscreen\"] as const,\r\n },\r\n buffer: {\r\n value: \"eclipse\",\r\n options: [\r\n { value: \"eclipse\", display: \"Eclipse\" },\r\n { value: \"accent\", display: \"Accent\" },\r\n { value: false, display: \"Off\" },\r\n ]\r\n },\r\n timeline: {\r\n thumb: {\r\n value: true,\r\n options: [\r\n { value: \"auto\", display: \"Auto\" },\r\n { value: true, display: \"On\" },\r\n { value: false, display: \"Off\" },\r\n ]\r\n },\r\n previews: false,\r\n scrub: {\r\n sync: false,\r\n relative: !IS_MOBILE,\r\n cancel: {\r\n delta: 15,\r\n timeout: 2000,\r\n },\r\n },\r\n label: \"Media Timeline\",\r\n tooltip: false,\r\n autopause: true,\r\n compact: IS_MOBILE,\r\n bufferMarks: false,\r\n playedMarks: false,\r\n },\r\n progressBar: IS_MOBILE,\r\n // draggable: CONTROL_PANEL_DRAGGABLE_BUILD,\r\n};\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { ControlPanelPlug } from \"@plugs/settings/controlPanel\";\nimport { CONTROLS, BIG_CONTROLS } from \"@plugs/settings/controlPanel/build\";\nimport type { AnyControl, ControlPanelBottomTuple } from \"@plugs/settings/controlPanel/types\";\nimport { getUIOpt, getBoolOrStr, insertPanelCtrl, getPanelLocation } from \"@utils/obj\";\nimport { getPath, setPath } from \"sia-reactor/utils\";\n\nconst isEnabled = (plug: ControlPanelPlug, id: AnyControl) => getPanelLocation(plug.config, id).row.includes(id);\nconst setEnabled = (plug: ControlPanelPlug, id: AnyControl, enabled: boolean, b = plug.ctlr._build.settings.controlPanel) => {\n const cLoc = getPanelLocation(plug.config, id);\n // prettier-ignore\n if (!enabled) return void (cLoc.row.includes(id) && setPath(plug.config as any, cLoc.path, cLoc.row.filter((c: any) => c !== id)));\n if (cLoc.row.includes(id)) return;\n const bLoc = getPanelLocation(b, id),\n cfgRow = getPath(plug.config as any, bLoc.path) as any[];\n Array.isArray(cfgRow) && bLoc.row.length ? insertPanelCtrl(cfgRow, bLoc.row, id) : (plug.config.bottom as ControlPanelBottomTuple)[1].push(id);\n};\n\nexport const getSettingsControlPanelMenu = (plug: ControlPanelPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"layoutControlPanel\",\n label: \"Control panel\",\n widget: \"group\",\n getValue: () => \"\",\n tipHTML: \"Configure player controls, layout, and visual feedback\",\n items: [\n {\n id: \"layoutToggleControls\",\n label: \"Toggle controls\",\n widget: \"group\",\n getValue: () => \"\",\n configPaths: [\"settings.controlPanel.top\", \"settings.controlPanel.center\", \"settings.controlPanel.bottom\"],\n items: [...CONTROLS, ...BIG_CONTROLS]\n .filter((id) => id !== \"spacer\")\n .map((id) => ({\n id: `toggle-cp-${id}`,\n label: id\n .replace(/([A-Z])/g, \" $1\")\n .toLowerCase()\n .replace(/^./, (s) => s.toUpperCase()),\n widget: \"toggle\" as const,\n getValue: () => (isEnabled(plug, id) ? \"On\" : \"Off\"),\n onChange: (val: boolean) => setEnabled(plug, id, val),\n configPaths: [\"settings.controlPanel.top\", \"settings.controlPanel.center\", \"settings.controlPanel.bottom\"],\n })),\n },\n {\n id: \"layoutTimeline\",\n label: \"Timeline\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"timelineThumb\",\n label: \"Show thumb\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.timeline.thumb.options, plug.config.timeline.thumb.value),\n getOptions: () => plug.config.timeline.thumb.options!,\n onChange: (val: string) => (plug.config.timeline.thumb.value = val === \"auto\" ? \"auto\" : val === \"true\"),\n configPaths: [\"settings.controlPanel.timeline.thumb.value\"],\n },\n {\n id: \"timelineCompact\",\n label: \"Compact mode\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.compact ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.compact = val),\n configPaths: [\"settings.controlPanel.timeline.compact\"],\n title: \"Make the timeline thinner and more minimalist to conserve space\",\n },\n\n {\n id: \"timelineAutopause\",\n label: \"Pause-to-preview\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.autopause ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.autopause = val),\n configPaths: [\"settings.controlPanel.timeline.autopause\"],\n title: \"Automatically pauses the video while you are dragging the timeline to seek\",\n },\n {\n id: \"timelinePlayedMarks\",\n label: \"Played marks\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.playedMarks ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.playedMarks = val),\n configPaths: [\"settings.controlPanel.timeline.playedMarks\"],\n title: \"Displays colored indicators on the timeline for sections you've already watched\",\n },\n {\n id: \"timelineBufferMarks\",\n label: \"Buffer marks\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.bufferMarks ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.bufferMarks = val),\n configPaths: [\"settings.controlPanel.timeline.bufferMarks\"],\n title: \"Shows a progress bar indicating how much of the video has been pre-loaded\",\n },\n {\n id: \"timelinePreviews\",\n label: \"Seek previews\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.previews ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.previews = val),\n configPaths: [\"settings.controlPanel.timeline.previews\"],\n 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'.\",\n },\n {\n id: \"timelineScrub\",\n label: \"Scrub behaviour\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"timelineScrubSync\",\n label: \"Sync scrubbing\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.scrub.sync ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.scrub.sync = val),\n configPaths: [\"settings.controlPanel.timeline.scrub.sync\"],\n title: \"Updates the video frame in real-time as you drag the timeline cursor\",\n },\n {\n id: \"timelineScrubRelative\",\n label: \"Relative scrubbing\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.scrub.relative ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.scrub.relative = val),\n configPaths: [\"settings.controlPanel.timeline.scrub.relative\"],\n title: \"Whether the scrubbing pointer should follow your finger exactly or move relative to your initial point of touch\",\n },\n {\n id: \"timelineScrubCancel\",\n label: \"Scrub cancellation\",\n widget: \"group\",\n getValue: () => (plug.comp(\"timeline\")?.config.scrub.cancel.delta && plug.comp(\"timeline\")?.config.scrub.cancel.timeout ? \"On\" : \"Off\"),\n configPaths: [\"settings.controlPanel.timeline.scrub.cancel.delta\", \"settings.controlPanel.timeline.scrub.cancel.timeout\"],\n items: [\n {\n id: \"timelineScrubCancelDelta\",\n label: \"Cancel distance\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.comp(\"timeline\")?.config.scrub.cancel.delta!)}px`,\n getRange: () => ({ min: 0, max: 100, step: 5 }),\n onChange: (val: number) => (plug.config.timeline.scrub.cancel.delta = val),\n configPaths: [\"settings.controlPanel.timeline.scrub.cancel.delta\"],\n tipHTML: \"Horizontal distance from your initial drag position before a scrub is considered cancelled.\",\n },\n {\n id: \"timelineScrubCancelTimeout\",\n label: \"Cancel timeout\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.comp(\"timeline\")?.config.scrub.cancel.timeout}ms`,\n onChange: (val: Record<string, any>) => (plug.config.timeline.scrub.cancel.timeout = val[\"ms\"]),\n configPaths: [\"settings.controlPanel.timeline.scrub.cancel.timeout\"],\n tipHTML: \"How long to wait before allowing you to resume scrubbing after a cancellation attempt.\",\n },\n ],\n },\n ],\n },\n {\n id: \"timelineWheelGroup\",\n label: \"Wheel seek\",\n widget: \"group\",\n getValue: () => (plug.comp(\"timeline\")?.config.wheel.disabled ? \"Off\" : \"On\"),\n items: [\n {\n id: \"timelineWheelDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.comp(\"timeline\")?.config.wheel.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.timeline.wheel.disabled = val),\n configPaths: [\"settings.controlPanel.timeline.wheel\"],\n title: \"Enables seeking through the video by scrolling the mouse wheel over the timeline\",\n },\n {\n id: \"timelineWheelAxisRatio\",\n label: \"Sensitivity\",\n widget: \"range\",\n getValue: () => String(plug.comp(\"timeline\")?.config.wheel.axisRatio),\n getRange: () => ({ min: 1, max: 50, step: 1 }),\n onChange: (val: number) => (plug.config.timeline.wheel.axisRatio = val),\n configPaths: [\"settings.controlPanel.timeline.wheel\"],\n tipHTML: \"Adjusts how much the video seeks per scroll wheel notch\",\n },\n ],\n },\n {\n id: \"timelineMarkers\",\n label: \"Add marker\",\n widget: \"input\",\n inputs: [\n { label: \"Label\", placeholder: \"Chapter 2\", helperText: { info: \"e.g. Chapter 2\" }, required: true },\n { label: \"Position (%)\", placeholder: \"50\", helperText: { info: \"0 – 100\" }, type: \"number\", required: true },\n { label: \"End (%)\", helperText: { info: \"Optional\" }, type: \"number\" },\n ],\n getValue: () => `${plug.comp(\"timeline\")?.config.marks.length || 0} marker${(plug.comp(\"timeline\")?.config.marks.length || 0) !== 1 ? \"s\" : \"\"}`,\n onChange: (val: Record<string, string>) => (plug.config.timeline.marks = [...(plug.config.timeline.marks || []), { label: val[\"Label\"] || undefined, start: Number(val[\"Position (%)\"]) || 0, end: val[\"End (%)\"] ? Number(val[\"End (%)\"]) : undefined }]),\n configPaths: [\"settings.controlPanel.timeline.marks\"],\n },\n ],\n },\n {\n id: \"layoutBuffer\",\n label: \"Loading spinner\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.buffer.options, plug.config.buffer.value),\n getOptions: () => plug.config.buffer.options!,\n onChange: (val: string) => (plug.config.buffer.value = getBoolOrStr(val) as typeof plug.config.buffer.value),\n configPaths: [\"settings.controlPanel.buffer.value\"],\n },\n {\n id: \"layoutProgressBar\",\n label: \"Progress bar\",\n widget: \"toggle\",\n getValue: () => (plug.config.progressBar ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.progressBar = val),\n configPaths: [\"settings.controlPanel.progressBar\"],\n },\n {\n id: \"layoutDraggable\",\n label: \"Drag & drop layout\",\n widget: \"toggle\",\n getValue: () => (plug.config.draggable ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.draggable = val),\n configPaths: [\"settings.controlPanel.draggable\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.controlPanel\": typeof getSettingsControlPanelMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { FastPlayPlug } from \"@plugs/settings/fastPlay\";\nimport { getUIOpt } from \"@utils/obj\";\n\nconst fPRgx = /all|mouse|touch|pen/;\n\nexport const getSettingsFastPlayMenu = (plug: FastPlayPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"fastPlay\",\n label: \"Fast play\",\n widget: \"group\",\n getValue: () => (plug.config.key || fPRgx.test(plug.config.pointer.type.value) ? \"On\" : \"Off\"),\n tipHTML: \"Configure fast playback gestures, speed, and triggers\",\n configPaths: [\"settings.fastPlay.key\", \"settings.fastPlay.pointer.type.value\"],\n items: [\n {\n id: \"fastPlayRate\",\n label: \"Fast play speed\",\n widget: \"range\",\n getValue: () => `${plug.config.playbackRate}x`,\n getRange() {\n const divs = [];\n for (let i = Math.ceil(plug.settings.playbackRate.min); i <= plug.settings.playbackRate.max; i++) divs.push(i);\n return { min: plug.settings.playbackRate.min, max: plug.settings.playbackRate.max, step: 0.05, formatTooltip: (v: number) => `${v.toFixed(2)}x`, divs };\n },\n onChange: (val: number) => (plug.config.playbackRate = val),\n configPaths: [\"settings.fastPlay.playbackRate\", \"settings.playbackRate.min\", \"settings.playbackRate.max\"],\n tipHTML: \"Playback speed multiplier when fast play is active\",\n },\n {\n id: \"fastPlayKey\",\n label: \"Keyboard hold trigger\",\n widget: \"toggle\",\n getValue: () => (plug.config.key ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.key = val),\n configPaths: [\"settings.fastPlay.key\"],\n title: \"Press and hold the Left/Right arrow keys to temporarily rewind or fast-forward\",\n },\n {\n id: \"fastPlayPointer\",\n label: \"Pointer hold trigger\",\n widget: \"group\",\n getValue: () => (plug.config.pointer.threshold && fPRgx.test(plug.config.pointer.type.value) ? \"On\" : \"Off\"),\n tipHTML: \"Press and hold the video with your mouse or finger to temporarily rewind or fast-forward\",\n configPaths: [\"settings.fastPlay.pointer.type.value\", \"settings.fastPlay.pointer.threshold\"],\n items: [\n {\n id: \"fastPlayPointerType\",\n label: \"Pointer type\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.pointer.type.options, plug.config.pointer.type.value),\n getOptions: () => plug.config.pointer.type.options!,\n onChange: (val: string) => (plug.config.pointer.type.value = val),\n configPaths: [\"settings.fastPlay.pointer.type.value\"],\n tipHTML: \"Which input devices can trigger fast play by long pressing the video.\",\n },\n {\n id: \"fastPlayPointerThreshold\",\n label: \"Hold Duration\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.config.pointer.threshold}ms`,\n onChange: (val: Record<string, any>) => (plug.config.pointer.threshold = val[\"ms\"]),\n configPaths: [\"settings.fastPlay.pointer.threshold\"],\n },\n {\n id: \"fastPlayPointerInset\",\n label: \"Edge inset\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.pointer.inset)}px`,\n getRange: () => ({ min: 0, max: 100, step: 5, formatTooltip: (v: number) => `${Math.round(v)}px` }),\n onChange: (val: number) => (plug.config.pointer.inset = val),\n configPaths: [\"settings.fastPlay.pointer.inset\"],\n tipHTML: \"Distance from the screen edges to ignore long presses (prevents accidental triggers)\",\n },\n ],\n },\n {\n id: \"fastPlayReset\",\n label: \"Reset paused on release\",\n widget: \"toggle\",\n getValue: () => (plug.config.resetPaused ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.resetPaused = val),\n configPaths: [\"settings.fastPlay.resetPaused\"],\n title: \"Automatically reset play state when you release the trigger\",\n },\n {\n id: \"fastPlayRewind\",\n label: \"Allow rewind\",\n widget: \"toggle\",\n getValue: () => (plug.config.rewind ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.rewind = val),\n configPaths: [\"settings.fastPlay.rewind\"],\n title: \"Allow fast playing backwards (rewinding) if triggered on the left side of the screen\",\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.fastPlay\": typeof getSettingsFastPlayMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { FramePlug } from \"@plugs/settings/frame\";\nimport { isBool } from \"@utils/obj\";\n\nexport const getSettingsFrameMenu = (plug: FramePlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"frameCapture\",\n label: \"Frame Capture\",\n widget: \"group\",\n getValue: () => (plug.config.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.frame.disabled\"],\n items: [\n {\n id: \"frameDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.disabled = val),\n configPaths: [\"settings.frame.disabled\"],\n },\n {\n id: \"frameCaptureAutoClose\",\n label: \"Notification Timeout (ms)\",\n widget: \"input\",\n inputs: [{ label: \"Timeout (ms)\", type: \"number\", min: \"0\", step: \"1\" as const, 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\" } }],\n getValue: () => String(plug.config.captureAutoClose),\n onChange: (val: any) => (plug.config.captureAutoClose = val[\"Timeout (ms)\"] === -1 ? false : val[\"Timeout (ms)\"]),\n configPaths: [\"settings.frame.captureAutoClose\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.frame\": typeof getSettingsFrameMenu;\n }\n}\n","import { isNum } from \"@t007/utils\";\r\n\r\n// Media Time Formatting\r\nexport function formatMediaTime({ time, format = \"digital\", elapsed = true, showMs = false, casing = \"normal\" }: { time?: number; format?: string; elapsed?: boolean; showMs?: boolean; casing?: \"normal\" | \"upper\" | \"title\" } = { time: 0 }): string {\r\n const long = format.endsWith(\"long\"),\r\n sx = (n = 0) => (n == 1 ? \"\" : \"s\"),\r\n cs = (str: string) => (casing === \"upper\" ? str.toUpperCase() : casing === \"title\" ? str.replace(/^([a-z])/i, (m) => m.toUpperCase()) : str.toLowerCase()),\r\n wrd = (n = 0) => ({ d: cs(long ? \" day\" + sx(n) + \" \" : \"d\"), h: cs(long ? \" hour\" + sx(n) + \" \" : \"h\"), m: cs(long ? \" minute\" + sx(n) + \" \" : \"m\"), s: cs(long ? \" second\" + sx(n) + \" \" : \"s\"), ms: cs(long ? \" millisecond\" + sx(n) + \" \" : \"ms\") }),\r\n pad = (v: string | number, n = 2, f?: boolean) => (long && !f ? v : String(v).padStart(n, isNum(+n) ? \"0\" : \"-\"));\r\n if (isNaN(time ?? NaN) || time === Infinity) return format !== \"digital\" ? (\"-\" + wrd().h + pad(\"-\") + wrd().m + (!elapsed ? \"left\" : \"\")).trim() : !elapsed ? \"-:--\" : \"-:--\";\r\n const s = Math.floor(Math.abs(time!) % 60),\r\n m = Math.floor(Math.abs(time!) / 60) % 60,\r\n h = Math.floor(Math.abs(time!) / 3600) % 24,\r\n d = Math.floor(Math.abs(time!) / 86400),\r\n ms = Math.floor((Math.abs(time!) % 1) * 1000); // returns early so \"!\"\r\n if (format === \"digital\") {\r\n const base = d ? d + \":\" + pad(h, 2, true) + \":\" + pad(m, 2, true) + \":\" + pad(s, 2, true) : h ? h + \":\" + pad(m, 2, true) + \":\" + pad(s, 2, true) : m + \":\" + pad(s, 2, true);\r\n return !elapsed ? \"-\" + base : base;\r\n }\r\n const base = d ? d + wrd(d).d + pad(h) + wrd(h).h + pad(m) + wrd(m).m + pad(s) + wrd(s).s : h ? h + wrd(h).h + pad(m) + wrd(m).m + pad(s) + wrd(s).s : m + wrd(m).m + pad(s) + wrd(s).s,\r\n msPart = showMs && ms ? pad(ms, 3) + wrd(ms).ms : \"\";\r\n return (base + msPart + (!long ? \" \" : \"\") + (!elapsed ? \"left\" : \"\")).trim();\r\n}\r\n\r\n// Time Ranges\r\n\r\nexport function createTimeRanges(ranges?: [number, number][] | TimeRanges | ArrayLike<any>): TimeRanges {\r\n if (ranges instanceof TimeRanges) return ranges;\r\n if (!ranges)\r\n return Object.create(TimeRanges.prototype, {\r\n length: { value: 0 },\r\n start: {\r\n value: () => {\r\n throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n },\r\n },\r\n end: {\r\n value: () => {\r\n throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n },\r\n },\r\n });\r\n // 1. Sort incoming intervals chronologically by start time\r\n const rawPairs = (Array.isArray(ranges) ? ranges : Array.from(ranges as ArrayLike<any>)).sort((a, b) => a[0] - b[0]);\r\n // 2. Spec Normalization Loop: Merge overlapping or touching timelines\r\n const pairs: [number, number][] = [];\r\n for (const current of rawPairs) {\r\n const last = pairs[pairs.length - 1];\r\n if (!last || current[0] > last[1]) pairs.push([current[0], current[1]]); // Clean discontinuity gap\r\n else last[1] = Math.max(last[1], current[1]); // Normalization: merge overlaps!\r\n }\r\n // 3. Return a fully normalized interface literal\r\n return Object.create(TimeRanges.prototype, {\r\n length: { value: pairs.length },\r\n start: {\r\n value: (i: number) => {\r\n if (i < 0 || i >= pairs.length) throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n return pairs[i][0];\r\n },\r\n },\r\n end: {\r\n value: (i: number) => {\r\n if (i < 0 || i >= pairs.length) throw new DOMException(\"Index out of bounds\", \"IndexSizeError\");\r\n return pairs[i][1];\r\n },\r\n },\r\n });\r\n}\r\n","import { NOOP } from \"sia-reactor\";\r\nimport { bindCleanupToSignal as bindSig } from \"./fn\";\r\nconst win = \"undefined\" !== typeof window ? window : undefined;\r\n\r\n// Element Factory\r\nexport { createEl, assignEl, getWindow, createListRenderer } from \"@t007/utils\";\r\nexport { initVScrollerator } from \"@t007/utils/hooks/vanilla\";\r\n\r\n// Resource Loading\r\nexport { loadResource } from \"@t007/utils\";\r\n\r\n// Viewport Checks\r\nexport function inDocView(el: Element, axis: \"x\" | \"y\" = \"y\"): boolean {\r\n const rect = el.getBoundingClientRect(),\r\n inX = rect.left + win!.scrollX >= 0 && rect.right + win!.scrollX <= win!.scrollX + (win!.innerWidth || win!.document.documentElement.clientWidth),\r\n inY = rect.top + win!.scrollY >= 0 && rect.bottom + win!.scrollY <= win!.scrollY + (win!.innerHeight || win!.document.documentElement.clientHeight);\r\n return axis === \"x\" ? inY : axis === \"y\" ? inX : inY && inX;\r\n}\r\n\r\nexport function getElSiblingAt(p: number, dir: \"x\" | \"y\", els: HTMLElement[] | NodeListOf<HTMLElement>, pos: \"before\" | \"after\" | \"at\" = \"after\"): HTMLElement | undefined {\r\n return (\r\n els.length &&\r\n (\r\n Array.prototype.reduce.call(\r\n els,\r\n ((closest: { offset: number; element: Element | undefined }, child: Element) => {\r\n const { top: cT, left: cL, width: cW, height: cH } = child.getBoundingClientRect(),\r\n offset = p - (dir === \"y\" ? cT : cL) - (dir === \"y\" ? cH : cW) / 2,\r\n condition = pos === \"after\" ? offset < 0 && offset > closest.offset : pos === \"before\" ? offset > 0 && offset < closest.offset : pos === \"at\" ? Math.abs(offset) <= (dir === \"y\" ? cH : cW) / 2 && Math.abs(offset) < Math.abs(closest.offset) : false;\r\n return condition ? { offset, element: child } : closest;\r\n }) as any,\r\n { offset: pos === \"after\" ? -Infinity : Infinity, element: undefined }\r\n ) as any\r\n ).element\r\n );\r\n}\r\n\r\n// Fullscreen & Picture-in-Picture\r\nexport const queryFullscreen = (): boolean => Boolean(queryFullscreenEl());\r\nexport const queryFullscreenEl = (d = document as any): Element | null => d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement || null;\r\n\r\nexport const queryPictureInPicture = (): boolean => Boolean(queryPictureInPictureEl());\r\nexport const queryPictureInPictureEl = () => document.pictureInPictureElement;\r\n\r\nexport const supportsFullscreen = (vp = HTMLVideoElement.prototype as any, d = document as any) => Boolean(d.fullscreenEnabled || d.mozFullscreenEnabled || d.msFullscreenEnabled || d.webkitFullscreenEnabled || d.webkitSupportsFullscreen || vp.webkitEnterFullscreen);\r\nexport const supportsPictureInPicture = (vp = HTMLVideoElement.prototype as any, d = document as any, w = window as any) => Boolean(d.pictureInPictureEnabled || vp.requestPictureInPicture || w.documentPictureInPicture);\r\n\r\nexport const enterFullscreen = (el: any): Promise<void> => (el.webkitEnterFullscreen ? el.webkitEnterFullscreen() : el.requestFullscreen ? el.requestFullscreen() : el.mozRequestFullScreen ? el.mozRequestFullScreen() : el.webkitRequestFullscreen ? el.webkitRequestFullscreen() : el.msRequestFullscreen ? el.msRequestFullscreen() : Promise.reject(new Error(\"Fullscreen API is not supported\")));\r\nexport const exitFullscreen = (el: any, d = document as any): Promise<void> => (queryFullscreenEl(d) === el ? (el.webkitExitFullscreen ? el.webkitExitFullscreen() : d.exitFullscreen ? d.exitFullscreen() : d.mozCancelFullScreen ? d.mozCancelFullScreen() : d.webkitExitFullscreen ? d.webkitExitFullscreen() : d.msExitFullscreen ? d.msExitFullscreen() : Promise.reject(new Error(\"Fullscreen API is not supported\"))) : Promise.resolve());\r\n\r\n// Safe Click Handling\r\ntype SafeClickEl = HTMLElement & {\r\n _clickHandler?: (e: MouseEvent) => void;\r\n _dblClickHandler?: (e: MouseEvent) => void;\r\n _clickTimeoutId?: ReturnType<typeof setTimeout>;\r\n};\r\nexport function addSafeClicks(el?: SafeClickEl | null, onClick: (e: MouseEvent) => any = NOOP, onDblClick: (e: MouseEvent) => any = NOOP, options?: boolean | AddEventListenerOptions): void {\r\n el && removeSafeClicks(el);\r\n el?.addEventListener(\"click\", (el._clickHandler = (e: MouseEvent) => (clearTimeout(el._clickTimeoutId), (el._clickTimeoutId = setTimeout(() => onClick(e), 300)))), options);\r\n el?.addEventListener(\"dblclick\", (el._dblClickHandler = (e: MouseEvent) => (clearTimeout(el._clickTimeoutId), onDblClick(e))), options);\r\n}\r\nexport function removeSafeClicks(el?: SafeClickEl | null): void {\r\n el?.removeEventListener(\"click\", el._clickHandler as EventListener);\r\n el?.removeEventListener(\"dblclick\", el._dblClickHandler as EventListener);\r\n}\r\n\r\n// DOM Observers\r\ndeclare global {\r\n interface Element {\r\n _resizeCbs?: Set<(entry: ResizeObserverEntry) => void>;\r\n _intersectCbs?: Set<(entry: IntersectionObserverEntry) => void>;\r\n _mutationCbs?: Set<(mutations: MutationRecord[]) => void>;\r\n }\r\n}\r\n\r\nexport const intersectionObserver = win\r\n ? new IntersectionObserver(\r\n (entries) => {\r\n for (const entry of entries) if (entry.target._intersectCbs) for (const cb of entry.target._intersectCbs) cb(entry);\r\n },\r\n { root: null, rootMargin: \"0px\", threshold: 0.3 }\r\n )\r\n : null;\r\n\r\nexport const resizeObserver = win\r\n ? new ResizeObserver((entries) => {\r\n for (const entry of entries) if (entry.target._resizeCbs) for (const cb of entry.target._resizeCbs) cb(entry);\r\n })\r\n : null;\r\n\r\nexport const mutationObserver = win\r\n ? new MutationObserver((mutations) => {\r\n // Dispatch to specific targets if they are being observed directly\r\n // Note: MutationObserver works differently; this handles the 'root' observer callbacks\r\n // We map the *target* of the observation, not the mutation target usually.\r\n // For this util, we assume the observer instance calls the callback associated with the observed node.\r\n // Since we use one global observer, we need to map back.\r\n // Actually, for MutationObserver it's cleaner to keep separate instances if configs differ,\r\n // but for \"utils\" style, we can use a Map logic or just basic callback sets.\r\n // Current implementation assumes the caller handles the mutation list.\r\n const target = mutations[0].target as Element; // Batch usually targets one observer\r\n if (target._mutationCbs) for (const cb of target._mutationCbs) cb(mutations);\r\n })\r\n : null;\r\n\r\n// --- PUBLIC API ---\r\nexport function observeResize(el: Element, cb: (entry: ResizeObserverEntry) => void, sig?: AbortSignal) {\r\n (el._resizeCbs ?? (el._resizeCbs = new Set())).add(cb);\r\n resizeObserver?.observe(el);\r\n return bindSig(() => (el._resizeCbs?.delete(cb), !el._resizeCbs?.size && resizeObserver?.unobserve(el)), sig);\r\n}\r\n\r\nexport function observeIntersection(el: Element, cb: (entry: IntersectionObserverEntry) => void, sig?: AbortSignal) {\r\n (el._intersectCbs ?? (el._intersectCbs = new Set())).add(cb);\r\n intersectionObserver?.observe(el);\r\n return bindSig(() => (el._intersectCbs?.delete(cb), !el._intersectCbs?.size && intersectionObserver?.unobserve(el)), sig);\r\n}\r\n\r\nexport function observeMutation(el: Element, cb: (mutations: MutationRecord[]) => void, options: MutationObserverInit, sig?: AbortSignal) {\r\n (el._mutationCbs ?? (el._mutationCbs = new Set())).add(cb);\r\n mutationObserver?.observe(el, options);\r\n return bindSig(() => el._mutationCbs?.delete(cb), sig);\r\n}\r\n","import { MEDIA_INTENT_BUILD, MEDIA_SETTINGS_BUILD, MEDIA_STATE_BUILD, MEDIA_STATUS_BUILD } from \"@consts/media\";\r\nimport { MediaState, MediaStatus, MediaSettings, MediaReport, CtlrMedia } from \"@defs/contract\";\r\nimport { isStr, isNum, isIter, isSameURL, cleanURL } from \"@t007/utils\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { queryFullscreenEl, queryPictureInPictureEl } from \"@utils/dom\";\r\nimport { Dimensions, MediaType, Source, Sources, Track, Tracks } from \"@defs/generics\";\r\nimport { mergeObjs as merge } from \"sia-reactor/utils\";\r\nimport { DeepPartial } from \"sia-reactor\";\r\n\r\n// ============ Video Utilities ============\r\n// Types\r\ntype SourceLike = Source | (HTMLSourceElement & Record<string, any>);\r\ntype TrackLike = Track | (HTMLTrackElement & Record<string, any>);\r\n\r\n// Report Generation\r\nexport function getMediaReport(m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, opts = { skipUndefined: true }): MediaReport {\r\n const txtTrackIdx = getTrackIdx(m, \"Text\"),\r\n report = { state: getMediaState(m, isVid, txtTrackIdx), status: getMediaStatus(m, isVid, txtTrackIdx), settings: getMediaSettings(m) };\r\n return { state: merge(MEDIA_STATE_BUILD, report.state, opts), intent: merge(MEDIA_INTENT_BUILD, report.state, opts), status: merge(MEDIA_STATUS_BUILD, report.status, opts), settings: merge(MEDIA_SETTINGS_BUILD, report.settings, opts) } as MediaReport;\r\n}\r\nexport const getMediaState = (m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, _txtTrackIdx = getTrackIdx(m, \"Text\")): Partial<MediaState> => ({ src: m.src, currentTime: m.currentTime, paused: m.paused, volume: m.volume * 100, muted: m.muted, playbackRate: m.playbackRate, pictureInPicture: queryPictureInPictureEl() === m, fullscreen: queryFullscreenEl() === m, currentTextTrack: _txtTrackIdx, currentAudioTrack: getTrackIdx(m, \"Audio\"), currentVideoTrack: getTrackIdx(m, \"Video\"), poster: isVid ? (m as HTMLVideoElement).poster : \"\", autoplay: m.autoplay, loop: m.loop, preload: m.preload, playsInline: isVid ? m.playsInline : false, crossOrigin: m.crossOrigin, controls: m.controls, controlsList: m.controlsList ?? m.getAttribute(\"controlsList\"), disablePictureInPicture: isVid ? m.disablePictureInPicture ?? m.hasAttribute(\"disablePictureInPicture\") : false, sources: getSources(m), tracks: getTracks(m) });\r\nexport const getMediaStatus = (m: HTMLMediaElement, isVid = m instanceof HTMLVideoElement, _txtTrackIdx = getTrackIdx(m, \"Text\"), _flagsOnly = false): Partial<MediaStatus> => ({ readyState: m.readyState, networkState: m.networkState, error: m.error, seeking: m.seeking, buffered: m.buffered, played: m.played, seekable: m.seekable, duration: m.duration, ended: m.ended, loadedMetadata: m.readyState >= 1, loadedData: m.readyState >= 2, canPlay: m.readyState >= 3, canPlayThrough: m.readyState >= 4, videoWidth: isVid ? (m as HTMLVideoElement).videoWidth : 0, videoHeight: isVid ? (m as HTMLVideoElement).videoHeight : 0, textTracks: _flagsOnly ? undefined : m.textTracks, audioTracks: _flagsOnly ? undefined : (m as any).audioTracks, videoTracks: _flagsOnly ? undefined : (m as any).videoTracks, activeCue: _flagsOnly ? undefined : m.textTracks[_txtTrackIdx]?.activeCues?.[0] || null });\r\nexport const getMediaSettings = (m: HTMLMediaElement): DeepPartial<MediaSettings> => ({ defaultMuted: m.defaultMuted, defaultPlaybackRate: m.defaultPlaybackRate, srcObject: m.srcObject });\r\n\r\nexport function getMediaProgress({ state: s, status: st }: CtlrMedia, time = s.currentTime): number {\r\n if (st.isLive) {\r\n if (!st.seekable.length || s.live) return 1;\r\n const min = st.seekable.start(0),\r\n dvr = st.seekable.end(st.seekable.length - 1) - min;\r\n return dvr > 0 ? (time - min) / dvr : 1;\r\n } else return time / st.duration;\r\n}\r\nexport const getMediaTime = (media: CtlrMedia, percent: number, _min = getMediaMin(media)): number => (media.status.isLive ? _min! + percent * (getMediaMax(media) - _min!) : percent * media.status.duration);\r\nexport const getMediaMin = ({ status: st, state: s }: Pick<CtlrMedia, \"state\" | \"status\">): number => (st.isLive ? (st.seekable.length ? (st.canSeekLive ? st.seekable.start(0) : st.seekable.end(st.seekable.length - 1)) : s.currentTime) : 0); // live?, can't seek?, jump to edge\r\nexport const getMediaMax = ({ status: st, state: s }: Pick<CtlrMedia, \"state\" | \"status\">): number => (st.isLive ? (st.seekable.length ? st.seekable.end(st.seekable.length - 1) : s.currentTime) : st.duration);\r\n\r\nexport function getBooleanMediaProps(media: CtlrMedia, prop: \"intent\" | \"state\" = \"intent\"): string[] {\r\n return Object.keys(media[prop]).filter((k) => typeof media[prop][k as keyof MediaState] === \"boolean\");\r\n}\r\n\r\n// Geometry\r\nexport function getRenderedBox({ videoHeight, videoWidth }: { videoHeight?: number; videoWidth?: number }, { width: clientWidth = 0, height: clientHeight = 0 }: { width?: number; height?: number }, { objectFit = \"cover\", objectPosition = \"50% 50%\" }: { objectFit?: string; objectPosition?: string }): Partial<Dimensions & { left: number; top: number }> {\r\n const bbox = { width: clientWidth, height: clientHeight } as DOMRect,\r\n obj = (((videoHeight ||= 1080), (videoWidth ||= videoHeight * (16 / 9))), videoWidth && videoHeight ? { width: videoWidth, height: videoHeight } : null);\r\n if (!obj || !objectFit || !objectPosition) return {};\r\n if (objectFit === \"scale-down\") objectFit = bbox.width < obj.width || bbox.height < obj.height ? \"contain\" : \"none\";\r\n if (objectFit === \"none\") return { ...parseObjectPos(objectPosition, bbox, obj), ...obj };\r\n else if (objectFit === \"contain\") {\r\n const objRatio = obj.height / obj.width,\r\n bboxRatio = bbox.height / bbox.width,\r\n width = bboxRatio > objRatio ? bbox.width : bbox.height / objRatio,\r\n height = bboxRatio > objRatio ? bbox.width * objRatio : bbox.height;\r\n return { ...parseObjectPos(objectPosition, bbox, { width, height }), width, height };\r\n } else if (objectFit === \"fill\") {\r\n const { left, top, rawLeft, rawTop } = parseObjectPos(objectPosition, bbox, obj);\r\n return { left: rawLeft.endsWith(\"%\") ? 0 : left, top: rawTop.endsWith(\"%\") ? 0 : top, width: bbox.width, height: bbox.height }; // Relative positioning is discarded with `obj-fit: fill`, so we need to check here if it's relative or not\r\n } else if (objectFit === \"cover\") {\r\n const minRatio = Math.min(bbox.width / obj.width, bbox.height / obj.height);\r\n let width = obj.width * minRatio,\r\n height = obj.height * minRatio,\r\n outRatio = 1;\r\n if (width < bbox.width) outRatio = bbox.width / width;\r\n if (Math.abs(outRatio - 1) < 1e-14 && height < bbox.height) outRatio = bbox.height / height;\r\n (width *= outRatio), (height *= outRatio);\r\n return { ...parseObjectPos(objectPosition, bbox, { width, height }), width, height };\r\n }\r\n return {};\r\n}\r\nconst parsePosAsPx = (str: string, bboxSize: number, objectSize: number): number => {\r\n str === \"center\" ? (str = \"50%\") : str === \"left\" || str === \"top\" ? (str = \"0%\") : (str === \"right\" || str === \"bottom\") && (str = \"100%\");\r\n const num = parseFloat(str);\r\n return !str.endsWith(\"%\") ? num : (bboxSize - objectSize) * (num / 100);\r\n};\r\nconst parseObjectPos = (position: string, bbox: DOMRect, object: Dimensions): { left: number; top: number; rawLeft: string; rawTop: string } => {\r\n if (position === \"center\") position = \"50% 50%\";\r\n const [left, top = \"50%\"] = position.split(\" \");\r\n return { left: parsePosAsPx(left, bbox.width, object.width), top: parsePosAsPx(top, bbox.height, object.height), rawLeft: left, rawTop: top };\r\n};\r\n\r\nexport function getSizeTier(container: HTMLElement, { offsetWidth: w, offsetHeight: h } = container) {\r\n return { width: w, height: h, tier: h <= 130 ? \"xxxxx\" : w <= 280 ? \"xxxx\" : w <= 380 ? \"xxx\" : w <= 480 ? \"xx\" : w <= 630 ? \"x\" : \"\" };\r\n}\r\n\r\n// Media Element Cloning\r\nexport function cloneMedia<M extends HTMLMediaElement>(v: M): M {\r\n const newV = v.cloneNode(true) as M;\r\n newV.tmgPlayer = v.tmgPlayer;\r\n v.parentElement?.replaceChild(newV, v);\r\n if (v.currentTime) newV.currentTime = v.currentTime;\r\n if (v.playbackRate !== 1) newV.playbackRate = v.playbackRate;\r\n if (v.defaultPlaybackRate !== 1) newV.defaultPlaybackRate = v.defaultPlaybackRate;\r\n if (v.volume !== 1) newV.volume = v.volume;\r\n if (v.muted) newV.muted = true;\r\n if (v.defaultMuted) newV.defaultMuted = true;\r\n if (v.srcObject) newV.srcObject = v.srcObject;\r\n if (v.autoplay) newV.autoplay = true;\r\n if (v.loop) newV.loop = true;\r\n if (v.controls) newV.controls = true;\r\n if (v.crossOrigin) newV.crossOrigin = v.crossOrigin;\r\n if (v.playsInline) newV.playsInline = true;\r\n if (v.controlsList?.length) newV.controlsList = v.controlsList;\r\n if (v.disablePictureInPicture) newV.disablePictureInPicture = true;\r\n if (!v.paused && newV.isConnected) newV.play();\r\n return newV;\r\n}\r\n\r\n// Source Management\r\nexport function putSourceDetails(source: any, el: HTMLSourceElement | Record<string, any>): void {\r\n if (source.src) el.src = source.src;\r\n if (source.type) el.type = source.type;\r\n if (source.media) el.media = source.media;\r\n}\r\nexport function addSources(sources: SourceLike | Iterable<SourceLike> = [], medium: HTMLElement): HTMLSourceElement | HTMLSourceElement[] {\r\n const addSource = (source: SourceLike, med: HTMLElement) => {\r\n const sourceEl = createEl(\"source\");\r\n putSourceDetails(source, sourceEl);\r\n return med.appendChild(sourceEl);\r\n };\r\n return isIter(sources) ? Array.from(sources as Iterable<SourceLike>, (source) => addSource(source, medium)) : addSource(sources, medium);\r\n}\r\nexport function getSources(medium: HTMLElement): MediaState[\"sources\"] {\r\n const sources = medium.querySelectorAll<HTMLSourceElement>(\"source\"),\r\n _sources: SourceLike[] = [];\r\n for (const source of sources) {\r\n const obj: Record<string, any> = {};\r\n putSourceDetails(source, obj);\r\n _sources.push(obj as SourceLike);\r\n }\r\n return _sources as MediaState[\"sources\"];\r\n}\r\nexport const removeSources = (medium: HTMLElement, sources = medium?.querySelectorAll(\"source\")): void => {\r\n if (sources) for (const source of sources) source.remove();\r\n};\r\nexport function isSameSources(a?: Sources, b?: Sources): boolean {\r\n if (!a || !b || a.length !== b.length) return false;\r\n const set = new Set(b.map((s) => `${cleanURL(s.src)}|${s.type}|${s.media}`));\r\n return a.every((s) => set.has(`${cleanURL(s.src)}|${s.type}|${s.media}`));\r\n}\r\n\r\n// Track Management\r\nexport type TrackType = \"Audio\" | \"Video\" | \"Text\";\r\nexport function putTrackDetails(track: any, el: HTMLTrackElement | Record<string, any>): void {\r\n if (track.id) el.id = track.id;\r\n if (track.kind) el.kind = track.kind;\r\n if (track.label) el.label = track.label;\r\n if (track.srclang) el.srclang = track.srclang;\r\n if (track.src) el.src = track.src;\r\n if (track.default) el.default = track.default;\r\n}\r\nexport function addTracks(tracks: TrackLike | Iterable<TrackLike> = [], medium: HTMLElement): HTMLTrackElement | HTMLTrackElement[] {\r\n const addTrack = (track: TrackLike, med: HTMLElement) => {\r\n const trackEl = createEl(\"track\");\r\n return putTrackDetails(track, trackEl), med.appendChild(trackEl);\r\n };\r\n return isIter(tracks) ? Array.from(tracks as Iterable<TrackLike>, (track) => addTrack(track, medium)) : addTrack(tracks, medium);\r\n}\r\nexport function getTracks(medium: HTMLElement, cues = false): TrackLike[] {\r\n const tracks = medium.querySelectorAll<HTMLTrackElement>(!cues ? \"track\" : \"track:is([kind='captions'], [kind='subtitles'])\"),\r\n _tracks: TrackLike[] = [];\r\n for (const track of tracks) {\r\n const obj: Record<string, any> = {};\r\n putTrackDetails(track, obj), _tracks.push(obj as TrackLike);\r\n }\r\n return _tracks;\r\n}\r\nexport const removeTracks = (medium: HTMLElement, tracks = medium?.querySelectorAll(\"track\")): void => {\r\n if (tracks) for (const track of tracks) if (track.kind === \"subtitles\" || track.kind === \"captions\") track.remove();\r\n};\r\nexport function isSameTracks(a?: Tracks, b?: Tracks): boolean {\r\n if (!a || !b || a.length !== b.length) return false;\r\n const set = new Set(b.map((t) => `${cleanURL(t.src)}|${t.kind}|${t.label}|${t.srclang}|${t.default}`));\r\n return a.every((t) => set.has(`${cleanURL(t.src)}|${t.kind}|${t.label}|${t.srclang}|${t.default}`));\r\n}\r\nconst isTrack = (type: TrackType, term: any) => `${type}Track` in window && term instanceof (window as any)[`${type}Track`];\r\nexport function getTrackIdx(medium: HTMLMediaElement, type: TrackType = \"Text\", term: any = \"active\", list = (medium as any)[`${type.toLowerCase()}Tracks`]): number {\r\n if (isNum(term)) return term;\r\n if (list && term === \"active\") {\r\n if (type === \"Text\") for (let i = 0; i < +list.length; i++) if (list[i].mode === \"showing\") return i;\r\n if (type === \"Audio\") for (let i = 0; i < +list.length; i++) if (list[i].enabled) return i;\r\n if (type === \"Video\") return list.selectedIndex ?? -1;\r\n }\r\n if (list && isTrack(type, term)) return Array.prototype.indexOf.call(list, term);\r\n if (list && isStr(term)) {\r\n term = term.toLowerCase();\r\n return !isNaN(+term) ? +term : Array.prototype.findIndex.call(list, (t: any) => t.id.toLowerCase() === term || t.label.toLowerCase() === term || t.srclang?.toLowerCase() === term || t.language.toLowerCase() === term || isSameURL(t.src, term));\r\n }\r\n return -1;\r\n}\r\nexport function setCurrentTrack(medium: HTMLMediaElement, type: TrackType = \"Text\", term: any, flush = false, list = (medium as any)[`${type.toLowerCase()}Tracks`]): void {\r\n const idx = getTrackIdx(medium, type, term, list);\r\n if (list && type !== \"Video\") for (let i = 0; i < list.length; i++) type === \"Text\" ? (list[i].mode = i === idx ? \"showing\" : flush ? \"disabled\" : \"hidden\") : (list[i].enabled = i === idx);\r\n else list?.[idx] && (list[idx].selected = true);\r\n}\r\n\r\n// Capbailities\r\nexport const DUMMY_VID = createEl(\"video\");\r\nexport const DUMMY_AUD = createEl(\"audio\");\r\nexport function canUseVolume(type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean {\r\n try {\r\n const prev = dummy.volume;\r\n dummy.volume = 0.5;\r\n const works = dummy.volume === 0.5;\r\n return (dummy.volume = prev), works;\r\n } catch {\r\n return false;\r\n }\r\n}\r\nexport const canMuteVolume = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"muted\" in dummy;\r\nexport function canUseRate(type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean {\r\n try {\r\n const prev = dummy.playbackRate;\r\n dummy.playbackRate = 0.5;\r\n const works = dummy.playbackRate === 0.5;\r\n return (dummy.playbackRate = prev), works;\r\n } catch {\r\n return false;\r\n }\r\n}\r\nexport const canTextTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"textTracks\" in dummy;\r\nexport const canVideoTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"videoTracks\" in dummy;\r\nexport const canAudioTracks = (type: MediaType = \"video\", dummy = type === \"video\" ? DUMMY_VID : DUMMY_AUD): boolean => !!dummy && \"audioTracks\" in dummy;\r\n\r\n// ============ Caption/Subtitle Utilities ============\r\nexport const stripTags = (text: string): string => text.replace(/<(\\/)?([a-z0-9.:]+)([^>]*)>/gi, \"\");\r\n\r\nexport function srtToVtt(srt: string, vttLines: string[] = [\"WEBVTT\", \"\"]): string {\r\n const input = srt.replace(/\\r\\n?/g, \"\\n\").trim();\r\n for (const block of input.split(/\\n{2,}/)) {\r\n const lines = block.split(\"\\n\");\r\n let idx = /^\\d+$/.test(lines[0].trim()) ? 1 : 0;\r\n const timing = lines[idx]?.trim().replace(/\\s+/g, \" \"),\r\n m = timing?.match(/(\\d{1,2}:\\d{2}:\\d{2})(?:[.,](\\d{1,3}))?\\s*-->\\s*(\\d{1,2}:\\d{2}:\\d{2})(?:[.,](\\d{1,3}))?/);\r\n if (!m) continue;\r\n const [, startHms, startMsRaw = \"0\", endHms, endMsRaw = \"0\"] = m,\r\n to3 = (ms: string) => ms.padEnd(3, \"0\").slice(0, 3);\r\n vttLines.push(startHms + \".\" + to3(startMsRaw) + \" --> \" + endHms + \".\" + to3(endMsRaw));\r\n for (let i = idx + 1; i < lines.length; i++) vttLines.push(lines[i]);\r\n vttLines.push(\"\");\r\n }\r\n return vttLines.join(\"\\n\");\r\n}\r\n\r\nexport function parseVttText(text: string): string {\r\n const state = { tag: /<(\\/)?([a-z0-9.:]+)([^>]*)>/gi, o: \"\", l: 0, p: null as string | null, c: \"\" },\r\n esc = (s: string) => s.replace(/[&<>\"']/g, (c) => ({ \"&\": \"&\", \"<\": \"<\", \">\": \">\", '\"': \""\", \"'\": \"'\" }[c]!));\r\n let m: RegExpExecArray | null;\r\n while ((m = state.tag.exec(text))) {\r\n const chunk = text.slice(state.l, m.index);\r\n if (chunk) state.c += esc(chunk);\r\n const [_, cls, tag_n, rest] = m,\r\n low = tag_n.toLowerCase();\r\n if (/^[0-9]/.test(tag_n)) {\r\n state.o += state.p ? `<span data-part=\"timed\" data-time=\"${state.p}\">${state.c}</span>` : state.c;\r\n state.p = tag_n;\r\n state.c = \"\";\r\n } else if (cls) state.c += [\"c\", \"v\", \"lang\"].includes(low) ? \"</span>\" : `</${low}>`;\r\n else if ([\"b\", \"i\", \"u\", \"ruby\", \"rt\"].includes(low)) state.c += `<${low}>`;\r\n else if (low === \"c\") state.c += `<span class=\"vtt-c ${rest.replace(/\\.([a-z0-9_-]+)/gi, \"$1 \").trim()}\">`;\r\n else if (low === \"v\") state.c += `<span data-part=\"voice\"${rest.trim() ? ` title=\"${esc(rest.trim())}\"` : \"\"}>`;\r\n else if (low === \"lang\") state.c += `<span lang=\"${esc(rest.trim())}\">`;\r\n state.l = state.tag.lastIndex;\r\n }\r\n const lChunk = text.slice(state.l);\r\n if (lChunk) state.c += esc(lChunk);\r\n return state.o + (state.p ? `<span data-part=\"timed\" data-time=\"${state.p}\">${state.c}</span>` : state.c);\r\n}\r\n\r\nexport function formatVttLine(p: string, maxChars: number): string[] {\r\n const state = { tokens: p.match(/<[^>]+>|\\S+/g) || [], stack: [] as string[], parts: [] as string[], line: \"\", len: 0, openStr: \"\", closeStr: \"\", timeTag: \"\", lastWasTag: false },\r\n updateTags = () => ((state.openStr = state.stack.map((n) => `<${n}>`).join(\"\")), (state.closeStr = state.stack.reduceRight((a, n) => a + `</${n}>`, \"\"))),\r\n flush = () => state.line && (state.parts.push(state.line + state.closeStr), (state.line = (state.timeTag || \"\") + state.openStr), (state.len = 0), (state.lastWasTag = true));\r\n for (const tok of state.tokens) {\r\n const tag = tok[0] === \"<\",\r\n closeTag = tag && tok[1] === \"/\";\r\n if (tag) {\r\n if (state.line && !state.lastWasTag && !closeTag) state.line += \" \";\r\n const m = tok.match(/^<\\/?\\s*([a-z0-9._:-]+)/i),\r\n n = m?.[1] || \"\",\r\n timing = /^\\d/.test(n);\r\n if (timing) {\r\n (state.timeTag = tok), (state.line += tok), (state.lastWasTag = true);\r\n continue;\r\n }\r\n if (!closeTag && !tok.endsWith(\"/>\") && n) state.stack.push(n), updateTags();\r\n if (closeTag && state.stack.length) state.stack.pop(), updateTags();\r\n (state.lastWasTag = true), (state.line += tok);\r\n continue;\r\n }\r\n const len = stripTags(tok).length,\r\n needSpace = state.line && !state.lastWasTag;\r\n if (state.len + (needSpace ? 1 : 0) + len > maxChars) flush();\r\n if (needSpace) (state.line += \" \"), (state.len += 1);\r\n (state.line += tok), (state.len += len), (state.lastWasTag = false);\r\n }\r\n return flush(), state.parts;\r\n}\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { GesturePlug } from \"@plugs/settings/gesture\";\nimport { capitalize } from \"@utils/str\";\nimport { getBooleanMediaProps } from \"@utils/media\";\nimport { UITuple } from \"@defs/UIOptions\";\nimport { getBoolOrStr } from \"@utils/obj\";\n\nconst getClickOptions = (plug: GesturePlug) => [{ value: false, display: \"None\" }, ...getBooleanMediaProps(plug.media).map((k) => ({ value: k, display: capitalize(k.replace(/([A-Z])/g, \" $1\").toLowerCase()) }))];\n\nexport const getSettingsGestureMenu = (plug: GesturePlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"gestures\",\n label: \"Gestures\",\n widget: \"group\",\n 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\"),\n tipHTML: \"Configure touch, swipe, and click interactions\",\n 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\"],\n items: [\n {\n id: \"gestureClick\",\n label: \"Single click\",\n widget: \"select\",\n getValue: () => (plug.config.click === false ? \"None\" : capitalize(String(plug.config.click))),\n getOptions: () => getClickOptions(plug) as UITuple<string>[],\n onChange: (val: string) => (plug.config.click = getBoolOrStr(val) as typeof plug.config.click),\n configPaths: [\"settings.gesture.click\"],\n tipHTML: \"Action to perform when tapping once on the video player\",\n },\n {\n id: \"gestureDblClick\",\n label: \"Double click\",\n widget: \"select\",\n getValue: () => (plug.config.dblClick === false ? \"None\" : capitalize(String(plug.config.dblClick))),\n getOptions: () => getClickOptions(plug) as UITuple<string>[],\n onChange: (val: string) => (plug.config.dblClick = getBoolOrStr(val) as typeof plug.config.dblClick),\n configPaths: [\"settings.gesture.dblClick\"],\n tipHTML: \"Action to perform when double tapping on the video player\",\n },\n {\n id: \"gestureTouchGroup\",\n label: \"Touch gestures\",\n widget: \"group\",\n getValue: () => (plug.config.touch.volume || plug.config.touch.brightness || plug.config.touch.timeline ? \"On\" : \"Off\"),\n items: [\n {\n id: \"gestureTouchVolume\",\n label: \"Volume swipe\",\n widget: \"toggle\",\n getValue: () => (plug.config.touch.volume ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.touch.volume = val),\n configPaths: [\"settings.gesture.touch.volume\"],\n title: \"Swipe up or down on the right side of the screen to adjust volume\",\n },\n {\n id: \"gestureTouchBrightness\",\n label: \"Brightness swipe\",\n widget: \"toggle\",\n getValue: () => (plug.config.touch.brightness ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.touch.brightness = val),\n configPaths: [\"settings.gesture.touch.brightness\"],\n title: \"Swipe up or down on the left side of the screen to adjust brightness\",\n },\n {\n id: \"gestureTouchTimeline\",\n label: \"Seek swipe\",\n widget: \"toggle\",\n getValue: () => (plug.config.touch.timeline ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.touch.timeline = val),\n configPaths: [\"settings.gesture.touch.timeline\"],\n title: \"Swipe left or right anywhere on the screen to seek.\",\n },\n {\n id: \"gestureTouchThreshold\",\n label: \"Swipe Threshold\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.config.touch.threshold}ms`,\n onChange: (val: Record<string, any>) => (plug.config.touch.threshold = val[\"ms\"]),\n configPaths: [\"settings.gesture.touch.threshold\"],\n },\n {\n id: \"gestureTouchSliderTimeout\",\n label: \"Slider timeout\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.config.touch.sliderTimeout}ms`,\n onChange: (val: Record<string, any>) => (plug.config.touch.sliderTimeout = val[\"ms\"]),\n configPaths: [\"settings.gesture.touch.sliderTimeout\"],\n },\n {\n id: \"gestureTouchAxesRatio\",\n label: \"Axes ratio\",\n widget: \"range\",\n getValue: () => String(plug.config.touch.axesRatio),\n getRange: () => ({ min: 0.1, max: 10, step: 0.25, formatTooltip: (v: number) => v.toFixed(1) }),\n onChange: (val: number) => (plug.config.touch.axesRatio = val),\n configPaths: [\"settings.gesture.touch.axesRatio\"],\n tipHTML: \"Multiplier for vertical vs horizontal swipe dominance\",\n },\n {\n id: \"gestureTouchInset\",\n label: \"Edge inset\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.touch.inset)}px`,\n getRange: () => ({ min: 0, max: 100, step: 5, formatTooltip: (v: number) => `${Math.round(v)}px` }),\n onChange: (val: number) => (plug.config.touch.inset = val),\n configPaths: [\"settings.gesture.touch.inset\"],\n tipHTML: \"Distance from the screen edges to ignore swipes (prevents accidental gestures)\",\n },\n ],\n },\n {\n id: \"gestureWheelGroup\",\n label: \"Scroll wheel\",\n widget: \"group\",\n getValue: () => (plug.config.wheel.volume || plug.config.wheel.brightness || plug.config.wheel.timeline ? \"On\" : \"Off\"),\n items: [\n {\n id: \"gestureWheelVolume\",\n label: \"Volume scroll\",\n widget: \"toggle\",\n getValue: () => (plug.config.wheel.volume ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.wheel.volume = val),\n configPaths: [\"settings.gesture.wheel.volume\"],\n },\n {\n id: \"gestureWheelBrightness\",\n label: \"Brightness scroll\",\n widget: \"toggle\",\n getValue: () => (plug.config.wheel.brightness ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.wheel.brightness = val),\n configPaths: [\"settings.gesture.wheel.brightness\"],\n },\n {\n id: \"gestureWheelTimeline\",\n label: \"Seek scroll\",\n widget: \"toggle\",\n getValue: () => (plug.config.wheel.timeline ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.wheel.timeline = val),\n configPaths: [\"settings.gesture.wheel.timeline\"],\n },\n {\n id: \"gestureWheelTimeout\",\n label: \"Wheel timeout\",\n widget: \"input\",\n inputs: [{ label: \"ms\", placeholder: \"2500\", type: \"number\", min: \"0\", value: () => plug.config.wheel.timeout }],\n getValue: () => `${plug.config.wheel.timeout}ms`,\n onChange: (val: Record<string, any>) => (plug.config.wheel.timeout = val[\"ms\"]),\n configPaths: [\"settings.gesture.wheel.timeout\"],\n },\n {\n id: \"gestureWheelXRatio\",\n label: \"Horizontal sensitivity\",\n widget: \"range\",\n getValue: () => String(plug.config.wheel.xRatio),\n getRange: () => ({ min: 1, max: 50, step: 1 }),\n onChange: (val: number) => (plug.config.wheel.xRatio = val),\n configPaths: [\"settings.gesture.wheel.xRatio\"],\n },\n {\n id: \"gestureWheelYRatio\",\n label: \"Vertical sensitivity\",\n widget: \"range\",\n getValue: () => String(plug.config.wheel.yRatio),\n getRange: () => ({ min: 1, max: 50, step: 1 }),\n onChange: (val: number) => (plug.config.wheel.yRatio = val),\n configPaths: [\"settings.gesture.wheel.yRatio\"],\n },\n ],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.gesture\": typeof getSettingsGestureMenu;\n }\n}\n","import { DeepPartial } from \"sia-reactor\";\r\nimport { KeysConfig } from \"./types\";\r\nimport { KEYS_BLOCKS } from \"@t007/utils\";\r\n\r\nexport const KEYS_WHITELIST = [\"Space\", \"Enter\", \"Escape\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\n\r\nexport const KEY_SHORTCUT_MOD_ACTIONS = [\"skip\", \"volume\", \"brightness\", \"playbackRate\", \"captionsFontSize\"] as const; // numerical values\r\n\r\nexport const KEYS_BUILD: DeepPartial<KeysConfig> = {\r\n disabled: false,\r\n strictMatches: false,\r\n overrides: [\"Space\", \"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"],\r\n shortcuts: {\r\n prev: \"Shift+p\",\r\n next: \"Shift+n\",\r\n playPause: \"k\",\r\n mute: \"m\",\r\n dark: \"d\",\r\n skipBwd: \"j\",\r\n skipFwd: \"l\",\r\n stepFwd: \".\",\r\n stepBwd: \",\",\r\n volumeUp: \"ArrowUp\",\r\n volumeDown: \"ArrowDown\",\r\n brightnessUp: \"y\",\r\n brightnessDown: \"h\",\r\n playbackRateUp: \">\",\r\n playbackRateDown: \"<\",\r\n timeFormat: \"z\",\r\n timeMode: \"q\",\r\n capture: \"s\",\r\n objectFit: \"a\",\r\n pictureInPicture: \"i\",\r\n theater: \"t\",\r\n fullscreen: \"f\",\r\n captions: \"c\",\r\n captionsFontSizeUp: [\"+\", \"=\"],\r\n captionsFontSizeDown: [\"-\", \"_\"],\r\n captionsFontFamily: \"u\",\r\n captionsFontWeight: \"g\",\r\n captionsFontVariant: \"v\",\r\n captionsFontOpacity: \"o\",\r\n captionsBackgroundOpacity: \"b\",\r\n captionsWindowOpacity: \"w\",\r\n captionsCharacterEdgeStyle: \"e\",\r\n captionsTextAlignment: \"x\",\r\n settings: \"?\",\r\n cast: \"Shift+r\",\r\n airplay: \"Shift+r\"\r\n },\r\n blocks: KEYS_BLOCKS,\r\n whitelist: KEYS_WHITELIST,\r\n mods: {\r\n disabled: false,\r\n skip: {\r\n ctrl: 60,\r\n shift: 10,\r\n },\r\n volume: {\r\n ctrl: 50,\r\n shift: 10,\r\n },\r\n brightness: {\r\n ctrl: 50,\r\n shift: 10,\r\n },\r\n playbackRate: {\r\n ctrl: 1,\r\n },\r\n captionsFontSize: {},\r\n },\r\n};\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { KeysPlug } from \"@plugs/settings/keys\";\nimport { capitalize } from \"@utils/str\";\nimport { KEY_SHORTCUT_MOD_ACTIONS } from \"@plugs/settings/keys/build\";\nimport type { KeysConfig } from \"@plugs/settings/keys/types\";\n\nconst fmt = (action: string) => capitalize(action.replace(/([A-Z])/g, \" $1\"));\nexport const getSettingsKeysMenu = (plug: KeysPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"keyboard\",\n label: \"Keyboard\",\n widget: \"group\",\n getValue: () => (plug.config.disabled ? \"Off\" : \"On\"),\n tipHTML: \"Configure keyboard shortcuts and modifier keys\",\n configPaths: [\"settings.keys.disabled\"],\n items: [\n {\n id: \"keyboardDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.disabled = val),\n configPaths: [\"settings.keys.disabled\"],\n },\n {\n id: \"keyboardStrictMatches\",\n label: \"Strict Matches\",\n widget: \"toggle\",\n getValue: () => (plug.config.strictMatches ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.strictMatches = val),\n configPaths: [\"settings.keys.strictMatches\"],\n title: \"Require exact key combo matches for actions (e.g., Shift+f will not trigger the action for f).\",\n },\n {\n id: \"keyboardMods\",\n label: \"Modifier keys\",\n widget: \"group\",\n getValue: () => (plug.config.mods.disabled ? \"Off\" : \"On\"),\n items: [\n {\n id: \"keyboardModsDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.mods.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.mods.disabled = val),\n configPaths: [\"settings.keys.mods.disabled\"],\n 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)\",\n },\n ...KEY_SHORTCUT_MOD_ACTIONS.map((mod) => ({\n id: `keyboardMod-${mod}`,\n label: `${fmt(mod)} Modifier`,\n widget: \"group\" as const,\n getValue: () => \"\",\n items: [\n {\n id: `keyboardMod-${mod}-ctrl`,\n label: \"Ctrl amount\",\n widget: \"input\" as const,\n inputs: [{ label: \"Amount\", type: \"number\", min: \"0\", step: \"any\" as const, value: () => plug.config.mods[mod].ctrl }],\n getValue: () => String(plug.config.mods[mod].ctrl),\n onChange: (val: any) => (plug.config.mods[mod].ctrl = val[\"Amount\"]),\n configPaths: [`settings.keys.mods.${mod}` as const],\n },\n {\n id: `keyboardMod-${mod}-shift`,\n label: \"Shift amount\",\n widget: \"input\" as const,\n inputs: [{ label: \"Amount\", type: \"number\", min: \"0\", step: \"any\" as const, value: () => plug.config.mods[mod].shift }],\n getValue: () => String(plug.config.mods[mod].shift),\n onChange: (val: any) => (plug.config.mods[mod].shift = val[\"Amount\"]),\n configPaths: [`settings.keys.mods.${mod}` as const],\n },\n ],\n })),\n ],\n },\n {\n id: \"keyboardLists\",\n label: \"Lists & Overrides\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"keyboardOverrides\",\n label: \"Overrides\",\n widget: \"input\" as const,\n inputs: [{ label: \"Keys\", placeholder: \"Space, ArrowUp\", helperText: { info: \"Comma-separated keys that override default browser behavior\" }, value: () => plug.config.overrides.join(\", \") }],\n getValue: () => plug.config.overrides.join(\", \"),\n // prettier-ignore\n onChange: (val: any) => (plug.config.overrides = val[\"Keys\"].split(\",\").map((s: string) => s.trim()).filter(Boolean)),\n configPaths: [\"settings.keys.overrides\"],\n },\n {\n id: \"keyboardBlocks\",\n label: \"Blocks\",\n widget: \"input\" as const,\n inputs: [{ label: \"Keys\", placeholder: \"Space, ArrowUp\", helperText: { info: \"Comma-separated keys to completely block\" }, value: () => plug.config.blocks.join(\", \") }],\n getValue: () => plug.config.blocks.join(\", \"),\n // prettier-ignore\n onChange: (val: any) => (plug.config.blocks = val[\"Keys\"].split(\",\").map((s: string) => s.trim()).filter(Boolean)),\n configPaths: [\"settings.keys.blocks\"],\n },\n {\n id: \"keyboardWhitelist\",\n label: \"Whitelist\",\n widget: \"input\" as const,\n inputs: [{ label: \"Keys\", placeholder: \"Space, ArrowUp\", helperText: { info: \"Comma-separated keys that are explicitly allowed\" }, value: () => plug.config.whitelist.join(\", \") }],\n getValue: () => plug.config.whitelist.join(\", \"),\n // prettier-ignore\n onChange: (val: any) => (plug.config.whitelist = val[\"Keys\"].split(\",\").map((s: string) => s.trim()).filter(Boolean)),\n configPaths: [\"settings.keys.whitelist\"],\n },\n ],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.keys\": typeof getSettingsKeysMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { LockedPlug } from \"@plugs/settings/locked\";\n\nexport const getSettingsLockedMenu = (plug: LockedPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"locked\",\n label: \"Lockable\",\n widget: \"group\",\n getValue: () => (plug.config.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.locked.disabled\"],\n tipHTML: \"Configure whether the player can be locked to prevent accidental interactions.\",\n items: [\n {\n id: \"lockedDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.disabled = val),\n configPaths: [\"settings.locked.disabled\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.locked\": typeof getSettingsLockedMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport { formatMediaTime } from \"@utils/time\";\nimport { capitalize } from \"@utils/str\";\nimport { isStr, isNum, getUniqueOpts } from \"@utils/obj\";\nimport type { MetadataPlug } from \"@plugs/settings/metadata\";\nimport { UITuple } from \"@defs/UIOptions\";\nimport { silence } from \"sia-reactor/modules\";\n\nexport const getSettingsMetadataMenu = (plug: MetadataPlug): SettingsMenuItem[] => [\n {\n id: \"loop\",\n label: \"Loop\",\n icon: \"loop\",\n widget: \"toggle\",\n getValue: () => (plug.media.state.loop ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.media.intent.loop = val),\n mediaPaths: [\"state.loop\"],\n },\n {\n id: \"quality\",\n label: \"Quality\",\n icon: \"quality\",\n widget: \"select\",\n feature: \"levels\",\n getValue() {\n const list = plug.media.status.levels;\n if (!list || !list.length || plug.media.state.currentLevel === -1) return \"\";\n const opts = this.getOptions!() as UITuple<number>[];\n return plug.media.state.autoLevel ? opts[0].display : opts.find((o) => o.value === plug.media.state.currentLevel)?.display || \"\";\n },\n getOptions() {\n const list = plug.media.status.levels;\n if (!list || !list.length) return [{ value: -1, display: \"Auto\" }];\n const getOpt = (i: number, t: any = list[i]) => {\n const label = t.label || (t.height ? `${t.height}p` : \"\") || (isStr(t) ? capitalize(t) : \"Unknown\");\n return { value: i, display: label, infoText: t.bandwidth || t.bitrate ? `${Math.round((t.bandwidth || t.bitrate) / 1000)} kbps` : \"\" };\n };\n const opts = getUniqueOpts(Array.from(list).reduce((acc: any[], t: any, i) => (isStr(t) && t.toLowerCase() === \"auto\" ? acc : acc.push(getOpt(i)), acc), [])).reverse(),\n { display, infoText } = plug.media.state.autoLevel ? getOpt(plug.media.state.currentLevel) : { display: \"Unknown\", infoText: \"\" };\n return opts.push({ value: -1, display: `Auto${display !== \"Unknown\" ? ` (${display})` : \"\"}`, infoText }), opts;\n },\n getDisabled: () => !plug.media.status.levels.length,\n onChange: (val: number) => (val === -1 ? (plug.media.intent.autoLevel = true) : (plug.media.intent.currentLevel = val)),\n mediaPaths: [\"status.levels\", \"state.currentLevel\", \"state.autoLevel\"],\n },\n {\n id: \"audioTracks\",\n label: \"Audio track\",\n icon: \"audiotrack\",\n widget: \"select\",\n feature: \"audioTracks\",\n getValue() {\n const list = plug.media.status.audioTracks;\n if (!list || !list.length || plug.media.state.currentAudioTrack === -1) return \"\";\n const track = list[plug.media.state.currentAudioTrack];\n return track?.label || track?.language || `Track ${plug.media.state.currentAudioTrack + 1}`;\n },\n getOptions() {\n const list = plug.media.status.audioTracks;\n return !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));\n },\n onChange: (val: number) => (plug.media.intent.currentAudioTrack = val),\n mediaPaths: [\"status.audioTracks\", \"state.currentAudioTrack\"],\n },\n {\n id: \"videoTracks\",\n label: \"Video track\",\n icon: \"videotrack\",\n widget: \"select\",\n feature: \"videoTracks\",\n getValue() {\n const list = plug.media.status.videoTracks;\n if (!list || !list.length || plug.media.state.currentVideoTrack === -1) return \"\";\n const track = list[plug.media.state.currentVideoTrack];\n return track?.label || track?.language || `Track ${plug.media.state.currentVideoTrack + 1}`;\n },\n getOptions() {\n const list = plug.media.status.videoTracks;\n return !list || !list.length ? [] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));\n },\n onChange: (val: number) => (plug.media.intent.currentVideoTrack = val),\n mediaPaths: [\"status.videoTracks\", \"state.currentVideoTrack\"],\n },\n {\n id: \"captions\",\n label: \"Captions\",\n icon: \"captions\",\n widget: \"select\",\n feature: \"textTracks\",\n tipHTML: \"Select a caption track\",\n getValue() {\n const list = plug.media.status.textTracks;\n 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}`;\n },\n getOptions() {\n const list = plug.media.status.textTracks;\n return !list || !list.length ? [{ value: -1, display: \"Off\" }] : Array.from(list).map((t, i) => ({ value: i, display: t.label || t.language || `Track ${i + 1}` }));\n },\n onChange: (val: number) => (plug.media.intent.currentTextTrack = val),\n mediaPaths: [\"status.textTracks\", \"state.currentTextTrack\", \"features.textTracks\"],\n },\n {\n id: \"chapters\",\n label: \"Chapters\",\n icon: \"chapters\",\n widget: \"select\",\n feature: \"currentChapter\",\n tipHTML: \"Navigate through video chapters\",\n getValue() {\n const list = plug.media.settings.metadata.chapterInfo;\n if (!list || !list.length || plug.media.state.currentChapter === -1) return \"\";\n const chapter = list[plug.media.state.currentChapter];\n return chapter?.title || `Chapter ${plug.media.state.currentChapter + 1}`;\n },\n getOptions() {\n const list = plug.media.settings.metadata.chapterInfo;\n return !list || !list.length ? [] : list.map((c: any, i: number) => ({ value: i, display: c.title || `Chapter ${i + 1}`, infoText: isNum(c.startTime) ? formatMediaTime({ time: c.startTime }) : undefined }));\n },\n onChange: (val: number) => silence(() => (plug.media.intent.currentChapter = val)),\n mediaPaths: [\"settings.metadata.chapterInfo\", \"state.currentChapter\", \"features.currentChapter\"],\n },\n];\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.metadata\": typeof getSettingsMetadataMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport { type ModesPlug } from \"@plugs/settings/modes\";\nimport { getUIOpt, getBoolOrStr } from \"@utils/obj\";\n\nexport const getSettingsModesMenu = (plug: ModesPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"modes\",\n label: \"Modes\",\n widget: \"group\",\n getValue: () => (plug.config.fullscreen.disabled && plug.config.pictureInPicture.disabled && plug.config.theater.disabled && plug.config.miniplayer.disabled ? \"Off\" : \"On\"),\n tipHTML: \"Configure fullscreen, picture-in-picture, and display modes\",\n configPaths: [\"settings.modes.fullscreen.disabled\", \"settings.modes.pictureInPicture.disabled\", \"settings.modes.theater.disabled\", \"settings.modes.miniplayer.disabled\"],\n items: [\n {\n id: \"modesFullscreen\",\n label: \"Fullscreen\",\n widget: \"group\",\n getValue: () => (plug.config.fullscreen.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.modes.fullscreen.disabled\"],\n items: [\n {\n id: \"modesFullscreenDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.fullscreen.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.fullscreen.disabled = val),\n configPaths: [\"settings.modes.fullscreen.disabled\"],\n },\n {\n id: \"modesFullscreenOrientationLock\",\n label: \"Orientation lock\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.fullscreen.orientationLock.options, plug.config.fullscreen.orientationLock.value),\n getOptions: () => plug.config.fullscreen.orientationLock.options!,\n onChange: (val: string) => (plug.config.fullscreen.orientationLock.value = getBoolOrStr(val) as typeof plug.config.fullscreen.orientationLock.value),\n configPaths: [\"settings.modes.fullscreen.orientationLock.value\"],\n tipHTML: \"Lock the device orientation to a specific layout when entering fullscreen\",\n },\n {\n id: \"modesFullscreenOnRotate\",\n label: \"Auto-fullscreen on rotate\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.fullscreen.onRotate.options, plug.config.fullscreen.onRotate.value),\n getOptions: () => plug.config.fullscreen.onRotate.options!,\n onChange: (val: string) => (plug.config.fullscreen.onRotate.value = getBoolOrStr(val) as typeof plug.config.fullscreen.onRotate.value),\n configPaths: [\"settings.modes.fullscreen.onRotate.value\"],\n tipHTML: \"Automatically enter fullscreen mode when the device is rotated\",\n },\n ],\n },\n {\n id: \"modesPip\",\n label: \"Picture in picture\",\n widget: \"group\",\n getValue: () => (plug.config.pictureInPicture.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.modes.pictureInPicture.disabled\"],\n items: [\n {\n id: \"modesPipDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.pictureInPicture.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pictureInPicture.disabled = val),\n configPaths: [\"settings.modes.pictureInPicture.disabled\"],\n },\n {\n id: \"modesPipFloating\",\n label: \"Floating player API\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"modesPipFloatingDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.pictureInPicture.floatingPlayer.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pictureInPicture.floatingPlayer.disabled = val),\n configPaths: [\"settings.modes.pictureInPicture.floatingPlayer.disabled\"],\n title: \"The floating player (Document PiP API) allows keeping the custom player UI in the Picture-in-Picture window\",\n },\n {\n id: \"modesPipFloatingWidth\",\n label: \"Initial width\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.pictureInPicture.floatingPlayer.width)}px`,\n getRange: () => ({ min: 100, max: 1200, step: 20, formatTooltip: (v: number) => `${Math.round(v)}px` }),\n onChange: (val: number) => (plug.config.pictureInPicture.floatingPlayer.width = val),\n configPaths: [\"settings.modes.pictureInPicture.floatingPlayer.width\"],\n },\n {\n id: \"modesPipFloatingHeight\",\n label: \"Initial height\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.pictureInPicture.floatingPlayer.height)}px`,\n getRange: () => ({ min: 100, max: 800, step: 20, formatTooltip: (v: number) => `${Math.round(v)}px` }),\n onChange: (val: number) => (plug.config.pictureInPicture.floatingPlayer.height = val),\n configPaths: [\"settings.modes.pictureInPicture.floatingPlayer.height\"],\n },\n {\n id: \"modesPipFloatingDisallowReturn\",\n label: \"Disallow return to opener\",\n widget: \"toggle\",\n getValue: () => (plug.config.pictureInPicture.floatingPlayer.disallowReturnToOpener ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pictureInPicture.floatingPlayer.disallowReturnToOpener = val),\n configPaths: [\"settings.modes.pictureInPicture.floatingPlayer.disallowReturnToOpener\"],\n title: \"Hide the 'Back to Tab' button in the floating window\",\n },\n {\n id: \"modesPipFloatingPreferInitial\",\n label: \"Prefer initial placement\",\n widget: \"toggle\",\n getValue: () => (plug.config.pictureInPicture.floatingPlayer.preferInitialWindowPlacement ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pictureInPicture.floatingPlayer.preferInitialWindowPlacement = val),\n configPaths: [\"settings.modes.pictureInPicture.floatingPlayer.preferInitialWindowPlacement\"],\n title: \"Try to open the floating window in the same screen position it was previously closed\",\n },\n ],\n },\n ],\n },\n {\n id: \"modesTheater\",\n label: \"Theater mode\",\n widget: \"group\",\n getValue: () => (plug.config.theater.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.modes.theater.disabled\"],\n items: [\n {\n id: \"modesTheaterDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.theater.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.theater.disabled = val),\n configPaths: [\"settings.modes.theater.disabled\"],\n },\n ],\n },\n {\n id: \"modesMiniplayer\",\n label: \"Miniplayer\",\n widget: \"group\",\n getValue: () => (plug.config.miniplayer.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.modes.miniplayer.disabled\"],\n items: [\n {\n id: \"modesMiniplayerDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.miniplayer.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.miniplayer.disabled = val),\n configPaths: [\"settings.modes.miniplayer.disabled\"],\n },\n {\n id: \"modesMiniplayerMinWidth\",\n label: \"Min window width\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.miniplayer.minWindowWidth)}px`,\n getRange: () => ({ min: 100, max: 1200, step: 20, formatTooltip: (v: number) => `${Math.round(v)}px` }),\n onChange: (val: number) => (plug.config.miniplayer.minWindowWidth = val),\n configPaths: [\"settings.modes.miniplayer.minWindowWidth\"],\n },\n ],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.modes\": typeof getSettingsModesMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\r\nimport type { ObjectFitPlug } from \"@plugs/settings/objectFit\";\r\n\r\nexport const getSettingsObjectFitMenu = (plug: ObjectFitPlug): SettingsMenuItem => ({\r\n id: \"general\",\r\n label: \"Advanced\",\r\n icon: \"settings\",\r\n widget: \"group\",\r\n getValue: () => \"\",\r\n items: [\r\n {\r\n id: \"layout-objectFit\",\r\n label: \"Video fit\",\r\n widget: \"select\",\r\n feature: \"objectFit\",\r\n getValue: () => plug.toLabel(),\r\n getOptions: () => plug.config.options!,\r\n onChange: (val: string) => (plug.media.intent.objectFit = val as typeof plug.media.intent.objectFit),\r\n mediaPaths: [\"state.objectFit\"],\r\n },\r\n ],\r\n});\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface MenuRegistryMap {\r\n \"settings.objectFit\": typeof getSettingsObjectFitMenu;\r\n }\r\n}\r\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { OverlayPlug } from \"@plugs/settings/overlay\";\nimport { getUIOpt } from \"@utils/obj\";\n\nexport const getSettingsOverlayMenu = (plug: OverlayPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"overlayConfig\",\n label: \"Overlay\",\n widget: \"group\",\n getValue: () => getUIOpt(plug.config.curtain.options, plug.config.curtain.value),\n tipHTML: \"Configure the overlay behavior and appearance\",\n configPaths: [\"settings.overlay.curtain.value\"],\n items: [\n {\n id: \"overlayBehavior\",\n label: \"Hide behaviour\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.behavior.options, plug.config.behavior.value),\n getOptions: () => plug.config.behavior.options!,\n onChange: (val: string) => (plug.config.behavior.value = val as any),\n configPaths: [\"settings.overlay.behavior.value\"],\n },\n {\n id: \"overlayDelay\",\n label: \"Auto-hide delay\",\n widget: \"input\",\n inputs: [{ label: \"ms\", placeholder: \"2500\", type: \"number\", min: \"0\", value: () => plug.config.delay }],\n getValue: () => `${plug.config.delay}ms`,\n onChange: (val: Record<string, any>) => (plug.config.delay = val[\"ms\"]),\n configPaths: [\"settings.overlay.delay\"],\n },\n {\n id: \"overlayCurtain\",\n label: \"Curtain style\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.curtain.options, plug.config.curtain.value),\n getOptions: () => plug.config.curtain.options!,\n onChange: (val: string) => (plug.config.curtain.value = val as any),\n configPaths: [\"settings.overlay.curtain.value\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.overlay\": typeof getSettingsOverlayMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { PersistPlug } from \"@plugs/settings/persist\";\n\nexport const getSettingsPersistMenu = (plug: PersistPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"persist\",\n label: \"Persistence\",\n widget: \"group\",\n tipHTML: \"Configure how settings and playback state are saved to local storage.\",\n getValue: () => \"On\",\n items: [\n {\n id: \"persistThrottle\",\n label: \"Save Throttle\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.module.config.throttle}ms`,\n onChange: (val: Record<string, any>) => (plug.config.throttle = val[\"ms\"]),\n configPaths: [\"settings.persist.throttle\"],\n },\n {\n id: \"persistStrict\",\n label: \"Strict resume\",\n widget: \"toggle\",\n getValue: () => (plug.module.config.strict ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.strict = val),\n configPaths: [\"settings.persist.strict\"],\n title: \"Force save immediately before page closes or reloads for accurate resumption, might restore cleared data.\",\n },\n {\n id: \"persistClearStorage\",\n label: \"Clear Storage\",\n title: \"Clear all saved player settings and preferences.\",\n widget: \"button\",\n getValue: () => \"Clear\",\n onChange: async () => {\n 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\" });\n if (ok) plug.module.clear(), plug.ctlr.plug(\"settings.toasts\")?.toast?.success(\"Storage cleared successfully!\", { tag: \"tmg-persist\", signal: plug.signal });\n },\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.persist\": typeof getSettingsPersistMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { PlaybackRatePlug } from \"@plugs/settings/playbackRate\";\nimport { parseUIOpt } from \"@utils/obj\";\nimport { fanout } from \"sia-reactor/utils\";\nexport const getSettingsPlaybackRateMenu = (plug: PlaybackRatePlug): SettingsMenuItem[] => [\n {\n id: \"playbackRate\",\n label: \"Playback speed\",\n icon: \"playbackrate\",\n widget: \"group\",\n feature: \"playbackRate\",\n tipHTML: \"Configure custom playback speeds\",\n getValue: () => (plug.media.state.playbackRate === 1 ? \"Normal\" : `${plug.media.state.playbackRate}x`),\n items: [\n {\n id: \"playbackRateSlider\",\n label: \"Custom\",\n widget: \"range\",\n inline: true,\n getRange() {\n const divs = [];\n for (let i = Math.ceil(plug.config.min); i <= plug.config.max; i++) divs.push(i);\n return { min: plug.config.min, max: plug.config.max, step: 0.05, formatTooltip: (v: number) => `${v.toFixed(2)}x`, divs };\n },\n getValue: () => plug.media.state.playbackRate.toFixed(2).replace(/\\.?0+$/, \"\") + \"x\",\n onChange: (val: number) => (plug.media.intent.playbackRate = val),\n configPaths: [\"settings.playbackRate.min\", \"settings.playbackRate.max\"],\n mediaPaths: [\"state.playbackRate\"],\n },\n {\n id: \"playbackRateSelect\",\n label: \"Presets\",\n widget: \"select\",\n inline: true,\n getOptions: () =>\n plug.config.options.map((o) => {\n const p = parseUIOpt(o);\n return { value: p.value, display: p.value === 1 ? \"Normal\" : p.display };\n }),\n getValue: () => String(plug.media.state.playbackRate),\n onChange: (val: number) => (plug.media.intent.playbackRate = val),\n mediaPaths: [\"state.playbackRate\"],\n },\n ],\n mediaPaths: [\"state.playbackRate\"],\n },\n {\n id: \"limits\",\n label: \"Limits\",\n icon: \"configure\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"playbackRateLimits\",\n label: \"Playback speed\",\n widget: \"limits\",\n configPaths: [\"settings.playbackRate.min\", \"settings.playbackRate.max\", \"settings.playbackRate.skip\"],\n getValue: () => \"\",\n getLimits: () => [{ name: \"playbackRate\", label: \"Clamp bounds\", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],\n onChange: (val: Record<string, number>) => fanout(plug.config, { min: val.playbackRate_min, max: val.playbackRate_max, skip: val.playbackRate_step }, { skipUndefined: true }),\n },\n ],\n },\n];\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.playbackRate\": typeof getSettingsPlaybackRateMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { PosterPlug } from \"@plugs/settings/poster\";\n\nexport const getSettingsPosterMenu = (plug: PosterPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"poster\",\n label: \"Poster\",\n widget: \"group\",\n tipHTML: \"If strict, the poster hides as soon as playback starts or time changes, and doesn't come back when the video ends.\",\n getValue: () => (plug.settings.poster.strict ? \"Strict\" : \"Normal\"),\n configPaths: [\"settings.poster.strict\"],\n items: [\n {\n id: \"posterStrict\",\n label: \"Strict Mode\",\n widget: \"toggle\",\n getValue: () => (plug.settings.poster.strict ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.settings.poster.strict = val),\n configPaths: [\"settings.poster.strict\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.poster\": typeof getSettingsPosterMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { SettingsViewPlug } from \"@plugs/settings/settingsView\";\n\nexport const getSettingsSettingsViewMenu = (plug: SettingsViewPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"settingsView\",\n label: \"Settings View\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"settingsViewAutoPause\",\n label: \"Auto-pause on open\",\n widget: \"toggle\",\n getValue: () => (plug.config.autoPause ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.autoPause = val),\n configPaths: [\"settings.settingsView.autoPause\"],\n title: \"Automatically pause the media when the settings view is opened\",\n },\n {\n id: \"settingsViewMenu\",\n label: \"Menu\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"settingsViewPreserveStack\",\n label: \"Remember last opened\",\n widget: \"toggle\",\n getValue: () => (plug.config.menu.preserveStack ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.menu.preserveStack = val),\n configPaths: [\"settings.settingsView.menu.preserveStack\"],\n title: \"Remember the last opened menu when re-opening the settings menu\",\n },\n ],\n },\n ],\n },\n // Dev Mode is last in General, registered by settingsView (the last General contributor)\n {\n id: \"generalDevMode\",\n label: \"Developer Mode\",\n widget: \"toggle\",\n getValue: () => (plug.ctlr.config.devMode ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.ctlr.config.devMode = val),\n configPaths: [\"devMode\"],\n tipHTML: \"Enables developer tools, verbose logging, and debug overlays.\",\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.settingsView\": typeof getSettingsSettingsViewMenu;\n }\n}\n","import type { SleepTimerPlug } from \"@plugs/settings/sleepTimer\";\nimport type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport { formatMediaTime } from \"@utils/time\";\n\nexport const getSettingsSleepTimerMenu = (plug: SleepTimerPlug): SettingsMenuItem => {\n const getEndDisplay = () => {\n const timeLeft = plug.media.status.duration - plug.media.state.currentTime;\n return Number.isFinite(timeLeft) && timeLeft > 0 ? `End of video (${Math.floor(timeLeft / 60)} minutes)` : \"End of video\";\n };\n return {\n id: \"sleepTimer\",\n label: \"Sleep timer\",\n icon: \"timer\",\n widget: \"select\",\n getValue: () => (plug.state.ms ? (plug.state.ms === -1 ? getEndDisplay() : formatMediaTime({ time: plug.state.ms / 1000, format: \"long\" })) : \"Off\"),\n getOptions: () => [\n { display: \"Off\", value: 0 },\n { display: \"10 minutes\", value: 10 * 60 * 1000 },\n { display: \"15 minutes\", value: 15 * 60 * 1000 },\n { display: \"20 minutes\", value: 20 * 60 * 1000 },\n { display: \"30 minutes\", value: 30 * 60 * 1000 },\n { display: \"45 minutes\", value: 45 * 60 * 1000 },\n { display: \"60 minutes\", value: 60 * 60 * 1000 },\n { display: getEndDisplay(), value: -1 },\n ],\n onChange: (value: number | string) => plug.setTimer(Number(value)),\n };\n};\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.sleepTimer\": typeof getSettingsSleepTimerMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { TimePlug } from \"@plugs/settings/time\";\nimport { fanout } from \"sia-reactor/utils\";\n\nexport const getSettingsTimeMenu = (plug: TimePlug): SettingsMenuItem => ({\n id: \"limits\",\n label: \"Limits\",\n icon: \"configure\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"timeLimits\",\n label: \"Time\",\n widget: \"limits\",\n configPaths: [\"settings.time.min\", \"settings.time.max\", \"settings.time.skip\", \"settings.time.start\", \"settings.time.end\"],\n getValue: () => \"\",\n getLimits: () => [\n { name: \"time\", label: \"Clamp bounds\", min: plug.config.min, max: plug.config.max, step: plug.config.skip },\n { name: \"time\", label: \"Start & End\", start: plug.config.start ?? 0, end: plug.config.end },\n ],\n onChange: (val: Record<string, number>) => 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 }),\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.time\": typeof getSettingsTimeMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { TimeTravelPlug } from \"@plugs/settings/timeTravel\";\nimport { capitalize, uncamelize } from \"@utils/str\";\n\nconst formatEntry = (entry: any, index: number) => {\n if (!entry) return { display: `(${index + 1}) Unknown`, infoText: \"\" };\n if (entry.nodes) return { display: `(${index + 1}) ${entry.label || `Batch (${entry.nodes.length})`}`, infoText: \"\" };\n const rawPath = entry.path ? String(entry.path) : \"change\",\n typeStr = rawPath.startsWith(\"state.\") ? \" (State)\" : rawPath.startsWith(\"intent.\") ? \" (Intent)\" : rawPath.startsWith(\"config.\") ? \" (Config)\" : \"\",\n // prettier-ignore\n p = rawPath.replace(/^(intent|state|config)\\./, \"\").split(\".\").pop() || rawPath;\n return { display: `(${index + 1}) ${capitalize(uncamelize(p))}${typeStr}`, infoText: entry.to != null ? String(entry.to) : \"\" };\n};\n\nexport const getSettingsTimeTravelMenu = (plug: TimeTravelPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"timeTravel\",\n label: \"Time travel\",\n widget: \"group\",\n getValue: () => (plug.module.config.limit ? \"On\" : \"Off\"),\n onWire: (syncUI, signal) => plug.module.config.on(\"limit\", syncUI, { signal }),\n tipHTML: \"🌌 Step through the space-time continuum of your player's state. Rewind mistakes, replay interactions, and witness the magic of reactive architecture firsthand.\",\n items: [\n {\n id: \"timeTravelHistory\",\n label: \"History\",\n widget: \"select\",\n getValue: () => (plug.module.state.history.length ? `(${plug.module.state.currentFrame}) of ${plug.module.state.history.length}` : \"Empty\"),\n getOptions: () => {\n const h = plug.module.state.history,\n centerIdx = Math.max(0, (plug.module.state.currentFrame ?? 0) - 1),\n startIdx = Math.max(0, centerIdx - 10);\n return h\n .slice(startIdx, Math.min(h.length, centerIdx + 11))\n .map((entry, i) => {\n const actualIdx = startIdx + i,\n formatted = formatEntry(entry, actualIdx);\n return { value: `(${actualIdx + 1}) of ${plug.module.state.history.length}`, display: formatted.display, infoText: formatted.infoText };\n })\n .reverse();\n },\n onChange: (val: string) => {\n const match = val.match(/\\((\\d+)\\)/);\n if (match) plug.module.jumpTo(Number(match[1]));\n },\n onWire: (syncUI, signal) => {\n const tk = \"tt_\" + Math.random();\n for (const k of [\"currentFrame\", \"tracking\", \"paused\"]) plug.module.state.on(k as any, () => plug.ctlr.throttle(tk, () => (syncUI(), plug.ctlr.plug(\"settings.settingsView\")?.menu?.syncUI(\"timeTravelHistory\")), 30, false), { signal });\n },\n configPaths: [\"settings.timeTravel.module\"],\n actions: [\n {\n id: \"toggleWhitelist\",\n getLabel: () => {\n const w = plug.module.config.whitelist as string[] | undefined;\n return w?.[0] === \"state\" || w?.[0]?.[0] === \"state\" ? \"Record Intents\" : \"Record States\";\n },\n onClick: () => {\n const w = plug.module.config.whitelist as any,\n isState = w?.[0] === \"state\" || w?.[0]?.[0] === \"state\";\n plug.config.module.whitelist = Array.isArray(w) ? [isState ? \"intent\" : \"state\"] : { ...w, 0: [isState ? \"intent\" : \"state\"] };\n plug.ctlr.plug(\"settings.settingsView\")?.menu?.syncUI(\"timeTravelHistory\");\n },\n },\n ],\n footerActions: [\n { id: \"undo\", getLabel: () => \"Undo\", onClick: () => plug.module.undo() },\n { id: \"redo\", getLabel: () => \"Redo\", onClick: () => plug.module.redo() },\n { id: \"playPause\", getLabel: () => (plug.module.state.paused ? \"Play\" : \"Pause\"), onClick: () => (plug.module.state.paused ? plug.module.play() : plug.module.pause()) },\n { id: \"rewind\", getLabel: () => \"Rewind\", onClick: () => plug.module.rewind() },\n { id: \"toggleTrack\", getLabel: () => (plug.module.state.tracking ? \"Untrack\" : \"Track\"), onClick: () => (plug.module.state.tracking ? plug.module.untrack() : plug.module.track()) },\n { id: \"clear\", getLabel: () => \"Clear\", onClick: () => plug.module.clear() },\n ],\n },\n {\n id: \"timeTravelPersist\",\n label: \"Persist history\",\n widget: \"toggle\",\n getValue: () => (plug.config.persist ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.persist = val),\n configPaths: [\"settings.timeTravel.persist\"],\n title: \"Save your state history across page reloads\",\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.timeTravel\": typeof getSettingsTimeTravelMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { ToastsPlug } from \"@plugs/settings/toasts\";\nimport { capitalize } from \"@utils/str\";\nimport { isStr } from \"@utils/obj\";\nimport { TOAST_UI_POSITIONS, TOAST_UI_ANIMATIONS, TOAST_UI_TYPES, TOAST_UI_DRAG_OPTIONS, TOAST_UI_DRAG_DIRECTIONS } from \"@t007/toast\";\n\nexport const TOAST_BOOLEAN_OPTS = [\n { option: \"Default\", value: \"default\" },\n { option: \"Yes\", value: \"yes\" },\n { option: \"No\", value: \"no\" },\n];\nexport const toToastFormOpts = (opts: any[]) => [{ option: \"Default\", value: \"default\" }, ...opts.map((o) => ({ option: o.display, value: o.value }))];\n\nexport const TOAST_FORM_INPUTS = [\n { label: \"Type\", type: \"select\", options: toToastFormOpts(TOAST_UI_TYPES) },\n { label: \"Position\", type: \"select\", options: toToastFormOpts(TOAST_UI_POSITIONS) },\n { label: \"Animation\", type: \"select\", options: toToastFormOpts(TOAST_UI_ANIMATIONS) },\n { label: \"Close Button\", type: \"select\", options: TOAST_BOOLEAN_OPTS },\n { label: \"Hide Progress Bar\", type: \"select\", options: TOAST_BOOLEAN_OPTS },\n { label: \"Close On Click\", type: \"select\", options: TOAST_BOOLEAN_OPTS },\n { label: \"Drag To Close\", type: \"select\", options: toToastFormOpts(TOAST_UI_DRAG_OPTIONS) },\n { label: \"Drag Direction\", type: \"select\", options: toToastFormOpts(TOAST_UI_DRAG_DIRECTIONS) },\n { label: \"Auto Close (ms)\", type: \"number\", helperText: { info: \"Blank for Default, -1 for None\" }, min: \"-1\" },\n] as any[];\n\nconst getActionLogicOpts = (plug: ToastsPlug) =>\n [\n { option: \"None\", value: \"none\" },\n ...Object.keys(plug.ctlr.actions)\n .filter((k) => !plug.ctlr.actions[k]?.private)\n .map((k) => ({ value: k, option: plug.ctlr.actions[k]?.label || capitalize(k.replace(/([A-Z])/g, \" $1\").toLowerCase()) })),\n ] as const;\n\nexport const getSettingsToastsMenu = (plug: ToastsPlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"toasts\",\n label: \"Notifications\",\n widget: \"group\",\n getValue: () => (plug.config.disabled ? \"Off\" : \"On\"),\n configPaths: [\"settings.toasts.disabled\"],\n items: [\n {\n id: \"toastsCustomReminders\",\n label: \"Custom Reminders\",\n widget: \"group\",\n getValue: () => (plug.state.reminders.length ? `${plug.state.reminders.length} Active` : \"\"),\n items: [\n {\n id: \"toastsCreateReminder\",\n label: \"Create Reminder\",\n widget: \"input\",\n getValue: () => \"\",\n 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) as unknown as { option: string; value: string }[] }, ...TOAST_FORM_INPUTS],\n onChange: (val: any) => {\n const parse = (v: any) => (v === \"default\" ? undefined : v === \"yes\" ? true : v === \"no\" ? false : v === \"none\" ? false : !isNaN(Number(v)) && isStr(v) ? Number(v) : v);\n 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)\"] } as Parameters<typeof plug.addReminder>[0]);\n plug.ctlr.plug(\"settings.settingsView\")?.menu.syncUI();\n },\n },\n {\n id: \"toastsActiveReminders\",\n label: \"Active\",\n widget: \"drag-select\",\n getValue: () => \"\",\n getOptions: () => plug.state.reminders.map((r) => ({ value: r.id, display: r.message, infoText: (r.delay ? `${Math.floor(r.delay / 1000 / 60)} minutes` : \"Immediately\") + (r.actionId && r.actionId !== \"none\" ? ` -> ${plug.ctlr.actions[r.actionId]?.label || capitalize(r.actionId.replace(/([A-Z])/g, \" $1\").toLowerCase())}` : \"\") })),\n onDelete: (idx: number) => {\n const id = plug.state.reminders[idx]?.id;\n id && (plug.removeReminder(id), plug.ctlr.plug(\"settings.settingsView\")?.menu.syncUI());\n },\n },\n ],\n },\n {\n id: \"toastsDisabled\",\n label: \"Disable\",\n widget: \"toggle\",\n getValue: () => (plug.config.disabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => ((plug.config.disabled = val), !val && plug.toast?.(\"Notifications enabled!\", { tag: \"tmg-tsts\", type: \"success\", renotify: true })),\n configPaths: [\"settings.toasts.disabled\"],\n },\n\n {\n id: \"toastsPosition\",\n label: \"Position\",\n widget: \"select\",\n getOptions: () => TOAST_UI_POSITIONS,\n getValue: () => TOAST_UI_POSITIONS.find((o) => o.value === plug.config.position)?.display,\n onChange: (val: string) => ((plug.config.position = val as typeof plug.config.position), plug.toast?.(\"Position updated!\", { tag: \"tmg-tsts\", position: val as typeof plug.config.position, type: \"success\", renotify: true })),\n configPaths: [\"settings.toasts.position\"],\n tipHTML: \"Where the toasts should appear on the screen\",\n },\n {\n id: \"toastAnimation\",\n label: \"Animation\",\n widget: \"select\",\n getOptions: () => TOAST_UI_ANIMATIONS,\n getValue: () => TOAST_UI_ANIMATIONS.find((o) => o.value === (isStr(plug.config.animation) ? plug.config.animation : \"slide\"))?.display,\n onChange: (val: string) => ((plug.config.animation = val as typeof plug.config.animation), plug.toast?.(\"Animation updated!\", { tag: \"tmg-tsts\", animation: val as typeof plug.config.animation, type: \"success\", renotify: true })),\n configPaths: [\"settings.toasts.animation\"],\n },\n {\n id: \"toastsLimit\",\n label: \"Max Visible\",\n widget: \"range\",\n getValue: () => String(plug.config.limit),\n getRange: () => ({ min: 1, max: 30, step: 1, formatTooltip: (v: number) => String(Math.round(v)) }),\n onChange: (val: number) => (plug.config.limit = val),\n configPaths: [\"settings.toasts.limit\"],\n },\n {\n id: \"toastsNewestOnTop\",\n label: \"Newest on Top\",\n widget: \"toggle\",\n getValue: () => (plug.config.newestOnTop ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.newestOnTop = val),\n configPaths: [\"settings.toasts.newestOnTop\"],\n },\n {\n id: \"toastsProgressBar\",\n label: \"Hide Progress Bar\",\n widget: \"toggle\",\n getValue: () => (plug.config.hideProgressBar ? \"On\" : \"Off\"),\n onChange: (val: boolean) => ((plug.config.hideProgressBar = val), plug.toast?.(\"Progress bar visibility updated!\", { tag: \"tmg-tsts\", hideProgressBar: val, type: \"info\", renotify: true })),\n configPaths: [\"settings.toasts.hideProgressBar\"],\n },\n {\n id: \"toastsCloseButton\",\n label: \"Show Close Button\",\n widget: \"toggle\",\n getValue: () => (plug.config.closeButton ? \"On\" : \"Off\"),\n onChange: (val: boolean) => ((plug.config.closeButton = val), plug.toast?.(\"Close button visibility updated!\", { tag: \"tmg-tsts\", closeButton: val, type: \"info\", renotify: true })),\n configPaths: [\"settings.toasts.closeButton\"],\n },\n {\n id: \"toastsCloseOnClick\",\n label: \"Close on Click\",\n widget: \"toggle\",\n getValue: () => (plug.config.closeOnClick ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.closeOnClick = val),\n configPaths: [\"settings.toasts.closeOnClick\"],\n },\n {\n id: \"toastsPauseOnHover\",\n label: \"Pause on Hover\",\n widget: \"toggle\",\n getValue: () => (plug.config.pauseOnHover ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pauseOnHover = val),\n configPaths: [\"settings.toasts.pauseOnHover\"],\n },\n {\n id: \"toastsPauseOnFocusLoss\",\n label: \"Pause on Focus Loss\",\n widget: \"toggle\",\n getValue: () => (plug.config.pauseOnFocusLoss ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.pauseOnFocusLoss = val),\n configPaths: [\"settings.toasts.pauseOnFocusLoss\"],\n },\n {\n id: \"toastsDragToClose\",\n label: \"Drag to Close\",\n widget: \"toggle\",\n getValue: () => TOAST_UI_DRAG_OPTIONS.find((o) => o.value === plug.config.dragToClose)?.display,\n onChange: (val: boolean) => (plug.config.dragToClose = val),\n configPaths: [\"settings.toasts.dragToClose\"],\n },\n {\n id: \"toastsDragToCloseDir\",\n label: \"Drag Direction\",\n widget: \"select\",\n getValue: () => TOAST_UI_DRAG_DIRECTIONS.find((o) => o.value === plug.config.dragToCloseDir)?.display,\n getOptions: () => TOAST_UI_DRAG_DIRECTIONS,\n onChange: (val: string) => (plug.config.dragToCloseDir = val as typeof plug.config.dragToCloseDir),\n configPaths: [\"settings.toasts.dragToCloseDir\"],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.toasts\": typeof getSettingsToastsMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { VoicePlug } from \"@plugs/settings/voice\";\nimport { getBoolOrStr, getUIOpt } from \"@utils/obj\";\n\nexport const getSettingsVoiceMenu = (plug: VoicePlug): SettingsMenuItem => ({\n id: \"general\",\n label: \"Advanced\",\n icon: \"settings\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"voice\",\n label: \"Voice\",\n widget: \"group\",\n getValue: () => getUIOpt(plug.config.active.options, plug.config.active.value),\n configPaths: [\"settings.voice.active.value\"],\n items: [\n {\n id: \"voiceActive\",\n label: \"Active\",\n widget: \"select\",\n getValue: () => getUIOpt(plug.config.active.options, plug.config.active.value),\n getOptions: () => plug.config.active.options!,\n onChange: (val: boolean) => (plug.config.active.value = getBoolOrStr(val) as typeof plug.config.active.value),\n configPaths: [\"settings.voice.active.value\"],\n tipHTML: \"Turn the voice control engine on or off or passive (listens for the wake word to turn on).\",\n },\n {\n id: \"voiceWakeWord\",\n label: \"Wake word\",\n widget: \"input\",\n 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.\" } }],\n getValue: () => (plug.config.wakeWord ? `\"${plug.config.wakeWord}\"` : \"\"),\n onChange: (val: Record<string, any>) => (plug.config.wakeWord = val[\"Phrase\"].trim()),\n configPaths: [\"settings.voice.wakeWord\"],\n },\n {\n id: \"voiceBehavior\",\n label: \"UI Behavior\",\n widget: \"select\",\n getOptions: () => plug.config.behavior.options!,\n getValue: () => getUIOpt(plug.config.behavior.options, plug.config.behavior.value),\n onChange: (val: string) => (plug.config.behavior.value = val as typeof plug.config.behavior.value),\n configPaths: [\"settings.voice.behavior.value\"],\n tipHTML: \"Determines how and when the voice listening toast appears on screen.\",\n },\n {\n id: \"voiceTimeout\",\n label: \"Sleep timeout\",\n widget: \"input\",\n 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 }],\n getValue: () => `${plug.config.timeout}ms`,\n onChange: (val: Record<string, any>) => (plug.config.timeout = Number(val[\"ms\"])),\n configPaths: [\"settings.voice.timeout\"],\n },\n {\n id: \"voiceInputs\",\n label: \"Inputs\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"voiceInputsDirect\",\n label: \"Direct\",\n widget: \"toggle\",\n getValue: () => (plug.config.inputs.direct ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.inputs.direct = val),\n configPaths: [\"settings.voice.inputs.direct\"],\n title: \"Skips the root menu, dropping you straight into Media > Intent so you can say things like 'Volume 80' immediately.\",\n },\n {\n id: \"voiceInputsStrict\",\n label: \"Strict\",\n widget: \"select\",\n getOptions: () => plug.config.inputs.strict.options!,\n getValue: () => getUIOpt(plug.config.inputs.strict.options, plug.config.inputs.strict.value),\n onChange: (val: string) => (plug.config.inputs.strict.value = getBoolOrStr(val) as typeof plug.config.inputs.strict.value),\n configPaths: [\"settings.voice.inputs.strict\"],\n title: \"If enabled, the voice assistant will always require your approval before executing a command otherwise they'll be executed automatically except for text.\",\n },\n {\n id: \"voiceInputsAccuracy\",\n label: \"Match accuracy\",\n widget: \"range\",\n getValue: () => `${Math.round(plug.config.inputs.accuracy * 100)}%`,\n getRange: () => ({ min: 10, max: 100, step: 5, formatTooltip: (v: number) => `${Math.round(v)}%` }),\n onChange: (val: number | string) => (plug.config.inputs.accuracy = Number(val) / 100),\n configPaths: [\"settings.voice.inputs.accuracy\"],\n tipHTML: \"Lower values allow for more speech-to-text typos (e.g., 'metadata' vs 'metadita'), but may trigger the wrong command.\",\n },\n ],\n },\n {\n id: \"voiceCommands\",\n label: \"Commands\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"voiceCommandsDisabled\",\n label: \"Disabled\",\n widget: \"toggle\",\n getValue: () => (plug.config.commandsDisabled ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.commandsDisabled = val),\n configPaths: [\"settings.voice.commandsDisabled\"],\n tipHTML: \"Disable all custom and built-in voice commands (direct paths navigation will still work).\",\n },\n {\n id: \"voiceAutoToggles\",\n label: \"Auto-toggles\",\n widget: \"toggle\",\n getValue: () => (plug.config.autoToggles ? \"On\" : \"Off\"),\n onChange: (val: boolean) => (plug.config.autoToggles = val),\n configPaths: [\"settings.voice.autoToggles\"],\n tipHTML: \"Automatically toggle boolean values when navigating directly to their path without needing an explicit on/off phrase.\",\n },\n ],\n },\n {\n id: \"voicePositionGroup\",\n label: \"Positioning\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"voiceListenerPos\",\n label: \"Listener\",\n widget: \"select\",\n getOptions: () => plug.config.listenerPos.options!,\n getValue: () => getUIOpt(plug.config.listenerPos.options, plug.config.listenerPos.value),\n onChange: (val: string) => (plug.config.listenerPos.value = val as typeof plug.config.listenerPos.value),\n configPaths: [\"settings.voice.listenerPos.value\"],\n tipHTML: \"Where the main microphone transcript appears\",\n },\n {\n id: \"voicePredictPos\",\n label: \"Predictor\",\n widget: \"select\",\n getOptions: () => plug.config.predictorPos.options!,\n getValue: () => getUIOpt(plug.config.predictorPos.options, plug.config.predictorPos.value),\n onChange: (val: string) => (plug.config.predictorPos.value = val as typeof plug.config.predictorPos.value),\n configPaths: [\"settings.voice.predictorPos.value\"],\n tipHTML: \"Where the AI prediction hints appear\",\n },\n ],\n },\n ],\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.voice\": typeof getSettingsVoiceMenu;\n }\n}\n","import type { SettingsMenuItem } from \"@plugs/settings/settingsView/types\";\nimport type { VolumePlug } from \"@plugs/settings/volume\";\nimport { fanout } from \"sia-reactor/utils\";\n\nexport const getSettingsVolumeMenu = (plug: VolumePlug): SettingsMenuItem => ({\n id: \"limits\",\n label: \"Limits\",\n icon: \"configure\",\n widget: \"group\",\n getValue: () => \"\",\n items: [\n {\n id: \"volumeLimits\",\n label: \"Volume\",\n widget: \"limits\",\n configPaths: [\"settings.volume.skip\"],\n getValue: () => \"\",\n getLimits: () => [{ name: \"volume\", label: \"Clamp bounds\", min: plug.config.min, max: plug.config.max, step: plug.config.skip }],\n onChange: (val: Record<string, number>) => fanout(plug.config, { min: val.volume_min, max: val.volume_max, skip: val.volume_step }, { skipUndefined: true }),\n },\n ],\n});\n\ndeclare module \"@defs/registries\" {\n interface MenuRegistryMap {\n \"settings.volume\": typeof getSettingsVolumeMenu;\n }\n}\n"],"mappings":"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","names":["import_utils","import_sia_reactor","import_utils","import_utils","import_utils","import_utils","m","base","import_sia_reactor","win","win","import_utils","import_utils","import_utils","import_utils"]}
|