@vue/compat 3.5.42 → 3.5.43

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/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.42
2
+ * @vue/compat v3.5.43
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -210,10 +210,10 @@ function normalizeStyle(value) {
210
210
  }
211
211
  const listDelimiterRE = /;(?![^(]*\))/g;
212
212
  const propertyDelimiterRE = /:([^]+)/;
213
- const styleCommentRE = /\/\*[^]*?\*\//g;
213
+ const styleCommentRE = /"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;
214
214
  function parseStringStyle(cssText) {
215
215
  const ret = {};
216
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
216
+ cssText.replace(styleCommentRE, (match) => match.startsWith("/*") ? "" : match).split(listDelimiterRE).forEach((item) => {
217
217
  if (item) {
218
218
  const tmp = item.split(propertyDelimiterRE);
219
219
  tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
@@ -347,22 +347,22 @@ function getEscapedCssVarName(key, doubleEscape) {
347
347
  );
348
348
  }
349
349
 
350
- function looseCompareArrays(a, b) {
350
+ function looseCompareArrays(a, b, seen) {
351
351
  if (a.length !== b.length) return false;
352
352
  let equal = true;
353
353
  for (let i = 0; equal && i < a.length; i++) {
354
- equal = looseEqual(a[i], b[i]);
354
+ equal = looseEqual(a[i], b[i], seen);
355
355
  }
356
356
  return equal;
357
357
  }
358
- function looseCompareCollections(a, b) {
358
+ function looseCompareCollections(a, b, seen) {
359
359
  if (a.size !== b.size) return false;
360
360
  const candidates = Array.from(b);
361
361
  const matched = new Uint8Array(candidates.length);
362
362
  for (const item of a) {
363
363
  let index = -1;
364
364
  for (let i = 0; i < candidates.length; i++) {
365
- if (!matched[i] && looseEqual(item, candidates[i])) {
365
+ if (!matched[i] && looseEqual(item, candidates[i], seen)) {
366
366
  index = i;
367
367
  break;
368
368
  }
@@ -372,7 +372,47 @@ function looseCompareCollections(a, b) {
372
372
  }
373
373
  return true;
374
374
  }
375
- function looseEqual(a, b) {
375
+ function looseCompareObjects(a, b, seen) {
376
+ let aValidType = isMap(a);
377
+ let bValidType = isMap(b);
378
+ if (aValidType || bValidType) {
379
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
380
+ }
381
+ aValidType = isSet(a);
382
+ bValidType = isSet(b);
383
+ if (aValidType || bValidType) {
384
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
385
+ }
386
+ const aKeysCount = Object.keys(a).length;
387
+ const bKeysCount = Object.keys(b).length;
388
+ if (aKeysCount !== bKeysCount) {
389
+ return false;
390
+ }
391
+ for (const key in a) {
392
+ const aHasKey = a.hasOwnProperty(key);
393
+ const bHasKey = b.hasOwnProperty(key);
394
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key], seen)) {
395
+ return false;
396
+ }
397
+ }
398
+ return String(a) === String(b);
399
+ }
400
+ function looseCompareNested(a, b, seen, compare) {
401
+ if (!seen) {
402
+ seen = [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map()];
403
+ }
404
+ const [seenA, seenB] = seen;
405
+ if (seenA.has(a) || seenB.has(b)) {
406
+ return seenA.get(a) === b && seenB.get(b) === a;
407
+ }
408
+ seenA.set(a, b);
409
+ seenB.set(b, a);
410
+ const equal = compare(a, b, seen);
411
+ seenA.delete(a);
412
+ seenB.delete(b);
413
+ return equal;
414
+ }
415
+ function looseEqual(a, b, seen) {
376
416
  if (a === b) return true;
377
417
  let aValidType = isDate(a);
378
418
  let bValidType = isDate(b);
@@ -387,7 +427,7 @@ function looseEqual(a, b) {
387
427
  aValidType = isArray(a);
388
428
  bValidType = isArray(b);
389
429
  if (aValidType || bValidType) {
390
- return aValidType && bValidType ? looseCompareArrays(a, b) : false;
430
+ return aValidType && bValidType ? looseCompareNested(a, b, seen, looseCompareArrays) : false;
391
431
  }
392
432
  aValidType = isObject(a);
393
433
  bValidType = isObject(b);
@@ -395,28 +435,7 @@ function looseEqual(a, b) {
395
435
  if (!aValidType || !bValidType) {
396
436
  return false;
397
437
  }
398
- aValidType = isMap(a);
399
- bValidType = isMap(b);
400
- if (aValidType || bValidType) {
401
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
402
- }
403
- aValidType = isSet(a);
404
- bValidType = isSet(b);
405
- if (aValidType || bValidType) {
406
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
407
- }
408
- const aKeysCount = Object.keys(a).length;
409
- const bKeysCount = Object.keys(b).length;
410
- if (aKeysCount !== bKeysCount) {
411
- return false;
412
- }
413
- for (const key in a) {
414
- const aHasKey = a.hasOwnProperty(key);
415
- const bHasKey = b.hasOwnProperty(key);
416
- if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
417
- return false;
418
- }
419
- }
438
+ return looseCompareNested(a, b, seen, looseCompareObjects);
420
439
  }
421
440
  return String(a) === String(b);
422
441
  }
@@ -1217,7 +1236,9 @@ function reactiveReadArray(array) {
1217
1236
  const raw = toRaw(array);
1218
1237
  if (raw === array) return raw;
1219
1238
  track(raw, "iterate", ARRAY_ITERATE_KEY);
1220
- return isShallow(array) ? raw : raw.map(toReactive);
1239
+ if (isShallow(array)) return raw;
1240
+ if (!isReadonly(array)) return raw.map(toReactive);
1241
+ return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly);
1221
1242
  }
1222
1243
  function shallowReadArray(arr) {
1223
1244
  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
@@ -4958,13 +4979,15 @@ function createHydrationFunctions(rendererInternals) {
4958
4979
  getContainerType(container),
4959
4980
  optimized
4960
4981
  );
4961
- if (isAsyncWrapper(vnode) && !vnode.component.subTree) {
4982
+ if ((isAsyncWrapper(vnode) || vnode.component.asyncDep) && !vnode.component.subTree) {
4962
4983
  let subTree;
4963
4984
  if (isFragmentStart) {
4964
4985
  subTree = createVNode(Static);
4965
4986
  subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
4966
4987
  } else {
4967
- subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
4988
+ subTree = node.nodeType === 3 ? createTextVNode("") : createVNode(
4989
+ node.nodeType === 8 ? Comment : "div"
4990
+ );
4968
4991
  }
4969
4992
  subTree.el = node;
4970
4993
  vnode.component.subTree = subTree;
@@ -7739,7 +7762,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7739
7762
  return vm;
7740
7763
  }
7741
7764
  }
7742
- Vue.version = `2.6.14-compat:${"3.5.42"}`;
7765
+ Vue.version = `2.6.14-compat:${"3.5.43"}`;
7743
7766
  Vue.config = singletonApp.config;
7744
7767
  Vue.use = (plugin, ...options) => {
7745
7768
  if (plugin && isFunction(plugin.install)) {
@@ -9595,6 +9618,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9595
9618
  optimized = false;
9596
9619
  n2.dynamicChildren = null;
9597
9620
  }
9621
+ if (n2.dynamicChildren && n1 && n1.dynamicChildren && n1.dynamicChildren.hasOnce) {
9622
+ if (n2.dynamicChildren === EMPTY_ARR) {
9623
+ n2.dynamicChildren = [];
9624
+ }
9625
+ n2.dynamicChildren.hasOnce = true;
9626
+ }
9598
9627
  const { type, ref, shapeFlag } = n2;
9599
9628
  switch (type) {
9600
9629
  case Text:
@@ -10203,6 +10232,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10203
10232
  {
10204
10233
  pushWarningContext(n2);
10205
10234
  }
10235
+ n2.el = n1.el;
10206
10236
  updateComponentPreRender(instance, n2, optimized);
10207
10237
  {
10208
10238
  popWarningContext();
@@ -10818,7 +10848,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10818
10848
  cacheIndex,
10819
10849
  memo
10820
10850
  } = vnode;
10821
- if (patchFlag === -2) {
10851
+ if (patchFlag === -2 || dynamicChildren && dynamicChildren.hasOnce) {
10822
10852
  optimized = false;
10823
10853
  }
10824
10854
  if (ref != null) {
@@ -10826,7 +10856,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10826
10856
  setRef(ref, null, parentSuspense, vnode, true);
10827
10857
  resetTracking();
10828
10858
  }
10829
- if (cacheIndex != null) {
10859
+ if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) {
10830
10860
  parentComponent.renderCache[cacheIndex] = void 0;
10831
10861
  }
10832
10862
  if (shapeFlag & 256) {
@@ -10907,6 +10937,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10907
10937
  }
10908
10938
  if (type === Static) {
10909
10939
  removeStaticNode(vnode);
10940
+ if (transition && !transition.persisted && transition.afterLeave) {
10941
+ transition.afterLeave();
10942
+ }
10910
10943
  return;
10911
10944
  }
10912
10945
  const performRemove = () => {
@@ -10953,6 +10986,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10953
10986
  if (job) {
10954
10987
  job.flags |= 8;
10955
10988
  unmount(subTree, instance, parentSuspense, doRemove);
10989
+ } else if (instance.vnode.el && subTree) {
10990
+ subTree.transition = instance.vnode.transition;
10991
+ unmount(subTree, instance, parentSuspense, doRemove);
10956
10992
  }
10957
10993
  if (um) {
10958
10994
  queuePostRenderEffect(um, parentSuspense);
@@ -11173,7 +11209,7 @@ const SuspenseImpl = {
11173
11209
  rendererInternals
11174
11210
  );
11175
11211
  } else {
11176
- if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
11212
+ if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) {
11177
11213
  n2.suspense = n1.suspense;
11178
11214
  n2.suspense.vnode = n2;
11179
11215
  n2.el = n1.el;
@@ -11259,10 +11295,12 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11259
11295
  if (pendingBranch) {
11260
11296
  suspense.pendingBranch = newBranch;
11261
11297
  if (isSameVNodeType(pendingBranch, newBranch)) {
11298
+ suspense.deps++;
11262
11299
  patch(
11263
11300
  pendingBranch,
11264
11301
  newBranch,
11265
- suspense.hiddenContainer,
11302
+ // a hydrating pending branch is adopted SSR DOM, already in place
11303
+ isHydrating ? container : suspense.hiddenContainer,
11266
11304
  null,
11267
11305
  parentComponent,
11268
11306
  suspense,
@@ -11270,6 +11308,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11270
11308
  slotScopeIds,
11271
11309
  optimized
11272
11310
  );
11311
+ suspense.deps--;
11273
11312
  if (suspense.deps <= 0) {
11274
11313
  suspense.resolve();
11275
11314
  } else if (isInFallback) {
@@ -11535,6 +11574,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11535
11574
  suspense.effects = [];
11536
11575
  if (isSuspensible) {
11537
11576
  if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
11577
+ parentSuspenseId = void 0;
11538
11578
  parentSuspense.deps--;
11539
11579
  if (parentSuspense.deps === 0 && !sync) {
11540
11580
  parentSuspense.resolve();
@@ -11608,6 +11648,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11608
11648
  return;
11609
11649
  }
11610
11650
  unsetCurrentInstance();
11651
+ if (hydratedEl && !instance.scope.active) {
11652
+ if (isInPendingSuspense && --suspense.deps === 0) {
11653
+ suspense.resolve();
11654
+ }
11655
+ return;
11656
+ }
11611
11657
  instance.asyncResolved = true;
11612
11658
  const { vnode: vnode2 } = instance;
11613
11659
  {
@@ -12093,7 +12139,8 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
12093
12139
  el: vnode.el,
12094
12140
  anchor: vnode.anchor,
12095
12141
  ctx: vnode.ctx,
12096
- ce: vnode.ce
12142
+ ce: vnode.ce,
12143
+ cacheIndex: vnode.cacheIndex
12097
12144
  };
12098
12145
  if (transition && cloneTransition) {
12099
12146
  setTransitionHooks(
@@ -12913,7 +12960,7 @@ function isMemoSame(cached, memo) {
12913
12960
  return true;
12914
12961
  }
12915
12962
 
12916
- const version = "3.5.42";
12963
+ const version = "3.5.43";
12917
12964
  const warn = warn$1 ;
12918
12965
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12919
12966
  const devtools = devtools$1 ;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.42
2
+ * @vue/compat v3.5.43
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -145,10 +145,10 @@ function normalizeStyle(value) {
145
145
  }
146
146
  const listDelimiterRE = /;(?![^(]*\))/g;
147
147
  const propertyDelimiterRE = /:([^]+)/;
148
- const styleCommentRE = /\/\*[^]*?\*\//g;
148
+ const styleCommentRE = /"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;
149
149
  function parseStringStyle(cssText) {
150
150
  const ret = {};
151
- cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
151
+ cssText.replace(styleCommentRE, (match) => match.startsWith("/*") ? "" : match).split(listDelimiterRE).forEach((item) => {
152
152
  if (item) {
153
153
  const tmp = item.split(propertyDelimiterRE);
154
154
  tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
@@ -268,22 +268,22 @@ function escapeHtml(string) {
268
268
  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
269
269
  }
270
270
 
271
- function looseCompareArrays(a, b) {
271
+ function looseCompareArrays(a, b, seen) {
272
272
  if (a.length !== b.length) return false;
273
273
  let equal = true;
274
274
  for (let i = 0; equal && i < a.length; i++) {
275
- equal = looseEqual(a[i], b[i]);
275
+ equal = looseEqual(a[i], b[i], seen);
276
276
  }
277
277
  return equal;
278
278
  }
279
- function looseCompareCollections(a, b) {
279
+ function looseCompareCollections(a, b, seen) {
280
280
  if (a.size !== b.size) return false;
281
281
  const candidates = Array.from(b);
282
282
  const matched = new Uint8Array(candidates.length);
283
283
  for (const item of a) {
284
284
  let index = -1;
285
285
  for (let i = 0; i < candidates.length; i++) {
286
- if (!matched[i] && looseEqual(item, candidates[i])) {
286
+ if (!matched[i] && looseEqual(item, candidates[i], seen)) {
287
287
  index = i;
288
288
  break;
289
289
  }
@@ -293,7 +293,47 @@ function looseCompareCollections(a, b) {
293
293
  }
294
294
  return true;
295
295
  }
296
- function looseEqual(a, b) {
296
+ function looseCompareObjects(a, b, seen) {
297
+ let aValidType = isMap(a);
298
+ let bValidType = isMap(b);
299
+ if (aValidType || bValidType) {
300
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
301
+ }
302
+ aValidType = isSet(a);
303
+ bValidType = isSet(b);
304
+ if (aValidType || bValidType) {
305
+ return aValidType && bValidType ? looseCompareCollections(a, b, seen) : false;
306
+ }
307
+ const aKeysCount = Object.keys(a).length;
308
+ const bKeysCount = Object.keys(b).length;
309
+ if (aKeysCount !== bKeysCount) {
310
+ return false;
311
+ }
312
+ for (const key in a) {
313
+ const aHasKey = a.hasOwnProperty(key);
314
+ const bHasKey = b.hasOwnProperty(key);
315
+ if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key], seen)) {
316
+ return false;
317
+ }
318
+ }
319
+ return String(a) === String(b);
320
+ }
321
+ function looseCompareNested(a, b, seen, compare) {
322
+ if (!seen) {
323
+ seen = [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map()];
324
+ }
325
+ const [seenA, seenB] = seen;
326
+ if (seenA.has(a) || seenB.has(b)) {
327
+ return seenA.get(a) === b && seenB.get(b) === a;
328
+ }
329
+ seenA.set(a, b);
330
+ seenB.set(b, a);
331
+ const equal = compare(a, b, seen);
332
+ seenA.delete(a);
333
+ seenB.delete(b);
334
+ return equal;
335
+ }
336
+ function looseEqual(a, b, seen) {
297
337
  if (a === b) return true;
298
338
  let aValidType = isDate(a);
299
339
  let bValidType = isDate(b);
@@ -308,7 +348,7 @@ function looseEqual(a, b) {
308
348
  aValidType = isArray(a);
309
349
  bValidType = isArray(b);
310
350
  if (aValidType || bValidType) {
311
- return aValidType && bValidType ? looseCompareArrays(a, b) : false;
351
+ return aValidType && bValidType ? looseCompareNested(a, b, seen, looseCompareArrays) : false;
312
352
  }
313
353
  aValidType = isObject(a);
314
354
  bValidType = isObject(b);
@@ -316,28 +356,7 @@ function looseEqual(a, b) {
316
356
  if (!aValidType || !bValidType) {
317
357
  return false;
318
358
  }
319
- aValidType = isMap(a);
320
- bValidType = isMap(b);
321
- if (aValidType || bValidType) {
322
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
323
- }
324
- aValidType = isSet(a);
325
- bValidType = isSet(b);
326
- if (aValidType || bValidType) {
327
- return aValidType && bValidType ? looseCompareCollections(a, b) : false;
328
- }
329
- const aKeysCount = Object.keys(a).length;
330
- const bKeysCount = Object.keys(b).length;
331
- if (aKeysCount !== bKeysCount) {
332
- return false;
333
- }
334
- for (const key in a) {
335
- const aHasKey = a.hasOwnProperty(key);
336
- const bHasKey = b.hasOwnProperty(key);
337
- if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
338
- return false;
339
- }
340
- }
359
+ return looseCompareNested(a, b, seen, looseCompareObjects);
341
360
  }
342
361
  return String(a) === String(b);
343
362
  }
@@ -1062,7 +1081,9 @@ function reactiveReadArray(array) {
1062
1081
  const raw = toRaw(array);
1063
1082
  if (raw === array) return raw;
1064
1083
  track(raw, "iterate", ARRAY_ITERATE_KEY);
1065
- return isShallow(array) ? raw : raw.map(toReactive);
1084
+ if (isShallow(array)) return raw;
1085
+ if (!isReadonly(array)) return raw.map(toReactive);
1086
+ return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly);
1066
1087
  }
1067
1088
  function shallowReadArray(arr) {
1068
1089
  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
@@ -3927,13 +3948,15 @@ function createHydrationFunctions(rendererInternals) {
3927
3948
  getContainerType(container),
3928
3949
  optimized
3929
3950
  );
3930
- if (isAsyncWrapper(vnode) && !vnode.component.subTree) {
3951
+ if ((isAsyncWrapper(vnode) || vnode.component.asyncDep) && !vnode.component.subTree) {
3931
3952
  let subTree;
3932
3953
  if (isFragmentStart) {
3933
3954
  subTree = createVNode(Static);
3934
3955
  subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
3935
3956
  } else {
3936
- subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
3957
+ subTree = node.nodeType === 3 ? createTextVNode("") : createVNode(
3958
+ node.nodeType === 8 ? Comment : "div"
3959
+ );
3937
3960
  }
3938
3961
  subTree.el = node;
3939
3962
  vnode.component.subTree = subTree;
@@ -6218,7 +6241,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6218
6241
  return vm;
6219
6242
  }
6220
6243
  }
6221
- Vue.version = `2.6.14-compat:${"3.5.42"}`;
6244
+ Vue.version = `2.6.14-compat:${"3.5.43"}`;
6222
6245
  Vue.config = singletonApp.config;
6223
6246
  Vue.use = (plugin, ...options) => {
6224
6247
  if (plugin && isFunction(plugin.install)) {
@@ -7613,6 +7636,12 @@ function baseCreateRenderer(options, createHydrationFns) {
7613
7636
  optimized = false;
7614
7637
  n2.dynamicChildren = null;
7615
7638
  }
7639
+ if (n2.dynamicChildren && n1 && n1.dynamicChildren && n1.dynamicChildren.hasOnce) {
7640
+ if (n2.dynamicChildren === EMPTY_ARR) {
7641
+ n2.dynamicChildren = [];
7642
+ }
7643
+ n2.dynamicChildren.hasOnce = true;
7644
+ }
7616
7645
  const { type, ref, shapeFlag } = n2;
7617
7646
  switch (type) {
7618
7647
  case Text:
@@ -8166,6 +8195,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8166
8195
  const instance = n2.component = n1.component;
8167
8196
  if (shouldUpdateComponent(n1, n2, optimized)) {
8168
8197
  if (instance.asyncDep && !instance.asyncResolved) {
8198
+ n2.el = n1.el;
8169
8199
  updateComponentPreRender(instance, n2, optimized);
8170
8200
  return;
8171
8201
  } else {
@@ -8719,7 +8749,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8719
8749
  cacheIndex,
8720
8750
  memo
8721
8751
  } = vnode;
8722
- if (patchFlag === -2) {
8752
+ if (patchFlag === -2 || dynamicChildren && dynamicChildren.hasOnce) {
8723
8753
  optimized = false;
8724
8754
  }
8725
8755
  if (ref != null) {
@@ -8727,7 +8757,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8727
8757
  setRef(ref, null, parentSuspense, vnode, true);
8728
8758
  resetTracking();
8729
8759
  }
8730
- if (cacheIndex != null) {
8760
+ if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) {
8731
8761
  parentComponent.renderCache[cacheIndex] = void 0;
8732
8762
  }
8733
8763
  if (shapeFlag & 256) {
@@ -8800,6 +8830,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8800
8830
  }
8801
8831
  if (type === Static) {
8802
8832
  removeStaticNode(vnode);
8833
+ if (transition && !transition.persisted && transition.afterLeave) {
8834
+ transition.afterLeave();
8835
+ }
8803
8836
  return;
8804
8837
  }
8805
8838
  const performRemove = () => {
@@ -8843,6 +8876,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8843
8876
  if (job) {
8844
8877
  job.flags |= 8;
8845
8878
  unmount(subTree, instance, parentSuspense, doRemove);
8879
+ } else if (instance.vnode.el && subTree) {
8880
+ subTree.transition = instance.vnode.transition;
8881
+ unmount(subTree, instance, parentSuspense, doRemove);
8846
8882
  }
8847
8883
  if (um) {
8848
8884
  queuePostRenderEffect(um, parentSuspense);
@@ -9057,7 +9093,7 @@ const SuspenseImpl = {
9057
9093
  rendererInternals
9058
9094
  );
9059
9095
  } else {
9060
- if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
9096
+ if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) {
9061
9097
  n2.suspense = n1.suspense;
9062
9098
  n2.suspense.vnode = n2;
9063
9099
  n2.el = n1.el;
@@ -9143,10 +9179,12 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
9143
9179
  if (pendingBranch) {
9144
9180
  suspense.pendingBranch = newBranch;
9145
9181
  if (isSameVNodeType(pendingBranch, newBranch)) {
9182
+ suspense.deps++;
9146
9183
  patch(
9147
9184
  pendingBranch,
9148
9185
  newBranch,
9149
- suspense.hiddenContainer,
9186
+ // a hydrating pending branch is adopted SSR DOM, already in place
9187
+ isHydrating ? container : suspense.hiddenContainer,
9150
9188
  null,
9151
9189
  parentComponent,
9152
9190
  suspense,
@@ -9154,6 +9192,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
9154
9192
  slotScopeIds,
9155
9193
  optimized
9156
9194
  );
9195
+ suspense.deps--;
9157
9196
  if (suspense.deps <= 0) {
9158
9197
  suspense.resolve();
9159
9198
  } else if (isInFallback) {
@@ -9397,6 +9436,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9397
9436
  suspense.effects = [];
9398
9437
  if (isSuspensible) {
9399
9438
  if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
9439
+ parentSuspenseId = void 0;
9400
9440
  parentSuspense.deps--;
9401
9441
  if (parentSuspense.deps === 0 && !sync) {
9402
9442
  parentSuspense.resolve();
@@ -9470,6 +9510,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9470
9510
  return;
9471
9511
  }
9472
9512
  unsetCurrentInstance();
9513
+ if (hydratedEl && !instance.scope.active) {
9514
+ if (isInPendingSuspense && --suspense.deps === 0) {
9515
+ suspense.resolve();
9516
+ }
9517
+ return;
9518
+ }
9473
9519
  instance.asyncResolved = true;
9474
9520
  const { vnode: vnode2 } = instance;
9475
9521
  handleSetupResult(instance, asyncSetupResult, false);
@@ -9903,7 +9949,8 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
9903
9949
  el: vnode.el,
9904
9950
  anchor: vnode.anchor,
9905
9951
  ctx: vnode.ctx,
9906
- ce: vnode.ce
9952
+ ce: vnode.ce,
9953
+ cacheIndex: vnode.cacheIndex
9907
9954
  };
9908
9955
  if (transition && cloneTransition) {
9909
9956
  setTransitionHooks(
@@ -10395,7 +10442,7 @@ function isMemoSame(cached, memo) {
10395
10442
  return true;
10396
10443
  }
10397
10444
 
10398
- const version = "3.5.42";
10445
+ const version = "3.5.43";
10399
10446
  const warn$1 = NOOP;
10400
10447
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10401
10448
  const devtools = void 0;