vue 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 v3.5.34
2
+ * vue v3.5.36
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.34
2
+ * vue v3.5.36
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1748,9 +1748,6 @@ var Vue = (function (exports) {
1748
1748
  return 0 /* INVALID */;
1749
1749
  }
1750
1750
  }
1751
- function getTargetType(value) {
1752
- return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));
1753
- }
1754
1751
  // @__NO_SIDE_EFFECTS__
1755
1752
  function reactive(target) {
1756
1753
  if (/* @__PURE__ */ isReadonly(target)) {
@@ -1808,14 +1805,17 @@ var Vue = (function (exports) {
1808
1805
  if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
1809
1806
  return target;
1810
1807
  }
1811
- const targetType = getTargetType(target);
1812
- if (targetType === 0 /* INVALID */) {
1808
+ if (target["__v_skip"] || !Object.isExtensible(target)) {
1813
1809
  return target;
1814
1810
  }
1815
1811
  const existingProxy = proxyMap.get(target);
1816
1812
  if (existingProxy) {
1817
1813
  return existingProxy;
1818
1814
  }
1815
+ const targetType = targetTypeMap(toRawType(target));
1816
+ if (targetType === 0 /* INVALID */) {
1817
+ return target;
1818
+ }
1819
1819
  const proxy = new Proxy(
1820
1820
  target,
1821
1821
  targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
@@ -2243,8 +2243,9 @@ var Vue = (function (exports) {
2243
2243
  if (once && cb) {
2244
2244
  const _cb = cb;
2245
2245
  cb = (...args) => {
2246
- _cb(...args);
2246
+ const res = _cb(...args);
2247
2247
  watchHandle();
2248
+ return res;
2248
2249
  };
2249
2250
  }
2250
2251
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -2254,7 +2255,7 @@ var Vue = (function (exports) {
2254
2255
  }
2255
2256
  if (cb) {
2256
2257
  const newValue = effect.run();
2257
- if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2258
+ if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2258
2259
  if (cleanup) {
2259
2260
  cleanup();
2260
2261
  }
@@ -3470,19 +3471,18 @@ var Vue = (function (exports) {
3470
3471
  target,
3471
3472
  props
3472
3473
  } = vnode;
3473
- let shouldRemove = doRemove || !isTeleportDisabled(props);
3474
+ const shouldRemove = doRemove || !isTeleportDisabled(props);
3474
3475
  const pendingMount = pendingMounts.get(vnode);
3475
3476
  if (pendingMount) {
3476
3477
  pendingMount.flags |= 8;
3477
3478
  pendingMounts.delete(vnode);
3478
- shouldRemove = false;
3479
3479
  }
3480
3480
  if (target) {
3481
3481
  hostRemove(targetStart);
3482
3482
  hostRemove(targetAnchor);
3483
3483
  }
3484
3484
  doRemove && hostRemove(anchor);
3485
- if (shapeFlag & 16) {
3485
+ if (!pendingMount && shapeFlag & 16) {
3486
3486
  for (let i = 0; i < children.length; i++) {
3487
3487
  const child = children[i];
3488
3488
  unmount(
@@ -4450,20 +4450,16 @@ var Vue = (function (exports) {
4450
4450
  slotScopeIds,
4451
4451
  optimized
4452
4452
  );
4453
- let hasWarned = false;
4454
- while (next) {
4455
- if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {
4456
- if (!hasWarned) {
4457
- warn$1(
4458
- `Hydration children mismatch on`,
4459
- el,
4460
- `
4453
+ if (next && !isMismatchAllowed(el, 1 /* CHILDREN */)) {
4454
+ warn$1(
4455
+ `Hydration children mismatch on`,
4456
+ el,
4457
+ `
4461
4458
  Server rendered element contains more child nodes than client vdom.`
4462
- );
4463
- hasWarned = true;
4464
- }
4465
- logMismatchError();
4466
- }
4459
+ );
4460
+ logMismatchError();
4461
+ }
4462
+ while (next) {
4467
4463
  const cur = next;
4468
4464
  next = next.nextSibling;
4469
4465
  remove(cur);
@@ -4526,7 +4522,7 @@ Server rendered element contains more child nodes than client vdom.`
4526
4522
  optimized = optimized || !!parentVNode.dynamicChildren;
4527
4523
  const children = parentVNode.children;
4528
4524
  const l = children.length;
4529
- let hasWarned = false;
4525
+ let hasCheckedMismatch = false;
4530
4526
  for (let i = 0; i < l; i++) {
4531
4527
  const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);
4532
4528
  const isText = vnode.type === Text;
@@ -4554,17 +4550,17 @@ Server rendered element contains more child nodes than client vdom.`
4554
4550
  } else if (isText && !vnode.children) {
4555
4551
  insert(vnode.el = createText(""), container);
4556
4552
  } else {
4557
- if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {
4558
- if (!hasWarned) {
4553
+ if (!hasCheckedMismatch) {
4554
+ hasCheckedMismatch = true;
4555
+ if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {
4559
4556
  warn$1(
4560
4557
  `Hydration children mismatch on`,
4561
4558
  container,
4562
4559
  `
4563
4560
  Server rendered element contains fewer child nodes than client vdom.`
4564
4561
  );
4565
- hasWarned = true;
4562
+ logMismatchError();
4566
4563
  }
4567
- logMismatchError();
4568
4564
  }
4569
4565
  patch(
4570
4566
  null,
@@ -5044,13 +5040,21 @@ Server rendered element contains fewer child nodes than client vdom.`
5044
5040
  const loaded = ref(false);
5045
5041
  const error = ref();
5046
5042
  const delayed = ref(!!delay);
5043
+ let timeoutTimer;
5044
+ let delayTimer;
5045
+ onUnmounted(() => {
5046
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
5047
+ if (delayTimer != null) clearTimeout(delayTimer);
5048
+ });
5047
5049
  if (delay) {
5048
- setTimeout(() => {
5050
+ delayTimer = setTimeout(() => {
5051
+ if (instance.isUnmounted) return;
5049
5052
  delayed.value = false;
5050
5053
  }, delay);
5051
5054
  }
5052
5055
  if (timeout != null) {
5053
- setTimeout(() => {
5056
+ timeoutTimer = setTimeout(() => {
5057
+ if (instance.isUnmounted) return;
5054
5058
  if (!loaded.value && !error.value) {
5055
5059
  const err = new Error(
5056
5060
  `Async component timed out after ${timeout}ms.`
@@ -5061,11 +5065,16 @@ Server rendered element contains fewer child nodes than client vdom.`
5061
5065
  }, timeout);
5062
5066
  }
5063
5067
  load().then(() => {
5068
+ if (instance.isUnmounted) return;
5064
5069
  loaded.value = true;
5065
5070
  if (instance.parent && isKeepAlive(instance.parent.vnode)) {
5066
5071
  instance.parent.update();
5067
5072
  }
5068
5073
  }).catch((err) => {
5074
+ if (instance.isUnmounted) {
5075
+ pendingRequest = null;
5076
+ return;
5077
+ }
5069
5078
  onError(err);
5070
5079
  error.value = err;
5071
5080
  });
@@ -6635,13 +6644,20 @@ If you want to remount the same app, move your app creation logic into a factory
6635
6644
  return;
6636
6645
  }
6637
6646
  const rawProps = i.vnode.props;
6638
- if (!(rawProps && // check if parent has passed v-model
6639
- (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {
6647
+ const hasVModel = !!(rawProps && // check if parent has passed v-model
6648
+ (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps));
6649
+ if (!hasVModel) {
6640
6650
  localValue = value;
6641
6651
  trigger();
6642
6652
  }
6643
6653
  i.emit(`update:${name}`, emittedValue);
6644
- if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {
6654
+ if (hasChanged(value, prevSetValue) && (hasChanged(value, emittedValue) && !hasChanged(emittedValue, prevEmittedValue) || // #13524: browsers differ in when they flush microtasks between
6655
+ // event listeners. If a v-model listener emits an intermediate value
6656
+ // and a following listener restores the model to its previous prop
6657
+ // value before parent updates are flushed, the parent render can be
6658
+ // deduped as having no prop change. Force a local update so DOM state
6659
+ // such as an input's value is synchronized back to the current model.
6660
+ hasVModel && prevSetValue !== EMPTY_OBJ && !hasChanged(emittedValue, localValue))) {
6645
6661
  trigger();
6646
6662
  }
6647
6663
  prevSetValue = value;
@@ -8837,9 +8853,13 @@ If you want to remount the same app, move your app creation logic into a factory
8837
8853
  const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
8838
8854
  if (needTransition2) {
8839
8855
  if (moveType === 0) {
8840
- transition.beforeEnter(el);
8841
- hostInsert(el, container, anchor);
8842
- queuePostRenderEffect(() => transition.enter(el), parentSuspense);
8856
+ if (transition.persisted && !el[leaveCbKey]) {
8857
+ hostInsert(el, container, anchor);
8858
+ } else {
8859
+ transition.beforeEnter(el);
8860
+ hostInsert(el, container, anchor);
8861
+ queuePostRenderEffect(() => transition.enter(el), parentSuspense);
8862
+ }
8843
8863
  } else {
8844
8864
  const { leave, delayLeave, afterLeave } = transition;
8845
8865
  const remove2 = () => {
@@ -8850,16 +8870,21 @@ If you want to remount the same app, move your app creation logic into a factory
8850
8870
  }
8851
8871
  };
8852
8872
  const performLeave = () => {
8873
+ const wasLeaving = el._isLeaving || !!el[leaveCbKey];
8853
8874
  if (el._isLeaving) {
8854
8875
  el[leaveCbKey](
8855
8876
  true
8856
8877
  /* cancelled */
8857
8878
  );
8858
8879
  }
8859
- leave(el, () => {
8880
+ if (transition.persisted && !wasLeaving) {
8860
8881
  remove2();
8861
- afterLeave && afterLeave();
8862
- });
8882
+ } else {
8883
+ leave(el, () => {
8884
+ remove2();
8885
+ afterLeave && afterLeave();
8886
+ });
8887
+ }
8863
8888
  };
8864
8889
  if (delayLeave) {
8865
8890
  delayLeave(el, remove2, performLeave);
@@ -10852,7 +10877,7 @@ Component that was made reactive: `,
10852
10877
  return true;
10853
10878
  }
10854
10879
 
10855
- const version = "3.5.34";
10880
+ const version = "3.5.36";
10856
10881
  const warn = warn$1 ;
10857
10882
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10858
10883
  const devtools = devtools$1 ;
@@ -11590,12 +11615,37 @@ Component that was made reactive: `,
11590
11615
  } else if (e._vts <= invoker.attached) {
11591
11616
  return;
11592
11617
  }
11593
- callWithAsyncErrorHandling(
11594
- patchStopImmediatePropagation(e, invoker.value),
11595
- instance,
11596
- 5,
11597
- [e]
11598
- );
11618
+ const value = invoker.value;
11619
+ if (isArray(value)) {
11620
+ const originalStop = e.stopImmediatePropagation;
11621
+ e.stopImmediatePropagation = () => {
11622
+ originalStop.call(e);
11623
+ e._stopped = true;
11624
+ };
11625
+ const handlers = value.slice();
11626
+ const args = [e];
11627
+ for (let i = 0; i < handlers.length; i++) {
11628
+ if (e._stopped) {
11629
+ break;
11630
+ }
11631
+ const handler = handlers[i];
11632
+ if (handler) {
11633
+ callWithAsyncErrorHandling(
11634
+ handler,
11635
+ instance,
11636
+ 5,
11637
+ args
11638
+ );
11639
+ }
11640
+ }
11641
+ } else {
11642
+ callWithAsyncErrorHandling(
11643
+ value,
11644
+ instance,
11645
+ 5,
11646
+ [e]
11647
+ );
11648
+ }
11599
11649
  };
11600
11650
  invoker.value = initialValue;
11601
11651
  invoker.attached = getNow();
@@ -11611,20 +11661,6 @@ Expected function or array of functions, received type ${typeof value}.`
11611
11661
  );
11612
11662
  return NOOP;
11613
11663
  }
11614
- function patchStopImmediatePropagation(e, value) {
11615
- if (isArray(value)) {
11616
- const originalStop = e.stopImmediatePropagation;
11617
- e.stopImmediatePropagation = () => {
11618
- originalStop.call(e);
11619
- e._stopped = true;
11620
- };
11621
- return value.map(
11622
- (fn) => (e2) => !e2._stopped && fn && fn(e2)
11623
- );
11624
- } else {
11625
- return value;
11626
- }
11627
- }
11628
11664
 
11629
11665
  const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
11630
11666
  key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
@@ -12286,7 +12322,8 @@ Expected function or array of functions, received type ${typeof value}.`
12286
12322
  if (children) {
12287
12323
  for (let i = 0; i < children.length; i++) {
12288
12324
  const child = children[i];
12289
- if (child.el && child.el instanceof Element) {
12325
+ if (child.el && child.el instanceof Element && // Hidden v-show nodes have no previous layout box to animate from.
12326
+ !child.el[vShowHidden]) {
12290
12327
  prevChildren.push(child);
12291
12328
  setTransitionHooks(
12292
12329
  child,
@@ -14525,7 +14562,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
14525
14562
  }
14526
14563
  },
14527
14564
  oncdata(start, end) {
14528
- if (stack[0].ns !== 0) {
14565
+ if ((stack[0] ? stack[0].ns : currentOptions.ns) !== 0) {
14529
14566
  onText(getSlice(start, end), start, end);
14530
14567
  } else {
14531
14568
  emitError(1, start - 9);
@@ -15225,6 +15262,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15225
15262
  imports: [],
15226
15263
  cached: [],
15227
15264
  constantCache: /* @__PURE__ */ new WeakMap(),
15265
+ vForMemoKeyedNodes: /* @__PURE__ */ new WeakSet(),
15228
15266
  temps: 0,
15229
15267
  identifiers: /* @__PURE__ */ Object.create(null),
15230
15268
  scopes: {
@@ -16076,7 +16114,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
16076
16114
  const exp = dir.exp;
16077
16115
  const arg = dir.arg;
16078
16116
  if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor)
16079
- !(memo && arg && arg.type === 4 && arg.content === "key")) {
16117
+ !(memo && context.vForMemoKeyedNodes.has(node) && arg && arg.type === 4 && arg.content === "key")) {
16080
16118
  dir.exp = processExpression(
16081
16119
  exp,
16082
16120
  context,
@@ -16330,7 +16368,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
16330
16368
  const keyProp = findProp(node, `key`, false, true);
16331
16369
  keyProp && keyProp.type === 7;
16332
16370
  let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp);
16333
- const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null;
16371
+ const keyProperty = keyExp ? createObjectProperty(`key`, keyExp) : null;
16334
16372
  const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
16335
16373
  const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
16336
16374
  forNode.codegenNode = createVNodeCall(