+ `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,
+ null,
+ 10
+ );
+ return true;
+ } else {
+ seen.set(fn, count + 1);
+ }
+ }
+}
+const hmrDirtyComponents = /* @__PURE__ */ new Set();
+ if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
+ // this means the reciever is a user proxy of the reactive proxy
+ if (rawKey !== key && has2.call(target, rawKey)) {
+ const type = toRawType(target);
+ warn$2(
+ `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`
+ );
+ }
+}
+const reactiveMap = /* @__PURE__ */ new WeakMap();
+const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
+const readonlyMap = /* @__PURE__ */ new WeakMap();
+const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
+const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;
+ `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,
+ if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
+ warn$1(
+ `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(
+ instance,
+ instance.type
+ )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(
+ event
+ )}" instead of "${event}".`
+ );
+ }
+ }
+ let handlerName;
+ let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
+ `\`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.`
+ );
+ }
+ return doWatch(source, cb, options);
+}
+function doWatch(source, cb, {
+ immediate,
+ deep,
+ flush,
+ once: once2,
+ onTrack,
+ onTrigger
+} = EMPTY_OBJ) {
+ if (cb && once2) {
+ const _cb = cb;
+ cb = (...args) => {
+ _cb(...args);
+ unwatch();
+ };
+ }
+ if (deep !== void 0 && typeof deep === "number") {
+ warn$1(
+ `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`
+ );
+ }
+ if (!cb) {
+ if (immediate !== void 0) {
+ warn$1(
+ `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`
+ );
+ }
+ if (deep !== void 0) {
+ warn$1(
+ `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
+ );
+ }
+ if (once2 !== void 0) {
+ warn$1(
+ `watch() "once" option is only respected when using the watch(source, callback, options?) signature.`
+ );
+ }
+ }
+ const warnInvalidSource = (s2) => {
+ warn$1(
+ `Invalid watch source: `,
+ s2,
+ `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
+ `${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().`
+ `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?`
+ );
+ }
+ }
+ }
+ if (dataOptions) {
+ if (!isFunction(dataOptions)) {
+ warn$1(
+ `The data option must be a function. Plain object usage is no longer supported.`
+ );
+ }
+ const data = dataOptions.call(publicThis, publicThis);
+ if (isPromise(data)) {
+ warn$1(
+ `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`
+ if (Component2.compilerOptions && isRuntimeOnly()) {
+ warn$1(
+ `"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.`
+ if (!Component2.render && instance.render === NOOP && !isSSR) {
+ if (Component2.template) {
+ warn$1(
+ `Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".`
+ );
+ } else {
+ warn$1(`Component is missing template or render function.`);
+ }
+ }
+}
+function getAttrsProxy(instance) {
+ return instance.attrsProxy || (instance.attrsProxy = new Proxy(
+ instance.attrs,
+ {
+ get(target, key) {
+ track(instance, "get", "$attrs");
+ return target[key];
+ },
+ set() {
+ warn$1(`setupContext.attrs is readonly.`);
+ return false;
+ },
+ deleteProperty() {
+ warn$1(`setupContext.attrs is readonly.`);
+ return false;
+ }
+ }
+ ));
+}
+function getSlotsProxy(instance) {
+ return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {
+ get(target, key) {
+ track(instance, "get", "$slots");
+ return target[key];
+ }
+ }));
+}
+function createSetupContext(instance) {
+ const expose = (exposed) => {
+ {
+ if (instance.exposed) {
+ warn$1(`expose() should be called only once per setup().`);
+ }
+ if (exposed != null) {
+ let exposedType = typeof exposed;
+ if (exposedType === "object") {
+ if (isArray(exposed)) {
+ exposedType = "array";
+ } else if (isRef(exposed)) {
+ exposedType = "ref";
+ }
+ }
+ if (exposedType !== "object") {
+ warn$1(
+ `expose() should be passed a plain object, received ${exposedType}.`