@vue/runtime-dom 3.5.22 → 3.5.24

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.22
2
+ * @vue/runtime-dom v3.5.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -742,6 +742,9 @@ function shouldSetAsProp(el, key, value, isSVG) {
742
742
  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
743
743
  return false;
744
744
  }
745
+ if (key === "sandbox" && el.tagName === "IFRAME") {
746
+ return false;
747
+ }
745
748
  if (key === "form") {
746
749
  return false;
747
750
  }
@@ -802,6 +805,8 @@ class VueElement extends BaseClass {
802
805
  this._nonce = this._def.nonce;
803
806
  this._connected = false;
804
807
  this._resolved = false;
808
+ this._patching = false;
809
+ this._dirty = false;
805
810
  this._numberProps = null;
806
811
  this._styleChildren = /* @__PURE__ */ new WeakSet();
807
812
  this._ob = null;
@@ -977,7 +982,7 @@ class VueElement extends BaseClass {
977
982
  return this._getProp(key);
978
983
  },
979
984
  set(val) {
980
- this._setProp(key, val, true, true);
985
+ this._setProp(key, val, true, !this._patching);
981
986
  }
982
987
  });
983
988
  }
@@ -1003,6 +1008,7 @@ class VueElement extends BaseClass {
1003
1008
  */
1004
1009
  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
1005
1010
  if (val !== this._props[key]) {
1011
+ this._dirty = true;
1006
1012
  if (val === REMOVAL) {
1007
1013
  delete this._props[key];
1008
1014
  } else {
@@ -1157,10 +1163,14 @@ class VueElement extends BaseClass {
1157
1163
  if (this._teleportTargets) {
1158
1164
  roots.push(...this._teleportTargets);
1159
1165
  }
1160
- return roots.reduce((res, i) => {
1161
- res.push(...Array.from(i.querySelectorAll("slot")));
1162
- return res;
1163
- }, []);
1166
+ const slots = /* @__PURE__ */ new Set();
1167
+ for (const root of roots) {
1168
+ const found = root.querySelectorAll("slot");
1169
+ for (let i = 0; i < found.length; i++) {
1170
+ slots.add(found[i]);
1171
+ }
1172
+ }
1173
+ return Array.from(slots);
1164
1174
  }
1165
1175
  /**
1166
1176
  * @internal
@@ -1168,6 +1178,22 @@ class VueElement extends BaseClass {
1168
1178
  _injectChildStyle(comp) {
1169
1179
  this._applyStyles(comp.styles, comp);
1170
1180
  }
1181
+ /**
1182
+ * @internal
1183
+ */
1184
+ _beginPatch() {
1185
+ this._patching = true;
1186
+ this._dirty = false;
1187
+ }
1188
+ /**
1189
+ * @internal
1190
+ */
1191
+ _endPatch() {
1192
+ this._patching = false;
1193
+ if (this._dirty && this._instance) {
1194
+ this._update();
1195
+ }
1196
+ }
1171
1197
  /**
1172
1198
  * @internal
1173
1199
  */
@@ -1302,10 +1328,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1302
1328
  instance
1303
1329
  )
1304
1330
  );
1305
- positionMap.set(
1306
- child,
1307
- child.el.getBoundingClientRect()
1308
- );
1331
+ positionMap.set(child, {
1332
+ left: child.el.offsetLeft,
1333
+ top: child.el.offsetTop
1334
+ });
1309
1335
  }
1310
1336
  }
1311
1337
  }
@@ -1336,7 +1362,10 @@ function callPendingCbs(c) {
1336
1362
  }
1337
1363
  }
1338
1364
  function recordPosition(c) {
1339
- newPositionMap.set(c, c.el.getBoundingClientRect());
1365
+ newPositionMap.set(c, {
1366
+ left: c.el.offsetLeft,
1367
+ top: c.el.offsetTop
1368
+ });
1340
1369
  }
1341
1370
  function applyTranslation(c) {
1342
1371
  const oldPos = positionMap.get(c);
@@ -1382,24 +1411,22 @@ function onCompositionEnd(e) {
1382
1411
  }
1383
1412
  }
1384
1413
  const assignKey = Symbol("_assign");
1414
+ function castValue(value, trim, number) {
1415
+ if (trim) value = value.trim();
1416
+ if (number) value = shared.looseToNumber(value);
1417
+ return value;
1418
+ }
1385
1419
  const vModelText = {
1386
1420
  created(el, { modifiers: { lazy, trim, number } }, vnode) {
1387
1421
  el[assignKey] = getModelAssigner(vnode);
1388
1422
  const castToNumber = number || vnode.props && vnode.props.type === "number";
1389
1423
  addEventListener(el, lazy ? "change" : "input", (e) => {
1390
1424
  if (e.target.composing) return;
1391
- let domValue = el.value;
1392
- if (trim) {
1393
- domValue = domValue.trim();
1394
- }
1395
- if (castToNumber) {
1396
- domValue = shared.looseToNumber(domValue);
1397
- }
1398
- el[assignKey](domValue);
1425
+ el[assignKey](castValue(el.value, trim, castToNumber));
1399
1426
  });
1400
- if (trim) {
1427
+ if (trim || castToNumber) {
1401
1428
  addEventListener(el, "change", () => {
1402
- el.value = el.value.trim();
1429
+ el.value = castValue(el.value, trim, castToNumber);
1403
1430
  });
1404
1431
  }
1405
1432
  if (!lazy) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.22
2
+ * @vue/runtime-dom v3.5.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -714,6 +714,9 @@ function shouldSetAsProp(el, key, value, isSVG) {
714
714
  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
715
715
  return false;
716
716
  }
717
+ if (key === "sandbox" && el.tagName === "IFRAME") {
718
+ return false;
719
+ }
717
720
  if (key === "form") {
718
721
  return false;
719
722
  }
@@ -774,6 +777,8 @@ class VueElement extends BaseClass {
774
777
  this._nonce = this._def.nonce;
775
778
  this._connected = false;
776
779
  this._resolved = false;
780
+ this._patching = false;
781
+ this._dirty = false;
777
782
  this._numberProps = null;
778
783
  this._styleChildren = /* @__PURE__ */ new WeakSet();
779
784
  this._ob = null;
@@ -935,7 +940,7 @@ class VueElement extends BaseClass {
935
940
  return this._getProp(key);
936
941
  },
937
942
  set(val) {
938
- this._setProp(key, val, true, true);
943
+ this._setProp(key, val, true, !this._patching);
939
944
  }
940
945
  });
941
946
  }
@@ -961,6 +966,7 @@ class VueElement extends BaseClass {
961
966
  */
962
967
  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
963
968
  if (val !== this._props[key]) {
969
+ this._dirty = true;
964
970
  if (val === REMOVAL) {
965
971
  delete this._props[key];
966
972
  } else {
@@ -1090,10 +1096,14 @@ class VueElement extends BaseClass {
1090
1096
  if (this._teleportTargets) {
1091
1097
  roots.push(...this._teleportTargets);
1092
1098
  }
1093
- return roots.reduce((res, i) => {
1094
- res.push(...Array.from(i.querySelectorAll("slot")));
1095
- return res;
1096
- }, []);
1099
+ const slots = /* @__PURE__ */ new Set();
1100
+ for (const root of roots) {
1101
+ const found = root.querySelectorAll("slot");
1102
+ for (let i = 0; i < found.length; i++) {
1103
+ slots.add(found[i]);
1104
+ }
1105
+ }
1106
+ return Array.from(slots);
1097
1107
  }
1098
1108
  /**
1099
1109
  * @internal
@@ -1101,6 +1111,22 @@ class VueElement extends BaseClass {
1101
1111
  _injectChildStyle(comp) {
1102
1112
  this._applyStyles(comp.styles, comp);
1103
1113
  }
1114
+ /**
1115
+ * @internal
1116
+ */
1117
+ _beginPatch() {
1118
+ this._patching = true;
1119
+ this._dirty = false;
1120
+ }
1121
+ /**
1122
+ * @internal
1123
+ */
1124
+ _endPatch() {
1125
+ this._patching = false;
1126
+ if (this._dirty && this._instance) {
1127
+ this._update();
1128
+ }
1129
+ }
1104
1130
  /**
1105
1131
  * @internal
1106
1132
  */
@@ -1212,10 +1238,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1212
1238
  instance
1213
1239
  )
1214
1240
  );
1215
- positionMap.set(
1216
- child,
1217
- child.el.getBoundingClientRect()
1218
- );
1241
+ positionMap.set(child, {
1242
+ left: child.el.offsetLeft,
1243
+ top: child.el.offsetTop
1244
+ });
1219
1245
  }
1220
1246
  }
1221
1247
  }
@@ -1244,7 +1270,10 @@ function callPendingCbs(c) {
1244
1270
  }
1245
1271
  }
1246
1272
  function recordPosition(c) {
1247
- newPositionMap.set(c, c.el.getBoundingClientRect());
1273
+ newPositionMap.set(c, {
1274
+ left: c.el.offsetLeft,
1275
+ top: c.el.offsetTop
1276
+ });
1248
1277
  }
1249
1278
  function applyTranslation(c) {
1250
1279
  const oldPos = positionMap.get(c);
@@ -1290,24 +1319,22 @@ function onCompositionEnd(e) {
1290
1319
  }
1291
1320
  }
1292
1321
  const assignKey = Symbol("_assign");
1322
+ function castValue(value, trim, number) {
1323
+ if (trim) value = value.trim();
1324
+ if (number) value = shared.looseToNumber(value);
1325
+ return value;
1326
+ }
1293
1327
  const vModelText = {
1294
1328
  created(el, { modifiers: { lazy, trim, number } }, vnode) {
1295
1329
  el[assignKey] = getModelAssigner(vnode);
1296
1330
  const castToNumber = number || vnode.props && vnode.props.type === "number";
1297
1331
  addEventListener(el, lazy ? "change" : "input", (e) => {
1298
1332
  if (e.target.composing) return;
1299
- let domValue = el.value;
1300
- if (trim) {
1301
- domValue = domValue.trim();
1302
- }
1303
- if (castToNumber) {
1304
- domValue = shared.looseToNumber(domValue);
1305
- }
1306
- el[assignKey](domValue);
1333
+ el[assignKey](castValue(el.value, trim, castToNumber));
1307
1334
  });
1308
- if (trim) {
1335
+ if (trim || castToNumber) {
1309
1336
  addEventListener(el, "change", () => {
1310
- el.value = el.value.trim();
1337
+ el.value = castValue(el.value, trim, castToNumber);
1311
1338
  });
1312
1339
  }
1313
1340
  if (!lazy) {
@@ -125,6 +125,8 @@ export declare class VueElement extends BaseClass implements ComponentCustomElem
125
125
  _isVueCE: boolean;
126
126
  private _connected;
127
127
  private _resolved;
128
+ private _patching;
129
+ private _dirty;
128
130
  private _numberProps;
129
131
  private _styleChildren;
130
132
  private _pendingResolve;
@@ -1364,12 +1366,12 @@ type EventHandlers<E> = {
1364
1366
  [K in keyof E]?: E[K] extends (...args: any) => any ? E[K] : (payload: E[K]) => void;
1365
1367
  };
1366
1368
 
1367
- export type ReservedProps = {
1369
+ export interface ReservedProps {
1368
1370
  key?: PropertyKey | undefined;
1369
1371
  ref?: VNodeRef | undefined;
1370
1372
  ref_for?: boolean | undefined;
1371
1373
  ref_key?: string | undefined;
1372
- };
1374
+ }
1373
1375
  export type NativeElements = {
1374
1376
  [K in keyof IntrinsicElementAttributes]: IntrinsicElementAttributes[K] & ReservedProps;
1375
1377
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.22
2
+ * @vue/runtime-dom v3.5.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -4121,14 +4121,16 @@ Server rendered element contains more child nodes than client vdom.`
4121
4121
  if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) {
4122
4122
  clientText = clientText.slice(1);
4123
4123
  }
4124
- if (el.textContent !== clientText) {
4124
+ const { textContent } = el;
4125
+ if (textContent !== clientText && // innerHTML normalize \r\n or \r into a single \n in the DOM
4126
+ textContent !== clientText.replace(/\r\n|\r/g, "\n")) {
4125
4127
  if (!isMismatchAllowed(el, 0 /* TEXT */)) {
4126
4128
  warn$1(
4127
4129
  `Hydration text content mismatch on`,
4128
4130
  el,
4129
4131
  `
4130
- - rendered on server: ${el.textContent}
4131
- - expected on client: ${vnode.children}`
4132
+ - rendered on server: ${textContent}
4133
+ - expected on client: ${clientText}`
4132
4134
  );
4133
4135
  logMismatchError();
4134
4136
  }
@@ -4723,7 +4725,10 @@ function defineAsyncComponent(source) {
4723
4725
  error: error.value
4724
4726
  });
4725
4727
  } else if (loadingComponent && !delayed.value) {
4726
- return createVNode(loadingComponent);
4728
+ return createInnerComp(
4729
+ loadingComponent,
4730
+ instance
4731
+ );
4727
4732
  }
4728
4733
  };
4729
4734
  }
@@ -7024,15 +7029,25 @@ function baseCreateRenderer(options, createHydrationFns) {
7024
7029
  optimized
7025
7030
  );
7026
7031
  } else {
7027
- patchElement(
7028
- n1,
7029
- n2,
7030
- parentComponent,
7031
- parentSuspense,
7032
- namespace,
7033
- slotScopeIds,
7034
- optimized
7035
- );
7032
+ const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7033
+ try {
7034
+ if (customElement) {
7035
+ customElement._beginPatch();
7036
+ }
7037
+ patchElement(
7038
+ n1,
7039
+ n2,
7040
+ parentComponent,
7041
+ parentSuspense,
7042
+ namespace,
7043
+ slotScopeIds,
7044
+ optimized
7045
+ );
7046
+ } finally {
7047
+ if (customElement) {
7048
+ customElement._endPatch();
7049
+ }
7050
+ }
7036
7051
  }
7037
7052
  };
7038
7053
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
@@ -9274,7 +9289,8 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9274
9289
  pendingId,
9275
9290
  effects,
9276
9291
  parentComponent: parentComponent2,
9277
- container: container2
9292
+ container: container2,
9293
+ isInFallback
9278
9294
  } = suspense;
9279
9295
  let delayEnter = false;
9280
9296
  if (suspense.isHydrating) {
@@ -9291,6 +9307,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9291
9307
  0
9292
9308
  );
9293
9309
  queuePostFlushCb(effects);
9310
+ if (isInFallback && vnode2.ssFallback) {
9311
+ vnode2.ssFallback.el = null;
9312
+ }
9294
9313
  }
9295
9314
  };
9296
9315
  }
@@ -9299,6 +9318,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9299
9318
  anchor = next(activeBranch);
9300
9319
  }
9301
9320
  unmount(activeBranch, parentComponent2, suspense, true);
9321
+ if (!delayEnter && isInFallback && vnode2.ssFallback) {
9322
+ vnode2.ssFallback.el = null;
9323
+ }
9302
9324
  }
9303
9325
  if (!delayEnter) {
9304
9326
  move(pendingBranch, container2, anchor, 0);
@@ -9417,6 +9439,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9417
9439
  optimized2
9418
9440
  );
9419
9441
  if (placeholder) {
9442
+ vnode2.placeholder = null;
9420
9443
  remove(placeholder);
9421
9444
  }
9422
9445
  updateHOCHostEl(instance, vnode2.el);
@@ -10592,7 +10615,7 @@ function isMemoSame(cached, memo) {
10592
10615
  return true;
10593
10616
  }
10594
10617
 
10595
- const version = "3.5.22";
10618
+ const version = "3.5.24";
10596
10619
  const warn = warn$1 ;
10597
10620
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10598
10621
  const devtools = devtools$1 ;
@@ -11414,6 +11437,9 @@ function shouldSetAsProp(el, key, value, isSVG) {
11414
11437
  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
11415
11438
  return false;
11416
11439
  }
11440
+ if (key === "sandbox" && el.tagName === "IFRAME") {
11441
+ return false;
11442
+ }
11417
11443
  if (key === "form") {
11418
11444
  return false;
11419
11445
  }
@@ -11474,6 +11500,8 @@ class VueElement extends BaseClass {
11474
11500
  this._nonce = this._def.nonce;
11475
11501
  this._connected = false;
11476
11502
  this._resolved = false;
11503
+ this._patching = false;
11504
+ this._dirty = false;
11477
11505
  this._numberProps = null;
11478
11506
  this._styleChildren = /* @__PURE__ */ new WeakSet();
11479
11507
  this._ob = null;
@@ -11649,7 +11677,7 @@ class VueElement extends BaseClass {
11649
11677
  return this._getProp(key);
11650
11678
  },
11651
11679
  set(val) {
11652
- this._setProp(key, val, true, true);
11680
+ this._setProp(key, val, true, !this._patching);
11653
11681
  }
11654
11682
  });
11655
11683
  }
@@ -11675,6 +11703,7 @@ class VueElement extends BaseClass {
11675
11703
  */
11676
11704
  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
11677
11705
  if (val !== this._props[key]) {
11706
+ this._dirty = true;
11678
11707
  if (val === REMOVAL) {
11679
11708
  delete this._props[key];
11680
11709
  } else {
@@ -11829,10 +11858,14 @@ class VueElement extends BaseClass {
11829
11858
  if (this._teleportTargets) {
11830
11859
  roots.push(...this._teleportTargets);
11831
11860
  }
11832
- return roots.reduce((res, i) => {
11833
- res.push(...Array.from(i.querySelectorAll("slot")));
11834
- return res;
11835
- }, []);
11861
+ const slots = /* @__PURE__ */ new Set();
11862
+ for (const root of roots) {
11863
+ const found = root.querySelectorAll("slot");
11864
+ for (let i = 0; i < found.length; i++) {
11865
+ slots.add(found[i]);
11866
+ }
11867
+ }
11868
+ return Array.from(slots);
11836
11869
  }
11837
11870
  /**
11838
11871
  * @internal
@@ -11840,6 +11873,22 @@ class VueElement extends BaseClass {
11840
11873
  _injectChildStyle(comp) {
11841
11874
  this._applyStyles(comp.styles, comp);
11842
11875
  }
11876
+ /**
11877
+ * @internal
11878
+ */
11879
+ _beginPatch() {
11880
+ this._patching = true;
11881
+ this._dirty = false;
11882
+ }
11883
+ /**
11884
+ * @internal
11885
+ */
11886
+ _endPatch() {
11887
+ this._patching = false;
11888
+ if (this._dirty && this._instance) {
11889
+ this._update();
11890
+ }
11891
+ }
11843
11892
  /**
11844
11893
  * @internal
11845
11894
  */
@@ -11974,10 +12023,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
11974
12023
  instance
11975
12024
  )
11976
12025
  );
11977
- positionMap.set(
11978
- child,
11979
- child.el.getBoundingClientRect()
11980
- );
12026
+ positionMap.set(child, {
12027
+ left: child.el.offsetLeft,
12028
+ top: child.el.offsetTop
12029
+ });
11981
12030
  }
11982
12031
  }
11983
12032
  }
@@ -12008,7 +12057,10 @@ function callPendingCbs(c) {
12008
12057
  }
12009
12058
  }
12010
12059
  function recordPosition(c) {
12011
- newPositionMap.set(c, c.el.getBoundingClientRect());
12060
+ newPositionMap.set(c, {
12061
+ left: c.el.offsetLeft,
12062
+ top: c.el.offsetTop
12063
+ });
12012
12064
  }
12013
12065
  function applyTranslation(c) {
12014
12066
  const oldPos = positionMap.get(c);
@@ -12054,24 +12106,22 @@ function onCompositionEnd(e) {
12054
12106
  }
12055
12107
  }
12056
12108
  const assignKey = Symbol("_assign");
12109
+ function castValue(value, trim, number) {
12110
+ if (trim) value = value.trim();
12111
+ if (number) value = looseToNumber(value);
12112
+ return value;
12113
+ }
12057
12114
  const vModelText = {
12058
12115
  created(el, { modifiers: { lazy, trim, number } }, vnode) {
12059
12116
  el[assignKey] = getModelAssigner(vnode);
12060
12117
  const castToNumber = number || vnode.props && vnode.props.type === "number";
12061
12118
  addEventListener(el, lazy ? "change" : "input", (e) => {
12062
12119
  if (e.target.composing) return;
12063
- let domValue = el.value;
12064
- if (trim) {
12065
- domValue = domValue.trim();
12066
- }
12067
- if (castToNumber) {
12068
- domValue = looseToNumber(domValue);
12069
- }
12070
- el[assignKey](domValue);
12120
+ el[assignKey](castValue(el.value, trim, castToNumber));
12071
12121
  });
12072
- if (trim) {
12122
+ if (trim || castToNumber) {
12073
12123
  addEventListener(el, "change", () => {
12074
- el.value = el.value.trim();
12124
+ el.value = castValue(el.value, trim, castToNumber);
12075
12125
  });
12076
12126
  }
12077
12127
  if (!lazy) {