@vue/runtime-core 3.6.0-rc.13 → 3.6.0-rc.15
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/runtime-core.cjs.js +297 -98
- package/dist/runtime-core.cjs.prod.js +266 -94
- package/dist/runtime-core.d.ts +11 -9
- package/dist/runtime-core.esm-bundler.js +304 -103
- package/package.json +3 -3
package/dist/runtime-core.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/runtime-core v3.6.0-rc.
|
|
2
|
+
* @vue/runtime-core v3.6.0-rc.15
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -201,7 +201,7 @@ function callWithAsyncErrorHandling(fn, instance, type, args) {
|
|
|
201
201
|
if ((0, _vue_shared.isFunction)(fn)) {
|
|
202
202
|
const res = callWithErrorHandling(fn, instance, type, args);
|
|
203
203
|
if (res && (0, _vue_shared.isPromise)(res)) res.catch((err) => {
|
|
204
|
-
handleError(err, instance, type);
|
|
204
|
+
handleError(err, instance, type, void 0, true);
|
|
205
205
|
});
|
|
206
206
|
return res;
|
|
207
207
|
}
|
|
@@ -211,7 +211,7 @@ function callWithAsyncErrorHandling(fn, instance, type, args) {
|
|
|
211
211
|
return values;
|
|
212
212
|
} else warn$1(`Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`);
|
|
213
213
|
}
|
|
214
|
-
function handleError(err, instance, type, throwInDev = true) {
|
|
214
|
+
function handleError(err, instance, type, throwInDev = true, isAsyncError = false) {
|
|
215
215
|
const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || _vue_shared.EMPTY_OBJ;
|
|
216
216
|
if (instance) {
|
|
217
217
|
let cur = instance.parent;
|
|
@@ -219,7 +219,7 @@ function handleError(err, instance, type, throwInDev = true) {
|
|
|
219
219
|
const errorInfo = ErrorTypeStrings$1[type];
|
|
220
220
|
while (cur) {
|
|
221
221
|
const errorCapturedHooks = cur.ec;
|
|
222
|
-
if (errorCapturedHooks) {
|
|
222
|
+
if (errorCapturedHooks && !cur.isUnmounted && (!isAsyncError || cur.scope.active)) {
|
|
223
223
|
for (let i = 0; i < errorCapturedHooks.length; i++) if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) return;
|
|
224
224
|
}
|
|
225
225
|
cur = cur.parent;
|
|
@@ -524,7 +524,11 @@ function reload(id, newComp) {
|
|
|
524
524
|
updateComponentDef(record.initialDef, newComp);
|
|
525
525
|
const instances = [...record.instances];
|
|
526
526
|
if (isVapor && newComp.__vapor && !instances.some((instance) => instance.parent && !instance.parent.vapor) && !instances.some((i) => i.ceReload)) {
|
|
527
|
-
for (const instance of instances)
|
|
527
|
+
for (const instance of instances) {
|
|
528
|
+
if (instance.root && instance.root.ce && instance !== instance.root) instance.root.ce._removeChildStyle(instance.type);
|
|
529
|
+
const oldComp = normalizeClassComponent(instance.type);
|
|
530
|
+
if (oldComp !== record.initialDef) updateComponentDef(oldComp, newComp);
|
|
531
|
+
}
|
|
528
532
|
const dirtyInstances = new Set(instances);
|
|
529
533
|
const rerenderedParents = /* @__PURE__ */ new Set();
|
|
530
534
|
runWithHmrUpdating(() => {
|
|
@@ -565,7 +569,25 @@ function reload(id, newComp) {
|
|
|
565
569
|
if (instance.root.ce && instance !== instance.root) instance.root.ce._removeChildStyle(oldComp);
|
|
566
570
|
}
|
|
567
571
|
parents.forEach((parent) => {
|
|
568
|
-
|
|
572
|
+
const children = instances.filter((instance) => instance.parent === parent);
|
|
573
|
+
const update = () => {
|
|
574
|
+
if (!parent.scope.active) return;
|
|
575
|
+
const activeChildren = children.filter((instance) => instance.scope.active);
|
|
576
|
+
if (!activeChildren.length) return;
|
|
577
|
+
const pending = activeChildren.find((instance) => instance.asyncDep && !instance.asyncResolved) || locateUnresolvedAsyncRoot(parent);
|
|
578
|
+
if (pending) {
|
|
579
|
+
pending.asyncDep.catch(_vue_shared.NOOP).then(() => {
|
|
580
|
+
if (parent.scope.active && (pending.asyncResolved || !pending.scope.active)) queueJob(update);
|
|
581
|
+
});
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
for (const instance of activeChildren) {
|
|
585
|
+
const oldComp = normalizeClassComponent(instance.type);
|
|
586
|
+
let dirtyInstances = hmrDirtyComponents.get(oldComp);
|
|
587
|
+
if (!dirtyInstances) hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());
|
|
588
|
+
dirtyInstances.add(instance);
|
|
589
|
+
hmrDirtyComponentsMode.set(oldComp, !!isVapor);
|
|
590
|
+
}
|
|
569
591
|
runWithHmrUpdating(() => {
|
|
570
592
|
if (parent.vapor) parent.hmrRerender();
|
|
571
593
|
else {
|
|
@@ -576,7 +598,12 @@ function reload(id, newComp) {
|
|
|
576
598
|
}
|
|
577
599
|
}
|
|
578
600
|
});
|
|
579
|
-
|
|
601
|
+
queuePostFlushCb(() => {
|
|
602
|
+
hmrDirtyComponents.clear();
|
|
603
|
+
hmrDirtyComponentsMode.clear();
|
|
604
|
+
});
|
|
605
|
+
};
|
|
606
|
+
queueJob(update);
|
|
580
607
|
});
|
|
581
608
|
}
|
|
582
609
|
queuePostFlushCb(() => {
|
|
@@ -773,18 +800,35 @@ function withDirectives(vnode, directives) {
|
|
|
773
800
|
return vnode;
|
|
774
801
|
}
|
|
775
802
|
function invokeDirectiveHook(vnode, prevVNode, instance, name) {
|
|
776
|
-
|
|
803
|
+
let hookVNode = vnode;
|
|
804
|
+
if (name === "beforeMount") vnode._mount = vnode;
|
|
805
|
+
else if (name === "beforeUpdate") {
|
|
806
|
+
const mount = prevVNode && prevVNode._mount;
|
|
807
|
+
if (mount) {
|
|
808
|
+
mount._latest = vnode;
|
|
809
|
+
vnode._mount = mount;
|
|
810
|
+
}
|
|
811
|
+
} else if (name === "mounted") {
|
|
812
|
+
const latest = vnode._latest;
|
|
813
|
+
vnode._mount = vnode._latest = void 0;
|
|
814
|
+
if (latest) {
|
|
815
|
+
hookVNode = latest;
|
|
816
|
+
latest._mount = void 0;
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
const bindings = hookVNode.dirs;
|
|
777
820
|
const oldBindings = prevVNode && prevVNode.dirs;
|
|
778
821
|
for (let i = 0; i < bindings.length; i++) {
|
|
779
|
-
|
|
822
|
+
let binding = bindings[i];
|
|
780
823
|
if (oldBindings) binding.oldValue = oldBindings[i].value;
|
|
824
|
+
else if (name === "mounted" && binding.oldValue !== void 0) binding = (0, _vue_shared.extend)({}, binding, { oldValue: void 0 });
|
|
781
825
|
let hook = binding.dir[name];
|
|
782
826
|
if (hook) {
|
|
783
827
|
const prevSub = (0, _vue_reactivity.setActiveSub)();
|
|
784
828
|
callWithAsyncErrorHandling(hook, instance, 8, [
|
|
785
829
|
vnode.el,
|
|
786
830
|
binding,
|
|
787
|
-
|
|
831
|
+
hookVNode,
|
|
788
832
|
prevVNode
|
|
789
833
|
]);
|
|
790
834
|
(0, _vue_reactivity.setActiveSub)(prevSub);
|
|
@@ -1227,7 +1271,15 @@ const BaseTransitionImpl = {
|
|
|
1227
1271
|
const { mode } = rawProps;
|
|
1228
1272
|
checkTransitionMode(mode);
|
|
1229
1273
|
return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
|
|
1230
|
-
if (!(instance.effect.flags & 1024))
|
|
1274
|
+
if (!(instance.effect.flags & 1024)) {
|
|
1275
|
+
if (instance.effect.running) {
|
|
1276
|
+
const job = () => {
|
|
1277
|
+
if (!(instance.effect.flags & 1024)) instance.update();
|
|
1278
|
+
};
|
|
1279
|
+
job.i = instance;
|
|
1280
|
+
queueJob(job);
|
|
1281
|
+
} else instance.update();
|
|
1282
|
+
}
|
|
1231
1283
|
}) : _vue_shared.NOOP);
|
|
1232
1284
|
};
|
|
1233
1285
|
}
|
|
@@ -1257,7 +1309,7 @@ function getLeavingNodesForType(state, vnode) {
|
|
|
1257
1309
|
}
|
|
1258
1310
|
return leavingVNodesCache;
|
|
1259
1311
|
}
|
|
1260
|
-
function resolveTransitionHooks(vnode, props, state, instance
|
|
1312
|
+
function resolveTransitionHooks(vnode, props, state, instance) {
|
|
1261
1313
|
const key = String(vnode.key);
|
|
1262
1314
|
const leavingVNodesCache = getLeavingNodesForType(state, vnode);
|
|
1263
1315
|
const hooks = baseResolveTransitionHooks({
|
|
@@ -1280,9 +1332,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
|
|
|
1280
1332
|
}
|
|
1281
1333
|
},
|
|
1282
1334
|
cloneHooks: (vnode) => {
|
|
1283
|
-
|
|
1284
|
-
if (postClone) postClone(hooks);
|
|
1285
|
-
return hooks;
|
|
1335
|
+
return resolveTransitionHooks(vnode, props, state, instance);
|
|
1286
1336
|
}
|
|
1287
1337
|
}, props, state, instance);
|
|
1288
1338
|
if (isVaporInteropEnabled && vnode.type === VaporSlot) (0, _vue_shared.extend)(hooks, {
|
|
@@ -1320,7 +1370,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
|
|
|
1320
1370
|
callHook(hook, [el]);
|
|
1321
1371
|
},
|
|
1322
1372
|
enter(el) {
|
|
1323
|
-
if (!isHmrUpdating && isLeaving()) return;
|
|
1373
|
+
if (!isHmrUpdating && isLeaving(el)) return;
|
|
1324
1374
|
let hook = onEnter;
|
|
1325
1375
|
let afterHook = onAfterEnter;
|
|
1326
1376
|
let cancelHook = onEnterCancelled;
|
|
@@ -1364,7 +1414,19 @@ function baseResolveTransitionHooks(context, props, state, instance) {
|
|
|
1364
1414
|
else done();
|
|
1365
1415
|
},
|
|
1366
1416
|
clone(node) {
|
|
1367
|
-
|
|
1417
|
+
if (!cloneHooks) return hooks;
|
|
1418
|
+
const cloned = cloneHooks(node);
|
|
1419
|
+
cloned.afterLeave = () => {
|
|
1420
|
+
if (hooks.afterLeave) hooks.afterLeave();
|
|
1421
|
+
};
|
|
1422
|
+
cloned.delayLeave = (el, earlyRemove, delayedLeave) => {
|
|
1423
|
+
if (hooks.delayLeave) hooks.delayLeave(el, earlyRemove, delayedLeave);
|
|
1424
|
+
else delayedLeave();
|
|
1425
|
+
};
|
|
1426
|
+
cloned.delayedLeave = () => {
|
|
1427
|
+
if (hooks.delayedLeave) hooks.delayedLeave();
|
|
1428
|
+
};
|
|
1429
|
+
return cloned;
|
|
1368
1430
|
}
|
|
1369
1431
|
};
|
|
1370
1432
|
return hooks;
|
|
@@ -1399,10 +1461,7 @@ function prepareTransitionSwitch(previous, next, props, state, instance, resumeA
|
|
|
1399
1461
|
if (state.isLeaving) return emptyPlaceholder(next);
|
|
1400
1462
|
const nextInner = getInnerChild$1(next);
|
|
1401
1463
|
if (!nextInner) return emptyPlaceholder(next);
|
|
1402
|
-
|
|
1403
|
-
if (delayedLeaveSource) forwardDelayedLeave(hooks, delayedLeaveSource);
|
|
1404
|
-
enterHooks = hooks;
|
|
1405
|
-
});
|
|
1464
|
+
const enterHooks = resolveTransitionHooks(nextInner, props, state, instance);
|
|
1406
1465
|
if (delayedLeaveSource) forwardDelayedLeave(enterHooks, delayedLeaveSource);
|
|
1407
1466
|
if (nextInner.type !== Comment) setTransitionHooks(nextInner, enterHooks);
|
|
1408
1467
|
const mode = props.mode;
|
|
@@ -1468,9 +1527,14 @@ function setTransitionHooks(vnode, hooks) {
|
|
|
1468
1527
|
return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
|
|
1469
1528
|
}
|
|
1470
1529
|
} else if (vnode.shapeFlag & 128) {
|
|
1471
|
-
const
|
|
1472
|
-
|
|
1473
|
-
|
|
1530
|
+
const suspense = vnode.suspense;
|
|
1531
|
+
if (suspense) {
|
|
1532
|
+
const branch = suspense.isHydrating ? suspense.pendingBranch : suspense.activeBranch;
|
|
1533
|
+
if (branch) return setTransitionHooks(branch, hooks.clone(branch));
|
|
1534
|
+
} else {
|
|
1535
|
+
vnode.ssContent.transition = hooks.clone(vnode.ssContent);
|
|
1536
|
+
vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
|
|
1537
|
+
}
|
|
1474
1538
|
} else {
|
|
1475
1539
|
vnode.transition = hooks;
|
|
1476
1540
|
if (vnode.type === Fragment && (0, _vue_shared.isArray)(vnode.children)) {
|
|
@@ -1688,6 +1752,8 @@ const getContainerType = (container) => {
|
|
|
1688
1752
|
if (isMathMLContainer(container)) return "mathml";
|
|
1689
1753
|
};
|
|
1690
1754
|
const isComment = (node) => node.nodeType === 8;
|
|
1755
|
+
/** The data of a comment opening a range a hydration steps over as one. */
|
|
1756
|
+
const isRangeStart = (data) => data === "[" || data === "(" || (0, _vue_shared.isVaporRangeStart)(data);
|
|
1691
1757
|
function createHydrationFunctions(rendererInternals) {
|
|
1692
1758
|
const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
|
|
1693
1759
|
const hydrate = (vnode, container) => {
|
|
@@ -1705,7 +1771,7 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
1705
1771
|
};
|
|
1706
1772
|
const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
|
|
1707
1773
|
optimized = optimized || !!vnode.dynamicChildren;
|
|
1708
|
-
const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(");
|
|
1774
|
+
const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(" || isVaporInteropEnabled && (0, _vue_shared.isVaporRangeStart)(node.data));
|
|
1709
1775
|
const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
|
|
1710
1776
|
const { type, ref, shapeFlag, patchFlag } = vnode;
|
|
1711
1777
|
let domType = node.nodeType;
|
|
@@ -1894,16 +1960,17 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
1894
1960
|
const container = parentNode(node);
|
|
1895
1961
|
const first = nextSibling(node);
|
|
1896
1962
|
const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
1897
|
-
|
|
1963
|
+
const close = isVaporInteropEnabled ? (0, _vue_shared.rangeCloseOf)(node.data) : node.data === "(" ? ")" : "]";
|
|
1964
|
+
if (next && isComment(next) && next.data === close) return nextSibling(vnode.anchor = next);
|
|
1898
1965
|
else {
|
|
1899
1966
|
logMismatchError();
|
|
1900
|
-
insert(vnode.anchor = createComment(
|
|
1967
|
+
insert(vnode.anchor = createComment(close), container, next);
|
|
1901
1968
|
return next;
|
|
1902
1969
|
}
|
|
1903
1970
|
};
|
|
1904
1971
|
const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
|
|
1905
1972
|
if (!isNodeMismatchAllowed(node, vnode)) {
|
|
1906
|
-
warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && (node.data
|
|
1973
|
+
warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && isRangeStart(node.data) ? `(start of fragment)` : ``, `\n- expected on client:`, vnode.type);
|
|
1907
1974
|
logMismatchError();
|
|
1908
1975
|
}
|
|
1909
1976
|
vnode.el = null;
|
|
@@ -1919,18 +1986,18 @@ function createHydrationFunctions(rendererInternals) {
|
|
|
1919
1986
|
const container = parentNode(node);
|
|
1920
1987
|
remove(node);
|
|
1921
1988
|
patch(null, vnode, container, next, parentComponent, parentSuspense, getContainerType(container), slotScopeIds);
|
|
1922
|
-
if (parentComponent && parentComponent.vnode) {
|
|
1989
|
+
if (parentComponent && parentComponent.vnode && parentComponent.vnode.el === node) {
|
|
1923
1990
|
parentComponent.vnode.el = vnode.el;
|
|
1924
1991
|
updateHOCHostEl(parentComponent, vnode.el);
|
|
1925
1992
|
}
|
|
1926
1993
|
return next;
|
|
1927
1994
|
};
|
|
1928
|
-
const locateClosingAnchor = (node, open = node && isComment(node) && node.data === "("
|
|
1995
|
+
const locateClosingAnchor = (node, open = node && isComment(node) && (node.data === "(" || isVaporInteropEnabled && node.data === "{") ? node.data : "[", close = isVaporInteropEnabled ? (0, _vue_shared.rangeCloseOf)(open) : open === "(" ? ")" : "]") => {
|
|
1929
1996
|
let match = 0;
|
|
1930
1997
|
while (node) {
|
|
1931
1998
|
node = nextSibling(node);
|
|
1932
1999
|
if (node && isComment(node)) {
|
|
1933
|
-
if (node.data === open) match++;
|
|
2000
|
+
if (node.data === open || isVaporInteropEnabled && open === "[" && (0, _vue_shared.isVaporBranchStart)(node.data)) match++;
|
|
1934
2001
|
if (node.data === close) {
|
|
1935
2002
|
if (match === 0) return nextSibling(node);
|
|
1936
2003
|
else match--;
|
|
@@ -2186,9 +2253,9 @@ const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {
|
|
|
2186
2253
|
return teardown;
|
|
2187
2254
|
};
|
|
2188
2255
|
function forEachElement(node, cb) {
|
|
2189
|
-
if (isComment(node) && (node.data
|
|
2256
|
+
if (isComment(node) && isRangeStart(node.data)) {
|
|
2190
2257
|
const open = node.data;
|
|
2191
|
-
const close =
|
|
2258
|
+
const close = (0, _vue_shared.rangeCloseOf)(open);
|
|
2192
2259
|
let depth = 1;
|
|
2193
2260
|
let next = node.nextSibling;
|
|
2194
2261
|
while (next) {
|
|
@@ -2197,7 +2264,7 @@ function forEachElement(node, cb) {
|
|
|
2197
2264
|
} else if (isComment(next)) {
|
|
2198
2265
|
if (next.data === close) {
|
|
2199
2266
|
if (--depth === 0) break;
|
|
2200
|
-
} else if (next.data === open) depth++;
|
|
2267
|
+
} else if (close === "]" ? next.data === "[" || (0, _vue_shared.isVaporBranchStart)(next.data) : next.data === open) depth++;
|
|
2201
2268
|
}
|
|
2202
2269
|
next = next.nextSibling;
|
|
2203
2270
|
}
|
|
@@ -2225,7 +2292,7 @@ function defineAsyncComponent(source) {
|
|
|
2225
2292
|
if (resolvedComp) return () => createInnerComp(resolvedComp, instance);
|
|
2226
2293
|
const onError = (err) => {
|
|
2227
2294
|
setPendingRequest(null);
|
|
2228
|
-
handleError(err, instance, 13, !errorComponent);
|
|
2295
|
+
handleError(err, instance, 13, !errorComponent, true);
|
|
2229
2296
|
};
|
|
2230
2297
|
if (suspensible && instance.suspense || isInSSRComponentSetup) return load().then((comp) => {
|
|
2231
2298
|
return () => createInnerComp(comp, instance);
|
|
@@ -2306,10 +2373,12 @@ const useAsyncComponentState = (delay = 200, timeout, onError, instance = curren
|
|
|
2306
2373
|
const delayed = (0, _vue_reactivity.ref)(!!delay);
|
|
2307
2374
|
let timeoutTimer;
|
|
2308
2375
|
let delayTimer;
|
|
2309
|
-
if (instance)
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2376
|
+
if (instance) instance.scope.run(() => {
|
|
2377
|
+
(0, _vue_reactivity.onScopeDispose)(() => {
|
|
2378
|
+
if (timeoutTimer != null) clearTimeout(timeoutTimer);
|
|
2379
|
+
if (delayTimer != null) clearTimeout(delayTimer);
|
|
2380
|
+
});
|
|
2381
|
+
});
|
|
2313
2382
|
if (delay) delayTimer = setTimeout(() => {
|
|
2314
2383
|
if (instance && instance.isUnmounted) return;
|
|
2315
2384
|
delayed.value = false;
|
|
@@ -2344,7 +2413,12 @@ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydra
|
|
|
2344
2413
|
}
|
|
2345
2414
|
return;
|
|
2346
2415
|
}
|
|
2347
|
-
if (!el.parentNode
|
|
2416
|
+
if (!el.parentNode) return;
|
|
2417
|
+
if (wasConnected && !el.isConnected) {
|
|
2418
|
+
let current = instance;
|
|
2419
|
+
while (current && !current.isDeactivated) current = current.parent;
|
|
2420
|
+
if (!current) return;
|
|
2421
|
+
}
|
|
2348
2422
|
hydrate();
|
|
2349
2423
|
};
|
|
2350
2424
|
const doHydrate = hydrateStrategy ? () => {
|
|
@@ -2402,7 +2476,11 @@ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled({
|
|
|
2402
2476
|
activate(vnode, container, anchor, renderer, keepAliveInstance, parentSuspense, namespace, optimized);
|
|
2403
2477
|
};
|
|
2404
2478
|
sharedContext.deactivate = (vnode) => {
|
|
2405
|
-
|
|
2479
|
+
const cached = sharedContext.getCachedComponent(vnode);
|
|
2480
|
+
if (!cached || cached.component !== vnode.component) return false;
|
|
2481
|
+
if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(keepAliveInstance, vnode).deactivate(vnode, storageContainer, parentSuspense);
|
|
2482
|
+
else deactivate(vnode, storageContainer, renderer, keepAliveInstance, parentSuspense);
|
|
2483
|
+
return true;
|
|
2406
2484
|
};
|
|
2407
2485
|
function unmount(vnode) {
|
|
2408
2486
|
resetShapeFlag(vnode);
|
|
@@ -2434,11 +2512,15 @@ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled({
|
|
|
2434
2512
|
let pendingCacheKey = null;
|
|
2435
2513
|
const cacheSubtree = () => {
|
|
2436
2514
|
if (pendingCacheKey != null) {
|
|
2437
|
-
if (isSuspense(keepAliveInstance.subTree.type))
|
|
2438
|
-
const
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2515
|
+
if (isSuspense(keepAliveInstance.subTree.type)) {
|
|
2516
|
+
const cacheInnerChild = () => {
|
|
2517
|
+
const vnode = getInnerChild(keepAliveInstance.subTree);
|
|
2518
|
+
if (vnode.component) cache.set(pendingCacheKey, vnode);
|
|
2519
|
+
};
|
|
2520
|
+
const suspense = keepAliveInstance.subTree.suspense;
|
|
2521
|
+
if (suspense.pendingBranch) queuePostRenderEffect(cacheInnerChild, void 0, suspense);
|
|
2522
|
+
else cacheInnerChild();
|
|
2523
|
+
} else cache.set(pendingCacheKey, getInnerChild(keepAliveInstance.subTree));
|
|
2442
2524
|
}
|
|
2443
2525
|
};
|
|
2444
2526
|
onMounted(cacheSubtree);
|
|
@@ -2543,9 +2625,8 @@ function registerKeepAliveHook(hook, type, target = getCurrentGenericInstance())
|
|
|
2543
2625
|
}
|
|
2544
2626
|
function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
|
|
2545
2627
|
const injected = injectHook(type, hook, keepAliveRoot, true);
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
}, target);
|
|
2628
|
+
const removal = injectHook("um", () => (0, _vue_shared.remove)(keepAliveRoot[type], injected), target);
|
|
2629
|
+
removal.flags = 8;
|
|
2549
2630
|
}
|
|
2550
2631
|
function resetShapeFlag(vnode) {
|
|
2551
2632
|
vnode.shapeFlag &= -257;
|
|
@@ -2770,6 +2851,11 @@ function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
|
|
|
2770
2851
|
ret.props = (0, _vue_shared.extend)({}, ret.props, { key: branchKey });
|
|
2771
2852
|
ret.key = branchKey;
|
|
2772
2853
|
}
|
|
2854
|
+
if (isBlockTreeEnabled <= 0) {
|
|
2855
|
+
if (!ret.vs.props) ret.vs.props = ret.props;
|
|
2856
|
+
ret.props = ret.key != null ? { key: ret.key } : null;
|
|
2857
|
+
ret.vs.attrs = _vue_shared.EMPTY_OBJ;
|
|
2858
|
+
}
|
|
2773
2859
|
if (!noSlotted && ret.scopeId) ret.slotScopeIds = [ret.scopeId + "-s"];
|
|
2774
2860
|
return ret;
|
|
2775
2861
|
}
|
|
@@ -4571,8 +4657,10 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
4571
4657
|
(0, _vue_shared.def)(el, "__vnode", vnode, true);
|
|
4572
4658
|
(0, _vue_shared.def)(el, "__vueParentComponent", parentComponent, true);
|
|
4573
4659
|
if (dirs) invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
|
|
4574
|
-
if (transition)
|
|
4575
|
-
|
|
4660
|
+
if (transition) {
|
|
4661
|
+
if (!needTransition(parentSuspense, transition) && !transition.persisted) el[deferredEnterKey] = true;
|
|
4662
|
+
performTransitionEnter(el, transition, () => hostInsert(el, container, anchor), parentSuspense);
|
|
4663
|
+
} else hostInsert(el, container, anchor);
|
|
4576
4664
|
if ((vnodeHook = props && props.onVnodeMounted) || dirs) {
|
|
4577
4665
|
const isHmr = isHmrUpdating;
|
|
4578
4666
|
queuePostRenderEffect(() => {
|
|
@@ -4829,16 +4917,20 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
4829
4917
|
} else {
|
|
4830
4918
|
let { next, bu, u, parent, vnode } = instance;
|
|
4831
4919
|
{
|
|
4832
|
-
const
|
|
4833
|
-
if (
|
|
4920
|
+
const unresolvedAsyncRoot = locateUnresolvedAsyncRoot(instance);
|
|
4921
|
+
if (unresolvedAsyncRoot) {
|
|
4834
4922
|
if (next) {
|
|
4835
4923
|
next.el = vnode.el;
|
|
4836
4924
|
updateComponentPreRender(instance, next, optimized);
|
|
4837
4925
|
}
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
if (
|
|
4841
|
-
|
|
4926
|
+
unresolvedAsyncRoot.asyncDep.then(() => {
|
|
4927
|
+
const retry = () => {
|
|
4928
|
+
if (instance.effect.flags & 1024) return;
|
|
4929
|
+
if (parentSuspense && parentSuspense.pendingBranch) queuePostRenderEffect(retry, void 0, parentSuspense);
|
|
4930
|
+
else instance.update();
|
|
4931
|
+
};
|
|
4932
|
+
retry.flags = 24;
|
|
4933
|
+
queuePostRenderEffect(retry, void 0, parentSuspense);
|
|
4842
4934
|
});
|
|
4843
4935
|
return;
|
|
4844
4936
|
}
|
|
@@ -4861,7 +4953,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
4861
4953
|
const prevTree = instance.subTree;
|
|
4862
4954
|
instance.subTree = nextTree;
|
|
4863
4955
|
startMeasure(instance, `patch`);
|
|
4864
|
-
patch(prevTree, nextTree, hostParentNode(prevTree.el), getNextHostNode(prevTree), instance, parentSuspense, namespace);
|
|
4956
|
+
patch(prevTree, nextTree, hostParentNode(prevTree.el || resolveAsyncComponentPlaceholder(prevTree)), getNextHostNode(prevTree), instance, parentSuspense, namespace);
|
|
4865
4957
|
endMeasure(instance, `patch`);
|
|
4866
4958
|
next.el = nextTree.el;
|
|
4867
4959
|
if (originNext === null) updateHOCHostEl(instance, nextTree.el);
|
|
@@ -5064,9 +5156,7 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
5064
5156
|
}
|
|
5065
5157
|
if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
|
|
5066
5158
|
if (shapeFlag & 256) {
|
|
5067
|
-
if (
|
|
5068
|
-
else parentComponent.ctx.deactivate(vnode);
|
|
5069
|
-
return;
|
|
5159
|
+
if (parentComponent.ctx.deactivate(vnode)) return;
|
|
5070
5160
|
}
|
|
5071
5161
|
if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
|
|
5072
5162
|
getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
|
|
@@ -5146,12 +5236,14 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
5146
5236
|
if (effect) {
|
|
5147
5237
|
effect.stop();
|
|
5148
5238
|
unmount(subTree, instance, parentSuspense, doRemove);
|
|
5149
|
-
} else if (
|
|
5239
|
+
} else if (subTree) {
|
|
5150
5240
|
subTree.transition = instance.vnode.transition;
|
|
5151
5241
|
unmount(subTree, instance, parentSuspense, doRemove);
|
|
5152
5242
|
}
|
|
5153
5243
|
if (um) queuePostRenderEffect(um, void 0, parentSuspense);
|
|
5154
|
-
|
|
5244
|
+
const markUnmounted = () => instance.isUnmounted = true;
|
|
5245
|
+
markUnmounted.flags = 8;
|
|
5246
|
+
queuePostRenderEffect(markUnmounted, void 0, parentSuspense);
|
|
5155
5247
|
devtoolsComponentRemoved(instance);
|
|
5156
5248
|
};
|
|
5157
5249
|
const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
|
|
@@ -5265,11 +5357,11 @@ function traverseStaticChildren(n1, n2, shallow = false) {
|
|
|
5265
5357
|
c2.el && (c2.el.__vnode = c2);
|
|
5266
5358
|
}
|
|
5267
5359
|
}
|
|
5268
|
-
function
|
|
5360
|
+
function locateUnresolvedAsyncRoot(instance) {
|
|
5269
5361
|
const subComponent = instance.subTree && instance.subTree.component;
|
|
5270
5362
|
if (subComponent) {
|
|
5271
5363
|
if (subComponent.asyncDep && !subComponent.asyncResolved) return subComponent;
|
|
5272
|
-
else return
|
|
5364
|
+
else return locateUnresolvedAsyncRoot(subComponent);
|
|
5273
5365
|
}
|
|
5274
5366
|
}
|
|
5275
5367
|
function invalidateMount(hooks) {
|
|
@@ -5339,7 +5431,9 @@ function getInheritedScopeIds(vnode, parentComponent, includeVaporRootIds = true
|
|
|
5339
5431
|
function resolveAsyncComponentPlaceholder(anchorVnode) {
|
|
5340
5432
|
if (anchorVnode.placeholder) return anchorVnode.placeholder;
|
|
5341
5433
|
const instance = anchorVnode.component;
|
|
5342
|
-
if (instance) return resolveAsyncComponentPlaceholder(instance.subTree);
|
|
5434
|
+
if (instance && instance.subTree) return resolveAsyncComponentPlaceholder(instance.subTree);
|
|
5435
|
+
const suspense = anchorVnode.suspense;
|
|
5436
|
+
if (suspense && suspense.activeBranch) return resolveAsyncComponentPlaceholder(suspense.activeBranch);
|
|
5343
5437
|
return null;
|
|
5344
5438
|
}
|
|
5345
5439
|
//#endregion
|
|
@@ -5351,17 +5445,22 @@ function withSuspenseEnabled(value) {
|
|
|
5351
5445
|
return value;
|
|
5352
5446
|
}
|
|
5353
5447
|
let suspenseId = 0;
|
|
5448
|
+
const deferredEnterKey = Symbol("_deferredEnter");
|
|
5354
5449
|
const Suspense = /*@__PURE__*/ withSuspenseEnabled({
|
|
5355
5450
|
name: "Suspense",
|
|
5356
5451
|
__isSuspense: true,
|
|
5357
5452
|
process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
|
|
5358
5453
|
if (n1 == null) mountSuspense(n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals);
|
|
5359
5454
|
else {
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
n2.
|
|
5364
|
-
|
|
5455
|
+
const suspense = n1.suspense;
|
|
5456
|
+
if (parentSuspense && parentSuspense.deps > 0 && !parentSuspense.isHydrating) {
|
|
5457
|
+
const owner = suspense.parentComponent;
|
|
5458
|
+
if (!!owner && owner.suspense === parentSuspense && owner.suspenseId !== parentSuspense.pendingId ? parentSuspense.pendingBranch && !isSameVNodeType(n2.ssContent, suspense.pendingBranch || suspense.activeBranch) : !suspense.isInFallback) {
|
|
5459
|
+
n2.suspense = suspense;
|
|
5460
|
+
suspense.vnode = n2;
|
|
5461
|
+
n2.el = n1.el;
|
|
5462
|
+
return;
|
|
5463
|
+
}
|
|
5365
5464
|
}
|
|
5366
5465
|
patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, rendererInternals);
|
|
5367
5466
|
}
|
|
@@ -5373,6 +5472,36 @@ function triggerEvent(vnode, name) {
|
|
|
5373
5472
|
const eventListener = vnode.props && vnode.props[name];
|
|
5374
5473
|
if ((0, _vue_shared.isFunction)(eventListener)) eventListener();
|
|
5375
5474
|
}
|
|
5475
|
+
function enterDeferred(suspense, branch) {
|
|
5476
|
+
const enters = [];
|
|
5477
|
+
collectDeferredEnters(branch, enters, true);
|
|
5478
|
+
if (isVaporInteropEnabled) {
|
|
5479
|
+
const { parentComponent } = suspense;
|
|
5480
|
+
const vapor = parentComponent && parentComponent.appContext.vapor;
|
|
5481
|
+
if (vapor) vapor.enterDeferred(suspense, enters);
|
|
5482
|
+
}
|
|
5483
|
+
if (enters.length) queuePostFlushCb(enters);
|
|
5484
|
+
}
|
|
5485
|
+
function collectDeferredEnters(vnode, enters, isRoot) {
|
|
5486
|
+
const { el, transition, children, shapeFlag } = vnode;
|
|
5487
|
+
if (shapeFlag & 6) {
|
|
5488
|
+
const subTree = vnode.component.subTree;
|
|
5489
|
+
if (subTree) collectDeferredEnters(subTree, enters, isRoot);
|
|
5490
|
+
return;
|
|
5491
|
+
}
|
|
5492
|
+
if (shapeFlag & 192) return;
|
|
5493
|
+
if (shapeFlag & 1) {
|
|
5494
|
+
if (!isRoot && el && el[deferredEnterKey]) {
|
|
5495
|
+
el[deferredEnterKey] = void 0;
|
|
5496
|
+
if (transition && !transition.persisted) {
|
|
5497
|
+
transition.beforeEnter(el);
|
|
5498
|
+
enters.push(() => transition.enter(el));
|
|
5499
|
+
}
|
|
5500
|
+
}
|
|
5501
|
+
isRoot = false;
|
|
5502
|
+
}
|
|
5503
|
+
if (shapeFlag & 16) for (let i = 0; i < children.length; i++) collectDeferredEnters(children[i], enters, isRoot);
|
|
5504
|
+
}
|
|
5376
5505
|
function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
|
|
5377
5506
|
const { p: patch, o: { createElement } } = rendererInternals;
|
|
5378
5507
|
const hiddenContainer = createElement("div");
|
|
@@ -5412,11 +5541,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
|
|
|
5412
5541
|
suspense.activeBranch = pendingBranch;
|
|
5413
5542
|
} else unmount(pendingBranch, parentComponent, suspense);
|
|
5414
5543
|
suspense.deps = 0;
|
|
5415
|
-
|
|
5416
|
-
const effect = suspense.effects[i];
|
|
5417
|
-
if (effect.flags & 8) queuePostFlushCb(effect);
|
|
5418
|
-
}
|
|
5419
|
-
suspense.effects.length = 0;
|
|
5544
|
+
discardEffects(suspense);
|
|
5420
5545
|
suspense.hiddenContainer = createElement("div");
|
|
5421
5546
|
if (isInFallback) {
|
|
5422
5547
|
patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
@@ -5439,14 +5564,14 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
|
|
|
5439
5564
|
} else {
|
|
5440
5565
|
triggerEvent(n2, "onPending");
|
|
5441
5566
|
suspense.pendingBranch = newBranch;
|
|
5442
|
-
|
|
5443
|
-
else suspense.pendingId = suspenseId++;
|
|
5567
|
+
suspense.pendingId = suspenseId++;
|
|
5444
5568
|
patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
5445
5569
|
if (suspense.deps <= 0) suspense.resolve();
|
|
5446
5570
|
else {
|
|
5447
|
-
const { timeout
|
|
5448
|
-
if (timeout > 0) setTimeout(() => {
|
|
5449
|
-
|
|
5571
|
+
const { timeout } = suspense;
|
|
5572
|
+
if (timeout > 0) suspense.timeoutTimer = setTimeout(() => {
|
|
5573
|
+
suspense.timeoutTimer = void 0;
|
|
5574
|
+
suspense.fallback(suspense.vnode.ssFallback);
|
|
5450
5575
|
}, timeout);
|
|
5451
5576
|
else if (timeout === 0) suspense.fallback(newFallback);
|
|
5452
5577
|
}
|
|
@@ -5482,6 +5607,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
5482
5607
|
deps: 0,
|
|
5483
5608
|
pendingId: suspenseId++,
|
|
5484
5609
|
timeout: typeof timeout === "number" ? timeout : -1,
|
|
5610
|
+
timeoutTimer: void 0,
|
|
5485
5611
|
activeBranch: null,
|
|
5486
5612
|
isFallbackMountPending: false,
|
|
5487
5613
|
pendingBranch: null,
|
|
@@ -5499,26 +5625,39 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
5499
5625
|
delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
|
|
5500
5626
|
let hasUpdatedAnchor = false;
|
|
5501
5627
|
if (delayEnter) activeBranch.transition.afterLeave = () => {
|
|
5502
|
-
if (pendingId === suspense.pendingId) {
|
|
5628
|
+
if (pendingId === suspense.pendingId && !suspense.isUnmounted) {
|
|
5629
|
+
enterDeferred(suspense, pendingBranch);
|
|
5503
5630
|
move(pendingBranch, container, anchor === initialAnchor && !hasUpdatedAnchor ? next(activeBranch) : anchor, 0, parentComponent);
|
|
5504
5631
|
queuePostFlushCb(effects);
|
|
5505
5632
|
if (isInFallback && vnode.ssFallback) vnode.ssFallback.el = null;
|
|
5506
5633
|
}
|
|
5507
5634
|
};
|
|
5508
5635
|
if (activeBranch && !suspense.isFallbackMountPending) {
|
|
5509
|
-
if (parentNode(activeBranch.el) === container) {
|
|
5636
|
+
if (parentNode(activeBranch.el || resolveAsyncComponentPlaceholder(activeBranch)) === container) {
|
|
5510
5637
|
anchor = next(activeBranch);
|
|
5511
5638
|
hasUpdatedAnchor = true;
|
|
5512
5639
|
}
|
|
5513
5640
|
unmount(activeBranch, parentComponent, suspense, true);
|
|
5514
5641
|
if (!delayEnter && isInFallback && vnode.ssFallback) queuePostRenderEffect(() => vnode.ssFallback.el = null, void 0, suspense);
|
|
5515
5642
|
}
|
|
5516
|
-
if (!delayEnter)
|
|
5643
|
+
if (!delayEnter) {
|
|
5644
|
+
enterDeferred(suspense, pendingBranch);
|
|
5645
|
+
move(pendingBranch, container, anchor, 0, parentComponent);
|
|
5646
|
+
}
|
|
5517
5647
|
}
|
|
5648
|
+
clearTimeout(suspense.timeoutTimer);
|
|
5649
|
+
suspense.timeoutTimer = void 0;
|
|
5518
5650
|
suspense.isFallbackMountPending = false;
|
|
5519
5651
|
setActiveBranch(suspense, pendingBranch);
|
|
5520
5652
|
suspense.pendingBranch = null;
|
|
5521
5653
|
suspense.isInFallback = false;
|
|
5654
|
+
let kept = 0;
|
|
5655
|
+
for (let i = 0; i < effects.length; i++) {
|
|
5656
|
+
const effect = effects[i];
|
|
5657
|
+
if (effect.flags & 16) queuePostFlushCb(effect);
|
|
5658
|
+
else effects[kept++] = effect;
|
|
5659
|
+
}
|
|
5660
|
+
effects.length = kept;
|
|
5522
5661
|
let parent = suspense.parent;
|
|
5523
5662
|
let hasUnresolvedAncestor = false;
|
|
5524
5663
|
while (parent) {
|
|
@@ -5541,13 +5680,13 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
5541
5680
|
triggerEvent(vnode, "onResolve");
|
|
5542
5681
|
},
|
|
5543
5682
|
fallback(fallbackVNode) {
|
|
5544
|
-
if (!suspense.pendingBranch) return;
|
|
5683
|
+
if (suspense.isUnmounted || !suspense.pendingBranch) return;
|
|
5545
5684
|
const { vnode, activeBranch, parentComponent, container, namespace } = suspense;
|
|
5546
5685
|
triggerEvent(vnode, "onFallback");
|
|
5547
5686
|
const anchor = next(activeBranch);
|
|
5548
5687
|
const mountFallback = () => {
|
|
5549
5688
|
suspense.isFallbackMountPending = false;
|
|
5550
|
-
if (!suspense.isInFallback) return;
|
|
5689
|
+
if (suspense.isUnmounted || !suspense.isInFallback) return;
|
|
5551
5690
|
const latestFallback = suspense.vnode.ssFallback;
|
|
5552
5691
|
patch(null, latestFallback, container, anchor, parentComponent, null, namespace, slotScopeIds, optimized);
|
|
5553
5692
|
setActiveBranch(suspense, latestFallback);
|
|
@@ -5571,24 +5710,52 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
|
|
|
5571
5710
|
registerDep(instance, onResolve) {
|
|
5572
5711
|
const isInPendingSuspense = !!suspense.pendingBranch;
|
|
5573
5712
|
if (isInPendingSuspense) suspense.deps++;
|
|
5713
|
+
const render = (setupResult) => {
|
|
5714
|
+
instance.asyncResolved = true;
|
|
5715
|
+
onResolve(setupResult);
|
|
5716
|
+
};
|
|
5574
5717
|
instance.asyncDep.catch((err) => {
|
|
5575
|
-
handleError(err, instance, 0);
|
|
5718
|
+
handleError(err, instance, 0, false, true);
|
|
5719
|
+
return () => null;
|
|
5576
5720
|
}).then((asyncSetupResult) => {
|
|
5577
|
-
if (instance.isUnmounted || suspense.isUnmounted
|
|
5721
|
+
if (instance.isUnmounted || suspense.isUnmounted) return;
|
|
5722
|
+
const isPendingDep = isInPendingSuspense && suspense.pendingId === instance.suspenseId;
|
|
5578
5723
|
setCurrentInstance(null, void 0);
|
|
5579
5724
|
if (!instance.scope.active) {
|
|
5580
|
-
if (
|
|
5725
|
+
if (isPendingDep && --suspense.deps === 0) suspense.resolve();
|
|
5581
5726
|
return;
|
|
5582
5727
|
}
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5728
|
+
if (!isPendingDep && suspense.pendingBranch) {
|
|
5729
|
+
const job = () => {
|
|
5730
|
+
if (instance.isUnmounted || suspense.isUnmounted || !instance.scope.active) return;
|
|
5731
|
+
if (suspense.pendingBranch) queueEffectWithSuspense(job, void 0, suspense);
|
|
5732
|
+
else render(asyncSetupResult);
|
|
5733
|
+
};
|
|
5734
|
+
job.flags = 24;
|
|
5735
|
+
queueEffectWithSuspense(job, void 0, suspense);
|
|
5736
|
+
return;
|
|
5737
|
+
}
|
|
5738
|
+
render(asyncSetupResult);
|
|
5739
|
+
if (isPendingDep && --suspense.deps === 0) suspense.resolve();
|
|
5586
5740
|
});
|
|
5587
5741
|
},
|
|
5588
5742
|
unmount(parentSuspense, doRemove) {
|
|
5589
5743
|
suspense.isUnmounted = true;
|
|
5744
|
+
clearTimeout(suspense.timeoutTimer);
|
|
5745
|
+
suspense.timeoutTimer = void 0;
|
|
5746
|
+
if (parentSuspenseId !== void 0) {
|
|
5747
|
+
const parent = suspense.parent;
|
|
5748
|
+
const pendingId = parentSuspenseId;
|
|
5749
|
+
parentSuspenseId = void 0;
|
|
5750
|
+
queuePostFlushCb(() => {
|
|
5751
|
+
if (parent.pendingId === pendingId && !parent.isUnmounted && --parent.deps === 0) parent.resolve();
|
|
5752
|
+
});
|
|
5753
|
+
}
|
|
5590
5754
|
if (suspense.activeBranch) unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);
|
|
5591
|
-
if (suspense.pendingBranch)
|
|
5755
|
+
if (suspense.pendingBranch) {
|
|
5756
|
+
unmount(suspense.pendingBranch, parentComponent, suspense, doRemove);
|
|
5757
|
+
discardEffects(suspense);
|
|
5758
|
+
}
|
|
5592
5759
|
}
|
|
5593
5760
|
};
|
|
5594
5761
|
return suspense;
|
|
@@ -5629,6 +5796,14 @@ function normalizeSuspenseSlot(s) {
|
|
|
5629
5796
|
if (block && !s.dynamicChildren) s.dynamicChildren = block.filter((c) => c !== s);
|
|
5630
5797
|
return s;
|
|
5631
5798
|
}
|
|
5799
|
+
function discardEffects(suspense) {
|
|
5800
|
+
const { effects } = suspense;
|
|
5801
|
+
for (let i = 0; i < effects.length; i++) {
|
|
5802
|
+
const effect = effects[i];
|
|
5803
|
+
if (effect.flags & 8) queuePostFlushCb(effect);
|
|
5804
|
+
}
|
|
5805
|
+
effects.length = 0;
|
|
5806
|
+
}
|
|
5632
5807
|
function queueEffectWithSuspense(fn, id, suspense) {
|
|
5633
5808
|
if (suspense && suspense.pendingBranch) {
|
|
5634
5809
|
if ((0, _vue_shared.isArray)(fn)) suspense.effects.push(...fn);
|
|
@@ -5853,7 +6028,8 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
|
|
|
5853
6028
|
}
|
|
5854
6029
|
function guardReactiveProps(props) {
|
|
5855
6030
|
if (!props) return null;
|
|
5856
|
-
|
|
6031
|
+
if ((0, _vue_reactivity.isProxy)(props)) return (0, _vue_shared.extend)({}, props);
|
|
6032
|
+
return isInternalObject(props) ? (0, _vue_shared.extend)({}, props[rawAttrsKey] || props) : props;
|
|
5857
6033
|
}
|
|
5858
6034
|
function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {
|
|
5859
6035
|
const { props, ref, patchFlag, children, transition } = vnode;
|
|
@@ -5966,6 +6142,17 @@ function normalizeVNode(child) {
|
|
|
5966
6142
|
function cloneIfMounted(child) {
|
|
5967
6143
|
return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
|
|
5968
6144
|
}
|
|
6145
|
+
let deferElementSlots = false;
|
|
6146
|
+
/**
|
|
6147
|
+
* While enabled, compiled default slots passed as children of plain elements
|
|
6148
|
+
* are kept on the vnode so the server renderer can render them in push mode.
|
|
6149
|
+
* @internal
|
|
6150
|
+
*/
|
|
6151
|
+
function setDeferElementSlots(value) {
|
|
6152
|
+
const prev = deferElementSlots;
|
|
6153
|
+
deferElementSlots = value;
|
|
6154
|
+
return prev;
|
|
6155
|
+
}
|
|
5969
6156
|
function normalizeChildren(vnode, children) {
|
|
5970
6157
|
let type = 0;
|
|
5971
6158
|
const { shapeFlag } = vnode;
|
|
@@ -5974,6 +6161,11 @@ function normalizeChildren(vnode, children) {
|
|
|
5974
6161
|
else if (typeof children === "object") {
|
|
5975
6162
|
if (shapeFlag & 65) {
|
|
5976
6163
|
const slot = children.default;
|
|
6164
|
+
if (deferElementSlots && slot && slot._c && shapeFlag & 1) {
|
|
6165
|
+
vnode.children = children;
|
|
6166
|
+
vnode.shapeFlag |= 32;
|
|
6167
|
+
return;
|
|
6168
|
+
}
|
|
5977
6169
|
if (slot) {
|
|
5978
6170
|
slot._c && (slot._d = false);
|
|
5979
6171
|
normalizeChildren(vnode, slot());
|
|
@@ -6248,7 +6440,8 @@ function setupStatefulComponent(instance, isSSR) {
|
|
|
6248
6440
|
setInSSRSetupState(false);
|
|
6249
6441
|
}
|
|
6250
6442
|
}).catch((e) => {
|
|
6251
|
-
handleError(e, instance, 0);
|
|
6443
|
+
handleError(e, instance, 0, void 0, true);
|
|
6444
|
+
instance.ssrRender = (_, push) => push("<!---->");
|
|
6252
6445
|
});
|
|
6253
6446
|
else {
|
|
6254
6447
|
instance.asyncDep = setupResult;
|
|
@@ -6319,11 +6512,16 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
|
|
|
6319
6512
|
else warn$1(`Component is missing template or render function: `, Component);
|
|
6320
6513
|
}
|
|
6321
6514
|
}
|
|
6515
|
+
/**
|
|
6516
|
+
* Read through the setup context `attrs` proxy to get the raw attrs object.
|
|
6517
|
+
* @internal
|
|
6518
|
+
*/
|
|
6519
|
+
const rawAttrsKey = Symbol();
|
|
6322
6520
|
const attrsProxyHandlers = {
|
|
6323
6521
|
get(target, key) {
|
|
6324
6522
|
markAttrsAccessed();
|
|
6325
6523
|
(0, _vue_reactivity.track)(target, "get", "");
|
|
6326
|
-
return target[key];
|
|
6524
|
+
return key === rawAttrsKey ? target : target[key];
|
|
6327
6525
|
},
|
|
6328
6526
|
set() {
|
|
6329
6527
|
warn$1(`setupContext.attrs is readonly.`);
|
|
@@ -6621,7 +6819,7 @@ function isMemoSame(cached, memo) {
|
|
|
6621
6819
|
}
|
|
6622
6820
|
//#endregion
|
|
6623
6821
|
//#region packages/runtime-core/src/index.ts
|
|
6624
|
-
const version = "3.6.0-rc.
|
|
6822
|
+
const version = "3.6.0-rc.15";
|
|
6625
6823
|
const warn = warn$1;
|
|
6626
6824
|
/**
|
|
6627
6825
|
* Runtime error messages. Only exposed in dev or esm builds.
|
|
@@ -6647,7 +6845,8 @@ const ssrUtils = {
|
|
|
6647
6845
|
popWarningContext,
|
|
6648
6846
|
VaporSlot,
|
|
6649
6847
|
rawVaporSlotKey,
|
|
6650
|
-
invokeSlotFallback
|
|
6848
|
+
invokeSlotFallback,
|
|
6849
|
+
setDeferElementSlots
|
|
6651
6850
|
};
|
|
6652
6851
|
/**
|
|
6653
6852
|
* @internal only exposed in compat builds
|