vue 3.5.22 → 3.5.23

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 v3.5.22
2
+ * vue v3.5.23
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.22
2
+ * vue v3.5.23
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.22
2
+ * vue v3.5.23
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -4194,14 +4194,16 @@ Server rendered element contains more child nodes than client vdom.`
4194
4194
  if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) {
4195
4195
  clientText = clientText.slice(1);
4196
4196
  }
4197
- if (el.textContent !== clientText) {
4197
+ const { textContent } = el;
4198
+ if (textContent !== clientText && // innerHTML normalize \r\n or \r into a single \n in the DOM
4199
+ textContent !== clientText.replace(/\r\n|\r/g, "\n")) {
4198
4200
  if (!isMismatchAllowed(el, 0 /* TEXT */)) {
4199
4201
  warn$1(
4200
4202
  `Hydration text content mismatch on`,
4201
4203
  el,
4202
4204
  `
4203
- - rendered on server: ${el.textContent}
4204
- - expected on client: ${vnode.children}`
4205
+ - rendered on server: ${textContent}
4206
+ - expected on client: ${clientText}`
4205
4207
  );
4206
4208
  logMismatchError();
4207
4209
  }
@@ -4796,7 +4798,10 @@ function defineAsyncComponent(source) {
4796
4798
  error: error.value
4797
4799
  });
4798
4800
  } else if (loadingComponent && !delayed.value) {
4799
- return createVNode(loadingComponent);
4801
+ return createInnerComp(
4802
+ loadingComponent,
4803
+ instance
4804
+ );
4800
4805
  }
4801
4806
  };
4802
4807
  }
@@ -7097,15 +7102,25 @@ function baseCreateRenderer(options, createHydrationFns) {
7097
7102
  optimized
7098
7103
  );
7099
7104
  } else {
7100
- patchElement(
7101
- n1,
7102
- n2,
7103
- parentComponent,
7104
- parentSuspense,
7105
- namespace,
7106
- slotScopeIds,
7107
- optimized
7108
- );
7105
+ const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7106
+ try {
7107
+ if (customElement) {
7108
+ customElement._beginPatch();
7109
+ }
7110
+ patchElement(
7111
+ n1,
7112
+ n2,
7113
+ parentComponent,
7114
+ parentSuspense,
7115
+ namespace,
7116
+ slotScopeIds,
7117
+ optimized
7118
+ );
7119
+ } finally {
7120
+ if (customElement) {
7121
+ customElement._endPatch();
7122
+ }
7123
+ }
7109
7124
  }
7110
7125
  };
7111
7126
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
@@ -9347,7 +9362,8 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9347
9362
  pendingId,
9348
9363
  effects,
9349
9364
  parentComponent: parentComponent2,
9350
- container: container2
9365
+ container: container2,
9366
+ isInFallback
9351
9367
  } = suspense;
9352
9368
  let delayEnter = false;
9353
9369
  if (suspense.isHydrating) {
@@ -9364,6 +9380,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9364
9380
  0
9365
9381
  );
9366
9382
  queuePostFlushCb(effects);
9383
+ if (isInFallback && vnode2.ssFallback) {
9384
+ vnode2.ssFallback.el = null;
9385
+ }
9367
9386
  }
9368
9387
  };
9369
9388
  }
@@ -9372,6 +9391,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9372
9391
  anchor = next(activeBranch);
9373
9392
  }
9374
9393
  unmount(activeBranch, parentComponent2, suspense, true);
9394
+ if (!delayEnter && isInFallback && vnode2.ssFallback) {
9395
+ vnode2.ssFallback.el = null;
9396
+ }
9375
9397
  }
9376
9398
  if (!delayEnter) {
9377
9399
  move(pendingBranch, container2, anchor, 0);
@@ -9490,6 +9512,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9490
9512
  optimized2
9491
9513
  );
9492
9514
  if (placeholder) {
9515
+ vnode2.placeholder = null;
9493
9516
  remove(placeholder);
9494
9517
  }
9495
9518
  updateHOCHostEl(instance, vnode2.el);
@@ -10665,7 +10688,7 @@ function isMemoSame(cached, memo) {
10665
10688
  return true;
10666
10689
  }
10667
10690
 
10668
- const version = "3.5.22";
10691
+ const version = "3.5.23";
10669
10692
  const warn = warn$1 ;
10670
10693
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10671
10694
  const devtools = devtools$1 ;
@@ -11487,6 +11510,9 @@ function shouldSetAsProp(el, key, value, isSVG) {
11487
11510
  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
11488
11511
  return false;
11489
11512
  }
11513
+ if (key === "sandbox" && el.tagName === "IFRAME") {
11514
+ return false;
11515
+ }
11490
11516
  if (key === "form") {
11491
11517
  return false;
11492
11518
  }
@@ -11547,6 +11573,8 @@ class VueElement extends BaseClass {
11547
11573
  this._nonce = this._def.nonce;
11548
11574
  this._connected = false;
11549
11575
  this._resolved = false;
11576
+ this._patching = false;
11577
+ this._dirty = false;
11550
11578
  this._numberProps = null;
11551
11579
  this._styleChildren = /* @__PURE__ */ new WeakSet();
11552
11580
  this._ob = null;
@@ -11722,7 +11750,7 @@ class VueElement extends BaseClass {
11722
11750
  return this._getProp(key);
11723
11751
  },
11724
11752
  set(val) {
11725
- this._setProp(key, val, true, true);
11753
+ this._setProp(key, val, true, !this._patching);
11726
11754
  }
11727
11755
  });
11728
11756
  }
@@ -11748,6 +11776,7 @@ class VueElement extends BaseClass {
11748
11776
  */
11749
11777
  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
11750
11778
  if (val !== this._props[key]) {
11779
+ this._dirty = true;
11751
11780
  if (val === REMOVAL) {
11752
11781
  delete this._props[key];
11753
11782
  } else {
@@ -11902,10 +11931,14 @@ class VueElement extends BaseClass {
11902
11931
  if (this._teleportTargets) {
11903
11932
  roots.push(...this._teleportTargets);
11904
11933
  }
11905
- return roots.reduce((res, i) => {
11906
- res.push(...Array.from(i.querySelectorAll("slot")));
11907
- return res;
11908
- }, []);
11934
+ const slots = /* @__PURE__ */ new Set();
11935
+ for (const root of roots) {
11936
+ const found = root.querySelectorAll("slot");
11937
+ for (let i = 0; i < found.length; i++) {
11938
+ slots.add(found[i]);
11939
+ }
11940
+ }
11941
+ return Array.from(slots);
11909
11942
  }
11910
11943
  /**
11911
11944
  * @internal
@@ -11913,6 +11946,22 @@ class VueElement extends BaseClass {
11913
11946
  _injectChildStyle(comp) {
11914
11947
  this._applyStyles(comp.styles, comp);
11915
11948
  }
11949
+ /**
11950
+ * @internal
11951
+ */
11952
+ _beginPatch() {
11953
+ this._patching = true;
11954
+ this._dirty = false;
11955
+ }
11956
+ /**
11957
+ * @internal
11958
+ */
11959
+ _endPatch() {
11960
+ this._patching = false;
11961
+ if (this._dirty && this._instance) {
11962
+ this._update();
11963
+ }
11964
+ }
11916
11965
  /**
11917
11966
  * @internal
11918
11967
  */
@@ -12047,10 +12096,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
12047
12096
  instance
12048
12097
  )
12049
12098
  );
12050
- positionMap.set(
12051
- child,
12052
- child.el.getBoundingClientRect()
12053
- );
12099
+ positionMap.set(child, {
12100
+ left: child.el.offsetLeft,
12101
+ top: child.el.offsetTop
12102
+ });
12054
12103
  }
12055
12104
  }
12056
12105
  }
@@ -12081,7 +12130,10 @@ function callPendingCbs(c) {
12081
12130
  }
12082
12131
  }
12083
12132
  function recordPosition(c) {
12084
- newPositionMap.set(c, c.el.getBoundingClientRect());
12133
+ newPositionMap.set(c, {
12134
+ left: c.el.offsetLeft,
12135
+ top: c.el.offsetTop
12136
+ });
12085
12137
  }
12086
12138
  function applyTranslation(c) {
12087
12139
  const oldPos = positionMap.get(c);
@@ -12127,24 +12179,22 @@ function onCompositionEnd(e) {
12127
12179
  }
12128
12180
  }
12129
12181
  const assignKey = Symbol("_assign");
12182
+ function castValue(value, trim, number) {
12183
+ if (trim) value = value.trim();
12184
+ if (number) value = looseToNumber(value);
12185
+ return value;
12186
+ }
12130
12187
  const vModelText = {
12131
12188
  created(el, { modifiers: { lazy, trim, number } }, vnode) {
12132
12189
  el[assignKey] = getModelAssigner(vnode);
12133
12190
  const castToNumber = number || vnode.props && vnode.props.type === "number";
12134
12191
  addEventListener(el, lazy ? "change" : "input", (e) => {
12135
12192
  if (e.target.composing) return;
12136
- let domValue = el.value;
12137
- if (trim) {
12138
- domValue = domValue.trim();
12139
- }
12140
- if (castToNumber) {
12141
- domValue = looseToNumber(domValue);
12142
- }
12143
- el[assignKey](domValue);
12193
+ el[assignKey](castValue(el.value, trim, castToNumber));
12144
12194
  });
12145
- if (trim) {
12195
+ if (trim || castToNumber) {
12146
12196
  addEventListener(el, "change", () => {
12147
- el.value = el.value.trim();
12197
+ el.value = castValue(el.value, trim, castToNumber);
12148
12198
  });
12149
12199
  }
12150
12200
  if (!lazy) {
@@ -17604,7 +17654,8 @@ const transformMemo = (node, context) => {
17604
17654
  const transformVBindShorthand = (node, context) => {
17605
17655
  if (node.type === 1) {
17606
17656
  for (const prop of node.props) {
17607
- if (prop.type === 7 && prop.name === "bind" && !prop.exp) {
17657
+ if (prop.type === 7 && prop.name === "bind" && (!prop.exp || // #13930 :foo in in-DOM templates will be parsed into :foo="" by browser
17658
+ prop.exp.type === 4 && !prop.exp.content.trim()) && prop.arg) {
17608
17659
  const arg = prop.arg;
17609
17660
  if (arg.type !== 4 || !arg.isStatic) {
17610
17661
  context.onError(