sibujs 1.0.0-beta.1 → 1.0.0-beta.3

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 (91) hide show
  1. package/README.md +9 -0
  2. package/dist/browser.cjs +94 -56
  3. package/dist/browser.js +2 -3
  4. package/dist/build.cjs +370 -255
  5. package/dist/build.js +8 -9
  6. package/dist/cdn.global.js +4 -4
  7. package/dist/chunk-2HYHL6VW.js +269 -0
  8. package/dist/chunk-2PFRWZIE.js +65 -0
  9. package/dist/chunk-34TOFKL7.js +1803 -0
  10. package/dist/chunk-37NSPDPQ.js +284 -0
  11. package/dist/chunk-3CSF4TOG.js +282 -0
  12. package/dist/chunk-4MYMUBRS.js +21 -0
  13. package/dist/chunk-5XUAA53E.js +99 -0
  14. package/dist/chunk-6SNF5MZK.js +282 -0
  15. package/dist/chunk-7FYJUE77.js +282 -0
  16. package/dist/chunk-7XFBKLFB.js +90 -0
  17. package/dist/chunk-CQNVF2FD.js +282 -0
  18. package/dist/chunk-CRTHZHU7.js +26 -0
  19. package/dist/chunk-DAUTHAYH.js +20 -0
  20. package/dist/chunk-DI3Z32TV.js +1780 -0
  21. package/dist/chunk-DKGHW6MX.js +90 -0
  22. package/dist/chunk-DNTTC4V5.js +1803 -0
  23. package/dist/chunk-DWQQ2GZK.js +1787 -0
  24. package/dist/chunk-E5SMAKQQ.js +336 -0
  25. package/dist/chunk-EGZGFIXV.js +90 -0
  26. package/dist/chunk-EQACK65C.js +63 -0
  27. package/dist/chunk-EUFENPGJ.js +290 -0
  28. package/dist/chunk-F25CZRUH.js +282 -0
  29. package/dist/chunk-F4IYF3YU.js +266 -0
  30. package/dist/chunk-FBNDOAHU.js +54 -0
  31. package/dist/chunk-FDW3E54J.js +1767 -0
  32. package/dist/chunk-FEPU4KL6.js +63 -0
  33. package/dist/chunk-G4AX3DQ4.js +54 -0
  34. package/dist/chunk-GY5AAP4H.js +316 -0
  35. package/dist/chunk-HCWPQCZP.js +279 -0
  36. package/dist/chunk-IC4K4EOD.js +26 -0
  37. package/dist/chunk-IJU6TOZ6.js +65 -0
  38. package/dist/chunk-J7PD6L4B.js +1767 -0
  39. package/dist/chunk-L5IBT37O.js +263 -0
  40. package/dist/chunk-LAX5H35R.js +90 -0
  41. package/dist/chunk-LWNJN3IW.js +295 -0
  42. package/dist/chunk-M3QSBCXC.js +52 -0
  43. package/dist/chunk-MM46JVR2.js +359 -0
  44. package/dist/chunk-N6BRVUAP.js +1805 -0
  45. package/dist/chunk-NZNNXPEE.js +56 -0
  46. package/dist/chunk-OI5B74HF.js +26 -0
  47. package/dist/chunk-ONOO74UN.js +361 -0
  48. package/dist/chunk-PLFQZ7SS.js +90 -0
  49. package/dist/chunk-PPNH4Y6U.js +282 -0
  50. package/dist/chunk-Q54YZ4X3.js +26 -0
  51. package/dist/chunk-QJ5KLY2S.js +1821 -0
  52. package/dist/chunk-QQS7BSPA.js +26 -0
  53. package/dist/chunk-SR2DPCTT.js +1803 -0
  54. package/dist/chunk-SXXKZJI2.js +303 -0
  55. package/dist/chunk-TBA46SVX.js +1805 -0
  56. package/dist/chunk-TK4P3V5G.js +56 -0
  57. package/dist/chunk-TVV4JK5G.js +282 -0
  58. package/dist/chunk-UHFUQWST.js +65 -0
  59. package/dist/chunk-V6P4LDAV.js +65 -0
  60. package/dist/chunk-VI4KRBSU.js +291 -0
  61. package/dist/chunk-W3QH7BF5.js +282 -0
  62. package/dist/chunk-WZQNHS4J.js +52 -0
  63. package/dist/data.cjs +85 -47
  64. package/dist/data.js +4 -5
  65. package/dist/devtools.cjs +61 -33
  66. package/dist/devtools.js +1 -1
  67. package/dist/ecosystem.cjs +215 -172
  68. package/dist/ecosystem.d.cts +1 -1
  69. package/dist/ecosystem.d.ts +1 -1
  70. package/dist/ecosystem.js +5 -6
  71. package/dist/index.cjs +370 -255
  72. package/dist/index.d.cts +7 -30
  73. package/dist/index.d.ts +7 -30
  74. package/dist/index.js +8 -9
  75. package/dist/motion.cjs +61 -33
  76. package/dist/motion.js +1 -1
  77. package/dist/patterns.cjs +92 -53
  78. package/dist/patterns.js +3 -4
  79. package/dist/performance.cjs +61 -33
  80. package/dist/performance.js +1 -1
  81. package/dist/plugins.cjs +213 -162
  82. package/dist/plugins.js +4 -5
  83. package/dist/ssr.cjs +215 -172
  84. package/dist/ssr.js +5 -6
  85. package/dist/tagFactory-BDN7gDEp.d.cts +21 -0
  86. package/dist/tagFactory-BDN7gDEp.d.ts +21 -0
  87. package/dist/ui.cjs +85 -55
  88. package/dist/ui.js +4 -5
  89. package/dist/widgets.cjs +81 -41
  90. package/dist/widgets.js +2 -3
  91. package/package.json +1 -1
package/README.md CHANGED
@@ -1625,6 +1625,15 @@ npm run build
1625
1625
 
1626
1626
  ---
1627
1627
 
1628
+ ## Contributing
1629
+
1630
+ Contributions are welcome! Please read our
1631
+ [Contributing Guide](.github/CONTRIBUTING.md) and
1632
+ [Code of Conduct](.github/CODE_OF_CONDUCT.md)
1633
+ before submitting a PR.
1634
+
1635
+ ---
1636
+
1628
1637
  ## License
1629
1638
 
1630
1639
  MIT -- (c) 2025 [hexplus](https://github.com/hexplus)
package/dist/browser.cjs CHANGED
@@ -37,7 +37,9 @@ __export(browser_exports, {
37
37
  module.exports = __toCommonJS(browser_exports);
38
38
 
39
39
  // src/reactivity/track.ts
40
- var subscriberStack = [];
40
+ var subscriberStack = new Array(32);
41
+ var stackCapacity = 32;
42
+ var stackTop = -1;
41
43
  var currentSubscriber = null;
42
44
  var signalSubscribers = /* @__PURE__ */ new WeakMap();
43
45
  var SUBS = "__s";
@@ -49,16 +51,26 @@ var trackingSuspended = false;
49
51
  function track(effectFn, subscriber) {
50
52
  if (!subscriber) subscriber = effectFn;
51
53
  cleanup(subscriber);
52
- subscriberStack.push(subscriber);
54
+ ++stackTop;
55
+ if (stackTop >= stackCapacity) {
56
+ stackCapacity *= 2;
57
+ subscriberStack.length = stackCapacity;
58
+ }
59
+ subscriberStack[stackTop] = subscriber;
53
60
  currentSubscriber = subscriber;
54
61
  effectFn();
55
- subscriberStack.pop();
56
- currentSubscriber = subscriberStack[subscriberStack.length - 1] || null;
62
+ stackTop--;
63
+ currentSubscriber = stackTop >= 0 ? subscriberStack[stackTop] : null;
57
64
  return () => cleanup(subscriber);
58
65
  }
59
66
  function suspendTracking() {
60
67
  if (suspendDepth === 0) {
61
- subscriberStack.push(null);
68
+ ++stackTop;
69
+ if (stackTop >= stackCapacity) {
70
+ stackCapacity *= 2;
71
+ subscriberStack.length = stackCapacity;
72
+ }
73
+ subscriberStack[stackTop] = null;
62
74
  currentSubscriber = null;
63
75
  trackingSuspended = true;
64
76
  }
@@ -67,32 +79,39 @@ function suspendTracking() {
67
79
  function resumeTracking() {
68
80
  suspendDepth--;
69
81
  if (suspendDepth === 0) {
70
- subscriberStack.pop();
71
- currentSubscriber = subscriberStack[subscriberStack.length - 1] || null;
82
+ stackTop--;
83
+ currentSubscriber = stackTop >= 0 ? subscriberStack[stackTop] : null;
72
84
  trackingSuspended = false;
73
85
  }
74
86
  }
75
87
  function recordDependency(signal2) {
76
88
  if (!currentSubscriber) return;
77
- let deps = currentSubscriber._deps;
78
- if (!deps) {
79
- deps = /* @__PURE__ */ new Set();
80
- currentSubscriber._deps = deps;
81
- }
82
- if (!deps.has(signal2)) {
89
+ const sub = currentSubscriber;
90
+ if (sub._dep === signal2) return;
91
+ const deps = sub._deps;
92
+ if (deps) {
93
+ if (deps.has(signal2)) return;
83
94
  deps.add(signal2);
84
- let subs = signal2[SUBS];
85
- if (!subs) {
86
- subs = /* @__PURE__ */ new Set();
87
- signalSubscribers.set(signal2, subs);
88
- signal2[SUBS] = subs;
89
- }
90
- subs.add(currentSubscriber);
91
- if (subs.size === 1) {
92
- signal2.__f = currentSubscriber;
93
- } else if (signal2.__f !== void 0) {
94
- signal2.__f = void 0;
95
- }
95
+ } else if (sub._dep !== void 0) {
96
+ const set = /* @__PURE__ */ new Set();
97
+ set.add(sub._dep);
98
+ set.add(signal2);
99
+ sub._deps = set;
100
+ sub._dep = void 0;
101
+ } else {
102
+ sub._dep = signal2;
103
+ }
104
+ let subs = signal2[SUBS];
105
+ if (!subs) {
106
+ subs = /* @__PURE__ */ new Set();
107
+ signalSubscribers.set(signal2, subs);
108
+ signal2[SUBS] = subs;
109
+ }
110
+ subs.add(currentSubscriber);
111
+ if (subs.size === 1) {
112
+ signal2.__f = currentSubscriber;
113
+ } else if (signal2.__f !== void 0) {
114
+ signal2.__f = void 0;
96
115
  }
97
116
  }
98
117
  function queueSignalNotification(signal2) {
@@ -127,8 +146,8 @@ function propagateDirty(sub) {
127
146
  let sig = sub._sig;
128
147
  let suspended = false;
129
148
  if (sig && sig._g) {
130
- const sDeps = sub._deps;
131
- if (sDeps && sDeps.size === 1) {
149
+ const isSingleDep = sub._dep !== void 0 || sub._deps && sub._deps.size === 1;
150
+ if (isSingleDep) {
132
151
  suspendTracking();
133
152
  suspended = true;
134
153
  const s = sig;
@@ -143,8 +162,8 @@ function propagateDirty(sub) {
143
162
  const nSig = first._sig;
144
163
  nSig._d = true;
145
164
  if (suspended && nSig._g) {
146
- const fDeps = first._deps;
147
- if (fDeps && fDeps.size === 1) {
165
+ const fSingleDep = first._dep !== void 0 || first._deps && first._deps.size === 1;
166
+ if (fSingleDep) {
148
167
  nSig._d = false;
149
168
  nSig._v = nSig._g();
150
169
  }
@@ -253,7 +272,20 @@ function notifySubscribers(signal2) {
253
272
  }
254
273
  }
255
274
  function cleanup(subscriber) {
256
- const deps = subscriber._deps;
275
+ const sub = subscriber;
276
+ const singleDep = sub._dep;
277
+ if (singleDep !== void 0) {
278
+ const subs = singleDep[SUBS];
279
+ if (subs) {
280
+ subs.delete(subscriber);
281
+ if (singleDep.__f === subscriber) {
282
+ singleDep.__f = void 0;
283
+ }
284
+ }
285
+ sub._dep = void 0;
286
+ return;
287
+ }
288
+ const deps = sub._deps;
257
289
  if (!deps || deps.size === 0) return;
258
290
  for (const signal2 of deps) {
259
291
  const subs = signal2[SUBS];
@@ -287,18 +319,30 @@ function enqueueBatchedSignal(signal2) {
287
319
  return true;
288
320
  }
289
321
  function flushBatch() {
290
- const signals = Array.from(pendingSignals);
291
- pendingSignals.clear();
292
- for (const signal2 of signals) {
322
+ for (const signal2 of pendingSignals) {
293
323
  queueSignalNotification(signal2);
294
324
  }
325
+ pendingSignals.clear();
295
326
  drainNotificationQueue();
296
327
  }
297
328
 
329
+ // src/core/dev.ts
330
+ function isDev() {
331
+ return typeof globalThis.__SIBU_DEV__ !== "undefined" ? !!globalThis.__SIBU_DEV__ : typeof __SIBU_DEV__ !== "undefined" ? __SIBU_DEV__ : true;
332
+ }
333
+ var _isDev = isDev();
334
+ function devAssert(condition, message) {
335
+ if (_isDev && !condition) {
336
+ throw new Error(`[Sibu] ${message}`);
337
+ }
338
+ }
339
+
298
340
  // src/core/signals/signal.ts
341
+ var _g = globalThis;
342
+ var _isDev2 = isDev();
299
343
  function signal(initial, options) {
300
344
  const state = { value: initial };
301
- const debugName = options?.name;
345
+ const debugName = _isDev2 ? options?.name : void 0;
302
346
  if (debugName) {
303
347
  state.__name = debugName;
304
348
  }
@@ -311,16 +355,22 @@ function signal(initial, options) {
311
355
  function set(next) {
312
356
  const newValue = typeof next === "function" ? next(state.value) : next;
313
357
  if (Object.is(newValue, state.value)) return;
314
- const oldValue = state.value;
315
- state.value = newValue;
316
- const hook2 = globalThis.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
317
- if (hook2) hook2.emit("signal:update", { signal: state, name: debugName, oldValue, newValue });
358
+ if (_isDev2) {
359
+ const oldValue = state.value;
360
+ state.value = newValue;
361
+ const hook = _g.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
362
+ if (hook) hook.emit("signal:update", { signal: state, name: debugName, oldValue, newValue });
363
+ } else {
364
+ state.value = newValue;
365
+ }
318
366
  if (!enqueueBatchedSignal(state)) {
319
367
  notifySubscribers(state);
320
368
  }
321
369
  }
322
- const hook = globalThis.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
323
- if (hook) hook.emit("signal:create", { signal: state, name: debugName, getter: get, initial });
370
+ if (_isDev2) {
371
+ const hook = _g.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
372
+ if (hook) hook.emit("signal:create", { signal: state, name: debugName, getter: get, initial });
373
+ }
324
374
  return [get, set];
325
375
  }
326
376
 
@@ -343,16 +393,6 @@ function media(query) {
343
393
  return { matches, dispose };
344
394
  }
345
395
 
346
- // src/core/dev.ts
347
- function isDev() {
348
- return typeof globalThis.__SIBU_DEV__ !== "undefined" ? !!globalThis.__SIBU_DEV__ : typeof __SIBU_DEV__ !== "undefined" ? __SIBU_DEV__ : true;
349
- }
350
- function devAssert(condition, message) {
351
- if (isDev() && !condition) {
352
- throw new Error(`[Sibu] ${message}`);
353
- }
354
- }
355
-
356
396
  // src/core/ssr-context.ts
357
397
  var ssrMode = false;
358
398
  function isSSR() {
@@ -360,25 +400,23 @@ function isSSR() {
360
400
  }
361
401
 
362
402
  // src/core/signals/effect.ts
403
+ var _g2 = globalThis;
363
404
  function effect(effectFn) {
364
405
  devAssert(typeof effectFn === "function", "effect: argument must be a function.");
365
406
  if (isSSR()) return () => {
366
407
  };
367
- let runCount = 0;
368
408
  let cleanupHandle = () => {
369
409
  };
370
- const hook = globalThis.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
371
410
  const subscriber = () => {
372
411
  cleanupHandle();
373
- runCount++;
374
- if (hook) hook.emit("effect:run", { effectFn, runCount });
375
412
  cleanupHandle = track(effectFn, subscriber);
376
413
  };
377
414
  cleanupHandle = track(effectFn, subscriber);
378
- runCount = 1;
415
+ const hook = _g2.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
379
416
  if (hook) hook.emit("effect:create", { effectFn });
380
417
  return () => {
381
- if (hook) hook.emit("effect:destroy", { effectFn });
418
+ const h = _g2.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
419
+ if (h) h.emit("effect:destroy", { effectFn });
382
420
  cleanupHandle();
383
421
  };
384
422
  }
package/dist/browser.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import {
2
2
  effect
3
- } from "./chunk-AX5VEQTY.js";
4
- import "./chunk-MJNB47HB.js";
3
+ } from "./chunk-G4AX3DQ4.js";
5
4
  import {
6
5
  batch,
7
6
  signal
8
- } from "./chunk-M5GNLDEO.js";
7
+ } from "./chunk-ONOO74UN.js";
9
8
  import "./chunk-MLKGABMK.js";
10
9
 
11
10
  // src/browser/media.ts