@vue/compat 3.4.6 → 3.4.8

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,3 +1,8 @@
1
+ /**
2
+ * @vue/compat v3.4.8
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/
1
6
  function makeMap(str, expectsLowerCase) {
2
7
  const set = new Set(str.split(","));
3
8
  return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);
@@ -3166,8 +3171,6 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
3166
3171
  return false;
3167
3172
  }
3168
3173
  function updateHOCHostEl({ vnode, parent }, el) {
3169
- if (!el)
3170
- return;
3171
3174
  while (parent) {
3172
3175
  const root = parent.subTree;
3173
3176
  if (root.suspense && root.suspense.activeBranch === vnode) {
@@ -3812,7 +3815,12 @@ function queueEffectWithSuspense(fn, suspense) {
3812
3815
  function setActiveBranch(suspense, branch) {
3813
3816
  suspense.activeBranch = branch;
3814
3817
  const { vnode, parentComponent } = suspense;
3815
- const el = vnode.el = branch.el;
3818
+ let el = branch.el;
3819
+ while (!el && branch.component) {
3820
+ branch = branch.component.subTree;
3821
+ el = branch.el;
3822
+ }
3823
+ vnode.el = el;
3816
3824
  if (parentComponent && parentComponent.subTree === vnode) {
3817
3825
  parentComponent.vnode.el = el;
3818
3826
  updateHOCHostEl(parentComponent, el);
@@ -4107,14 +4115,9 @@ function instanceWatch(source, value, options) {
4107
4115
  cb = value.handler;
4108
4116
  options = value;
4109
4117
  }
4110
- const cur = currentInstance;
4111
- setCurrentInstance(this);
4118
+ const reset = setCurrentInstance(this);
4112
4119
  const res = doWatch(getter, cb.bind(publicThis), options);
4113
- if (cur) {
4114
- setCurrentInstance(cur);
4115
- } else {
4116
- unsetCurrentInstance();
4117
- }
4120
+ reset();
4118
4121
  return res;
4119
4122
  }
4120
4123
  function createPathGetter(ctx, path) {
@@ -4166,12 +4169,11 @@ function validateDirectiveName(name) {
4166
4169
  }
4167
4170
  }
4168
4171
  function withDirectives(vnode, directives) {
4169
- const internalInstance = currentRenderingInstance;
4170
- if (internalInstance === null) {
4172
+ if (currentRenderingInstance === null) {
4171
4173
  !!(process.env.NODE_ENV !== "production") && warn$1(`withDirectives can only be used inside render functions.`);
4172
4174
  return vnode;
4173
4175
  }
4174
- const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
4176
+ const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;
4175
4177
  const bindings = vnode.dirs || (vnode.dirs = []);
4176
4178
  for (let i = 0; i < directives.length; i++) {
4177
4179
  let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
@@ -4968,9 +4970,9 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
4968
4970
  return;
4969
4971
  }
4970
4972
  pauseTracking();
4971
- setCurrentInstance(target);
4973
+ const reset = setCurrentInstance(target);
4972
4974
  const res = callWithAsyncErrorHandling(hook, target, type, args);
4973
- unsetCurrentInstance();
4975
+ reset();
4974
4976
  resetTracking();
4975
4977
  return res;
4976
4978
  });
@@ -6564,7 +6566,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6564
6566
  return vm;
6565
6567
  }
6566
6568
  }
6567
- Vue.version = `2.6.14-compat:${"3.4.6"}`;
6569
+ Vue.version = `2.6.14-compat:${"3.4.8"}`;
6568
6570
  Vue.config = singletonApp.config;
6569
6571
  Vue.use = (p, ...options) => {
6570
6572
  if (p && isFunction(p.install)) {
@@ -7407,12 +7409,12 @@ function resolvePropValue(options, props, key, value, instance, isAbsent) {
7407
7409
  if (key in propsDefaults) {
7408
7410
  value = propsDefaults[key];
7409
7411
  } else {
7410
- setCurrentInstance(instance);
7412
+ const reset = setCurrentInstance(instance);
7411
7413
  value = propsDefaults[key] = defaultValue.call(
7412
7414
  isCompatEnabled$1("PROPS_DEFAULT_THIS", instance) ? createPropsDefaultThis(instance, props, key) : null,
7413
7415
  props
7414
7416
  );
7415
- unsetCurrentInstance();
7417
+ reset();
7416
7418
  }
7417
7419
  } else {
7418
7420
  value = defaultValue;
@@ -8303,29 +8305,34 @@ function propHasMismatch(el, key, clientValue, vnode) {
8303
8305
  let actual;
8304
8306
  let expected;
8305
8307
  if (key === "class") {
8306
- actual = toClassSet(el.getAttribute("class") || "");
8307
- expected = toClassSet(normalizeClass(clientValue));
8308
- if (!isSetEqual(actual, expected)) {
8308
+ actual = el.getAttribute("class");
8309
+ expected = normalizeClass(clientValue);
8310
+ if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
8309
8311
  mismatchType = mismatchKey = `class`;
8310
8312
  }
8311
8313
  } else if (key === "style") {
8312
- actual = toStyleMap(el.getAttribute("style") || "");
8313
- expected = toStyleMap(
8314
- isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue))
8315
- );
8314
+ actual = el.getAttribute("style");
8315
+ expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));
8316
+ const actualMap = toStyleMap(actual);
8317
+ const expectedMap = toStyleMap(expected);
8316
8318
  if (vnode.dirs) {
8317
8319
  for (const { dir, value } of vnode.dirs) {
8318
8320
  if (dir.name === "show" && !value) {
8319
- expected.set("display", "none");
8321
+ expectedMap.set("display", "none");
8320
8322
  }
8321
8323
  }
8322
8324
  }
8323
- if (!isMapEqual(actual, expected)) {
8325
+ if (!isMapEqual(actualMap, expectedMap)) {
8324
8326
  mismatchType = mismatchKey = "style";
8325
8327
  }
8326
8328
  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
8327
- actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8328
- expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? "" : String(clientValue);
8329
+ if (isBooleanAttr(key)) {
8330
+ actual = el.hasAttribute(key);
8331
+ expected = includeBooleanAttr(clientValue);
8332
+ } else {
8333
+ actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8334
+ expected = clientValue == null ? "" : String(clientValue);
8335
+ }
8329
8336
  if (actual !== expected) {
8330
8337
  mismatchType = `attribute`;
8331
8338
  mismatchKey = key;
@@ -10809,14 +10816,7 @@ function createComponentInstance(vnode, parent, suspense) {
10809
10816
  return instance;
10810
10817
  }
10811
10818
  let currentInstance = null;
10812
- const getCurrentInstance = () => {
10813
- if (!!(process.env.NODE_ENV !== "production") && isInComputedGetter) {
10814
- warn$1(
10815
- `getCurrentInstance() called inside a computed getter. This is incorrect usage as computed getters are not guaranteed to be executed with an active component instance. If you are using a composable inside a computed getter, move it ouside to the setup scope.`
10816
- );
10817
- }
10818
- return currentInstance || currentRenderingInstance;
10819
- };
10819
+ const getCurrentInstance = () => currentInstance || currentRenderingInstance;
10820
10820
  let internalSetCurrentInstance;
10821
10821
  let setInSSRSetupState;
10822
10822
  {
@@ -10843,8 +10843,13 @@ let setInSSRSetupState;
10843
10843
  );
10844
10844
  }
10845
10845
  const setCurrentInstance = (instance) => {
10846
+ const prev = currentInstance;
10846
10847
  internalSetCurrentInstance(instance);
10847
10848
  instance.scope.on();
10849
+ return () => {
10850
+ instance.scope.off();
10851
+ internalSetCurrentInstance(prev);
10852
+ };
10848
10853
  };
10849
10854
  const unsetCurrentInstance = () => {
10850
10855
  currentInstance && currentInstance.scope.off();
@@ -10906,7 +10911,7 @@ function setupStatefulComponent(instance, isSSR) {
10906
10911
  const { setup } = Component;
10907
10912
  if (setup) {
10908
10913
  const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
10909
- setCurrentInstance(instance);
10914
+ const reset = setCurrentInstance(instance);
10910
10915
  pauseTracking();
10911
10916
  const setupResult = callWithErrorHandling(
10912
10917
  setup,
@@ -10918,7 +10923,7 @@ function setupStatefulComponent(instance, isSSR) {
10918
10923
  ]
10919
10924
  );
10920
10925
  resetTracking();
10921
- unsetCurrentInstance();
10926
+ reset();
10922
10927
  if (isPromise(setupResult)) {
10923
10928
  setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
10924
10929
  if (isSSR) {
@@ -11026,13 +11031,13 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
11026
11031
  }
11027
11032
  }
11028
11033
  if (__VUE_OPTIONS_API__ && !skipOptions) {
11029
- setCurrentInstance(instance);
11034
+ const reset = setCurrentInstance(instance);
11030
11035
  pauseTracking();
11031
11036
  try {
11032
11037
  applyOptions(instance);
11033
11038
  } finally {
11034
11039
  resetTracking();
11035
- unsetCurrentInstance();
11040
+ reset();
11036
11041
  }
11037
11042
  }
11038
11043
  if (!!(process.env.NODE_ENV !== "production") && !Component.render && instance.render === NOOP && !isSSR) {
@@ -11173,25 +11178,7 @@ function isClassComponent(value) {
11173
11178
  return isFunction(value) && "__vccOpts" in value;
11174
11179
  }
11175
11180
 
11176
- let isInComputedGetter = false;
11177
- function wrapComputedGetter(getter) {
11178
- return () => {
11179
- isInComputedGetter = true;
11180
- try {
11181
- return getter();
11182
- } finally {
11183
- isInComputedGetter = false;
11184
- }
11185
- };
11186
- }
11187
11181
  const computed = (getterOrOptions, debugOptions) => {
11188
- if (!!(process.env.NODE_ENV !== "production")) {
11189
- if (isFunction(getterOrOptions)) {
11190
- getterOrOptions = wrapComputedGetter(getterOrOptions);
11191
- } else {
11192
- getterOrOptions.get = wrapComputedGetter(getterOrOptions.get);
11193
- }
11194
- }
11195
11182
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
11196
11183
  };
11197
11184
 
@@ -11417,7 +11404,7 @@ function isMemoSame(cached, memo) {
11417
11404
  return true;
11418
11405
  }
11419
11406
 
11420
- const version = "3.4.6";
11407
+ const version = "3.4.8";
11421
11408
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
11422
11409
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11423
11410
  const devtools = !!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__ ? devtools$1 : void 0;
@@ -15239,7 +15226,7 @@ function onCloseTag(el, end, isImplied = false) {
15239
15226
  }
15240
15227
  }
15241
15228
  }
15242
- if (isCompatEnabled(
15229
+ if (!tokenizer.inSFCRoot && isCompatEnabled(
15243
15230
  "COMPILER_NATIVE_TEMPLATE",
15244
15231
  currentOptions
15245
15232
  ) && el.tag === "template" && !isFragmentTemplate(el)) {
@@ -15853,8 +15840,7 @@ function createTransformContext(root, {
15853
15840
  }
15854
15841
  context.parent.children.splice(removalIndex, 1);
15855
15842
  },
15856
- onNodeRemoved: () => {
15857
- },
15843
+ onNodeRemoved: NOOP,
15858
15844
  addIdentifiers(exp) {
15859
15845
  },
15860
15846
  removeIdentifiers(exp) {
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @vue/compat v3.4.8
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/
1
6
  var Vue = (function () {
2
7
  'use strict';
3
8
 
@@ -3162,8 +3167,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
3162
3167
  return false;
3163
3168
  }
3164
3169
  function updateHOCHostEl({ vnode, parent }, el) {
3165
- if (!el)
3166
- return;
3167
3170
  while (parent) {
3168
3171
  const root = parent.subTree;
3169
3172
  if (root.suspense && root.suspense.activeBranch === vnode) {
@@ -3808,7 +3811,12 @@ If this is a native custom element, make sure to exclude it from component resol
3808
3811
  function setActiveBranch(suspense, branch) {
3809
3812
  suspense.activeBranch = branch;
3810
3813
  const { vnode, parentComponent } = suspense;
3811
- const el = vnode.el = branch.el;
3814
+ let el = branch.el;
3815
+ while (!el && branch.component) {
3816
+ branch = branch.component.subTree;
3817
+ el = branch.el;
3818
+ }
3819
+ vnode.el = el;
3812
3820
  if (parentComponent && parentComponent.subTree === vnode) {
3813
3821
  parentComponent.vnode.el = el;
3814
3822
  updateHOCHostEl(parentComponent, el);
@@ -4076,14 +4084,9 @@ If this is a native custom element, make sure to exclude it from component resol
4076
4084
  cb = value.handler;
4077
4085
  options = value;
4078
4086
  }
4079
- const cur = currentInstance;
4080
- setCurrentInstance(this);
4087
+ const reset = setCurrentInstance(this);
4081
4088
  const res = doWatch(getter, cb.bind(publicThis), options);
4082
- if (cur) {
4083
- setCurrentInstance(cur);
4084
- } else {
4085
- unsetCurrentInstance();
4086
- }
4089
+ reset();
4087
4090
  return res;
4088
4091
  }
4089
4092
  function createPathGetter(ctx, path) {
@@ -4135,12 +4138,11 @@ If this is a native custom element, make sure to exclude it from component resol
4135
4138
  }
4136
4139
  }
4137
4140
  function withDirectives(vnode, directives) {
4138
- const internalInstance = currentRenderingInstance;
4139
- if (internalInstance === null) {
4141
+ if (currentRenderingInstance === null) {
4140
4142
  warn$1(`withDirectives can only be used inside render functions.`);
4141
4143
  return vnode;
4142
4144
  }
4143
- const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
4145
+ const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;
4144
4146
  const bindings = vnode.dirs || (vnode.dirs = []);
4145
4147
  for (let i = 0; i < directives.length; i++) {
4146
4148
  let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
@@ -4929,9 +4931,9 @@ If this is a native custom element, make sure to exclude it from component resol
4929
4931
  return;
4930
4932
  }
4931
4933
  pauseTracking();
4932
- setCurrentInstance(target);
4934
+ const reset = setCurrentInstance(target);
4933
4935
  const res = callWithAsyncErrorHandling(hook, target, type, args);
4934
- unsetCurrentInstance();
4936
+ reset();
4935
4937
  resetTracking();
4936
4938
  return res;
4937
4939
  });
@@ -6523,7 +6525,7 @@ If this is a native custom element, make sure to exclude it from component resol
6523
6525
  return vm;
6524
6526
  }
6525
6527
  }
6526
- Vue.version = `2.6.14-compat:${"3.4.6"}`;
6528
+ Vue.version = `2.6.14-compat:${"3.4.8"}`;
6527
6529
  Vue.config = singletonApp.config;
6528
6530
  Vue.use = (p, ...options) => {
6529
6531
  if (p && isFunction(p.install)) {
@@ -7363,12 +7365,12 @@ If you want to remount the same app, move your app creation logic into a factory
7363
7365
  if (key in propsDefaults) {
7364
7366
  value = propsDefaults[key];
7365
7367
  } else {
7366
- setCurrentInstance(instance);
7368
+ const reset = setCurrentInstance(instance);
7367
7369
  value = propsDefaults[key] = defaultValue.call(
7368
7370
  isCompatEnabled$1("PROPS_DEFAULT_THIS", instance) ? createPropsDefaultThis(instance, props, key) : null,
7369
7371
  props
7370
7372
  );
7371
- unsetCurrentInstance();
7373
+ reset();
7372
7374
  }
7373
7375
  } else {
7374
7376
  value = defaultValue;
@@ -8249,29 +8251,34 @@ Server rendered element contains fewer child nodes than client vdom.`
8249
8251
  let actual;
8250
8252
  let expected;
8251
8253
  if (key === "class") {
8252
- actual = toClassSet(el.getAttribute("class") || "");
8253
- expected = toClassSet(normalizeClass(clientValue));
8254
- if (!isSetEqual(actual, expected)) {
8254
+ actual = el.getAttribute("class");
8255
+ expected = normalizeClass(clientValue);
8256
+ if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
8255
8257
  mismatchType = mismatchKey = `class`;
8256
8258
  }
8257
8259
  } else if (key === "style") {
8258
- actual = toStyleMap(el.getAttribute("style") || "");
8259
- expected = toStyleMap(
8260
- isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue))
8261
- );
8260
+ actual = el.getAttribute("style");
8261
+ expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));
8262
+ const actualMap = toStyleMap(actual);
8263
+ const expectedMap = toStyleMap(expected);
8262
8264
  if (vnode.dirs) {
8263
8265
  for (const { dir, value } of vnode.dirs) {
8264
8266
  if (dir.name === "show" && !value) {
8265
- expected.set("display", "none");
8267
+ expectedMap.set("display", "none");
8266
8268
  }
8267
8269
  }
8268
8270
  }
8269
- if (!isMapEqual(actual, expected)) {
8271
+ if (!isMapEqual(actualMap, expectedMap)) {
8270
8272
  mismatchType = mismatchKey = "style";
8271
8273
  }
8272
8274
  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
8273
- actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8274
- expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? "" : String(clientValue);
8275
+ if (isBooleanAttr(key)) {
8276
+ actual = el.hasAttribute(key);
8277
+ expected = includeBooleanAttr(clientValue);
8278
+ } else {
8279
+ actual = el.hasAttribute(key) ? el.getAttribute(key) : key in el ? el[key] : "";
8280
+ expected = clientValue == null ? "" : String(clientValue);
8281
+ }
8275
8282
  if (actual !== expected) {
8276
8283
  mismatchType = `attribute`;
8277
8284
  mismatchKey = key;
@@ -10715,14 +10722,7 @@ Component that was made reactive: `,
10715
10722
  return instance;
10716
10723
  }
10717
10724
  let currentInstance = null;
10718
- const getCurrentInstance = () => {
10719
- if (isInComputedGetter) {
10720
- warn$1(
10721
- `getCurrentInstance() called inside a computed getter. This is incorrect usage as computed getters are not guaranteed to be executed with an active component instance. If you are using a composable inside a computed getter, move it ouside to the setup scope.`
10722
- );
10723
- }
10724
- return currentInstance || currentRenderingInstance;
10725
- };
10725
+ const getCurrentInstance = () => currentInstance || currentRenderingInstance;
10726
10726
  let internalSetCurrentInstance;
10727
10727
  let setInSSRSetupState;
10728
10728
  {
@@ -10734,8 +10734,13 @@ Component that was made reactive: `,
10734
10734
  };
10735
10735
  }
10736
10736
  const setCurrentInstance = (instance) => {
10737
+ const prev = currentInstance;
10737
10738
  internalSetCurrentInstance(instance);
10738
10739
  instance.scope.on();
10740
+ return () => {
10741
+ instance.scope.off();
10742
+ internalSetCurrentInstance(prev);
10743
+ };
10739
10744
  };
10740
10745
  const unsetCurrentInstance = () => {
10741
10746
  currentInstance && currentInstance.scope.off();
@@ -10797,7 +10802,7 @@ Component that was made reactive: `,
10797
10802
  const { setup } = Component;
10798
10803
  if (setup) {
10799
10804
  const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
10800
- setCurrentInstance(instance);
10805
+ const reset = setCurrentInstance(instance);
10801
10806
  pauseTracking();
10802
10807
  const setupResult = callWithErrorHandling(
10803
10808
  setup,
@@ -10809,7 +10814,7 @@ Component that was made reactive: `,
10809
10814
  ]
10810
10815
  );
10811
10816
  resetTracking();
10812
- unsetCurrentInstance();
10817
+ reset();
10813
10818
  if (isPromise(setupResult)) {
10814
10819
  setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
10815
10820
  if (isSSR) {
@@ -10915,13 +10920,13 @@ Component that was made reactive: `,
10915
10920
  }
10916
10921
  }
10917
10922
  if (!skipOptions) {
10918
- setCurrentInstance(instance);
10923
+ const reset = setCurrentInstance(instance);
10919
10924
  pauseTracking();
10920
10925
  try {
10921
10926
  applyOptions(instance);
10922
10927
  } finally {
10923
10928
  resetTracking();
10924
- unsetCurrentInstance();
10929
+ reset();
10925
10930
  }
10926
10931
  }
10927
10932
  if (!Component.render && instance.render === NOOP && !isSSR) {
@@ -11048,25 +11053,7 @@ Component that was made reactive: `,
11048
11053
  return isFunction(value) && "__vccOpts" in value;
11049
11054
  }
11050
11055
 
11051
- let isInComputedGetter = false;
11052
- function wrapComputedGetter(getter) {
11053
- return () => {
11054
- isInComputedGetter = true;
11055
- try {
11056
- return getter();
11057
- } finally {
11058
- isInComputedGetter = false;
11059
- }
11060
- };
11061
- }
11062
11056
  const computed = (getterOrOptions, debugOptions) => {
11063
- {
11064
- if (isFunction(getterOrOptions)) {
11065
- getterOrOptions = wrapComputedGetter(getterOrOptions);
11066
- } else {
11067
- getterOrOptions.get = wrapComputedGetter(getterOrOptions.get);
11068
- }
11069
- }
11070
11057
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
11071
11058
  };
11072
11059
 
@@ -11292,7 +11279,7 @@ Component that was made reactive: `,
11292
11279
  return true;
11293
11280
  }
11294
11281
 
11295
- const version = "3.4.6";
11282
+ const version = "3.4.8";
11296
11283
  const warn = warn$1 ;
11297
11284
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11298
11285
  const devtools = devtools$1 ;
@@ -15052,7 +15039,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15052
15039
  }
15053
15040
  }
15054
15041
  }
15055
- if (isCompatEnabled(
15042
+ if (!tokenizer.inSFCRoot && isCompatEnabled(
15056
15043
  "COMPILER_NATIVE_TEMPLATE",
15057
15044
  currentOptions
15058
15045
  ) && el.tag === "template" && !isFragmentTemplate(el)) {
@@ -15665,8 +15652,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15665
15652
  }
15666
15653
  context.parent.children.splice(removalIndex, 1);
15667
15654
  },
15668
- onNodeRemoved: () => {
15669
- },
15655
+ onNodeRemoved: NOOP,
15670
15656
  addIdentifiers(exp) {
15671
15657
  },
15672
15658
  removeIdentifiers(exp) {