sibujs 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/LICENSE +21 -21
  2. package/dist/browser.cjs +18 -0
  3. package/dist/browser.d.cts +19 -1
  4. package/dist/browser.d.ts +19 -1
  5. package/dist/browser.js +5 -1
  6. package/dist/build.cjs +37 -8
  7. package/dist/build.js +3 -3
  8. package/dist/cdn.global.js +4 -4
  9. package/dist/{chunk-24WSRM54.js → chunk-32ZISOLJ.js} +35 -7
  10. package/dist/{chunk-ONCYDOK6.js → chunk-4EI4AG32.js} +17 -1
  11. package/dist/{chunk-MJ4LVHGX.js → chunk-7V26P53V.js} +1 -1
  12. package/dist/{chunk-7TQKR4PP.js → chunk-AZ3ISID5.js} +4 -0
  13. package/dist/{chunk-3CRQALYP.js → chunk-DKOHBI74.js} +49 -2
  14. package/dist/{chunk-6JGMNCD6.js → chunk-EWFVA3TJ.js} +1 -1
  15. package/dist/{chunk-HS6OOE3Q.js → chunk-G3BOQPVO.js} +1 -1
  16. package/dist/{chunk-QVKGGB2S.js → chunk-MDVXJWFN.js} +7 -3
  17. package/dist/{chunk-DZZMIMGL.js → chunk-OF7UZIVB.js} +1 -1
  18. package/dist/{chunk-N6IZB6KJ.js → chunk-PBHF5WKN.js} +56 -7
  19. package/dist/{chunk-OHQQWZ7P.js → chunk-QBMDLBU2.js} +10 -4
  20. package/dist/{customElement-BKQfbSZQ.d.cts → customElement-yz8uyk-0.d.cts} +52 -6
  21. package/dist/{customElement-BKQfbSZQ.d.ts → customElement-yz8uyk-0.d.ts} +52 -6
  22. package/dist/data.cjs +10 -4
  23. package/dist/data.d.cts +2 -0
  24. package/dist/data.d.ts +2 -0
  25. package/dist/data.js +1 -1
  26. package/dist/ecosystem.cjs +7 -3
  27. package/dist/ecosystem.d.cts +1 -1
  28. package/dist/ecosystem.d.ts +1 -1
  29. package/dist/ecosystem.js +2 -2
  30. package/dist/extras.cjs +146 -16
  31. package/dist/extras.d.cts +5 -4
  32. package/dist/extras.d.ts +5 -4
  33. package/dist/extras.js +19 -11
  34. package/dist/index.cjs +40 -8
  35. package/dist/index.d.cts +48 -4
  36. package/dist/index.d.ts +48 -4
  37. package/dist/index.js +9 -3
  38. package/dist/patterns.d.cts +8 -2
  39. package/dist/patterns.d.ts +8 -2
  40. package/dist/plugins.cjs +149 -4
  41. package/dist/plugins.d.cts +39 -3
  42. package/dist/plugins.d.ts +39 -3
  43. package/dist/plugins.js +121 -5
  44. package/dist/{ssr-WKUPVSSK.js → ssr-6GIMY5MX.js} +5 -3
  45. package/dist/ssr-BA6sxxUd.d.cts +135 -0
  46. package/dist/ssr-BA6sxxUd.d.ts +135 -0
  47. package/dist/ssr.cjs +12 -3
  48. package/dist/ssr.d.cts +3 -113
  49. package/dist/ssr.d.ts +3 -113
  50. package/dist/ssr.js +7 -5
  51. package/dist/{tagFactory-D9e0QGIE.d.cts → tagFactory-Dl8QCLga.d.cts} +2 -2
  52. package/dist/{tagFactory-D9e0QGIE.d.ts → tagFactory-Dl8QCLga.d.ts} +2 -2
  53. package/dist/ui.cjs +50 -2
  54. package/dist/ui.d.cts +1 -1
  55. package/dist/ui.d.ts +1 -1
  56. package/dist/ui.js +3 -1
  57. package/dist/widgets.cjs +56 -7
  58. package/dist/widgets.d.cts +4 -2
  59. package/dist/widgets.d.ts +4 -2
  60. package/dist/widgets.js +1 -1
  61. package/package.json +139 -139
  62. package/dist/chunk-27QC4FPL.js +0 -67
  63. package/dist/chunk-2ABBWCGC.js +0 -65
  64. package/dist/chunk-2GLUWW3D.js +0 -567
  65. package/dist/chunk-2HYHL6VW.js +0 -269
  66. package/dist/chunk-2MUNQYZ7.js +0 -26
  67. package/dist/chunk-2PFRWZIE.js +0 -65
  68. package/dist/chunk-2PSPKNUI.js +0 -1711
  69. package/dist/chunk-2X5NDXNG.js +0 -877
  70. package/dist/chunk-34TOFKL7.js +0 -1803
  71. package/dist/chunk-353KB3DI.js +0 -271
  72. package/dist/chunk-35CDLDX5.js +0 -1758
  73. package/dist/chunk-36MU4CFV.js +0 -41
  74. package/dist/chunk-37NSPDPQ.js +0 -284
  75. package/dist/chunk-3CSF4TOG.js +0 -282
  76. package/dist/chunk-3FIQOFI6.js +0 -182
  77. package/dist/chunk-3GHNC2BN.js +0 -28
  78. package/dist/chunk-3GZTRYSY.js +0 -33
  79. package/dist/chunk-3HLWWEPU.js +0 -909
  80. package/dist/chunk-3IVI3J54.js +0 -252
  81. package/dist/chunk-3KZ72WNW.js +0 -944
  82. package/dist/chunk-4AU64SQV.js +0 -182
  83. package/dist/chunk-4MOK7HAR.js +0 -84
  84. package/dist/chunk-4QK6FBDH.js +0 -1429
  85. package/dist/chunk-526ENZ77.js +0 -58
  86. package/dist/chunk-566Z7HXB.js +0 -737
  87. package/dist/chunk-5CRBB7XP.js +0 -358
  88. package/dist/chunk-5G67D3IZ.js +0 -168
  89. package/dist/chunk-5KBEED6D.js +0 -361
  90. package/dist/chunk-5LJMSKBB.js +0 -26
  91. package/dist/chunk-5M7LJFWV.js +0 -271
  92. package/dist/chunk-5NCPAWBE.js +0 -99
  93. package/dist/chunk-5O2RKXR3.js +0 -1444
  94. package/dist/chunk-5OCBERWW.js +0 -1094
  95. package/dist/chunk-5XUAA53E.js +0 -99
  96. package/dist/chunk-5ZFVYPDG.js +0 -97
  97. package/dist/chunk-6BCDNGIH.js +0 -1839
  98. package/dist/chunk-6BDUQJ7K.js +0 -949
  99. package/dist/chunk-6BTBDO6A.js +0 -633
  100. package/dist/chunk-6DJQF4Z7.js +0 -33
  101. package/dist/chunk-6EYXAMBN.js +0 -1857
  102. package/dist/chunk-6IWEHW57.js +0 -43
  103. package/dist/chunk-6J6S4NI7.js +0 -398
  104. package/dist/chunk-6NBHAKHS.js +0 -1997
  105. package/dist/chunk-6QRLJNXR.js +0 -1425
  106. package/dist/chunk-6SNF5MZK.js +0 -282
  107. package/dist/chunk-7FYJUE77.js +0 -282
  108. package/dist/chunk-7HM5UE5T.js +0 -270
  109. package/dist/chunk-7JOLTGUH.js +0 -58
  110. package/dist/chunk-7LS3ITZB.js +0 -567
  111. package/dist/chunk-7MCWJCQK.js +0 -909
  112. package/dist/chunk-7RIIFP3E.js +0 -1758
  113. package/dist/chunk-7UASYN3G.js +0 -254
  114. package/dist/chunk-7W2WYHDI.js +0 -741
  115. package/dist/chunk-7XFBKLFB.js +0 -90
  116. package/dist/chunk-7Y35RDSJ.js +0 -872
  117. package/dist/chunk-A65GFJBL.js +0 -65
  118. package/dist/chunk-AD6ZIEDK.js +0 -67
  119. package/dist/chunk-AIPXZK5O.js +0 -295
  120. package/dist/chunk-AK5Y72F3.js +0 -1426
  121. package/dist/chunk-ANRSGGFC.js +0 -725
  122. package/dist/chunk-APOMMWH4.js +0 -282
  123. package/dist/chunk-ARZVTWIQ.js +0 -1750
  124. package/dist/chunk-AWWBM2BI.js +0 -664
  125. package/dist/chunk-AX5VEQTY.js +0 -58
  126. package/dist/chunk-AYTXVOW3.js +0 -1708
  127. package/dist/chunk-B4ASD5VC.js +0 -295
  128. package/dist/chunk-BG3HMX4C.js +0 -271
  129. package/dist/chunk-BG4A246G.js +0 -1746
  130. package/dist/chunk-BNFJJA2L.js +0 -1425
  131. package/dist/chunk-BPKPBVU5.js +0 -59
  132. package/dist/chunk-BPKPPSXC.js +0 -282
  133. package/dist/chunk-BPWKKK7F.js +0 -1711
  134. package/dist/chunk-BS5EYKCJ.js +0 -26
  135. package/dist/chunk-BS6ETCJ7.js +0 -949
  136. package/dist/chunk-BTTBAGD3.js +0 -365
  137. package/dist/chunk-BWBWJYBK.js +0 -271
  138. package/dist/chunk-CCKX6YTC.js +0 -1735
  139. package/dist/chunk-CIF5Z3MP.js +0 -58
  140. package/dist/chunk-CQNVF2FD.js +0 -282
  141. package/dist/chunk-CRTHZHU7.js +0 -26
  142. package/dist/chunk-CSXYU7IO.js +0 -457
  143. package/dist/chunk-D6JD4FDC.js +0 -26
  144. package/dist/chunk-DAUTHAYH.js +0 -20
  145. package/dist/chunk-DB243LB7.js +0 -877
  146. package/dist/chunk-DEQLPROY.js +0 -1094
  147. package/dist/chunk-DGUYCZJH.js +0 -654
  148. package/dist/chunk-DI3Z32TV.js +0 -1780
  149. package/dist/chunk-DKGHW6MX.js +0 -90
  150. package/dist/chunk-DKXVN442.js +0 -90
  151. package/dist/chunk-DLWLJZB3.js +0 -712
  152. package/dist/chunk-DNTTC4V5.js +0 -1803
  153. package/dist/chunk-DTCOOBMX.js +0 -725
  154. package/dist/chunk-DWQQ2GZK.js +0 -1787
  155. package/dist/chunk-E5SMAKQQ.js +0 -336
  156. package/dist/chunk-E6BNBVMK.js +0 -457
  157. package/dist/chunk-E7NGA7X2.js +0 -59
  158. package/dist/chunk-EEPPJKAE.js +0 -443
  159. package/dist/chunk-EGZGFIXV.js +0 -90
  160. package/dist/chunk-EJMSUPXQ.js +0 -346
  161. package/dist/chunk-EJMYGAGQ.js +0 -717
  162. package/dist/chunk-EL6Z5MDY.js +0 -55
  163. package/dist/chunk-EP7VRLEB.js +0 -41
  164. package/dist/chunk-EQACK65C.js +0 -63
  165. package/dist/chunk-ESPA7SCH.js +0 -567
  166. package/dist/chunk-ETMEC6FH.js +0 -99
  167. package/dist/chunk-EUFENPGJ.js +0 -290
  168. package/dist/chunk-EZ2WHYVL.js +0 -65
  169. package/dist/chunk-EZRVMSZK.js +0 -67
  170. package/dist/chunk-F25CZRUH.js +0 -282
  171. package/dist/chunk-F2TRGINX.js +0 -254
  172. package/dist/chunk-F4IYF3YU.js +0 -266
  173. package/dist/chunk-F5JCIH3Q.js +0 -642
  174. package/dist/chunk-FBNDOAHU.js +0 -54
  175. package/dist/chunk-FDRU7W6W.js +0 -365
  176. package/dist/chunk-FDW3E54J.js +0 -1767
  177. package/dist/chunk-FEPU4KL6.js +0 -63
  178. package/dist/chunk-FGK3JKMN.js +0 -909
  179. package/dist/chunk-FQWPKSTD.js +0 -1437
  180. package/dist/chunk-FWHVLMCI.js +0 -26
  181. package/dist/chunk-FYIGTFXO.js +0 -712
  182. package/dist/chunk-G4AX3DQ4.js +0 -54
  183. package/dist/chunk-GBEYQRO2.js +0 -303
  184. package/dist/chunk-GBLES3NK.js +0 -248
  185. package/dist/chunk-GQVGUQW6.js +0 -1436
  186. package/dist/chunk-GVDEIJ3G.js +0 -291
  187. package/dist/chunk-GXIM4TC3.js +0 -346
  188. package/dist/chunk-GY5AAP4H.js +0 -316
  189. package/dist/chunk-HCV2T76T.js +0 -457
  190. package/dist/chunk-HCWPQCZP.js +0 -279
  191. package/dist/chunk-HFHOFG6W.js +0 -282
  192. package/dist/chunk-HGKEBAW3.js +0 -63
  193. package/dist/chunk-HJNW3HLI.js +0 -255
  194. package/dist/chunk-HKUNBYN6.js +0 -949
  195. package/dist/chunk-HRIIH4JX.js +0 -712
  196. package/dist/chunk-HS7ZKVPR.js +0 -182
  197. package/dist/chunk-HXDVV7HZ.js +0 -909
  198. package/dist/chunk-HZWNWUPJ.js +0 -466
  199. package/dist/chunk-I6EZTMPB.js +0 -949
  200. package/dist/chunk-IB23VMO3.js +0 -1746
  201. package/dist/chunk-IC4K4EOD.js +0 -26
  202. package/dist/chunk-IEMZ7RTT.js +0 -99
  203. package/dist/chunk-IJU6TOZ6.js +0 -65
  204. package/dist/chunk-IK3NFZOA.js +0 -466
  205. package/dist/chunk-IPGRSN42.js +0 -1750
  206. package/dist/chunk-IVMOK2QN.js +0 -1750
  207. package/dist/chunk-J7PD6L4B.js +0 -1767
  208. package/dist/chunk-JCLGQO7T.js +0 -443
  209. package/dist/chunk-JDXL7KDB.js +0 -1436
  210. package/dist/chunk-JIIFW636.js +0 -270
  211. package/dist/chunk-JLOASJXU.js +0 -654
  212. package/dist/chunk-JRWAHOMS.js +0 -41
  213. package/dist/chunk-JWGEEH7H.js +0 -944
  214. package/dist/chunk-K2BESAG7.js +0 -1688
  215. package/dist/chunk-K2U5YGF4.js +0 -877
  216. package/dist/chunk-K45FQ4Y4.js +0 -175
  217. package/dist/chunk-K7BPE427.js +0 -1432
  218. package/dist/chunk-K7JUDY3C.js +0 -364
  219. package/dist/chunk-KALKXPC3.js +0 -297
  220. package/dist/chunk-KKUV25KB.js +0 -361
  221. package/dist/chunk-KKV3DOAW.js +0 -466
  222. package/dist/chunk-KL3266RS.js +0 -26
  223. package/dist/chunk-KNN4P7DZ.js +0 -84
  224. package/dist/chunk-KP2DZH5Q.js +0 -254
  225. package/dist/chunk-KZHAJSQR.js +0 -1636
  226. package/dist/chunk-L36YN45V.js +0 -949
  227. package/dist/chunk-L5IBT37O.js +0 -263
  228. package/dist/chunk-LAX5H35R.js +0 -90
  229. package/dist/chunk-LBKGHMQV.js +0 -1750
  230. package/dist/chunk-LBTEPL7A.js +0 -1731
  231. package/dist/chunk-LEBBPTDB.js +0 -1444
  232. package/dist/chunk-LHI25KS2.js +0 -654
  233. package/dist/chunk-LHNJSLC6.js +0 -297
  234. package/dist/chunk-LLH63WVQ.js +0 -98
  235. package/dist/chunk-LWNJN3IW.js +0 -295
  236. package/dist/chunk-LWVR2C4G.js +0 -1711
  237. package/dist/chunk-M3MDTVV2.js +0 -896
  238. package/dist/chunk-M3QSBCXC.js +0 -52
  239. package/dist/chunk-M3ZKZQNY.js +0 -282
  240. package/dist/chunk-M5GNLDEO.js +0 -303
  241. package/dist/chunk-MBINISSE.js +0 -35
  242. package/dist/chunk-MFHVGKET.js +0 -267
  243. package/dist/chunk-MGWSG3PM.js +0 -358
  244. package/dist/chunk-MGYRVG2A.js +0 -282
  245. package/dist/chunk-MJNB47HB.js +0 -19
  246. package/dist/chunk-MLN3JZ2E.js +0 -398
  247. package/dist/chunk-MM46JVR2.js +0 -359
  248. package/dist/chunk-MQWTY3JY.js +0 -944
  249. package/dist/chunk-MWE3PK5S.js +0 -551
  250. package/dist/chunk-MXR7LXGC.js +0 -1084
  251. package/dist/chunk-MZZOQHNI.js +0 -642
  252. package/dist/chunk-N6BRVUAP.js +0 -1805
  253. package/dist/chunk-N7UVR6SG.js +0 -877
  254. package/dist/chunk-NIHWGZS4.js +0 -1426
  255. package/dist/chunk-NMTRH4Q3.js +0 -97
  256. package/dist/chunk-NSVVHQK5.js +0 -41
  257. package/dist/chunk-NVI2WE7D.js +0 -443
  258. package/dist/chunk-NZNNXPEE.js +0 -56
  259. package/dist/chunk-O7QBO3PH.js +0 -58
  260. package/dist/chunk-OAUPQBO2.js +0 -270
  261. package/dist/chunk-OB2LMD7C.js +0 -297
  262. package/dist/chunk-OEGAHDEU.js +0 -1094
  263. package/dist/chunk-OHEYBWQU.js +0 -58
  264. package/dist/chunk-OI5B74HF.js +0 -26
  265. package/dist/chunk-OI6OXUHJ.js +0 -443
  266. package/dist/chunk-ONOO74UN.js +0 -361
  267. package/dist/chunk-OWLQ4HZI.js +0 -282
  268. package/dist/chunk-OX2VMRMV.js +0 -633
  269. package/dist/chunk-OXYMB6VB.js +0 -466
  270. package/dist/chunk-OZS4YOOP.js +0 -59
  271. package/dist/chunk-P4FYE5TX.js +0 -866
  272. package/dist/chunk-P5KFWM4H.js +0 -98
  273. package/dist/chunk-PLFQZ7SS.js +0 -90
  274. package/dist/chunk-PMVU6BI4.js +0 -1847
  275. package/dist/chunk-PPNH4Y6U.js +0 -282
  276. package/dist/chunk-PUMLE7RJ.js +0 -1711
  277. package/dist/chunk-Q4MFANBF.js +0 -282
  278. package/dist/chunk-Q54YZ4X3.js +0 -26
  279. package/dist/chunk-Q6XACQW3.js +0 -1847
  280. package/dist/chunk-QI6ZDDUR.js +0 -35
  281. package/dist/chunk-QJ5KLY2S.js +0 -1821
  282. package/dist/chunk-QLEKZMMU.js +0 -282
  283. package/dist/chunk-QLNWSBWK.js +0 -567
  284. package/dist/chunk-QQS7BSPA.js +0 -26
  285. package/dist/chunk-QUGIYF3F.js +0 -712
  286. package/dist/chunk-QYSW3K7A.js +0 -282
  287. package/dist/chunk-QZWTKX5K.js +0 -321
  288. package/dist/chunk-RGGNGVO3.js +0 -98
  289. package/dist/chunk-RKJDRVV6.js +0 -443
  290. package/dist/chunk-RUAJTILD.js +0 -26
  291. package/dist/chunk-S5BHU353.js +0 -43
  292. package/dist/chunk-S6YEHFC7.js +0 -654
  293. package/dist/chunk-SHQUSFH7.js +0 -1426
  294. package/dist/chunk-SMB4DBMD.js +0 -182
  295. package/dist/chunk-SNYHQP3D.js +0 -743
  296. package/dist/chunk-SR2DPCTT.js +0 -1803
  297. package/dist/chunk-SU63HSUU.js +0 -58
  298. package/dist/chunk-SXXKZJI2.js +0 -303
  299. package/dist/chunk-T24L3TBF.js +0 -1717
  300. package/dist/chunk-T2SPHHYU.js +0 -365
  301. package/dist/chunk-TAQNSOKT.js +0 -692
  302. package/dist/chunk-TBA46SVX.js +0 -1805
  303. package/dist/chunk-TCWKKKPP.js +0 -90
  304. package/dist/chunk-TDNY4SUA.js +0 -41
  305. package/dist/chunk-TK4P3V5G.js +0 -56
  306. package/dist/chunk-TNNF56IQ.js +0 -1750
  307. package/dist/chunk-TR7E6LYX.js +0 -457
  308. package/dist/chunk-TVV4JK5G.js +0 -282
  309. package/dist/chunk-UATXXETW.js +0 -278
  310. package/dist/chunk-UHFUQWST.js +0 -65
  311. package/dist/chunk-UKDBQVM3.js +0 -346
  312. package/dist/chunk-URWUFH45.js +0 -98
  313. package/dist/chunk-USPT25TC.js +0 -365
  314. package/dist/chunk-UUSIH3XH.js +0 -1429
  315. package/dist/chunk-UXDIPRCG.js +0 -26
  316. package/dist/chunk-UYFNXLKR.js +0 -1436
  317. package/dist/chunk-UZZFP2EE.js +0 -35
  318. package/dist/chunk-V4G5Y6YM.js +0 -1094
  319. package/dist/chunk-V6F7KUWD.js +0 -270
  320. package/dist/chunk-V6P4LDAV.js +0 -65
  321. package/dist/chunk-VAA4FG3Z.js +0 -365
  322. package/dist/chunk-VCZLXRMR.js +0 -254
  323. package/dist/chunk-VDHXSSBT.js +0 -1426
  324. package/dist/chunk-VI4KRBSU.js +0 -291
  325. package/dist/chunk-VM4QMKVK.js +0 -254
  326. package/dist/chunk-VUXB655T.js +0 -1999
  327. package/dist/chunk-VWGYKYL2.js +0 -737
  328. package/dist/chunk-VX2OFBJN.js +0 -1426
  329. package/dist/chunk-VXVIE6DG.js +0 -84
  330. package/dist/chunk-W3QH7BF5.js +0 -282
  331. package/dist/chunk-W4OH7HG4.js +0 -40
  332. package/dist/chunk-WBVJX4GZ.js +0 -98
  333. package/dist/chunk-WDU2ZV4I.js +0 -1426
  334. package/dist/chunk-WGCQNOEQ.js +0 -712
  335. package/dist/chunk-WZQNHS4J.js +0 -52
  336. package/dist/chunk-X6VUCICU.js +0 -457
  337. package/dist/chunk-XAY7FM7Y.js +0 -618
  338. package/dist/chunk-XFW7B23S.js +0 -282
  339. package/dist/chunk-XJ3MNGY5.js +0 -58
  340. package/dist/chunk-XJZ5Z2CM.js +0 -642
  341. package/dist/chunk-XKVFQTJJ.js +0 -254
  342. package/dist/chunk-XRLFASCY.js +0 -22
  343. package/dist/chunk-XZGY5ZJ4.js +0 -35
  344. package/dist/chunk-Y745CBVB.js +0 -944
  345. package/dist/chunk-YLBJSXYY.js +0 -944
  346. package/dist/chunk-YQJIKVPZ.js +0 -1429
  347. package/dist/chunk-YRM2VCZF.js +0 -457
  348. package/dist/chunk-YS33KBVJ.js +0 -944
  349. package/dist/chunk-Z27DZPDG.js +0 -41
  350. package/dist/chunk-Z6GZHJW5.js +0 -877
  351. package/dist/chunk-ZXQ5NAEN.js +0 -32
  352. package/dist/contracts-B552GopR.d.cts +0 -245
  353. package/dist/contracts-B552GopR.d.ts +0 -245
  354. package/dist/contracts-Bg1ECISC.d.cts +0 -245
  355. package/dist/contracts-Bg1ECISC.d.ts +0 -245
  356. package/dist/contracts-CMriKJ6P.d.cts +0 -245
  357. package/dist/contracts-CMriKJ6P.d.ts +0 -245
  358. package/dist/src/components/ErrorBoundary.d.ts +0 -15
  359. package/dist/src/components/ErrorBoundary.js +0 -119
  360. package/dist/src/core/catch.d.ts +0 -11
  361. package/dist/src/core/catch.js +0 -28
  362. package/dist/src/core/each.d.ts +0 -13
  363. package/dist/src/core/each.js +0 -68
  364. package/dist/src/core/for.d.ts +0 -12
  365. package/dist/src/core/for.js +0 -67
  366. package/dist/src/core/html.d.ts +0 -137
  367. package/dist/src/core/html.js +0 -155
  368. package/dist/src/core/htmlIf.d.ts +0 -11
  369. package/dist/src/core/htmlIf.js +0 -18
  370. package/dist/src/core/lazy.d.ts +0 -7
  371. package/dist/src/core/lazy.js +0 -16
  372. package/dist/src/core/mount.d.ts +0 -7
  373. package/dist/src/core/mount.js +0 -12
  374. package/dist/src/core/slots.d.ts +0 -3
  375. package/dist/src/core/slots.js +0 -3
  376. package/dist/src/core/suspense.d.ts +0 -10
  377. package/dist/src/core/suspense.js +0 -33
  378. package/dist/src/core/tagFactory.d.ts +0 -13
  379. package/dist/src/core/tagFactory.js +0 -86
  380. package/dist/src/core/test.d.ts +0 -11
  381. package/dist/src/core/test.js +0 -28
  382. package/dist/src/core/types.d.ts +0 -2
  383. package/dist/src/core/types.js +0 -1
  384. package/dist/src/core/useComputed.d.ts +0 -6
  385. package/dist/src/core/useComputed.js +0 -30
  386. package/dist/src/core/useEffect.d.ts +0 -6
  387. package/dist/src/core/useEffect.js +0 -23
  388. package/dist/src/core/useState.d.ts +0 -10
  389. package/dist/src/core/useState.js +0 -34
  390. package/dist/src/core/useStore.d.ts +0 -19
  391. package/dist/src/core/useStore.js +0 -53
  392. package/dist/src/core/useWatch.d.ts +0 -8
  393. package/dist/src/core/useWatch.js +0 -23
  394. package/dist/src/plugins/i18n.d.ts +0 -6
  395. package/dist/src/plugins/i18n.js +0 -16
  396. package/dist/src/plugins/router.d.ts +0 -188
  397. package/dist/src/plugins/router.js +0 -1178
  398. package/dist/src/reactivity/bindAttribute.d.ts +0 -5
  399. package/dist/src/reactivity/bindAttribute.js +0 -31
  400. package/dist/src/reactivity/bindChildNode.d.ts +0 -10
  401. package/dist/src/reactivity/bindChildNode.js +0 -46
  402. package/dist/src/reactivity/bindTextNode.d.ts +0 -10
  403. package/dist/src/reactivity/bindTextNode.js +0 -27
  404. package/dist/src/reactivity/signal.d.ts +0 -3
  405. package/dist/src/reactivity/signal.js +0 -1
  406. package/dist/src/reactivity/track.d.ts +0 -18
  407. package/dist/src/reactivity/track.js +0 -73
  408. package/dist/src/reactivity/useComputed.d.ts +0 -6
  409. package/dist/src/reactivity/useComputed.js +0 -30
  410. package/dist/src/reactivity/useEffect.d.ts +0 -6
  411. package/dist/src/reactivity/useEffect.js +0 -23
  412. package/dist/src/reactivity/useState.d.ts +0 -10
  413. package/dist/src/reactivity/useState.js +0 -34
  414. package/dist/src/reactivity/useStore.d.ts +0 -19
  415. package/dist/src/reactivity/useStore.js +0 -53
  416. package/dist/src/reactivity/useWatch.d.ts +0 -8
  417. package/dist/src/reactivity/useWatch.js +0 -23
  418. package/dist/src/utils/sanitize.d.ts +0 -1
  419. package/dist/src/utils/sanitize.js +0 -8
  420. package/dist/ssr-27FOM46T.js +0 -35
  421. package/dist/ssr-GEOEYQV7.js +0 -35
  422. package/dist/ssr-GFUTTSJD.js +0 -22
  423. package/dist/ssr-K7DCR6BZ.js +0 -35
  424. package/dist/ssr-NFAIHWJJ.js +0 -35
  425. package/dist/ssr-O6LFMRFP.js +0 -35
  426. package/dist/ssr-QZEVGMMK.js +0 -35
  427. package/dist/ssr-SGVBCAGC.js +0 -35
  428. package/dist/ssr-UB2IXCYX.js +0 -35
  429. package/dist/ssr-XBZQNV4O.js +0 -22
  430. package/dist/ssr-Y76FSXDU.js +0 -35
  431. package/dist/ssr-YQJ4AYBD.js +0 -35
  432. package/dist/tagFactory-BDN7gDEp.d.cts +0 -21
  433. package/dist/tagFactory-BDN7gDEp.d.ts +0 -21
  434. package/dist/tagFactory-CZPO4RXF.d.cts +0 -34
  435. package/dist/tagFactory-CZPO4RXF.d.ts +0 -34
  436. package/dist/tagFactory-CgImPVMY.d.cts +0 -22
  437. package/dist/tagFactory-CgImPVMY.d.ts +0 -22
  438. package/dist/tagFactory-Cw1iv5if.d.cts +0 -22
  439. package/dist/tagFactory-Cw1iv5if.d.ts +0 -22
  440. package/dist/tagFactory-DeAXq9ef.d.cts +0 -30
  441. package/dist/tagFactory-DeAXq9ef.d.ts +0 -30
  442. package/dist/tagFactory-SkY0a7L1.d.cts +0 -22
  443. package/dist/tagFactory-SkY0a7L1.d.ts +0 -22
package/dist/index.cjs CHANGED
@@ -37,6 +37,7 @@ __export(index_exports, {
37
37
  article: () => article,
38
38
  aside: () => aside,
39
39
  audio: () => audio,
40
+ autoResize: () => autoResize,
40
41
  b: () => b,
41
42
  base: () => base,
42
43
  batch: () => batch,
@@ -61,6 +62,7 @@ __export(index_exports, {
61
62
  col: () => col,
62
63
  colgroup: () => colgroup,
63
64
  context: () => context,
65
+ copyOnClick: () => copyOnClick,
64
66
  customElement: () => customElement,
65
67
  data: () => data,
66
68
  datalist: () => datalist,
@@ -138,6 +140,7 @@ __export(index_exports, {
138
140
  object: () => object,
139
141
  ol: () => ol,
140
142
  on: () => on,
143
+ onCleanup: () => onCleanup,
141
144
  onMount: () => onMount,
142
145
  onUnmount: () => onUnmount,
143
146
  optgroup: () => optgroup,
@@ -602,7 +605,7 @@ function bindChildNode(placeholder, getter) {
602
605
  const node = lastNodes[i2];
603
606
  if (node.parentNode) node.parentNode.removeChild(node);
604
607
  }
605
- if (result == null) {
608
+ if (result == null || typeof result === "boolean") {
606
609
  lastNodes.length = 0;
607
610
  return;
608
611
  }
@@ -617,6 +620,7 @@ function bindChildNode(placeholder, getter) {
617
620
  if (lastNodes.length < result.length) lastNodes = new Array(result.length);
618
621
  for (let i2 = 0; i2 < result.length; i2++) {
619
622
  const item = result[i2];
623
+ if (item == null || typeof item === "boolean") continue;
620
624
  const node = item instanceof Node ? item : document.createTextNode(String(item));
621
625
  parent.insertBefore(node, anchor);
622
626
  lastNodes[count++] = node;
@@ -761,6 +765,9 @@ function appendChildren(el, nodes) {
761
765
  el.textContent = String(nodes);
762
766
  return;
763
767
  }
768
+ if (typeof nodes === "boolean" || nodes == null) {
769
+ return;
770
+ }
764
771
  if (typeof nodes === "function") {
765
772
  const ph = document.createComment("");
766
773
  el.appendChild(ph);
@@ -789,11 +796,11 @@ function appendChildren(el, nodes) {
789
796
  registerDisposer(el, bindChildNode(ph, inner));
790
797
  } else if (inner instanceof Node) {
791
798
  el.appendChild(inner);
792
- } else if (inner != null) {
799
+ } else if (inner != null && typeof inner !== "boolean") {
793
800
  el.appendChild(document.createTextNode(String(inner)));
794
801
  }
795
802
  }
796
- } else if (c != null) {
803
+ } else if (c != null && typeof c !== "boolean") {
797
804
  el.appendChild(document.createTextNode(String(c)));
798
805
  }
799
806
  }
@@ -1262,11 +1269,11 @@ function executeElement(tmpl, values) {
1262
1269
  const item = val[j];
1263
1270
  if (item instanceof Node) {
1264
1271
  el.appendChild(item);
1265
- } else if (item != null) {
1272
+ } else if (item != null && typeof item !== "boolean") {
1266
1273
  el.appendChild(document.createTextNode(String(item)));
1267
1274
  }
1268
1275
  }
1269
- } else if (val != null) {
1276
+ } else if (val != null && typeof val !== "boolean") {
1270
1277
  el.appendChild(document.createTextNode(String(val)));
1271
1278
  }
1272
1279
  break;
@@ -1307,11 +1314,11 @@ function html2(strings, ...values) {
1307
1314
  const item = val[j];
1308
1315
  if (item instanceof Node) {
1309
1316
  wrapper.appendChild(item);
1310
- } else if (item != null) {
1317
+ } else if (item != null && typeof item !== "boolean") {
1311
1318
  wrapper.appendChild(document.createTextNode(String(item)));
1312
1319
  }
1313
1320
  }
1314
- } else if (val != null) {
1321
+ } else if (val != null && typeof val !== "boolean") {
1315
1322
  wrapper.appendChild(document.createTextNode(String(val)));
1316
1323
  }
1317
1324
  break;
@@ -1537,9 +1544,10 @@ function each(getArray, render, options) {
1537
1544
  function Fragment(nodes) {
1538
1545
  const frag = document.createDocumentFragment();
1539
1546
  for (const child of nodes) {
1540
- if (child == null) continue;
1547
+ if (child == null || typeof child === "boolean") continue;
1541
1548
  if (Array.isArray(child)) {
1542
1549
  for (const nested of child) {
1550
+ if (nested == null || typeof nested === "boolean") continue;
1543
1551
  frag.appendChild(resolveChild(nested));
1544
1552
  }
1545
1553
  } else {
@@ -1805,6 +1813,24 @@ var longPress = (element, options) => {
1805
1813
  element.removeEventListener("pointerleave", cancel);
1806
1814
  };
1807
1815
  };
1816
+ var copyOnClick = (element, getText) => {
1817
+ const handler = () => {
1818
+ const text2 = typeof getText === "function" ? getText() : element.textContent ?? "";
1819
+ navigator.clipboard.writeText(text2);
1820
+ };
1821
+ element.addEventListener("click", handler);
1822
+ return () => element.removeEventListener("click", handler);
1823
+ };
1824
+ var autoResize = (element) => {
1825
+ const resize = () => {
1826
+ element.style.overflow = "hidden";
1827
+ element.style.height = "auto";
1828
+ element.style.height = `${element.scrollHeight}px`;
1829
+ };
1830
+ resize();
1831
+ element.addEventListener("input", resize);
1832
+ return () => element.removeEventListener("input", resize);
1833
+ };
1808
1834
  var trapFocus = (element) => {
1809
1835
  const focusable = 'a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';
1810
1836
  const handler = (e) => {
@@ -2460,6 +2486,9 @@ function onUnmount(callback, element) {
2460
2486
  }, element);
2461
2487
  }
2462
2488
  }
2489
+ function onCleanup(callback, element) {
2490
+ registerDisposer(element, callback);
2491
+ }
2463
2492
 
2464
2493
  // src/core/rendering/context.ts
2465
2494
  function context(defaultValue) {
@@ -2822,6 +2851,7 @@ function Loading(props = {}) {
2822
2851
  article,
2823
2852
  aside,
2824
2853
  audio,
2854
+ autoResize,
2825
2855
  b,
2826
2856
  base,
2827
2857
  batch,
@@ -2846,6 +2876,7 @@ function Loading(props = {}) {
2846
2876
  col,
2847
2877
  colgroup,
2848
2878
  context,
2879
+ copyOnClick,
2849
2880
  customElement,
2850
2881
  data,
2851
2882
  datalist,
@@ -2923,6 +2954,7 @@ function Loading(props = {}) {
2923
2954
  object,
2924
2955
  ol,
2925
2956
  on,
2957
+ onCleanup,
2926
2958
  onMount,
2927
2959
  onUnmount,
2928
2960
  optgroup,
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TagProps, N as NodeChildren, a as NodeChild } from './tagFactory-D9e0QGIE.cjs';
2
- export { S as SVG_NS, t as tagFactory } from './tagFactory-D9e0QGIE.cjs';
1
+ import { T as TagProps, N as NodeChildren, a as NodeChild } from './tagFactory-Dl8QCLga.cjs';
2
+ export { S as SVG_NS, t as tagFactory } from './tagFactory-Dl8QCLga.cjs';
3
3
  import { R as ReactiveSignal } from './signal-BnWpq6WB.cjs';
4
4
 
5
5
  declare const head: (first?: TagProps | NodeChildren, second?: NodeChildren) => Element;
@@ -289,7 +289,7 @@ declare function getSlot(slots: Slots | undefined, name?: string): SlotFn | unde
289
289
  * div({ nodes: [show(() => visible(), span({ nodes: "I toggle!" }))] });
290
290
  * ```
291
291
  */
292
- declare function show(condition: () => boolean, element: HTMLElement): HTMLElement;
292
+ declare function show<T extends Element>(condition: () => boolean, element: T): T;
293
293
  /**
294
294
  * Conditional rendering directive. Renders content only when condition is true.
295
295
  * When false, renders nothing (comment placeholder). Re-evaluates reactively.
@@ -429,6 +429,31 @@ interface LongPressOptions {
429
429
  * ```
430
430
  */
431
431
  declare const longPress: ActionFn<LongPressOptions>;
432
+ /**
433
+ * Copies the element's textContent to the clipboard on click.
434
+ * Optionally accepts a custom getter for the text to copy.
435
+ *
436
+ * @example
437
+ * ```ts
438
+ * // Copy element text
439
+ * action(el, copyOnClick);
440
+ *
441
+ * // Copy custom value
442
+ * action(el, copyOnClick, () => secretToken());
443
+ * ```
444
+ */
445
+ declare const copyOnClick: ActionFn<(() => string) | undefined>;
446
+ /**
447
+ * Auto-resizes a textarea to fit its content.
448
+ * Adjusts height on input and on initial attach.
449
+ *
450
+ * @example
451
+ * ```ts
452
+ * const ta = textarea({ placeholder: "Type here..." });
453
+ * action(ta, autoResize);
454
+ * ```
455
+ */
456
+ declare const autoResize: ActionFn<void>;
432
457
  /**
433
458
  * Traps keyboard focus within the element (Tab and Shift+Tab cycle).
434
459
  * Essential for accessible modals and dialogs.
@@ -819,6 +844,25 @@ declare function onMount(callback: () => undefined | CleanupFn, element?: HTMLEl
819
844
  * @param element The element to watch for removal
820
845
  */
821
846
  declare function onUnmount(callback: CleanupFn, element: HTMLElement): void;
847
+ /**
848
+ * Register a cleanup callback that runs when the given element is disposed.
849
+ * Integrates with `when()`, `match()`, and `each()` which call `dispose()`
850
+ * on removed nodes, triggering all registered cleanup functions.
851
+ *
852
+ * @param callback Cleanup function (close sockets, clear intervals, etc.)
853
+ * @param element The component's root node to attach cleanup to
854
+ *
855
+ * @example
856
+ * ```ts
857
+ * function RealtimeBar(siteId: string) {
858
+ * const ws = new WebSocket(`/ws/sites/${siteId}/realtime`);
859
+ * const root = div({ nodes: "Realtime data..." });
860
+ * onCleanup(() => ws.close(), root);
861
+ * return root;
862
+ * }
863
+ * ```
864
+ */
865
+ declare function onCleanup(callback: CleanupFn, element: Node): void;
822
866
 
823
867
  /**
824
868
  * Context API for SibuJS — provides dependency injection across
@@ -1038,4 +1082,4 @@ interface LoadingProps {
1038
1082
  */
1039
1083
  declare function Loading(props?: LoadingProps): HTMLElement;
1040
1084
 
1041
- export { type ActionFn, type ArrayActions, type Context, DynamicComponent, type EffectOptions, ErrorBoundary, type ErrorBoundaryProps, Fragment, KeepAlive, type KeepAliveOptions, Loading, type LoadingProps, type LongPressOptions, NodeChild, NodeChildren, Portal, type Ref, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, a, abbr, action, address, area, array, article, aside, audio, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, customElement, data, datalist, dd, deepEqual, deepSignal, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enqueueBatchedSignal, fieldset, figcaption, figure, font, footer, form, g, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, memo, memoFn, menu, meta, meter, mount, nav, noscript, object, ol, on, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerComponent, registerDisposer, resolveComponent, rp, rt, ruby, s, samp, script, section, select, setGlobalErrorHandler, show, signal, slot, small, source, span, stop, store, strong, style, sub, summary, sup, svg, symbol, table, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track, trapFocus, tspan, u, ul, unregisterComponent, untracked, use, var_, video, watch, when, withSSR, writable };
1085
+ export { type ActionFn, type ArrayActions, type Context, DynamicComponent, type EffectOptions, ErrorBoundary, type ErrorBoundaryProps, Fragment, KeepAlive, type KeepAliveOptions, Loading, type LoadingProps, type LongPressOptions, NodeChild, NodeChildren, Portal, type Ref, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, a, abbr, action, address, area, array, article, aside, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, customElement, data, datalist, dd, deepEqual, deepSignal, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enqueueBatchedSignal, fieldset, figcaption, figure, font, footer, form, g, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, memo, memoFn, menu, meta, meter, mount, nav, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerComponent, registerDisposer, resolveComponent, rp, rt, ruby, s, samp, script, section, select, setGlobalErrorHandler, show, signal, slot, small, source, span, stop, store, strong, style, sub, summary, sup, svg, symbol, table, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track, trapFocus, tspan, u, ul, unregisterComponent, untracked, use, var_, video, watch, when, withSSR, writable };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as TagProps, N as NodeChildren, a as NodeChild } from './tagFactory-D9e0QGIE.js';
2
- export { S as SVG_NS, t as tagFactory } from './tagFactory-D9e0QGIE.js';
1
+ import { T as TagProps, N as NodeChildren, a as NodeChild } from './tagFactory-Dl8QCLga.js';
2
+ export { S as SVG_NS, t as tagFactory } from './tagFactory-Dl8QCLga.js';
3
3
  import { R as ReactiveSignal } from './signal-BnWpq6WB.js';
4
4
 
5
5
  declare const head: (first?: TagProps | NodeChildren, second?: NodeChildren) => Element;
@@ -289,7 +289,7 @@ declare function getSlot(slots: Slots | undefined, name?: string): SlotFn | unde
289
289
  * div({ nodes: [show(() => visible(), span({ nodes: "I toggle!" }))] });
290
290
  * ```
291
291
  */
292
- declare function show(condition: () => boolean, element: HTMLElement): HTMLElement;
292
+ declare function show<T extends Element>(condition: () => boolean, element: T): T;
293
293
  /**
294
294
  * Conditional rendering directive. Renders content only when condition is true.
295
295
  * When false, renders nothing (comment placeholder). Re-evaluates reactively.
@@ -429,6 +429,31 @@ interface LongPressOptions {
429
429
  * ```
430
430
  */
431
431
  declare const longPress: ActionFn<LongPressOptions>;
432
+ /**
433
+ * Copies the element's textContent to the clipboard on click.
434
+ * Optionally accepts a custom getter for the text to copy.
435
+ *
436
+ * @example
437
+ * ```ts
438
+ * // Copy element text
439
+ * action(el, copyOnClick);
440
+ *
441
+ * // Copy custom value
442
+ * action(el, copyOnClick, () => secretToken());
443
+ * ```
444
+ */
445
+ declare const copyOnClick: ActionFn<(() => string) | undefined>;
446
+ /**
447
+ * Auto-resizes a textarea to fit its content.
448
+ * Adjusts height on input and on initial attach.
449
+ *
450
+ * @example
451
+ * ```ts
452
+ * const ta = textarea({ placeholder: "Type here..." });
453
+ * action(ta, autoResize);
454
+ * ```
455
+ */
456
+ declare const autoResize: ActionFn<void>;
432
457
  /**
433
458
  * Traps keyboard focus within the element (Tab and Shift+Tab cycle).
434
459
  * Essential for accessible modals and dialogs.
@@ -819,6 +844,25 @@ declare function onMount(callback: () => undefined | CleanupFn, element?: HTMLEl
819
844
  * @param element The element to watch for removal
820
845
  */
821
846
  declare function onUnmount(callback: CleanupFn, element: HTMLElement): void;
847
+ /**
848
+ * Register a cleanup callback that runs when the given element is disposed.
849
+ * Integrates with `when()`, `match()`, and `each()` which call `dispose()`
850
+ * on removed nodes, triggering all registered cleanup functions.
851
+ *
852
+ * @param callback Cleanup function (close sockets, clear intervals, etc.)
853
+ * @param element The component's root node to attach cleanup to
854
+ *
855
+ * @example
856
+ * ```ts
857
+ * function RealtimeBar(siteId: string) {
858
+ * const ws = new WebSocket(`/ws/sites/${siteId}/realtime`);
859
+ * const root = div({ nodes: "Realtime data..." });
860
+ * onCleanup(() => ws.close(), root);
861
+ * return root;
862
+ * }
863
+ * ```
864
+ */
865
+ declare function onCleanup(callback: CleanupFn, element: Node): void;
822
866
 
823
867
  /**
824
868
  * Context API for SibuJS — provides dependency injection across
@@ -1038,4 +1082,4 @@ interface LoadingProps {
1038
1082
  */
1039
1083
  declare function Loading(props?: LoadingProps): HTMLElement;
1040
1084
 
1041
- export { type ActionFn, type ArrayActions, type Context, DynamicComponent, type EffectOptions, ErrorBoundary, type ErrorBoundaryProps, Fragment, KeepAlive, type KeepAliveOptions, Loading, type LoadingProps, type LongPressOptions, NodeChild, NodeChildren, Portal, type Ref, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, a, abbr, action, address, area, array, article, aside, audio, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, customElement, data, datalist, dd, deepEqual, deepSignal, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enqueueBatchedSignal, fieldset, figcaption, figure, font, footer, form, g, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, memo, memoFn, menu, meta, meter, mount, nav, noscript, object, ol, on, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerComponent, registerDisposer, resolveComponent, rp, rt, ruby, s, samp, script, section, select, setGlobalErrorHandler, show, signal, slot, small, source, span, stop, store, strong, style, sub, summary, sup, svg, symbol, table, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track, trapFocus, tspan, u, ul, unregisterComponent, untracked, use, var_, video, watch, when, withSSR, writable };
1085
+ export { type ActionFn, type ArrayActions, type Context, DynamicComponent, type EffectOptions, ErrorBoundary, type ErrorBoundaryProps, Fragment, KeepAlive, type KeepAliveOptions, Loading, type LoadingProps, type LongPressOptions, NodeChild, NodeChildren, Portal, type Ref, type SignalOptions, type SlotFn, type Slots, type StoreActions, Suspense, type SuspenseProps, TagProps, a, abbr, action, address, area, array, article, aside, audio, autoResize, b, base, batch, bdi, bdo, bindDynamic, blockquote, body, br, button, canvas, caption, catchError, catchErrorAsync, center, checkLeaks, circle, cite, clickOutside, clipPath, code, col, colgroup, context, copyOnClick, customElement, data, datalist, dd, deepEqual, deepSignal, defs, del, derived, details, dfn, dialog, disableSSR, dispose, div, dl, dt, each, effect, ellipse, em, embed, enableSSR, enqueueBatchedSignal, fieldset, figcaption, figure, font, footer, form, g, getSlot, h1, h2, h3, h4, h5, h6, head, header, hr, html, i, iframe, img, input, ins, isBatching, isSSR, kbd, label, lazy, legend, li, line, linearGradient, link, longPress, main, map, mark, marker, marquee, mask, match, math, memo, memoFn, menu, meta, meter, mount, nav, noscript, object, ol, on, onCleanup, onMount, onUnmount, optgroup, option, output, p, param, path, pattern, picture, polygon, polyline, portal, pre, progress, q, radialGradient, reactiveArray, rect, ref, registerComponent, registerDisposer, resolveComponent, rp, rt, ruby, s, samp, script, section, select, setGlobalErrorHandler, show, signal, slot, small, source, span, stop, store, strong, style, sub, summary, sup, svg, symbol, table, tbody, td, template, text, textarea, tfoot, th, thead, time, title, tr, track, trapFocus, tspan, u, ul, unregisterComponent, untracked, use, var_, video, watch, when, withSSR, writable };
package/dist/index.js CHANGED
@@ -8,9 +8,11 @@ import {
8
8
  Suspense,
9
9
  action,
10
10
  array,
11
+ autoResize,
11
12
  catchError,
12
13
  catchErrorAsync,
13
14
  clickOutside,
15
+ copyOnClick,
14
16
  deepEqual,
15
17
  deepSignal,
16
18
  each,
@@ -22,6 +24,7 @@ import {
22
24
  memo,
23
25
  memoFn,
24
26
  mount,
27
+ onCleanup,
25
28
  onMount,
26
29
  onUnmount,
27
30
  reactiveArray,
@@ -35,7 +38,7 @@ import {
35
38
  unregisterComponent,
36
39
  when,
37
40
  writable
38
- } from "./chunk-24WSRM54.js";
41
+ } from "./chunk-32ZISOLJ.js";
39
42
  import {
40
43
  a,
41
44
  abbr,
@@ -173,7 +176,7 @@ import {
173
176
  use,
174
177
  var_,
175
178
  video
176
- } from "./chunk-OWLQ4HZI.js";
179
+ } from "./chunk-EWFVA3TJ.js";
177
180
  import {
178
181
  watch
179
182
  } from "./chunk-CZUGLNJS.js";
@@ -186,7 +189,7 @@ import {
186
189
  dispose,
187
190
  registerDisposer,
188
191
  tagFactory
189
- } from "./chunk-QVKGGB2S.js";
192
+ } from "./chunk-MDVXJWFN.js";
190
193
  import {
191
194
  bindDynamic
192
195
  } from "./chunk-SDLZDHKP.js";
@@ -230,6 +233,7 @@ export {
230
233
  article,
231
234
  aside,
232
235
  audio,
236
+ autoResize,
233
237
  b,
234
238
  base,
235
239
  batch,
@@ -254,6 +258,7 @@ export {
254
258
  col,
255
259
  colgroup,
256
260
  context,
261
+ copyOnClick,
257
262
  customElement,
258
263
  data,
259
264
  datalist,
@@ -331,6 +336,7 @@ export {
331
336
  object,
332
337
  ol,
333
338
  on,
339
+ onCleanup,
334
340
  onMount,
335
341
  onUnmount,
336
342
  optgroup,
@@ -58,11 +58,17 @@ interface PersistOptions<T = unknown> {
58
58
  * Encrypt the serialized value before writing to storage.
59
59
  * Paired with `decrypt` for reading. Use for sensitive data.
60
60
  *
61
+ * **Security:** Use a real encryption algorithm (e.g. AES-GCM via Web Crypto API).
62
+ * Do NOT use `btoa()`/`atob()` — Base64 is encoding, not encryption, and provides
63
+ * zero confidentiality.
64
+ *
61
65
  * @example
62
66
  * ```ts
67
+ * // Example using a simple XOR cipher for illustration — in production,
68
+ * // use crypto.subtle.encrypt() with AES-GCM or a proven library.
63
69
  * persisted("token", "", {
64
- * encrypt: (v) => btoa(v), // or use Web Crypto API
65
- * decrypt: (v) => atob(v),
70
+ * encrypt: (v) => myAesGcmEncrypt(v, secretKey),
71
+ * decrypt: (v) => myAesGcmDecrypt(v, secretKey),
66
72
  * });
67
73
  * ```
68
74
  */
@@ -58,11 +58,17 @@ interface PersistOptions<T = unknown> {
58
58
  * Encrypt the serialized value before writing to storage.
59
59
  * Paired with `decrypt` for reading. Use for sensitive data.
60
60
  *
61
+ * **Security:** Use a real encryption algorithm (e.g. AES-GCM via Web Crypto API).
62
+ * Do NOT use `btoa()`/`atob()` — Base64 is encoding, not encryption, and provides
63
+ * zero confidentiality.
64
+ *
61
65
  * @example
62
66
  * ```ts
67
+ * // Example using a simple XOR cipher for illustration — in production,
68
+ * // use crypto.subtle.encrypt() with AES-GCM or a proven library.
63
69
  * persisted("token", "", {
64
- * encrypt: (v) => btoa(v), // or use Web Crypto API
65
- * decrypt: (v) => atob(v),
70
+ * encrypt: (v) => myAesGcmEncrypt(v, secretKey),
71
+ * decrypt: (v) => myAesGcmDecrypt(v, secretKey),
66
72
  * });
67
73
  * ```
68
74
  */
package/dist/plugins.cjs CHANGED
@@ -59,7 +59,8 @@ __export(ssr_exports, {
59
59
  resetSSRState: () => resetSSRState,
60
60
  serializeState: () => serializeState,
61
61
  ssrSuspense: () => ssrSuspense,
62
- suspenseSwapScript: () => suspenseSwapScript
62
+ suspenseSwapScript: () => suspenseSwapScript,
63
+ trustHTML: () => trustHTML
63
64
  });
64
65
  function ssrErrorComment(err) {
65
66
  if (_isDev7) {
@@ -122,6 +123,9 @@ function hydrateNode(serverNode, clientNode) {
122
123
  hydrateNode(serverChildren[i2], clientChildren[i2]);
123
124
  }
124
125
  }
126
+ function trustHTML(html2) {
127
+ return html2;
128
+ }
125
129
  function renderToDocument(component, options = {}) {
126
130
  let content;
127
131
  try {
@@ -343,6 +347,7 @@ var init_ssr = __esm({
343
347
  // plugins.ts
344
348
  var plugins_exports = {};
345
349
  __export(plugins_exports, {
350
+ KeepAliveRoute: () => KeepAliveRoute,
346
351
  Outlet: () => Outlet,
347
352
  Route: () => Route,
348
353
  RouterLink: () => RouterLink,
@@ -698,7 +703,7 @@ function bindChildNode(placeholder, getter) {
698
703
  const node = lastNodes[i2];
699
704
  if (node.parentNode) node.parentNode.removeChild(node);
700
705
  }
701
- if (result == null) {
706
+ if (result == null || typeof result === "boolean") {
702
707
  lastNodes.length = 0;
703
708
  return;
704
709
  }
@@ -713,6 +718,7 @@ function bindChildNode(placeholder, getter) {
713
718
  if (lastNodes.length < result.length) lastNodes = new Array(result.length);
714
719
  for (let i2 = 0; i2 < result.length; i2++) {
715
720
  const item = result[i2];
721
+ if (item == null || typeof item === "boolean") continue;
716
722
  const node = item instanceof Node ? item : document.createTextNode(String(item));
717
723
  parent.insertBefore(node, anchor);
718
724
  lastNodes[count++] = node;
@@ -742,6 +748,27 @@ function registerDisposer(node, teardown) {
742
748
  disposers.push(teardown);
743
749
  if (_isDev5) activeBindingCount++;
744
750
  }
751
+ function dispose(node) {
752
+ const stack = [node];
753
+ const order = [];
754
+ while (stack.length > 0) {
755
+ const current = stack.pop();
756
+ order.push(current);
757
+ const children = current.childNodes;
758
+ for (let i2 = 0; i2 < children.length; i2++) {
759
+ stack.push(children[i2]);
760
+ }
761
+ }
762
+ for (let i2 = order.length - 1; i2 >= 0; i2--) {
763
+ const current = order[i2];
764
+ const disposers = elementDisposers.get(current);
765
+ if (disposers) {
766
+ if (_isDev5) activeBindingCount -= disposers.length;
767
+ for (const d of disposers) d();
768
+ elementDisposers.delete(current);
769
+ }
770
+ }
771
+ }
745
772
 
746
773
  // src/core/rendering/tagFactory.ts
747
774
  var SVG_NS = "http://www.w3.org/2000/svg";
@@ -828,6 +855,9 @@ function appendChildren(el, nodes) {
828
855
  el.textContent = String(nodes);
829
856
  return;
830
857
  }
858
+ if (typeof nodes === "boolean" || nodes == null) {
859
+ return;
860
+ }
831
861
  if (typeof nodes === "function") {
832
862
  const ph = document.createComment("");
833
863
  el.appendChild(ph);
@@ -856,11 +886,11 @@ function appendChildren(el, nodes) {
856
886
  registerDisposer(el, bindChildNode(ph, inner));
857
887
  } else if (inner instanceof Node) {
858
888
  el.appendChild(inner);
859
- } else if (inner != null) {
889
+ } else if (inner != null && typeof inner !== "boolean") {
860
890
  el.appendChild(document.createTextNode(String(inner)));
861
891
  }
862
892
  }
863
- } else if (c != null) {
893
+ } else if (c != null && typeof c !== "boolean") {
864
894
  el.appendChild(document.createTextNode(String(c)));
865
895
  }
866
896
  }
@@ -2092,6 +2122,120 @@ function Route() {
2092
2122
  routeCleanups.push(cleanupNodes);
2093
2123
  return anchor;
2094
2124
  }
2125
+ function KeepAliveRoute(options) {
2126
+ if (!globalRouter) throw new Error("Router not initialized. Call createRouter() first.");
2127
+ const anchor = document.createComment("keep-alive-route");
2128
+ const cache = /* @__PURE__ */ new Map();
2129
+ const lruOrder = [];
2130
+ const routerOpts = globalRouter["options"];
2131
+ const keepAliveOpt = routerOpts.keepAlive;
2132
+ const maxCache = options?.max ?? (typeof keepAliveOpt === "number" ? keepAliveOpt : 20);
2133
+ const includeNames = options?.include ?? (Array.isArray(keepAliveOpt) ? keepAliveOpt : void 0);
2134
+ let currentNode = null;
2135
+ let currentKey = "";
2136
+ let currentCached = false;
2137
+ let isUpdating = false;
2138
+ let pendingUpdate = false;
2139
+ const update = async () => {
2140
+ if (!globalRouter) return;
2141
+ if (isUpdating) {
2142
+ pendingUpdate = true;
2143
+ return;
2144
+ }
2145
+ const route2 = globalRouter.currentRoute;
2146
+ const match = globalRouter["matcher"].match(route2.path);
2147
+ if (!match) return;
2148
+ const { route: routeDef } = match;
2149
+ if ("redirect" in routeDef) {
2150
+ const redirectPath = typeof routeDef.redirect === "function" ? routeDef.redirect(route2) : routeDef.redirect;
2151
+ queueMicrotask(() => globalRouter?.navigate(redirectPath));
2152
+ return;
2153
+ }
2154
+ if (!("component" in routeDef)) return;
2155
+ const cacheKey = route2.path;
2156
+ const shouldCache = !includeNames || routeDef.name != null && includeNames.includes(routeDef.name);
2157
+ if (cacheKey === currentKey && currentNode) return;
2158
+ isUpdating = true;
2159
+ const parent = anchor.parentNode;
2160
+ if (!parent) {
2161
+ isUpdating = false;
2162
+ return;
2163
+ }
2164
+ try {
2165
+ if (currentNode?.parentNode) {
2166
+ parent.removeChild(currentNode);
2167
+ if (!currentCached) {
2168
+ dispose(currentNode);
2169
+ }
2170
+ }
2171
+ if (shouldCache && cache.has(cacheKey)) {
2172
+ currentNode = cache.get(cacheKey);
2173
+ currentCached = true;
2174
+ const idx = lruOrder.indexOf(cacheKey);
2175
+ if (idx !== -1) {
2176
+ lruOrder.splice(idx, 1);
2177
+ }
2178
+ lruOrder.push(cacheKey);
2179
+ } else {
2180
+ const component = await globalRouter.loadComponent(routeDef, route2.path);
2181
+ const node = component();
2182
+ if (!node || route2.path !== globalRouter.currentRoute.path) {
2183
+ isUpdating = false;
2184
+ return;
2185
+ }
2186
+ currentNode = node;
2187
+ currentCached = shouldCache;
2188
+ if (shouldCache) {
2189
+ cache.set(cacheKey, node);
2190
+ lruOrder.push(cacheKey);
2191
+ while (lruOrder.length > maxCache) {
2192
+ const evictKey = lruOrder.shift();
2193
+ const evictNode = cache.get(evictKey);
2194
+ if (evictNode) {
2195
+ dispose(evictNode);
2196
+ if (evictNode.parentNode) evictNode.parentNode.removeChild(evictNode);
2197
+ cache.delete(evictKey);
2198
+ }
2199
+ }
2200
+ }
2201
+ }
2202
+ currentKey = cacheKey;
2203
+ if (currentNode) {
2204
+ parent.insertBefore(currentNode, anchor.nextSibling);
2205
+ }
2206
+ } catch (error) {
2207
+ console.error("[KeepAliveRoute] Component error:", error);
2208
+ } finally {
2209
+ isUpdating = false;
2210
+ if (pendingUpdate) {
2211
+ pendingUpdate = false;
2212
+ update();
2213
+ }
2214
+ }
2215
+ };
2216
+ let initialized = false;
2217
+ const wrappedUpdate = async () => {
2218
+ await update();
2219
+ initialized = true;
2220
+ };
2221
+ track(wrappedUpdate);
2222
+ if (!initialized) {
2223
+ queueMicrotask(() => {
2224
+ if (!initialized && anchor.parentNode) wrappedUpdate();
2225
+ });
2226
+ }
2227
+ routeCleanups.push(() => {
2228
+ for (const node of cache.values()) {
2229
+ dispose(node);
2230
+ if (node.parentNode) node.parentNode.removeChild(node);
2231
+ }
2232
+ cache.clear();
2233
+ lruOrder.length = 0;
2234
+ if (currentNode?.parentNode) currentNode.parentNode.removeChild(currentNode);
2235
+ currentNode = null;
2236
+ });
2237
+ return anchor;
2238
+ }
2095
2239
  function RouterLink(props) {
2096
2240
  if (!globalRouter) throw new Error("Router not initialized. Call createRouter() first.");
2097
2241
  const { to, replace: replace2 = false, activeClass, exactActiveClass, nodes, target, rel, ...attrs } = props;
@@ -3392,6 +3536,7 @@ function createBootSequence() {
3392
3536
  }
3393
3537
  // Annotate the CommonJS export names for ESM import in node:
3394
3538
  0 && (module.exports = {
3539
+ KeepAliveRoute,
3395
3540
  Outlet,
3396
3541
  Route,
3397
3542
  RouterLink,