@vue/runtime-dom 3.5.34 → 3.5.36

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.34
2
+ * @vue/runtime-dom v3.5.36
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -677,12 +677,37 @@ function createInvoker(initialValue, instance) {
677
677
  } else if (e._vts <= invoker.attached) {
678
678
  return;
679
679
  }
680
- runtimeCore.callWithAsyncErrorHandling(
681
- patchStopImmediatePropagation(e, invoker.value),
682
- instance,
683
- 5,
684
- [e]
685
- );
680
+ const value = invoker.value;
681
+ if (shared.isArray(value)) {
682
+ const originalStop = e.stopImmediatePropagation;
683
+ e.stopImmediatePropagation = () => {
684
+ originalStop.call(e);
685
+ e._stopped = true;
686
+ };
687
+ const handlers = value.slice();
688
+ const args = [e];
689
+ for (let i = 0; i < handlers.length; i++) {
690
+ if (e._stopped) {
691
+ break;
692
+ }
693
+ const handler = handlers[i];
694
+ if (handler) {
695
+ runtimeCore.callWithAsyncErrorHandling(
696
+ handler,
697
+ instance,
698
+ 5,
699
+ args
700
+ );
701
+ }
702
+ }
703
+ } else {
704
+ runtimeCore.callWithAsyncErrorHandling(
705
+ value,
706
+ instance,
707
+ 5,
708
+ [e]
709
+ );
710
+ }
686
711
  };
687
712
  invoker.value = initialValue;
688
713
  invoker.attached = getNow();
@@ -698,20 +723,6 @@ Expected function or array of functions, received type ${typeof value}.`
698
723
  );
699
724
  return shared.NOOP;
700
725
  }
701
- function patchStopImmediatePropagation(e, value) {
702
- if (shared.isArray(value)) {
703
- const originalStop = e.stopImmediatePropagation;
704
- e.stopImmediatePropagation = () => {
705
- originalStop.call(e);
706
- e._stopped = true;
707
- };
708
- return value.map(
709
- (fn) => (e2) => !e2._stopped && fn && fn(e2)
710
- );
711
- } else {
712
- return value;
713
- }
714
- }
715
726
 
716
727
  const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
717
728
  key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
@@ -1385,7 +1396,8 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1385
1396
  if (children) {
1386
1397
  for (let i = 0; i < children.length; i++) {
1387
1398
  const child = children[i];
1388
- if (child.el && child.el instanceof Element) {
1399
+ if (child.el && child.el instanceof Element && // Hidden v-show nodes have no previous layout box to animate from.
1400
+ !child.el[vShowHidden]) {
1389
1401
  prevChildren.push(child);
1390
1402
  runtimeCore.setTransitionHooks(
1391
1403
  child,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.34
2
+ * @vue/runtime-dom v3.5.36
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -659,31 +659,42 @@ function createInvoker(initialValue, instance) {
659
659
  } else if (e._vts <= invoker.attached) {
660
660
  return;
661
661
  }
662
- runtimeCore.callWithAsyncErrorHandling(
663
- patchStopImmediatePropagation(e, invoker.value),
664
- instance,
665
- 5,
666
- [e]
667
- );
662
+ const value = invoker.value;
663
+ if (shared.isArray(value)) {
664
+ const originalStop = e.stopImmediatePropagation;
665
+ e.stopImmediatePropagation = () => {
666
+ originalStop.call(e);
667
+ e._stopped = true;
668
+ };
669
+ const handlers = value.slice();
670
+ const args = [e];
671
+ for (let i = 0; i < handlers.length; i++) {
672
+ if (e._stopped) {
673
+ break;
674
+ }
675
+ const handler = handlers[i];
676
+ if (handler) {
677
+ runtimeCore.callWithAsyncErrorHandling(
678
+ handler,
679
+ instance,
680
+ 5,
681
+ args
682
+ );
683
+ }
684
+ }
685
+ } else {
686
+ runtimeCore.callWithAsyncErrorHandling(
687
+ value,
688
+ instance,
689
+ 5,
690
+ [e]
691
+ );
692
+ }
668
693
  };
669
694
  invoker.value = initialValue;
670
695
  invoker.attached = getNow();
671
696
  return invoker;
672
697
  }
673
- function patchStopImmediatePropagation(e, value) {
674
- if (shared.isArray(value)) {
675
- const originalStop = e.stopImmediatePropagation;
676
- e.stopImmediatePropagation = () => {
677
- originalStop.call(e);
678
- e._stopped = true;
679
- };
680
- return value.map(
681
- (fn) => (e2) => !e2._stopped && fn && fn(e2)
682
- );
683
- } else {
684
- return value;
685
- }
686
- }
687
698
 
688
699
  const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
689
700
  key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
@@ -1293,7 +1304,8 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1293
1304
  if (children) {
1294
1305
  for (let i = 0; i < children.length; i++) {
1295
1306
  const child = children[i];
1296
- if (child.el && child.el instanceof Element) {
1307
+ if (child.el && child.el instanceof Element && // Hidden v-show nodes have no previous layout box to animate from.
1308
+ !child.el[vShowHidden]) {
1297
1309
  prevChildren.push(child);
1298
1310
  runtimeCore.setTransitionHooks(
1299
1311
  child,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.34
2
+ * @vue/runtime-dom v3.5.36
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1672,9 +1672,6 @@ function targetTypeMap(rawType) {
1672
1672
  return 0 /* INVALID */;
1673
1673
  }
1674
1674
  }
1675
- function getTargetType(value) {
1676
- return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));
1677
- }
1678
1675
  // @__NO_SIDE_EFFECTS__
1679
1676
  function reactive(target) {
1680
1677
  if (/* @__PURE__ */ isReadonly(target)) {
@@ -1732,14 +1729,17 @@ function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandl
1732
1729
  if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
1733
1730
  return target;
1734
1731
  }
1735
- const targetType = getTargetType(target);
1736
- if (targetType === 0 /* INVALID */) {
1732
+ if (target["__v_skip"] || !Object.isExtensible(target)) {
1737
1733
  return target;
1738
1734
  }
1739
1735
  const existingProxy = proxyMap.get(target);
1740
1736
  if (existingProxy) {
1741
1737
  return existingProxy;
1742
1738
  }
1739
+ const targetType = targetTypeMap(toRawType(target));
1740
+ if (targetType === 0 /* INVALID */) {
1741
+ return target;
1742
+ }
1743
1743
  const proxy = new Proxy(
1744
1744
  target,
1745
1745
  targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
@@ -2167,8 +2167,9 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2167
2167
  if (once && cb) {
2168
2168
  const _cb = cb;
2169
2169
  cb = (...args) => {
2170
- _cb(...args);
2170
+ const res = _cb(...args);
2171
2171
  watchHandle();
2172
+ return res;
2172
2173
  };
2173
2174
  }
2174
2175
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -2178,7 +2179,7 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2178
2179
  }
2179
2180
  if (cb) {
2180
2181
  const newValue = effect.run();
2181
- if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2182
+ if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2182
2183
  if (cleanup) {
2183
2184
  cleanup();
2184
2185
  }
@@ -3422,19 +3423,18 @@ const TeleportImpl = {
3422
3423
  target,
3423
3424
  props
3424
3425
  } = vnode;
3425
- let shouldRemove = doRemove || !isTeleportDisabled(props);
3426
+ const shouldRemove = doRemove || !isTeleportDisabled(props);
3426
3427
  const pendingMount = pendingMounts.get(vnode);
3427
3428
  if (pendingMount) {
3428
3429
  pendingMount.flags |= 8;
3429
3430
  pendingMounts.delete(vnode);
3430
- shouldRemove = false;
3431
3431
  }
3432
3432
  if (target) {
3433
3433
  hostRemove(targetStart);
3434
3434
  hostRemove(targetAnchor);
3435
3435
  }
3436
3436
  doRemove && hostRemove(anchor);
3437
- if (shapeFlag & 16) {
3437
+ if (!pendingMount && shapeFlag & 16) {
3438
3438
  for (let i = 0; i < children.length; i++) {
3439
3439
  const child = children[i];
3440
3440
  unmount(
@@ -4402,20 +4402,16 @@ function createHydrationFunctions(rendererInternals) {
4402
4402
  slotScopeIds,
4403
4403
  optimized
4404
4404
  );
4405
- let hasWarned = false;
4406
- while (next) {
4407
- if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {
4408
- if (!hasWarned) {
4409
- warn$1(
4410
- `Hydration children mismatch on`,
4411
- el,
4412
- `
4405
+ if (next && !isMismatchAllowed(el, 1 /* CHILDREN */)) {
4406
+ warn$1(
4407
+ `Hydration children mismatch on`,
4408
+ el,
4409
+ `
4413
4410
  Server rendered element contains more child nodes than client vdom.`
4414
- );
4415
- hasWarned = true;
4416
- }
4417
- logMismatchError();
4418
- }
4411
+ );
4412
+ logMismatchError();
4413
+ }
4414
+ while (next) {
4419
4415
  const cur = next;
4420
4416
  next = next.nextSibling;
4421
4417
  remove(cur);
@@ -4478,7 +4474,7 @@ Server rendered element contains more child nodes than client vdom.`
4478
4474
  optimized = optimized || !!parentVNode.dynamicChildren;
4479
4475
  const children = parentVNode.children;
4480
4476
  const l = children.length;
4481
- let hasWarned = false;
4477
+ let hasCheckedMismatch = false;
4482
4478
  for (let i = 0; i < l; i++) {
4483
4479
  const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);
4484
4480
  const isText = vnode.type === Text;
@@ -4506,17 +4502,17 @@ Server rendered element contains more child nodes than client vdom.`
4506
4502
  } else if (isText && !vnode.children) {
4507
4503
  insert(vnode.el = createText(""), container);
4508
4504
  } else {
4509
- if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {
4510
- if (!hasWarned) {
4505
+ if (!hasCheckedMismatch) {
4506
+ hasCheckedMismatch = true;
4507
+ if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {
4511
4508
  warn$1(
4512
4509
  `Hydration children mismatch on`,
4513
4510
  container,
4514
4511
  `
4515
4512
  Server rendered element contains fewer child nodes than client vdom.`
4516
4513
  );
4517
- hasWarned = true;
4514
+ logMismatchError();
4518
4515
  }
4519
- logMismatchError();
4520
4516
  }
4521
4517
  patch(
4522
4518
  null,
@@ -4996,13 +4992,21 @@ function defineAsyncComponent(source) {
4996
4992
  const loaded = ref(false);
4997
4993
  const error = ref();
4998
4994
  const delayed = ref(!!delay);
4995
+ let timeoutTimer;
4996
+ let delayTimer;
4997
+ onUnmounted(() => {
4998
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
4999
+ if (delayTimer != null) clearTimeout(delayTimer);
5000
+ });
4999
5001
  if (delay) {
5000
- setTimeout(() => {
5002
+ delayTimer = setTimeout(() => {
5003
+ if (instance.isUnmounted) return;
5001
5004
  delayed.value = false;
5002
5005
  }, delay);
5003
5006
  }
5004
5007
  if (timeout != null) {
5005
- setTimeout(() => {
5008
+ timeoutTimer = setTimeout(() => {
5009
+ if (instance.isUnmounted) return;
5006
5010
  if (!loaded.value && !error.value) {
5007
5011
  const err = new Error(
5008
5012
  `Async component timed out after ${timeout}ms.`
@@ -5013,11 +5017,16 @@ function defineAsyncComponent(source) {
5013
5017
  }, timeout);
5014
5018
  }
5015
5019
  load().then(() => {
5020
+ if (instance.isUnmounted) return;
5016
5021
  loaded.value = true;
5017
5022
  if (instance.parent && isKeepAlive(instance.parent.vnode)) {
5018
5023
  instance.parent.update();
5019
5024
  }
5020
5025
  }).catch((err) => {
5026
+ if (instance.isUnmounted) {
5027
+ pendingRequest = null;
5028
+ return;
5029
+ }
5021
5030
  onError(err);
5022
5031
  error.value = err;
5023
5032
  });
@@ -6596,13 +6605,20 @@ function useModel(props, name, options = EMPTY_OBJ) {
6596
6605
  return;
6597
6606
  }
6598
6607
  const rawProps = i.vnode.props;
6599
- if (!(rawProps && // check if parent has passed v-model
6600
- (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {
6608
+ const hasVModel = !!(rawProps && // check if parent has passed v-model
6609
+ (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps));
6610
+ if (!hasVModel) {
6601
6611
  localValue = value;
6602
6612
  trigger();
6603
6613
  }
6604
6614
  i.emit(`update:${name}`, emittedValue);
6605
- if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {
6615
+ if (hasChanged(value, prevSetValue) && (hasChanged(value, emittedValue) && !hasChanged(emittedValue, prevEmittedValue) || // #13524: browsers differ in when they flush microtasks between
6616
+ // event listeners. If a v-model listener emits an intermediate value
6617
+ // and a following listener restores the model to its previous prop
6618
+ // value before parent updates are flushed, the parent render can be
6619
+ // deduped as having no prop change. Force a local update so DOM state
6620
+ // such as an input's value is synchronized back to the current model.
6621
+ hasVModel && prevSetValue !== EMPTY_OBJ && !hasChanged(emittedValue, localValue))) {
6606
6622
  trigger();
6607
6623
  }
6608
6624
  prevSetValue = value;
@@ -8798,9 +8814,13 @@ function baseCreateRenderer(options, createHydrationFns) {
8798
8814
  const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
8799
8815
  if (needTransition2) {
8800
8816
  if (moveType === 0) {
8801
- transition.beforeEnter(el);
8802
- hostInsert(el, container, anchor);
8803
- queuePostRenderEffect(() => transition.enter(el), parentSuspense);
8817
+ if (transition.persisted && !el[leaveCbKey]) {
8818
+ hostInsert(el, container, anchor);
8819
+ } else {
8820
+ transition.beforeEnter(el);
8821
+ hostInsert(el, container, anchor);
8822
+ queuePostRenderEffect(() => transition.enter(el), parentSuspense);
8823
+ }
8804
8824
  } else {
8805
8825
  const { leave, delayLeave, afterLeave } = transition;
8806
8826
  const remove2 = () => {
@@ -8811,16 +8831,21 @@ function baseCreateRenderer(options, createHydrationFns) {
8811
8831
  }
8812
8832
  };
8813
8833
  const performLeave = () => {
8834
+ const wasLeaving = el._isLeaving || !!el[leaveCbKey];
8814
8835
  if (el._isLeaving) {
8815
8836
  el[leaveCbKey](
8816
8837
  true
8817
8838
  /* cancelled */
8818
8839
  );
8819
8840
  }
8820
- leave(el, () => {
8841
+ if (transition.persisted && !wasLeaving) {
8821
8842
  remove2();
8822
- afterLeave && afterLeave();
8823
- });
8843
+ } else {
8844
+ leave(el, () => {
8845
+ remove2();
8846
+ afterLeave && afterLeave();
8847
+ });
8848
+ }
8824
8849
  };
8825
8850
  if (delayLeave) {
8826
8851
  delayLeave(el, remove2, performLeave);
@@ -10827,7 +10852,7 @@ function isMemoSame(cached, memo) {
10827
10852
  return true;
10828
10853
  }
10829
10854
 
10830
- const version = "3.5.34";
10855
+ const version = "3.5.36";
10831
10856
  const warn = warn$1 ;
10832
10857
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10833
10858
  const devtools = devtools$1 ;
@@ -11584,12 +11609,37 @@ function createInvoker(initialValue, instance) {
11584
11609
  } else if (e._vts <= invoker.attached) {
11585
11610
  return;
11586
11611
  }
11587
- callWithAsyncErrorHandling(
11588
- patchStopImmediatePropagation(e, invoker.value),
11589
- instance,
11590
- 5,
11591
- [e]
11592
- );
11612
+ const value = invoker.value;
11613
+ if (isArray(value)) {
11614
+ const originalStop = e.stopImmediatePropagation;
11615
+ e.stopImmediatePropagation = () => {
11616
+ originalStop.call(e);
11617
+ e._stopped = true;
11618
+ };
11619
+ const handlers = value.slice();
11620
+ const args = [e];
11621
+ for (let i = 0; i < handlers.length; i++) {
11622
+ if (e._stopped) {
11623
+ break;
11624
+ }
11625
+ const handler = handlers[i];
11626
+ if (handler) {
11627
+ callWithAsyncErrorHandling(
11628
+ handler,
11629
+ instance,
11630
+ 5,
11631
+ args
11632
+ );
11633
+ }
11634
+ }
11635
+ } else {
11636
+ callWithAsyncErrorHandling(
11637
+ value,
11638
+ instance,
11639
+ 5,
11640
+ [e]
11641
+ );
11642
+ }
11593
11643
  };
11594
11644
  invoker.value = initialValue;
11595
11645
  invoker.attached = getNow();
@@ -11605,20 +11655,6 @@ Expected function or array of functions, received type ${typeof value}.`
11605
11655
  );
11606
11656
  return NOOP;
11607
11657
  }
11608
- function patchStopImmediatePropagation(e, value) {
11609
- if (isArray(value)) {
11610
- const originalStop = e.stopImmediatePropagation;
11611
- e.stopImmediatePropagation = () => {
11612
- originalStop.call(e);
11613
- e._stopped = true;
11614
- };
11615
- return value.map(
11616
- (fn) => (e2) => !e2._stopped && fn && fn(e2)
11617
- );
11618
- } else {
11619
- return value;
11620
- }
11621
- }
11622
11658
 
11623
11659
  const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
11624
11660
  key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
@@ -12292,7 +12328,8 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
12292
12328
  if (children) {
12293
12329
  for (let i = 0; i < children.length; i++) {
12294
12330
  const child = children[i];
12295
- if (child.el && child.el instanceof Element) {
12331
+ if (child.el && child.el instanceof Element && // Hidden v-show nodes have no previous layout box to animate from.
12332
+ !child.el[vShowHidden]) {
12296
12333
  prevChildren.push(child);
12297
12334
  setTransitionHooks(
12298
12335
  child,