sibujs 3.3.0 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.cjs +230 -40
- package/dist/browser.js +5 -5
- package/dist/build.cjs +240 -108
- package/dist/build.js +13 -13
- package/dist/cdn.global.js +7 -7
- package/dist/{chunk-BEIKESVL.js → chunk-2ARSB7NG.js} +36 -13
- package/dist/{chunk-X3NHE2DK.js → chunk-4NJEAPLI.js} +83 -17
- package/dist/{chunk-JBXNCZSC.js → chunk-5VH3GIDX.js} +1 -1
- package/dist/{chunk-6G6UNHZI.js → chunk-62V653X2.js} +16 -21
- package/dist/{chunk-S4FHR5ZZ.js → chunk-655B7MMR.js} +3 -3
- package/dist/{chunk-24DBWDTK.js → chunk-6TCOWMGY.js} +1 -1
- package/dist/{chunk-USDR2GFV.js → chunk-A7CZH3GN.js} +3 -3
- package/dist/{chunk-SLCUP2EK.js → chunk-AEOLHSSQ.js} +3 -3
- package/dist/chunk-CCSJMTRN.js +15 -0
- package/dist/{chunk-R3QEDXFS.js → chunk-EX77FXTT.js} +1 -1
- package/dist/{chunk-ZUVLC7TM.js → chunk-FJIRS3FM.js} +1 -1
- package/dist/{chunk-4WXWJ4SW.js → chunk-FJO2ZL4Q.js} +4 -4
- package/dist/{chunk-CVMMULHO.js → chunk-G6N3LMO2.js} +4 -4
- package/dist/{chunk-XQ7XSGYP.js → chunk-IQJ36UTJ.js} +1 -1
- package/dist/{chunk-5K72I3UQ.js → chunk-JCQG2I2G.js} +21 -4
- package/dist/{chunk-7JHWAGRQ.js → chunk-N5TQVEKE.js} +2 -2
- package/dist/{chunk-IHBVTURX.js → chunk-P7C7SEJV.js} +4 -4
- package/dist/{chunk-M6WSIGYW.js → chunk-Q46YIQYW.js} +2 -2
- package/dist/{chunk-Q2ERM6NT.js → chunk-QCFBIVIQ.js} +1 -1
- package/dist/{chunk-F4UM7QBJ.js → chunk-RLTFJYDN.js} +2 -2
- package/dist/{chunk-GOJMFRBL.js → chunk-S3NFJO6L.js} +20 -14
- package/dist/{chunk-MWZFOIBG.js → chunk-YUBEOWII.js} +5 -5
- package/dist/{chunk-WVJJUFPC.js → chunk-YUR5SX7F.js} +2 -2
- package/dist/{chunk-NUWKIEHE.js → chunk-ZEUP4TUD.js} +2 -2
- package/dist/data.cjs +181 -37
- package/dist/data.js +7 -7
- package/dist/devtools.cjs +265 -45
- package/dist/devtools.js +5 -5
- package/dist/ecosystem.cjs +203 -59
- package/dist/ecosystem.js +8 -8
- package/dist/extras.cjs +216 -116
- package/dist/extras.js +22 -22
- package/dist/index.cjs +242 -108
- package/dist/index.d.cts +78 -14
- package/dist/index.d.ts +78 -14
- package/dist/index.js +17 -13
- package/dist/motion.cjs +329 -13
- package/dist/motion.js +3 -3
- package/dist/patterns.cjs +181 -37
- package/dist/patterns.js +6 -6
- package/dist/performance.cjs +278 -37
- package/dist/performance.js +6 -6
- package/dist/plugins.cjs +353 -153
- package/dist/plugins.js +95 -94
- package/dist/{ssr-6D67RAVB.js → ssr-2PPULEK2.js} +2 -2
- package/dist/ssr.cjs +203 -58
- package/dist/ssr.js +9 -9
- package/dist/testing.cjs +416 -19
- package/dist/testing.js +3 -3
- package/dist/ui.cjs +256 -65
- package/dist/ui.js +8 -8
- package/dist/widgets.cjs +166 -40
- package/dist/widgets.js +7 -7
- package/package.json +1 -1
- package/dist/chunk-YT6HQ6AM.js +0 -14
package/dist/build.cjs
CHANGED
|
@@ -1136,6 +1136,7 @@ __export(index_exports, {
|
|
|
1136
1136
|
footer: () => footer,
|
|
1137
1137
|
form: () => form,
|
|
1138
1138
|
g: () => g,
|
|
1139
|
+
getAction: () => getAction,
|
|
1139
1140
|
getRequestScopedCache: () => getRequestScopedCache,
|
|
1140
1141
|
getSSRStore: () => getSSRStore,
|
|
1141
1142
|
getSlot: () => getSlot,
|
|
@@ -1204,10 +1205,11 @@ __export(index_exports, {
|
|
|
1204
1205
|
reactiveArray: () => reactiveArray,
|
|
1205
1206
|
rect: () => rect,
|
|
1206
1207
|
ref: () => ref,
|
|
1208
|
+
registerAction: () => registerAction,
|
|
1207
1209
|
registerComponent: () => registerComponent,
|
|
1208
1210
|
registerDisposer: () => registerDisposer,
|
|
1209
1211
|
resolveComponent: () => resolveComponent,
|
|
1210
|
-
retrack: () =>
|
|
1212
|
+
retrack: () => retrack2,
|
|
1211
1213
|
rp: () => rp,
|
|
1212
1214
|
rt: () => rt,
|
|
1213
1215
|
ruby: () => ruby,
|
|
@@ -1218,7 +1220,7 @@ __export(index_exports, {
|
|
|
1218
1220
|
section: () => section,
|
|
1219
1221
|
select: () => select,
|
|
1220
1222
|
setGlobalErrorHandler: () => setGlobalErrorHandler,
|
|
1221
|
-
setMaxDrainIterations: () =>
|
|
1223
|
+
setMaxDrainIterations: () => setMaxDrainIterations2,
|
|
1222
1224
|
show: () => show,
|
|
1223
1225
|
signal: () => signal,
|
|
1224
1226
|
slot: () => slot,
|
|
@@ -1250,7 +1252,7 @@ __export(index_exports, {
|
|
|
1250
1252
|
time: () => time,
|
|
1251
1253
|
title: () => title,
|
|
1252
1254
|
tr: () => tr,
|
|
1253
|
-
track: () =>
|
|
1255
|
+
track: () => track3,
|
|
1254
1256
|
transition: () => transition,
|
|
1255
1257
|
trapFocus: () => trapFocus,
|
|
1256
1258
|
trustHTML: () => trustHTML,
|
|
@@ -1258,7 +1260,7 @@ __export(index_exports, {
|
|
|
1258
1260
|
u: () => u,
|
|
1259
1261
|
ul: () => ul,
|
|
1260
1262
|
unregisterComponent: () => unregisterComponent,
|
|
1261
|
-
untracked: () =>
|
|
1263
|
+
untracked: () => untracked2,
|
|
1262
1264
|
use: () => use,
|
|
1263
1265
|
var_: () => var_,
|
|
1264
1266
|
video: () => video,
|
|
@@ -1375,7 +1377,7 @@ function sanitizeAttributeString(attr, value) {
|
|
|
1375
1377
|
return value;
|
|
1376
1378
|
}
|
|
1377
1379
|
|
|
1378
|
-
// src/reactivity/track.ts
|
|
1380
|
+
// src/reactivity/track-core.ts
|
|
1379
1381
|
var _isDev2 = isDev();
|
|
1380
1382
|
var POOL_MAX = 4096;
|
|
1381
1383
|
var nodePool = [];
|
|
@@ -1489,6 +1491,9 @@ function resumeTracking() {
|
|
|
1489
1491
|
trackingSuspended = false;
|
|
1490
1492
|
}
|
|
1491
1493
|
}
|
|
1494
|
+
function isTrackingSuspended() {
|
|
1495
|
+
return trackingSuspended;
|
|
1496
|
+
}
|
|
1492
1497
|
function untracked(fn) {
|
|
1493
1498
|
suspendTracking();
|
|
1494
1499
|
try {
|
|
@@ -1606,6 +1611,11 @@ function cleanup(subscriber) {
|
|
|
1606
1611
|
var maxSubscriberRepeats = 50;
|
|
1607
1612
|
var maxDrainIterations = 1e6;
|
|
1608
1613
|
var drainEpoch = 0;
|
|
1614
|
+
function setMaxSubscriberRepeats(n) {
|
|
1615
|
+
const prev = maxSubscriberRepeats;
|
|
1616
|
+
if (Number.isFinite(n) && n > 0) maxSubscriberRepeats = Math.floor(n);
|
|
1617
|
+
return prev;
|
|
1618
|
+
}
|
|
1609
1619
|
function setMaxDrainIterations(n) {
|
|
1610
1620
|
const prev = maxDrainIterations;
|
|
1611
1621
|
if (Number.isFinite(n) && n > 0) maxDrainIterations = Math.floor(n);
|
|
@@ -1759,15 +1769,94 @@ function notifySubscribers(signal2) {
|
|
|
1759
1769
|
}
|
|
1760
1770
|
}
|
|
1761
1771
|
}
|
|
1772
|
+
function getSubscriberCount(signal2) {
|
|
1773
|
+
return signal2.__sc ?? 0;
|
|
1774
|
+
}
|
|
1775
|
+
function getSubscriberDeps(subscriber) {
|
|
1776
|
+
const sub2 = subscriber;
|
|
1777
|
+
const out = [];
|
|
1778
|
+
let node = sub2.depsHead ?? null;
|
|
1779
|
+
while (node) {
|
|
1780
|
+
if (node.sig) out.push(node.sig);
|
|
1781
|
+
node = node.subNext;
|
|
1782
|
+
}
|
|
1783
|
+
return out;
|
|
1784
|
+
}
|
|
1785
|
+
function forEachSubscriber(signal2, visit) {
|
|
1786
|
+
let node = signal2.subsHead ?? null;
|
|
1787
|
+
while (node) {
|
|
1788
|
+
const s2 = node.sub;
|
|
1789
|
+
if (s2) visit(s2);
|
|
1790
|
+
node = node.sigNext;
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1762
1793
|
|
|
1763
|
-
// src/reactivity/
|
|
1794
|
+
// src/reactivity/track.ts
|
|
1764
1795
|
var _isDev3 = isDev();
|
|
1796
|
+
var _runtimeVersion = true ? "3.3.2" : "dev";
|
|
1797
|
+
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
1798
|
+
function resolveReactiveApi() {
|
|
1799
|
+
const g2 = globalThis;
|
|
1800
|
+
const existing = g2[REGISTRY_KEY];
|
|
1801
|
+
if (existing) {
|
|
1802
|
+
if (_isDev3 && !existing.__dupWarned) {
|
|
1803
|
+
existing.__dupWarned = true;
|
|
1804
|
+
devWarn(
|
|
1805
|
+
`Multiple instances of the reactive runtime detected on this page (active: ${existing.version}, duplicate: ${_runtimeVersion}). Reactivity still works \u2014 all copies share the first one \u2014 but de-duplicate sibujs in your bundler (e.g. Vite optimizeDeps.exclude: ['sibujs'] or resolve.dedupe: ['sibujs']).`
|
|
1806
|
+
);
|
|
1807
|
+
}
|
|
1808
|
+
return existing;
|
|
1809
|
+
}
|
|
1810
|
+
const local = {
|
|
1811
|
+
suspendTracking,
|
|
1812
|
+
resumeTracking,
|
|
1813
|
+
isTrackingSuspended,
|
|
1814
|
+
untracked,
|
|
1815
|
+
retrack,
|
|
1816
|
+
track,
|
|
1817
|
+
reactiveBinding,
|
|
1818
|
+
recordDependency,
|
|
1819
|
+
cleanup,
|
|
1820
|
+
setMaxSubscriberRepeats,
|
|
1821
|
+
setMaxDrainIterations,
|
|
1822
|
+
drainNotificationQueue,
|
|
1823
|
+
queueSignalNotification,
|
|
1824
|
+
notifySubscribers,
|
|
1825
|
+
getSubscriberCount,
|
|
1826
|
+
getSubscriberDeps,
|
|
1827
|
+
forEachSubscriber,
|
|
1828
|
+
version: _runtimeVersion
|
|
1829
|
+
};
|
|
1830
|
+
g2[REGISTRY_KEY] = local;
|
|
1831
|
+
return local;
|
|
1832
|
+
}
|
|
1833
|
+
var API = resolveReactiveApi();
|
|
1834
|
+
var suspendTracking2 = API.suspendTracking;
|
|
1835
|
+
var resumeTracking2 = API.resumeTracking;
|
|
1836
|
+
var isTrackingSuspended2 = API.isTrackingSuspended;
|
|
1837
|
+
var untracked2 = API.untracked;
|
|
1838
|
+
var retrack2 = API.retrack;
|
|
1839
|
+
var track2 = API.track;
|
|
1840
|
+
var reactiveBinding2 = API.reactiveBinding;
|
|
1841
|
+
var recordDependency2 = API.recordDependency;
|
|
1842
|
+
var cleanup2 = API.cleanup;
|
|
1843
|
+
var setMaxSubscriberRepeats2 = API.setMaxSubscriberRepeats;
|
|
1844
|
+
var setMaxDrainIterations2 = API.setMaxDrainIterations;
|
|
1845
|
+
var drainNotificationQueue2 = API.drainNotificationQueue;
|
|
1846
|
+
var queueSignalNotification2 = API.queueSignalNotification;
|
|
1847
|
+
var notifySubscribers2 = API.notifySubscribers;
|
|
1848
|
+
var getSubscriberCount2 = API.getSubscriberCount;
|
|
1849
|
+
var getSubscriberDeps2 = API.getSubscriberDeps;
|
|
1850
|
+
var forEachSubscriber2 = API.forEachSubscriber;
|
|
1851
|
+
|
|
1852
|
+
// src/reactivity/bindAttribute.ts
|
|
1853
|
+
var _isDev4 = isDev();
|
|
1765
1854
|
function setProp(el, key, val) {
|
|
1766
1855
|
el[key] = val;
|
|
1767
1856
|
}
|
|
1768
1857
|
function bindAttribute(el, attr, getter) {
|
|
1769
1858
|
if (isEventHandlerAttr(attr)) {
|
|
1770
|
-
if (
|
|
1859
|
+
if (_isDev4)
|
|
1771
1860
|
devWarn(
|
|
1772
1861
|
`bindAttribute: refusing to bind event-handler attribute "${attr}". Use on:{ ${attr.slice(2)}: fn } instead.`
|
|
1773
1862
|
);
|
|
@@ -1779,7 +1868,7 @@ function bindAttribute(el, attr, getter) {
|
|
|
1779
1868
|
try {
|
|
1780
1869
|
value = getter();
|
|
1781
1870
|
} catch (err) {
|
|
1782
|
-
if (
|
|
1871
|
+
if (_isDev4)
|
|
1783
1872
|
devWarn(`bindAttribute: getter for "${attr}" threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1784
1873
|
return;
|
|
1785
1874
|
}
|
|
@@ -1800,7 +1889,7 @@ function bindAttribute(el, attr, getter) {
|
|
|
1800
1889
|
el.setAttribute(attr, sanitizeAttributeString(attr, str));
|
|
1801
1890
|
}
|
|
1802
1891
|
}
|
|
1803
|
-
return
|
|
1892
|
+
return reactiveBinding2(commit);
|
|
1804
1893
|
}
|
|
1805
1894
|
function bindDynamic(el, nameGetter, valueGetter) {
|
|
1806
1895
|
let prevName = null;
|
|
@@ -1809,14 +1898,14 @@ function bindDynamic(el, nameGetter, valueGetter) {
|
|
|
1809
1898
|
try {
|
|
1810
1899
|
name = typeof nameGetter === "function" ? nameGetter() : nameGetter;
|
|
1811
1900
|
} catch (err) {
|
|
1812
|
-
if (
|
|
1901
|
+
if (_isDev4) devWarn(`bindDynamic: name getter threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1813
1902
|
return;
|
|
1814
1903
|
}
|
|
1815
1904
|
let value;
|
|
1816
1905
|
try {
|
|
1817
1906
|
value = typeof valueGetter === "function" ? valueGetter() : valueGetter;
|
|
1818
1907
|
} catch (err) {
|
|
1819
|
-
if (
|
|
1908
|
+
if (_isDev4) devWarn(`bindDynamic: value getter threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1820
1909
|
return;
|
|
1821
1910
|
}
|
|
1822
1911
|
if (isEventHandlerAttr(name)) return;
|
|
@@ -1831,7 +1920,7 @@ function bindDynamic(el, nameGetter, valueGetter) {
|
|
|
1831
1920
|
}
|
|
1832
1921
|
prevName = name;
|
|
1833
1922
|
}
|
|
1834
|
-
const teardown =
|
|
1923
|
+
const teardown = reactiveBinding2(commit);
|
|
1835
1924
|
return () => {
|
|
1836
1925
|
teardown();
|
|
1837
1926
|
if (prevName !== null) {
|
|
@@ -1842,7 +1931,7 @@ function bindDynamic(el, nameGetter, valueGetter) {
|
|
|
1842
1931
|
|
|
1843
1932
|
// src/core/rendering/dispose.ts
|
|
1844
1933
|
var elementDisposers = /* @__PURE__ */ new WeakMap();
|
|
1845
|
-
var
|
|
1934
|
+
var _isDev5 = isDev();
|
|
1846
1935
|
var activeBindingCount = 0;
|
|
1847
1936
|
function registerDisposer(node, teardown) {
|
|
1848
1937
|
let disposers = elementDisposers.get(node);
|
|
@@ -1851,7 +1940,7 @@ function registerDisposer(node, teardown) {
|
|
|
1851
1940
|
elementDisposers.set(node, disposers);
|
|
1852
1941
|
}
|
|
1853
1942
|
disposers.push(teardown);
|
|
1854
|
-
if (
|
|
1943
|
+
if (_isDev5) activeBindingCount++;
|
|
1855
1944
|
}
|
|
1856
1945
|
function dispose(node) {
|
|
1857
1946
|
const stack = [node];
|
|
@@ -1870,12 +1959,12 @@ function dispose(node) {
|
|
|
1870
1959
|
if (disposers) {
|
|
1871
1960
|
const snapshot = disposers.slice();
|
|
1872
1961
|
elementDisposers.delete(current);
|
|
1873
|
-
if (
|
|
1962
|
+
if (_isDev5) activeBindingCount -= snapshot.length;
|
|
1874
1963
|
for (const d of snapshot) {
|
|
1875
1964
|
try {
|
|
1876
1965
|
d();
|
|
1877
1966
|
} catch (err) {
|
|
1878
|
-
if (
|
|
1967
|
+
if (_isDev5 && typeof console !== "undefined") {
|
|
1879
1968
|
console.warn("[SibuJS] Disposer threw during cleanup:", err);
|
|
1880
1969
|
}
|
|
1881
1970
|
}
|
|
@@ -1886,12 +1975,12 @@ function dispose(node) {
|
|
|
1886
1975
|
if (!added || added.length === 0) break;
|
|
1887
1976
|
const moreSnapshot = added.slice();
|
|
1888
1977
|
elementDisposers.delete(current);
|
|
1889
|
-
if (
|
|
1978
|
+
if (_isDev5) activeBindingCount -= moreSnapshot.length;
|
|
1890
1979
|
for (const d of moreSnapshot) {
|
|
1891
1980
|
try {
|
|
1892
1981
|
d();
|
|
1893
1982
|
} catch (err) {
|
|
1894
|
-
if (
|
|
1983
|
+
if (_isDev5 && typeof console !== "undefined") {
|
|
1895
1984
|
console.warn("[SibuJS] Disposer threw during cleanup:", err);
|
|
1896
1985
|
}
|
|
1897
1986
|
}
|
|
@@ -1901,7 +1990,7 @@ function dispose(node) {
|
|
|
1901
1990
|
}
|
|
1902
1991
|
}
|
|
1903
1992
|
function checkLeaks(warnThreshold = 0) {
|
|
1904
|
-
if (!
|
|
1993
|
+
if (!_isDev5) return 0;
|
|
1905
1994
|
if (warnThreshold > 0 && activeBindingCount > warnThreshold) {
|
|
1906
1995
|
devWarn(
|
|
1907
1996
|
`checkLeaks: ${activeBindingCount} active DOM bindings detected. Expected \u2264${warnThreshold}. This may indicate a component was removed from the DOM without calling dispose().`
|
|
@@ -1911,7 +2000,7 @@ function checkLeaks(warnThreshold = 0) {
|
|
|
1911
2000
|
}
|
|
1912
2001
|
|
|
1913
2002
|
// src/reactivity/bindChildNode.ts
|
|
1914
|
-
var
|
|
2003
|
+
var _isDev6 = isDev();
|
|
1915
2004
|
function bindChildNode(placeholder, getter) {
|
|
1916
2005
|
let lastNodes = [];
|
|
1917
2006
|
function commit() {
|
|
@@ -1919,7 +2008,7 @@ function bindChildNode(placeholder, getter) {
|
|
|
1919
2008
|
try {
|
|
1920
2009
|
result = getter();
|
|
1921
2010
|
} catch (err) {
|
|
1922
|
-
if (
|
|
2011
|
+
if (_isDev6) devWarn(`bindChildNode: getter threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1923
2012
|
return;
|
|
1924
2013
|
}
|
|
1925
2014
|
if (result == null || typeof result === "boolean") {
|
|
@@ -1945,7 +2034,7 @@ function bindChildNode(placeholder, getter) {
|
|
|
1945
2034
|
if (item == null || typeof item === "boolean") continue;
|
|
1946
2035
|
const node = item instanceof Node ? item : document.createTextNode(String(item));
|
|
1947
2036
|
if (seen.has(node)) {
|
|
1948
|
-
if (
|
|
2037
|
+
if (_isDev6)
|
|
1949
2038
|
devWarn("bindChildNode: duplicate node reference in array \u2014 only the first occurrence is rendered.");
|
|
1950
2039
|
continue;
|
|
1951
2040
|
}
|
|
@@ -1980,12 +2069,12 @@ function bindChildNode(placeholder, getter) {
|
|
|
1980
2069
|
}
|
|
1981
2070
|
lastNodes = newNodes;
|
|
1982
2071
|
}
|
|
1983
|
-
return
|
|
2072
|
+
return reactiveBinding2(commit);
|
|
1984
2073
|
}
|
|
1985
2074
|
|
|
1986
2075
|
// src/core/rendering/tagFactory.ts
|
|
1987
2076
|
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
1988
|
-
var
|
|
2077
|
+
var _isDev7 = isDev();
|
|
1989
2078
|
var BLOCKED_TAGS = /* @__PURE__ */ new Set(["script", "iframe", "object", "embed", "frame", "frameset"]);
|
|
1990
2079
|
function isBlockedTag(tag) {
|
|
1991
2080
|
return BLOCKED_TAGS.has(tag.toLowerCase());
|
|
@@ -2028,7 +2117,7 @@ function toKebab(prop) {
|
|
|
2028
2117
|
}
|
|
2029
2118
|
function applyStyle(el, style2) {
|
|
2030
2119
|
if (typeof style2 === "function") {
|
|
2031
|
-
const teardown =
|
|
2120
|
+
const teardown = track2(() => {
|
|
2032
2121
|
el.setAttribute("style", style2());
|
|
2033
2122
|
});
|
|
2034
2123
|
registerDisposer(el, teardown);
|
|
@@ -2044,7 +2133,7 @@ function applyStyle(el, style2) {
|
|
|
2044
2133
|
const name = toKebab(prop);
|
|
2045
2134
|
if (typeof val === "function") {
|
|
2046
2135
|
const getter = val;
|
|
2047
|
-
const teardown =
|
|
2136
|
+
const teardown = track2(() => {
|
|
2048
2137
|
htmlEl.style.setProperty(name, sanitizeCSSValue(String(getter())));
|
|
2049
2138
|
});
|
|
2050
2139
|
registerDisposer(el, teardown);
|
|
@@ -2059,7 +2148,7 @@ function applyClass(el, cls) {
|
|
|
2059
2148
|
return;
|
|
2060
2149
|
}
|
|
2061
2150
|
if (typeof cls === "function") {
|
|
2062
|
-
const teardown =
|
|
2151
|
+
const teardown = track2(() => {
|
|
2063
2152
|
el.setAttribute("class", cls());
|
|
2064
2153
|
});
|
|
2065
2154
|
registerDisposer(el, teardown);
|
|
@@ -2086,7 +2175,7 @@ function applyClass(el, cls) {
|
|
|
2086
2175
|
}
|
|
2087
2176
|
el.setAttribute("class", r);
|
|
2088
2177
|
};
|
|
2089
|
-
const teardown =
|
|
2178
|
+
const teardown = track2(update);
|
|
2090
2179
|
registerDisposer(el, teardown);
|
|
2091
2180
|
} else {
|
|
2092
2181
|
el.setAttribute("class", result);
|
|
@@ -2156,7 +2245,7 @@ var tagFactory = (tag, ns) => {
|
|
|
2156
2245
|
appendChildren(el, second);
|
|
2157
2246
|
return el;
|
|
2158
2247
|
}
|
|
2159
|
-
if (
|
|
2248
|
+
if (_isDev7 && looksLikeClassList(first)) {
|
|
2160
2249
|
devWarn(
|
|
2161
2250
|
`tagFactory: lone string "${first}" looks like a class list but is being rendered as TEXT. For a class, use ${tag}({ class: "${first}" }) \u2014 or ${tag}("${first}", children) to set the class AND add children.`
|
|
2162
2251
|
);
|
|
@@ -2177,7 +2266,7 @@ var tagFactory = (tag, ns) => {
|
|
|
2177
2266
|
if (pClass != null) applyClass(el, pClass);
|
|
2178
2267
|
const pId = props.id;
|
|
2179
2268
|
if (pId != null) {
|
|
2180
|
-
if (
|
|
2269
|
+
if (_isDev7 && typeof pId === "string" && CLOBBER_RISKY_IDS.has(pId.toLowerCase())) {
|
|
2181
2270
|
devWarn(
|
|
2182
2271
|
`tagFactory: element id="${pId}" matches a common global and may cause DOM clobbering. Avoid setting ids from untrusted input.`
|
|
2183
2272
|
);
|
|
@@ -2192,7 +2281,7 @@ var tagFactory = (tag, ns) => {
|
|
|
2192
2281
|
const handler = pOn[ev];
|
|
2193
2282
|
if (typeof handler === "function") {
|
|
2194
2283
|
el.addEventListener(ev, handler);
|
|
2195
|
-
} else if (
|
|
2284
|
+
} else if (_isDev7) {
|
|
2196
2285
|
devWarn(
|
|
2197
2286
|
`tagFactory: on.${ev} handler is not a function (got ${typeof handler}). Event listener was not attached.`
|
|
2198
2287
|
);
|
|
@@ -2305,7 +2394,7 @@ var area = tagFactory("area");
|
|
|
2305
2394
|
var audio = tagFactory("audio");
|
|
2306
2395
|
var img = tagFactory("img");
|
|
2307
2396
|
var map = tagFactory("map");
|
|
2308
|
-
var
|
|
2397
|
+
var track3 = tagFactory("track");
|
|
2309
2398
|
var video = tagFactory("video");
|
|
2310
2399
|
var embed = tagFactory("embed");
|
|
2311
2400
|
var iframe = tagFactory("iframe");
|
|
@@ -2381,7 +2470,7 @@ var marquee = tagFactory("marquee");
|
|
|
2381
2470
|
var customElement = (tagName) => tagFactory(tagName);
|
|
2382
2471
|
|
|
2383
2472
|
// src/core/rendering/htm.ts
|
|
2384
|
-
var
|
|
2473
|
+
var _isDev8 = isDev();
|
|
2385
2474
|
var RAW_TEXT_TAGS = /* @__PURE__ */ new Set(["script", "style"]);
|
|
2386
2475
|
var VOID_ELEMENTS3 = /* @__PURE__ */ new Set([
|
|
2387
2476
|
"area",
|
|
@@ -2677,7 +2766,7 @@ function executeElement(tmpl, values) {
|
|
|
2677
2766
|
const fn = values[attr.idx];
|
|
2678
2767
|
if (typeof fn === "function") {
|
|
2679
2768
|
el.addEventListener(attr.name, fn);
|
|
2680
|
-
} else if (
|
|
2769
|
+
} else if (_isDev8) {
|
|
2681
2770
|
devWarn(
|
|
2682
2771
|
`html: on:${attr.name} handler is not a function (got ${typeof fn}). Event listener was not attached.`
|
|
2683
2772
|
);
|
|
@@ -2805,7 +2894,7 @@ function mount(component, container) {
|
|
|
2805
2894
|
}
|
|
2806
2895
|
|
|
2807
2896
|
// src/core/rendering/each.ts
|
|
2808
|
-
var
|
|
2897
|
+
var _isDev9 = isDev();
|
|
2809
2898
|
function resolveNodeChild(child) {
|
|
2810
2899
|
if (typeof child === "function") {
|
|
2811
2900
|
return resolveNodeChild(child());
|
|
@@ -2890,7 +2979,7 @@ function each(getArray, render, options) {
|
|
|
2890
2979
|
workMap.clear();
|
|
2891
2980
|
keyIndexMap.clear();
|
|
2892
2981
|
for (let i2 = 0; i2 < newLen; i2++) {
|
|
2893
|
-
if (
|
|
2982
|
+
if (_isDev9 && keyIndexMap.has(newKeys[i2])) {
|
|
2894
2983
|
devWarn(
|
|
2895
2984
|
`each: duplicate key "${String(newKeys[i2])}" at index ${i2} (first seen at ${keyIndexMap.get(newKeys[i2])}). Keys must be unique \u2014 duplicates cause rows to be dropped or mis-ordered.`
|
|
2896
2985
|
);
|
|
@@ -2905,12 +2994,12 @@ function each(getArray, render, options) {
|
|
|
2905
2994
|
node = existing;
|
|
2906
2995
|
} else {
|
|
2907
2996
|
const itemKey = key;
|
|
2908
|
-
const itemGetter = () =>
|
|
2997
|
+
const itemGetter = () => untracked2(() => getArray()[keyIndexMap.get(itemKey)]);
|
|
2909
2998
|
const indexGetter = () => keyIndexMap.get(itemKey);
|
|
2910
2999
|
try {
|
|
2911
3000
|
node = resolveNodeChild(render(itemGetter, indexGetter));
|
|
2912
3001
|
} catch (err) {
|
|
2913
|
-
if (
|
|
3002
|
+
if (_isDev9) {
|
|
2914
3003
|
devWarn(
|
|
2915
3004
|
`each: render threw for item at index ${i2} (key="${newKeys[i2]}"): ${err instanceof Error ? err.message : String(err)}`
|
|
2916
3005
|
);
|
|
@@ -2924,7 +3013,7 @@ function each(getArray, render, options) {
|
|
|
2924
3013
|
target.dispatchEvent(
|
|
2925
3014
|
new CustomEvent("sibu:error-propagate", { bubbles: true, detail: { error: errorObj } })
|
|
2926
3015
|
);
|
|
2927
|
-
} else if (
|
|
3016
|
+
} else if (_isDev9) {
|
|
2928
3017
|
devWarn(`each: error not surfaced \u2014 anchor detached: ${errorObj.message}`);
|
|
2929
3018
|
}
|
|
2930
3019
|
} catch {
|
|
@@ -2998,7 +3087,7 @@ function each(getArray, render, options) {
|
|
|
2998
3087
|
workMap = tmp;
|
|
2999
3088
|
initialized = true;
|
|
3000
3089
|
};
|
|
3001
|
-
const untrack =
|
|
3090
|
+
const untrack = track2(update);
|
|
3002
3091
|
registerDisposer(anchor, untrack);
|
|
3003
3092
|
if (!initialized) {
|
|
3004
3093
|
queueMicrotask(() => {
|
|
@@ -3111,7 +3200,7 @@ function DynamicComponent(is) {
|
|
|
3111
3200
|
}
|
|
3112
3201
|
container.replaceChildren(el);
|
|
3113
3202
|
}
|
|
3114
|
-
const untrack =
|
|
3203
|
+
const untrack = track2(render);
|
|
3115
3204
|
registerDisposer(container, untrack);
|
|
3116
3205
|
return container;
|
|
3117
3206
|
}
|
|
@@ -3126,7 +3215,7 @@ function show(condition, element) {
|
|
|
3126
3215
|
const update = () => {
|
|
3127
3216
|
element.style.display = condition() ? "" : "none";
|
|
3128
3217
|
};
|
|
3129
|
-
registerDisposer(element,
|
|
3218
|
+
registerDisposer(element, track2(update));
|
|
3130
3219
|
return element;
|
|
3131
3220
|
}
|
|
3132
3221
|
function when(condition, thenBranch, elseBranch) {
|
|
@@ -3153,7 +3242,7 @@ function when(condition, thenBranch, elseBranch) {
|
|
|
3153
3242
|
}
|
|
3154
3243
|
initialized = true;
|
|
3155
3244
|
};
|
|
3156
|
-
registerDisposer(anchor,
|
|
3245
|
+
registerDisposer(anchor, track2(update));
|
|
3157
3246
|
if (!initialized) {
|
|
3158
3247
|
queueMicrotask(() => {
|
|
3159
3248
|
if (!initialized && anchor.parentNode) update();
|
|
@@ -3188,7 +3277,7 @@ function match(value, cases, fallback) {
|
|
|
3188
3277
|
}
|
|
3189
3278
|
initialized = true;
|
|
3190
3279
|
};
|
|
3191
|
-
registerDisposer(anchor,
|
|
3280
|
+
registerDisposer(anchor, track2(update));
|
|
3192
3281
|
if (!initialized) {
|
|
3193
3282
|
queueMicrotask(() => {
|
|
3194
3283
|
if (!initialized && anchor.parentNode) update();
|
|
@@ -3257,7 +3346,7 @@ function KeepAlive(activeKey, cases, options) {
|
|
|
3257
3346
|
currentNode = node;
|
|
3258
3347
|
initialized = true;
|
|
3259
3348
|
};
|
|
3260
|
-
const untrack =
|
|
3349
|
+
const untrack = track2(update);
|
|
3261
3350
|
if (!initialized) {
|
|
3262
3351
|
queueMicrotask(() => {
|
|
3263
3352
|
if (!initialized && anchor.parentNode) update();
|
|
@@ -3278,10 +3367,24 @@ function KeepAlive(activeKey, cases, options) {
|
|
|
3278
3367
|
}
|
|
3279
3368
|
|
|
3280
3369
|
// src/core/rendering/action.ts
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3370
|
+
var ACTIONS_KEY = /* @__PURE__ */ Symbol.for("sibujs.actions.v1");
|
|
3371
|
+
var _actions = globalThis[ACTIONS_KEY] ?? (globalThis[ACTIONS_KEY] = /* @__PURE__ */ new Map());
|
|
3372
|
+
function registerAction(name, fn) {
|
|
3373
|
+
_actions.set(name, fn);
|
|
3374
|
+
}
|
|
3375
|
+
function getAction(name) {
|
|
3376
|
+
return _actions.get(name);
|
|
3377
|
+
}
|
|
3378
|
+
function action(element, action2, param2) {
|
|
3379
|
+
const actionFn = typeof action2 === "string" ? getAction(action2) : action2;
|
|
3380
|
+
if (!actionFn) {
|
|
3381
|
+
throw new Error(
|
|
3382
|
+
`[SibuJS] No action registered under the name "${action2}". Register it with registerAction() before applying it by name.`
|
|
3383
|
+
);
|
|
3384
|
+
}
|
|
3385
|
+
const cleanup3 = actionFn(element, param2);
|
|
3386
|
+
if (typeof cleanup3 === "function") {
|
|
3387
|
+
registerDisposer(element, cleanup3);
|
|
3285
3388
|
}
|
|
3286
3389
|
}
|
|
3287
3390
|
var clickOutside = (element, callback) => {
|
|
@@ -3355,6 +3458,11 @@ var trapFocus = (element) => {
|
|
|
3355
3458
|
element.addEventListener("keydown", handler);
|
|
3356
3459
|
return () => element.removeEventListener("keydown", handler);
|
|
3357
3460
|
};
|
|
3461
|
+
registerAction("clickOutside", clickOutside);
|
|
3462
|
+
registerAction("longPress", longPress);
|
|
3463
|
+
registerAction("copyOnClick", copyOnClick);
|
|
3464
|
+
registerAction("autoResize", autoResize);
|
|
3465
|
+
registerAction("trapFocus", trapFocus);
|
|
3358
3466
|
|
|
3359
3467
|
// src/core/rendering/catch.ts
|
|
3360
3468
|
var globalErrorHandler = null;
|
|
@@ -3403,19 +3511,20 @@ function setGlobalErrorHandler(handler) {
|
|
|
3403
3511
|
}
|
|
3404
3512
|
|
|
3405
3513
|
// src/core/rendering/createId.ts
|
|
3406
|
-
var
|
|
3514
|
+
var COUNTER_KEY = /* @__PURE__ */ Symbol.for("sibujs.createId.v1");
|
|
3515
|
+
var _counter = globalThis[COUNTER_KEY] ?? (globalThis[COUNTER_KEY] = { n: 0 });
|
|
3407
3516
|
function createId(prefix = "sibu") {
|
|
3408
|
-
|
|
3409
|
-
return `${prefix}-${
|
|
3517
|
+
_counter.n++;
|
|
3518
|
+
return `${prefix}-${_counter.n}`;
|
|
3410
3519
|
}
|
|
3411
3520
|
function __resetIdCounter() {
|
|
3412
|
-
|
|
3521
|
+
_counter.n = 0;
|
|
3413
3522
|
}
|
|
3414
3523
|
|
|
3415
3524
|
// src/reactivity/batch.ts
|
|
3416
3525
|
var batchDepth = 0;
|
|
3417
3526
|
var pendingSignals = /* @__PURE__ */ new Set();
|
|
3418
|
-
function
|
|
3527
|
+
function batchImpl(fn) {
|
|
3419
3528
|
batchDepth++;
|
|
3420
3529
|
try {
|
|
3421
3530
|
return fn();
|
|
@@ -3426,28 +3535,45 @@ function batch(fn) {
|
|
|
3426
3535
|
}
|
|
3427
3536
|
}
|
|
3428
3537
|
}
|
|
3429
|
-
function
|
|
3538
|
+
function enqueueBatchedSignalImpl(signal2) {
|
|
3430
3539
|
if (batchDepth === 0) return false;
|
|
3431
3540
|
pendingSignals.add(signal2);
|
|
3432
3541
|
return true;
|
|
3433
3542
|
}
|
|
3434
|
-
function
|
|
3543
|
+
function isBatchingImpl() {
|
|
3435
3544
|
return batchDepth > 0;
|
|
3436
3545
|
}
|
|
3437
3546
|
function flushBatch() {
|
|
3438
3547
|
try {
|
|
3439
3548
|
for (const signal2 of pendingSignals) {
|
|
3440
|
-
|
|
3549
|
+
queueSignalNotification2(signal2);
|
|
3441
3550
|
}
|
|
3442
3551
|
} finally {
|
|
3443
3552
|
pendingSignals.clear();
|
|
3444
3553
|
}
|
|
3445
|
-
|
|
3554
|
+
drainNotificationQueue2();
|
|
3555
|
+
}
|
|
3556
|
+
var BATCH_REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.batch.v1");
|
|
3557
|
+
function resolveBatchApi() {
|
|
3558
|
+
const g2 = globalThis;
|
|
3559
|
+
const existing = g2[BATCH_REGISTRY_KEY];
|
|
3560
|
+
if (existing) return existing;
|
|
3561
|
+
const local = {
|
|
3562
|
+
batch: batchImpl,
|
|
3563
|
+
enqueueBatchedSignal: enqueueBatchedSignalImpl,
|
|
3564
|
+
isBatching: isBatchingImpl
|
|
3565
|
+
};
|
|
3566
|
+
g2[BATCH_REGISTRY_KEY] = local;
|
|
3567
|
+
return local;
|
|
3446
3568
|
}
|
|
3569
|
+
var API2 = resolveBatchApi();
|
|
3570
|
+
var batch = API2.batch;
|
|
3571
|
+
var enqueueBatchedSignal = API2.enqueueBatchedSignal;
|
|
3572
|
+
var isBatching = API2.isBatching;
|
|
3447
3573
|
|
|
3448
3574
|
// src/core/signals/signal.ts
|
|
3449
3575
|
var _g = globalThis;
|
|
3450
|
-
var
|
|
3576
|
+
var _isDev10 = isDev();
|
|
3451
3577
|
function signal(initial, options) {
|
|
3452
3578
|
const state = {
|
|
3453
3579
|
value: initial,
|
|
@@ -3458,11 +3584,11 @@ function signal(initial, options) {
|
|
|
3458
3584
|
__activeNode: null,
|
|
3459
3585
|
__name: void 0
|
|
3460
3586
|
};
|
|
3461
|
-
const debugName =
|
|
3587
|
+
const debugName = _isDev10 ? options?.name : void 0;
|
|
3462
3588
|
const equalsFn = options?.equals;
|
|
3463
3589
|
if (debugName) state.__name = debugName;
|
|
3464
3590
|
function get() {
|
|
3465
|
-
|
|
3591
|
+
recordDependency2(state);
|
|
3466
3592
|
return state.value;
|
|
3467
3593
|
}
|
|
3468
3594
|
get.__signal = state;
|
|
@@ -3475,15 +3601,15 @@ function signal(initial, options) {
|
|
|
3475
3601
|
if (equalsFn(prev, newValue)) return;
|
|
3476
3602
|
state.value = newValue;
|
|
3477
3603
|
state.__v++;
|
|
3478
|
-
if (
|
|
3604
|
+
if (_isDev10) {
|
|
3479
3605
|
const hook = _g.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
3480
3606
|
if (hook) hook.emit("signal:update", { signal: state, name: debugName, oldValue: prev, newValue });
|
|
3481
3607
|
}
|
|
3482
3608
|
if (!enqueueBatchedSignal(state)) {
|
|
3483
|
-
|
|
3609
|
+
notifySubscribers2(state);
|
|
3484
3610
|
}
|
|
3485
3611
|
};
|
|
3486
|
-
} else if (
|
|
3612
|
+
} else if (_isDev10) {
|
|
3487
3613
|
set = (next) => {
|
|
3488
3614
|
const prev = state.value;
|
|
3489
3615
|
const newValue = typeof next === "function" ? next(prev) : next;
|
|
@@ -3493,7 +3619,7 @@ function signal(initial, options) {
|
|
|
3493
3619
|
const hook = _g.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
3494
3620
|
if (hook) hook.emit("signal:update", { signal: state, name: debugName, oldValue: prev, newValue });
|
|
3495
3621
|
if (!enqueueBatchedSignal(state)) {
|
|
3496
|
-
|
|
3622
|
+
notifySubscribers2(state);
|
|
3497
3623
|
}
|
|
3498
3624
|
};
|
|
3499
3625
|
} else {
|
|
@@ -3504,11 +3630,11 @@ function signal(initial, options) {
|
|
|
3504
3630
|
state.value = newValue;
|
|
3505
3631
|
state.__v++;
|
|
3506
3632
|
if (!enqueueBatchedSignal(state)) {
|
|
3507
|
-
|
|
3633
|
+
notifySubscribers2(state);
|
|
3508
3634
|
}
|
|
3509
3635
|
};
|
|
3510
3636
|
}
|
|
3511
|
-
if (
|
|
3637
|
+
if (_isDev10) {
|
|
3512
3638
|
const hook = _g.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
3513
3639
|
if (hook) hook.emit("signal:create", { signal: state, name: debugName, getter: get, initial });
|
|
3514
3640
|
}
|
|
@@ -3516,23 +3642,29 @@ function signal(initial, options) {
|
|
|
3516
3642
|
}
|
|
3517
3643
|
|
|
3518
3644
|
// src/core/ssr-context.ts
|
|
3519
|
-
var
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3645
|
+
var SSR_KEY = /* @__PURE__ */ Symbol.for("sibujs.ssr.v1");
|
|
3646
|
+
function detectSSRShared() {
|
|
3647
|
+
let detected = null;
|
|
3648
|
+
try {
|
|
3649
|
+
if (typeof process !== "undefined" && process.versions && process.versions.node) {
|
|
3650
|
+
let mod = null;
|
|
3651
|
+
const getBuiltin = process.getBuiltinModule;
|
|
3652
|
+
if (typeof getBuiltin === "function") {
|
|
3653
|
+
mod = getBuiltin("node:async_hooks");
|
|
3654
|
+
} else {
|
|
3655
|
+
const req = Function("return typeof require==='function'?require:null")();
|
|
3656
|
+
if (req) mod = req("node:async_hooks");
|
|
3657
|
+
}
|
|
3658
|
+
if (mod) detected = new mod.AsyncLocalStorage();
|
|
3529
3659
|
}
|
|
3530
|
-
|
|
3660
|
+
} catch {
|
|
3661
|
+
detected = null;
|
|
3531
3662
|
}
|
|
3532
|
-
|
|
3533
|
-
als = null;
|
|
3663
|
+
return { als: detected, fallbackStore: { ssr: false, suspenseIdCounter: 0 } };
|
|
3534
3664
|
}
|
|
3535
|
-
var
|
|
3665
|
+
var _shared = globalThis[SSR_KEY] ?? (globalThis[SSR_KEY] = detectSSRShared());
|
|
3666
|
+
var als = _shared.als;
|
|
3667
|
+
var fallbackStore = _shared.fallbackStore;
|
|
3536
3668
|
function getSSRStore() {
|
|
3537
3669
|
if (als) {
|
|
3538
3670
|
const s2 = als.getStore();
|
|
@@ -3597,11 +3729,11 @@ function on(deps, handler) {
|
|
|
3597
3729
|
if (first) {
|
|
3598
3730
|
first = false;
|
|
3599
3731
|
prev = value;
|
|
3600
|
-
|
|
3732
|
+
untracked2(() => handler(value, void 0));
|
|
3601
3733
|
} else {
|
|
3602
3734
|
const p2 = prev;
|
|
3603
3735
|
prev = value;
|
|
3604
|
-
|
|
3736
|
+
untracked2(() => handler(value, p2));
|
|
3605
3737
|
}
|
|
3606
3738
|
};
|
|
3607
3739
|
}
|
|
@@ -3623,7 +3755,7 @@ function drainReruns(ctx) {
|
|
|
3623
3755
|
do {
|
|
3624
3756
|
ctx.rerunPending = false;
|
|
3625
3757
|
if (ctx.userCleanups.length > 0) flushUserCleanups(ctx);
|
|
3626
|
-
|
|
3758
|
+
retrack2(ctx.bodyFn, ctx.subscriber);
|
|
3627
3759
|
} while (ctx.rerunPending && ++reruns <= MAX_RERUNS);
|
|
3628
3760
|
if (ctx.rerunPending) {
|
|
3629
3761
|
ctx.rerunPending = false;
|
|
@@ -3652,7 +3784,7 @@ function disposeEffect(ctx) {
|
|
|
3652
3784
|
}
|
|
3653
3785
|
}
|
|
3654
3786
|
try {
|
|
3655
|
-
|
|
3787
|
+
cleanup2(ctx.subscriber);
|
|
3656
3788
|
} catch (err) {
|
|
3657
3789
|
if (typeof console !== "undefined") {
|
|
3658
3790
|
console.warn("[SibuJS effect] dispose threw:", err);
|
|
@@ -3697,7 +3829,7 @@ function effect(effectFn, options) {
|
|
|
3697
3829
|
try {
|
|
3698
3830
|
ctx.rerunPending = false;
|
|
3699
3831
|
if (ctx.userCleanups.length > 0) flushUserCleanups(ctx);
|
|
3700
|
-
|
|
3832
|
+
retrack2(ctx.bodyFn, sub2);
|
|
3701
3833
|
if (ctx.rerunPending) drainReruns(ctx);
|
|
3702
3834
|
} finally {
|
|
3703
3835
|
ctx.running = false;
|
|
@@ -3713,7 +3845,7 @@ function effect(effectFn, options) {
|
|
|
3713
3845
|
ctx.subscriber = sub2;
|
|
3714
3846
|
ctx.running = true;
|
|
3715
3847
|
try {
|
|
3716
|
-
|
|
3848
|
+
retrack2(ctx.bodyFn, ctx.subscriber);
|
|
3717
3849
|
if (ctx.rerunPending) drainReruns(ctx);
|
|
3718
3850
|
} finally {
|
|
3719
3851
|
ctx.running = false;
|
|
@@ -3746,7 +3878,7 @@ function derived(getter, options) {
|
|
|
3746
3878
|
cs._d = false;
|
|
3747
3879
|
cs._init = true;
|
|
3748
3880
|
};
|
|
3749
|
-
|
|
3881
|
+
track2(() => {
|
|
3750
3882
|
let threw = true;
|
|
3751
3883
|
try {
|
|
3752
3884
|
cs._v = getter();
|
|
@@ -3765,12 +3897,12 @@ function derived(getter, options) {
|
|
|
3765
3897
|
`[SibuJS] Circular dependency detected in derived${debugName ? ` "${debugName}"` : ""}. A derived signal cannot read itself (directly or through a chain).`
|
|
3766
3898
|
);
|
|
3767
3899
|
}
|
|
3768
|
-
if (
|
|
3900
|
+
if (isTrackingSuspended2()) {
|
|
3769
3901
|
if (cs._d) {
|
|
3770
3902
|
const prev = cs._v;
|
|
3771
3903
|
evaluating = true;
|
|
3772
3904
|
try {
|
|
3773
|
-
|
|
3905
|
+
retrack2(recompute, markDirty);
|
|
3774
3906
|
if (!Object.is(prev, cs._v)) cs.__v++;
|
|
3775
3907
|
} finally {
|
|
3776
3908
|
evaluating = false;
|
|
@@ -3778,12 +3910,12 @@ function derived(getter, options) {
|
|
|
3778
3910
|
}
|
|
3779
3911
|
return cs._v;
|
|
3780
3912
|
}
|
|
3781
|
-
|
|
3913
|
+
recordDependency2(cs);
|
|
3782
3914
|
if (cs._d) {
|
|
3783
3915
|
const oldValue = cs._v;
|
|
3784
3916
|
evaluating = true;
|
|
3785
3917
|
try {
|
|
3786
|
-
|
|
3918
|
+
retrack2(recompute, markDirty);
|
|
3787
3919
|
if (!Object.is(oldValue, cs._v)) cs.__v++;
|
|
3788
3920
|
} finally {
|
|
3789
3921
|
evaluating = false;
|
|
@@ -3821,15 +3953,15 @@ function watch(getter, callback) {
|
|
|
3821
3953
|
if (!Object.is(newValue, oldValue)) {
|
|
3822
3954
|
const prev = oldValue;
|
|
3823
3955
|
oldValue = newValue;
|
|
3824
|
-
|
|
3956
|
+
suspendTracking2();
|
|
3825
3957
|
try {
|
|
3826
3958
|
callback(newValue, prev);
|
|
3827
3959
|
} finally {
|
|
3828
|
-
|
|
3960
|
+
resumeTracking2();
|
|
3829
3961
|
}
|
|
3830
3962
|
}
|
|
3831
3963
|
};
|
|
3832
|
-
const teardown =
|
|
3964
|
+
const teardown = track2(subscriber);
|
|
3833
3965
|
return teardown;
|
|
3834
3966
|
}
|
|
3835
3967
|
|
|
@@ -3892,11 +4024,11 @@ function store(initialState) {
|
|
|
3892
4024
|
first = false;
|
|
3893
4025
|
return;
|
|
3894
4026
|
}
|
|
3895
|
-
|
|
4027
|
+
suspendTracking2();
|
|
3896
4028
|
try {
|
|
3897
4029
|
callback(snapshot);
|
|
3898
4030
|
} finally {
|
|
3899
|
-
|
|
4031
|
+
resumeTracking2();
|
|
3900
4032
|
}
|
|
3901
4033
|
});
|
|
3902
4034
|
};
|
|
@@ -3913,11 +4045,11 @@ function store(initialState) {
|
|
|
3913
4045
|
if (!Object.is(current, prev)) {
|
|
3914
4046
|
const oldPrev = prev;
|
|
3915
4047
|
prev = current;
|
|
3916
|
-
|
|
4048
|
+
suspendTracking2();
|
|
3917
4049
|
try {
|
|
3918
4050
|
callback(current, oldPrev);
|
|
3919
4051
|
} finally {
|
|
3920
|
-
|
|
4052
|
+
resumeTracking2();
|
|
3921
4053
|
}
|
|
3922
4054
|
}
|
|
3923
4055
|
});
|
|
@@ -4019,11 +4151,11 @@ function reactiveArray(initial = []) {
|
|
|
4019
4151
|
function notify() {
|
|
4020
4152
|
snapshot = null;
|
|
4021
4153
|
if (!enqueueBatchedSignal(signal2)) {
|
|
4022
|
-
|
|
4154
|
+
notifySubscribers2(signal2);
|
|
4023
4155
|
}
|
|
4024
4156
|
}
|
|
4025
4157
|
function get() {
|
|
4026
|
-
|
|
4158
|
+
recordDependency2(signal2);
|
|
4027
4159
|
if (snapshot === null) {
|
|
4028
4160
|
const copy = data2.slice();
|
|
4029
4161
|
snapshot = Object.freeze(copy);
|
|
@@ -4279,9 +4411,9 @@ function safeCall(cb, hookName) {
|
|
|
4279
4411
|
}
|
|
4280
4412
|
}
|
|
4281
4413
|
function runMountCallback(callback, hookName, element) {
|
|
4282
|
-
const
|
|
4283
|
-
if (typeof
|
|
4284
|
-
registerDisposer(element,
|
|
4414
|
+
const cleanup3 = safeCall(callback, hookName);
|
|
4415
|
+
if (typeof cleanup3 === "function" && element) {
|
|
4416
|
+
registerDisposer(element, cleanup3);
|
|
4285
4417
|
}
|
|
4286
4418
|
}
|
|
4287
4419
|
var mountWatchers = /* @__PURE__ */ new WeakMap();
|
|
@@ -4597,7 +4729,7 @@ function defer(getter) {
|
|
|
4597
4729
|
}
|
|
4598
4730
|
});
|
|
4599
4731
|
};
|
|
4600
|
-
const teardown =
|
|
4732
|
+
const teardown = track2(() => {
|
|
4601
4733
|
latest = getter();
|
|
4602
4734
|
schedule();
|
|
4603
4735
|
});
|
|
@@ -4749,14 +4881,14 @@ function Suspense({ nodes, fallback }) {
|
|
|
4749
4881
|
}
|
|
4750
4882
|
|
|
4751
4883
|
// src/platform/ssr.ts
|
|
4752
|
-
var
|
|
4884
|
+
var _isDev11 = isDev();
|
|
4753
4885
|
function trustHTML(html3) {
|
|
4754
4886
|
return html3;
|
|
4755
4887
|
}
|
|
4756
4888
|
var DEFAULT_MAX_SSR_BYTES = 1024 * 1024;
|
|
4757
4889
|
|
|
4758
4890
|
// src/components/ErrorDisplay.ts
|
|
4759
|
-
var
|
|
4891
|
+
var _isDev12 = isDev();
|
|
4760
4892
|
var STYLES = `
|
|
4761
4893
|
.sibu-error-display {
|
|
4762
4894
|
border: 1px solid var(--sibu-err-border, #e5484d);
|
|
@@ -5067,7 +5199,7 @@ function ErrorDisplay(props) {
|
|
|
5067
5199
|
injectStyles();
|
|
5068
5200
|
const severity = props.severity ?? "error";
|
|
5069
5201
|
const normalized = normalizeError(props.error);
|
|
5070
|
-
const showDetails = props.alwaysShowDetails ??
|
|
5202
|
+
const showDetails = props.alwaysShowDetails ?? _isDev12;
|
|
5071
5203
|
const headline = props.title ?? normalized.message;
|
|
5072
5204
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19);
|
|
5073
5205
|
const [copyLabel, setCopyLabel] = signal("Copy");
|