sibujs 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1630 -0
  3. package/dist/browser.cjs +815 -0
  4. package/dist/browser.d.cts +174 -0
  5. package/dist/browser.d.ts +174 -0
  6. package/dist/browser.js +458 -0
  7. package/dist/build.cjs +4970 -0
  8. package/dist/build.d.cts +630 -0
  9. package/dist/build.d.ts +630 -0
  10. package/dist/build.js +2478 -0
  11. package/dist/cdn.global.js +115 -0
  12. package/dist/chunk-27QC4FPL.js +67 -0
  13. package/dist/chunk-2ABBWCGC.js +65 -0
  14. package/dist/chunk-2MUNQYZ7.js +26 -0
  15. package/dist/chunk-2PSPKNUI.js +1711 -0
  16. package/dist/chunk-35CDLDX5.js +1758 -0
  17. package/dist/chunk-36MU4CFV.js +41 -0
  18. package/dist/chunk-3FIQOFI6.js +182 -0
  19. package/dist/chunk-3GHNC2BN.js +28 -0
  20. package/dist/chunk-3HLWWEPU.js +909 -0
  21. package/dist/chunk-3IVI3J54.js +252 -0
  22. package/dist/chunk-3KZ72WNW.js +944 -0
  23. package/dist/chunk-4AU64SQV.js +182 -0
  24. package/dist/chunk-4MOK7HAR.js +84 -0
  25. package/dist/chunk-4QK6FBDH.js +1429 -0
  26. package/dist/chunk-566Z7HXB.js +737 -0
  27. package/dist/chunk-5CRBB7XP.js +358 -0
  28. package/dist/chunk-5G67D3IZ.js +168 -0
  29. package/dist/chunk-5NCPAWBE.js +99 -0
  30. package/dist/chunk-5O2RKXR3.js +1444 -0
  31. package/dist/chunk-6BTBDO6A.js +633 -0
  32. package/dist/chunk-6IWEHW57.js +43 -0
  33. package/dist/chunk-6JGMNCD6.js +282 -0
  34. package/dist/chunk-6QRLJNXR.js +1425 -0
  35. package/dist/chunk-7HM5UE5T.js +270 -0
  36. package/dist/chunk-7JOLTGUH.js +58 -0
  37. package/dist/chunk-7MCWJCQK.js +909 -0
  38. package/dist/chunk-7RIIFP3E.js +1758 -0
  39. package/dist/chunk-7UASYN3G.js +254 -0
  40. package/dist/chunk-7W2WYHDI.js +741 -0
  41. package/dist/chunk-7Y35RDSJ.js +872 -0
  42. package/dist/chunk-A65GFJBL.js +65 -0
  43. package/dist/chunk-AD6ZIEDK.js +67 -0
  44. package/dist/chunk-AK5Y72F3.js +1426 -0
  45. package/dist/chunk-APOMMWH4.js +282 -0
  46. package/dist/chunk-ARZVTWIQ.js +1750 -0
  47. package/dist/chunk-AWWBM2BI.js +664 -0
  48. package/dist/chunk-AX5VEQTY.js +58 -0
  49. package/dist/chunk-AYTXVOW3.js +1708 -0
  50. package/dist/chunk-BG4A246G.js +1746 -0
  51. package/dist/chunk-BNFJJA2L.js +1425 -0
  52. package/dist/chunk-BPKPBVU5.js +59 -0
  53. package/dist/chunk-BPKPPSXC.js +282 -0
  54. package/dist/chunk-BPWKKK7F.js +1711 -0
  55. package/dist/chunk-CCKX6YTC.js +1735 -0
  56. package/dist/chunk-CIF5Z3MP.js +58 -0
  57. package/dist/chunk-CSXYU7IO.js +457 -0
  58. package/dist/chunk-D6JD4FDC.js +26 -0
  59. package/dist/chunk-E7NGA7X2.js +59 -0
  60. package/dist/chunk-EEPPJKAE.js +443 -0
  61. package/dist/chunk-EJMYGAGQ.js +717 -0
  62. package/dist/chunk-EL6Z5MDY.js +55 -0
  63. package/dist/chunk-EP7VRLEB.js +41 -0
  64. package/dist/chunk-ETMEC6FH.js +99 -0
  65. package/dist/chunk-EZ2WHYVL.js +65 -0
  66. package/dist/chunk-EZRVMSZK.js +67 -0
  67. package/dist/chunk-F2TRGINX.js +254 -0
  68. package/dist/chunk-F5JCIH3Q.js +642 -0
  69. package/dist/chunk-FGK3JKMN.js +909 -0
  70. package/dist/chunk-FQWPKSTD.js +1437 -0
  71. package/dist/chunk-FWHVLMCI.js +26 -0
  72. package/dist/chunk-GBEYQRO2.js +303 -0
  73. package/dist/chunk-GBLES3NK.js +248 -0
  74. package/dist/chunk-GQVGUQW6.js +1436 -0
  75. package/dist/chunk-HCV2T76T.js +457 -0
  76. package/dist/chunk-HS7ZKVPR.js +182 -0
  77. package/dist/chunk-HXDVV7HZ.js +909 -0
  78. package/dist/chunk-IB23VMO3.js +1746 -0
  79. package/dist/chunk-IEMZ7RTT.js +99 -0
  80. package/dist/chunk-IPGRSN42.js +1750 -0
  81. package/dist/chunk-IVMOK2QN.js +1750 -0
  82. package/dist/chunk-JCLGQO7T.js +443 -0
  83. package/dist/chunk-JDXL7KDB.js +1436 -0
  84. package/dist/chunk-JIIFW636.js +270 -0
  85. package/dist/chunk-JWGEEH7H.js +944 -0
  86. package/dist/chunk-K2BESAG7.js +1688 -0
  87. package/dist/chunk-K2U5YGF4.js +877 -0
  88. package/dist/chunk-K45FQ4Y4.js +175 -0
  89. package/dist/chunk-K7BPE427.js +1432 -0
  90. package/dist/chunk-KL3266RS.js +26 -0
  91. package/dist/chunk-KNN4P7DZ.js +84 -0
  92. package/dist/chunk-KP2DZH5Q.js +254 -0
  93. package/dist/chunk-KZHAJSQR.js +1636 -0
  94. package/dist/chunk-LBKGHMQV.js +1750 -0
  95. package/dist/chunk-LBTEPL7A.js +1731 -0
  96. package/dist/chunk-LEBBPTDB.js +1444 -0
  97. package/dist/chunk-LLH63WVQ.js +98 -0
  98. package/dist/chunk-LWVR2C4G.js +1711 -0
  99. package/dist/chunk-M3MDTVV2.js +896 -0
  100. package/dist/chunk-M5GNLDEO.js +303 -0
  101. package/dist/chunk-MFHVGKET.js +267 -0
  102. package/dist/chunk-MGWSG3PM.js +358 -0
  103. package/dist/chunk-MJNB47HB.js +19 -0
  104. package/dist/chunk-MLKGABMK.js +9 -0
  105. package/dist/chunk-MQWTY3JY.js +944 -0
  106. package/dist/chunk-MZZOQHNI.js +642 -0
  107. package/dist/chunk-NIHWGZS4.js +1426 -0
  108. package/dist/chunk-NSVVHQK5.js +41 -0
  109. package/dist/chunk-NVI2WE7D.js +443 -0
  110. package/dist/chunk-O7QBO3PH.js +58 -0
  111. package/dist/chunk-OAUPQBO2.js +270 -0
  112. package/dist/chunk-OB2LMD7C.js +297 -0
  113. package/dist/chunk-OHEYBWQU.js +58 -0
  114. package/dist/chunk-OI6OXUHJ.js +443 -0
  115. package/dist/chunk-OX2VMRMV.js +633 -0
  116. package/dist/chunk-P4FYE5TX.js +866 -0
  117. package/dist/chunk-P5KFWM4H.js +98 -0
  118. package/dist/chunk-PUMLE7RJ.js +1711 -0
  119. package/dist/chunk-Q4MFANBF.js +282 -0
  120. package/dist/chunk-QLEKZMMU.js +282 -0
  121. package/dist/chunk-RGGNGVO3.js +98 -0
  122. package/dist/chunk-RKJDRVV6.js +443 -0
  123. package/dist/chunk-S5BHU353.js +43 -0
  124. package/dist/chunk-SHQUSFH7.js +1426 -0
  125. package/dist/chunk-SMB4DBMD.js +182 -0
  126. package/dist/chunk-SNYHQP3D.js +743 -0
  127. package/dist/chunk-T24L3TBF.js +1717 -0
  128. package/dist/chunk-TAQNSOKT.js +692 -0
  129. package/dist/chunk-TDNY4SUA.js +41 -0
  130. package/dist/chunk-TNNF56IQ.js +1750 -0
  131. package/dist/chunk-TR7E6LYX.js +457 -0
  132. package/dist/chunk-URWUFH45.js +98 -0
  133. package/dist/chunk-UUSIH3XH.js +1429 -0
  134. package/dist/chunk-UYFNXLKR.js +1436 -0
  135. package/dist/chunk-V6F7KUWD.js +270 -0
  136. package/dist/chunk-VCZLXRMR.js +254 -0
  137. package/dist/chunk-VDHXSSBT.js +1426 -0
  138. package/dist/chunk-VM4QMKVK.js +254 -0
  139. package/dist/chunk-VWGYKYL2.js +737 -0
  140. package/dist/chunk-VX2OFBJN.js +1426 -0
  141. package/dist/chunk-VXVIE6DG.js +84 -0
  142. package/dist/chunk-W4OH7HG4.js +40 -0
  143. package/dist/chunk-WBVJX4GZ.js +98 -0
  144. package/dist/chunk-WDU2ZV4I.js +1426 -0
  145. package/dist/chunk-X6VUCICU.js +457 -0
  146. package/dist/chunk-XAY7FM7Y.js +618 -0
  147. package/dist/chunk-XJZ5Z2CM.js +642 -0
  148. package/dist/chunk-XKVFQTJJ.js +254 -0
  149. package/dist/chunk-XRLFASCY.js +22 -0
  150. package/dist/chunk-XYU6TZOW.js +182 -0
  151. package/dist/chunk-Y745CBVB.js +944 -0
  152. package/dist/chunk-YLBJSXYY.js +944 -0
  153. package/dist/chunk-YQJIKVPZ.js +1429 -0
  154. package/dist/chunk-YRM2VCZF.js +457 -0
  155. package/dist/chunk-YS33KBVJ.js +944 -0
  156. package/dist/chunk-Z27DZPDG.js +41 -0
  157. package/dist/chunk-ZXQ5NAEN.js +32 -0
  158. package/dist/contracts-B552GopR.d.cts +245 -0
  159. package/dist/contracts-B552GopR.d.ts +245 -0
  160. package/dist/contracts-Bg1ECISC.d.cts +245 -0
  161. package/dist/contracts-Bg1ECISC.d.ts +245 -0
  162. package/dist/contracts-CMriKJ6P.d.cts +245 -0
  163. package/dist/contracts-CMriKJ6P.d.ts +245 -0
  164. package/dist/contracts-DOrhwbke.d.cts +245 -0
  165. package/dist/contracts-DOrhwbke.d.ts +245 -0
  166. package/dist/data.cjs +1373 -0
  167. package/dist/data.d.cts +434 -0
  168. package/dist/data.d.ts +434 -0
  169. package/dist/data.js +945 -0
  170. package/dist/devtools.cjs +1357 -0
  171. package/dist/devtools.d.cts +473 -0
  172. package/dist/devtools.d.ts +473 -0
  173. package/dist/devtools.js +1084 -0
  174. package/dist/ecosystem.cjs +1046 -0
  175. package/dist/ecosystem.d.cts +247 -0
  176. package/dist/ecosystem.d.ts +247 -0
  177. package/dist/ecosystem.js +369 -0
  178. package/dist/extras.cjs +8457 -0
  179. package/dist/extras.d.cts +2356 -0
  180. package/dist/extras.d.ts +2356 -0
  181. package/dist/extras.js +5152 -0
  182. package/dist/index.cjs +2648 -0
  183. package/dist/index.d.cts +869 -0
  184. package/dist/index.d.ts +869 -0
  185. package/dist/index.js +386 -0
  186. package/dist/motion.cjs +604 -0
  187. package/dist/motion.d.cts +146 -0
  188. package/dist/motion.d.ts +146 -0
  189. package/dist/motion.js +346 -0
  190. package/dist/patterns.cjs +815 -0
  191. package/dist/patterns.d.cts +163 -0
  192. package/dist/patterns.d.ts +163 -0
  193. package/dist/patterns.js +296 -0
  194. package/dist/performance.cjs +927 -0
  195. package/dist/performance.d.cts +416 -0
  196. package/dist/performance.d.ts +416 -0
  197. package/dist/performance.js +654 -0
  198. package/dist/plugins.cjs +2487 -0
  199. package/dist/plugins.d.cts +393 -0
  200. package/dist/plugins.d.ts +393 -0
  201. package/dist/plugins.js +1504 -0
  202. package/dist/signal-BnWpq6WB.d.cts +5 -0
  203. package/dist/signal-BnWpq6WB.d.ts +5 -0
  204. package/dist/src/components/ErrorBoundary.d.ts +15 -0
  205. package/dist/src/components/ErrorBoundary.js +119 -0
  206. package/dist/src/core/catch.d.ts +11 -0
  207. package/dist/src/core/catch.js +28 -0
  208. package/dist/src/core/each.d.ts +13 -0
  209. package/dist/src/core/each.js +68 -0
  210. package/dist/src/core/for.d.ts +12 -0
  211. package/dist/src/core/for.js +67 -0
  212. package/dist/src/core/html.d.ts +137 -0
  213. package/dist/src/core/html.js +155 -0
  214. package/dist/src/core/htmlIf.d.ts +11 -0
  215. package/dist/src/core/htmlIf.js +18 -0
  216. package/dist/src/core/lazy.d.ts +7 -0
  217. package/dist/src/core/lazy.js +16 -0
  218. package/dist/src/core/mount.d.ts +7 -0
  219. package/dist/src/core/mount.js +12 -0
  220. package/dist/src/core/slots.d.ts +3 -0
  221. package/dist/src/core/slots.js +3 -0
  222. package/dist/src/core/suspense.d.ts +10 -0
  223. package/dist/src/core/suspense.js +33 -0
  224. package/dist/src/core/tagFactory.d.ts +13 -0
  225. package/dist/src/core/tagFactory.js +86 -0
  226. package/dist/src/core/test.d.ts +11 -0
  227. package/dist/src/core/test.js +28 -0
  228. package/dist/src/core/types.d.ts +2 -0
  229. package/dist/src/core/types.js +1 -0
  230. package/dist/src/core/useComputed.d.ts +6 -0
  231. package/dist/src/core/useComputed.js +30 -0
  232. package/dist/src/core/useEffect.d.ts +6 -0
  233. package/dist/src/core/useEffect.js +23 -0
  234. package/dist/src/core/useState.d.ts +10 -0
  235. package/dist/src/core/useState.js +34 -0
  236. package/dist/src/core/useStore.d.ts +19 -0
  237. package/dist/src/core/useStore.js +53 -0
  238. package/dist/src/core/useWatch.d.ts +8 -0
  239. package/dist/src/core/useWatch.js +23 -0
  240. package/dist/src/plugins/i18n.d.ts +6 -0
  241. package/dist/src/plugins/i18n.js +16 -0
  242. package/dist/src/plugins/router.d.ts +188 -0
  243. package/dist/src/plugins/router.js +1178 -0
  244. package/dist/src/reactivity/bindAttribute.d.ts +5 -0
  245. package/dist/src/reactivity/bindAttribute.js +31 -0
  246. package/dist/src/reactivity/bindChildNode.d.ts +10 -0
  247. package/dist/src/reactivity/bindChildNode.js +46 -0
  248. package/dist/src/reactivity/bindTextNode.d.ts +10 -0
  249. package/dist/src/reactivity/bindTextNode.js +27 -0
  250. package/dist/src/reactivity/signal.d.ts +3 -0
  251. package/dist/src/reactivity/signal.js +1 -0
  252. package/dist/src/reactivity/track.d.ts +18 -0
  253. package/dist/src/reactivity/track.js +73 -0
  254. package/dist/src/reactivity/useComputed.d.ts +6 -0
  255. package/dist/src/reactivity/useComputed.js +30 -0
  256. package/dist/src/reactivity/useEffect.d.ts +6 -0
  257. package/dist/src/reactivity/useEffect.js +23 -0
  258. package/dist/src/reactivity/useState.d.ts +10 -0
  259. package/dist/src/reactivity/useState.js +34 -0
  260. package/dist/src/reactivity/useStore.d.ts +19 -0
  261. package/dist/src/reactivity/useStore.js +53 -0
  262. package/dist/src/reactivity/useWatch.d.ts +8 -0
  263. package/dist/src/reactivity/useWatch.js +23 -0
  264. package/dist/src/utils/sanitize.d.ts +1 -0
  265. package/dist/src/utils/sanitize.js +8 -0
  266. package/dist/ssr-27FOM46T.js +35 -0
  267. package/dist/ssr-GFUTTSJD.js +22 -0
  268. package/dist/ssr-K7DCR6BZ.js +35 -0
  269. package/dist/ssr-O6LFMRFP.js +35 -0
  270. package/dist/ssr-QZEVGMMK.js +35 -0
  271. package/dist/ssr-SGVBCAGC.js +35 -0
  272. package/dist/ssr-UB2IXCYX.js +35 -0
  273. package/dist/ssr-XBZQNV4O.js +22 -0
  274. package/dist/ssr-Y76FSXDU.js +35 -0
  275. package/dist/ssr-YQJ4AYBD.js +35 -0
  276. package/dist/ssr.cjs +1757 -0
  277. package/dist/ssr.d.cts +478 -0
  278. package/dist/ssr.d.ts +478 -0
  279. package/dist/ssr.js +743 -0
  280. package/dist/tagFactory-CZPO4RXF.d.cts +34 -0
  281. package/dist/tagFactory-CZPO4RXF.d.ts +34 -0
  282. package/dist/tagFactory-CgImPVMY.d.cts +22 -0
  283. package/dist/tagFactory-CgImPVMY.d.ts +22 -0
  284. package/dist/tagFactory-Cw1iv5if.d.cts +22 -0
  285. package/dist/tagFactory-Cw1iv5if.d.ts +22 -0
  286. package/dist/tagFactory-DeAXq9ef.d.cts +30 -0
  287. package/dist/tagFactory-DeAXq9ef.d.ts +30 -0
  288. package/dist/tagFactory-SkY0a7L1.d.cts +22 -0
  289. package/dist/tagFactory-SkY0a7L1.d.ts +22 -0
  290. package/dist/testing.cjs +1919 -0
  291. package/dist/testing.d.cts +491 -0
  292. package/dist/testing.d.ts +491 -0
  293. package/dist/testing.js +1862 -0
  294. package/dist/ui.cjs +1497 -0
  295. package/dist/ui.d.cts +264 -0
  296. package/dist/ui.d.ts +264 -0
  297. package/dist/ui.js +900 -0
  298. package/dist/widgets.cjs +919 -0
  299. package/dist/widgets.d.cts +165 -0
  300. package/dist/widgets.d.ts +165 -0
  301. package/dist/widgets.js +545 -0
  302. package/package.json +134 -0
@@ -0,0 +1,303 @@
1
+ // src/reactivity/track.ts
2
+ var subscriberStack = [];
3
+ var currentSubscriber = null;
4
+ var signalSubscribers = /* @__PURE__ */ new WeakMap();
5
+ var SUBS = "__s";
6
+ var notifyDepth = 0;
7
+ var pendingQueue = [];
8
+ var pendingSet = /* @__PURE__ */ new Set();
9
+ var suspendDepth = 0;
10
+ var trackingSuspended = false;
11
+ function track(effectFn, subscriber) {
12
+ if (!subscriber) subscriber = effectFn;
13
+ cleanup(subscriber);
14
+ subscriberStack.push(subscriber);
15
+ currentSubscriber = subscriber;
16
+ effectFn();
17
+ subscriberStack.pop();
18
+ currentSubscriber = subscriberStack[subscriberStack.length - 1] || null;
19
+ return () => cleanup(subscriber);
20
+ }
21
+ function suspendTracking() {
22
+ if (suspendDepth === 0) {
23
+ subscriberStack.push(null);
24
+ currentSubscriber = null;
25
+ trackingSuspended = true;
26
+ }
27
+ suspendDepth++;
28
+ }
29
+ function resumeTracking() {
30
+ suspendDepth--;
31
+ if (suspendDepth === 0) {
32
+ subscriberStack.pop();
33
+ currentSubscriber = subscriberStack[subscriberStack.length - 1] || null;
34
+ trackingSuspended = false;
35
+ }
36
+ }
37
+ function recordDependency(signal2) {
38
+ if (!currentSubscriber) return;
39
+ let deps = currentSubscriber._deps;
40
+ if (!deps) {
41
+ deps = /* @__PURE__ */ new Set();
42
+ currentSubscriber._deps = deps;
43
+ }
44
+ if (!deps.has(signal2)) {
45
+ deps.add(signal2);
46
+ let subs = signal2[SUBS];
47
+ if (!subs) {
48
+ subs = /* @__PURE__ */ new Set();
49
+ signalSubscribers.set(signal2, subs);
50
+ signal2[SUBS] = subs;
51
+ }
52
+ subs.add(currentSubscriber);
53
+ if (subs.size === 1) {
54
+ signal2.__f = currentSubscriber;
55
+ } else if (signal2.__f !== void 0) {
56
+ signal2.__f = void 0;
57
+ }
58
+ }
59
+ }
60
+ function queueSignalNotification(signal2) {
61
+ const subs = signal2[SUBS];
62
+ if (!subs) return;
63
+ for (const sub of subs) {
64
+ if (sub._c) {
65
+ propagateDirty(sub);
66
+ } else if (!pendingSet.has(sub)) {
67
+ pendingSet.add(sub);
68
+ pendingQueue.push(sub);
69
+ }
70
+ }
71
+ }
72
+ function drainNotificationQueue() {
73
+ if (notifyDepth > 0) return;
74
+ notifyDepth++;
75
+ try {
76
+ let i = 0;
77
+ while (i < pendingQueue.length) {
78
+ pendingQueue[i]();
79
+ i++;
80
+ }
81
+ } finally {
82
+ pendingQueue.length = 0;
83
+ pendingSet.clear();
84
+ notifyDepth--;
85
+ }
86
+ }
87
+ function propagateDirty(sub) {
88
+ sub();
89
+ let sig = sub._sig;
90
+ let suspended = false;
91
+ if (sig && sig._g) {
92
+ const sDeps = sub._deps;
93
+ if (sDeps && sDeps.size === 1) {
94
+ suspendTracking();
95
+ suspended = true;
96
+ const s = sig;
97
+ s._d = false;
98
+ s._v = s._g();
99
+ }
100
+ }
101
+ while (sig) {
102
+ const first = sig.__f;
103
+ if (first) {
104
+ if (first._c) {
105
+ const nSig = first._sig;
106
+ nSig._d = true;
107
+ if (suspended && nSig._g) {
108
+ const fDeps = first._deps;
109
+ if (fDeps && fDeps.size === 1) {
110
+ nSig._d = false;
111
+ nSig._v = nSig._g();
112
+ }
113
+ }
114
+ sig = nSig;
115
+ continue;
116
+ }
117
+ if (!pendingSet.has(first)) {
118
+ pendingSet.add(first);
119
+ pendingQueue.push(first);
120
+ }
121
+ break;
122
+ }
123
+ const subs = sig[SUBS];
124
+ if (!subs) break;
125
+ let nextSig;
126
+ for (const s of subs) {
127
+ if (s._c) {
128
+ s();
129
+ const nSig = s._sig;
130
+ if (nSig && !nextSig) {
131
+ nextSig = nSig;
132
+ } else if (nSig) {
133
+ propagateDirty(s);
134
+ }
135
+ } else if (!pendingSet.has(s)) {
136
+ pendingSet.add(s);
137
+ pendingQueue.push(s);
138
+ }
139
+ }
140
+ sig = nextSig;
141
+ }
142
+ if (suspended) resumeTracking();
143
+ }
144
+ function notifySubscribers(signal2) {
145
+ const first = signal2.__f;
146
+ if (first) {
147
+ if (notifyDepth > 0) {
148
+ if (first._c) {
149
+ propagateDirty(first);
150
+ } else if (!pendingSet.has(first)) {
151
+ pendingSet.add(first);
152
+ pendingQueue.push(first);
153
+ }
154
+ return;
155
+ }
156
+ notifyDepth++;
157
+ try {
158
+ if (first._c) {
159
+ propagateDirty(first);
160
+ } else {
161
+ first();
162
+ }
163
+ let i = 0;
164
+ while (i < pendingQueue.length) {
165
+ pendingQueue[i]();
166
+ i++;
167
+ }
168
+ } finally {
169
+ pendingQueue.length = 0;
170
+ pendingSet.clear();
171
+ notifyDepth--;
172
+ }
173
+ return;
174
+ }
175
+ const subs = signal2[SUBS];
176
+ if (!subs || subs.size === 0) return;
177
+ if (notifyDepth > 0) {
178
+ for (const sub of subs) {
179
+ if (sub._c) {
180
+ propagateDirty(sub);
181
+ } else if (!pendingSet.has(sub)) {
182
+ pendingSet.add(sub);
183
+ pendingQueue.push(sub);
184
+ }
185
+ }
186
+ return;
187
+ }
188
+ notifyDepth++;
189
+ try {
190
+ let directCount = 0;
191
+ for (const sub of subs) {
192
+ pendingQueue[directCount++] = sub;
193
+ }
194
+ for (let i2 = 0; i2 < directCount; i2++) {
195
+ if (pendingQueue[i2]._c) {
196
+ propagateDirty(pendingQueue[i2]);
197
+ }
198
+ }
199
+ for (let i2 = 0; i2 < directCount; i2++) {
200
+ if (!pendingQueue[i2]._c) {
201
+ if (!pendingSet.has(pendingQueue[i2])) {
202
+ pendingQueue[i2]();
203
+ }
204
+ }
205
+ }
206
+ let i = directCount;
207
+ while (i < pendingQueue.length) {
208
+ pendingQueue[i]();
209
+ i++;
210
+ }
211
+ } finally {
212
+ pendingQueue.length = 0;
213
+ pendingSet.clear();
214
+ notifyDepth--;
215
+ }
216
+ }
217
+ function cleanup(subscriber) {
218
+ const deps = subscriber._deps;
219
+ if (!deps || deps.size === 0) return;
220
+ for (const signal2 of deps) {
221
+ const subs = signal2[SUBS];
222
+ if (subs) {
223
+ subs.delete(subscriber);
224
+ if (signal2.__f === subscriber) {
225
+ signal2.__f = void 0;
226
+ }
227
+ }
228
+ }
229
+ deps.clear();
230
+ }
231
+
232
+ // src/reactivity/batch.ts
233
+ var batchDepth = 0;
234
+ var pendingSignals = /* @__PURE__ */ new Set();
235
+ function batch(fn) {
236
+ batchDepth++;
237
+ try {
238
+ fn();
239
+ } finally {
240
+ batchDepth--;
241
+ if (batchDepth === 0) {
242
+ flushBatch();
243
+ }
244
+ }
245
+ }
246
+ function enqueueBatchedSignal(signal2) {
247
+ if (batchDepth === 0) return false;
248
+ pendingSignals.add(signal2);
249
+ return true;
250
+ }
251
+ function isBatching() {
252
+ return batchDepth > 0;
253
+ }
254
+ function flushBatch() {
255
+ const signals = Array.from(pendingSignals);
256
+ pendingSignals.clear();
257
+ for (const signal2 of signals) {
258
+ queueSignalNotification(signal2);
259
+ }
260
+ drainNotificationQueue();
261
+ }
262
+
263
+ // src/core/signals/signal.ts
264
+ function signal(initial, options) {
265
+ const state = { value: initial };
266
+ const debugName = options?.name;
267
+ if (debugName) {
268
+ state.__name = debugName;
269
+ }
270
+ function get() {
271
+ recordDependency(state);
272
+ return state.value;
273
+ }
274
+ get.__signal = state;
275
+ if (debugName) get.__name = debugName;
276
+ function set(next) {
277
+ const newValue = typeof next === "function" ? next(state.value) : next;
278
+ if (Object.is(newValue, state.value)) return;
279
+ const oldValue = state.value;
280
+ state.value = newValue;
281
+ const hook2 = globalThis.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
282
+ if (hook2) hook2.emit("signal:update", { signal: state, name: debugName, oldValue, newValue });
283
+ if (!enqueueBatchedSignal(state)) {
284
+ notifySubscribers(state);
285
+ }
286
+ }
287
+ const hook = globalThis.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
288
+ if (hook) hook.emit("signal:create", { signal: state, name: debugName, getter: get, initial });
289
+ return [get, set];
290
+ }
291
+
292
+ export {
293
+ trackingSuspended,
294
+ track,
295
+ suspendTracking,
296
+ resumeTracking,
297
+ recordDependency,
298
+ notifySubscribers,
299
+ batch,
300
+ enqueueBatchedSignal,
301
+ isBatching,
302
+ signal
303
+ };
@@ -0,0 +1,267 @@
1
+ import {
2
+ bindAttribute,
3
+ sanitizeAttribute
4
+ } from "./chunk-ETMEC6FH.js";
5
+ import {
6
+ devWarn
7
+ } from "./chunk-MJNB47HB.js";
8
+ import {
9
+ track
10
+ } from "./chunk-M5GNLDEO.js";
11
+
12
+ // src/core/rendering/dispose.ts
13
+ var elementDisposers = /* @__PURE__ */ new WeakMap();
14
+ var activeBindingCount = 0;
15
+ function registerDisposer(node, teardown) {
16
+ let disposers = elementDisposers.get(node);
17
+ if (!disposers) {
18
+ disposers = [];
19
+ elementDisposers.set(node, disposers);
20
+ }
21
+ disposers.push(teardown);
22
+ activeBindingCount++;
23
+ }
24
+ function dispose(node) {
25
+ const children = node.childNodes;
26
+ for (const child of children) {
27
+ dispose(child);
28
+ }
29
+ const disposers = elementDisposers.get(node);
30
+ if (disposers) {
31
+ activeBindingCount -= disposers.length;
32
+ for (const d of disposers) d();
33
+ elementDisposers.delete(node);
34
+ }
35
+ }
36
+ function checkLeaks(warnThreshold = 0) {
37
+ if (activeBindingCount > warnThreshold) {
38
+ devWarn(
39
+ `checkLeaks: ${activeBindingCount} active DOM bindings detected. Expected \u2264${warnThreshold}. This may indicate a component was removed from the DOM without calling dispose().`
40
+ );
41
+ }
42
+ return activeBindingCount;
43
+ }
44
+
45
+ // src/reactivity/bindChildNode.ts
46
+ function bindChildNode(placeholder, getter) {
47
+ let lastNodes = [];
48
+ function commit() {
49
+ let result;
50
+ try {
51
+ result = getter();
52
+ } catch {
53
+ return;
54
+ }
55
+ for (const node of lastNodes) {
56
+ node.parentNode?.removeChild(node);
57
+ }
58
+ lastNodes = [];
59
+ if (result == null) return;
60
+ const parent = placeholder.parentNode;
61
+ if (!parent) return;
62
+ const anchor = placeholder.nextSibling;
63
+ const newNodes = [];
64
+ const insertItem = (item) => {
65
+ const node = item instanceof Node ? item : document.createTextNode(String(item));
66
+ parent.insertBefore(node, anchor);
67
+ newNodes.push(node);
68
+ };
69
+ if (Array.isArray(result)) {
70
+ for (const item of result) insertItem(item);
71
+ } else {
72
+ insertItem(result);
73
+ }
74
+ lastNodes = newNodes;
75
+ }
76
+ return track(commit);
77
+ }
78
+
79
+ // src/core/rendering/tagFactory.ts
80
+ var SVG_NS = "http://www.w3.org/2000/svg";
81
+ var kebabCache = /* @__PURE__ */ new Map();
82
+ function toKebab(prop) {
83
+ let cached = kebabCache.get(prop);
84
+ if (cached !== void 0) return cached;
85
+ cached = prop.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
86
+ kebabCache.set(prop, cached);
87
+ return cached;
88
+ }
89
+ function applyStyle(el, style) {
90
+ if (!style) return;
91
+ if (typeof style === "function") {
92
+ const teardown = track(() => {
93
+ el.setAttribute("style", style());
94
+ });
95
+ registerDisposer(el, teardown);
96
+ return;
97
+ }
98
+ if (typeof style === "string") {
99
+ el.setAttribute("style", style);
100
+ return;
101
+ }
102
+ const htmlEl = el;
103
+ for (const prop in style) {
104
+ const val = style[prop];
105
+ const name = toKebab(prop);
106
+ if (typeof val === "function") {
107
+ const getter = val;
108
+ const teardown = track(() => {
109
+ htmlEl.style.setProperty(name, String(getter()));
110
+ });
111
+ registerDisposer(el, teardown);
112
+ } else {
113
+ htmlEl.style.setProperty(name, String(val));
114
+ }
115
+ }
116
+ }
117
+ function applyClass(el, cls) {
118
+ if (cls == null) return;
119
+ if (typeof cls === "string") {
120
+ el.setAttribute("class", cls);
121
+ return;
122
+ }
123
+ if (typeof cls === "function") {
124
+ const getter = cls;
125
+ const teardown = track(() => {
126
+ el.setAttribute("class", getter());
127
+ });
128
+ registerDisposer(el, teardown);
129
+ return;
130
+ }
131
+ if (typeof cls === "object") {
132
+ const obj = cls;
133
+ let hasReactive = false;
134
+ for (const name in obj) {
135
+ if (typeof obj[name] === "function") {
136
+ hasReactive = true;
137
+ break;
138
+ }
139
+ }
140
+ if (hasReactive) {
141
+ const update = () => {
142
+ let result = "";
143
+ for (const name in obj) {
144
+ const val = obj[name];
145
+ const active = typeof val === "function" ? val() : val;
146
+ if (active) result = result ? `${result} ${name}` : name;
147
+ }
148
+ el.setAttribute("class", result);
149
+ };
150
+ const teardown = track(update);
151
+ registerDisposer(el, teardown);
152
+ } else {
153
+ let result = "";
154
+ for (const name in obj) {
155
+ if (obj[name]) result = result ? `${result} ${name}` : name;
156
+ }
157
+ el.setAttribute("class", result);
158
+ }
159
+ }
160
+ }
161
+ function renderChild(child) {
162
+ if (child == null) {
163
+ return document.createTextNode("");
164
+ }
165
+ if (child instanceof Node) {
166
+ return child;
167
+ }
168
+ return document.createTextNode(String(child));
169
+ }
170
+ function appendOneChild(el, child) {
171
+ if (typeof child === "function") {
172
+ const placeholder = document.createComment("bind:child");
173
+ el.appendChild(placeholder);
174
+ const teardown = bindChildNode(placeholder, child);
175
+ registerDisposer(el, teardown);
176
+ } else {
177
+ el.appendChild(renderChild(child));
178
+ }
179
+ }
180
+ function appendChildren(el, nodes) {
181
+ if (Array.isArray(nodes)) {
182
+ for (let i = 0; i < nodes.length; i++) {
183
+ const c = nodes[i];
184
+ if (Array.isArray(c)) {
185
+ for (let j = 0; j < c.length; j++) {
186
+ appendOneChild(el, c[j]);
187
+ }
188
+ } else {
189
+ appendOneChild(el, c);
190
+ }
191
+ }
192
+ } else {
193
+ appendOneChild(el, nodes);
194
+ }
195
+ }
196
+ function isTagProps(value) {
197
+ return typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Node);
198
+ }
199
+ var tagFactory = (tag, ns) => (first, second) => {
200
+ let props;
201
+ if (first === void 0) {
202
+ props = {};
203
+ } else if (isTagProps(first)) {
204
+ props = first;
205
+ } else if (second !== void 0) {
206
+ props = { class: first, nodes: second };
207
+ } else {
208
+ props = { nodes: first };
209
+ }
210
+ const el = ns ? document.createElementNS(ns, tag) : document.createElement(tag);
211
+ for (const key in props) {
212
+ const value = props[key];
213
+ if (value == null) continue;
214
+ switch (key) {
215
+ case "id":
216
+ el.id = value;
217
+ break;
218
+ case "class":
219
+ applyClass(el, value);
220
+ break;
221
+ case "style":
222
+ applyStyle(el, value);
223
+ break;
224
+ case "ref":
225
+ if (value && typeof value === "object" && "current" in value) {
226
+ value.current = el;
227
+ }
228
+ break;
229
+ case "on": {
230
+ const handlers = value;
231
+ const eventNames = [];
232
+ for (const ev in handlers) {
233
+ el.addEventListener(ev, handlers[ev]);
234
+ eventNames.push(ev);
235
+ }
236
+ if (eventNames.length) {
237
+ el.__sibu_events__ = eventNames;
238
+ }
239
+ break;
240
+ }
241
+ case "nodes":
242
+ appendChildren(el, value);
243
+ break;
244
+ default:
245
+ if (key.toLowerCase().startsWith("on")) break;
246
+ if (typeof value === "function") {
247
+ const teardown = bindAttribute(el, key, value);
248
+ registerDisposer(el, teardown);
249
+ } else if (typeof value === "boolean") {
250
+ if (value) el.setAttribute(key, "");
251
+ else el.removeAttribute(key);
252
+ } else {
253
+ el.setAttribute(key, sanitizeAttribute(key, String(value)));
254
+ }
255
+ }
256
+ }
257
+ return el;
258
+ };
259
+
260
+ export {
261
+ bindChildNode,
262
+ registerDisposer,
263
+ dispose,
264
+ checkLeaks,
265
+ SVG_NS,
266
+ tagFactory
267
+ };