sibujs 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.cjs +210 -26
- package/dist/browser.js +4 -4
- package/dist/build.cjs +193 -89
- package/dist/build.js +10 -10
- package/dist/cdn.global.js +7 -7
- package/dist/{chunk-24DBWDTK.js → chunk-37BUKSLH.js} +1 -1
- package/dist/{chunk-IHBVTURX.js → chunk-4UUMSLSL.js} +4 -4
- package/dist/{chunk-USDR2GFV.js → chunk-6LTFHJQG.js} +3 -3
- package/dist/{chunk-MWZFOIBG.js → chunk-AMIKDMLP.js} +4 -4
- package/dist/{chunk-JBXNCZSC.js → chunk-F7FXQ3QS.js} +1 -1
- package/dist/{chunk-BEIKESVL.js → chunk-IKLYI3RF.js} +9 -9
- package/dist/{chunk-NUWKIEHE.js → chunk-LU2MQXQQ.js} +2 -2
- package/dist/{chunk-WVJJUFPC.js → chunk-M5KBNOSJ.js} +2 -2
- package/dist/{chunk-7JHWAGRQ.js → chunk-MHBCEJQO.js} +1 -1
- package/dist/{chunk-Q2ERM6NT.js → chunk-NHKQKKZU.js} +1 -1
- package/dist/{chunk-6G6UNHZI.js → chunk-RYMOSG5B.js} +5 -5
- package/dist/{chunk-F4UM7QBJ.js → chunk-SLMFA3ZZ.js} +1 -1
- package/dist/{chunk-X3NHE2DK.js → chunk-TEFZT5PJ.js} +83 -17
- package/dist/{chunk-SLCUP2EK.js → chunk-ULLTNDRA.js} +3 -3
- package/dist/{chunk-M6WSIGYW.js → chunk-VOVVTOEA.js} +2 -2
- package/dist/{chunk-XQ7XSGYP.js → chunk-WL7BIR6O.js} +1 -1
- package/dist/{chunk-CVMMULHO.js → chunk-WW6DAGGR.js} +4 -4
- package/dist/{chunk-5K72I3UQ.js → chunk-WZG2SZOT.js} +21 -4
- package/dist/{chunk-S4FHR5ZZ.js → chunk-XH2RTYEQ.js} +3 -3
- package/dist/{chunk-4WXWJ4SW.js → chunk-Z37APKBV.js} +4 -4
- package/dist/data.cjs +161 -23
- package/dist/data.js +6 -6
- package/dist/devtools.cjs +245 -31
- package/dist/devtools.js +4 -4
- package/dist/ecosystem.cjs +183 -45
- package/dist/ecosystem.js +7 -7
- package/dist/extras.cjs +185 -86
- package/dist/extras.js +19 -19
- package/dist/index.cjs +193 -89
- package/dist/index.d.cts +59 -8
- package/dist/index.d.ts +59 -8
- package/dist/index.js +10 -10
- package/dist/motion.cjs +329 -13
- package/dist/motion.js +3 -3
- package/dist/patterns.cjs +161 -23
- package/dist/patterns.js +5 -5
- package/dist/performance.cjs +258 -23
- package/dist/performance.js +4 -4
- package/dist/plugins.cjs +244 -51
- package/dist/plugins.js +6 -6
- package/dist/ssr.cjs +183 -44
- package/dist/ssr.js +7 -7
- package/dist/testing.cjs +396 -5
- package/dist/testing.js +2 -2
- package/dist/ui.cjs +221 -32
- package/dist/ui.js +6 -6
- package/dist/widgets.cjs +146 -26
- package/dist/widgets.js +6 -6
- package/package.json +1 -1
package/dist/ssr.cjs
CHANGED
|
@@ -614,7 +614,7 @@ function hydrateProgressively(container, islands, options) {
|
|
|
614
614
|
}
|
|
615
615
|
container.setAttribute("data-sibu-hydrated", "progressive");
|
|
616
616
|
return () => {
|
|
617
|
-
for (const
|
|
617
|
+
for (const cleanup3 of cleanups) cleanup3();
|
|
618
618
|
};
|
|
619
619
|
}
|
|
620
620
|
function resetSSRState() {
|
|
@@ -707,7 +707,7 @@ function escapeAttr(str) {
|
|
|
707
707
|
return str.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">");
|
|
708
708
|
}
|
|
709
709
|
|
|
710
|
-
// src/reactivity/track.ts
|
|
710
|
+
// src/reactivity/track-core.ts
|
|
711
711
|
var _isDev3 = isDev();
|
|
712
712
|
var POOL_MAX = 4096;
|
|
713
713
|
var nodePool = [];
|
|
@@ -791,6 +791,7 @@ function unlinkSub(node) {
|
|
|
791
791
|
else sub2.depsTail = prev;
|
|
792
792
|
}
|
|
793
793
|
var currentSubscriber = null;
|
|
794
|
+
var suspendSavedSub = null;
|
|
794
795
|
var notifyDepth = 0;
|
|
795
796
|
var pendingQueue = [];
|
|
796
797
|
var pendingSet = /* @__PURE__ */ new Set();
|
|
@@ -802,6 +803,35 @@ function safeInvoke(sub2) {
|
|
|
802
803
|
if (_isDev3) devWarn(`Subscriber threw during notification: ${err instanceof Error ? err.message : String(err)}`);
|
|
803
804
|
}
|
|
804
805
|
}
|
|
806
|
+
var suspendDepth = 0;
|
|
807
|
+
var trackingSuspended = false;
|
|
808
|
+
function suspendTracking() {
|
|
809
|
+
if (suspendDepth === 0) {
|
|
810
|
+
suspendSavedSub = currentSubscriber;
|
|
811
|
+
currentSubscriber = null;
|
|
812
|
+
trackingSuspended = true;
|
|
813
|
+
}
|
|
814
|
+
suspendDepth++;
|
|
815
|
+
}
|
|
816
|
+
function resumeTracking() {
|
|
817
|
+
suspendDepth--;
|
|
818
|
+
if (suspendDepth === 0) {
|
|
819
|
+
currentSubscriber = suspendSavedSub;
|
|
820
|
+
suspendSavedSub = null;
|
|
821
|
+
trackingSuspended = false;
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
function isTrackingSuspended() {
|
|
825
|
+
return trackingSuspended;
|
|
826
|
+
}
|
|
827
|
+
function untracked(fn) {
|
|
828
|
+
suspendTracking();
|
|
829
|
+
try {
|
|
830
|
+
return fn();
|
|
831
|
+
} finally {
|
|
832
|
+
resumeTracking();
|
|
833
|
+
}
|
|
834
|
+
}
|
|
805
835
|
var subscriberEpochCounter = 0;
|
|
806
836
|
function retrack(effectFn, subscriber) {
|
|
807
837
|
const prev = currentSubscriber;
|
|
@@ -911,6 +941,16 @@ function cleanup(subscriber) {
|
|
|
911
941
|
var maxSubscriberRepeats = 50;
|
|
912
942
|
var maxDrainIterations = 1e6;
|
|
913
943
|
var drainEpoch = 0;
|
|
944
|
+
function setMaxSubscriberRepeats(n) {
|
|
945
|
+
const prev = maxSubscriberRepeats;
|
|
946
|
+
if (Number.isFinite(n) && n > 0) maxSubscriberRepeats = Math.floor(n);
|
|
947
|
+
return prev;
|
|
948
|
+
}
|
|
949
|
+
function setMaxDrainIterations(n) {
|
|
950
|
+
const prev = maxDrainIterations;
|
|
951
|
+
if (Number.isFinite(n) && n > 0) maxDrainIterations = Math.floor(n);
|
|
952
|
+
return prev;
|
|
953
|
+
}
|
|
914
954
|
function tickRepeat(sub2) {
|
|
915
955
|
const s2 = sub2;
|
|
916
956
|
if (s2._runEpoch !== drainEpoch) {
|
|
@@ -1059,6 +1099,85 @@ function notifySubscribers(signal2) {
|
|
|
1059
1099
|
}
|
|
1060
1100
|
}
|
|
1061
1101
|
}
|
|
1102
|
+
function getSubscriberCount(signal2) {
|
|
1103
|
+
return signal2.__sc ?? 0;
|
|
1104
|
+
}
|
|
1105
|
+
function getSubscriberDeps(subscriber) {
|
|
1106
|
+
const sub2 = subscriber;
|
|
1107
|
+
const out = [];
|
|
1108
|
+
let node = sub2.depsHead ?? null;
|
|
1109
|
+
while (node) {
|
|
1110
|
+
if (node.sig) out.push(node.sig);
|
|
1111
|
+
node = node.subNext;
|
|
1112
|
+
}
|
|
1113
|
+
return out;
|
|
1114
|
+
}
|
|
1115
|
+
function forEachSubscriber(signal2, visit) {
|
|
1116
|
+
let node = signal2.subsHead ?? null;
|
|
1117
|
+
while (node) {
|
|
1118
|
+
const s2 = node.sub;
|
|
1119
|
+
if (s2) visit(s2);
|
|
1120
|
+
node = node.sigNext;
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
// src/reactivity/track.ts
|
|
1125
|
+
var _isDev4 = isDev();
|
|
1126
|
+
var _runtimeVersion = typeof __SIBU_VERSION__ !== "undefined" ? __SIBU_VERSION__ : "dev";
|
|
1127
|
+
var REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.v1");
|
|
1128
|
+
function resolveReactiveApi() {
|
|
1129
|
+
const g2 = globalThis;
|
|
1130
|
+
const existing = g2[REGISTRY_KEY];
|
|
1131
|
+
if (existing) {
|
|
1132
|
+
if (_isDev4 && !existing.__dupWarned) {
|
|
1133
|
+
existing.__dupWarned = true;
|
|
1134
|
+
devWarn(
|
|
1135
|
+
`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']).`
|
|
1136
|
+
);
|
|
1137
|
+
}
|
|
1138
|
+
return existing;
|
|
1139
|
+
}
|
|
1140
|
+
const local = {
|
|
1141
|
+
suspendTracking,
|
|
1142
|
+
resumeTracking,
|
|
1143
|
+
isTrackingSuspended,
|
|
1144
|
+
untracked,
|
|
1145
|
+
retrack,
|
|
1146
|
+
track,
|
|
1147
|
+
reactiveBinding,
|
|
1148
|
+
recordDependency,
|
|
1149
|
+
cleanup,
|
|
1150
|
+
setMaxSubscriberRepeats,
|
|
1151
|
+
setMaxDrainIterations,
|
|
1152
|
+
drainNotificationQueue,
|
|
1153
|
+
queueSignalNotification,
|
|
1154
|
+
notifySubscribers,
|
|
1155
|
+
getSubscriberCount,
|
|
1156
|
+
getSubscriberDeps,
|
|
1157
|
+
forEachSubscriber,
|
|
1158
|
+
version: _runtimeVersion
|
|
1159
|
+
};
|
|
1160
|
+
g2[REGISTRY_KEY] = local;
|
|
1161
|
+
return local;
|
|
1162
|
+
}
|
|
1163
|
+
var API = resolveReactiveApi();
|
|
1164
|
+
var suspendTracking2 = API.suspendTracking;
|
|
1165
|
+
var resumeTracking2 = API.resumeTracking;
|
|
1166
|
+
var isTrackingSuspended2 = API.isTrackingSuspended;
|
|
1167
|
+
var untracked2 = API.untracked;
|
|
1168
|
+
var retrack2 = API.retrack;
|
|
1169
|
+
var track2 = API.track;
|
|
1170
|
+
var reactiveBinding2 = API.reactiveBinding;
|
|
1171
|
+
var recordDependency2 = API.recordDependency;
|
|
1172
|
+
var cleanup2 = API.cleanup;
|
|
1173
|
+
var setMaxSubscriberRepeats2 = API.setMaxSubscriberRepeats;
|
|
1174
|
+
var setMaxDrainIterations2 = API.setMaxDrainIterations;
|
|
1175
|
+
var drainNotificationQueue2 = API.drainNotificationQueue;
|
|
1176
|
+
var queueSignalNotification2 = API.queueSignalNotification;
|
|
1177
|
+
var notifySubscribers2 = API.notifySubscribers;
|
|
1178
|
+
var getSubscriberCount2 = API.getSubscriberCount;
|
|
1179
|
+
var getSubscriberDeps2 = API.getSubscriberDeps;
|
|
1180
|
+
var forEachSubscriber2 = API.forEachSubscriber;
|
|
1062
1181
|
|
|
1063
1182
|
// src/core/signals/effect.ts
|
|
1064
1183
|
var _g = globalThis;
|
|
@@ -1080,7 +1199,7 @@ function drainReruns(ctx) {
|
|
|
1080
1199
|
do {
|
|
1081
1200
|
ctx.rerunPending = false;
|
|
1082
1201
|
if (ctx.userCleanups.length > 0) flushUserCleanups(ctx);
|
|
1083
|
-
|
|
1202
|
+
retrack2(ctx.bodyFn, ctx.subscriber);
|
|
1084
1203
|
} while (ctx.rerunPending && ++reruns <= MAX_RERUNS);
|
|
1085
1204
|
if (ctx.rerunPending) {
|
|
1086
1205
|
ctx.rerunPending = false;
|
|
@@ -1109,7 +1228,7 @@ function disposeEffect(ctx) {
|
|
|
1109
1228
|
}
|
|
1110
1229
|
}
|
|
1111
1230
|
try {
|
|
1112
|
-
|
|
1231
|
+
cleanup2(ctx.subscriber);
|
|
1113
1232
|
} catch (err) {
|
|
1114
1233
|
if (typeof console !== "undefined") {
|
|
1115
1234
|
console.warn("[SibuJS effect] dispose threw:", err);
|
|
@@ -1154,7 +1273,7 @@ function effect(effectFn, options) {
|
|
|
1154
1273
|
try {
|
|
1155
1274
|
ctx.rerunPending = false;
|
|
1156
1275
|
if (ctx.userCleanups.length > 0) flushUserCleanups(ctx);
|
|
1157
|
-
|
|
1276
|
+
retrack2(ctx.bodyFn, sub2);
|
|
1158
1277
|
if (ctx.rerunPending) drainReruns(ctx);
|
|
1159
1278
|
} finally {
|
|
1160
1279
|
ctx.running = false;
|
|
@@ -1170,7 +1289,7 @@ function effect(effectFn, options) {
|
|
|
1170
1289
|
ctx.subscriber = sub2;
|
|
1171
1290
|
ctx.running = true;
|
|
1172
1291
|
try {
|
|
1173
|
-
|
|
1292
|
+
retrack2(ctx.bodyFn, ctx.subscriber);
|
|
1174
1293
|
if (ctx.rerunPending) drainReruns(ctx);
|
|
1175
1294
|
} finally {
|
|
1176
1295
|
ctx.running = false;
|
|
@@ -1218,7 +1337,7 @@ function Head(props) {
|
|
|
1218
1337
|
const anchor = document.createComment("sibu-head");
|
|
1219
1338
|
const managedElements = [];
|
|
1220
1339
|
const effectCleanups = [];
|
|
1221
|
-
const
|
|
1340
|
+
const cleanup3 = () => {
|
|
1222
1341
|
for (const el of managedElements) {
|
|
1223
1342
|
if (el.parentNode) el.parentNode.removeChild(el);
|
|
1224
1343
|
}
|
|
@@ -1227,7 +1346,7 @@ function Head(props) {
|
|
|
1227
1346
|
effectCleanups.length = 0;
|
|
1228
1347
|
};
|
|
1229
1348
|
const apply = () => {
|
|
1230
|
-
|
|
1349
|
+
cleanup3();
|
|
1231
1350
|
if (props.title) {
|
|
1232
1351
|
if (typeof props.title === "function") {
|
|
1233
1352
|
const cleanupFn = effect(() => {
|
|
@@ -1348,7 +1467,7 @@ async function generateStaticSite(options) {
|
|
|
1348
1467
|
// src/reactivity/batch.ts
|
|
1349
1468
|
var batchDepth = 0;
|
|
1350
1469
|
var pendingSignals = /* @__PURE__ */ new Set();
|
|
1351
|
-
function
|
|
1470
|
+
function batchImpl(fn) {
|
|
1352
1471
|
batchDepth++;
|
|
1353
1472
|
try {
|
|
1354
1473
|
return fn();
|
|
@@ -1359,25 +1478,45 @@ function batch(fn) {
|
|
|
1359
1478
|
}
|
|
1360
1479
|
}
|
|
1361
1480
|
}
|
|
1362
|
-
function
|
|
1481
|
+
function enqueueBatchedSignalImpl(signal2) {
|
|
1363
1482
|
if (batchDepth === 0) return false;
|
|
1364
1483
|
pendingSignals.add(signal2);
|
|
1365
1484
|
return true;
|
|
1366
1485
|
}
|
|
1486
|
+
function isBatchingImpl() {
|
|
1487
|
+
return batchDepth > 0;
|
|
1488
|
+
}
|
|
1367
1489
|
function flushBatch() {
|
|
1368
1490
|
try {
|
|
1369
1491
|
for (const signal2 of pendingSignals) {
|
|
1370
|
-
|
|
1492
|
+
queueSignalNotification2(signal2);
|
|
1371
1493
|
}
|
|
1372
1494
|
} finally {
|
|
1373
1495
|
pendingSignals.clear();
|
|
1374
1496
|
}
|
|
1375
|
-
|
|
1497
|
+
drainNotificationQueue2();
|
|
1498
|
+
}
|
|
1499
|
+
var BATCH_REGISTRY_KEY = /* @__PURE__ */ Symbol.for("sibujs.reactive.batch.v1");
|
|
1500
|
+
function resolveBatchApi() {
|
|
1501
|
+
const g2 = globalThis;
|
|
1502
|
+
const existing = g2[BATCH_REGISTRY_KEY];
|
|
1503
|
+
if (existing) return existing;
|
|
1504
|
+
const local = {
|
|
1505
|
+
batch: batchImpl,
|
|
1506
|
+
enqueueBatchedSignal: enqueueBatchedSignalImpl,
|
|
1507
|
+
isBatching: isBatchingImpl
|
|
1508
|
+
};
|
|
1509
|
+
g2[BATCH_REGISTRY_KEY] = local;
|
|
1510
|
+
return local;
|
|
1376
1511
|
}
|
|
1512
|
+
var API2 = resolveBatchApi();
|
|
1513
|
+
var batch = API2.batch;
|
|
1514
|
+
var enqueueBatchedSignal = API2.enqueueBatchedSignal;
|
|
1515
|
+
var isBatching = API2.isBatching;
|
|
1377
1516
|
|
|
1378
1517
|
// src/core/signals/signal.ts
|
|
1379
1518
|
var _g2 = globalThis;
|
|
1380
|
-
var
|
|
1519
|
+
var _isDev5 = isDev();
|
|
1381
1520
|
function signal(initial, options) {
|
|
1382
1521
|
const state = {
|
|
1383
1522
|
value: initial,
|
|
@@ -1388,11 +1527,11 @@ function signal(initial, options) {
|
|
|
1388
1527
|
__activeNode: null,
|
|
1389
1528
|
__name: void 0
|
|
1390
1529
|
};
|
|
1391
|
-
const debugName =
|
|
1530
|
+
const debugName = _isDev5 ? options?.name : void 0;
|
|
1392
1531
|
const equalsFn = options?.equals;
|
|
1393
1532
|
if (debugName) state.__name = debugName;
|
|
1394
1533
|
function get() {
|
|
1395
|
-
|
|
1534
|
+
recordDependency2(state);
|
|
1396
1535
|
return state.value;
|
|
1397
1536
|
}
|
|
1398
1537
|
get.__signal = state;
|
|
@@ -1405,15 +1544,15 @@ function signal(initial, options) {
|
|
|
1405
1544
|
if (equalsFn(prev, newValue)) return;
|
|
1406
1545
|
state.value = newValue;
|
|
1407
1546
|
state.__v++;
|
|
1408
|
-
if (
|
|
1547
|
+
if (_isDev5) {
|
|
1409
1548
|
const hook = _g2.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
1410
1549
|
if (hook) hook.emit("signal:update", { signal: state, name: debugName, oldValue: prev, newValue });
|
|
1411
1550
|
}
|
|
1412
1551
|
if (!enqueueBatchedSignal(state)) {
|
|
1413
|
-
|
|
1552
|
+
notifySubscribers2(state);
|
|
1414
1553
|
}
|
|
1415
1554
|
};
|
|
1416
|
-
} else if (
|
|
1555
|
+
} else if (_isDev5) {
|
|
1417
1556
|
set = (next) => {
|
|
1418
1557
|
const prev = state.value;
|
|
1419
1558
|
const newValue = typeof next === "function" ? next(prev) : next;
|
|
@@ -1423,7 +1562,7 @@ function signal(initial, options) {
|
|
|
1423
1562
|
const hook = _g2.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
1424
1563
|
if (hook) hook.emit("signal:update", { signal: state, name: debugName, oldValue: prev, newValue });
|
|
1425
1564
|
if (!enqueueBatchedSignal(state)) {
|
|
1426
|
-
|
|
1565
|
+
notifySubscribers2(state);
|
|
1427
1566
|
}
|
|
1428
1567
|
};
|
|
1429
1568
|
} else {
|
|
@@ -1434,11 +1573,11 @@ function signal(initial, options) {
|
|
|
1434
1573
|
state.value = newValue;
|
|
1435
1574
|
state.__v++;
|
|
1436
1575
|
if (!enqueueBatchedSignal(state)) {
|
|
1437
|
-
|
|
1576
|
+
notifySubscribers2(state);
|
|
1438
1577
|
}
|
|
1439
1578
|
};
|
|
1440
1579
|
}
|
|
1441
|
-
if (
|
|
1580
|
+
if (_isDev5) {
|
|
1442
1581
|
const hook = _g2.__SIBU_DEVTOOLS_GLOBAL_HOOK__;
|
|
1443
1582
|
if (hook) hook.emit("signal:create", { signal: state, name: debugName, getter: get, initial });
|
|
1444
1583
|
}
|
|
@@ -1592,13 +1731,13 @@ function createMiddlewareChain() {
|
|
|
1592
1731
|
}
|
|
1593
1732
|
|
|
1594
1733
|
// src/reactivity/bindAttribute.ts
|
|
1595
|
-
var
|
|
1734
|
+
var _isDev6 = isDev();
|
|
1596
1735
|
function setProp(el, key, val) {
|
|
1597
1736
|
el[key] = val;
|
|
1598
1737
|
}
|
|
1599
1738
|
function bindAttribute(el, attr, getter) {
|
|
1600
1739
|
if (isEventHandlerAttr(attr)) {
|
|
1601
|
-
if (
|
|
1740
|
+
if (_isDev6)
|
|
1602
1741
|
devWarn(
|
|
1603
1742
|
`bindAttribute: refusing to bind event-handler attribute "${attr}". Use on:{ ${attr.slice(2)}: fn } instead.`
|
|
1604
1743
|
);
|
|
@@ -1610,7 +1749,7 @@ function bindAttribute(el, attr, getter) {
|
|
|
1610
1749
|
try {
|
|
1611
1750
|
value = getter();
|
|
1612
1751
|
} catch (err) {
|
|
1613
|
-
if (
|
|
1752
|
+
if (_isDev6)
|
|
1614
1753
|
devWarn(`bindAttribute: getter for "${attr}" threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1615
1754
|
return;
|
|
1616
1755
|
}
|
|
@@ -1631,12 +1770,12 @@ function bindAttribute(el, attr, getter) {
|
|
|
1631
1770
|
el.setAttribute(attr, sanitizeAttributeString(attr, str));
|
|
1632
1771
|
}
|
|
1633
1772
|
}
|
|
1634
|
-
return
|
|
1773
|
+
return reactiveBinding2(commit);
|
|
1635
1774
|
}
|
|
1636
1775
|
|
|
1637
1776
|
// src/core/rendering/dispose.ts
|
|
1638
1777
|
var elementDisposers = /* @__PURE__ */ new WeakMap();
|
|
1639
|
-
var
|
|
1778
|
+
var _isDev7 = isDev();
|
|
1640
1779
|
var activeBindingCount = 0;
|
|
1641
1780
|
function registerDisposer(node, teardown) {
|
|
1642
1781
|
let disposers = elementDisposers.get(node);
|
|
@@ -1645,7 +1784,7 @@ function registerDisposer(node, teardown) {
|
|
|
1645
1784
|
elementDisposers.set(node, disposers);
|
|
1646
1785
|
}
|
|
1647
1786
|
disposers.push(teardown);
|
|
1648
|
-
if (
|
|
1787
|
+
if (_isDev7) activeBindingCount++;
|
|
1649
1788
|
}
|
|
1650
1789
|
function dispose(node) {
|
|
1651
1790
|
const stack = [node];
|
|
@@ -1664,12 +1803,12 @@ function dispose(node) {
|
|
|
1664
1803
|
if (disposers) {
|
|
1665
1804
|
const snapshot = disposers.slice();
|
|
1666
1805
|
elementDisposers.delete(current);
|
|
1667
|
-
if (
|
|
1806
|
+
if (_isDev7) activeBindingCount -= snapshot.length;
|
|
1668
1807
|
for (const d of snapshot) {
|
|
1669
1808
|
try {
|
|
1670
1809
|
d();
|
|
1671
1810
|
} catch (err) {
|
|
1672
|
-
if (
|
|
1811
|
+
if (_isDev7 && typeof console !== "undefined") {
|
|
1673
1812
|
console.warn("[SibuJS] Disposer threw during cleanup:", err);
|
|
1674
1813
|
}
|
|
1675
1814
|
}
|
|
@@ -1680,12 +1819,12 @@ function dispose(node) {
|
|
|
1680
1819
|
if (!added || added.length === 0) break;
|
|
1681
1820
|
const moreSnapshot = added.slice();
|
|
1682
1821
|
elementDisposers.delete(current);
|
|
1683
|
-
if (
|
|
1822
|
+
if (_isDev7) activeBindingCount -= moreSnapshot.length;
|
|
1684
1823
|
for (const d of moreSnapshot) {
|
|
1685
1824
|
try {
|
|
1686
1825
|
d();
|
|
1687
1826
|
} catch (err) {
|
|
1688
|
-
if (
|
|
1827
|
+
if (_isDev7 && typeof console !== "undefined") {
|
|
1689
1828
|
console.warn("[SibuJS] Disposer threw during cleanup:", err);
|
|
1690
1829
|
}
|
|
1691
1830
|
}
|
|
@@ -1696,7 +1835,7 @@ function dispose(node) {
|
|
|
1696
1835
|
}
|
|
1697
1836
|
|
|
1698
1837
|
// src/reactivity/bindChildNode.ts
|
|
1699
|
-
var
|
|
1838
|
+
var _isDev8 = isDev();
|
|
1700
1839
|
function bindChildNode(placeholder, getter) {
|
|
1701
1840
|
let lastNodes = [];
|
|
1702
1841
|
function commit() {
|
|
@@ -1704,7 +1843,7 @@ function bindChildNode(placeholder, getter) {
|
|
|
1704
1843
|
try {
|
|
1705
1844
|
result = getter();
|
|
1706
1845
|
} catch (err) {
|
|
1707
|
-
if (
|
|
1846
|
+
if (_isDev8) devWarn(`bindChildNode: getter threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
1708
1847
|
return;
|
|
1709
1848
|
}
|
|
1710
1849
|
if (result == null || typeof result === "boolean") {
|
|
@@ -1730,7 +1869,7 @@ function bindChildNode(placeholder, getter) {
|
|
|
1730
1869
|
if (item == null || typeof item === "boolean") continue;
|
|
1731
1870
|
const node = item instanceof Node ? item : document.createTextNode(String(item));
|
|
1732
1871
|
if (seen.has(node)) {
|
|
1733
|
-
if (
|
|
1872
|
+
if (_isDev8)
|
|
1734
1873
|
devWarn("bindChildNode: duplicate node reference in array \u2014 only the first occurrence is rendered.");
|
|
1735
1874
|
continue;
|
|
1736
1875
|
}
|
|
@@ -1765,12 +1904,12 @@ function bindChildNode(placeholder, getter) {
|
|
|
1765
1904
|
}
|
|
1766
1905
|
lastNodes = newNodes;
|
|
1767
1906
|
}
|
|
1768
|
-
return
|
|
1907
|
+
return reactiveBinding2(commit);
|
|
1769
1908
|
}
|
|
1770
1909
|
|
|
1771
1910
|
// src/core/rendering/tagFactory.ts
|
|
1772
1911
|
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
1773
|
-
var
|
|
1912
|
+
var _isDev9 = isDev();
|
|
1774
1913
|
var BLOCKED_TAGS = /* @__PURE__ */ new Set(["script", "iframe", "object", "embed", "frame", "frameset"]);
|
|
1775
1914
|
function isBlockedTag(tag) {
|
|
1776
1915
|
return BLOCKED_TAGS.has(tag.toLowerCase());
|
|
@@ -1813,7 +1952,7 @@ function toKebab(prop) {
|
|
|
1813
1952
|
}
|
|
1814
1953
|
function applyStyle(el, style2) {
|
|
1815
1954
|
if (typeof style2 === "function") {
|
|
1816
|
-
const teardown =
|
|
1955
|
+
const teardown = track2(() => {
|
|
1817
1956
|
el.setAttribute("style", style2());
|
|
1818
1957
|
});
|
|
1819
1958
|
registerDisposer(el, teardown);
|
|
@@ -1829,7 +1968,7 @@ function applyStyle(el, style2) {
|
|
|
1829
1968
|
const name = toKebab(prop);
|
|
1830
1969
|
if (typeof val === "function") {
|
|
1831
1970
|
const getter = val;
|
|
1832
|
-
const teardown =
|
|
1971
|
+
const teardown = track2(() => {
|
|
1833
1972
|
htmlEl.style.setProperty(name, sanitizeCSSValue(String(getter())));
|
|
1834
1973
|
});
|
|
1835
1974
|
registerDisposer(el, teardown);
|
|
@@ -1844,7 +1983,7 @@ function applyClass(el, cls) {
|
|
|
1844
1983
|
return;
|
|
1845
1984
|
}
|
|
1846
1985
|
if (typeof cls === "function") {
|
|
1847
|
-
const teardown =
|
|
1986
|
+
const teardown = track2(() => {
|
|
1848
1987
|
el.setAttribute("class", cls());
|
|
1849
1988
|
});
|
|
1850
1989
|
registerDisposer(el, teardown);
|
|
@@ -1871,7 +2010,7 @@ function applyClass(el, cls) {
|
|
|
1871
2010
|
}
|
|
1872
2011
|
el.setAttribute("class", r);
|
|
1873
2012
|
};
|
|
1874
|
-
const teardown =
|
|
2013
|
+
const teardown = track2(update);
|
|
1875
2014
|
registerDisposer(el, teardown);
|
|
1876
2015
|
} else {
|
|
1877
2016
|
el.setAttribute("class", result);
|
|
@@ -1941,7 +2080,7 @@ var tagFactory = (tag, ns) => {
|
|
|
1941
2080
|
appendChildren(el, second);
|
|
1942
2081
|
return el;
|
|
1943
2082
|
}
|
|
1944
|
-
if (
|
|
2083
|
+
if (_isDev9 && looksLikeClassList(first)) {
|
|
1945
2084
|
devWarn(
|
|
1946
2085
|
`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.`
|
|
1947
2086
|
);
|
|
@@ -1962,7 +2101,7 @@ var tagFactory = (tag, ns) => {
|
|
|
1962
2101
|
if (pClass != null) applyClass(el, pClass);
|
|
1963
2102
|
const pId = props.id;
|
|
1964
2103
|
if (pId != null) {
|
|
1965
|
-
if (
|
|
2104
|
+
if (_isDev9 && typeof pId === "string" && CLOBBER_RISKY_IDS.has(pId.toLowerCase())) {
|
|
1966
2105
|
devWarn(
|
|
1967
2106
|
`tagFactory: element id="${pId}" matches a common global and may cause DOM clobbering. Avoid setting ids from untrusted input.`
|
|
1968
2107
|
);
|
|
@@ -1977,7 +2116,7 @@ var tagFactory = (tag, ns) => {
|
|
|
1977
2116
|
const handler = pOn[ev];
|
|
1978
2117
|
if (typeof handler === "function") {
|
|
1979
2118
|
el.addEventListener(ev, handler);
|
|
1980
|
-
} else if (
|
|
2119
|
+
} else if (_isDev9) {
|
|
1981
2120
|
devWarn(
|
|
1982
2121
|
`tagFactory: on.${ev} handler is not a function (got ${typeof handler}). Event listener was not attached.`
|
|
1983
2122
|
);
|
|
@@ -2090,7 +2229,7 @@ var area = tagFactory("area");
|
|
|
2090
2229
|
var audio = tagFactory("audio");
|
|
2091
2230
|
var img = tagFactory("img");
|
|
2092
2231
|
var map = tagFactory("map");
|
|
2093
|
-
var
|
|
2232
|
+
var track3 = tagFactory("track");
|
|
2094
2233
|
var video = tagFactory("video");
|
|
2095
2234
|
var embed = tagFactory("embed");
|
|
2096
2235
|
var iframe = tagFactory("iframe");
|
package/dist/ssr.js
CHANGED
|
@@ -22,8 +22,8 @@ import {
|
|
|
22
22
|
wasm,
|
|
23
23
|
worker,
|
|
24
24
|
workerFn
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-6LTFHJQG.js";
|
|
26
|
+
import "./chunk-37BUKSLH.js";
|
|
27
27
|
import {
|
|
28
28
|
collectStream,
|
|
29
29
|
deserializeState,
|
|
@@ -44,14 +44,14 @@ import {
|
|
|
44
44
|
suspenseSwapScript,
|
|
45
45
|
trustHTML
|
|
46
46
|
} from "./chunk-R3QEDXFS.js";
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-LU2MQXQQ.js";
|
|
48
|
+
import "./chunk-NHKQKKZU.js";
|
|
49
49
|
import "./chunk-5VGSK6D2.js";
|
|
50
50
|
import "./chunk-L3GAGWCC.js";
|
|
51
|
-
import "./chunk-
|
|
51
|
+
import "./chunk-MHBCEJQO.js";
|
|
52
52
|
import "./chunk-GOJMFRBL.js";
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-WZG2SZOT.js";
|
|
54
|
+
import "./chunk-TEFZT5PJ.js";
|
|
55
55
|
import "./chunk-COY6PUD2.js";
|
|
56
56
|
export {
|
|
57
57
|
Head,
|