@vue/compat 3.5.16 → 3.5.17

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/compat v3.5.16
2
+ * @vue/compat v3.5.17
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -137,7 +137,7 @@ const PatchFlagNames = {
137
137
  [512]: `NEED_PATCH`,
138
138
  [1024]: `DYNAMIC_SLOTS`,
139
139
  [2048]: `DEV_ROOT_FRAGMENT`,
140
- [-1]: `HOISTED`,
140
+ [-1]: `CACHED`,
141
141
  [-2]: `BAIL`
142
142
  };
143
143
 
@@ -910,6 +910,7 @@ class Link {
910
910
  }
911
911
  }
912
912
  class Dep {
913
+ // TODO isolatedDeclarations "__v_skip"
913
914
  constructor(computed) {
914
915
  this.computed = computed;
915
916
  this.version = 0;
@@ -930,6 +931,10 @@ class Dep {
930
931
  * Subscriber counter
931
932
  */
932
933
  this.sc = 0;
934
+ /**
935
+ * @internal
936
+ */
937
+ this.__v_skip = true;
933
938
  {
934
939
  this.subsHead = void 0;
935
940
  }
@@ -5064,7 +5069,7 @@ function isMismatchAllowed(el, allowedType) {
5064
5069
  if (allowedType === 0 /* TEXT */ && list.includes("children")) {
5065
5070
  return true;
5066
5071
  }
5067
- return allowedAttr.split(",").includes(MismatchTypeString[allowedType]);
5072
+ return list.includes(MismatchTypeString[allowedType]);
5068
5073
  }
5069
5074
  }
5070
5075
 
@@ -7251,7 +7256,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7251
7256
  return vm;
7252
7257
  }
7253
7258
  }
7254
- Vue.version = `2.6.14-compat:${"3.5.16"}`;
7259
+ Vue.version = `2.6.14-compat:${"3.5.17"}`;
7255
7260
  Vue.config = singletonApp.config;
7256
7261
  Vue.use = (plugin, ...options) => {
7257
7262
  if (plugin && isFunction(plugin.install)) {
@@ -8398,6 +8403,8 @@ const assignSlots = (slots, children, optimized) => {
8398
8403
  const initSlots = (instance, children, optimized) => {
8399
8404
  const slots = instance.slots = createInternalObject();
8400
8405
  if (instance.vnode.shapeFlag & 32) {
8406
+ const cacheIndexes = children.__;
8407
+ if (cacheIndexes) def(slots, "__", cacheIndexes, true);
8401
8408
  const type = children._;
8402
8409
  if (type) {
8403
8410
  assignSlots(slots, children, optimized);
@@ -8609,6 +8616,8 @@ function baseCreateRenderer(options, createHydrationFns) {
8609
8616
  }
8610
8617
  if (ref != null && parentComponent) {
8611
8618
  setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
8619
+ } else if (ref == null && n1 && n1.ref != null) {
8620
+ setRef(n1.ref, null, parentSuspense, n1, true);
8612
8621
  }
8613
8622
  };
8614
8623
  const processText = (n1, n2, container, anchor) => {
@@ -9172,7 +9181,8 @@ function baseCreateRenderer(options, createHydrationFns) {
9172
9181
  hydrateSubTree();
9173
9182
  }
9174
9183
  } else {
9175
- if (root.ce) {
9184
+ if (root.ce && // @ts-expect-error _def is private
9185
+ root.ce._def.shadowRoot !== false) {
9176
9186
  root.ce._injectChildStyle(type);
9177
9187
  }
9178
9188
  {
@@ -10268,8 +10278,9 @@ function emit(instance, event, ...rawArgs) {
10268
10278
  }
10269
10279
  }
10270
10280
  let args = rawArgs;
10271
- const isModelListener = event.startsWith("update:");
10272
- const modifiers = isModelListener && getModelModifiers(props, event.slice(7));
10281
+ const isCompatModelListener = compatModelEventPrefix + event in props;
10282
+ const isModelListener = isCompatModelListener || event.startsWith("update:");
10283
+ const modifiers = isCompatModelListener ? props.modelModifiers : isModelListener && getModelModifiers(props, event.slice(7));
10273
10284
  if (modifiers) {
10274
10285
  if (modifiers.trim) {
10275
10286
  args = rawArgs.map((a) => isString(a) ? a.trim() : a);
@@ -12407,7 +12418,7 @@ function isMemoSame(cached, memo) {
12407
12418
  return true;
12408
12419
  }
12409
12420
 
12410
- const version = "3.5.16";
12421
+ const version = "3.5.17";
12411
12422
  const warn = warn$1 ;
12412
12423
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12413
12424
  const devtools = devtools$1 ;
@@ -13431,9 +13442,10 @@ class VueElement extends BaseClass {
13431
13442
  };
13432
13443
  const asyncDef = this._def.__asyncLoader;
13433
13444
  if (asyncDef) {
13434
- this._pendingResolve = asyncDef().then(
13435
- (def) => resolve(this._def = def, true)
13436
- );
13445
+ this._pendingResolve = asyncDef().then((def) => {
13446
+ def.configureApp = this._def.configureApp;
13447
+ resolve(this._def = def, true);
13448
+ });
13437
13449
  } else {
13438
13450
  resolve(this._def);
13439
13451
  }
@@ -15474,7 +15486,7 @@ class Tokenizer {
15474
15486
  this.buffer = input;
15475
15487
  while (this.index < this.buffer.length) {
15476
15488
  const c = this.buffer.charCodeAt(this.index);
15477
- if (c === 10) {
15489
+ if (c === 10 && this.state !== 33) {
15478
15490
  this.newlines.push(this.index);
15479
15491
  }
15480
15492
  switch (this.state) {
@@ -17037,7 +17049,7 @@ function isUpperCase(c) {
17037
17049
  return c > 64 && c < 91;
17038
17050
  }
17039
17051
  const windowsNewlineRE = /\r\n/g;
17040
- function condenseWhitespace(nodes, tag) {
17052
+ function condenseWhitespace(nodes) {
17041
17053
  const shouldCondense = currentOptions.whitespace !== "preserve";
17042
17054
  let removedWhitespace = false;
17043
17055
  for (let i = 0; i < nodes.length; i++) {
@@ -17223,12 +17235,12 @@ function cacheStatic(root, context) {
17223
17235
  context,
17224
17236
  // Root node is unfortunately non-hoistable due to potential parent
17225
17237
  // fallthrough attributes.
17226
- isSingleElementRoot(root, root.children[0])
17238
+ !!getSingleElementRoot(root)
17227
17239
  );
17228
17240
  }
17229
- function isSingleElementRoot(root, child) {
17230
- const { children } = root;
17231
- return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
17241
+ function getSingleElementRoot(root) {
17242
+ const children = root.children.filter((x) => x.type !== 3);
17243
+ return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null;
17232
17244
  }
17233
17245
  function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17234
17246
  const { children } = node;
@@ -17722,15 +17734,15 @@ function createRootCodegen(root, context) {
17722
17734
  const { helper } = context;
17723
17735
  const { children } = root;
17724
17736
  if (children.length === 1) {
17725
- const child = children[0];
17726
- if (isSingleElementRoot(root, child) && child.codegenNode) {
17727
- const codegenNode = child.codegenNode;
17737
+ const singleElementRootChild = getSingleElementRoot(root);
17738
+ if (singleElementRootChild && singleElementRootChild.codegenNode) {
17739
+ const codegenNode = singleElementRootChild.codegenNode;
17728
17740
  if (codegenNode.type === 13) {
17729
17741
  convertToBlock(codegenNode, context);
17730
17742
  }
17731
17743
  root.codegenNode = codegenNode;
17732
17744
  } else {
17733
- root.codegenNode = child;
17745
+ root.codegenNode = children[0];
17734
17746
  }
17735
17747
  } else if (children.length > 1) {
17736
17748
  let patchFlag = 64;
@@ -19514,7 +19526,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
19514
19526
  let prev;
19515
19527
  while (j--) {
19516
19528
  prev = children[j];
19517
- if (prev.type !== 3) {
19529
+ if (prev.type !== 3 && isNonWhitespaceContent(prev)) {
19518
19530
  break;
19519
19531
  }
19520
19532
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.16
2
+ * @vue/compat v3.5.17
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -813,6 +813,7 @@ class Link {
813
813
  }
814
814
  }
815
815
  class Dep {
816
+ // TODO isolatedDeclarations "__v_skip"
816
817
  constructor(computed) {
817
818
  this.computed = computed;
818
819
  this.version = 0;
@@ -833,6 +834,10 @@ class Dep {
833
834
  * Subscriber counter
834
835
  */
835
836
  this.sc = 0;
837
+ /**
838
+ * @internal
839
+ */
840
+ this.__v_skip = true;
836
841
  }
837
842
  track(debugInfo) {
838
843
  if (!activeSub || !shouldTrack || activeSub === this.computed) {
@@ -3938,7 +3943,7 @@ function isMismatchAllowed(el, allowedType) {
3938
3943
  if (allowedType === 0 /* TEXT */ && list.includes("children")) {
3939
3944
  return true;
3940
3945
  }
3941
- return allowedAttr.split(",").includes(MismatchTypeString[allowedType]);
3946
+ return list.includes(MismatchTypeString[allowedType]);
3942
3947
  }
3943
3948
  }
3944
3949
 
@@ -5822,7 +5827,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5822
5827
  return vm;
5823
5828
  }
5824
5829
  }
5825
- Vue.version = `2.6.14-compat:${"3.5.16"}`;
5830
+ Vue.version = `2.6.14-compat:${"3.5.17"}`;
5826
5831
  Vue.config = singletonApp.config;
5827
5832
  Vue.use = (plugin, ...options) => {
5828
5833
  if (plugin && isFunction(plugin.install)) {
@@ -6701,6 +6706,8 @@ const assignSlots = (slots, children, optimized) => {
6701
6706
  const initSlots = (instance, children, optimized) => {
6702
6707
  const slots = instance.slots = createInternalObject();
6703
6708
  if (instance.vnode.shapeFlag & 32) {
6709
+ const cacheIndexes = children.__;
6710
+ if (cacheIndexes) def(slots, "__", cacheIndexes, true);
6704
6711
  const type = children._;
6705
6712
  if (type) {
6706
6713
  assignSlots(slots, children, optimized);
@@ -6862,6 +6869,8 @@ function baseCreateRenderer(options, createHydrationFns) {
6862
6869
  }
6863
6870
  if (ref != null && parentComponent) {
6864
6871
  setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
6872
+ } else if (ref == null && n1 && n1.ref != null) {
6873
+ setRef(n1.ref, null, parentSuspense, n1, true);
6865
6874
  }
6866
6875
  };
6867
6876
  const processText = (n1, n2, container, anchor) => {
@@ -7359,7 +7368,8 @@ function baseCreateRenderer(options, createHydrationFns) {
7359
7368
  hydrateSubTree();
7360
7369
  }
7361
7370
  } else {
7362
- if (root.ce) {
7371
+ if (root.ce && // @ts-expect-error _def is private
7372
+ root.ce._def.shadowRoot !== false) {
7363
7373
  root.ce._injectChildStyle(type);
7364
7374
  }
7365
7375
  const subTree = instance.subTree = renderComponentRoot(instance);
@@ -8330,8 +8340,9 @@ function emit(instance, event, ...rawArgs) {
8330
8340
  if (instance.isUnmounted) return;
8331
8341
  const props = instance.vnode.props || EMPTY_OBJ;
8332
8342
  let args = rawArgs;
8333
- const isModelListener = event.startsWith("update:");
8334
- const modifiers = isModelListener && getModelModifiers(props, event.slice(7));
8343
+ const isCompatModelListener = compatModelEventPrefix + event in props;
8344
+ const isModelListener = isCompatModelListener || event.startsWith("update:");
8345
+ const modifiers = isCompatModelListener ? props.modelModifiers : isModelListener && getModelModifiers(props, event.slice(7));
8335
8346
  if (modifiers) {
8336
8347
  if (modifiers.trim) {
8337
8348
  args = rawArgs.map((a) => isString(a) ? a.trim() : a);
@@ -9977,7 +9988,7 @@ function isMemoSame(cached, memo) {
9977
9988
  return true;
9978
9989
  }
9979
9990
 
9980
- const version = "3.5.16";
9991
+ const version = "3.5.17";
9981
9992
  const warn$1 = NOOP;
9982
9993
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9983
9994
  const devtools = void 0;
@@ -10956,9 +10967,10 @@ class VueElement extends BaseClass {
10956
10967
  };
10957
10968
  const asyncDef = this._def.__asyncLoader;
10958
10969
  if (asyncDef) {
10959
- this._pendingResolve = asyncDef().then(
10960
- (def) => resolve(this._def = def, true)
10961
- );
10970
+ this._pendingResolve = asyncDef().then((def) => {
10971
+ def.configureApp = this._def.configureApp;
10972
+ resolve(this._def = def, true);
10973
+ });
10962
10974
  } else {
10963
10975
  resolve(this._def);
10964
10976
  }
@@ -12870,7 +12882,7 @@ class Tokenizer {
12870
12882
  this.buffer = input;
12871
12883
  while (this.index < this.buffer.length) {
12872
12884
  const c = this.buffer.charCodeAt(this.index);
12873
- if (c === 10) {
12885
+ if (c === 10 && this.state !== 33) {
12874
12886
  this.newlines.push(this.index);
12875
12887
  }
12876
12888
  switch (this.state) {
@@ -14348,7 +14360,7 @@ function isUpperCase(c) {
14348
14360
  return c > 64 && c < 91;
14349
14361
  }
14350
14362
  const windowsNewlineRE = /\r\n/g;
14351
- function condenseWhitespace(nodes, tag) {
14363
+ function condenseWhitespace(nodes) {
14352
14364
  const shouldCondense = currentOptions.whitespace !== "preserve";
14353
14365
  let removedWhitespace = false;
14354
14366
  for (let i = 0; i < nodes.length; i++) {
@@ -14527,12 +14539,12 @@ function cacheStatic(root, context) {
14527
14539
  context,
14528
14540
  // Root node is unfortunately non-hoistable due to potential parent
14529
14541
  // fallthrough attributes.
14530
- isSingleElementRoot(root, root.children[0])
14542
+ !!getSingleElementRoot(root)
14531
14543
  );
14532
14544
  }
14533
- function isSingleElementRoot(root, child) {
14534
- const { children } = root;
14535
- return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
14545
+ function getSingleElementRoot(root) {
14546
+ const children = root.children.filter((x) => x.type !== 3);
14547
+ return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null;
14536
14548
  }
14537
14549
  function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
14538
14550
  const { children } = node;
@@ -15012,15 +15024,15 @@ function createRootCodegen(root, context) {
15012
15024
  const { helper } = context;
15013
15025
  const { children } = root;
15014
15026
  if (children.length === 1) {
15015
- const child = children[0];
15016
- if (isSingleElementRoot(root, child) && child.codegenNode) {
15017
- const codegenNode = child.codegenNode;
15027
+ const singleElementRootChild = getSingleElementRoot(root);
15028
+ if (singleElementRootChild && singleElementRootChild.codegenNode) {
15029
+ const codegenNode = singleElementRootChild.codegenNode;
15018
15030
  if (codegenNode.type === 13) {
15019
15031
  convertToBlock(codegenNode, context);
15020
15032
  }
15021
15033
  root.codegenNode = codegenNode;
15022
15034
  } else {
15023
- root.codegenNode = child;
15035
+ root.codegenNode = children[0];
15024
15036
  }
15025
15037
  } else if (children.length > 1) {
15026
15038
  let patchFlag = 64;
@@ -16774,7 +16786,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
16774
16786
  let prev;
16775
16787
  while (j--) {
16776
16788
  prev = children[j];
16777
- if (prev.type !== 3) {
16789
+ if (prev.type !== 3 && isNonWhitespaceContent(prev)) {
16778
16790
  break;
16779
16791
  }
16780
16792
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.16
2
+ * @vue/compat v3.5.17
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -126,7 +126,7 @@ const PatchFlagNames = {
126
126
  [512]: `NEED_PATCH`,
127
127
  [1024]: `DYNAMIC_SLOTS`,
128
128
  [2048]: `DEV_ROOT_FRAGMENT`,
129
- [-1]: `HOISTED`,
129
+ [-1]: `CACHED`,
130
130
  [-2]: `BAIL`
131
131
  };
132
132
 
@@ -857,6 +857,7 @@ class Link {
857
857
  }
858
858
  }
859
859
  class Dep {
860
+ // TODO isolatedDeclarations "__v_skip"
860
861
  constructor(computed) {
861
862
  this.computed = computed;
862
863
  this.version = 0;
@@ -877,6 +878,10 @@ class Dep {
877
878
  * Subscriber counter
878
879
  */
879
880
  this.sc = 0;
881
+ /**
882
+ * @internal
883
+ */
884
+ this.__v_skip = true;
880
885
  {
881
886
  this.subsHead = void 0;
882
887
  }
@@ -5011,7 +5016,7 @@ function isMismatchAllowed(el, allowedType) {
5011
5016
  if (allowedType === 0 /* TEXT */ && list.includes("children")) {
5012
5017
  return true;
5013
5018
  }
5014
- return allowedAttr.split(",").includes(MismatchTypeString[allowedType]);
5019
+ return list.includes(MismatchTypeString[allowedType]);
5015
5020
  }
5016
5021
  }
5017
5022
 
@@ -7201,7 +7206,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7201
7206
  return vm;
7202
7207
  }
7203
7208
  }
7204
- Vue.version = `2.6.14-compat:${"3.5.16"}`;
7209
+ Vue.version = `2.6.14-compat:${"3.5.17"}`;
7205
7210
  Vue.config = singletonApp.config;
7206
7211
  Vue.use = (plugin, ...options) => {
7207
7212
  if (plugin && isFunction(plugin.install)) {
@@ -8348,6 +8353,8 @@ const assignSlots = (slots, children, optimized) => {
8348
8353
  const initSlots = (instance, children, optimized) => {
8349
8354
  const slots = instance.slots = createInternalObject();
8350
8355
  if (instance.vnode.shapeFlag & 32) {
8356
+ const cacheIndexes = children.__;
8357
+ if (cacheIndexes) def(slots, "__", cacheIndexes, true);
8351
8358
  const type = children._;
8352
8359
  if (type) {
8353
8360
  assignSlots(slots, children, optimized);
@@ -8559,6 +8566,8 @@ function baseCreateRenderer(options, createHydrationFns) {
8559
8566
  }
8560
8567
  if (ref != null && parentComponent) {
8561
8568
  setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
8569
+ } else if (ref == null && n1 && n1.ref != null) {
8570
+ setRef(n1.ref, null, parentSuspense, n1, true);
8562
8571
  }
8563
8572
  };
8564
8573
  const processText = (n1, n2, container, anchor) => {
@@ -9122,7 +9131,8 @@ function baseCreateRenderer(options, createHydrationFns) {
9122
9131
  hydrateSubTree();
9123
9132
  }
9124
9133
  } else {
9125
- if (root.ce) {
9134
+ if (root.ce && // @ts-expect-error _def is private
9135
+ root.ce._def.shadowRoot !== false) {
9126
9136
  root.ce._injectChildStyle(type);
9127
9137
  }
9128
9138
  {
@@ -10218,8 +10228,9 @@ function emit(instance, event, ...rawArgs) {
10218
10228
  }
10219
10229
  }
10220
10230
  let args = rawArgs;
10221
- const isModelListener = event.startsWith("update:");
10222
- const modifiers = isModelListener && getModelModifiers(props, event.slice(7));
10231
+ const isCompatModelListener = compatModelEventPrefix + event in props;
10232
+ const isModelListener = isCompatModelListener || event.startsWith("update:");
10233
+ const modifiers = isCompatModelListener ? props.modelModifiers : isModelListener && getModelModifiers(props, event.slice(7));
10223
10234
  if (modifiers) {
10224
10235
  if (modifiers.trim) {
10225
10236
  args = rawArgs.map((a) => isString(a) ? a.trim() : a);
@@ -12357,7 +12368,7 @@ function isMemoSame(cached, memo) {
12357
12368
  return true;
12358
12369
  }
12359
12370
 
12360
- const version = "3.5.16";
12371
+ const version = "3.5.17";
12361
12372
  const warn = warn$1 ;
12362
12373
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12363
12374
  const devtools = devtools$1 ;
@@ -13448,9 +13459,10 @@ class VueElement extends BaseClass {
13448
13459
  };
13449
13460
  const asyncDef = this._def.__asyncLoader;
13450
13461
  if (asyncDef) {
13451
- this._pendingResolve = asyncDef().then(
13452
- (def) => resolve(this._def = def, true)
13453
- );
13462
+ this._pendingResolve = asyncDef().then((def) => {
13463
+ def.configureApp = this._def.configureApp;
13464
+ resolve(this._def = def, true);
13465
+ });
13454
13466
  } else {
13455
13467
  resolve(this._def);
13456
13468
  }
@@ -15473,7 +15485,7 @@ class Tokenizer {
15473
15485
  this.buffer = input;
15474
15486
  while (this.index < this.buffer.length) {
15475
15487
  const c = this.buffer.charCodeAt(this.index);
15476
- if (c === 10) {
15488
+ if (c === 10 && this.state !== 33) {
15477
15489
  this.newlines.push(this.index);
15478
15490
  }
15479
15491
  switch (this.state) {
@@ -16628,7 +16640,7 @@ function isUpperCase(c) {
16628
16640
  return c > 64 && c < 91;
16629
16641
  }
16630
16642
  const windowsNewlineRE = /\r\n/g;
16631
- function condenseWhitespace(nodes, tag) {
16643
+ function condenseWhitespace(nodes) {
16632
16644
  const shouldCondense = currentOptions.whitespace !== "preserve";
16633
16645
  let removedWhitespace = false;
16634
16646
  for (let i = 0; i < nodes.length; i++) {
@@ -16792,12 +16804,12 @@ function cacheStatic(root, context) {
16792
16804
  context,
16793
16805
  // Root node is unfortunately non-hoistable due to potential parent
16794
16806
  // fallthrough attributes.
16795
- isSingleElementRoot(root, root.children[0])
16807
+ !!getSingleElementRoot(root)
16796
16808
  );
16797
16809
  }
16798
- function isSingleElementRoot(root, child) {
16799
- const { children } = root;
16800
- return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
16810
+ function getSingleElementRoot(root) {
16811
+ const children = root.children.filter((x) => x.type !== 3);
16812
+ return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null;
16801
16813
  }
16802
16814
  function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16803
16815
  const { children } = node;
@@ -17263,15 +17275,15 @@ function createRootCodegen(root, context) {
17263
17275
  const { helper } = context;
17264
17276
  const { children } = root;
17265
17277
  if (children.length === 1) {
17266
- const child = children[0];
17267
- if (isSingleElementRoot(root, child) && child.codegenNode) {
17268
- const codegenNode = child.codegenNode;
17278
+ const singleElementRootChild = getSingleElementRoot(root);
17279
+ if (singleElementRootChild && singleElementRootChild.codegenNode) {
17280
+ const codegenNode = singleElementRootChild.codegenNode;
17269
17281
  if (codegenNode.type === 13) {
17270
17282
  convertToBlock(codegenNode, context);
17271
17283
  }
17272
17284
  root.codegenNode = codegenNode;
17273
17285
  } else {
17274
- root.codegenNode = child;
17286
+ root.codegenNode = children[0];
17275
17287
  }
17276
17288
  } else if (children.length > 1) {
17277
17289
  let patchFlag = 64;
@@ -18626,7 +18638,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
18626
18638
  let prev;
18627
18639
  while (j--) {
18628
18640
  prev = children[j];
18629
- if (prev.type !== 3) {
18641
+ if (prev.type !== 3 && isNonWhitespaceContent(prev)) {
18630
18642
  break;
18631
18643
  }
18632
18644
  }