vue 3.5.4 → 3.5.5

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.4
2
+ * vue v3.5.5
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.4
2
+ * vue v3.5.5
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.4
2
+ * vue v3.5.5
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -663,9 +663,11 @@ function prepareDeps(sub) {
663
663
  function cleanupDeps(sub) {
664
664
  let head;
665
665
  let tail = sub.depsTail;
666
- for (let link = tail; link; link = link.prevDep) {
666
+ let link = tail;
667
+ while (link) {
668
+ const prev = link.prevDep;
667
669
  if (link.version === -1) {
668
- if (link === tail) tail = link.prevDep;
670
+ if (link === tail) tail = prev;
669
671
  removeSub(link);
670
672
  removeDep(link);
671
673
  } else {
@@ -673,6 +675,7 @@ function cleanupDeps(sub) {
673
675
  }
674
676
  link.dep.activeLink = link.prevActiveLink;
675
677
  link.prevActiveLink = void 0;
678
+ link = prev;
676
679
  }
677
680
  sub.deps = head;
678
681
  sub.depsTail = tail;
@@ -801,6 +804,14 @@ function cleanupEffect(e) {
801
804
  }
802
805
 
803
806
  let globalVersion = 0;
807
+ class Link {
808
+ constructor(sub, dep) {
809
+ this.sub = sub;
810
+ this.dep = dep;
811
+ this.version = dep.version;
812
+ this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
813
+ }
814
+ }
804
815
  class Dep {
805
816
  constructor(computed) {
806
817
  this.computed = computed;
@@ -823,16 +834,7 @@ class Dep {
823
834
  }
824
835
  let link = this.activeLink;
825
836
  if (link === void 0 || link.sub !== activeSub) {
826
- link = this.activeLink = {
827
- dep: this,
828
- sub: activeSub,
829
- version: this.version,
830
- nextDep: void 0,
831
- prevDep: void 0,
832
- nextSub: void 0,
833
- prevSub: void 0,
834
- prevActiveLink: void 0
835
- };
837
+ link = this.activeLink = new Link(activeSub, this);
836
838
  if (!activeSub.deps) {
837
839
  activeSub.deps = activeSub.depsTail = link;
838
840
  } else {
@@ -2745,7 +2747,9 @@ function reload(id, newComp) {
2745
2747
  dirtyInstances.delete(instance);
2746
2748
  } else if (instance.parent) {
2747
2749
  queueJob(() => {
2750
+ isHmrUpdating = true;
2748
2751
  instance.parent.update();
2752
+ isHmrUpdating = false;
2749
2753
  dirtyInstances.delete(instance);
2750
2754
  });
2751
2755
  } else if (instance.appContext.reload) {
@@ -3036,6 +3040,9 @@ const TeleportImpl = {
3036
3040
  insert(mainAnchor, container, anchor);
3037
3041
  const mount = (container2, anchor2) => {
3038
3042
  if (shapeFlag & 16) {
3043
+ if (parentComponent && parentComponent.isCE) {
3044
+ parentComponent.ce._teleportTarget = container2;
3045
+ }
3039
3046
  mountChildren(
3040
3047
  children,
3041
3048
  container2,
@@ -4066,7 +4073,11 @@ Server rendered element contains more child nodes than client vdom.`
4066
4073
  remove(cur);
4067
4074
  }
4068
4075
  } else if (shapeFlag & 8) {
4069
- if (el.textContent !== vnode.children) {
4076
+ let clientText = vnode.children;
4077
+ if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) {
4078
+ clientText = clientText.slice(1);
4079
+ }
4080
+ if (el.textContent !== clientText) {
4070
4081
  if (!isMismatchAllowed(el, 0 /* TEXT */)) {
4071
4082
  warn$1(
4072
4083
  `Hydration text content mismatch on`,
@@ -4265,7 +4276,7 @@ Server rendered element contains fewer child nodes than client vdom.`
4265
4276
  }
4266
4277
  };
4267
4278
  const isTemplateNode = (node) => {
4268
- return node.nodeType === 1 && node.tagName.toLowerCase() === "template";
4279
+ return node.nodeType === 1 && node.tagName === "TEMPLATE";
4269
4280
  };
4270
4281
  return [hydrate, hydrateNode];
4271
4282
  }
@@ -4617,7 +4628,7 @@ function defineAsyncComponent(source) {
4617
4628
  load().then(() => {
4618
4629
  loaded.value = true;
4619
4630
  if (instance.parent && isKeepAlive(instance.parent.vnode)) {
4620
- queueJob(instance.parent.update);
4631
+ instance.parent.update();
4621
4632
  }
4622
4633
  }).catch((err) => {
4623
4634
  onError(err);
@@ -7299,6 +7310,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7299
7310
  }
7300
7311
  }
7301
7312
  if (instance.asyncDep) {
7313
+ if (isHmrUpdating) initialVNode.el = null;
7302
7314
  parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
7303
7315
  if (!initialVNode.el) {
7304
7316
  const placeholder = instance.subTree = createVNode(Comment);
@@ -10450,7 +10462,7 @@ function isMemoSame(cached, memo) {
10450
10462
  return true;
10451
10463
  }
10452
10464
 
10453
- const version = "3.5.4";
10465
+ const version = "3.5.5";
10454
10466
  const warn = warn$1 ;
10455
10467
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10456
10468
  const devtools = devtools$1 ;
@@ -11350,6 +11362,7 @@ class VueElement extends BaseClass {
11350
11362
  }
11351
11363
  }
11352
11364
  connectedCallback() {
11365
+ if (!this.isConnected) return;
11353
11366
  if (!this.shadowRoot) {
11354
11367
  this._parseSlots();
11355
11368
  }
@@ -11392,7 +11405,7 @@ class VueElement extends BaseClass {
11392
11405
  this._ob = null;
11393
11406
  }
11394
11407
  this._app && this._app.unmount();
11395
- this._instance.ce = void 0;
11408
+ if (this._instance) this._instance.ce = void 0;
11396
11409
  this._app = this._instance = null;
11397
11410
  }
11398
11411
  });
@@ -11611,7 +11624,7 @@ class VueElement extends BaseClass {
11611
11624
  }
11612
11625
  }
11613
11626
  /**
11614
- * Only called when shaddowRoot is false
11627
+ * Only called when shadowRoot is false
11615
11628
  */
11616
11629
  _parseSlots() {
11617
11630
  const slots = this._slots = {};
@@ -11623,10 +11636,10 @@ class VueElement extends BaseClass {
11623
11636
  }
11624
11637
  }
11625
11638
  /**
11626
- * Only called when shaddowRoot is false
11639
+ * Only called when shadowRoot is false
11627
11640
  */
11628
11641
  _renderSlots() {
11629
- const outlets = this.querySelectorAll("slot");
11642
+ const outlets = (this._teleportTarget || this).querySelectorAll("slot");
11630
11643
  const scopeId = this._instance.type.__scopeId;
11631
11644
  for (let i = 0; i < outlets.length; i++) {
11632
11645
  const o = outlets[i];
@@ -11805,7 +11818,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
11805
11818
  child,
11806
11819
  resolveTransitionHooks(child, cssTransitionProps, state, instance)
11807
11820
  );
11808
- } else {
11821
+ } else if (child.type !== Text) {
11809
11822
  warn(`<TransitionGroup> children must be keyed.`);
11810
11823
  }
11811
11824
  }
@@ -12979,7 +12992,7 @@ class Tokenizer {
12979
12992
  this.sequenceIndex += 1;
12980
12993
  } else if (this.sequenceIndex === 0) {
12981
12994
  if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) {
12982
- if (c === this.delimiterOpen[0]) {
12995
+ if (!this.inVPre && c === this.delimiterOpen[0]) {
12983
12996
  this.state = 2;
12984
12997
  this.delimiterIndex = 0;
12985
12998
  this.stateInterpolationOpen(c);
@@ -13882,6 +13895,7 @@ const defaultParserOptions = {
13882
13895
  getNamespace: () => 0,
13883
13896
  isVoidTag: NO,
13884
13897
  isPreTag: NO,
13898
+ isIgnoreNewlineTag: NO,
13885
13899
  isCustomElement: NO,
13886
13900
  onError: defaultOnError,
13887
13901
  onWarn: defaultOnWarn,
@@ -14312,7 +14326,7 @@ function onCloseTag(el, end, isImplied = false) {
14312
14326
  el.innerLoc.end.offset
14313
14327
  );
14314
14328
  }
14315
- const { tag, ns } = el;
14329
+ const { tag, ns, children } = el;
14316
14330
  if (!inVPre) {
14317
14331
  if (tag === "slot") {
14318
14332
  el.tagType = 2;
@@ -14323,7 +14337,13 @@ function onCloseTag(el, end, isImplied = false) {
14323
14337
  }
14324
14338
  }
14325
14339
  if (!tokenizer.inRCDATA) {
14326
- el.children = condenseWhitespace(el.children, el.tag);
14340
+ el.children = condenseWhitespace(children);
14341
+ }
14342
+ if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) {
14343
+ const first = children[0];
14344
+ if (first && first.type === 2) {
14345
+ first.content = first.content.replace(/^\r?\n/, "");
14346
+ }
14327
14347
  }
14328
14348
  if (ns === 0 && currentOptions.isPreTag(tag)) {
14329
14349
  inPre--;
@@ -14404,12 +14424,6 @@ function condenseWhitespace(nodes, tag) {
14404
14424
  }
14405
14425
  }
14406
14426
  }
14407
- if (inPre && tag && currentOptions.isPreTag(tag)) {
14408
- const first = nodes[0];
14409
- if (first && first.type === 2) {
14410
- first.content = first.content.replace(/^\r?\n/, "");
14411
- }
14412
- }
14413
14427
  return removedWhitespace ? nodes.filter(Boolean) : nodes;
14414
14428
  }
14415
14429
  function isAllWhitespace(str) {
@@ -17470,6 +17484,7 @@ const parserOptions = {
17470
17484
  isVoidTag,
17471
17485
  isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),
17472
17486
  isPreTag: (tag) => tag === "pre",
17487
+ isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea",
17473
17488
  decodeEntities: decodeHtmlBrowser ,
17474
17489
  isBuiltInComponent: (tag) => {
17475
17490
  if (tag === "Transition" || tag === "transition") {