@vue/compat 3.4.0-beta.4 → 3.4.0-rc.2

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
@@ -396,7 +396,7 @@ const stringifySymbol = (v, i = "") => {
396
396
  return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;
397
397
  };
398
398
 
399
- function warn$1(msg, ...args) {
399
+ function warn$2(msg, ...args) {
400
400
  console.warn(`[Vue warn] ${msg}`, ...args);
401
401
  }
402
402
 
@@ -436,7 +436,7 @@ class EffectScope {
436
436
  activeEffectScope = currentEffectScope;
437
437
  }
438
438
  } else {
439
- warn$1(`cannot run an inactive effect scope.`);
439
+ warn$2(`cannot run an inactive effect scope.`);
440
440
  }
441
441
  }
442
442
  /**
@@ -494,7 +494,7 @@ function onScopeDispose(fn) {
494
494
  if (activeEffectScope) {
495
495
  activeEffectScope.cleanups.push(fn);
496
496
  } else {
497
- warn$1(
497
+ warn$2(
498
498
  `onScopeDispose() is called when there is no active effect scope to be associated with.`
499
499
  );
500
500
  }
@@ -942,7 +942,7 @@ class ReadonlyReactiveHandler extends BaseReactiveHandler {
942
942
  }
943
943
  set(target, key) {
944
944
  {
945
- warn$1(
945
+ warn$2(
946
946
  `Set operation on key "${String(key)}" failed: target is readonly.`,
947
947
  target
948
948
  );
@@ -951,7 +951,7 @@ class ReadonlyReactiveHandler extends BaseReactiveHandler {
951
951
  }
952
952
  deleteProperty(target, key) {
953
953
  {
954
- warn$1(
954
+ warn$2(
955
955
  `Delete operation on key "${String(key)}" failed: target is readonly.`,
956
956
  target
957
957
  );
@@ -1609,7 +1609,7 @@ function pushWarningContext(vnode) {
1609
1609
  function popWarningContext() {
1610
1610
  stack$1.pop();
1611
1611
  }
1612
- function warn(msg, ...args) {
1612
+ function warn$1(msg, ...args) {
1613
1613
  pauseTracking();
1614
1614
  const instance = stack$1.length ? stack$1[stack$1.length - 1].component : null;
1615
1615
  const appWarnHandler = instance && instance.appContext.config.warnHandler;
@@ -1710,9 +1710,9 @@ function assertNumber(val, type) {
1710
1710
  if (val === void 0) {
1711
1711
  return;
1712
1712
  } else if (typeof val !== "number") {
1713
- warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`);
1713
+ warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);
1714
1714
  } else if (isNaN(val)) {
1715
- warn(`${type} is NaN - the duration expression might be incorrect.`);
1715
+ warn$1(`${type} is NaN - the duration expression might be incorrect.`);
1716
1716
  }
1717
1717
  }
1718
1718
 
@@ -1840,7 +1840,7 @@ function logError(err, type, contextVNode, throwInDev = true) {
1840
1840
  if (contextVNode) {
1841
1841
  pushWarningContext(contextVNode);
1842
1842
  }
1843
- warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
1843
+ warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
1844
1844
  if (contextVNode) {
1845
1845
  popWarningContext();
1846
1846
  }
@@ -2138,22 +2138,22 @@ function tryWrap(fn) {
2138
2138
  };
2139
2139
  }
2140
2140
 
2141
- let devtools;
2141
+ let devtools$1;
2142
2142
  let buffer = [];
2143
2143
  let devtoolsNotInstalled = false;
2144
2144
  function emit$2(event, ...args) {
2145
- if (devtools) {
2146
- devtools.emit(event, ...args);
2145
+ if (devtools$1) {
2146
+ devtools$1.emit(event, ...args);
2147
2147
  } else if (!devtoolsNotInstalled) {
2148
2148
  buffer.push({ event, args });
2149
2149
  }
2150
2150
  }
2151
- function setDevtoolsHook(hook, target) {
2151
+ function setDevtoolsHook$1(hook, target) {
2152
2152
  var _a, _b;
2153
- devtools = hook;
2154
- if (devtools) {
2155
- devtools.enabled = true;
2156
- buffer.forEach(({ event, args }) => devtools.emit(event, ...args));
2153
+ devtools$1 = hook;
2154
+ if (devtools$1) {
2155
+ devtools$1.enabled = true;
2156
+ buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));
2157
2157
  buffer = [];
2158
2158
  } else if (
2159
2159
  // handle late devtools injection - only do this if we are in an actual
@@ -2165,10 +2165,10 @@ function setDevtoolsHook(hook, target) {
2165
2165
  ) {
2166
2166
  const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
2167
2167
  replay.push((newHook) => {
2168
- setDevtoolsHook(newHook, target);
2168
+ setDevtoolsHook$1(newHook, target);
2169
2169
  });
2170
2170
  setTimeout(() => {
2171
- if (!devtools) {
2171
+ if (!devtools$1) {
2172
2172
  target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
2173
2173
  devtoolsNotInstalled = true;
2174
2174
  buffer = [];
@@ -2198,8 +2198,8 @@ const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(
2198
2198
  "component:removed" /* COMPONENT_REMOVED */
2199
2199
  );
2200
2200
  const devtoolsComponentRemoved = (component) => {
2201
- if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered
2202
- !devtools.cleanupBuffer(component)) {
2201
+ if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered
2202
+ !devtools$1.cleanupBuffer(component)) {
2203
2203
  _devtoolsComponentRemoved(component);
2204
2204
  }
2205
2205
  };
@@ -2498,12 +2498,12 @@ function warnDeprecation$1(key, instance, ...args) {
2498
2498
  }
2499
2499
  instanceWarned[componentDupKey] = true;
2500
2500
  if (dupKey in warnCount) {
2501
- warn(`(deprecation ${key}) (${++warnCount[dupKey] + 1})`);
2501
+ warn$1(`(deprecation ${key}) (${++warnCount[dupKey] + 1})`);
2502
2502
  return;
2503
2503
  }
2504
2504
  warnCount[dupKey] = 0;
2505
2505
  const { message, link } = deprecationData$1[key];
2506
- warn(
2506
+ warn$1(
2507
2507
  `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? `
2508
2508
  Details: ${link}` : ``}`
2509
2509
  );
@@ -2533,19 +2533,19 @@ function validateCompatConfig(config, instance) {
2533
2533
  if (key !== "MODE" && !(key in deprecationData$1) && !(key in warnedInvalidKeys)) {
2534
2534
  if (key.startsWith("COMPILER_")) {
2535
2535
  if (isRuntimeOnly()) {
2536
- warn(
2536
+ warn$1(
2537
2537
  `Deprecation config "${key}" is compiler-specific and you are running a runtime-only build of Vue. This deprecation should be configured via compiler options in your build setup instead.
2538
2538
  Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2539
2539
  );
2540
2540
  }
2541
2541
  } else {
2542
- warn(`Invalid deprecation config "${key}".`);
2542
+ warn$1(`Invalid deprecation config "${key}".`);
2543
2543
  }
2544
2544
  warnedInvalidKeys[key] = true;
2545
2545
  }
2546
2546
  }
2547
2547
  if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2548
- warn(
2548
+ warn$1(
2549
2549
  `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2550
2550
  );
2551
2551
  }
@@ -2735,7 +2735,7 @@ function emit(instance, event, ...rawArgs) {
2735
2735
  if (emitsOptions) {
2736
2736
  if (!(event in emitsOptions) && !(event.startsWith("hook:") || event.startsWith(compatModelEventPrefix))) {
2737
2737
  if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
2738
- warn(
2738
+ warn$1(
2739
2739
  `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`
2740
2740
  );
2741
2741
  }
@@ -2744,7 +2744,7 @@ function emit(instance, event, ...rawArgs) {
2744
2744
  if (isFunction(validator)) {
2745
2745
  const isValid = validator(...rawArgs);
2746
2746
  if (!isValid) {
2747
- warn(
2747
+ warn$1(
2748
2748
  `Invalid event arguments: event validation failed for event "${event}".`
2749
2749
  );
2750
2750
  }
@@ -2771,7 +2771,7 @@ function emit(instance, event, ...rawArgs) {
2771
2771
  {
2772
2772
  const lowerCaseEvent = event.toLowerCase();
2773
2773
  if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
2774
- warn(
2774
+ warn$1(
2775
2775
  `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(
2776
2776
  instance,
2777
2777
  instance.type
@@ -2952,7 +2952,7 @@ function renderComponentRoot(instance) {
2952
2952
  const proxyToUse = withProxy || proxy;
2953
2953
  const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, {
2954
2954
  get(target, key, receiver) {
2955
- warn(
2955
+ warn$1(
2956
2956
  `Property '${String(
2957
2957
  key
2958
2958
  )}' was accessed via 'this'. Avoid using 'this' in templates.`
@@ -3033,12 +3033,12 @@ function renderComponentRoot(instance) {
3033
3033
  }
3034
3034
  }
3035
3035
  if (extraAttrs.length) {
3036
- warn(
3036
+ warn$1(
3037
3037
  `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`
3038
3038
  );
3039
3039
  }
3040
3040
  if (eventAttrs.length) {
3041
- warn(
3041
+ warn$1(
3042
3042
  `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`
3043
3043
  );
3044
3044
  }
@@ -3063,7 +3063,7 @@ function renderComponentRoot(instance) {
3063
3063
  }
3064
3064
  if (vnode.dirs) {
3065
3065
  if (!isElementRoot(root)) {
3066
- warn(
3066
+ warn$1(
3067
3067
  `Runtime directive used on component with non-element root node. The directives will not function as intended.`
3068
3068
  );
3069
3069
  }
@@ -3072,7 +3072,7 @@ function renderComponentRoot(instance) {
3072
3072
  }
3073
3073
  if (vnode.transition) {
3074
3074
  if (!isElementRoot(root)) {
3075
- warn(
3075
+ warn$1(
3076
3076
  `Component inside <Transition> renders non-element root node that cannot be animated.`
3077
3077
  );
3078
3078
  }
@@ -3269,11 +3269,11 @@ function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false
3269
3269
  if (warnMissing && !res) {
3270
3270
  const extra = type === COMPONENTS ? `
3271
3271
  If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;
3272
- warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
3272
+ warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
3273
3273
  }
3274
3274
  return res;
3275
3275
  } else {
3276
- warn(
3276
+ warn$1(
3277
3277
  `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`
3278
3278
  );
3279
3279
  }
@@ -3829,7 +3829,7 @@ function normalizeSuspenseSlot(s) {
3829
3829
  if (isArray(s)) {
3830
3830
  const singleChild = filterSingleRoot(s);
3831
3831
  if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {
3832
- warn(`<Suspense> slots expect a single root node.`);
3832
+ warn$1(`<Suspense> slots expect a single root node.`);
3833
3833
  }
3834
3834
  s = singleChild;
3835
3835
  }
@@ -3922,7 +3922,7 @@ function watchSyncEffect(effect, options) {
3922
3922
  const INITIAL_WATCHER_VALUE = {};
3923
3923
  function watch(source, cb, options) {
3924
3924
  if (!isFunction(cb)) {
3925
- warn(
3925
+ warn$1(
3926
3926
  `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`
3927
3927
  );
3928
3928
  }
@@ -3939,23 +3939,23 @@ function doWatch(source, cb, { immediate, deep, flush, once, onTrack, onTrigger
3939
3939
  }
3940
3940
  if (!cb) {
3941
3941
  if (immediate !== void 0) {
3942
- warn(
3942
+ warn$1(
3943
3943
  `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`
3944
3944
  );
3945
3945
  }
3946
3946
  if (deep !== void 0) {
3947
- warn(
3947
+ warn$1(
3948
3948
  `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
3949
3949
  );
3950
3950
  }
3951
3951
  if (once !== void 0) {
3952
- warn(
3952
+ warn$1(
3953
3953
  `watch() "once" option is only respected when using the watch(source, callback, options?) signature.`
3954
3954
  );
3955
3955
  }
3956
3956
  }
3957
3957
  const warnInvalidSource = (s) => {
3958
- warn(
3958
+ warn$1(
3959
3959
  `Invalid watch source: `,
3960
3960
  s,
3961
3961
  `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
@@ -4171,13 +4171,13 @@ function traverse(value, seen) {
4171
4171
 
4172
4172
  function validateDirectiveName(name) {
4173
4173
  if (isBuiltInDirective(name)) {
4174
- warn("Do not use built-in directive ids as custom directive id: " + name);
4174
+ warn$1("Do not use built-in directive ids as custom directive id: " + name);
4175
4175
  }
4176
4176
  }
4177
4177
  function withDirectives(vnode, directives) {
4178
4178
  const internalInstance = currentRenderingInstance;
4179
4179
  if (internalInstance === null) {
4180
- warn(`withDirectives can only be used inside render functions.`);
4180
+ warn$1(`withDirectives can only be used inside render functions.`);
4181
4181
  return vnode;
4182
4182
  }
4183
4183
  const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
@@ -4287,7 +4287,7 @@ const BaseTransitionImpl = {
4287
4287
  for (const c of children) {
4288
4288
  if (c.type !== Comment) {
4289
4289
  if (hasFound) {
4290
- warn(
4290
+ warn$1(
4291
4291
  "<transition> can only be used on a single element or component. Use <transition-group> for lists."
4292
4292
  );
4293
4293
  break;
@@ -4300,7 +4300,7 @@ const BaseTransitionImpl = {
4300
4300
  const rawProps = toRaw(props);
4301
4301
  const { mode } = rawProps;
4302
4302
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") {
4303
- warn(`invalid <transition> mode: ${mode}`);
4303
+ warn$1(`invalid <transition> mode: ${mode}`);
4304
4304
  }
4305
4305
  if (state.isLeaving) {
4306
4306
  return emptyPlaceholder(child);
@@ -4618,7 +4618,7 @@ function defineAsyncComponent(source) {
4618
4618
  return pendingRequest;
4619
4619
  }
4620
4620
  if (!comp) {
4621
- warn(
4621
+ warn$1(
4622
4622
  `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`
4623
4623
  );
4624
4624
  }
@@ -4858,7 +4858,7 @@ const KeepAliveImpl = {
4858
4858
  const rawVNode = children[0];
4859
4859
  if (children.length > 1) {
4860
4860
  {
4861
- warn(`KeepAlive should contain exactly one component child.`);
4861
+ warn$1(`KeepAlive should contain exactly one component child.`);
4862
4862
  }
4863
4863
  current = null;
4864
4864
  return children;
@@ -4990,7 +4990,7 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
4990
4990
  return wrappedHook;
4991
4991
  } else {
4992
4992
  const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, ""));
4993
- warn(
4993
+ warn$1(
4994
4994
  `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )
4995
4995
  );
4996
4996
  }
@@ -5312,7 +5312,7 @@ function renderList(source, renderItem, cache, index) {
5312
5312
  }
5313
5313
  } else if (typeof source === "number") {
5314
5314
  if (!Number.isInteger(source)) {
5315
- warn(`The v-for range expect an integer value but got ${source}.`);
5315
+ warn$1(`The v-for range expect an integer value but got ${source}.`);
5316
5316
  }
5317
5317
  ret = new Array(source);
5318
5318
  for (let i = 0; i < source; i++) {
@@ -5368,7 +5368,7 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) {
5368
5368
  }
5369
5369
  let slot = slots[name];
5370
5370
  if (slot && slot.length > 1) {
5371
- warn(
5371
+ warn$1(
5372
5372
  `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`
5373
5373
  );
5374
5374
  slot = () => [];
@@ -5411,7 +5411,7 @@ function ensureValidVNode(vnodes) {
5411
5411
  function toHandlers(obj, preserveCaseIfNecessary) {
5412
5412
  const ret = {};
5413
5413
  if (!isObject(obj)) {
5414
- warn(`v-on with no argument expects an object value.`);
5414
+ warn$1(`v-on with no argument expects an object value.`);
5415
5415
  return ret;
5416
5416
  }
5417
5417
  for (const key in obj) {
@@ -5740,13 +5740,13 @@ const PublicInstanceProxyHandlers = {
5740
5740
  // to infinite warning loop
5741
5741
  key.indexOf("__v") !== 0)) {
5742
5742
  if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
5743
- warn(
5743
+ warn$1(
5744
5744
  `Property ${JSON.stringify(
5745
5745
  key
5746
5746
  )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`
5747
5747
  );
5748
5748
  } else if (instance === currentRenderingInstance) {
5749
- warn(
5749
+ warn$1(
5750
5750
  `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`
5751
5751
  );
5752
5752
  }
@@ -5758,17 +5758,17 @@ const PublicInstanceProxyHandlers = {
5758
5758
  setupState[key] = value;
5759
5759
  return true;
5760
5760
  } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) {
5761
- warn(`Cannot mutate <script setup> binding "${key}" from Options API.`);
5761
+ warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`);
5762
5762
  return false;
5763
5763
  } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
5764
5764
  data[key] = value;
5765
5765
  return true;
5766
5766
  } else if (hasOwn(instance.props, key)) {
5767
- warn(`Attempting to mutate prop "${key}". Props are readonly.`);
5767
+ warn$1(`Attempting to mutate prop "${key}". Props are readonly.`);
5768
5768
  return false;
5769
5769
  }
5770
5770
  if (key[0] === "$" && key.slice(1) in instance) {
5771
- warn(
5771
+ warn$1(
5772
5772
  `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.`
5773
5773
  );
5774
5774
  return false;
@@ -5802,7 +5802,7 @@ const PublicInstanceProxyHandlers = {
5802
5802
  };
5803
5803
  {
5804
5804
  PublicInstanceProxyHandlers.ownKeys = (target) => {
5805
- warn(
5805
+ warn$1(
5806
5806
  `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`
5807
5807
  );
5808
5808
  return Reflect.ownKeys(target);
@@ -5821,7 +5821,7 @@ const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(
5821
5821
  has(_, key) {
5822
5822
  const has = key[0] !== "_" && !isGloballyAllowed(key);
5823
5823
  if (!has && PublicInstanceProxyHandlers.has(_, key)) {
5824
- warn(
5824
+ warn$1(
5825
5825
  `Property ${JSON.stringify(
5826
5826
  key
5827
5827
  )} should not start with _ which is a reserved prefix for Vue internals.`
@@ -5871,7 +5871,7 @@ function exposeSetupStateOnRenderContext(instance) {
5871
5871
  Object.keys(toRaw(setupState)).forEach((key) => {
5872
5872
  if (!setupState.__isScriptSetup) {
5873
5873
  if (isReservedPrefix(key[0])) {
5874
- warn(
5874
+ warn$1(
5875
5875
  `setup() return property ${JSON.stringify(
5876
5876
  key
5877
5877
  )} should not start with "$" or "_" which are reserved prefixes for Vue internals.`
@@ -5902,7 +5902,7 @@ function deepMergeData(to, from) {
5902
5902
  return to;
5903
5903
  }
5904
5904
 
5905
- const warnRuntimeUsage = (method) => warn(
5905
+ const warnRuntimeUsage = (method) => warn$1(
5906
5906
  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`
5907
5907
  );
5908
5908
  function defineProps() {
@@ -5953,11 +5953,11 @@ function useAttrs() {
5953
5953
  function useModel(props, name) {
5954
5954
  const i = getCurrentInstance();
5955
5955
  if (!i) {
5956
- warn(`useModel() called without active instance.`);
5956
+ warn$1(`useModel() called without active instance.`);
5957
5957
  return ref();
5958
5958
  }
5959
5959
  if (!i.propsOptions[0][name]) {
5960
- warn(`useModel() called with prop "${name}" which is not declared.`);
5960
+ warn$1(`useModel() called with prop "${name}" which is not declared.`);
5961
5961
  return ref();
5962
5962
  }
5963
5963
  return customRef((track, trigger) => {
@@ -5988,7 +5988,7 @@ function useModel(props, name) {
5988
5988
  function getContext() {
5989
5989
  const i = getCurrentInstance();
5990
5990
  if (!i) {
5991
- warn(`useContext() called without active instance.`);
5991
+ warn$1(`useContext() called without active instance.`);
5992
5992
  }
5993
5993
  return i.setupContext || (i.setupContext = createSetupContext(i));
5994
5994
  }
@@ -6013,7 +6013,7 @@ function mergeDefaults(raw, defaults) {
6013
6013
  } else if (opt === null) {
6014
6014
  opt = props[key] = { default: defaults[key] };
6015
6015
  } else {
6016
- warn(`props default key "${key}" has no corresponding declaration.`);
6016
+ warn$1(`props default key "${key}" has no corresponding declaration.`);
6017
6017
  }
6018
6018
  if (opt && defaults[`__skip_${key}`]) {
6019
6019
  opt.skipFactory = true;
@@ -6043,7 +6043,7 @@ function createPropsRestProxy(props, excludedKeys) {
6043
6043
  function withAsyncContext(getAwaitable) {
6044
6044
  const ctx = getCurrentInstance();
6045
6045
  if (!ctx) {
6046
- warn(
6046
+ warn$1(
6047
6047
  `withAsyncContext called without active current instance. This is likely a bug.`
6048
6048
  );
6049
6049
  }
@@ -6062,7 +6062,7 @@ function createDuplicateChecker() {
6062
6062
  const cache = /* @__PURE__ */ Object.create(null);
6063
6063
  return (type, key) => {
6064
6064
  if (cache[key]) {
6065
- warn(`${type} property "${key}" is already defined in ${cache[key]}.`);
6065
+ warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`);
6066
6066
  } else {
6067
6067
  cache[key] = type;
6068
6068
  }
@@ -6138,7 +6138,7 @@ function applyOptions(instance) {
6138
6138
  checkDuplicateProperties("Methods" /* METHODS */, key);
6139
6139
  }
6140
6140
  } else {
6141
- warn(
6141
+ warn$1(
6142
6142
  `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?`
6143
6143
  );
6144
6144
  }
@@ -6146,18 +6146,18 @@ function applyOptions(instance) {
6146
6146
  }
6147
6147
  if (dataOptions) {
6148
6148
  if (!isFunction(dataOptions)) {
6149
- warn(
6149
+ warn$1(
6150
6150
  `The data option must be a function. Plain object usage is no longer supported.`
6151
6151
  );
6152
6152
  }
6153
6153
  const data = dataOptions.call(publicThis, publicThis);
6154
6154
  if (isPromise(data)) {
6155
- warn(
6155
+ warn$1(
6156
6156
  `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`
6157
6157
  );
6158
6158
  }
6159
6159
  if (!isObject(data)) {
6160
- warn(`data() should return an object.`);
6160
+ warn$1(`data() should return an object.`);
6161
6161
  } else {
6162
6162
  instance.data = reactive(data);
6163
6163
  {
@@ -6181,10 +6181,10 @@ function applyOptions(instance) {
6181
6181
  const opt = computedOptions[key];
6182
6182
  const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
6183
6183
  if (get === NOOP) {
6184
- warn(`Computed property "${key}" has no getter.`);
6184
+ warn$1(`Computed property "${key}" has no getter.`);
6185
6185
  }
6186
6186
  const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => {
6187
- warn(
6187
+ warn$1(
6188
6188
  `Write operation failed: computed property "${key}" is readonly.`
6189
6189
  );
6190
6190
  } ;
@@ -6321,7 +6321,7 @@ function createWatcher(raw, ctx, publicThis, key) {
6321
6321
  if (isFunction(handler)) {
6322
6322
  watch(getter, handler);
6323
6323
  } else {
6324
- warn(`Invalid watch handler specified by key "${raw}"`, handler);
6324
+ warn$1(`Invalid watch handler specified by key "${raw}"`, handler);
6325
6325
  }
6326
6326
  } else if (isFunction(raw)) {
6327
6327
  watch(getter, raw.bind(publicThis));
@@ -6333,11 +6333,11 @@ function createWatcher(raw, ctx, publicThis, key) {
6333
6333
  if (isFunction(handler)) {
6334
6334
  watch(getter, handler, raw);
6335
6335
  } else {
6336
- warn(`Invalid watch handler specified by key "${raw.handler}"`, handler);
6336
+ warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler);
6337
6337
  }
6338
6338
  }
6339
6339
  } else {
6340
- warn(`Invalid watch option: "${key}"`, raw);
6340
+ warn$1(`Invalid watch option: "${key}"`, raw);
6341
6341
  }
6342
6342
  }
6343
6343
  function resolveMergedOptions(instance) {
@@ -6389,7 +6389,7 @@ function mergeOptions(to, from, strats, asMixin = false) {
6389
6389
  }
6390
6390
  for (const key in from) {
6391
6391
  if (asMixin && key === "expose") {
6392
- warn(
6392
+ warn$1(
6393
6393
  `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`
6394
6394
  );
6395
6395
  } else {
@@ -6557,7 +6557,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6557
6557
  return vm;
6558
6558
  }
6559
6559
  }
6560
- Vue.version = `2.6.14-compat:${"3.4.0-beta.4"}`;
6560
+ Vue.version = `2.6.14-compat:${"3.4.0-rc.2"}`;
6561
6561
  Vue.config = singletonApp.config;
6562
6562
  Vue.use = (p, ...options) => {
6563
6563
  if (p && isFunction(p.install)) {
@@ -6658,7 +6658,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6658
6658
  }
6659
6659
  };
6660
6660
  const util = {
6661
- warn: warn ,
6661
+ warn: warn$1 ,
6662
6662
  extend,
6663
6663
  mergeOptions: (parent, child, vm) => mergeOptions(
6664
6664
  parent,
@@ -6695,7 +6695,7 @@ function installFilterMethod(app, context) {
6695
6695
  return context.filters[name];
6696
6696
  }
6697
6697
  if (context.filters[name]) {
6698
- warn(`Filter "${name}" has already been registered.`);
6698
+ warn$1(`Filter "${name}" has already been registered.`);
6699
6699
  }
6700
6700
  context.filters[name] = filter;
6701
6701
  return app;
@@ -6786,14 +6786,14 @@ function installCompatMount(app, context, render) {
6786
6786
  vnode.isCompatRoot = true;
6787
6787
  instance.ctx._compat_mount = (selectorOrEl) => {
6788
6788
  if (isMounted) {
6789
- warn(`Root instance is already mounted.`);
6789
+ warn$1(`Root instance is already mounted.`);
6790
6790
  return;
6791
6791
  }
6792
6792
  let container;
6793
6793
  if (typeof selectorOrEl === "string") {
6794
6794
  const result = document.querySelector(selectorOrEl);
6795
6795
  if (!result) {
6796
- warn(
6796
+ warn$1(
6797
6797
  `Failed to mount root instance: selector "${selectorOrEl}" returned null.`
6798
6798
  );
6799
6799
  return;
@@ -6958,7 +6958,7 @@ function createAppAPI(render, hydrate) {
6958
6958
  rootComponent = extend({}, rootComponent);
6959
6959
  }
6960
6960
  if (rootProps != null && !isObject(rootProps)) {
6961
- warn(`root props passed to app.mount() must be an object.`);
6961
+ warn$1(`root props passed to app.mount() must be an object.`);
6962
6962
  rootProps = null;
6963
6963
  }
6964
6964
  const context = createAppContext();
@@ -6977,14 +6977,14 @@ function createAppAPI(render, hydrate) {
6977
6977
  },
6978
6978
  set config(v) {
6979
6979
  {
6980
- warn(
6980
+ warn$1(
6981
6981
  `app.config cannot be replaced. Modify individual options instead.`
6982
6982
  );
6983
6983
  }
6984
6984
  },
6985
6985
  use(plugin, ...options) {
6986
6986
  if (installedPlugins.has(plugin)) {
6987
- warn(`Plugin has already been applied to target app.`);
6987
+ warn$1(`Plugin has already been applied to target app.`);
6988
6988
  } else if (plugin && isFunction(plugin.install)) {
6989
6989
  installedPlugins.add(plugin);
6990
6990
  plugin.install(app, ...options);
@@ -6992,7 +6992,7 @@ function createAppAPI(render, hydrate) {
6992
6992
  installedPlugins.add(plugin);
6993
6993
  plugin(app, ...options);
6994
6994
  } else {
6995
- warn(
6995
+ warn$1(
6996
6996
  `A plugin must either be a function or an object with an "install" function.`
6997
6997
  );
6998
6998
  }
@@ -7003,7 +7003,7 @@ function createAppAPI(render, hydrate) {
7003
7003
  if (!context.mixins.includes(mixin)) {
7004
7004
  context.mixins.push(mixin);
7005
7005
  } else {
7006
- warn(
7006
+ warn$1(
7007
7007
  "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "")
7008
7008
  );
7009
7009
  }
@@ -7018,7 +7018,7 @@ function createAppAPI(render, hydrate) {
7018
7018
  return context.components[name];
7019
7019
  }
7020
7020
  if (context.components[name]) {
7021
- warn(`Component "${name}" has already been registered in target app.`);
7021
+ warn$1(`Component "${name}" has already been registered in target app.`);
7022
7022
  }
7023
7023
  context.components[name] = component;
7024
7024
  return app;
@@ -7031,7 +7031,7 @@ function createAppAPI(render, hydrate) {
7031
7031
  return context.directives[name];
7032
7032
  }
7033
7033
  if (context.directives[name]) {
7034
- warn(`Directive "${name}" has already been registered in target app.`);
7034
+ warn$1(`Directive "${name}" has already been registered in target app.`);
7035
7035
  }
7036
7036
  context.directives[name] = directive;
7037
7037
  return app;
@@ -7039,7 +7039,7 @@ function createAppAPI(render, hydrate) {
7039
7039
  mount(rootContainer, isHydrate, namespace) {
7040
7040
  if (!isMounted) {
7041
7041
  if (rootContainer.__vue_app__) {
7042
- warn(
7042
+ warn$1(
7043
7043
  `There is already an app instance mounted on the host container.
7044
7044
  If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.`
7045
7045
  );
@@ -7074,7 +7074,7 @@ function createAppAPI(render, hydrate) {
7074
7074
  }
7075
7075
  return getExposeProxy(vnode.component) || vnode.component.proxy;
7076
7076
  } else {
7077
- warn(
7077
+ warn$1(
7078
7078
  `App has already been mounted.
7079
7079
  If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\``
7080
7080
  );
@@ -7089,12 +7089,12 @@ If you want to remount the same app, move your app creation logic into a factory
7089
7089
  }
7090
7090
  delete app._container.__vue_app__;
7091
7091
  } else {
7092
- warn(`Cannot unmount an app that is not mounted.`);
7092
+ warn$1(`Cannot unmount an app that is not mounted.`);
7093
7093
  }
7094
7094
  },
7095
7095
  provide(key, value) {
7096
7096
  if (key in context.provides) {
7097
- warn(
7097
+ warn$1(
7098
7098
  `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7099
7099
  );
7100
7100
  }
@@ -7121,7 +7121,7 @@ let currentApp = null;
7121
7121
  function provide(key, value) {
7122
7122
  if (!currentInstance) {
7123
7123
  {
7124
- warn(`provide() can only be used inside setup().`);
7124
+ warn$1(`provide() can only be used inside setup().`);
7125
7125
  }
7126
7126
  } else {
7127
7127
  let provides = currentInstance.provides;
@@ -7141,10 +7141,10 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) {
7141
7141
  } else if (arguments.length > 1) {
7142
7142
  return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
7143
7143
  } else {
7144
- warn(`injection "${String(key)}" not found.`);
7144
+ warn$1(`injection "${String(key)}" not found.`);
7145
7145
  }
7146
7146
  } else {
7147
- warn(`inject() can only be used inside setup() or functional components.`);
7147
+ warn$1(`inject() can only be used inside setup() or functional components.`);
7148
7148
  }
7149
7149
  }
7150
7150
  function hasInjectionContext() {
@@ -7460,7 +7460,7 @@ function normalizePropsOptions(comp, appContext, asMixin = false) {
7460
7460
  if (isArray(raw)) {
7461
7461
  for (let i = 0; i < raw.length; i++) {
7462
7462
  if (!isString(raw[i])) {
7463
- warn(`props must be strings when using array syntax.`, raw[i]);
7463
+ warn$1(`props must be strings when using array syntax.`, raw[i]);
7464
7464
  }
7465
7465
  const normalizedKey = camelize(raw[i]);
7466
7466
  if (validatePropName(normalizedKey)) {
@@ -7469,7 +7469,7 @@ function normalizePropsOptions(comp, appContext, asMixin = false) {
7469
7469
  }
7470
7470
  } else if (raw) {
7471
7471
  if (!isObject(raw)) {
7472
- warn(`invalid props options`, raw);
7472
+ warn$1(`invalid props options`, raw);
7473
7473
  }
7474
7474
  for (const key in raw) {
7475
7475
  const normalizedKey = camelize(key);
@@ -7498,7 +7498,7 @@ function validatePropName(key) {
7498
7498
  if (key[0] !== "$") {
7499
7499
  return true;
7500
7500
  } else {
7501
- warn(`Invalid prop name: "${key}" is a reserved property.`);
7501
+ warn$1(`Invalid prop name: "${key}" is a reserved property.`);
7502
7502
  }
7503
7503
  return false;
7504
7504
  }
@@ -7536,7 +7536,7 @@ function validateProps(rawProps, props, instance) {
7536
7536
  function validateProp(name, value, prop, props, isAbsent) {
7537
7537
  const { type, required, validator, skipCheck } = prop;
7538
7538
  if (required && isAbsent) {
7539
- warn('Missing required prop: "' + name + '"');
7539
+ warn$1('Missing required prop: "' + name + '"');
7540
7540
  return;
7541
7541
  }
7542
7542
  if (value == null && !required) {
@@ -7552,12 +7552,12 @@ function validateProp(name, value, prop, props, isAbsent) {
7552
7552
  isValid = valid;
7553
7553
  }
7554
7554
  if (!isValid) {
7555
- warn(getInvalidTypeMessage(name, value, expectedTypes));
7555
+ warn$1(getInvalidTypeMessage(name, value, expectedTypes));
7556
7556
  return;
7557
7557
  }
7558
7558
  }
7559
7559
  if (validator && !validator(value, props)) {
7560
- warn('Invalid prop: custom validator check failed for prop "' + name + '".');
7560
+ warn$1('Invalid prop: custom validator check failed for prop "' + name + '".');
7561
7561
  }
7562
7562
  }
7563
7563
  const isSimpleType = /* @__PURE__ */ makeMap(
@@ -7629,7 +7629,7 @@ const normalizeSlot = (key, rawSlot, ctx) => {
7629
7629
  }
7630
7630
  const normalized = withCtx((...args) => {
7631
7631
  if (currentInstance) {
7632
- warn(
7632
+ warn$1(
7633
7633
  `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
7634
7634
  );
7635
7635
  }
@@ -7648,7 +7648,7 @@ const normalizeObjectSlots = (rawSlots, slots, instance) => {
7648
7648
  slots[key] = normalizeSlot(key, value, ctx);
7649
7649
  } else if (value != null) {
7650
7650
  if (!isCompatEnabled$1("RENDER_FUNCTION", instance)) {
7651
- warn(
7651
+ warn$1(
7652
7652
  `Non-function value encountered for slot "${key}". Prefer function slots for better performance.`
7653
7653
  );
7654
7654
  }
@@ -7659,7 +7659,7 @@ const normalizeObjectSlots = (rawSlots, slots, instance) => {
7659
7659
  };
7660
7660
  const normalizeVNodeSlots = (instance, children) => {
7661
7661
  if (!isKeepAlive(instance.vnode) && !isCompatEnabled$1("RENDER_FUNCTION", instance)) {
7662
- warn(
7662
+ warn$1(
7663
7663
  `Non-function value encountered for default slot. Prefer function slots for better performance.`
7664
7664
  );
7665
7665
  }
@@ -7743,7 +7743,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7743
7743
  const value = isUnmount ? null : refValue;
7744
7744
  const { i: owner, r: ref } = rawRef;
7745
7745
  if (!owner) {
7746
- warn(
7746
+ warn$1(
7747
7747
  `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`
7748
7748
  );
7749
7749
  return;
@@ -7798,7 +7798,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7798
7798
  if (rawRef.k)
7799
7799
  refs[rawRef.k] = value;
7800
7800
  } else {
7801
- warn("Invalid template ref type:", ref, `(${typeof ref})`);
7801
+ warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
7802
7802
  }
7803
7803
  };
7804
7804
  if (value) {
@@ -7808,7 +7808,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7808
7808
  doSet();
7809
7809
  }
7810
7810
  } else {
7811
- warn("Invalid template ref type:", ref, `(${typeof ref})`);
7811
+ warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
7812
7812
  }
7813
7813
  }
7814
7814
  }
@@ -7840,7 +7840,7 @@ function createHydrationFunctions(rendererInternals) {
7840
7840
  } = rendererInternals;
7841
7841
  const hydrate = (vnode, container) => {
7842
7842
  if (!container.hasChildNodes()) {
7843
- warn(
7843
+ warn$1(
7844
7844
  `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`
7845
7845
  );
7846
7846
  patch(null, vnode, container);
@@ -7900,7 +7900,7 @@ function createHydrationFunctions(rendererInternals) {
7900
7900
  } else {
7901
7901
  if (node.data !== vnode.children) {
7902
7902
  hasMismatch = true;
7903
- warn(
7903
+ warn$1(
7904
7904
  `Hydration text mismatch in`,
7905
7905
  node.parentNode,
7906
7906
  `
@@ -8035,7 +8035,7 @@ function createHydrationFunctions(rendererInternals) {
8035
8035
  hydrateNode
8036
8036
  );
8037
8037
  } else {
8038
- warn("Invalid HostVNode type:", type, `(${typeof type})`);
8038
+ warn$1("Invalid HostVNode type:", type, `(${typeof type})`);
8039
8039
  }
8040
8040
  }
8041
8041
  if (ref != null) {
@@ -8076,7 +8076,7 @@ function createHydrationFunctions(rendererInternals) {
8076
8076
  while (next) {
8077
8077
  hasMismatch = true;
8078
8078
  if (!hasWarned) {
8079
- warn(
8079
+ warn$1(
8080
8080
  `Hydration children mismatch on`,
8081
8081
  el,
8082
8082
  `
@@ -8091,7 +8091,7 @@ Server rendered element contains more child nodes than client vdom.`
8091
8091
  } else if (shapeFlag & 8) {
8092
8092
  if (el.textContent !== vnode.children) {
8093
8093
  hasMismatch = true;
8094
- warn(
8094
+ warn$1(
8095
8095
  `Hydration text content mismatch on`,
8096
8096
  el,
8097
8097
  `
@@ -8160,7 +8160,7 @@ Server rendered element contains more child nodes than client vdom.`
8160
8160
  } else {
8161
8161
  hasMismatch = true;
8162
8162
  if (!hasWarned) {
8163
- warn(
8163
+ warn$1(
8164
8164
  `Hydration children mismatch on`,
8165
8165
  container,
8166
8166
  `
@@ -8207,7 +8207,7 @@ Server rendered element contains fewer child nodes than client vdom.`
8207
8207
  };
8208
8208
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
8209
8209
  hasMismatch = true;
8210
- warn(
8210
+ warn$1(
8211
8211
  `Hydration node mismatch:
8212
8212
  - rendered on server:`,
8213
8213
  node,
@@ -8285,9 +8285,9 @@ function propHasMismatch(el, key, clientValue) {
8285
8285
  let actual;
8286
8286
  let expected;
8287
8287
  if (key === "class") {
8288
- actual = el.getAttribute("class");
8289
- expected = normalizeClass(clientValue);
8290
- if (actual !== expected) {
8288
+ actual = toClassSet(el.getAttribute("class") || "");
8289
+ expected = toClassSet(normalizeClass(clientValue));
8290
+ if (!isSetEqual(actual, expected)) {
8291
8291
  mismatchType = mismatchKey = `class`;
8292
8292
  }
8293
8293
  } else if (key === "style") {
@@ -8306,7 +8306,7 @@ function propHasMismatch(el, key, clientValue) {
8306
8306
  }
8307
8307
  if (mismatchType) {
8308
8308
  const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`;
8309
- warn(
8309
+ warn$1(
8310
8310
  `Hydration ${mismatchType} mismatch on`,
8311
8311
  el,
8312
8312
  `
@@ -8319,6 +8319,20 @@ function propHasMismatch(el, key, clientValue) {
8319
8319
  }
8320
8320
  return false;
8321
8321
  }
8322
+ function toClassSet(str) {
8323
+ return new Set(str.trim().split(/\s+/));
8324
+ }
8325
+ function isSetEqual(a, b) {
8326
+ if (a.size !== b.size) {
8327
+ return false;
8328
+ }
8329
+ for (const s of a) {
8330
+ if (!b.has(s)) {
8331
+ return false;
8332
+ }
8333
+ }
8334
+ return true;
8335
+ }
8322
8336
 
8323
8337
  let supported;
8324
8338
  let perf;
@@ -8371,7 +8385,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8371
8385
  const target = getGlobalThis();
8372
8386
  target.__VUE__ = true;
8373
8387
  {
8374
- setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
8388
+ setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
8375
8389
  }
8376
8390
  const {
8377
8391
  insert: hostInsert,
@@ -8480,7 +8494,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8480
8494
  internals
8481
8495
  );
8482
8496
  } else {
8483
- warn("Invalid VNode type:", type, `(${typeof type})`);
8497
+ warn$1("Invalid VNode type:", type, `(${typeof type})`);
8484
8498
  }
8485
8499
  }
8486
8500
  if (ref != null && parentComponent) {
@@ -9474,7 +9488,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9474
9488
  const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
9475
9489
  if (nextChild.key != null) {
9476
9490
  if (keyToNewIndexMap.has(nextChild.key)) {
9477
- warn(
9491
+ warn$1(
9478
9492
  `Duplicate keys found during update:`,
9479
9493
  JSON.stringify(nextChild.key),
9480
9494
  `Make sure keys are unique.`
@@ -9912,14 +9926,14 @@ const resolveTarget = (props, select) => {
9912
9926
  const targetSelector = props && props.to;
9913
9927
  if (isString(targetSelector)) {
9914
9928
  if (!select) {
9915
- warn(
9929
+ warn$1(
9916
9930
  `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`
9917
9931
  );
9918
9932
  return null;
9919
9933
  } else {
9920
9934
  const target = select(targetSelector);
9921
9935
  if (!target) {
9922
- warn(
9936
+ warn$1(
9923
9937
  `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`
9924
9938
  );
9925
9939
  }
@@ -9927,7 +9941,7 @@ const resolveTarget = (props, select) => {
9927
9941
  }
9928
9942
  } else {
9929
9943
  if (!targetSelector && !isTeleportDisabled(props)) {
9930
- warn(`Invalid Teleport target: ${targetSelector}`);
9944
+ warn$1(`Invalid Teleport target: ${targetSelector}`);
9931
9945
  }
9932
9946
  return targetSelector;
9933
9947
  }
@@ -9963,7 +9977,7 @@ const TeleportImpl = {
9963
9977
  namespace = "mathml";
9964
9978
  }
9965
9979
  } else if (!disabled) {
9966
- warn("Invalid Teleport target on mount:", target, `(${typeof target})`);
9980
+ warn$1("Invalid Teleport target on mount:", target, `(${typeof target})`);
9967
9981
  }
9968
9982
  const mount = (container2, anchor2) => {
9969
9983
  if (shapeFlag & 16) {
@@ -10050,7 +10064,7 @@ const TeleportImpl = {
10050
10064
  0
10051
10065
  );
10052
10066
  } else {
10053
- warn(
10067
+ warn$1(
10054
10068
  "Invalid Teleport target on update:",
10055
10069
  target,
10056
10070
  `(${typeof target})`
@@ -10351,7 +10365,7 @@ function createBaseVNode(type, props = null, children = null, patchFlag = 0, dyn
10351
10365
  vnode.shapeFlag |= isString(children) ? 8 : 16;
10352
10366
  }
10353
10367
  if (vnode.key !== vnode.key) {
10354
- warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);
10368
+ warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);
10355
10369
  }
10356
10370
  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
10357
10371
  !isBlockNode && // has current parent block
@@ -10374,7 +10388,7 @@ const createVNode = createVNodeWithArgsTransform ;
10374
10388
  function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
10375
10389
  if (!type || type === NULL_DYNAMIC_COMPONENT) {
10376
10390
  if (!type) {
10377
- warn(`Invalid vnode type when creating vnode: ${type}.`);
10391
+ warn$1(`Invalid vnode type when creating vnode: ${type}.`);
10378
10392
  }
10379
10393
  type = Comment;
10380
10394
  }
@@ -10420,7 +10434,7 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
10420
10434
  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;
10421
10435
  if (shapeFlag & 4 && isProxy(type)) {
10422
10436
  type = toRaw(type);
10423
- warn(
10437
+ warn$1(
10424
10438
  `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
10425
10439
  `
10426
10440
  Component that was made reactive: `,
@@ -10736,7 +10750,7 @@ const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component");
10736
10750
  function validateComponentName(name, config) {
10737
10751
  const appIsNativeTag = config.isNativeTag || NO;
10738
10752
  if (isBuiltInTag(name) || appIsNativeTag(name)) {
10739
- warn(
10753
+ warn$1(
10740
10754
  "Do not use built-in or reserved HTML elements as component id: " + name
10741
10755
  );
10742
10756
  }
@@ -10775,7 +10789,7 @@ function setupStatefulComponent(instance, isSSR) {
10775
10789
  }
10776
10790
  }
10777
10791
  if (Component.compilerOptions && isRuntimeOnly()) {
10778
- warn(
10792
+ warn$1(
10779
10793
  `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`
10780
10794
  );
10781
10795
  }
@@ -10810,7 +10824,7 @@ function setupStatefulComponent(instance, isSSR) {
10810
10824
  instance.asyncDep = setupResult;
10811
10825
  if (!instance.suspense) {
10812
10826
  const name = (_a = Component.name) != null ? _a : "Anonymous";
10813
- warn(
10827
+ warn$1(
10814
10828
  `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`
10815
10829
  );
10816
10830
  }
@@ -10831,7 +10845,7 @@ function handleSetupResult(instance, setupResult, isSSR) {
10831
10845
  }
10832
10846
  } else if (isObject(setupResult)) {
10833
10847
  if (isVNode(setupResult)) {
10834
- warn(
10848
+ warn$1(
10835
10849
  `setup() should not return VNodes directly - return a render function instead.`
10836
10850
  );
10837
10851
  }
@@ -10843,7 +10857,7 @@ function handleSetupResult(instance, setupResult, isSSR) {
10843
10857
  exposeSetupStateOnRenderContext(instance);
10844
10858
  }
10845
10859
  } else if (setupResult !== void 0) {
10846
- warn(
10860
+ warn$1(
10847
10861
  `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}`
10848
10862
  );
10849
10863
  }
@@ -10916,12 +10930,12 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
10916
10930
  }
10917
10931
  if (!Component.render && instance.render === NOOP && !isSSR) {
10918
10932
  if (!compile$1 && Component.template) {
10919
- warn(
10933
+ warn$1(
10920
10934
  `Component provided template option but runtime compilation is not supported in this build of Vue.` + (``)
10921
10935
  /* should not happen */
10922
10936
  );
10923
10937
  } else {
10924
- warn(`Component is missing template or render function.`);
10938
+ warn$1(`Component is missing template or render function.`);
10925
10939
  }
10926
10940
  }
10927
10941
  }
@@ -10935,11 +10949,11 @@ function getAttrsProxy(instance) {
10935
10949
  return target[key];
10936
10950
  },
10937
10951
  set() {
10938
- warn(`setupContext.attrs is readonly.`);
10952
+ warn$1(`setupContext.attrs is readonly.`);
10939
10953
  return false;
10940
10954
  },
10941
10955
  deleteProperty() {
10942
- warn(`setupContext.attrs is readonly.`);
10956
+ warn$1(`setupContext.attrs is readonly.`);
10943
10957
  return false;
10944
10958
  }
10945
10959
  }
@@ -10957,7 +10971,7 @@ function createSetupContext(instance) {
10957
10971
  const expose = (exposed) => {
10958
10972
  {
10959
10973
  if (instance.exposed) {
10960
- warn(`expose() should be called only once per setup().`);
10974
+ warn$1(`expose() should be called only once per setup().`);
10961
10975
  }
10962
10976
  if (exposed != null) {
10963
10977
  let exposedType = typeof exposed;
@@ -10969,7 +10983,7 @@ function createSetupContext(instance) {
10969
10983
  }
10970
10984
  }
10971
10985
  if (exposedType !== "object") {
10972
- warn(
10986
+ warn$1(
10973
10987
  `expose() should be passed a plain object, received ${exposedType}.`
10974
10988
  );
10975
10989
  }
@@ -11069,7 +11083,7 @@ const useSSRContext = () => {
11069
11083
  {
11070
11084
  const ctx = inject(ssrContextKey);
11071
11085
  if (!ctx) {
11072
- warn(
11086
+ warn$1(
11073
11087
  `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`
11074
11088
  );
11075
11089
  }
@@ -11278,8 +11292,11 @@ function isMemoSame(cached, memo) {
11278
11292
  return true;
11279
11293
  }
11280
11294
 
11281
- const version = "3.4.0-beta.4";
11295
+ const version = "3.4.0-rc.2";
11296
+ const warn = warn$1 ;
11282
11297
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11298
+ const devtools = devtools$1 ;
11299
+ const setDevtoolsHook = setDevtoolsHook$1 ;
11283
11300
  const _ssrUtils = {
11284
11301
  createComponentInstance,
11285
11302
  setupComponent,
@@ -12989,7 +13006,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
12989
13006
  defineProps: defineProps,
12990
13007
  defineSSRCustomElement: defineSSRCustomElement,
12991
13008
  defineSlots: defineSlots,
12992
- get devtools () { return devtools; },
13009
+ devtools: devtools,
12993
13010
  effect: effect,
12994
13011
  effectScope: effectScope,
12995
13012
  getCurrentInstance: getCurrentInstance,
@@ -14948,12 +14965,6 @@ const tokenizer = new Tokenizer(stack, {
14948
14965
  loc: getLoc(start - 1, end),
14949
14966
  codegenNode: void 0
14950
14967
  };
14951
- if (tokenizer.inSFCRoot) {
14952
- currentOpenTag.innerLoc = getLoc(
14953
- end + fastForward(end) + 1,
14954
- end
14955
- );
14956
- }
14957
14968
  },
14958
14969
  onopentagend(end) {
14959
14970
  endOpenTag(end);
@@ -15281,6 +15292,9 @@ function getSlice(start, end) {
15281
15292
  return currentInput.slice(start, end);
15282
15293
  }
15283
15294
  function endOpenTag(end) {
15295
+ if (tokenizer.inSFCRoot) {
15296
+ currentOpenTag.innerLoc = getLoc(end + 1, end + 1);
15297
+ }
15284
15298
  addNode(currentOpenTag);
15285
15299
  const { tag, ns } = currentOpenTag;
15286
15300
  if (ns === 0 && currentOptions.isPreTag(tag)) {
@@ -15314,7 +15328,7 @@ function onCloseTag(el, end, isImplied = false) {
15314
15328
  if (isImplied) {
15315
15329
  setLocEnd(el.loc, backTrack(end, 60));
15316
15330
  } else {
15317
- setLocEnd(el.loc, end + fastForward(end) + 1);
15331
+ setLocEnd(el.loc, end + 1);
15318
15332
  }
15319
15333
  if (tokenizer.inSFCRoot) {
15320
15334
  if (el.children.length) {
@@ -15409,13 +15423,6 @@ function onCloseTag(el, end, isImplied = false) {
15409
15423
  }
15410
15424
  }
15411
15425
  }
15412
- function fastForward(start, c) {
15413
- let offset = 0;
15414
- while (currentInput.charCodeAt(start + offset) !== 62 && start + offset < currentInput.length) {
15415
- offset++;
15416
- }
15417
- return offset;
15418
- }
15419
15426
  function backTrack(index, c) {
15420
15427
  let i = index;
15421
15428
  while (currentInput.charCodeAt(i) !== c && i >= 0)