vue 3.5.38 → 3.5.39

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 v3.5.38
2
+ * vue v3.5.39
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vue v3.5.38
2
+ * vue v3.5.39
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1447,7 +1447,7 @@ var Vue = (function (exports) {
1447
1447
  value,
1448
1448
  isRef(target) ? target : receiver
1449
1449
  );
1450
- if (target === toRaw(receiver)) {
1450
+ if (target === toRaw(receiver) && result) {
1451
1451
  if (!hadKey) {
1452
1452
  trigger(target, "add", key, value);
1453
1453
  } else if (hasChanged(value, oldValue)) {
@@ -3429,11 +3429,9 @@ var Vue = (function (exports) {
3429
3429
  }
3430
3430
  } else {
3431
3431
  if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
3432
- const nextTarget = n2.target = resolveTarget(
3433
- n2.props,
3434
- querySelector
3435
- );
3432
+ const nextTarget = resolveTarget(n2.props, querySelector);
3436
3433
  if (nextTarget) {
3434
+ n2.target = nextTarget;
3437
3435
  moveTeleport(
3438
3436
  n2,
3439
3437
  nextTarget,
@@ -3471,7 +3469,8 @@ var Vue = (function (exports) {
3471
3469
  target,
3472
3470
  props
3473
3471
  } = vnode;
3474
- const shouldRemove = doRemove || !isTeleportDisabled(props);
3472
+ const disabled = isTeleportDisabled(props);
3473
+ const shouldRemove = doRemove || !disabled;
3475
3474
  const pendingMount = pendingMounts.get(vnode);
3476
3475
  if (pendingMount) {
3477
3476
  pendingMount.flags |= 8;
@@ -3482,7 +3481,7 @@ var Vue = (function (exports) {
3482
3481
  hostRemove(targetAnchor);
3483
3482
  }
3484
3483
  doRemove && hostRemove(anchor);
3485
- if (!pendingMount && shapeFlag & 16) {
3484
+ if (!pendingMount && (disabled || target) && shapeFlag & 16) {
3486
3485
  for (let i = 0; i < children.length; i++) {
3487
3486
  const child = children[i];
3488
3487
  unmount(
@@ -4125,7 +4124,12 @@ var Vue = (function (exports) {
4125
4124
  }
4126
4125
  }
4127
4126
  if (isFunction(ref)) {
4128
- callWithErrorHandling(ref, owner, 12, [value, refs]);
4127
+ pauseTracking();
4128
+ try {
4129
+ callWithErrorHandling(ref, owner, 12, [value, refs]);
4130
+ } finally {
4131
+ resetTracking();
4132
+ }
4129
4133
  } else {
4130
4134
  const _isString = isString(ref);
4131
4135
  const _isRef = isRef(ref);
@@ -4417,7 +4421,15 @@ var Vue = (function (exports) {
4417
4421
  };
4418
4422
  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
4419
4423
  optimized = optimized || !!vnode.dynamicChildren;
4420
- const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;
4424
+ const {
4425
+ type,
4426
+ dynamicProps,
4427
+ props,
4428
+ patchFlag,
4429
+ shapeFlag,
4430
+ dirs,
4431
+ transition
4432
+ } = vnode;
4421
4433
  const forcePatch = type === "input" || type === "option";
4422
4434
  {
4423
4435
  if (dirs) {
@@ -4495,7 +4507,7 @@ Server rendered element contains more child nodes than client vdom.`
4495
4507
  logMismatchError();
4496
4508
  }
4497
4509
  if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
4498
- key[0] === "." || isCustomElement && !isReservedProp(key)) {
4510
+ key[0] === "." || isCustomElement && !isReservedProp(key) || dynamicProps && dynamicProps.includes(key)) {
4499
4511
  patchProp(el, key, null, props[key], void 0, parentComponent);
4500
4512
  }
4501
4513
  }
@@ -4600,7 +4612,7 @@ Server rendered element contains fewer child nodes than client vdom.`
4600
4612
  }
4601
4613
  };
4602
4614
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
4603
- if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {
4615
+ if (!isNodeMismatchAllowed(node, vnode)) {
4604
4616
  warn$1(
4605
4617
  `Hydration node mismatch:
4606
4618
  - rendered on server:`,
@@ -4815,7 +4827,12 @@ Server rendered element contains fewer child nodes than client vdom.`
4815
4827
  el = el.parentElement;
4816
4828
  }
4817
4829
  }
4818
- const allowedAttr = el && el.getAttribute(allowMismatchAttr);
4830
+ return isMismatchAllowedByAttr(
4831
+ el && el.getAttribute(allowMismatchAttr),
4832
+ allowedType
4833
+ );
4834
+ }
4835
+ function isMismatchAllowedByAttr(allowedAttr, allowedType) {
4819
4836
  if (allowedAttr == null) {
4820
4837
  return false;
4821
4838
  } else if (allowedAttr === "") {
@@ -4828,6 +4845,19 @@ Server rendered element contains fewer child nodes than client vdom.`
4828
4845
  return list.includes(MismatchTypeString[allowedType]);
4829
4846
  }
4830
4847
  }
4848
+ function isNodeMismatchAllowed(node, vnode) {
4849
+ return isMismatchAllowed(node.parentElement, 1 /* CHILDREN */) || isMismatchAllowedByNode(node) || isMismatchAllowedByVNode(vnode);
4850
+ }
4851
+ function isMismatchAllowedByNode(node) {
4852
+ return node.nodeType === 1 && isMismatchAllowedByAttr(
4853
+ node.getAttribute(allowMismatchAttr),
4854
+ 1 /* CHILDREN */
4855
+ );
4856
+ }
4857
+ function isMismatchAllowedByVNode({ props }) {
4858
+ const allowedAttr = props && props[allowMismatchAttr];
4859
+ return typeof allowedAttr === "string" && isMismatchAllowedByAttr(allowedAttr, 1 /* CHILDREN */);
4860
+ }
4831
4861
 
4832
4862
  const requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));
4833
4863
  const cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));
@@ -6816,7 +6846,8 @@ If you want to remount the same app, move your app creation logic into a factory
6816
6846
  if (!options || !isOn(key)) {
6817
6847
  return false;
6818
6848
  }
6819
- key = key.slice(2).replace(/Once$/, "");
6849
+ key = key.slice(2);
6850
+ key = key === "Once" ? key : key.replace(/Once$/, "");
6820
6851
  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
6821
6852
  }
6822
6853
 
@@ -8040,7 +8071,12 @@ If you want to remount the same app, move your app creation logic into a factory
8040
8071
  invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
8041
8072
  }
8042
8073
  parentComponent && toggleRecurse(parentComponent, true);
8043
- if (isHmrUpdating) {
8074
+ if (
8075
+ // HMR updated, force full diff
8076
+ isHmrUpdating || // #6385 the old vnode may be a user-wrapped non-isomorphic block
8077
+ // Force full diff when block metadata is unstable.
8078
+ dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)
8079
+ ) {
8044
8080
  patchFlag = 0;
8045
8081
  optimized = false;
8046
8082
  dynamicChildren = null;
@@ -10173,6 +10209,10 @@ Component that was made reactive: `,
10173
10209
  }
10174
10210
  }
10175
10211
  } else if (isFunction(children)) {
10212
+ if (shapeFlag & (1 | 64)) {
10213
+ normalizeChildren(vnode, { default: children });
10214
+ return;
10215
+ }
10176
10216
  children = { default: children, _ctx: currentRenderingInstance };
10177
10217
  type = 32;
10178
10218
  } else {
@@ -10877,7 +10917,7 @@ Component that was made reactive: `,
10877
10917
  return true;
10878
10918
  }
10879
10919
 
10880
- const version = "3.5.38";
10920
+ const version = "3.5.39";
10881
10921
  const warn = warn$1 ;
10882
10922
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10883
10923
  const devtools = devtools$1 ;
@@ -11591,16 +11631,15 @@ Component that was made reactive: `,
11591
11631
  }
11592
11632
  }
11593
11633
  }
11594
- const optionsModifierRE = /(?:Once|Passive|Capture)$/;
11634
+ const optionsModifierRE = /(Once|Passive|Capture)$/;
11635
+ const optionsModifierEventRE = /^on:?(?:Once|Passive|Capture)$/;
11595
11636
  function parseName(name) {
11596
11637
  let options;
11597
- if (optionsModifierRE.test(name)) {
11598
- options = {};
11599
- let m;
11600
- while (m = name.match(optionsModifierRE)) {
11601
- name = name.slice(0, name.length - m[0].length);
11602
- options[m[0].toLowerCase()] = true;
11603
- }
11638
+ let m;
11639
+ while ((m = name.match(optionsModifierRE)) && !optionsModifierEventRE.test(name)) {
11640
+ if (!options) options = {};
11641
+ name = name.slice(0, name.length - m[1].length);
11642
+ options[m[1].toLowerCase()] = true;
11604
11643
  }
11605
11644
  const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
11606
11645
  return [event, options];