@pinia/colada-plugin-delay 0.1.2 → 0.1.3

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 +1 @@
1
- {"version":3,"file":"index.cjs","names":["key","find","USE_QUERY_OPTIONS_KEY: InjectionKey<UseQueryOptionsGlobalDefaults>","currentDefineQueryEntry: DefineQueryEntry | undefined | null","queryEntry_toJSON: <TData, TError>(\n entry: UseQueryEntry<TData, TError>,\n) => _UseQueryEntryNodeValueSerialized<TData, TError>","app: App<unknown>","create","fetch","find","options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial>","lastEntry: UseQueryEntry<TData, TError, TDataInitial>","target","entry","currentDefineQueryEffect: undefined | EffectScope","hasBeenEnsured: boolean | undefined","pages: TPage","data: TData","USE_MUTATION_OPTIONS_KEY: InjectionKey<UseMutationOptionsGlobalDefaults>","triggerCache!: () => void","create","key: EntryKey | undefined","find","currentData: TData | undefined","currentError: TError | undefined","context: OnMutateContext | OnErrorContext | OnSuccessContext","newError: unknown","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJS","__copyProps","__toESM","debounce","hooks","hook","debounce","module","exports","timeout: ReturnType<typeof setTimeout>","pinia","asyncStatus","tags: InspectorNodeTag[]","STATUS_TAG: Record<DataStateStatus, InspectorNodeTag>","ASYNC_STATUS_TAG: Record<AsyncStatus, InspectorNodeTag>","PiniaColada: Plugin<[options?: PiniaColadaOptions]>","pinia"],"sources":["../../../src/entry-keys.ts","../../../src/define-query-options.ts","../../../src/query-options.ts","../../../src/utils.ts","../../../src/query-store.ts","../../../src/use-query.ts","../../../src/define-query.ts","../../../src/use-query-state.ts","../../../src/infinite-query.ts","../../../src/mutation-options.ts","../../../src/mutation-store.ts","../../../src/use-mutation.ts","../../../src/define-mutation.ts","../../../node_modules/.pnpm/@vue+devtools-shared@8.0.5/node_modules/@vue/devtools-shared/dist/index.js","../../../node_modules/.pnpm/perfect-debounce@2.0.0/node_modules/perfect-debounce/dist/index.mjs","../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../node_modules/.pnpm/@vue+devtools-kit@8.0.5/node_modules/@vue/devtools-kit/dist/index.js","../../../src/devtools/plugin.ts","../../../src/pinia-colada.ts","../../../src/plugins/query-hooks.ts"],"sourcesContent":["import type { ErrorDefault } from './types-extension'\n\nexport function toCacheKey(key: undefined): undefined\nexport function toCacheKey(key: EntryKey): string\nexport function toCacheKey(key: EntryKey | undefined): string | undefined\n/**\n * Serializes the given {@link EntryKey | key} (query or mutation key) to a string.\n *\n * @param key - The key to serialize.\n *\n * @see {@link EntryKey}\n */\nexport function toCacheKey(key: EntryKey | undefined): string | undefined {\n return (\n key &&\n JSON.stringify(key, (_, val) =>\n !val || typeof val !== 'object' || Array.isArray(val)\n ? val\n : Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any),\n )\n )\n}\n\n/**\n * Checks whether `subsetKey` is a subset of `fullsetKey` by matching partially objects and arrays.\n *\n * @param subsetKey - subset key to check\n * @param fullsetKey - fullset key to check against\n */\nexport function isSubsetOf(subsetKey: EntryKey, fullsetKey: EntryKey): boolean {\n return subsetKey === fullsetKey\n ? true\n : typeof subsetKey !== typeof fullsetKey\n ? false\n : subsetKey && fullsetKey && typeof subsetKey === 'object' && typeof fullsetKey === 'object'\n ? Object.keys(subsetKey).every((key) =>\n isSubsetOf(\n // NOTE: this or making them `any` in the function signature\n subsetKey[key as unknown as number] as EntryKey,\n fullsetKey[key as unknown as number] as EntryKey,\n ),\n )\n : false\n}\n\n/**\n * Used for keys\n *\n * @internal\n */\nexport type JSONPrimitive = string | number | boolean | null\n\n/**\n * Used for keys\n *\n * @internal\n */\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\n\n/**\n * Used for keys. Interface to avoid deep recursion.\n *\n * @internal\n */\nexport type JSONObject = object\n// NOTE: this doesn't allow interfaces to be assigned to it due to its index signature\n// export interface JSONObject {\n// readonly [key: string]: JSONValue | undefined\n// }\n\n/**\n * Used for keys. Interface to avoid deep recursion.\n *\n * @internal\n */\nexport interface JSONArray extends Array<JSONValue> {}\n\n/**\n * Key used to identify a query or a mutation. Must be a JSON serializable\n * value. Type is unknwon to avoid annoying type errors like recursive types\n * and not being able to assign an interface to it due to its index signature.\n */\nexport type EntryKey = readonly JSONValue[]\n\n/**\n * Internal symbol used to tag the data type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_DATA_TAG = Symbol('Pinia Colada data tag')\n\n/**\n * Internal symbol used to tag the error type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_ERROR_TAG = Symbol('Pinia Colada error tag')\n\n/**\n * Internal symbol used to tag the data initial type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_DATA_INITIAL_TAG = Symbol('Pinia Colada data initial tag')\n\n/**\n * Same as {@link EntryKey} but with a data tag that allows inference of the data type.\n * Used by `defineQueryOptions()`.\n */\nexport type EntryKeyTagged<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = EntryKey & {\n [ENTRY_DATA_TAG]: TData\n [ENTRY_ERROR_TAG]: TError\n [ENTRY_DATA_INITIAL_TAG]: TDataInitial\n}\n\n/**\n * Finds entries that partially match the given key. If no key is provided, all\n * entries are returned.\n *\n * @param map - The map to search in.\n * @param partialKey - The key to match against. If not provided, all entries are yield.\n *\n * @internal\n */\nexport function* find<T extends { key: EntryKey | undefined }>(\n map: Map<string | number, T>,\n partialKey?: EntryKey,\n) {\n for (const entry of map.values()) {\n if (!partialKey || (entry.key && isSubsetOf(partialKey, entry.key))) {\n yield entry\n }\n }\n}\n\n/**\n * Empty starting object for extensions that allows to detect when to update.\n *\n * @internal\n */\nexport const START_EXT = {}\n","import type { DefineQueryOptions } from './define-query'\nimport type { EntryKeyTagged } from './entry-keys'\nimport type { ErrorDefault } from './types-extension'\nimport { useQuery } from './use-query'\n\n/**\n * Tagged version of {@link DefineQueryOptions} that includes a key with\n * data type information.\n */\nexport interface DefineQueryOptionsTagged<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends DefineQueryOptions<TData, TError, TDataInitial> {\n key: EntryKeyTagged<TData, TError, TDataInitial>\n}\n\n/**\n * Define dynamic query options by passing a function that accepts an optional\n * arbitrary parameter and returns the query options. Enables type-safe query\n * keys. Must be passed to {@link useQuery} with or without a getter to\n * retrieve the params.\n *\n * @param setupOptions - A function that returns the query options.\n */\nexport function defineQueryOptions<\n Params,\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n setupOptions: (params?: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n): (params?: Params) => DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define dynamic query options by passing a function that accepts an arbitrary\n * parameter and returns the query options. Enables type-safe query keys.\n * Must be passed to {@link useQuery} alongside a getter for the params.\n *\n * @param setupOptions - A function that returns the query options.\n */\nexport function defineQueryOptions<\n Params,\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n): (params: Params) => DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define static query options that are type safe with\n * `queryCache.getQueryData()`. Can be passed directly to {@link useQuery}.\n *\n * @param options - The query options.\n */\nexport function defineQueryOptions<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n options: DefineQueryOptions<TData, TError, TDataInitial>,\n): DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define type-safe query options. Can be static or dynamic. Define the arguments based\n * on what's needed on the query and the key. Use an object if you need\n * multiple properties.\n *\n * @param setupOrOptions - The query options or a function that returns the query options.\n *\n * @example\n * ```ts\n * import { defineQueryOptions } from '@pinia/colada'\n *\n * const documentDetailsQuery = defineQueryOptions((id: number ) => ({\n * key: ['documents', id],\n * query: () => fetchDocument(id),\n * }))\n *\n * queryCache.getQueryData(documentDetailsQuery(4).key) // typed\n * ```\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport function defineQueryOptions<const Options extends DefineQueryOptions, Params>(\n setupOrOptions: Options | ((params: Params) => Options),\n): Options | ((params: Params) => Options) {\n return setupOrOptions\n}\n","import { inject } from 'vue'\nimport type { InjectionKey, MaybeRefOrGetter } from 'vue'\nimport type { EntryKey } from './entry-keys'\nimport type { ErrorDefault, QueryMeta } from './types-extension'\n\n/**\n * Possible values for `refetchOnMount`, `refetchOnWindowFocus`, and `refetchOnReconnect`.\n * `true` refetches if data is stale (calles `refresh()`), `false` never refetches, `'always'` always refetches.\n */\nexport type RefetchOnControl = boolean | 'always'\n\n/**\n * Options for queries that can be globally overridden.\n */\nexport interface UseQueryOptionsGlobal {\n /**\n * Whether the query should be enabled or not. If `false`, the query will not\n * be executed until `refetch()` or `refresh()` is called. If it becomes\n * `true`, the query will be refreshed.\n */\n enabled?: MaybeRefOrGetter<boolean>\n\n /**\n * Time in ms after which the data is considered stale and will be refreshed\n * on next read.\n *\n * @default 5000 (5 seconds)\n */\n staleTime?: number\n\n /**\n * Time in ms after which, once the data is no longer being used, it will be\n * garbage collected to free resources. Set to `false` to disable garbage\n * collection.\n *\n * @default 300_000 (5 minutes)\n */\n gcTime?: number | false\n\n /**\n * Whether to refetch the query when the component is mounted.\n * @default true\n */\n refetchOnMount?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * Whether to refetch the query when the window regains focus.\n * @default true\n */\n refetchOnWindowFocus?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * Whether to refetch the query when the network reconnects.\n * @default true\n */\n refetchOnReconnect?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * A placeholder data that is initially shown while the query is loading for\n * the first time. This will also show the `status` as `success` until the\n * query finishes loading (no matter the outcome of the query). Note: unlike\n * with `initialData`, the placeholder does not change the cache state.\n */\n placeholderData?: (previousData: unknown) => any // any allows us to not worry about the types when merging options\n\n /**\n * Whether to catch errors during SSR (onServerPrefetch) when the query fails.\n * @default false\n */\n ssrCatchError?: boolean\n}\n\n/**\n * Context object passed to the `query` function of `useQuery()`.\n * @see {@link UseQueryOptions}\n */\nexport interface UseQueryFnContext {\n /**\n * `AbortSignal` instance attached to the query call. If the call becomes\n * outdated (e.g. due to a new call with the same key), the signal will be\n * aborted.\n */\n signal: AbortSignal\n}\n\n/**\n * Type-only symbol to keep the type\n *\n * @internal\n */\nexport declare const tErrorSymbol: unique symbol\n\n/**\n * Options for `useQuery()`. Can be extended by plugins.\n *\n * @example\n * ```ts\n * // use-query-plugin.d.ts\n * export {} // needed\n * declare module '@pinia/colada' {\n * interface UseQueryOptions {\n * // Whether to refresh the data when the component is mounted.\n * refreshOnMount?: boolean\n * }\n * }\n * ```\n */\nexport interface UseQueryOptions<\n TData = unknown,\n // eslint-disable-next-line unused-imports/no-unused-vars\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends Pick<\n UseQueryOptionsGlobal,\n | 'gcTime'\n | 'enabled'\n | 'refetchOnMount'\n | 'refetchOnReconnect'\n | 'refetchOnWindowFocus'\n | 'staleTime'\n | 'ssrCatchError'\n> {\n /**\n * The key used to identify the query. Array of primitives **without**\n * reactive values or a reactive array or getter. It should be treaded as an\n * array of dependencies of your queries, e.g. if you use the\n * `route.params.id` property, it should also be part of the key:\n *\n * ```ts\n * import { useRoute } from 'vue-router'\n * import { useQuery } from '@pinia/colada'\n *\n * const route = useRoute()\n * const { data } = useQuery({\n * // pass a getter function (or computed, ref, etc.) to ensure reactivity\n * key: () => ['user', route.params.id],\n * query: () => fetchUser(route.params.id),\n * })\n * ```\n */\n key: MaybeRefOrGetter<EntryKey>\n\n /**\n * The function that will be called to fetch the data. It **must** be async.\n */\n query: (context: UseQueryFnContext) => Promise<TData>\n\n /**\n * The data which is initially set to the query while the query is loading\n * for the first time. Note: unlike with {@link placeholderData}, setting the\n * initial data changes the state of the query (it will be set to `success`).\n *\n * @see {@link placeholderData}\n */\n initialData?: () => TDataInitial\n\n /**\n * A placeholder data that is initially shown while the query is loading for\n * the first time. This will also show the `status` as `success` until the\n * query finishes loading (no matter the outcome of the query). Note: unlike\n * with {@link initialData}, the placeholder does not change the cache state.\n *\n * @see {@link initialData}\n */\n placeholderData?:\n | NoInfer<TDataInitial>\n | NoInfer<TData>\n // NOTE: the generic here allows to make UseQueryOptions<T> assignable to UseQueryOptions<unknown>\n // https://www.typescriptlang.org/play/?#code/JYOwLgpgTgZghgYwgAgPIAczAPYgM4A8AKsgLzICuIA1iNgO4gB8yA3gFDLICOAXMgAoAlGRYAFKNgC2wPBGJNOydAH5eSrgHpNyABZwAbqADmyMLpRwoxilIjhkAIygQ41PMmBgNyAD6CBdBcjbAo8ABE4MDh+ADlsAEkQGGgFP0oQABMIGFAITJFSFniklKgFIR9tZCJdWWQDaDwcEGR6bCh3Kp1-AWISCAAPSCyPIiZA4JwwyOj+IhJ-KmzckHzCliJKgF92dlBIWEQUAFFwKABPYjIM2gZmNiVsTBa8fgwsXEJx9JAKABt-uxduwYFQEJ9WggAPr2MCXBQCZ6Qt5oF5fNL+P6AoT8M7wq4-DhcFxgChQVqsZDI17IXa7BBfMDIDzkNb0ZAAZQgYAI+MuE0qeAAdHBMpkBDC4ZcBMSuDx+HA8BcQAhBBtkAAWABMABofOh+AIQBrWgBCNkA-7IFTIVoAKmQ2uQ-E1wKElSAA\n | (<T extends TData>(\n previousData: T | undefined,\n ) => NoInfer<TDataInitial> | NoInfer<TData> | undefined)\n\n /**\n * Meta information associated with the query. Can be a raw object, a function\n * returning the meta object, or a ref containing the meta object.\n * The meta is resolved when the entry is **created** and stored in\n * `entry.meta`.\n *\n * **Note**: Meta is serialized during SSR, so it must be serializable (no functions,\n * class instances, or circular references). You can also completely ignore\n * it during SSR with a ternary: `meta: import.meta.ev.SSR ? {} : actualMeta`\n *\n * @example\n * ```ts\n * // SSR-safe: simple serializable data\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: { errorMessage: true }\n * })\n *\n * // Using a function to compute meta\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: () => ({ timestamp: Date.now() })\n * })\n *\n * // Skipping meta during SSR\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: {\n * onError: import.meta.env.SSR ? undefined : ((err) => console.log('error'))\n * }\n * })\n * ```\n */\n meta?: MaybeRefOrGetter<QueryMeta>\n\n /**\n * Ghost property to ensure TError generic parameter is included in the\n * interface structure. This property should never be used directly and is\n * only for type system correctness. it could be removed in the future if the\n * type can be inferred in any other way.\n *\n * @internal\n */\n readonly [tErrorSymbol]?: TError\n}\n\n/**\n * Default options for `useQuery()`. Modifying this object will affect all the queries that don't override these\n */\nexport const USE_QUERY_DEFAULTS = {\n staleTime: 1000 * 5, // 5 seconds\n gcTime: (1000 * 60 * 5) as NonNullable<UseQueryOptions['gcTime']>, // 5 minutes\n // avoid type narrowing to `true`\n refetchOnWindowFocus: true as NonNullable<UseQueryOptions['refetchOnWindowFocus']>,\n refetchOnReconnect: true as NonNullable<UseQueryOptions['refetchOnReconnect']>,\n refetchOnMount: true as NonNullable<UseQueryOptions['refetchOnMount']>,\n enabled: true as MaybeRefOrGetter<boolean>,\n} satisfies UseQueryOptionsGlobal\n\nexport type UseQueryOptionsWithDefaults<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = UseQueryOptions<TData, TError, TDataInitial> & typeof USE_QUERY_DEFAULTS\n\n/**\n * Global default options for `useQuery()`.\n * @internal\n */\nexport type UseQueryOptionsGlobalDefaults = Pick<\n UseQueryOptionsGlobal,\n | 'gcTime'\n | 'enabled'\n | 'refetchOnMount'\n | 'refetchOnReconnect'\n | 'refetchOnWindowFocus'\n | 'staleTime'\n | 'ssrCatchError'\n> &\n typeof USE_QUERY_DEFAULTS\n\nexport const USE_QUERY_OPTIONS_KEY: InjectionKey<UseQueryOptionsGlobalDefaults> =\n process.env.NODE_ENV !== 'production' ? Symbol('useQueryOptions') : Symbol()\n\n/**\n * Injects the global query options.\n *\n * @internal\n */\nexport const useQueryOptions = (): UseQueryOptionsGlobalDefaults =>\n inject(USE_QUERY_OPTIONS_KEY, USE_QUERY_DEFAULTS)\n","import { computed, getCurrentScope, onScopeDispose } from 'vue'\nimport type { MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\n\n/**\n * Adds an event listener to Window that is automatically removed on scope dispose.\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n listener: (this: Window, ev: WindowEventMap[E]) => any,\n options?: boolean | AddEventListenerOptions,\n): void\n\n/**\n * Adds an event listener to Document that is automatically removed on scope dispose.\n */\nexport function useEventListener<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n listener: (this: Document, ev: DocumentEventMap[E]) => any,\n options?: boolean | AddEventListenerOptions,\n): void\n\nexport function useEventListener(\n target: Document | Window | EventTarget,\n event: string,\n listener: (this: EventTarget, ev: Event) => any,\n options?: boolean | AddEventListenerOptions,\n) {\n target.addEventListener(event, listener, options)\n if (getCurrentScope()) {\n onScopeDispose(() => {\n target.removeEventListener(event, listener)\n })\n }\n}\n\nexport const IS_CLIENT = typeof window !== 'undefined'\n\n/**\n * Type that represents a value that can be an array or a single value.\n *\n * @internal\n */\nexport type _MaybeArray<T> = T | T[]\n\n/**\n * Checks if a type is exactly `any`.\n *\n * @internal\n */\nexport type IsAny<T> = 0 extends 1 & T ? true : false\n\n/**\n * Checks if a type is exactly `unknown`. This is useful to determine if a type is\n *\n * @internal\n */\nexport type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false\n\n/**\n * Type that represents a value that can be a function or a single value. Used\n * for `defineQuery()` and `defineMutation()`.\n *\n * @internal\n */\nexport type _MaybeFunction<T, Args extends any[] = []> = T | ((...args: Args) => T)\n\n/**\n * Transforms a value or a function that returns a value to a value.\n *\n * @param valFn either a value or a function that returns a value\n * @param args arguments to pass to the function if `valFn` is a function\n *\n * @internal\n */\nexport function toValueWithArgs<T, Args extends any[]>(\n valFn: T | ((...args: Args) => T),\n ...args: Args\n): T {\n return typeof valFn === 'function' ? (valFn as (...args: Args) => T)(...args) : valFn\n}\n\n/**\n * Type that represents a value that can be a promise or a single value.\n *\n * @internal\n */\nexport type _Awaitable<T> = T | Promise<T>\n\n/**\n * Flattens an object type for readability.\n *\n * @internal\n */\nexport type _Simplify<T> = { [K in keyof T]: T[K] }\n\n/**\n * Converts a value to an array if necessary.\n *\n * @param value - value to convert\n */\nexport const toArray = <T>(value: _MaybeArray<T>): T[] => (Array.isArray(value) ? value : [value])\n\n/**\n * Valid primitives that can be stringified with `JSON.stringify`.\n *\n * @internal\n */\nexport type _JSONPrimitive = string | number | boolean | null | undefined\n\n/**\n * Utility type to represent a flat object that can be stringified with\n * `JSON.stringify` no matter the order of keys.\n *\n * @internal\n */\nexport interface _ObjectFlat {\n [key: string]: _JSONPrimitive | Array<_JSONPrimitive>\n}\n\n/**\n * Valid values that can be stringified with `JSON.stringify`.\n *\n * @internal\n */\nexport type _JSONValue = _JSONPrimitive | _JSONValue[] | { [key: string]: _JSONValue }\n\n/**\n * Stringifies an object no matter the order of keys. This is used to create a\n * hash for a given object. It only works with flat objects. It can contain\n * arrays of primitives only. `undefined` values are skipped.\n *\n * @param obj - object to stringify\n */\nexport function stringifyFlatObject(obj: _ObjectFlat | _JSONPrimitive): string {\n return obj && typeof obj === 'object' ? JSON.stringify(obj, Object.keys(obj).sort()) : String(obj)\n}\n\n/**\n * Merges two types when the second one can be null | undefined. Allows to safely use the returned type for { ...a,\n * ...undefined, ...null }\n * @internal\n */\nexport type _MergeObjects<Obj, MaybeNull> = MaybeNull extends undefined | null | void\n ? Obj\n : _Simplify<Obj & MaybeNull>\n\n/**\n * @internal\n */\nexport const noop = () => {}\n\n/**\n * Wraps a getter to be used as a ref. This is useful when you want to use a getter as a ref but you need to modify the\n * value.\n *\n * @internal\n * @param other - getter of the ref to compute\n * @returns a wrapper around a writable getter that can be used as a ref\n */\nexport const computedRef = <T>(other: () => Ref<T>): ShallowRef<T> =>\n computed({\n get: () => other().value,\n set: (value) => (other().value = value),\n })\n\n/**\n * Renames a property in an object type.\n */\nexport type _RenameProperty<T, Key extends keyof T, NewKey extends string> = {\n [P in keyof T as P extends Key ? NewKey : P]: T[P]\n}\n\n/**\n * Type safe version of `Object.assign` that allows to set all properties of a reactive object at once. Used to set\n * {@link DataState} properties in a type safe way.\n */\nexport const setReactiveValue = Object.assign as <T>(value: T, ...args: T[]) => T\n\n/**\n * To avoid using `{}`\n * @internal\n */\nexport interface _EmptyObject {}\n\n/**\n * Dev only warning that is only shown once.\n */\nconst warnedMessages = new Set<string>()\n\n/**\n * Warns only once. This should only be used in dev\n *\n * @param message - Message to show\n * @param id - Unique id for the message, defaults to the message\n */\nexport function warnOnce(message: string, id: string = message) {\n if (warnedMessages.has(id)) return\n warnedMessages.add(id)\n console.warn(`[@pinia/colada]: ${message}`)\n}\n\n/**\n * @internal\n */\nexport type _IsMaybeRefOrGetter<T> = [T] extends [MaybeRefOrGetter<infer U>]\n ? MaybeRefOrGetter<U> extends T // must match the wrapper, not just any function\n ? true\n : false\n : false\n\n/**\n * @internal\n */\nexport type _UnwrapMaybeRefOrGetter<T> = T extends MaybeRefOrGetter<infer U> ? U : T\n\n/**\n * Removes the `MaybeRefOrGetter` wrapper from all fields of an object,\n * except for fields specified in the `Ignore` type.\n * @internal\n */\nexport type _RemoveMaybeRef<T, Ignore extends keyof T = never> = {\n [K in keyof T]: K extends Ignore\n ? T[K]\n : _IsMaybeRefOrGetter<NonNullable<T[K]>> extends true\n ? _UnwrapMaybeRefOrGetter<T[K]>\n : T[K]\n}\n","import { defineStore, getActivePinia, skipHydrate } from 'pinia'\nimport {\n effectScope,\n getCurrentInstance,\n getCurrentScope,\n hasInjectionContext,\n markRaw,\n shallowRef,\n toValue,\n watch,\n triggerRef,\n} from 'vue'\nimport type { App, ComponentInternalInstance, EffectScope, ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState } from './data-state'\nimport type { EntryKeyTagged, EntryKey } from './entry-keys'\nimport { useQueryOptions } from './query-options'\nimport type { UseQueryOptions, UseQueryOptionsWithDefaults } from './query-options'\nimport type { EntryFilter } from './entry-filter'\nimport { find, START_EXT, toCacheKey } from './entry-keys'\nimport type { ErrorDefault, QueryMeta } from './types-extension'\nimport { toValueWithArgs, warnOnce } from './utils'\n\n/**\n * Allows defining extensions to the query entry that are returned by `useQuery()`.\n */\n\nexport interface UseQueryEntryExtensions<\n TData,\n /* eslint-disable-next-line unused-imports/no-unused-vars */\n TError,\n /* eslint-disable-next-line unused-imports/no-unused-vars */\n TDataInitial extends TData | undefined = undefined,\n> {}\n\n/**\n * NOTE: Entries could be classes but the point of having all functions within the store is to allow plugins to hook\n * into actions.\n */\n\n/**\n * A query entry in the cache.\n */\nexport interface UseQueryEntry<\n TData = unknown,\n TError = unknown,\n // allows for UseQueryEntry to have unknown everywhere (generic version)\n TDataInitial extends TData | undefined = unknown extends TData ? unknown : undefined,\n> {\n /**\n * The state of the query. Contains the data, error and status.\n */\n state: ShallowRef<DataState<TData, TError, TDataInitial>>\n\n /**\n * A placeholder `data` that is initially shown while the query is loading for the first time. This will also show the\n * `status` as `success` until the query finishes loading (no matter the outcome).\n */\n placeholderData: TDataInitial | TData | null | undefined\n\n /**\n * The status of the query.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * When was this data set in the entry for the last time in ms. It can also\n * be 0 if the entry has been invalidated.\n */\n when: number\n\n /**\n * The serialized key associated with this query entry.\n */\n key: EntryKey\n\n /**\n * Seriaized version of the key. Used to retrieve the entry from the cache.\n */\n keyHash: string\n\n /**\n * Components and effects scopes that use this query entry.\n */\n deps: Set<EffectScope | ComponentInternalInstance>\n\n /**\n * Timeout id that scheduled a garbage collection. It is set here to clear it when the entry is used by a different component\n */\n gcTimeout: ReturnType<typeof setTimeout> | undefined\n\n /**\n * The current pending request.\n */\n pending: null | {\n /**\n * The abort controller used to cancel the request and which `signal` is passed to the query function.\n */\n abortController: AbortController\n /**\n * The promise created by `queryCache.fetch` that is currently pending.\n */\n refreshCall: Promise<DataState<TData, TError, TDataInitial>>\n /**\n * When was this `pending` object created.\n */\n when: number\n }\n\n /**\n * Options used to create the query. They can be `null` during hydration but are needed for fetching. This is why\n * `store.ensure()` sets this property. Note these options might be shared by multiple query entries when the key is\n * dynamic and that's why some methods like {@link fetch} receive the options as an argument.\n */\n options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> | null\n\n /**\n * Whether the data is stale or not, requires `options.staleTime` to be set.\n */\n readonly stale: boolean\n\n /**\n * Whether the query is currently being used by a Component or EffectScope (e.g. a store).\n */\n readonly active: boolean\n\n /**\n * Resolved meta information for this query. This is the computed value\n * from options.meta (function/ref resolved to raw object).\n */\n meta: QueryMeta\n\n /**\n * Extensions to the query entry added by plugins.\n */\n ext: UseQueryEntryExtensions<TData, TError, TDataInitial>\n\n /**\n * Internal property to store the HMR ids of the components that are using\n * this query and force refetching.\n *\n * @internal\n */\n __hmr?: {\n /**\n * Reference count of the components using this query.\n */\n ids: Map<string, number>\n }\n}\n\n/**\n * Keep track of the entry being defined so we can add the queries in ensure\n * this allows us to refresh the entry when a defined query is used again\n * and refetchOnMount is true\n *\n * @internal\n */\nexport let currentDefineQueryEntry: DefineQueryEntry | undefined | null\n\n/**\n * Returns whether the entry is using a placeholder data.\n *\n * @template TDataInitial - Initial data type\n * @param entry - entry to check\n */\nexport function isEntryUsingPlaceholderData<TDataInitial>(\n entry: UseQueryEntry<unknown, unknown, TDataInitial> | undefined | null,\n): entry is UseQueryEntry<unknown, unknown, TDataInitial> & { placeholderData: TDataInitial } {\n return entry?.placeholderData != null && entry.state.value.status === 'pending'\n}\n\n/**\n * Filter object to get entries from the query cache.\n *\n * @see {@link QueryCache.getEntries}\n * @see {@link QueryCache.cancelQueries}\n * @see {@link QueryCache#invalidateQueries}\n */\nexport type UseQueryEntryFilter = EntryFilter<UseQueryEntry>\n\n/**\n * UseQueryEntry method to serialize the entry to JSON.\n *\n * @param entry - entry to serialize\n * @param entry.when - when the data was fetched the last time\n * @param entry.state - data state of the entry\n * @param entry.state.value - value of the data state\n * @returns Serialized version of the entry\n */\nexport const queryEntry_toJSON: <TData, TError>(\n entry: UseQueryEntry<TData, TError>,\n) => _UseQueryEntryNodeValueSerialized<TData, TError> = ({ state: { value }, when, meta }) => [\n value.data,\n value.error,\n // because of time zones, we create a relative time\n when ? Date.now() - when : -1,\n meta,\n]\n// TODO: errors are not serializable by default. We should provide a way to serialize custom errors and, by default provide one that serializes the name and message\n\n/**\n * UseQueryEntry method to serialize the entry to a string.\n *\n * @internal\n * @param entry - entry to serialize\n * @returns Stringified version of the entry\n */\nexport const queryEntry_toString: <TData, TError>(entry: UseQueryEntry<TData, TError>) => string = (\n entry,\n) => String(queryEntry_toJSON(entry))\n\n/**\n * The id of the store used for queries.\n * @internal\n */\nexport const QUERY_STORE_ID = '_pc_query'\n\n/**\n * A query entry that is defined with {@link defineQuery}.\n * @internal\n */\ntype DefineQueryEntry = [\n lastEnsuredEntries: UseQueryEntry[],\n returnValue: unknown,\n effect: EffectScope,\n paused: ShallowRef<boolean>,\n]\n\n/**\n * Composable to get the cache of the queries. As any other composable, it can\n * be used inside the `setup` function of a component, within another\n * composable, or in injectable contexts like stores and navigation guards.\n */\nexport const useQueryCache = /* @__PURE__ */ defineStore(QUERY_STORE_ID, ({ action }) => {\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n const cachesRaw = new Map<string, UseQueryEntry<unknown, unknown, unknown>>()\n const caches = skipHydrate(shallowRef(cachesRaw))\n\n if (process.env.NODE_ENV !== 'production') {\n watch(\n () => caches.value !== cachesRaw,\n (isDifferent) => {\n if (isDifferent) {\n console.error(\n `[@pinia/colada] The query cache cannot be directly set, it must be modified only. This will fail on production`,\n )\n }\n },\n )\n }\n\n // this version of the cache cannot be hydrated because it would miss all of the actions\n // and plugins won't be able to hook into entry creation and fetching\n // this allows use to attach reactive effects to the scope later on\n const scope = getCurrentScope()!\n const app: App<unknown> =\n // @ts-expect-error: internal\n getActivePinia()!._a\n\n if (process.env.NODE_ENV !== 'production') {\n if (!hasInjectionContext()) {\n warnOnce(\n `useQueryCache() was called outside of an injection context (component setup, store, navigation guard) You will get a warning about \"inject\" being used incorrectly from Vue. Make sure to use it only in allowed places.\\n` +\n `See https://vuejs.org/guide/reusability/composables.html#usage-restrictions`,\n )\n }\n }\n\n const optionDefaults = useQueryOptions()\n\n /**\n * Creates a new query entry in the cache. Shouldn't be called directly.\n *\n * @param key - Serialized key of the query\n * @param [options] - options attached to the query\n * @param [initialData] - initial data of the query if any\n * @param [error] - initial error of the query if any\n * @param [when] - relative when was the data or error fetched (will be added to Date.now())\n * @param [meta] - resolved meta information for the query\n */\n const create = action(\n <TData, TError, TDataInitial extends TData | undefined>(\n key: EntryKey,\n options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> | null = null,\n initialData?: TDataInitial,\n error: TError | null = null,\n when: number = 0,\n meta: QueryMeta = {},\n // when: number = initialData === undefined ? 0 : Date.now(),\n ): UseQueryEntry<TData, TError, TDataInitial> =>\n scope.run(() => {\n const state = shallowRef<DataState<TData, TError, TDataInitial>>(\n // @ts-expect-error: to make the code shorter we are using one declaration instead of multiple ternaries\n {\n // NOTE: we could move the `initialData` parameter before `options` and make it required\n // but that would force `create` call in `setQueryData` to pass an extra `undefined` argument\n data: initialData as TDataInitial,\n error,\n status: error ? 'error' : initialData !== undefined ? 'success' : 'pending',\n },\n )\n const asyncStatus = shallowRef<AsyncStatus>('idle')\n // we markRaw to avoid unnecessary vue traversal\n return markRaw<UseQueryEntry<TData, TError, TDataInitial>>({\n key,\n keyHash: toCacheKey(key),\n state,\n placeholderData: null,\n when: initialData === undefined ? 0 : Date.now() - when,\n asyncStatus,\n pending: null,\n // this set can contain components and effects and worsen the performance\n // and create weird warnings\n deps: markRaw(new Set()),\n gcTimeout: undefined,\n // eslint-disable-next-line ts/ban-ts-comment\n // @ts-ignore: some plugins are adding properties to the entry type\n ext: START_EXT,\n options,\n meta,\n get stale() {\n return !this.options || !this.when || Date.now() >= this.when + this.options.staleTime\n },\n get active() {\n return this.deps.size > 0\n },\n } satisfies UseQueryEntry<TData, TError, TDataInitial>)\n })!,\n )\n\n const defineQueryMap = new WeakMap<() => unknown, DefineQueryEntry>()\n\n /**\n * Ensures a query created with {@link defineQuery} is present in the cache. If it's not, it creates a new one.\n * @param fn - function that defines the query\n */\n const ensureDefinedQuery = action(<T>(fn: () => T) => {\n let defineQueryEntry = defineQueryMap.get(fn)\n if (!defineQueryEntry) {\n // create the entry first\n currentDefineQueryEntry = defineQueryEntry = scope.run(() => [\n [],\n null,\n effectScope(),\n shallowRef(false),\n ])!\n\n // then run it so it can add the queries to the entry\n // we use the app context for injections and the scope for effects\n defineQueryEntry[1] = app.runWithContext(() => defineQueryEntry![2].run(fn)!)\n currentDefineQueryEntry = null\n defineQueryMap.set(fn, defineQueryEntry)\n } else {\n // ensure the scope is active so effects computing inside `useQuery()` run (e.g. the entry computed)\n defineQueryEntry[2].resume()\n defineQueryEntry[3].value = false\n // if the entry already exists, we know the queries inside\n // we should consider as if they are activated again\n defineQueryEntry[0] = defineQueryEntry[0].map((oldEntry) =>\n // the entries' key might have changed (e.g. Nuxt navigation)\n // so we need to ensure them again\n oldEntry.options ? ensure(oldEntry.options, oldEntry) : oldEntry,\n )\n }\n\n return defineQueryEntry\n })\n\n /**\n * Tracks an effect or component that uses a query.\n *\n * @param entry - the entry of the query\n * @param effect - the effect or component to untrack\n *\n * @see {@link untrack}\n */\n function track(\n entry: UseQueryEntry,\n effect: EffectScope | ComponentInternalInstance | null | undefined,\n ) {\n if (!effect) return\n entry.deps.add(effect)\n // clearTimeout ignores anything that isn't a timerId\n clearTimeout(entry.gcTimeout)\n entry.gcTimeout = undefined\n triggerRef(caches)\n }\n\n /**\n * Untracks an effect or component that uses a query.\n *\n * @param entry - the entry of the query\n * @param effect - the effect or component to untrack\n *\n * @see {@link track}\n */\n function untrack(\n entry: UseQueryEntry,\n effect: EffectScope | ComponentInternalInstance | undefined | null,\n ) {\n // avoid clearing an existing timeout\n if (!effect || !entry.deps.has(effect)) return\n\n // clear any HMR to avoid letting the set grow\n if (process.env.NODE_ENV !== 'production') {\n if ('type' in effect && '__hmrId' in effect.type && entry.__hmr) {\n const count = (entry.__hmr.ids.get(effect.type.__hmrId) ?? 1) - 1\n if (count > 0) {\n entry.__hmr.ids.set(effect.type.__hmrId, count)\n } else {\n entry.__hmr.ids.delete(effect.type.__hmrId)\n }\n }\n }\n\n entry.deps.delete(effect)\n triggerRef(caches)\n\n scheduleGarbageCollection(entry)\n }\n\n function scheduleGarbageCollection(entry: UseQueryEntry) {\n // schedule a garbage collection if the entry is not active\n // and we know its gcTime value\n if (entry.deps.size > 0 || !entry.options) return\n clearTimeout(entry.gcTimeout)\n entry.pending?.abortController.abort()\n // avoid setting a timeout with false, Infinity or NaN\n if ((Number.isFinite as (val: unknown) => val is number)(entry.options.gcTime)) {\n entry.gcTimeout = setTimeout(() => {\n remove(entry)\n }, entry.options.gcTime)\n }\n }\n\n /**\n * Invalidates and cancel matched queries, and then refetches (in parallel)\n * all active ones. If you need to further control which queries are\n * invalidated, canceled, and/or refetched, you can use the filters, you\n * can direcly call {@link invalidate} on {@link getEntries}:\n *\n * ```ts\n * // instead of doing\n * await queryCache.invalidateQueries(filters)\n * await Promise.all(queryCache.getEntries(filters).map(entry => {\n * queryCache.invalidate(entry)\n * // this is the default behavior of invalidateQueries\n * // return entry.active && queryCache.fetch(entry)\n * // here to refetch everything, even non active queries\n * return queryCache.fetch(entry)\n * })\n * ```\n *\n * @param filters - filters to apply to the entries\n * @param refetchActive - whether to refetch active queries or not. Set\n * to `'all'` to refetch all queries\n *\n * @see {@link invalidate}\n * @see {@link cancel}\n */\n const invalidateQueries = action(\n (filters?: UseQueryEntryFilter, refetchActive: boolean | 'all' = true): Promise<unknown> => {\n return Promise.all(\n getEntries(filters).map((entry) => {\n invalidate(entry)\n return (\n (refetchActive === 'all' || (entry.active && refetchActive)) &&\n toValue(entry.options?.enabled) &&\n fetch(entry)\n )\n }),\n )\n },\n )\n\n /**\n * Returns all the entries in the cache that match the filters.\n *\n * @param filters - filters to apply to the entries\n */\n const getEntries = action((filters: UseQueryEntryFilter = {}): UseQueryEntry[] => {\n // TODO: Iterator.from(node) in 2028 once widely available? or maybe not worth it\n return (\n filters.exact\n ? filters.key\n ? [caches.value.get(toCacheKey(filters.key))].filter((v) => !!v)\n : [] // exact with no key can't match anything\n : [...find(caches.value, filters.key)]\n ).filter(\n (entry) =>\n (filters.stale == null || entry.stale === filters.stale) &&\n (filters.active == null || entry.active === filters.active) &&\n (!filters.status || entry.state.value.status === filters.status) &&\n (!filters.predicate || filters.predicate(entry)),\n )\n })\n\n /**\n * Ensures a query entry is present in the cache. If it's not, it creates a\n * new one. The resulting entry is required to call other methods like\n * {@link fetch}, {@link refresh}, or {@link invalidate}.\n *\n * @param opts - options to create the query\n * @param previousEntry - the previous entry that was associated with the same options\n */\n const ensure = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n opts: UseQueryOptions<TData, TError, TDataInitial>,\n previousEntry?: UseQueryEntry<TData, TError, TDataInitial>,\n ): UseQueryEntry<TData, TError, TDataInitial> => {\n // NOTE: in the code we always pass the options with the defaults but it's convenient\n // to allow ensure be called with just the user options\n const options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> = {\n ...optionDefaults,\n ...opts,\n }\n const key = toValue(options.key)\n const keyHash = toCacheKey(key)\n\n if (process.env.NODE_ENV !== 'production' && keyHash === '[]') {\n throw new Error(\n `useQuery() was called with an empty array as the key. It must have at least one element.`,\n )\n }\n\n // do not reinitialize the entry\n // because of the immediate watcher in useQuery, the `ensure()` action is called twice on mount\n // we return early to avoid pushing to currentDefineQueryEntry\n if (previousEntry && keyHash === previousEntry.keyHash) {\n return previousEntry\n }\n\n // Since ensure() is called within a computed, we cannot let Vue track cache, so we use the raw version instead\n let entry = cachesRaw.get(keyHash) as UseQueryEntry<TData, TError, TDataInitial> | undefined\n // ensure the state\n if (!entry) {\n // Resolve the meta from options.meta (could be function, ref, or raw object)\n\n cachesRaw.set(\n keyHash,\n (entry = create(key, options, options.initialData?.(), null, 0, toValue(options.meta))),\n )\n // the placeholderData is only used if the entry is initially loading\n if (options.placeholderData && entry.state.value.status === 'pending') {\n entry.placeholderData = toValueWithArgs(\n options.placeholderData,\n // pass the previous entry placeholder data if it was in placeholder state\n isEntryUsingPlaceholderData(previousEntry)\n ? previousEntry.placeholderData\n : previousEntry?.state.value.data,\n )\n }\n triggerRef(caches)\n }\n\n // during HMR, staleTime could be long and if we change the query function, the query won't trigger a refetch\n // so we need to detect and trigger just in case\n if (process.env.NODE_ENV !== 'production') {\n const currentInstance = getCurrentInstance()\n if (currentInstance) {\n entry.__hmr ??= { ids: new Map() }\n\n const id =\n // @ts-expect-error: internal property\n currentInstance.type?.__hmrId\n\n // FIXME: if the user mounts the same component multiple times, I think it makes sense to fix this\n // because we could have the same component mounted multiple times with different props but inside of the same\n // they use the same query (cache, centralized). This sholdn't invalidate the query\n // we can fix it by storing the currentInstance.type.render (we need to copy the values because the\n // type object gets reused and replaced in place). It's not clear if this will work with Vapor\n if (id) {\n if (entry.__hmr.ids.has(id)) {\n invalidate(entry)\n }\n const count = (entry.__hmr.ids.get(id) ?? 0) + 1\n entry.__hmr.ids.set(id, count)\n }\n }\n }\n\n // we set it every time to ensure we are using up to date key getters and others options\n entry.options = options\n\n // extend the entry with plugins the first time only\n if (entry.ext === START_EXT) {\n entry.ext = {} as UseQueryEntryExtensions<TData, TError>\n extend(entry)\n }\n\n // if this query was defined within a defineQuery call, add it to the list\n currentDefineQueryEntry?.[0].push(entry)\n\n return entry\n },\n )\n\n /**\n * Action called when an entry is ensured for the first time to allow plugins to extend it.\n *\n * @param _entry - the entry of the query to extend\n */\n const extend = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n _entry: UseQueryEntry<TData, TError, TDataInitial>,\n ) => {},\n )\n\n /**\n * Invalidates and cancels a query entry. It effectively sets the `when`\n * property to `0` and {@link cancel | cancels} the pending request.\n *\n * @param entry - the entry of the query to invalidate\n *\n * @see {@link cancel}\n */\n const invalidate = action((entry: UseQueryEntry) => {\n // will force a fetch next time\n entry.when = 0\n // ignores the pending query\n cancel(entry)\n })\n\n /**\n * Ensures the current data is fresh. If the data is stale or if the status\n * is 'error', calls {@link fetch}, if not return the current data. Can only\n * be called if the entry has been initialized with `useQuery()` and has\n * options.\n *\n * @param entry - the entry of the query to refresh\n * @param options - the options to use for the fetch\n *\n * @see {@link fetch}\n */\n const refresh = action(\n async <TData, TError, TDataInitial extends TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n options = entry.options,\n ): Promise<DataState<TData, TError, TDataInitial>> => {\n if (process.env.NODE_ENV !== 'production' && !options) {\n throw new Error(\n `\"entry.refresh()\" was called but the entry has no options. This is probably a bug, report it to pinia-colada with a boiled down example to reproduce it. Thank you!`,\n )\n }\n\n if (entry.state.value.error || entry.stale) {\n return entry.pending?.refreshCall ?? fetch(entry, options)\n }\n\n return entry.state.value\n },\n )\n\n /**\n * Fetch an entry. Ignores fresh data and triggers a new fetch. Can only be called if the entry has options.\n *\n * @param entry - the entry of the query to fetch\n * @param options - the options to use for the fetch\n */\n const fetch = action(\n async <TData, TError, TDataInitial extends TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n options = entry.options,\n ): Promise<DataState<TData, TError, TDataInitial>> => {\n if (process.env.NODE_ENV !== 'production' && !options) {\n throw new Error(\n `\"entry.fetch()\" was called but the entry has no options. This is probably a bug, report it to pinia-colada with a boiled down example to reproduce it. Thank you!`,\n )\n }\n\n entry.asyncStatus.value = 'loading'\n\n const abortController = new AbortController()\n const { signal } = abortController\n // Abort any ongoing request without a reason to keep `AbortError` even with\n // signal.throwIfAborted() in the query function\n entry.pending?.abortController.abort()\n\n const pendingCall = (entry.pending = {\n abortController,\n // wrapping with async allows us to catch synchronous errors too\n refreshCall: (async () => options!.query({ signal }))()\n .then((data) => {\n if (pendingCall === entry.pending) {\n setEntryState(entry, {\n data,\n error: null,\n status: 'success',\n })\n }\n return entry.state.value\n })\n .catch((error: unknown) => {\n // we skip updating the state if a new request was made\n // or if the error is from our own abort signal\n if (\n pendingCall === entry.pending &&\n // does the error come from a different reason than the abort signal?\n (error !== signal.reason || !signal.aborted)\n ) {\n setEntryState(entry, {\n status: 'error',\n data: entry.state.value.data,\n error: error as any,\n })\n }\n\n // always propagate up the error\n throw error\n // NOTE: other options included returning an ongoing request if the error was a cancellation but it seems not worth it\n })\n .finally(() => {\n entry.asyncStatus.value = 'idle'\n if (pendingCall === entry.pending) {\n entry.pending = null\n // there are cases when the result is ignored, in that case, we still\n // do not have a real result so we keep the placeholder data\n if (entry.state.value.status !== 'pending') {\n // reset the placeholder data to free up memory\n entry.placeholderData = null\n }\n }\n }),\n when: Date.now(),\n })\n\n return pendingCall.refreshCall\n },\n )\n\n /**\n * Cancels an entry's query if it's currently pending. This will effectively abort the `AbortSignal` of the query and any\n * pending request will be ignored.\n *\n * @param entry - the entry of the query to cancel\n * @param reason - the reason passed to the abort controller\n */\n const cancel = action((entry: UseQueryEntry, reason?: unknown) => {\n entry.pending?.abortController.abort(reason)\n // eagerly set the status to idle because the abort signal might not\n // be consumed by the user's query\n entry.asyncStatus.value = 'idle'\n entry.pending = null\n })\n\n /**\n * Cancels queries if they are currently pending. This will effectively abort the `AbortSignal` of the query and any\n * pending request will be ignored.\n *\n * @param filters - filters to apply to the entries\n * @param reason - the reason passed to the abort controller\n *\n * @see {@link cancel}\n */\n const cancelQueries = action((filters?: UseQueryEntryFilter, reason?: unknown) => {\n getEntries(filters).forEach((entry) => cancel(entry, reason))\n })\n\n /**\n * Sets the state of a query entry in the cache and updates the\n * {@link UseQueryEntry['pending']['when'] | `when` property}. This action is\n * called every time the cache state changes and can be used by plugins to\n * detect changes.\n *\n * @param entry - the entry of the query to set the state\n * @param state - the new state of the entry\n */\n const setEntryState = action(\n <TData, TError, TDataInitial extends TData | undefined = TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n // NOTE: NoInfer ensures correct inference of TData and TError\n state: DataState<NoInfer<TData>, NoInfer<TError>, NoInfer<TDataInitial>>,\n ) => {\n entry.state.value = state\n entry.when = Date.now()\n // if we need to, we could schedule a garbage collection here but I don't\n // see why would one create entries that are not used (not tracked immediately after)\n },\n )\n\n /**\n * Gets a single query entry from the cache based on the key of the query.\n *\n * @param key - the key of the query\n */\n function get<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n >(\n key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey,\n ): UseQueryEntry<TData, TError, TDataInitial> | undefined {\n return caches.value.get(toCacheKey(key)) as\n | UseQueryEntry<TData, TError, TDataInitial>\n | undefined\n }\n\n /**\n * Set the data of a query entry in the cache. It also sets the `status` to `success`.\n *\n * @param key - the key of the query\n * @param data - the new data to set\n *\n * @see {@link setEntryState}\n */\n const setQueryData = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey,\n data:\n | NoInfer<TData>\n // a success query cannot have undefined data\n | Exclude<NoInfer<TDataInitial>, undefined>\n // but could not be there and therefore have undefined here\n | ((oldData: TData | TDataInitial | undefined) => TData | Exclude<TDataInitial, undefined>),\n ) => {\n const keyHash = toCacheKey(key)\n let entry = cachesRaw.get(keyHash) as UseQueryEntry<TData, unknown, TDataInitial> | undefined\n\n // if the entry doesn't exist, we create it to set the data\n // it cannot be refreshed or fetched since the options\n // will be missing\n if (!entry) {\n cachesRaw.set(keyHash, (entry = create<TData, unknown, TDataInitial>(key)))\n }\n\n setEntryState(entry, {\n // we assume the data accounts for a successful state\n error: null,\n status: 'success',\n data: toValueWithArgs(data, entry.state.value.data),\n })\n scheduleGarbageCollection(entry)\n triggerRef(caches)\n },\n )\n\n /**\n * Sets the data of all queries in the cache that are children of a key. It\n * also sets the `status` to `success`. Differently from {@link\n * setQueryData}, this method recursively sets the data for all queries. This\n * is why it requires a function to set the data.\n *\n * @param filters - filters used to get the entries\n * @param updater - the function to set the data\n *\n * @example\n * ```ts\n * // let's suppose we want to optimistically update all contacts in the cache\n * setQueriesData(['contacts', 'list'], (contactList: Contact[]) => {\n * const contactToReplaceIndex = contactList.findIndex(c => c.id === updatedContact.id)\n * return contactList.toSpliced(contactToReplaceIndex, 1, updatedContact)\n * })\n * ```\n *\n * @see {@link setQueryData}\n */\n function setQueriesData<TData = unknown>(\n filters: UseQueryEntryFilter,\n updater: (previous: TData | undefined) => TData,\n ): void {\n for (const entry of getEntries(filters)) {\n setEntryState(entry, {\n error: null,\n status: 'success',\n data: updater(entry.state.value.data as TData | undefined),\n })\n scheduleGarbageCollection(entry)\n }\n triggerRef(caches)\n }\n\n /**\n * Gets the data of a query entry in the cache based on the key of the query.\n *\n * @param key - the key of the query\n */\n function getQueryData<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n >(key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey): TData | TDataInitial | undefined {\n return caches.value.get(toCacheKey(key))?.state.value.data as TData | TDataInitial | undefined\n }\n\n /**\n * Removes a query entry from the cache.\n *\n * @param entry - the entry of the query to remove\n */\n const remove = action((entry: UseQueryEntry) => {\n // setting without a value is like setting it to undefined\n cachesRaw.delete(entry.keyHash)\n triggerRef(caches)\n })\n\n return {\n caches,\n\n ensureDefinedQuery,\n /**\n * Scope to track effects and components that use the query cache.\n * @internal\n */\n _s: markRaw(scope),\n setQueryData,\n setQueriesData,\n getQueryData,\n\n invalidateQueries,\n cancelQueries,\n\n // Actions for entries\n invalidate,\n fetch,\n refresh,\n ensure,\n extend,\n track,\n untrack,\n cancel,\n create,\n remove,\n get,\n setEntryState,\n getEntries,\n }\n})\n\n/**\n * The cache of the queries. It's the store returned by {@link useQueryCache}.\n */\nexport type QueryCache = ReturnType<typeof useQueryCache>\n\n/**\n * Checks if the given object is a query cache. Used in SSR to apply custom serialization.\n *\n * @param cache - the object to check\n *\n * @see {@link QueryCache}\n * @see {@link serializeQueryCache}\n */\nexport function isQueryCache(cache: unknown): cache is QueryCache {\n return (\n typeof cache === 'object' &&\n !!cache &&\n (cache as Record<string, unknown>).$id === QUERY_STORE_ID\n )\n}\n\n/**\n * Raw data of a query entry. Can be serialized from the server and used to\n * hydrate the store.\n *\n * @internal\n */\nexport type _UseQueryEntryNodeValueSerialized<TData = unknown, TError = unknown> = [\n /**\n * The data returned by the query.\n */\n data: TData | undefined,\n\n /**\n * The error thrown by the query.\n */\n error: TError | null,\n\n /**\n * When was this data fetched the last time in ms\n */\n when?: number,\n\n /**\n * Meta information associated with the query\n */\n meta?: QueryMeta,\n]\n\n/**\n * Hydrates the query cache with the serialized cache. Used during SSR.\n * @param queryCache - query cache\n * @param serializedCache - serialized cache\n */\nexport function hydrateQueryCache(\n queryCache: QueryCache,\n serializedCache: Record<string, _UseQueryEntryNodeValueSerialized>,\n) {\n for (const keyHash in serializedCache) {\n queryCache.caches.set(\n keyHash,\n queryCache.create(\n JSON.parse(keyHash),\n undefined,\n // data, error, when, meta\n ...(serializedCache[keyHash] ?? []),\n ),\n )\n }\n}\n\n/**\n * Serializes the query cache to a compressed version. Used during SSR.\n *\n * @param queryCache - query cache\n */\nexport function serializeQueryCache(\n queryCache: QueryCache,\n): Record<string, _UseQueryEntryNodeValueSerialized> {\n return Object.fromEntries(\n // TODO: 2028: directly use .map on the iterator\n [...queryCache.caches.entries()].map(([keyHash, entry]) => [keyHash, queryEntry_toJSON(entry)]),\n )\n}\n","import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\nimport {\n computed,\n getCurrentInstance,\n getCurrentScope,\n isRef,\n onMounted,\n onScopeDispose,\n onServerPrefetch,\n onUnmounted,\n toValue,\n watch,\n} from 'vue'\nimport { IS_CLIENT, useEventListener } from './utils'\nimport type { UseQueryEntry, UseQueryEntryExtensions } from './query-store'\nimport { currentDefineQueryEntry, isEntryUsingPlaceholderData, useQueryCache } from './query-store'\nimport { useQueryOptions } from './query-options'\nimport type { UseQueryOptions, UseQueryOptionsWithDefaults } from './query-options'\nimport type { ErrorDefault } from './types-extension'\nimport { currentDefineQueryEffect } from './define-query'\nimport type { DefineQueryOptions } from './define-query'\nimport type { AsyncStatus, DataState, DataStateStatus, DataState_Success } from './data-state'\n\n/**\n * Return type of `useQuery()`.\n */\nexport interface UseQueryReturn<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends UseQueryEntryExtensions<TData, TError, TDataInitial> {\n /**\n * The state of the query. Contains its data, error, and status.\n */\n state: ComputedRef<DataState<TData, TError, TDataInitial>>\n\n /**\n * Status of the query. Becomes `'loading'` while the query is being fetched, is `'idle'` otherwise.\n */\n asyncStatus: ComputedRef<AsyncStatus>\n\n /**\n * The last successful data resolved by the query. Alias for `state.value.data`.\n *\n * @see {@link state}\n */\n data: ShallowRef<TData | TDataInitial>\n\n /**\n * The error rejected by the query. Alias for `state.value.error`.\n *\n * @see {@link state}\n */\n error: ShallowRef<TError | null>\n\n /**\n * The status of the query. Alias for `state.value.status`.\n *\n * @see {@link state}\n * @see {@link DataStateStatus}\n */\n status: ShallowRef<DataStateStatus>\n\n /**\n * Returns whether the request is still pending its first call. Alias for `status.value === 'pending'`\n */\n isPending: ComputedRef<boolean>\n\n /**\n * Returns whether the `data` is the `placeholderData`.\n */\n isPlaceholderData: ComputedRef<boolean>\n\n /**\n * Returns whether the request is currently fetching data. Alias for `asyncStatus.value === 'loading'`\n */\n isLoading: ShallowRef<boolean>\n\n /**\n * Ensures the current data is fresh. If the data is stale, refetch, if not return as is.\n * @param throwOnError - whether to throw an error if the refresh fails. Defaults to `false`\n * @returns a promise that resolves when the refresh is done\n */\n refresh: (throwOnError?: boolean) => Promise<DataState<TData, TError, TDataInitial>>\n\n /**\n * Ignores fresh data and triggers a new fetch\n * @param throwOnError - whether to throw an error if the fetch fails. Defaults to `false`\n * @returns a promise that resolves when the fetch is done\n */\n refetch: (throwOnError?: boolean) => Promise<DataState<TData, TError, TDataInitial>>\n}\n\n/**\n * Ensures and return a shared query state based on the `key` option.\n *\n * @param options - The options of the query\n *\n * @example\n * ```ts\n * const { state } = useQuery({\n * key: ['documents'],\n * query: () => getDocuments(),\n * })\n * ```\n */\nexport function useQuery<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n options:\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n): UseQueryReturn<TData, TError, TDataInitial>\n\n/**\n * `useQuery` for dynamic typed query keys. Requires options defined with\n * {@link defineQueryOptions}.\n *\n * @param setupOptions - options defined with {@link defineQueryOptions}\n * @param paramsGetter - a getter or ref that returns the parameters for the `setupOptions`\n *\n * @example\n * ```ts\n * import { defineQueryOptions, useQuery } from '@pinia/colada'\n *\n * const documentDetailsQuery = defineQueryOptions((id: number ) => ({\n * key: ['documents', id],\n * query: () => fetchDocument(id),\n * }))\n *\n * useQuery(documentDetailsQuery, 4)\n * useQuery(documentDetailsQuery, () => route.params.id)\n * useQuery(documentDetailsQuery, () => props.id)\n * ```\n */\nexport function useQuery<Params, TData, TError, TDataInitial extends TData | undefined>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter: MaybeRefOrGetter<NoInfer<Params>>,\n): UseQueryReturn<TData, TError, TDataInitial>\n\n/**\n * Ensures and return a shared query state based on the `key` option.\n *\n * @param _options - The options of the query\n * @param paramsGetter - a getter or ref that returns the parameters for the `_options`\n */\nexport function useQuery<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n // NOTE: this version has better type inference but still imperfect\n ...[_options, paramsGetter]:\n | [\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n ]\n | [\n (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter?: MaybeRefOrGetter<unknown>,\n ]\n) // _options:\n// | UseQueryOptions<TData, TError, TDataInitial>\n// | (() => DefineQueryOptions<TData, TError, TDataInitial>)\n// | ((params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>),\n// paramsGetter?: MaybeRefOrGetter<unknown>,\n: UseQueryReturn<TData, TError, TDataInitial> {\n if (paramsGetter != null) {\n return useQuery(() =>\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n (_options as (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>)(\n toValue(paramsGetter),\n ),\n )\n }\n const queryCache = useQueryCache()\n const optionDefaults = useQueryOptions()\n const hasCurrentInstance = getCurrentInstance()\n // this is the effect created by defineQuery in ensureDefinedQuery\n // it shouldn't be tracked by the query cache otherwise it would never cleanup\n const defineQueryEffect = currentDefineQueryEntry?.[2]\n const currentEffect = currentDefineQueryEffect || getCurrentScope()\n const isPaused = currentDefineQueryEntry?.[3]\n\n const options = computed<UseQueryOptionsWithDefaults<TData, TError, TDataInitial>>(\n () =>\n ({\n ...optionDefaults,\n ...toValue(\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n _options as\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n ),\n }) satisfies UseQueryOptionsWithDefaults<TData, TError, TDataInitial>,\n )\n const enabled = (): boolean => toValue(options.value.enabled)\n\n // NOTE: here we used to check if the same key was previously called with a different query\n // but it ended up creating too many false positives and was removed. We could add it back\n // to at least warn against the cases shown in https://pinia-colada.esm.dev/guide/reusable-queries.html\n\n // This plain variable is not reactive and allows us to use the currentEntry\n // without triggering watchers and creating entries. It is used during\n // unmounting and mounting\n let lastEntry: UseQueryEntry<TData, TError, TDataInitial>\n const entry = computed(() =>\n // NOTE: there should be a `paused` property on the effect later on\n // if the effect is paused, we don't want to compute the entry because its key\n // might be referencing undefined values\n // https://github.com/posva/pinia-colada/issues/227\n // NOTE: _isPaused isn't reactive which meant that reentering a component\n // would never recompute the entry, so _isPaused was replaced\n // this makes the computed depend on nothing initially, but the `watch` on the entry\n // with immediate: true will trigger it again\n // https://github.com/posva/pinia-colada/issues/290\n isPaused?.value // && currentEffect?._isPaused\n ? lastEntry!\n : (lastEntry = queryCache.ensure<TData, TError, TDataInitial>(options.value, lastEntry)),\n )\n // we compute the entry here and reuse this across\n lastEntry = entry.value\n\n // adapter that returns the entry state\n const errorCatcher = () => entry.value.state.value\n const refresh = (throwOnError?: boolean) =>\n queryCache.refresh(entry.value, options.value).catch(\n // true is not allowed but it works per spec as only callable onRejected are used\n // https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-performpromisethen\n // In other words `Promise.rejects('ok').catch(true)` still rejects\n // anything other than `true` falls back to the `errorCatcher`\n (throwOnError as false | undefined) || errorCatcher,\n )\n const refetch = (throwOnError?: boolean) =>\n queryCache.fetch(entry.value, options.value).catch(\n // same as above\n (throwOnError as false | undefined) || errorCatcher,\n )\n const isPlaceholderData = computed(() => isEntryUsingPlaceholderData(entry.value))\n const state = computed<DataState<TData, TError, TDataInitial>>(() =>\n isPlaceholderData.value\n ? ({\n status: 'success',\n data: entry.value.placeholderData!,\n error: null,\n } satisfies DataState_Success<TData, TDataInitial>)\n : entry.value.state.value,\n )\n\n // TODO: find a way to allow a custom implementation for the returned value\n const extensions = {} as Record<string, any>\n for (const key in lastEntry.ext) {\n extensions[key] = computed<unknown>({\n get: () =>\n toValue<unknown>(entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>]),\n set(value) {\n const target = entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>]\n if (isRef(target)) {\n ;(target as Ref | ShallowRef).value = value\n } else {\n ;(entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>] as unknown) = value\n }\n },\n })\n }\n\n const queryReturn = {\n ...(extensions as UseQueryEntryExtensions<TData, TError, TDataInitial>),\n state,\n\n status: computed(() => state.value.status),\n data: computed(() => state.value.data),\n error: computed(() => entry.value.state.value.error),\n asyncStatus: computed(() => entry.value.asyncStatus.value),\n\n isPlaceholderData,\n isPending: computed(() => state.value.status === 'pending'),\n isLoading: computed(() => entry.value.asyncStatus.value === 'loading'),\n\n refresh,\n refetch,\n } satisfies UseQueryReturn<TData, TError, TDataInitial>\n\n if (hasCurrentInstance) {\n // only happens on server, app awaits this\n onServerPrefetch(async () => {\n if (enabled()) await refresh(!options.value.ssrCatchError)\n })\n }\n\n // should we be watching entry\n // NOTE: this avoids fetching initially during SSR but it could be refactored to only use the watcher\n let isActive = false\n if (hasCurrentInstance) {\n onMounted(() => {\n isActive = true\n queryCache.track(lastEntry, hasCurrentInstance)\n })\n onUnmounted(() => {\n // remove instance from Set of refs\n queryCache.untrack(lastEntry, hasCurrentInstance)\n })\n } else {\n isActive = true\n if (currentEffect !== defineQueryEffect) {\n queryCache.track(lastEntry, currentEffect)\n onScopeDispose(() => {\n queryCache.untrack(lastEntry, currentEffect)\n })\n }\n }\n\n watch(\n entry,\n (entry, previousEntry) => {\n if (!isActive) return\n if (previousEntry) {\n queryCache.untrack(previousEntry, hasCurrentInstance)\n queryCache.untrack(previousEntry, currentEffect)\n }\n // track the current effect and component\n queryCache.track(entry, hasCurrentInstance)\n // if we have acurrent instance we don't track the effect because in Vue each component\n // has its own scope that is detached\n if (!hasCurrentInstance && currentEffect !== defineQueryEffect) {\n queryCache.track(entry, currentEffect)\n }\n\n // TODO: does this trigger after unmount?\n if (enabled()) refresh()\n },\n {\n immediate: true,\n },\n )\n\n // since options can be a getter, enabled might change\n watch(enabled, (newEnabled) => {\n // no need to check for the previous value since the watcher will only trigger if the value changed\n if (newEnabled) refresh()\n })\n\n // only happens on client\n // we could also call fetch instead but forcing a refresh is more interesting\n if (hasCurrentInstance) {\n onMounted(() => {\n if (enabled()) {\n const refetchControl = toValue(options.value.refetchOnMount)\n if (refetchControl === 'always') {\n refetch()\n } else if (\n refetchControl ||\n // always refetch if the query has no real data (even if placeholderData is shown)\n entry.value.state.value.status === 'pending'\n ) {\n refresh()\n }\n }\n })\n }\n // TODO: we could save the time it was fetched to avoid fetching again. This is useful to not refetch during SSR app but do refetch in SSG apps if the data is stale. Careful with timers and timezones\n\n if (IS_CLIENT) {\n useEventListener(document, 'visibilitychange', () => {\n const refetchControl = toValue(options.value.refetchOnWindowFocus)\n if (document.visibilityState === 'visible' && enabled()) {\n if (refetchControl === 'always') {\n refetch()\n } else if (refetchControl) {\n refresh()\n }\n }\n })\n\n useEventListener(window, 'online', () => {\n if (enabled()) {\n const refetchControl = toValue(options.value.refetchOnReconnect)\n if (refetchControl === 'always') {\n refetch()\n } else if (refetchControl) {\n refresh()\n }\n }\n })\n }\n\n return queryReturn\n}\n","import { getCurrentInstance, getCurrentScope, onScopeDispose, toValue } from 'vue'\nimport type { EffectScope } from 'vue'\nimport type { tErrorSymbol, UseQueryOptions } from './query-options'\nimport { useQueryCache } from './query-store'\nimport type { ErrorDefault } from './types-extension'\nimport type { UseQueryReturn } from './use-query'\nimport { useQuery } from './use-query'\nimport { noop } from './utils'\nimport type { _RemoveMaybeRef } from './utils'\n\n/**\n * The current effect scope where the function returned by `defineQuery` is\n * being called. This allows `useQuery()` to know if it should be attached to\n * an effect scope or not\n *\n * @internal\n */\nexport let currentDefineQueryEffect: undefined | EffectScope\n\n/**\n * Options to define a query with `defineQuery()`. Similar to\n * {@link UseQueryOptions} but disallows reactive values as `defineQuery()` is\n * used outside of an effect scope.\n */\nexport type DefineQueryOptions<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = _RemoveMaybeRef<\n UseQueryOptions<TData, TError, TDataInitial>,\n typeof tErrorSymbol | 'initialData' | 'placeholderData'\n>\n\n/**\n * Define a query with the given options. Similar to `useQuery(options)` but\n * allows you to reuse **all** of the query state in multiple places. It only\n * allow static values in options. If you need dynamic values, use the function\n * version.\n *\n * @param options - the options to define the query\n *\n * @example\n * ```ts\n * const useTodoList = defineQuery({\n * key: ['todos'],\n * query: () => fetch('/api/todos', { method: 'GET' }),\n * })\n * ```\n */\nexport function defineQuery<TData, TError = ErrorDefault>(\n options: DefineQueryOptions<TData, TError>,\n): () => UseQueryReturn<TData, TError>\n\n/**\n * Define a query with a setup function. Allows to return arbitrary values from\n * the query function, create contextual refs, rename the returned values, etc.\n * The setup function will be called only once, like stores, and **must be\n * synchronous**.\n *\n * @param setup - a function to setup the query\n *\n * @example\n * ```ts\n * const useFilteredTodos = defineQuery(() => {\n * const todoFilter = ref<'all' | 'finished' | 'unfinished'>('all')\n * const { data, ...rest } = useQuery({\n * key: ['todos', { filter: todoFilter.value }],\n * query: () =>\n * fetch(`/api/todos?filter=${todoFilter.value}`, { method: 'GET' }),\n * })\n * // expose the todoFilter ref and rename data for convenience\n * return { ...rest, todoList: data, todoFilter }\n * })\n * ```\n */\nexport function defineQuery<T>(setup: () => T): () => T\nexport function defineQuery(optionsOrSetup: DefineQueryOptions | (() => unknown)): () => unknown {\n const setupFn =\n typeof optionsOrSetup === 'function' ? optionsOrSetup : () => useQuery(optionsOrSetup)\n\n let hasBeenEnsured: boolean | undefined\n // allows pausing the scope when the defined query is no used anymore\n let refCount = 0\n return () => {\n const queryCache = useQueryCache()\n // preserve any current effect to account for nested usage of these functions\n const previousEffect = currentDefineQueryEffect\n const currentScope = getCurrentInstance() || (currentDefineQueryEffect = getCurrentScope())\n\n const [ensuredEntries, ret, scope, isPaused] = queryCache.ensureDefinedQuery(setupFn)\n\n // subsequent calls to the composable returned by useQuery will not trigger the `useQuery()`,\n // this ensures the refetchOnMount option is respected\n if (hasBeenEnsured) {\n ensuredEntries.forEach((entry) => {\n // since defined query can be activated multiple times without executing useQuery,\n // we need to execute it here too\n if (entry.options?.refetchOnMount && toValue(entry.options.enabled)) {\n if (toValue(entry.options.refetchOnMount) === 'always') {\n // we catch the error to avoid unhandled rejections\n queryCache.fetch(entry).catch(noop)\n } else {\n queryCache.refresh(entry).catch(noop)\n }\n }\n })\n }\n hasBeenEnsured = true\n\n // NOTE: most of the time this should be set, so maybe we should show a dev warning\n // if it's not set instead\n //\n // Because `useQuery()` might already be called before and we might be reusing an existing query\n // we need to manually track and untrack. When untracking, we cannot use the ensuredEntries because\n // there might be another component using the defineQuery, so we simply count how many are using it\n if (currentScope) {\n refCount++\n ensuredEntries.forEach((entry) => {\n queryCache.track(entry, currentScope)\n })\n onScopeDispose(() => {\n ensuredEntries.forEach((entry) => {\n queryCache.untrack(entry, currentScope)\n })\n // if all entries become inactive, we pause the scope\n // to avoid triggering the effects within useQuery. This immitates the behavior\n // of a component that unmounts\n if (--refCount < 1) {\n scope.pause()\n isPaused.value = true\n }\n })\n }\n\n // reset the previous effect\n currentDefineQueryEffect = previousEffect\n\n return ret\n }\n}\n","import type { ComputedRef, MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { useQueryCache } from './query-store'\nimport type { UseQueryReturn } from './use-query'\nimport type { EntryKey, EntryKeyTagged } from './entry-keys'\nimport type { AsyncStatus, DataState, DataStateStatus } from './data-state'\nimport type { ErrorDefault } from './types-extension'\nimport type { DefineQueryOptions } from './define-query'\nimport type { defineQueryOptions } from './define-query-options'\n\n/**\n * Return type for the {@link useQueryState} composable.\n *\n * @see {@link useQueryState}\n */\nexport interface UseQueryStateReturn<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> {\n /**\n * `state` of the query entry.\n *\n * @see {@link UseQueryReturn#state}\n */\n state: ComputedRef<DataState<TData, TError, TDataInitial> | undefined>\n\n /**\n * `data` of the query entry.\n *\n * @see {@link UseQueryReturn#data}\n */\n data: ComputedRef<TData | TDataInitial | undefined>\n\n /**\n * `error` of the query entry.\n *\n * @see {@link UseQueryReturn#error}\n */\n error: ComputedRef<TError | null | undefined>\n\n /**\n * `status` of the query entry.\n *\n * @see {@link DataStateStatus}\n * @see {@link UseQueryReturn#status}\n */\n status: ComputedRef<DataStateStatus | undefined>\n\n /**\n * `asyncStatus` of the query entry.\n *\n * @see {@link AsyncStatus}\n * @see {@link UseQueryReturn#asyncStatus}\n */\n asyncStatus: ComputedRef<AsyncStatus | undefined>\n\n /**\n * Is the query entry currently pending or non existent.\n */\n isPending: ComputedRef<boolean>\n}\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param key - tagged key of the query entry to access\n */\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n key: MaybeRefOrGetter<EntryKeyTagged<TData, TError, TDataInitial>>,\n): UseQueryStateReturn<TData, TError, TDataInitial>\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param setupOptions - function that returns the query options based on the provided params\n * @param paramsGetter - getter for the parameters used to generate the query key\n *\n * @see {@link DefineQueryOptions}\n * @see {@link defineQueryOptions}\n */\nexport function useQueryState<Params, TData, TError, TDataInitial extends TData | undefined>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter: MaybeRefOrGetter<NoInfer<Params>>,\n): UseQueryStateReturn<TData, TError, TDataInitial>\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param key - key of the query entry to access\n */\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(key: MaybeRefOrGetter<EntryKey>): UseQueryStateReturn<TData, TError, TDataInitial>\n\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n // NOTE: this version has better type inference but still imperfect\n ...[_keyOrSetup, paramsGetter]:\n | [key: MaybeRefOrGetter<EntryKeyTagged<TData, TError, TDataInitial> | EntryKey>]\n | [\n (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter?: MaybeRefOrGetter<unknown>,\n ]\n): UseQueryStateReturn<TData, TError, TDataInitial> {\n const queryCache = useQueryCache()\n\n const key = paramsGetter\n ? computed(\n () =>\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n (_keyOrSetup as (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>)(\n toValue(paramsGetter),\n ).key as EntryKeyTagged<TData, TError, TDataInitial>,\n )\n : (_keyOrSetup as EntryKeyTagged<TData, TError, TDataInitial>)\n\n const entry = computed(() => queryCache.get(toValue(key)))\n\n const state = computed(() => entry.value?.state.value)\n const data = computed(() => state.value?.data)\n const error = computed(() => state.value?.error)\n const status = computed(() => state.value?.status)\n const asyncStatus = computed(() => entry.value?.asyncStatus.value)\n const isPending = computed(() => !state.value || state.value.status === 'pending')\n\n return {\n state,\n data,\n error,\n status,\n asyncStatus,\n isPending,\n }\n}\n","import { toValue } from 'vue'\nimport type { UseQueryFnContext, UseQueryOptions } from './query-options'\nimport { useQuery } from './use-query'\nimport type { UseQueryReturn } from './use-query'\nimport type { ErrorDefault } from './types-extension'\n\n/**\n * Options for {@link useInfiniteQuery}.\n *\n * @experimental See https://github.com/posva/pinia-colada/issues/178\n */\nexport interface UseInfiniteQueryOptions<\n TData,\n TError,\n TDataInitial extends TData | undefined = TData | undefined,\n TPages = unknown,\n> extends Omit<\n UseQueryOptions<TData, TError, TDataInitial>,\n 'query' | 'initialData' | 'placeholderData' | 'key'\n> {\n key: UseQueryOptions<TPages, TError, TPages>['key']\n /**\n * The function that will be called to fetch the data. It **must** be async.\n */\n query: (pages: NoInfer<TPages>, context: UseQueryFnContext) => Promise<TData>\n initialPage: TPages | (() => TPages)\n merge: (result: NoInfer<TPages>, current: NoInfer<TData>) => NoInfer<TPages>\n}\n\nexport interface UseInfiniteQueryReturn<TPage = unknown, TError = ErrorDefault> extends Omit<\n UseQueryReturn<TPage, TError, TPage>,\n 'refetch' | 'refresh'\n> {\n loadMore: () => Promise<unknown>\n}\n\n/**\n * Store and merge paginated data into a single cache entry. Allows to handle\n * infinite scrolling. This is an **experimental** API and is subject to\n * change.\n *\n * @param options - Options to configure the infinite query.\n *\n * @experimental See https://github.com/posva/pinia-colada/issues/178\n */\nexport function useInfiniteQuery<TData, TError = ErrorDefault, TPage = unknown>(\n options: UseInfiniteQueryOptions<TData, TError, TData | undefined, TPage>,\n): UseInfiniteQueryReturn<TPage, TError> {\n let pages: TPage = toValue(options.initialPage)\n\n const { refetch, refresh, ...query } = useQuery<TPage, TError, TPage>({\n ...options,\n initialData: () => pages,\n // since we hijack the query function and augment the data, we cannot refetch the data\n // like usual\n staleTime: Infinity,\n async query(context) {\n const data: TData = await options.query(pages, context)\n return (pages = options.merge(pages, data))\n },\n })\n\n return {\n ...query,\n loadMore: () => refetch(),\n }\n}\n","import { inject } from 'vue'\nimport type { InjectionKey } from 'vue'\nimport type { ErrorDefault } from './types-extension'\nimport type { _ReduceContext, _MutationKey, UseMutationGlobalContext } from './use-mutation'\nimport type { _EmptyObject, _Awaitable } from './utils'\n\n/**\n * Options for mutations that can be globally overridden.\n */\nexport interface UseMutationOptionsGlobal {\n /**\n * Runs before a mutation is executed. It can return a value that will be\n * passed to `mutation`, `onSuccess`, `onError` and `onSettled`. If it\n * returns a promise, it will be awaited before running `mutation`.\n */\n onMutate?: (\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n ) => _Awaitable<UseMutationGlobalContext | undefined | void | null>\n\n /**\n * Runs when a mutation is successful.\n */\n onSuccess?: (\n /**\n * The result of the mutation.\n */\n data: unknown,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context.\n */\n context: UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Runs when a mutation encounters an error.\n */\n onError?: (\n /**\n * The error thrown by the mutation.\n */\n error: unknown,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | Partial<Record<keyof UseMutationGlobalContext, never>>\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Runs after the mutation is settled, regardless of the result.\n */\n onSettled?: (\n /**\n * The result of the mutation. `undefined` when a mutation failed.\n */\n data: unknown | undefined,\n /**\n * The error thrown by the mutation. `undefined` if the mutation was successful.\n */\n error: unknown | undefined,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | Partial<Record<keyof UseMutationGlobalContext, never>>\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Time in ms after which, once the mutation is no longer being used, it will be\n * garbage collected to free resources. Set to `false` to disable garbage\n * collection (not recommended).\n *\n * @default 60_000 (1 minute)\n */\n gcTime?: number | false\n}\n\n/**\n * Default options for `useMutation()`. Modifying this object will affect all mutations.\n */\nexport const USE_MUTATION_DEFAULTS = {\n gcTime: (1000 * 60) as NonNullable<UseMutationOptions['gcTime']>, // 1 minute\n} satisfies UseMutationOptionsGlobal\n\nexport type UseMutationOptionsWithDefaults<\n TData = unknown,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n> = UseMutationOptions<TData, TVars, TError, TContext> & typeof USE_MUTATION_DEFAULTS\n\n/**\n * Options to create a mutation.\n */\nexport interface UseMutationOptions<\n TData = unknown,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n> extends Pick<UseMutationOptionsGlobal, 'gcTime'> {\n /**\n * The key of the mutation. If the mutation is successful, it will invalidate the mutation with the same key and refetch it\n */\n mutation: (vars: TVars, context: _ReduceContext<NoInfer<TContext>>) => Promise<TData>\n\n /**\n * Optional key to identify the mutation globally and access it through other\n * helpers like `useMutationState()`. If you don't need to reference the\n * mutation elsewhere, you should ignore this option.\n */\n key?: _MutationKey<NoInfer<TVars>>\n\n /**\n * Runs before the mutation is executed. **It should be placed before `mutation()` for `context` to be inferred**. It\n * can return a value that will be passed to `mutation`, `onSuccess`, `onError` and `onSettled`. If it returns a\n * promise, it will be awaited before running `mutation`.\n *\n * @example\n * ```ts\n * useMutation({\n * // must appear before `mutation` for `{ foo: string }` to be inferred\n * // within `mutation`\n * onMutate() {\n * return { foo: 'bar' }\n * },\n * mutation: (id: number, { foo }) => {\n * console.log(foo) // bar\n * return fetch(`/api/todos/${id}`)\n * },\n * onSuccess(data, vars, context) {\n * console.log(context.foo) // bar\n * },\n * })\n * ```\n */\n onMutate?: (\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n context: UseMutationGlobalContext,\n ) => _Awaitable<TContext | undefined | void | null>\n\n /**\n * Runs if the mutation is successful.\n */\n onSuccess?: (\n /**\n * The result of the mutation.\n */\n data: NoInfer<TData>,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context.\n */\n context: UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>,\n ) => unknown\n\n /**\n * Runs if the mutation encounters an error.\n */\n onError?: (\n /**\n * The error thrown by the mutation.\n */\n error: TError,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | (Partial<Record<keyof UseMutationGlobalContext, never>> &\n Partial<Record<keyof _ReduceContext<NoInfer<TContext>>, never>>)\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | (UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>),\n ) => unknown\n\n /**\n * Runs after the mutation is settled, regardless of the result.\n */\n onSettled?: (\n /**\n * The result of the mutation. `undefined` if the mutation failed.\n */\n data: NoInfer<TData> | undefined,\n /**\n * The error thrown by the mutation. `undefined` if the mutation was successful.\n */\n error: TError | undefined,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | (Partial<Record<keyof UseMutationGlobalContext, never>> &\n Partial<Record<keyof _ReduceContext<NoInfer<TContext>>, never>>)\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | (UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>),\n ) => unknown\n}\n\n/**\n * Global default options for `useMutations()`.\n * @internal\n */\nexport type UseMutationOptionsGlobalDefaults = UseMutationOptionsGlobal &\n typeof USE_MUTATION_DEFAULTS\n\nexport const USE_MUTATION_OPTIONS_KEY: InjectionKey<UseMutationOptionsGlobalDefaults> =\n process.env.NODE_ENV !== 'production' ? Symbol('useMutationOptions') : Symbol()\n\n/**\n * Injects the global query options.\n *\n * @internal\n */\nexport const useMutationOptions = (): UseMutationOptionsGlobalDefaults =>\n inject(USE_MUTATION_OPTIONS_KEY, USE_MUTATION_DEFAULTS)\n","import type { ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState } from './data-state'\nimport { defineStore, skipHydrate } from 'pinia'\nimport { customRef, getCurrentScope, hasInjectionContext, shallowRef } from 'vue'\nimport { find, START_EXT } from './entry-keys'\nimport type { EntryFilter } from './entry-filter'\nimport type { _EmptyObject } from './utils'\nimport { noop, toValueWithArgs, warnOnce } from './utils'\nimport type { _ReduceContext } from './use-mutation'\nimport { useMutationOptions } from './mutation-options'\nimport type { UseMutationOptions, UseMutationOptionsWithDefaults } from './mutation-options'\nimport type { EntryKey } from './entry-keys'\n\n/**\n * Allows defining extensions to the mutation entry that are returned by `useMutation()`.\n */\nexport interface UseMutationEntryExtensions<\n // oxlint-disable-next-line no-unused-vars\n TData,\n // oxlint-disable-next-line no-unused-vars\n TVars,\n // oxlint-disable-next-line no-unused-vars\n TError,\n // oxlint-disable-next-line no-unused-vars\n TContext extends Record<any, any> = _EmptyObject,\n> {}\n\n/**\n * A mutation entry in the cache.\n */\nexport interface UseMutationEntry<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n> {\n /**\n * Unique id of the mutation entry. 0 if the entry is not yet in the cache.\n */\n id: number\n\n /**\n * The state of the mutation. Contains the data, error and status.\n */\n state: ShallowRef<DataState<TData, TError>>\n\n /**\n * The async status of the mutation.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * When was this data fetched the last time in ms\n */\n when: number\n\n /**\n * The key associated with this mutation entry.\n * Can be `undefined` if the entry has no key.\n */\n key: EntryKey | undefined\n\n /**\n * The variables used to call the mutation.\n */\n vars: TVars | undefined\n\n /**\n * Options used to create the mutation.\n */\n options: UseMutationOptionsWithDefaults<TData, TVars, TError, TContext>\n\n /**\n * Timeout id that scheduled a garbage collection. It is set here to clear it when the entry is used by a different component.\n */\n gcTimeout: ReturnType<typeof setTimeout> | undefined\n\n /**\n * Extensions to the mutation entry added by plugins.\n */\n ext: UseMutationEntryExtensions<TData, TVars, TError, TContext>\n}\n\n/**\n * Filter to get entries from the mutation cache.\n */\nexport type UseMutationEntryFilter = EntryFilter<UseMutationEntry>\n\n/**\n * The id of the store used for mutations.\n * @internal\n */\nexport const MUTATION_STORE_ID = '_pc_mutation'\n\n/**\n * Composable to get the cache of the mutations. As any other composable, it\n * can be used inside the `setup` function of a component, within another\n * composable, or in injectable contexts like stores and navigation guards.\n */\nexport const useMutationCache = /* @__PURE__ */ defineStore(MUTATION_STORE_ID, ({ action }) => {\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n const cachesRaw = new Map<number, UseMutationEntry<unknown, any, unknown, any>>()\n let triggerCache!: () => void\n const caches = skipHydrate(\n customRef(\n (track, trigger) =>\n (triggerCache = trigger) && {\n // eslint-disable-next-line no-sequences\n get: () => (track(), cachesRaw),\n set:\n process.env.NODE_ENV !== 'production'\n ? () => {\n console.error(\n `[@pinia/colada]: The mutation cache instance cannot be set directly, it must be modified. This will fail in production.`,\n )\n }\n : noop,\n },\n ),\n )\n\n // this allows use to attach reactive effects to the scope later on\n const scope = getCurrentScope()!\n\n if (process.env.NODE_ENV !== 'production') {\n if (!hasInjectionContext()) {\n warnOnce(\n `useMutationCache() was called outside of an injection context (component setup, store, navigation guard) You will get a warning about \"inject\" being used incorrectly from Vue. Make sure to use it only in allowed places.\\n` +\n `See https://vuejs.org/guide/reusability/composables.html#usage-restrictions`,\n )\n }\n }\n\n const globalOptions = useMutationOptions()\n const defineMutationMap = new WeakMap<() => unknown, unknown>()\n\n let nextMutationId = 1\n\n /**\n * Creates a mutation entry and its state without adding it to the cache.\n * This allows for the state to exist in `useMutation()` before the mutation\n * is actually called. The mutation must be _ensured_ with {@link ensure}\n * before being called.\n *\n * @param options - options to create the mutation\n */\n const create = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n options: UseMutationOptionsWithDefaults<TData, TVars, TError, TContext>,\n key?: EntryKey | undefined,\n vars?: TVars,\n ): UseMutationEntry<TData, TVars, TError, TContext> =>\n scope.run(\n () =>\n ({\n // only ids > 0 are real ids\n id: 0,\n state: shallowRef<DataState<TData, TError>>({\n status: 'pending',\n data: undefined,\n error: null,\n }),\n gcTimeout: undefined,\n asyncStatus: shallowRef<AsyncStatus>('idle'),\n when: 0,\n vars,\n key,\n options,\n // eslint-disable-next-line ts/ban-ts-comment\n // @ts-ignore: some plugins are adding properties to the entry type\n ext: START_EXT,\n }) satisfies UseMutationEntry<TData, TVars, TError, TContext>,\n )!,\n )\n\n /**\n * Ensures a mutation entry in the cache by assigning it an `id` and a `key` based on `vars`. Usually, a mutation is ensured twice\n *\n * @param entry - entry to ensure\n * @param vars - variables to call the mutation with\n */\n function ensure<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n vars: NoInfer<TVars>,\n ): UseMutationEntry<TData, TVars, TError, TContext> {\n const options = entry.options\n const id = nextMutationId++\n const key: EntryKey | undefined = options.key && toValueWithArgs(options.key, vars)\n\n // override the existing entry and untrack it if it was already created\n entry = entry.id ? (untrack(entry), create(options, key, vars)) : entry\n entry.id = id\n entry.key = key\n entry.vars = vars\n\n // store the entry with the mutation ID as the map key\n cachesRaw.set(id, entry as unknown as UseMutationEntry)\n triggerCache()\n\n // extend the entry with plugins the first time only\n if (entry.ext === START_EXT) {\n entry.ext = {} as UseMutationEntryExtensions<TData, TVars, TError, TContext>\n extend(entry)\n }\n\n return entry\n }\n\n /**\n * Ensures a query created with {@link defineMutation} is present in the cache. If it's not, it creates a new one.\n * @param fn - function that defines the query\n */\n const ensureDefinedMutation = action(<T>(fn: () => T) => {\n let defineMutationResult = defineMutationMap.get(fn)\n if (!defineMutationResult) {\n defineMutationMap.set(fn, (defineMutationResult = scope.run(fn)))\n }\n\n return defineMutationResult\n })\n\n /**\n * Action called when an entry is ensured for the first time to allow plugins to extend it.\n *\n * @param _entry - the entry of the mutation to extend\n */\n const extend = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n _entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {},\n )\n\n /**\n * Gets a single mutation entry from the cache based on the ID of the mutation.\n *\n * @param id - the ID of the mutation\n */\n function get<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(id: number): UseMutationEntry<TData, TVars, TError, TContext> | undefined {\n return caches.value.get(id) as UseMutationEntry<TData, TVars, TError, TContext> | undefined\n }\n\n /**\n * Sets the state of a query entry in the cache and updates the\n * {@link UseQueryEntry['pending']['when'] | `when` property}. This action is\n * called every time the cache state changes and can be used by plugins to\n * detect changes.\n *\n * @param entry - the entry of the query to set the state\n * @param state - the new state of the entry\n */\n const setEntryState = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n // NOTE: NoInfer ensures correct inference of TData and TError\n state: DataState<NoInfer<TData>, NoInfer<TError>>,\n ) => {\n entry.state.value = state\n entry.when = Date.now()\n },\n )\n\n /**\n * Removes a mutation entry from the cache if it has an id. If it doesn't then it does nothing.\n *\n * @param entry - the entry of the mutation to remove\n */\n const remove = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {\n cachesRaw.delete(entry.id)\n triggerCache()\n },\n )\n\n /**\n * Returns all the entries in the cache that match the filters.\n * Note that you can have multiple entries with the exact same key if they\n * were called multiple times.\n *\n * @param filters - filters to apply to the entries\n */\n const getEntries = action((filters: UseMutationEntryFilter = {}): UseMutationEntry[] => {\n return [...find(caches.value, filters.key)].filter(\n (entry) =>\n (filters.status == null || entry.state.value.status === filters.status) &&\n (!filters.predicate || filters.predicate(entry)),\n )\n })\n\n /**\n * Untracks a mutation entry, scheduling garbage collection.\n *\n * @param entry - the entry of the mutation to untrack\n */\n const untrack = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {\n // schedule a garbage collection if the entry is not active\n if (entry.gcTimeout) return\n\n // avoid setting a timeout with false, Infinity or NaN\n if ((Number.isFinite as (val: unknown) => val is number)(entry.options.gcTime)) {\n entry.gcTimeout = setTimeout(() => {\n remove(entry)\n }, entry.options.gcTime)\n }\n },\n )\n\n /**\n * Mutate a previously ensured mutation entry.\n *\n * @param entry - the entry to mutate\n */\n async function mutate<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(entry: UseMutationEntry<TData, TVars, TError, TContext>): Promise<TData> {\n // the vars is set when the entry is ensured, we warn against it below\n const { vars, options } = entry as typeof entry & { vars: TVars }\n\n // DEV warnings\n if (process.env.NODE_ENV !== 'production') {\n const key = entry.key?.join('/')\n const keyMessage = key ? `with key \"${key}\"` : 'without a key'\n if (entry.id === 0) {\n console.error(\n `[@pinia/colada] A mutation entry ${keyMessage} was mutated before being ensured. If you are manually calling the \"mutationCache.mutate()\", you should always ensure the entry first If not, this is probably a bug. Please, open an issue on GitHub with a boiled down reproduction.`,\n )\n }\n if (\n // the entry has already an ongoing request\n entry.state.value.status !== 'pending' ||\n entry.asyncStatus.value === 'loading'\n ) {\n console.error(\n `[@pinia/colada] A mutation entry ${keyMessage} was reused. If you are manually calling the \"mutationCache.mutate()\", you should always ensure the entry first: \"mutationCache.mutate(mutationCache.ensure(entry, vars))\". If not this is probably a bug. Please, open an issue on GitHub with a boiled down reproduction.`,\n )\n }\n }\n\n entry.asyncStatus.value = 'loading'\n\n // TODO: AbortSignal that is aborted when the mutation is called again so we can throw in pending\n let currentData: TData | undefined\n let currentError: TError | undefined\n type OnMutateContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onMutate']\n >['1']\n type OnSuccessContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onSuccess']\n >['2']\n type OnErrorContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onError']\n >['2']\n\n let context: OnMutateContext | OnErrorContext | OnSuccessContext = {}\n\n try {\n const globalOnMutateContext = globalOptions.onMutate?.(vars)\n\n context =\n (globalOnMutateContext instanceof Promise\n ? await globalOnMutateContext\n : globalOnMutateContext) || {}\n\n const onMutateContext = (await options.onMutate?.(\n vars,\n context,\n // NOTE: the cast makes it easier to write without extra code. It's safe because { ...null, ...undefined } works and TContext must be a Record<any, any>\n )) as _ReduceContext<TContext>\n\n // we set the context here so it can be used by other hooks\n context = {\n ...context,\n ...onMutateContext,\n // NOTE: needed for onSuccess cast\n } satisfies OnSuccessContext\n\n const newData = (currentData = await options.mutation(vars, context as OnSuccessContext))\n\n await globalOptions.onSuccess?.(newData, vars, context as OnSuccessContext)\n await options.onSuccess?.(\n newData,\n vars,\n // NOTE: cast is safe because of the satisfies above\n // using a spread also works\n context as OnSuccessContext,\n )\n\n setEntryState(entry, {\n status: 'success',\n data: newData,\n error: null,\n })\n } catch (newError: unknown) {\n currentError = newError as TError\n await globalOptions.onError?.(currentError, vars, context)\n await options.onError?.(currentError, vars, context)\n setEntryState(entry, {\n status: 'error',\n data: entry.state.value.data,\n error: currentError,\n })\n throw newError\n } finally {\n // TODO: should we catch and log it?\n await globalOptions.onSettled?.(currentData, currentError, vars, context)\n await options.onSettled?.(currentData, currentError, vars, context)\n entry.asyncStatus.value = 'idle'\n }\n\n return currentData\n }\n\n return {\n caches,\n\n create,\n ensure,\n ensureDefinedMutation,\n mutate,\n remove,\n extend,\n get,\n\n setEntryState,\n getEntries,\n untrack,\n\n /**\n * Scope to track effects and components that use the mutation cache.\n * @internal\n */\n _s: scope,\n }\n})\n\n/**\n * The cache of the mutations. It's the store returned by {@link useMutationCache}.\n */\nexport type MutationCache = ReturnType<typeof useMutationCache>\n\n/**\n * Checks if the given object is a mutation cache. Used in SSR to apply custom serialization.\n *\n * @param cache - the object to check\n *\n * @see {@link MutationCache}\n */\nexport function isMutationCache(cache: unknown): cache is MutationCache {\n return (\n typeof cache === 'object' &&\n !!cache &&\n (cache as Record<string, unknown>).$id === MUTATION_STORE_ID\n )\n}\n","import type { ComputedRef, ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState, DataStateStatus } from './data-state'\nimport type { EntryKey } from './entry-keys'\nimport type { ErrorDefault } from './types-extension'\nimport {\n computed,\n shallowRef,\n getCurrentInstance,\n getCurrentScope,\n onUnmounted,\n onScopeDispose,\n} from 'vue'\nimport { useMutationCache } from './mutation-store'\nimport type { UseMutationEntry } from './mutation-store'\nimport { noop } from './utils'\nimport type { _EmptyObject } from './utils'\nimport {\n USE_MUTATION_DEFAULTS,\n useMutationOptions,\n type UseMutationOptions,\n} from './mutation-options'\n\n/**\n * Valid keys for a mutation. Similar to query keys.\n *\n * @see {@link EntryKey}\n *\n * @internal\n */\nexport type _MutationKey<TVars> = EntryKey | ((vars: TVars) => EntryKey)\n\n/**\n * Removes the nullish types from the context type to make `A & TContext` work instead of yield `never`.\n *\n * @internal\n */\nexport type _ReduceContext<TContext> = TContext extends void | null | undefined\n ? _EmptyObject\n : Record<any, any> extends TContext\n ? _EmptyObject\n : TContext\n\n/**\n * Context object returned by a global `onMutate` function that is merged with the context returned by a local\n * `onMutate`.\n * @example\n * ```ts\n * declare module '@pinia/colada' {\n * export interface UseMutationGlobalContext {\n * router: Router // from vue-router\n * }\n * }\n *\n * // add the `router` to the context\n * app.use(MutationPlugin, {\n * onMutate() {\n * return { router }\n * },\n * })\n * ```\n */\nexport interface UseMutationGlobalContext {}\n\n// export const USE_MUTATIONS_DEFAULTS = {} satisfies Partial<UseMutationsOptions>\n\nexport interface UseMutationReturn<TData, TVars, TError> {\n key?: EntryKey | ((vars: NoInfer<TVars>) => EntryKey)\n\n /**\n * The combined state of the mutation. Contains its data, error, and status.\n * It enables type narrowing based on the {@link UseMutationReturn['status']}.\n */\n state: ComputedRef<DataState<TData, TError>>\n\n /**\n * The status of the mutation.\n *\n * @see {@link DataStateStatus}\n */\n status: ShallowRef<DataStateStatus>\n\n /**\n * Status of the mutation. Becomes `'loading'` while the mutation is being fetched, is `'idle'` otherwise.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * The result of the mutation. `undefined` if the mutation has not been called yet.\n */\n data: ShallowRef<TData | undefined>\n\n /**\n * The error of the mutation. `null` if the mutation has not been called yet or if it was successful.\n */\n error: ShallowRef<TError | null>\n\n /**\n * Whether the mutation is currently executing.\n */\n isLoading: ComputedRef<boolean>\n\n /**\n * The variables passed to the mutation. They are initially `undefined` and change every time the mutation is called.\n */\n variables: ShallowRef<TVars | undefined>\n\n /**\n * Calls the mutation and returns a promise with the result.\n *\n * @param vars - parameters to pass to the mutation\n */\n mutateAsync: unknown | void extends TVars ? () => Promise<TData> : (vars: TVars) => Promise<TData>\n\n /**\n * Calls the mutation without returning a promise to avoid unhandled promise rejections.\n *\n * @param args - parameters to pass to the mutation\n */\n mutate: (...args: unknown | void extends TVars ? [] : [vars: TVars]) => void\n\n /**\n * Resets the state of the mutation to its initial state.\n */\n reset: () => void\n}\n\n/**\n * Setups a mutation.\n *\n * @param options - Options to create the mutation\n *\n * @example\n * ```ts\n * const queryCache = useQueryCache()\n * const { mutate, status, error } = useMutation({\n * mutation: (id: number) => fetch(`/api/todos/${id}`),\n * onSuccess() {\n * queryCache.invalidateQueries('todos')\n * },\n * })\n * ```\n */\nexport function useMutation<\n TData,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n>(\n options: UseMutationOptions<TData, TVars, TError, TContext>,\n): UseMutationReturn<TData, TVars, TError> {\n const mutationCache = useMutationCache()\n const hasCurrentInstance = getCurrentInstance()\n const currentEffect = getCurrentScope()\n const optionDefaults = useMutationOptions()\n\n const mergedOptions = {\n ...optionDefaults,\n // global hooks are directly handled in the mutation cache\n onMutate: undefined,\n onSuccess: undefined,\n onError: undefined,\n onSettled: undefined,\n ...options,\n }\n\n // always create an initial entry with no key (cannot be computed without vars)\n const entry = shallowRef<UseMutationEntry<TData, TVars, TError, TContext>>(\n mutationCache.create(mergedOptions),\n )\n\n // Untrack the mutation entry when component or effect scope is disposed\n if (hasCurrentInstance) {\n onUnmounted(() => {\n mutationCache.untrack(entry.value)\n })\n }\n if (currentEffect) {\n onScopeDispose(() => {\n mutationCache.untrack(entry.value)\n })\n }\n\n const state = computed(() => entry.value.state.value)\n const status = computed(() => state.value.status)\n const data = computed(() => state.value.data)\n const error = computed(() => state.value.error)\n const asyncStatus = computed(() => entry.value.asyncStatus.value)\n const variables = computed(() => entry.value.vars)\n\n async function mutateAsync(vars: TVars): Promise<TData> {\n return mutationCache.mutate(\n // ensures we reuse the initial empty entry and adapt it or create a new one\n (entry.value = mutationCache.ensure(entry.value, vars)),\n )\n }\n\n function mutate(vars: NoInfer<TVars>) {\n mutateAsync(vars).catch(noop)\n }\n\n function reset() {\n entry.value = mutationCache.create(mergedOptions)\n }\n\n return {\n state,\n data,\n isLoading: computed(() => asyncStatus.value === 'loading'),\n status,\n variables,\n asyncStatus,\n error,\n // @ts-expect-error: because of the conditional type in UseMutationReturn\n // it would be nice to find a type-only refactor that works\n mutate,\n // @ts-expect-error: same as above\n mutateAsync,\n reset,\n }\n}\n","import { useMutationCache } from './mutation-store'\nimport type { ErrorDefault } from './types-extension'\nimport { useMutation } from './use-mutation'\nimport type { UseMutationReturn } from './use-mutation'\nimport type { UseMutationOptions } from './mutation-options'\nimport type { _EmptyObject } from './utils'\n\n/**\n * Define a mutation with the given options. Similar to `useMutation(options)` but allows you to reuse the mutation in\n * multiple places.\n *\n * @param options - the options to define the mutation\n * @example\n * ```ts\n * const useCreateTodo = defineMutation({\n * mutation: (todoText: string) =>\n * fetch('/api/todos', {\n * method: 'POST',\n * body: JSON.stringify({ text: todoText }),\n * }),\n * })\n * ```\n */\nexport function defineMutation<\n TData,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n>(\n options: UseMutationOptions<TData, TVars, TError, TContext>,\n): () => UseMutationReturn<TData, TVars, TError>\n\n/**\n * Define a mutation with a function setup. Allows to return arbitrary values from the mutation function, create\n * contextual refs, rename the returned values, etc.\n *\n * @param setup - a function to setup the mutation\n * @example\n * ```ts\n * const useCreateTodo = defineMutation(() => {\n * const todoText = ref('')\n * const { data, mutate, ...rest } = useMutation({\n * mutation: () =>\n * fetch('/api/todos', {\n * method: 'POST',\n * body: JSON.stringify({ text: todoText.value }),\n * }),\n * })\n * // expose the todoText ref and rename other methods for convenience\n * return { ...rest, createTodo: mutate, todo: data, todoText }\n * })\n * ```\n */\nexport function defineMutation<T>(setup: () => T): () => T\nexport function defineMutation(\n optionsOrSetup: UseMutationOptions | (() => unknown),\n): () => unknown {\n const setupFn =\n typeof optionsOrSetup === 'function' ? optionsOrSetup : () => useMutation(optionsOrSetup)\n return () => {\n // TODO: provide a way to clean them up `mutationCache.clear()`\n const mutationCache = useMutationCache()\n return mutationCache.ensureDefinedMutation(setupFn)\n }\n}\n","//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target$1) => (target$1 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target$1, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target$1, mod));\n\n//#endregion\n//#region src/constants.ts\nconst VIEW_MODE_STORAGE_KEY = \"__vue-devtools-view-mode__\";\nconst VITE_PLUGIN_DETECTED_STORAGE_KEY = \"__vue-devtools-vite-plugin-detected__\";\nconst VITE_PLUGIN_CLIENT_URL_STORAGE_KEY = \"__vue-devtools-vite-plugin-client-url__\";\nconst BROADCAST_CHANNEL_NAME = \"__vue-devtools-broadcast-channel__\";\n\n//#endregion\n//#region src/env.ts\nconst isBrowser = typeof navigator !== \"undefined\";\nconst target = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : typeof global !== \"undefined\" ? global : {};\nconst isInChromePanel = typeof target.chrome !== \"undefined\" && !!target.chrome.devtools;\nconst isInIframe = isBrowser && target.self !== target.top;\nconst isInElectron = typeof navigator !== \"undefined\" && navigator.userAgent?.toLowerCase().includes(\"electron\");\nconst isNuxtApp = typeof window !== \"undefined\" && !!window.__NUXT__;\nconst isInSeparateWindow = !isInIframe && !isInChromePanel && !isInElectron;\n\n//#endregion\n//#region ../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\nvar require_rfdc = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\": ((exports, module) => {\n\tmodule.exports = rfdc$1;\n\tfunction copyBuffer(cur) {\n\t\tif (cur instanceof Buffer) return Buffer.from(cur);\n\t\treturn new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);\n\t}\n\tfunction rfdc$1(opts) {\n\t\topts = opts || {};\n\t\tif (opts.circles) return rfdcCircles(opts);\n\t\tconst constructorHandlers = /* @__PURE__ */ new Map();\n\t\tconstructorHandlers.set(Date, (o) => new Date(o));\n\t\tconstructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n\t\tconstructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n\t\tif (opts.constructorHandlers) for (const handler$1 of opts.constructorHandlers) constructorHandlers.set(handler$1[0], handler$1[1]);\n\t\tlet handler = null;\n\t\treturn opts.proto ? cloneProto : clone;\n\t\tfunction cloneArray(a, fn) {\n\t\t\tconst keys = Object.keys(a);\n\t\t\tconst a2 = new Array(keys.length);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst k = keys[i];\n\t\t\t\tconst cur = a[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) a2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur);\n\t\t\t\telse a2[k] = fn(cur);\n\t\t\t}\n\t\t\treturn a2;\n\t\t}\n\t\tfunction clone(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, clone);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone);\n\t\t\tconst o2 = {};\n\t\t\tfor (const k in o) {\n\t\t\t\tif (Object.hasOwnProperty.call(o, k) === false) continue;\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse o2[k] = clone(cur);\n\t\t\t}\n\t\t\treturn o2;\n\t\t}\n\t\tfunction cloneProto(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, cloneProto);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto);\n\t\t\tconst o2 = {};\n\t\t\tfor (const k in o) {\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse o2[k] = cloneProto(cur);\n\t\t\t}\n\t\t\treturn o2;\n\t\t}\n\t}\n\tfunction rfdcCircles(opts) {\n\t\tconst refs = [];\n\t\tconst refsNew = [];\n\t\tconst constructorHandlers = /* @__PURE__ */ new Map();\n\t\tconstructorHandlers.set(Date, (o) => new Date(o));\n\t\tconstructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n\t\tconstructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n\t\tif (opts.constructorHandlers) for (const handler$1 of opts.constructorHandlers) constructorHandlers.set(handler$1[0], handler$1[1]);\n\t\tlet handler = null;\n\t\treturn opts.proto ? cloneProto : clone;\n\t\tfunction cloneArray(a, fn) {\n\t\t\tconst keys = Object.keys(a);\n\t\t\tconst a2 = new Array(keys.length);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst k = keys[i];\n\t\t\t\tconst cur = a[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) a2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst index = refs.indexOf(cur);\n\t\t\t\t\tif (index !== -1) a2[k] = refsNew[index];\n\t\t\t\t\telse a2[k] = fn(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn a2;\n\t\t}\n\t\tfunction clone(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, clone);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone);\n\t\t\tconst o2 = {};\n\t\t\trefs.push(o);\n\t\t\trefsNew.push(o2);\n\t\t\tfor (const k in o) {\n\t\t\t\tif (Object.hasOwnProperty.call(o, k) === false) continue;\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst i = refs.indexOf(cur);\n\t\t\t\t\tif (i !== -1) o2[k] = refsNew[i];\n\t\t\t\t\telse o2[k] = clone(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\trefs.pop();\n\t\t\trefsNew.pop();\n\t\t\treturn o2;\n\t\t}\n\t\tfunction cloneProto(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, cloneProto);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto);\n\t\t\tconst o2 = {};\n\t\t\trefs.push(o);\n\t\t\trefsNew.push(o2);\n\t\t\tfor (const k in o) {\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst i = refs.indexOf(cur);\n\t\t\t\t\tif (i !== -1) o2[k] = refsNew[i];\n\t\t\t\t\telse o2[k] = cloneProto(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\trefs.pop();\n\t\t\trefsNew.pop();\n\t\t\treturn o2;\n\t\t}\n\t}\n}) });\n\n//#endregion\n//#region src/general.ts\nvar import_rfdc = /* @__PURE__ */ __toESM(require_rfdc(), 1);\nfunction NOOP() {}\nconst isNumeric = (str) => `${+str}` === str;\nconst isMacOS = () => navigator?.platform ? navigator?.platform.toLowerCase().includes(\"mac\") : /Macintosh/.test(navigator.userAgent);\nconst classifyRE = /(?:^|[-_/])(\\w)/g;\nconst camelizeRE = /-(\\w)/g;\nconst kebabizeRE = /([a-z0-9])([A-Z])/g;\nfunction toUpper(_, c) {\n\treturn c ? c.toUpperCase() : \"\";\n}\nfunction classify(str) {\n\treturn str && `${str}`.replace(classifyRE, toUpper);\n}\nfunction camelize(str) {\n\treturn str && str.replace(camelizeRE, toUpper);\n}\nfunction kebabize(str) {\n\treturn str && str.replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {\n\t\treturn `${lowerCaseCharacter}-${upperCaseLetter}`;\n\t}).toLowerCase();\n}\nfunction basename(filename, ext) {\n\tlet normalizedFilename = filename.replace(/^[a-z]:/i, \"\").replace(/\\\\/g, \"/\");\n\tif (normalizedFilename.endsWith(`index${ext}`)) normalizedFilename = normalizedFilename.replace(`/index${ext}`, ext);\n\tconst lastSlashIndex = normalizedFilename.lastIndexOf(\"/\");\n\tconst baseNameWithExt = normalizedFilename.substring(lastSlashIndex + 1);\n\tif (ext) {\n\t\tconst extIndex = baseNameWithExt.lastIndexOf(ext);\n\t\treturn baseNameWithExt.substring(0, extIndex);\n\t}\n\treturn \"\";\n}\nfunction sortByKey(state) {\n\treturn state && state.slice().sort((a, b) => {\n\t\tif (a.key < b.key) return -1;\n\t\tif (a.key > b.key) return 1;\n\t\treturn 0;\n\t});\n}\nconst HTTP_URL_RE = /^https?:\\/\\//;\n/**\n* Check a string is start with `/` or a valid http url\n*/\nfunction isUrlString(str) {\n\treturn str.startsWith(\"/\") || HTTP_URL_RE.test(str);\n}\n/**\n* @copyright [rfdc](https://github.com/davidmarkclements/rfdc)\n* @description A really fast deep clone alternative\n*/\nconst deepClone = (0, import_rfdc.default)({ circles: true });\nfunction randomStr() {\n\treturn Math.random().toString(36).slice(2);\n}\nfunction isObject(value) {\n\treturn typeof value === \"object\" && !Array.isArray(value) && value !== null;\n}\nfunction isArray(value) {\n\treturn Array.isArray(value);\n}\nfunction isSet(value) {\n\treturn value instanceof Set;\n}\nfunction isMap(value) {\n\treturn value instanceof Map;\n}\n\n//#endregion\nexport { BROADCAST_CHANNEL_NAME, NOOP, VIEW_MODE_STORAGE_KEY, VITE_PLUGIN_CLIENT_URL_STORAGE_KEY, VITE_PLUGIN_DETECTED_STORAGE_KEY, basename, camelize, classify, deepClone, isArray, isBrowser, isInChromePanel, isInElectron, isInIframe, isInSeparateWindow, isMacOS, isMap, isNumeric, isNuxtApp, isObject, isSet, isUrlString, kebabize, randomStr, sortByKey, target };","//#region src/index.ts\nconst DEBOUNCE_DEFAULTS = { trailing: true };\n/**\nDebounce functions\n@param fn - Promise-returning/async function to debounce.\n@param wait - Milliseconds to wait before calling `fn`. Default value is 25ms\n@returns A function that delays calling `fn` until after `wait` milliseconds have elapsed since the last time it was called.\n@example\n```\nimport { debounce } from 'perfect-debounce';\nconst expensiveCall = async input => input;\nconst debouncedFn = debounce(expensiveCall, 200);\nfor (const number of [1, 2, 3]) {\nconsole.log(await debouncedFn(number));\n}\n//=> 1\n//=> 2\n//=> 3\n```\n*/\nfunction debounce(fn, wait = 25, options = {}) {\n\toptions = {\n\t\t...DEBOUNCE_DEFAULTS,\n\t\t...options\n\t};\n\tif (!Number.isFinite(wait)) throw new TypeError(\"Expected `wait` to be a finite number\");\n\tlet leadingValue;\n\tlet timeout;\n\tlet resolveList = [];\n\tlet currentPromise;\n\tlet trailingArgs;\n\tconst applyFn = (_this, args) => {\n\t\tcurrentPromise = _applyPromised(fn, _this, args);\n\t\tcurrentPromise.finally(() => {\n\t\t\tcurrentPromise = null;\n\t\t\tif (options.trailing && trailingArgs && !timeout) {\n\t\t\t\tconst promise = applyFn(_this, trailingArgs);\n\t\t\t\ttrailingArgs = null;\n\t\t\t\treturn promise;\n\t\t\t}\n\t\t});\n\t\treturn currentPromise;\n\t};\n\tconst debounced = function(...args) {\n\t\tif (options.trailing) trailingArgs = args;\n\t\tif (currentPromise) return currentPromise;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst shouldCallNow = !timeout && options.leading;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\ttimeout = null;\n\t\t\t\tconst promise = options.leading ? leadingValue : applyFn(this, args);\n\t\t\t\ttrailingArgs = null;\n\t\t\t\tfor (const _resolve of resolveList) _resolve(promise);\n\t\t\t\tresolveList = [];\n\t\t\t}, wait);\n\t\t\tif (shouldCallNow) {\n\t\t\t\tleadingValue = applyFn(this, args);\n\t\t\t\tresolve(leadingValue);\n\t\t\t} else resolveList.push(resolve);\n\t\t});\n\t};\n\tconst _clearTimeout = (timer) => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimeout = null;\n\t\t}\n\t};\n\tdebounced.isPending = () => !!timeout;\n\tdebounced.cancel = () => {\n\t\t_clearTimeout(timeout);\n\t\tresolveList = [];\n\t\ttrailingArgs = null;\n\t};\n\tdebounced.flush = () => {\n\t\t_clearTimeout(timeout);\n\t\tif (!trailingArgs || currentPromise) return;\n\t\tconst args = trailingArgs;\n\t\ttrailingArgs = null;\n\t\treturn applyFn(this, args);\n\t};\n\treturn debounced;\n}\nasync function _applyPromised(fn, _this, args) {\n\treturn await fn.apply(_this, args);\n}\n\n//#endregion\nexport { debounce };","function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n","import { basename, camelize, classify, deepClone, isBrowser, isNuxtApp, isUrlString, kebabize, target } from \"@vue/devtools-shared\";\nimport { debounce } from \"perfect-debounce\";\nimport { createHooks } from \"hookable\";\nimport { createBirpc, createBirpcGroup } from \"birpc\";\n\n//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target$1) => (target$1 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target$1, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target$1, mod));\n\n//#endregion\n//#region src/compat/index.ts\nfunction onLegacyDevToolsPluginApiAvailable(cb) {\n\tif (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__) {\n\t\tcb();\n\t\treturn;\n\t}\n\tObject.defineProperty(target, \"__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__\", {\n\t\tset(value) {\n\t\t\tif (value) cb();\n\t\t},\n\t\tconfigurable: true\n\t});\n}\n\n//#endregion\n//#region src/core/component/utils/index.ts\nfunction getComponentTypeName(options) {\n\tconst name = options.name || options._componentTag || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || options.__name;\n\tif (name === \"index\" && options.__file?.endsWith(\"index.vue\")) return \"\";\n\treturn name;\n}\nfunction getComponentFileName(options) {\n\tconst file = options.__file;\n\tif (file) return classify(basename(file, \".vue\"));\n}\nfunction getComponentName(options) {\n\tconst name = options.displayName || options.name || options._componentTag;\n\tif (name) return name;\n\treturn getComponentFileName(options);\n}\nfunction saveComponentGussedName(instance, name) {\n\tinstance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name;\n\treturn name;\n}\nfunction getAppRecord(instance) {\n\tif (instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__) return instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n\telse if (instance.root) return instance.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n}\nasync function getComponentId(options) {\n\tconst { app, uid, instance } = options;\n\ttry {\n\t\tif (instance.__VUE_DEVTOOLS_NEXT_UID__) return instance.__VUE_DEVTOOLS_NEXT_UID__;\n\t\tconst appRecord = await getAppRecord(app);\n\t\tif (!appRecord) return null;\n\t\tconst isRoot = appRecord.rootInstance === instance;\n\t\treturn `${appRecord.id}:${isRoot ? \"root\" : uid}`;\n\t} catch (e) {}\n}\nfunction isFragment(instance) {\n\tconst subTreeType = instance.subTree?.type;\n\tconst appRecord = getAppRecord(instance);\n\tif (appRecord) return appRecord?.types?.Fragment === subTreeType;\n\treturn false;\n}\nfunction isBeingDestroyed(instance) {\n\treturn instance._isBeingDestroyed || instance.isUnmounted;\n}\n/**\n* Get the appropriate display name for an instance.\n*\n* @param {Vue} instance\n* @return {string}\n*/\nfunction getInstanceName(instance) {\n\tconst name = getComponentTypeName(instance?.type || {});\n\tif (name) return name;\n\tif (instance?.root === instance) return \"Root\";\n\tfor (const key in instance.parent?.type?.components) if (instance.parent.type.components[key] === instance?.type) return saveComponentGussedName(instance, key);\n\tfor (const key in instance.appContext?.components) if (instance.appContext.components[key] === instance?.type) return saveComponentGussedName(instance, key);\n\tconst fileName = getComponentFileName(instance?.type || {});\n\tif (fileName) return fileName;\n\treturn \"Anonymous Component\";\n}\n/**\n* Returns a devtools unique id for instance.\n* @param {Vue} instance\n*/\nfunction getUniqueComponentId(instance) {\n\treturn `${instance?.appContext?.app?.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ ?? 0}:${instance === instance?.root ? \"root\" : instance.uid}`;\n}\nfunction getRenderKey(value) {\n\tif (value == null) return \"\";\n\tif (typeof value === \"number\") return value;\n\telse if (typeof value === \"string\") return `'${value}'`;\n\telse if (Array.isArray(value)) return \"Array\";\n\telse return \"Object\";\n}\nfunction returnError(cb) {\n\ttry {\n\t\treturn cb();\n\t} catch (e) {\n\t\treturn e;\n\t}\n}\nfunction getComponentInstance(appRecord, instanceId) {\n\tinstanceId = instanceId || `${appRecord.id}:root`;\n\treturn appRecord.instanceMap.get(instanceId) || appRecord.instanceMap.get(\":root\");\n}\nfunction ensurePropertyExists(obj, key, skipObjCheck = false) {\n\treturn skipObjCheck ? key in obj : typeof obj === \"object\" && obj !== null ? key in obj : false;\n}\n\n//#endregion\n//#region src/core/component/state/bounding-rect.ts\nfunction createRect() {\n\tconst rect = {\n\t\ttop: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tget width() {\n\t\t\treturn rect.right - rect.left;\n\t\t},\n\t\tget height() {\n\t\t\treturn rect.bottom - rect.top;\n\t\t}\n\t};\n\treturn rect;\n}\nlet range;\nfunction getTextRect(node) {\n\tif (!range) range = document.createRange();\n\trange.selectNode(node);\n\treturn range.getBoundingClientRect();\n}\nfunction getFragmentRect(vnode) {\n\tconst rect = createRect();\n\tif (!vnode.children) return rect;\n\tfor (let i = 0, l = vnode.children.length; i < l; i++) {\n\t\tconst childVnode = vnode.children[i];\n\t\tlet childRect;\n\t\tif (childVnode.component) childRect = getComponentBoundingRect(childVnode.component);\n\t\telse if (childVnode.el) {\n\t\t\tconst el = childVnode.el;\n\t\t\tif (el.nodeType === 1 || el.getBoundingClientRect) childRect = el.getBoundingClientRect();\n\t\t\telse if (el.nodeType === 3 && el.data.trim()) childRect = getTextRect(el);\n\t\t}\n\t\tif (childRect) mergeRects(rect, childRect);\n\t}\n\treturn rect;\n}\nfunction mergeRects(a, b) {\n\tif (!a.top || b.top < a.top) a.top = b.top;\n\tif (!a.bottom || b.bottom > a.bottom) a.bottom = b.bottom;\n\tif (!a.left || b.left < a.left) a.left = b.left;\n\tif (!a.right || b.right > a.right) a.right = b.right;\n\treturn a;\n}\nconst DEFAULT_RECT = {\n\ttop: 0,\n\tleft: 0,\n\tright: 0,\n\tbottom: 0,\n\twidth: 0,\n\theight: 0\n};\nfunction getComponentBoundingRect(instance) {\n\tconst el = instance.subTree.el;\n\tif (typeof window === \"undefined\") return DEFAULT_RECT;\n\tif (isFragment(instance)) return getFragmentRect(instance.subTree);\n\telse if (el?.nodeType === 1) return el?.getBoundingClientRect();\n\telse if (instance.subTree.component) return getComponentBoundingRect(instance.subTree.component);\n\telse return DEFAULT_RECT;\n}\n\n//#endregion\n//#region src/core/component/tree/el.ts\nfunction getRootElementsFromComponentInstance(instance) {\n\tif (isFragment(instance)) return getFragmentRootElements(instance.subTree);\n\tif (!instance.subTree) return [];\n\treturn [instance.subTree.el];\n}\nfunction getFragmentRootElements(vnode) {\n\tif (!vnode.children) return [];\n\tconst list = [];\n\tvnode.children.forEach((childVnode) => {\n\t\tif (childVnode.component) list.push(...getRootElementsFromComponentInstance(childVnode.component));\n\t\telse if (childVnode?.el) list.push(childVnode.el);\n\t});\n\treturn list;\n}\n\n//#endregion\n//#region src/core/component-highlighter/index.ts\nconst CONTAINER_ELEMENT_ID = \"__vue-devtools-component-inspector__\";\nconst CARD_ELEMENT_ID = \"__vue-devtools-component-inspector__card__\";\nconst COMPONENT_NAME_ELEMENT_ID = \"__vue-devtools-component-inspector__name__\";\nconst INDICATOR_ELEMENT_ID = \"__vue-devtools-component-inspector__indicator__\";\nconst containerStyles = {\n\tdisplay: \"block\",\n\tzIndex: 2147483640,\n\tposition: \"fixed\",\n\tbackgroundColor: \"#42b88325\",\n\tborder: \"1px solid #42b88350\",\n\tborderRadius: \"5px\",\n\ttransition: \"all 0.1s ease-in\",\n\tpointerEvents: \"none\"\n};\nconst cardStyles = {\n\tfontFamily: \"Arial, Helvetica, sans-serif\",\n\tpadding: \"5px 8px\",\n\tborderRadius: \"4px\",\n\ttextAlign: \"left\",\n\tposition: \"absolute\",\n\tleft: 0,\n\tcolor: \"#e9e9e9\",\n\tfontSize: \"14px\",\n\tfontWeight: 600,\n\tlineHeight: \"24px\",\n\tbackgroundColor: \"#42b883\",\n\tboxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)\"\n};\nconst indicatorStyles = {\n\tdisplay: \"inline-block\",\n\tfontWeight: 400,\n\tfontStyle: \"normal\",\n\tfontSize: \"12px\",\n\topacity: .7\n};\nfunction getContainerElement() {\n\treturn document.getElementById(CONTAINER_ELEMENT_ID);\n}\nfunction getCardElement() {\n\treturn document.getElementById(CARD_ELEMENT_ID);\n}\nfunction getIndicatorElement() {\n\treturn document.getElementById(INDICATOR_ELEMENT_ID);\n}\nfunction getNameElement() {\n\treturn document.getElementById(COMPONENT_NAME_ELEMENT_ID);\n}\nfunction getStyles(bounds) {\n\treturn {\n\t\tleft: `${Math.round(bounds.left * 100) / 100}px`,\n\t\ttop: `${Math.round(bounds.top * 100) / 100}px`,\n\t\twidth: `${Math.round(bounds.width * 100) / 100}px`,\n\t\theight: `${Math.round(bounds.height * 100) / 100}px`\n\t};\n}\nfunction create(options) {\n\tconst containerEl = document.createElement(\"div\");\n\tcontainerEl.id = options.elementId ?? CONTAINER_ELEMENT_ID;\n\tObject.assign(containerEl.style, {\n\t\t...containerStyles,\n\t\t...getStyles(options.bounds),\n\t\t...options.style\n\t});\n\tconst cardEl = document.createElement(\"span\");\n\tcardEl.id = CARD_ELEMENT_ID;\n\tObject.assign(cardEl.style, {\n\t\t...cardStyles,\n\t\ttop: options.bounds.top < 35 ? 0 : \"-35px\"\n\t});\n\tconst nameEl = document.createElement(\"span\");\n\tnameEl.id = COMPONENT_NAME_ELEMENT_ID;\n\tnameEl.innerHTML = `&lt;${options.name}&gt;&nbsp;&nbsp;`;\n\tconst indicatorEl = document.createElement(\"i\");\n\tindicatorEl.id = INDICATOR_ELEMENT_ID;\n\tindicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n\tObject.assign(indicatorEl.style, indicatorStyles);\n\tcardEl.appendChild(nameEl);\n\tcardEl.appendChild(indicatorEl);\n\tcontainerEl.appendChild(cardEl);\n\tdocument.body.appendChild(containerEl);\n\treturn containerEl;\n}\nfunction update(options) {\n\tconst containerEl = getContainerElement();\n\tconst cardEl = getCardElement();\n\tconst nameEl = getNameElement();\n\tconst indicatorEl = getIndicatorElement();\n\tif (containerEl) {\n\t\tObject.assign(containerEl.style, {\n\t\t\t...containerStyles,\n\t\t\t...getStyles(options.bounds)\n\t\t});\n\t\tObject.assign(cardEl.style, { top: options.bounds.top < 35 ? 0 : \"-35px\" });\n\t\tnameEl.innerHTML = `&lt;${options.name}&gt;&nbsp;&nbsp;`;\n\t\tindicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n\t}\n}\nfunction highlight(instance) {\n\tconst bounds = getComponentBoundingRect(instance);\n\tif (!bounds.width && !bounds.height) return;\n\tconst name = getInstanceName(instance);\n\tgetContainerElement() ? update({\n\t\tbounds,\n\t\tname\n\t}) : create({\n\t\tbounds,\n\t\tname\n\t});\n}\nfunction unhighlight() {\n\tconst el = getContainerElement();\n\tif (el) el.style.display = \"none\";\n}\nlet inspectInstance = null;\nfunction inspectFn(e) {\n\tconst target$1 = e.target;\n\tif (target$1) {\n\t\tconst instance = target$1.__vueParentComponent;\n\t\tif (instance) {\n\t\t\tinspectInstance = instance;\n\t\t\tif (instance.vnode.el) {\n\t\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\t\tconst name = getInstanceName(instance);\n\t\t\t\tgetContainerElement() ? update({\n\t\t\t\t\tbounds,\n\t\t\t\t\tname\n\t\t\t\t}) : create({\n\t\t\t\t\tbounds,\n\t\t\t\t\tname\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\nfunction selectComponentFn(e, cb) {\n\te.preventDefault();\n\te.stopPropagation();\n\tif (inspectInstance) cb(getUniqueComponentId(inspectInstance));\n}\nlet inspectComponentHighLighterSelectFn = null;\nfunction cancelInspectComponentHighLighter() {\n\tunhighlight();\n\twindow.removeEventListener(\"mouseover\", inspectFn);\n\twindow.removeEventListener(\"click\", inspectComponentHighLighterSelectFn, true);\n\tinspectComponentHighLighterSelectFn = null;\n}\nfunction inspectComponentHighLighter() {\n\twindow.addEventListener(\"mouseover\", inspectFn);\n\treturn new Promise((resolve) => {\n\t\tfunction onSelect(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tselectComponentFn(e, (id) => {\n\t\t\t\twindow.removeEventListener(\"click\", onSelect, true);\n\t\t\t\tinspectComponentHighLighterSelectFn = null;\n\t\t\t\twindow.removeEventListener(\"mouseover\", inspectFn);\n\t\t\t\tconst el = getContainerElement();\n\t\t\t\tif (el) el.style.display = \"none\";\n\t\t\t\tresolve(JSON.stringify({ id }));\n\t\t\t});\n\t\t}\n\t\tinspectComponentHighLighterSelectFn = onSelect;\n\t\twindow.addEventListener(\"click\", onSelect, true);\n\t});\n}\nfunction scrollToComponent(options) {\n\tconst instance = getComponentInstance(activeAppRecord.value, options.id);\n\tif (instance) {\n\t\tconst [el] = getRootElementsFromComponentInstance(instance);\n\t\tif (typeof el.scrollIntoView === \"function\") el.scrollIntoView({ behavior: \"smooth\" });\n\t\telse {\n\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\tconst scrollTarget = document.createElement(\"div\");\n\t\t\tconst styles = {\n\t\t\t\t...getStyles(bounds),\n\t\t\t\tposition: \"absolute\"\n\t\t\t};\n\t\t\tObject.assign(scrollTarget.style, styles);\n\t\t\tdocument.body.appendChild(scrollTarget);\n\t\t\tscrollTarget.scrollIntoView({ behavior: \"smooth\" });\n\t\t\tsetTimeout(() => {\n\t\t\t\tdocument.body.removeChild(scrollTarget);\n\t\t\t}, 2e3);\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\tif (bounds.width || bounds.height) {\n\t\t\t\tconst name = getInstanceName(instance);\n\t\t\t\tconst el$1 = getContainerElement();\n\t\t\t\tel$1 ? update({\n\t\t\t\t\t...options,\n\t\t\t\t\tname,\n\t\t\t\t\tbounds\n\t\t\t\t}) : create({\n\t\t\t\t\t...options,\n\t\t\t\t\tname,\n\t\t\t\t\tbounds\n\t\t\t\t});\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (el$1) el$1.style.display = \"none\";\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t}, 1200);\n\t}\n}\n\n//#endregion\n//#region src/core/component-inspector/index.ts\ntarget.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ ??= true;\nfunction toggleComponentInspectorEnabled(enabled) {\n\ttarget.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = enabled;\n}\nfunction waitForInspectorInit(cb) {\n\tlet total = 0;\n\tconst timer = setInterval(() => {\n\t\tif (target.__VUE_INSPECTOR__) {\n\t\t\tclearInterval(timer);\n\t\t\ttotal += 30;\n\t\t\tcb();\n\t\t}\n\t\tif (total >= 5e3) clearInterval(timer);\n\t}, 30);\n}\nfunction setupInspector() {\n\tconst inspector = target.__VUE_INSPECTOR__;\n\tconst _openInEditor = inspector.openInEditor;\n\tinspector.openInEditor = async (...params) => {\n\t\tinspector.disable();\n\t\t_openInEditor(...params);\n\t};\n}\nfunction getComponentInspector() {\n\treturn new Promise((resolve) => {\n\t\tfunction setup() {\n\t\t\tsetupInspector();\n\t\t\tresolve(target.__VUE_INSPECTOR__);\n\t\t}\n\t\tif (!target.__VUE_INSPECTOR__) waitForInspectorInit(() => {\n\t\t\tsetup();\n\t\t});\n\t\telse setup();\n\t});\n}\n\n//#endregion\n//#region src/shared/stub-vue.ts\n/**\n* To prevent include a **HUGE** vue package in the final bundle of chrome ext / electron\n* we stub the necessary vue module.\n* This implementation is based on the 1c3327a0fa5983aa9078e3f7bb2330f572435425 commit\n*/\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/constants.ts#L17-L23)\n*/\nlet ReactiveFlags = /* @__PURE__ */ function(ReactiveFlags$1) {\n\tReactiveFlags$1[\"SKIP\"] = \"__v_skip\";\n\tReactiveFlags$1[\"IS_REACTIVE\"] = \"__v_isReactive\";\n\tReactiveFlags$1[\"IS_READONLY\"] = \"__v_isReadonly\";\n\tReactiveFlags$1[\"IS_SHALLOW\"] = \"__v_isShallow\";\n\tReactiveFlags$1[\"RAW\"] = \"__v_raw\";\n\treturn ReactiveFlags$1;\n}({});\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L330-L332)\n*/\nfunction isReadonly(value) {\n\treturn !!(value && value[ReactiveFlags.IS_READONLY]);\n}\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L312-L317)\n*/\nfunction isReactive$1(value) {\n\tif (isReadonly(value)) return isReactive$1(value[ReactiveFlags.RAW]);\n\treturn !!(value && value[ReactiveFlags.IS_REACTIVE]);\n}\nfunction isRef$1(r) {\n\treturn !!(r && r.__v_isRef === true);\n}\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L372-L375)\n*/\nfunction toRaw$1(observed) {\n\tconst raw = observed && observed[ReactiveFlags.RAW];\n\treturn raw ? toRaw$1(raw) : observed;\n}\n/**\n* @from [@vue/runtime-core](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/runtime-core/src/vnode.ts#L63-L68)\n*/\nconst Fragment = Symbol.for(\"v-fgt\");\n\n//#endregion\n//#region src/core/component/state/editor.ts\nvar StateEditor = class {\n\tconstructor() {\n\t\tthis.refEditor = new RefStateEditor();\n\t}\n\tset(object, path, value, cb) {\n\t\tconst sections = Array.isArray(path) ? path : path.split(\".\");\n\t\twhile (sections.length > 1) {\n\t\t\tconst section = sections.shift();\n\t\t\tif (object instanceof Map) object = object.get(section);\n\t\t\telse if (object instanceof Set) object = Array.from(object.values())[section];\n\t\t\telse object = object[section];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t}\n\t\tconst field = sections[0];\n\t\tconst item = this.refEditor.get(object)[field];\n\t\tif (cb) cb(object, field, value);\n\t\telse if (this.refEditor.isRef(item)) this.refEditor.set(item, value);\n\t\telse object[field] = value;\n\t}\n\tget(object, path) {\n\t\tconst sections = Array.isArray(path) ? path : path.split(\".\");\n\t\tfor (let i = 0; i < sections.length; i++) {\n\t\t\tif (object instanceof Map) object = object.get(sections[i]);\n\t\t\telse object = object[sections[i]];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t\tif (!object) return void 0;\n\t\t}\n\t\treturn object;\n\t}\n\thas(object, path, parent = false) {\n\t\tif (typeof object === \"undefined\") return false;\n\t\tconst sections = Array.isArray(path) ? path.slice() : path.split(\".\");\n\t\tconst size = !parent ? 1 : 2;\n\t\twhile (object && sections.length > size) {\n\t\t\tconst section = sections.shift();\n\t\t\tobject = object[section];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t}\n\t\treturn object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);\n\t}\n\tcreateDefaultSetCallback(state) {\n\t\treturn (object, field, value) => {\n\t\t\tif (state.remove || state.newKey) if (Array.isArray(object)) object.splice(field, 1);\n\t\t\telse if (toRaw$1(object) instanceof Map) object.delete(field);\n\t\t\telse if (toRaw$1(object) instanceof Set) object.delete(Array.from(object.values())[field]);\n\t\t\telse Reflect.deleteProperty(object, field);\n\t\t\tif (!state.remove) {\n\t\t\t\tconst target$1 = object[state.newKey || field];\n\t\t\t\tif (this.refEditor.isRef(target$1)) this.refEditor.set(target$1, value);\n\t\t\t\telse if (toRaw$1(object) instanceof Map) object.set(state.newKey || field, value);\n\t\t\t\telse if (toRaw$1(object) instanceof Set) object.add(value);\n\t\t\t\telse object[state.newKey || field] = value;\n\t\t\t}\n\t\t};\n\t}\n};\nvar RefStateEditor = class {\n\tset(ref, value) {\n\t\tif (isRef$1(ref)) ref.value = value;\n\t\telse {\n\t\t\tif (ref instanceof Set && Array.isArray(value)) {\n\t\t\t\tref.clear();\n\t\t\t\tvalue.forEach((v) => ref.add(v));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentKeys = Object.keys(value);\n\t\t\tif (ref instanceof Map) {\n\t\t\t\tconst previousKeysSet$1 = new Set(ref.keys());\n\t\t\t\tcurrentKeys.forEach((key) => {\n\t\t\t\t\tref.set(key, Reflect.get(value, key));\n\t\t\t\t\tpreviousKeysSet$1.delete(key);\n\t\t\t\t});\n\t\t\t\tpreviousKeysSet$1.forEach((key) => ref.delete(key));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst previousKeysSet = new Set(Object.keys(ref));\n\t\t\tcurrentKeys.forEach((key) => {\n\t\t\t\tReflect.set(ref, key, Reflect.get(value, key));\n\t\t\t\tpreviousKeysSet.delete(key);\n\t\t\t});\n\t\t\tpreviousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key));\n\t\t}\n\t}\n\tget(ref) {\n\t\treturn isRef$1(ref) ? ref.value : ref;\n\t}\n\tisRef(ref) {\n\t\treturn isRef$1(ref) || isReactive$1(ref);\n\t}\n};\nasync function editComponentState(payload, stateEditor$1) {\n\tconst { path, nodeId, state, type } = payload;\n\tconst instance = getComponentInstance(activeAppRecord.value, nodeId);\n\tif (!instance) return;\n\tconst targetPath = path.slice();\n\tlet target$1;\n\tif (Object.keys(instance.props).includes(path[0])) target$1 = instance.props;\n\telse if (instance.devtoolsRawSetupState && Object.keys(instance.devtoolsRawSetupState).includes(path[0])) target$1 = instance.devtoolsRawSetupState;\n\telse if (instance.data && Object.keys(instance.data).includes(path[0])) target$1 = instance.data;\n\telse target$1 = instance.proxy;\n\tif (target$1 && targetPath) {\n\t\tif (state.type === \"object\" && type === \"reactive\") {}\n\t\tstateEditor$1.set(target$1, targetPath, state.value, stateEditor$1.createDefaultSetCallback(state));\n\t}\n}\nconst stateEditor = new StateEditor();\nasync function editState(payload) {\n\teditComponentState(payload, stateEditor);\n}\n\n//#endregion\n//#region src/core/timeline/storage.ts\nconst TIMELINE_LAYERS_STATE_STORAGE_ID = \"__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__\";\nfunction addTimelineLayersStateToStorage(state) {\n\tif (!isBrowser || typeof localStorage === \"undefined\" || localStorage === null) return;\n\tlocalStorage.setItem(TIMELINE_LAYERS_STATE_STORAGE_ID, JSON.stringify(state));\n}\nfunction getTimelineLayersStateFromStorage() {\n\tif (typeof window === \"undefined\" || !isBrowser || typeof localStorage === \"undefined\" || localStorage === null) return {\n\t\trecordingState: false,\n\t\tmouseEventEnabled: false,\n\t\tkeyboardEventEnabled: false,\n\t\tcomponentEventEnabled: false,\n\t\tperformanceEventEnabled: false,\n\t\tselected: \"\"\n\t};\n\tconst state = typeof localStorage.getItem !== \"undefined\" ? localStorage.getItem(TIMELINE_LAYERS_STATE_STORAGE_ID) : null;\n\treturn state ? JSON.parse(state) : {\n\t\trecordingState: false,\n\t\tmouseEventEnabled: false,\n\t\tkeyboardEventEnabled: false,\n\t\tcomponentEventEnabled: false,\n\t\tperformanceEventEnabled: false,\n\t\tselected: \"\"\n\t};\n}\n\n//#endregion\n//#region src/ctx/timeline.ts\ntarget.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS ??= [];\nconst devtoolsTimelineLayers = new Proxy(target.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nfunction addTimelineLayer(options, descriptor) {\n\tdevtoolsState.timelineLayersState[descriptor.id] = false;\n\tdevtoolsTimelineLayers.push({\n\t\t...options,\n\t\tdescriptorId: descriptor.id,\n\t\tappRecord: getAppRecord(descriptor.app)\n\t});\n}\nfunction updateTimelineLayersState(state) {\n\tconst updatedState = {\n\t\t...devtoolsState.timelineLayersState,\n\t\t...state\n\t};\n\taddTimelineLayersStateToStorage(updatedState);\n\tupdateDevToolsState({ timelineLayersState: updatedState });\n}\n\n//#endregion\n//#region src/ctx/inspector.ts\ntarget.__VUE_DEVTOOLS_KIT_INSPECTOR__ ??= [];\nconst devtoolsInspector = new Proxy(target.__VUE_DEVTOOLS_KIT_INSPECTOR__, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nconst callInspectorUpdatedHook = debounce(() => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT, getActiveInspectors());\n});\nfunction addInspector(inspector, descriptor) {\n\tdevtoolsInspector.push({\n\t\toptions: inspector,\n\t\tdescriptor,\n\t\ttreeFilterPlaceholder: inspector.treeFilterPlaceholder ?? \"Search tree...\",\n\t\tstateFilterPlaceholder: inspector.stateFilterPlaceholder ?? \"Search state...\",\n\t\ttreeFilter: \"\",\n\t\tselectedNodeId: \"\",\n\t\tappRecord: getAppRecord(descriptor.app)\n\t});\n\tcallInspectorUpdatedHook();\n}\nfunction getActiveInspectors() {\n\treturn devtoolsInspector.filter((inspector) => inspector.descriptor.app === activeAppRecord.value.app).filter((inspector) => inspector.descriptor.id !== \"components\").map((inspector) => {\n\t\tconst descriptor = inspector.descriptor;\n\t\tconst options = inspector.options;\n\t\treturn {\n\t\t\tid: options.id,\n\t\t\tlabel: options.label,\n\t\t\tlogo: descriptor.logo,\n\t\t\ticon: `custom-ic-baseline-${options?.icon?.replace(/_/g, \"-\")}`,\n\t\t\tpackageName: descriptor.packageName,\n\t\t\thomepage: descriptor.homepage,\n\t\t\tpluginId: descriptor.id\n\t\t};\n\t});\n}\nfunction getInspectorInfo(id) {\n\tconst inspector = getInspector(id, activeAppRecord.value.app);\n\tif (!inspector) return;\n\tconst descriptor = inspector.descriptor;\n\tconst options = inspector.options;\n\tconst timelineLayers = devtoolsTimelineLayers.filter((layer) => layer.descriptorId === descriptor.id).map((item) => ({\n\t\tid: item.id,\n\t\tlabel: item.label,\n\t\tcolor: item.color\n\t}));\n\treturn {\n\t\tid: options.id,\n\t\tlabel: options.label,\n\t\tlogo: descriptor.logo,\n\t\tpackageName: descriptor.packageName,\n\t\thomepage: descriptor.homepage,\n\t\ttimelineLayers,\n\t\ttreeFilterPlaceholder: inspector.treeFilterPlaceholder,\n\t\tstateFilterPlaceholder: inspector.stateFilterPlaceholder\n\t};\n}\nfunction getInspector(id, app) {\n\treturn devtoolsInspector.find((inspector) => inspector.options.id === id && (app ? inspector.descriptor.app === app : true));\n}\nfunction getInspectorActions(id) {\n\treturn getInspector(id)?.options.actions;\n}\nfunction getInspectorNodeActions(id) {\n\treturn getInspector(id)?.options.nodeActions;\n}\n\n//#endregion\n//#region src/ctx/hook.ts\nlet DevToolsV6PluginAPIHookKeys = /* @__PURE__ */ function(DevToolsV6PluginAPIHookKeys$1) {\n\tDevToolsV6PluginAPIHookKeys$1[\"VISIT_COMPONENT_TREE\"] = \"visitComponentTree\";\n\tDevToolsV6PluginAPIHookKeys$1[\"INSPECT_COMPONENT\"] = \"inspectComponent\";\n\tDevToolsV6PluginAPIHookKeys$1[\"EDIT_COMPONENT_STATE\"] = \"editComponentState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"GET_INSPECTOR_TREE\"] = \"getInspectorTree\";\n\tDevToolsV6PluginAPIHookKeys$1[\"GET_INSPECTOR_STATE\"] = \"getInspectorState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"EDIT_INSPECTOR_STATE\"] = \"editInspectorState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"INSPECT_TIMELINE_EVENT\"] = \"inspectTimelineEvent\";\n\tDevToolsV6PluginAPIHookKeys$1[\"TIMELINE_CLEARED\"] = \"timelineCleared\";\n\tDevToolsV6PluginAPIHookKeys$1[\"SET_PLUGIN_SETTINGS\"] = \"setPluginSettings\";\n\treturn DevToolsV6PluginAPIHookKeys$1;\n}({});\nlet DevToolsContextHookKeys = /* @__PURE__ */ function(DevToolsContextHookKeys$1) {\n\tDevToolsContextHookKeys$1[\"ADD_INSPECTOR\"] = \"addInspector\";\n\tDevToolsContextHookKeys$1[\"SEND_INSPECTOR_TREE\"] = \"sendInspectorTree\";\n\tDevToolsContextHookKeys$1[\"SEND_INSPECTOR_STATE\"] = \"sendInspectorState\";\n\tDevToolsContextHookKeys$1[\"CUSTOM_INSPECTOR_SELECT_NODE\"] = \"customInspectorSelectNode\";\n\tDevToolsContextHookKeys$1[\"TIMELINE_LAYER_ADDED\"] = \"timelineLayerAdded\";\n\tDevToolsContextHookKeys$1[\"TIMELINE_EVENT_ADDED\"] = \"timelineEventAdded\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_INSTANCES\"] = \"getComponentInstances\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_BOUNDS\"] = \"getComponentBounds\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_NAME\"] = \"getComponentName\";\n\tDevToolsContextHookKeys$1[\"COMPONENT_HIGHLIGHT\"] = \"componentHighlight\";\n\tDevToolsContextHookKeys$1[\"COMPONENT_UNHIGHLIGHT\"] = \"componentUnhighlight\";\n\treturn DevToolsContextHookKeys$1;\n}({});\nlet DevToolsMessagingHookKeys = /* @__PURE__ */ function(DevToolsMessagingHookKeys$1) {\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_TREE_TO_CLIENT\"] = \"sendInspectorTreeToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_STATE_TO_CLIENT\"] = \"sendInspectorStateToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_TIMELINE_EVENT_TO_CLIENT\"] = \"sendTimelineEventToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_TO_CLIENT\"] = \"sendInspectorToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT\"] = \"sendActiveAppUpdatedToClient\";\n\tDevToolsMessagingHookKeys$1[\"DEVTOOLS_STATE_UPDATED\"] = \"devtoolsStateUpdated\";\n\tDevToolsMessagingHookKeys$1[\"DEVTOOLS_CONNECTED_UPDATED\"] = \"devtoolsConnectedUpdated\";\n\tDevToolsMessagingHookKeys$1[\"ROUTER_INFO_UPDATED\"] = \"routerInfoUpdated\";\n\treturn DevToolsMessagingHookKeys$1;\n}({});\nfunction createDevToolsCtxHooks() {\n\tconst hooks$1 = createHooks();\n\thooks$1.hook(DevToolsContextHookKeys.ADD_INSPECTOR, ({ inspector, plugin }) => {\n\t\taddInspector(inspector, plugin.descriptor);\n\t});\n\tconst debounceSendInspectorTree = debounce(async ({ inspectorId, plugin }) => {\n\t\tif (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tconst _payload = {\n\t\t\tapp: plugin.descriptor.app,\n\t\t\tinspectorId,\n\t\t\tfilter: inspector?.treeFilter || \"\",\n\t\t\trootNodes: []\n\t\t};\n\t\tawait new Promise((resolve) => {\n\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload)));\n\t\t\t\tresolve();\n\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE);\n\t\t});\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb({\n\t\t\t\tinspectorId,\n\t\t\t\trootNodes: _payload.rootNodes\n\t\t\t})));\n\t\t}, DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT);\n\t}, 120);\n\thooks$1.hook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, debounceSendInspectorTree);\n\tconst debounceSendInspectorState = debounce(async ({ inspectorId, plugin }) => {\n\t\tif (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tconst _payload = {\n\t\t\tapp: plugin.descriptor.app,\n\t\t\tinspectorId,\n\t\t\tnodeId: inspector?.selectedNodeId || \"\",\n\t\t\tstate: null\n\t\t};\n\t\tconst ctx = { currentTab: `custom-inspector:${inspectorId}` };\n\t\tif (_payload.nodeId) await new Promise((resolve) => {\n\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n\t\t\t\tresolve();\n\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE);\n\t\t});\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb({\n\t\t\t\tinspectorId,\n\t\t\t\tnodeId: _payload.nodeId,\n\t\t\t\tstate: _payload.state\n\t\t\t})));\n\t\t}, DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT);\n\t}, 120);\n\thooks$1.hook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, debounceSendInspectorState);\n\thooks$1.hook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, ({ inspectorId, nodeId, plugin }) => {\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tif (!inspector) return;\n\t\tinspector.selectedNodeId = nodeId;\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, ({ options, plugin }) => {\n\t\taddTimelineLayer(options, plugin.descriptor);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, ({ options, plugin }) => {\n\t\tif (devtoolsState.highPerfModeEnabled || !devtoolsState.timelineLayersState?.[plugin.descriptor.id] && ![\n\t\t\t\"performance\",\n\t\t\t\"component-event\",\n\t\t\t\"keyboard\",\n\t\t\t\"mouse\"\n\t\t].includes(options.layerId)) return;\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb(options)));\n\t\t}, DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, async ({ app }) => {\n\t\tconst appRecord = app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n\t\tif (!appRecord) return null;\n\t\tconst appId = appRecord.id.toString();\n\t\treturn [...appRecord.instanceMap].filter(([key]) => key.split(\":\")[0] === appId).map(([, instance]) => instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, async ({ instance }) => {\n\t\treturn getComponentBoundingRect(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_NAME, ({ instance }) => {\n\t\treturn getInstanceName(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, ({ uid }) => {\n\t\tconst instance = activeAppRecord.value.instanceMap.get(uid);\n\t\tif (instance) highlight(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT, () => {\n\t\tunhighlight();\n\t});\n\treturn hooks$1;\n}\n\n//#endregion\n//#region src/ctx/state.ts\ntarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ ??= {};\ntarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ ??= \"\";\ntarget.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ ??= [];\nconst STATE_KEY = \"__VUE_DEVTOOLS_KIT_GLOBAL_STATE__\";\nfunction initStateFactory() {\n\treturn {\n\t\tconnected: false,\n\t\tclientConnected: false,\n\t\tvitePluginDetected: true,\n\t\tappRecords: [],\n\t\tactiveAppRecordId: \"\",\n\t\ttabs: [],\n\t\tcommands: [],\n\t\thighPerfModeEnabled: true,\n\t\tdevtoolsClientDetected: {},\n\t\tperfUniqueGroupId: 0,\n\t\ttimelineLayersState: getTimelineLayersStateFromStorage()\n\t};\n}\ntarget[STATE_KEY] ??= initStateFactory();\nconst callStateUpdatedHook = debounce((state) => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED, { state });\n});\nconst callConnectedUpdatedHook = debounce((state, oldState) => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, {\n\t\tstate,\n\t\toldState\n\t});\n});\nconst devtoolsAppRecords = new Proxy(target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, { get(_target, prop, receiver) {\n\tif (prop === \"value\") return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__;\n\treturn target.__VUE_DEVTOOLS_KIT_APP_RECORDS__[prop];\n} });\nconst addDevToolsAppRecord = (app) => {\n\ttarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = [...target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, app];\n};\nconst removeDevToolsAppRecord = (app) => {\n\ttarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = devtoolsAppRecords.value.filter((record) => record.app !== app);\n};\nconst activeAppRecord = new Proxy(target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__, { get(_target, prop, receiver) {\n\tif (prop === \"value\") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__;\n\telse if (prop === \"id\") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__;\n\treturn target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[prop];\n} });\nfunction updateAllStates() {\n\tcallStateUpdatedHook({\n\t\t...target[STATE_KEY],\n\t\tappRecords: devtoolsAppRecords.value,\n\t\tactiveAppRecordId: activeAppRecord.id,\n\t\ttabs: target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,\n\t\tcommands: target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__\n\t});\n}\nfunction setActiveAppRecord(app) {\n\ttarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = app;\n\tupdateAllStates();\n}\nfunction setActiveAppRecordId(id) {\n\ttarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = id;\n\tupdateAllStates();\n}\nconst devtoolsState = new Proxy(target[STATE_KEY], {\n\tget(target$1, property) {\n\t\tif (property === \"appRecords\") return devtoolsAppRecords;\n\t\telse if (property === \"activeAppRecordId\") return activeAppRecord.id;\n\t\telse if (property === \"tabs\") return target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n\t\telse if (property === \"commands\") return target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\t\treturn target[STATE_KEY][property];\n\t},\n\tdeleteProperty(target$1, property) {\n\t\tdelete target$1[property];\n\t\treturn true;\n\t},\n\tset(target$1, property, value) {\n\t\t({ ...target[STATE_KEY] });\n\t\ttarget$1[property] = value;\n\t\ttarget[STATE_KEY][property] = value;\n\t\treturn true;\n\t}\n});\nfunction resetDevToolsState() {\n\tObject.assign(target[STATE_KEY], initStateFactory());\n}\nfunction updateDevToolsState(state) {\n\tconst oldState = {\n\t\t...target[STATE_KEY],\n\t\tappRecords: devtoolsAppRecords.value,\n\t\tactiveAppRecordId: activeAppRecord.id\n\t};\n\tif (oldState.connected !== state.connected && state.connected || oldState.clientConnected !== state.clientConnected && state.clientConnected) callConnectedUpdatedHook(target[STATE_KEY], oldState);\n\tObject.assign(target[STATE_KEY], state);\n\tupdateAllStates();\n}\nfunction onDevToolsConnected(fn) {\n\treturn new Promise((resolve) => {\n\t\tif (devtoolsState.connected) {\n\t\t\tfn();\n\t\t\tresolve();\n\t\t}\n\t\tdevtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => {\n\t\t\tif (state.connected) {\n\t\t\t\tfn();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n}\nconst resolveIcon = (icon) => {\n\tif (!icon) return;\n\tif (icon.startsWith(\"baseline-\")) return `custom-ic-${icon}`;\n\tif (icon.startsWith(\"i-\") || isUrlString(icon)) return icon;\n\treturn `custom-ic-baseline-${icon}`;\n};\nfunction addCustomTab(tab) {\n\tconst tabs = target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n\tif (tabs.some((t) => t.name === tab.name)) return;\n\ttabs.push({\n\t\t...tab,\n\t\ticon: resolveIcon(tab.icon)\n\t});\n\tupdateAllStates();\n}\nfunction addCustomCommand(action) {\n\tconst commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\tif (commands.some((t) => t.id === action.id)) return;\n\tcommands.push({\n\t\t...action,\n\t\ticon: resolveIcon(action.icon),\n\t\tchildren: action.children ? action.children.map((child) => ({\n\t\t\t...child,\n\t\t\ticon: resolveIcon(child.icon)\n\t\t})) : void 0\n\t});\n\tupdateAllStates();\n}\nfunction removeCustomCommand(actionId) {\n\tconst commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\tconst index = commands.findIndex((t) => t.id === actionId);\n\tif (index === -1) return;\n\tcommands.splice(index, 1);\n\tupdateAllStates();\n}\nfunction toggleClientConnected(state) {\n\tupdateDevToolsState({ clientConnected: state });\n}\n\n//#endregion\n//#region src/core/open-in-editor/index.ts\nfunction setOpenInEditorBaseUrl(url) {\n\ttarget.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ = url;\n}\nfunction openInEditor(options = {}) {\n\tconst { file, host, baseUrl = window.location.origin, line = 0, column = 0 } = options;\n\tif (file) {\n\t\tif (host === \"chrome-extension\") {\n\t\t\tconst fileName = file.replace(/\\\\/g, \"\\\\\\\\\");\n\t\t\tconst _baseUrl = window.VUE_DEVTOOLS_CONFIG?.openInEditorHost ?? \"/\";\n\t\t\tfetch(`${_baseUrl}__open-in-editor?file=${encodeURI(file)}`).then((response) => {\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tconst msg = `Opening component ${fileName} failed`;\n\t\t\t\t\tconsole.log(`%c${msg}`, \"color:red\");\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (devtoolsState.vitePluginDetected) {\n\t\t\tconst _baseUrl = target.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ ?? baseUrl;\n\t\t\ttarget.__VUE_INSPECTOR__.openInEditor(_baseUrl, file, line, column);\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/ctx/plugin.ts\ntarget.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__ ??= [];\nconst devtoolsPluginBuffer = new Proxy(target.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nfunction addDevToolsPluginToBuffer(pluginDescriptor, setupFn) {\n\tdevtoolsPluginBuffer.push([pluginDescriptor, setupFn]);\n}\n\n//#endregion\n//#region src/core/plugin/plugin-settings.ts\nfunction _getSettings(settings) {\n\tconst _settings = {};\n\tObject.keys(settings).forEach((key) => {\n\t\t_settings[key] = settings[key].defaultValue;\n\t});\n\treturn _settings;\n}\nfunction getPluginLocalKey(pluginId) {\n\treturn `__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${pluginId}__`;\n}\nfunction getPluginSettingsOptions(pluginId) {\n\treturn (devtoolsPluginBuffer.find((item) => item[0].id === pluginId && !!item[0]?.settings)?.[0] ?? null)?.settings ?? null;\n}\nfunction getPluginSettings(pluginId, fallbackValue) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tif (localKey) {\n\t\tconst localSettings = localStorage.getItem(localKey);\n\t\tif (localSettings) return JSON.parse(localSettings);\n\t}\n\tif (pluginId) return _getSettings((devtoolsPluginBuffer.find((item) => item[0].id === pluginId)?.[0] ?? null)?.settings ?? {});\n\treturn _getSettings(fallbackValue);\n}\nfunction initPluginSettings(pluginId, settings) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tif (!localStorage.getItem(localKey)) localStorage.setItem(localKey, JSON.stringify(_getSettings(settings)));\n}\nfunction setPluginSettings(pluginId, key, value) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tconst localSettings = localStorage.getItem(localKey);\n\tconst parsedLocalSettings = JSON.parse(localSettings || \"{}\");\n\tconst updated = {\n\t\t...parsedLocalSettings,\n\t\t[key]: value\n\t};\n\tlocalStorage.setItem(localKey, JSON.stringify(updated));\n\tdevtoolsContext.hooks.callHookWith((callbacks) => {\n\t\tcallbacks.forEach((cb) => cb({\n\t\t\tpluginId,\n\t\t\tkey,\n\t\t\toldValue: parsedLocalSettings[key],\n\t\t\tnewValue: value,\n\t\t\tsettings: updated\n\t\t}));\n\t}, DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS);\n}\n\n//#endregion\n//#region src/types/hook.ts\nlet DevToolsHooks = /* @__PURE__ */ function(DevToolsHooks$1) {\n\tDevToolsHooks$1[\"APP_INIT\"] = \"app:init\";\n\tDevToolsHooks$1[\"APP_UNMOUNT\"] = \"app:unmount\";\n\tDevToolsHooks$1[\"COMPONENT_UPDATED\"] = \"component:updated\";\n\tDevToolsHooks$1[\"COMPONENT_ADDED\"] = \"component:added\";\n\tDevToolsHooks$1[\"COMPONENT_REMOVED\"] = \"component:removed\";\n\tDevToolsHooks$1[\"COMPONENT_EMIT\"] = \"component:emit\";\n\tDevToolsHooks$1[\"PERFORMANCE_START\"] = \"perf:start\";\n\tDevToolsHooks$1[\"PERFORMANCE_END\"] = \"perf:end\";\n\tDevToolsHooks$1[\"ADD_ROUTE\"] = \"router:add-route\";\n\tDevToolsHooks$1[\"REMOVE_ROUTE\"] = \"router:remove-route\";\n\tDevToolsHooks$1[\"RENDER_TRACKED\"] = \"render:tracked\";\n\tDevToolsHooks$1[\"RENDER_TRIGGERED\"] = \"render:triggered\";\n\tDevToolsHooks$1[\"APP_CONNECTED\"] = \"app:connected\";\n\tDevToolsHooks$1[\"SETUP_DEVTOOLS_PLUGIN\"] = \"devtools-plugin:setup\";\n\treturn DevToolsHooks$1;\n}({});\n\n//#endregion\n//#region src/hook/index.ts\nconst devtoolsHooks = target.__VUE_DEVTOOLS_HOOK ??= createHooks();\nconst on = {\n\tvueAppInit(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_INIT, fn);\n\t},\n\tvueAppUnmount(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_UNMOUNT, fn);\n\t},\n\tvueAppConnected(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_CONNECTED, fn);\n\t},\n\tcomponentAdded(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_ADDED, fn);\n\t},\n\tcomponentEmit(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_EMIT, fn);\n\t},\n\tcomponentUpdated(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_UPDATED, fn);\n\t},\n\tcomponentRemoved(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_REMOVED, fn);\n\t},\n\tsetupDevtoolsPlugin(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, fn);\n\t},\n\tperfStart(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_START, fn);\n\t},\n\tperfEnd(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_END, fn);\n\t}\n};\nfunction createDevToolsHook() {\n\treturn {\n\t\tid: \"vue-devtools-next\",\n\t\tdevtoolsVersion: \"7.0\",\n\t\tenabled: false,\n\t\tappRecords: [],\n\t\tapps: [],\n\t\tevents: /* @__PURE__ */ new Map(),\n\t\ton(event, fn) {\n\t\t\tif (!this.events.has(event)) this.events.set(event, []);\n\t\t\tthis.events.get(event)?.push(fn);\n\t\t\treturn () => this.off(event, fn);\n\t\t},\n\t\tonce(event, fn) {\n\t\t\tconst onceFn = (...args) => {\n\t\t\t\tthis.off(event, onceFn);\n\t\t\t\tfn(...args);\n\t\t\t};\n\t\t\tthis.on(event, onceFn);\n\t\t\treturn [event, onceFn];\n\t\t},\n\t\toff(event, fn) {\n\t\t\tif (this.events.has(event)) {\n\t\t\t\tconst eventCallbacks = this.events.get(event);\n\t\t\t\tconst index = eventCallbacks.indexOf(fn);\n\t\t\t\tif (index !== -1) eventCallbacks.splice(index, 1);\n\t\t\t}\n\t\t},\n\t\temit(event, ...payload) {\n\t\t\tif (this.events.has(event)) this.events.get(event).forEach((fn) => fn(...payload));\n\t\t}\n\t};\n}\nfunction subscribeDevToolsHook(hook$1) {\n\thook$1.on(DevToolsHooks.APP_INIT, (app, version, types) => {\n\t\tif (app?._instance?.type?.devtools?.hide) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.APP_INIT, app, version, types);\n\t});\n\thook$1.on(DevToolsHooks.APP_UNMOUNT, (app) => {\n\t\tdevtoolsHooks.callHook(DevToolsHooks.APP_UNMOUNT, app);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_ADDED, async (app, uid, parentUid, component) => {\n\t\tif (app?._instance?.type?.devtools?.hide || devtoolsState.highPerfModeEnabled) return;\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_ADDED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_UPDATED, (app, uid, parentUid, component) => {\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_REMOVED, async (app, uid, parentUid, component) => {\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_REMOVED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_EMIT, async (app, instance, event, params) => {\n\t\tif (!app || !instance || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_EMIT, app, instance, event, params);\n\t});\n\thook$1.on(DevToolsHooks.PERFORMANCE_START, (app, uid, vm, type, time) => {\n\t\tif (!app || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.PERFORMANCE_START, app, uid, vm, type, time);\n\t});\n\thook$1.on(DevToolsHooks.PERFORMANCE_END, (app, uid, vm, type, time) => {\n\t\tif (!app || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.PERFORMANCE_END, app, uid, vm, type, time);\n\t});\n\thook$1.on(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, (pluginDescriptor, setupFn, options) => {\n\t\tif (options?.target === \"legacy\") return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn);\n\t});\n}\nconst hook = {\n\ton,\n\tsetupDevToolsPlugin(pluginDescriptor, setupFn) {\n\t\treturn devtoolsHooks.callHook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn);\n\t}\n};\n\n//#endregion\n//#region src/api/v6/index.ts\nvar DevToolsV6PluginAPI = class {\n\tconstructor({ plugin, ctx }) {\n\t\tthis.hooks = ctx.hooks;\n\t\tthis.plugin = plugin;\n\t}\n\tget on() {\n\t\treturn {\n\t\t\tvisitComponentTree: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, handler);\n\t\t\t},\n\t\t\tinspectComponent: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT, handler);\n\t\t\t},\n\t\t\teditComponentState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE, handler);\n\t\t\t},\n\t\t\tgetInspectorTree: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE, handler);\n\t\t\t},\n\t\t\tgetInspectorState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE, handler);\n\t\t\t},\n\t\t\teditInspectorState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE, handler);\n\t\t\t},\n\t\t\tinspectTimelineEvent: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT, handler);\n\t\t\t},\n\t\t\ttimelineCleared: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED, handler);\n\t\t\t},\n\t\t\tsetPluginSettings: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS, handler);\n\t\t\t}\n\t\t};\n\t}\n\tnotifyComponentUpdate(instance) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getActiveInspectors().find((i) => i.packageName === this.plugin.descriptor.packageName);\n\t\tif (inspector?.id) {\n\t\t\tif (instance) {\n\t\t\t\tconst args = [\n\t\t\t\t\tinstance.appContext.app,\n\t\t\t\t\tinstance.uid,\n\t\t\t\t\tinstance.parent?.uid,\n\t\t\t\t\tinstance\n\t\t\t\t];\n\t\t\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, ...args);\n\t\t\t} else devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED);\n\t\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\t\tinspectorId: inspector.id,\n\t\t\t\tplugin: this.plugin\n\t\t\t});\n\t\t}\n\t}\n\taddInspector(options) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.ADD_INSPECTOR, {\n\t\t\tinspector: options,\n\t\t\tplugin: this.plugin\n\t\t});\n\t\tif (this.plugin.descriptor.settings) initPluginSettings(options.id, this.plugin.descriptor.settings);\n\t}\n\tsendInspectorTree(inspectorId) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, {\n\t\t\tinspectorId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tsendInspectorState(inspectorId) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\tinspectorId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tselectInspectorNode(inspectorId, nodeId) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, {\n\t\t\tinspectorId,\n\t\t\tnodeId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tvisitComponentTree(payload) {\n\t\treturn this.hooks.callHook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, payload);\n\t}\n\tnow() {\n\t\tif (devtoolsState.highPerfModeEnabled) return 0;\n\t\treturn Date.now();\n\t}\n\taddTimelineLayer(options) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, {\n\t\t\toptions,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\taddTimelineEvent(options) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, {\n\t\t\toptions,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tgetSettings(pluginId) {\n\t\treturn getPluginSettings(pluginId ?? this.plugin.descriptor.id, this.plugin.descriptor.settings);\n\t}\n\tgetComponentInstances(app) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, { app });\n\t}\n\tgetComponentBounds(instance) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, { instance });\n\t}\n\tgetComponentName(instance) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_NAME, { instance });\n\t}\n\thighlightElement(instance) {\n\t\tconst uid = instance.__VUE_DEVTOOLS_NEXT_UID__;\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, { uid });\n\t}\n\tunhighlightElement() {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT);\n\t}\n};\n\n//#endregion\n//#region src/api/index.ts\nconst DevToolsPluginAPI = DevToolsV6PluginAPI;\n\n//#endregion\n//#region src/core/component/state/constants.ts\nconst vueBuiltins = new Set([\n\t\"nextTick\",\n\t\"defineComponent\",\n\t\"defineAsyncComponent\",\n\t\"defineCustomElement\",\n\t\"ref\",\n\t\"computed\",\n\t\"reactive\",\n\t\"readonly\",\n\t\"watchEffect\",\n\t\"watchPostEffect\",\n\t\"watchSyncEffect\",\n\t\"watch\",\n\t\"isRef\",\n\t\"unref\",\n\t\"toRef\",\n\t\"toRefs\",\n\t\"isProxy\",\n\t\"isReactive\",\n\t\"isReadonly\",\n\t\"shallowRef\",\n\t\"triggerRef\",\n\t\"customRef\",\n\t\"shallowReactive\",\n\t\"shallowReadonly\",\n\t\"toRaw\",\n\t\"markRaw\",\n\t\"effectScope\",\n\t\"getCurrentScope\",\n\t\"onScopeDispose\",\n\t\"onMounted\",\n\t\"onUpdated\",\n\t\"onUnmounted\",\n\t\"onBeforeMount\",\n\t\"onBeforeUpdate\",\n\t\"onBeforeUnmount\",\n\t\"onErrorCaptured\",\n\t\"onRenderTracked\",\n\t\"onRenderTriggered\",\n\t\"onActivated\",\n\t\"onDeactivated\",\n\t\"onServerPrefetch\",\n\t\"provide\",\n\t\"inject\",\n\t\"h\",\n\t\"mergeProps\",\n\t\"cloneVNode\",\n\t\"isVNode\",\n\t\"resolveComponent\",\n\t\"resolveDirective\",\n\t\"withDirectives\",\n\t\"withModifiers\"\n]);\nconst symbolRE = /^\\[native Symbol Symbol\\((.*)\\)\\]$/;\nconst rawTypeRE = /^\\[object (\\w+)\\]$/;\nconst specialTypeRE = /^\\[native (\\w+) (.*?)(<>(([\\s\\S])*))?\\]$/;\nconst fnTypeRE = /^(?:function|class) (\\w+)/;\nconst MAX_STRING_SIZE = 1e4;\nconst MAX_ARRAY_SIZE = 5e3;\nconst UNDEFINED = \"__vue_devtool_undefined__\";\nconst INFINITY = \"__vue_devtool_infinity__\";\nconst NEGATIVE_INFINITY = \"__vue_devtool_negative_infinity__\";\nconst NAN = \"__vue_devtool_nan__\";\nconst ESC = {\n\t\"<\": \"&lt;\",\n\t\">\": \"&gt;\",\n\t\"\\\"\": \"&quot;\",\n\t\"&\": \"&amp;\"\n};\n\n//#endregion\n//#region src/core/component/state/is.ts\nfunction isVueInstance(value) {\n\tif (!ensurePropertyExists(value, \"_\")) return false;\n\tif (!isPlainObject(value._)) return false;\n\treturn Object.keys(value._).includes(\"vnode\");\n}\nfunction isPlainObject(obj) {\n\treturn Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isPrimitive$1(data) {\n\tif (data == null) return true;\n\tconst type = typeof data;\n\treturn type === \"string\" || type === \"number\" || type === \"boolean\";\n}\nfunction isRef(raw) {\n\treturn !!raw.__v_isRef;\n}\nfunction isComputed(raw) {\n\treturn isRef(raw) && !!raw.effect;\n}\nfunction isReactive(raw) {\n\treturn !!raw.__v_isReactive;\n}\nfunction isReadOnly(raw) {\n\treturn !!raw.__v_isReadonly;\n}\n\n//#endregion\n//#region src/core/component/state/util.ts\nconst tokenMap = {\n\t[UNDEFINED]: \"undefined\",\n\t[NAN]: \"NaN\",\n\t[INFINITY]: \"Infinity\",\n\t[NEGATIVE_INFINITY]: \"-Infinity\"\n};\nconst reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => {\n\tacc[value] = key;\n\treturn acc;\n}, {});\nfunction internalStateTokenToString(value) {\n\tif (value === null) return \"null\";\n\treturn typeof value === \"string\" && tokenMap[value] || false;\n}\nfunction replaceTokenToString(value) {\n\tconst replaceRegex = new RegExp(`\"(${Object.keys(tokenMap).join(\"|\")})\"`, \"g\");\n\treturn value.replace(replaceRegex, (_, g1) => tokenMap[g1]);\n}\nfunction replaceStringToToken(value) {\n\tconst literalValue = reversedTokenMap[value.trim()];\n\tif (literalValue) return `\"${literalValue}\"`;\n\tconst replaceRegex = new RegExp(`:\\\\s*(${Object.keys(reversedTokenMap).join(\"|\")})`, \"g\");\n\treturn value.replace(replaceRegex, (_, g1) => `:\"${reversedTokenMap[g1]}\"`);\n}\n/**\n* Convert prop type constructor to string.\n*/\nfunction getPropType(type) {\n\tif (Array.isArray(type)) return type.map((t) => getPropType(t)).join(\" or \");\n\tif (type == null) return \"null\";\n\tconst match = type.toString().match(fnTypeRE);\n\treturn typeof type === \"function\" ? match && match[1] || \"any\" : \"any\";\n}\n/**\n* Sanitize data to be posted to the other side.\n* Since the message posted is sent with structured clone,\n* we need to filter out any types that might cause an error.\n*/\nfunction sanitize(data) {\n\tif (!isPrimitive$1(data) && !Array.isArray(data) && !isPlainObject(data)) return Object.prototype.toString.call(data);\n\telse return data;\n}\nfunction getSetupStateType(raw) {\n\ttry {\n\t\treturn {\n\t\t\tref: isRef(raw),\n\t\t\tcomputed: isComputed(raw),\n\t\t\treactive: isReactive(raw),\n\t\t\treadonly: isReadOnly(raw)\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tref: false,\n\t\t\tcomputed: false,\n\t\t\treactive: false,\n\t\t\treadonly: false\n\t\t};\n\t}\n}\nfunction toRaw(value) {\n\tif (value?.__v_raw) return value.__v_raw;\n\treturn value;\n}\nfunction escape(s) {\n\treturn s.replace(/[<>\"&]/g, (s$1) => {\n\t\treturn ESC[s$1] || s$1;\n\t});\n}\n\n//#endregion\n//#region src/core/component/state/process.ts\nfunction mergeOptions(to, from, instance) {\n\tif (typeof from === \"function\") from = from.options;\n\tif (!from) return to;\n\tconst { mixins, extends: extendsOptions } = from;\n\textendsOptions && mergeOptions(to, extendsOptions, instance);\n\tmixins && mixins.forEach((m) => mergeOptions(to, m, instance));\n\tfor (const key of [\"computed\", \"inject\"]) if (Object.prototype.hasOwnProperty.call(from, key)) if (!to[key]) to[key] = from[key];\n\telse Object.assign(to[key], from[key]);\n\treturn to;\n}\nfunction resolveMergedOptions(instance) {\n\tconst raw = instance?.type;\n\tif (!raw) return {};\n\tconst { mixins, extends: extendsOptions } = raw;\n\tconst globalMixins = instance.appContext.mixins;\n\tif (!globalMixins.length && !mixins && !extendsOptions) return raw;\n\tconst options = {};\n\tglobalMixins.forEach((m) => mergeOptions(options, m, instance));\n\tmergeOptions(options, raw, instance);\n\treturn options;\n}\n/**\n* Process the props of an instance.\n* Make sure return a plain object because window.postMessage()\n* will throw an Error if the passed object contains Functions.\n*\n*/\nfunction processProps(instance) {\n\tconst props = [];\n\tconst propDefinitions = instance?.type?.props;\n\tfor (const key in instance?.props) {\n\t\tconst propDefinition = propDefinitions ? propDefinitions[key] : null;\n\t\tconst camelizeKey = camelize(key);\n\t\tprops.push({\n\t\t\ttype: \"props\",\n\t\t\tkey: camelizeKey,\n\t\t\tvalue: returnError(() => instance.props[key]),\n\t\t\teditable: true,\n\t\t\tmeta: propDefinition ? {\n\t\t\t\ttype: propDefinition.type ? getPropType(propDefinition.type) : \"any\",\n\t\t\t\trequired: !!propDefinition.required,\n\t\t\t\t...propDefinition.default ? { default: propDefinition.default.toString() } : {}\n\t\t\t} : { type: \"invalid\" }\n\t\t});\n\t}\n\treturn props;\n}\n/**\n* Process state, filtering out props and \"clean\" the result\n* with a JSON dance. This removes functions which can cause\n* errors during structured clone used by window.postMessage.\n*\n*/\nfunction processState(instance) {\n\tconst type = instance.type;\n\tconst props = type?.props;\n\tconst getters = type.vuex && type.vuex.getters;\n\tconst computedDefs = type.computed;\n\tconst data = {\n\t\t...instance.data,\n\t\t...instance.renderContext\n\t};\n\treturn Object.keys(data).filter((key) => !(props && key in props) && !(getters && key in getters) && !(computedDefs && key in computedDefs)).map((key) => ({\n\t\tkey,\n\t\ttype: \"data\",\n\t\tvalue: returnError(() => data[key]),\n\t\teditable: true\n\t}));\n}\nfunction getStateTypeAndName(info) {\n\tconst stateType = info.computed ? \"computed\" : info.ref ? \"ref\" : info.reactive ? \"reactive\" : null;\n\treturn {\n\t\tstateType,\n\t\tstateTypeName: stateType ? `${stateType.charAt(0).toUpperCase()}${stateType.slice(1)}` : null\n\t};\n}\nfunction processSetupState(instance) {\n\tconst raw = instance.devtoolsRawSetupState || {};\n\treturn Object.keys(instance.setupState).filter((key) => !vueBuiltins.has(key) && key.split(/(?=[A-Z])/)[0] !== \"use\").map((key) => {\n\t\tconst value = returnError(() => toRaw(instance.setupState[key]));\n\t\tconst accessError = value instanceof Error;\n\t\tconst rawData = raw[key];\n\t\tlet result;\n\t\tlet isOtherType = accessError || typeof value === \"function\" || ensurePropertyExists(value, \"render\") && typeof value.render === \"function\" || ensurePropertyExists(value, \"__asyncLoader\") && typeof value.__asyncLoader === \"function\" || typeof value === \"object\" && value && (\"setup\" in value || \"props\" in value) || /^v[A-Z]/.test(key);\n\t\tif (rawData && !accessError) {\n\t\t\tconst info = getSetupStateType(rawData);\n\t\t\tconst { stateType, stateTypeName } = getStateTypeAndName(info);\n\t\t\tconst isState = info.ref || info.computed || info.reactive;\n\t\t\tconst raw$1 = ensurePropertyExists(rawData, \"effect\") ? rawData.effect?.raw?.toString() || rawData.effect?.fn?.toString() : null;\n\t\t\tif (stateType) isOtherType = false;\n\t\t\tresult = {\n\t\t\t\t...stateType ? {\n\t\t\t\t\tstateType,\n\t\t\t\t\tstateTypeName\n\t\t\t\t} : {},\n\t\t\t\t...raw$1 ? { raw: raw$1 } : {},\n\t\t\t\teditable: isState && !info.readonly\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: isOtherType ? \"setup (other)\" : \"setup\",\n\t\t\t...result\n\t\t};\n\t});\n}\n/**\n* Process the computed properties of an instance.\n*/\nfunction processComputed(instance, mergedType) {\n\tconst type = mergedType;\n\tconst computed = [];\n\tconst defs = type.computed || {};\n\tfor (const key in defs) {\n\t\tconst def = defs[key];\n\t\tconst type$1 = typeof def === \"function\" && def.vuex ? \"vuex bindings\" : \"computed\";\n\t\tcomputed.push({\n\t\t\ttype: type$1,\n\t\t\tkey,\n\t\t\tvalue: returnError(() => instance?.proxy?.[key]),\n\t\t\teditable: typeof def.set === \"function\"\n\t\t});\n\t}\n\treturn computed;\n}\nfunction processAttrs(instance) {\n\treturn Object.keys(instance.attrs).map((key) => ({\n\t\ttype: \"attrs\",\n\t\tkey,\n\t\tvalue: returnError(() => instance.attrs[key])\n\t}));\n}\nfunction processProvide(instance) {\n\treturn Reflect.ownKeys(instance.provides).map((key) => ({\n\t\ttype: \"provided\",\n\t\tkey: key.toString(),\n\t\tvalue: returnError(() => instance.provides[key])\n\t}));\n}\nfunction processInject(instance, mergedType) {\n\tif (!mergedType?.inject) return [];\n\tlet keys = [];\n\tlet defaultValue;\n\tif (Array.isArray(mergedType.inject)) keys = mergedType.inject.map((key) => ({\n\t\tkey,\n\t\toriginalKey: key\n\t}));\n\telse keys = Reflect.ownKeys(mergedType.inject).map((key) => {\n\t\tconst value = mergedType.inject[key];\n\t\tlet originalKey;\n\t\tif (typeof value === \"string\" || typeof value === \"symbol\") originalKey = value;\n\t\telse {\n\t\t\toriginalKey = value.from;\n\t\t\tdefaultValue = value.default;\n\t\t}\n\t\treturn {\n\t\t\tkey,\n\t\t\toriginalKey\n\t\t};\n\t});\n\treturn keys.map(({ key, originalKey }) => ({\n\t\ttype: \"injected\",\n\t\tkey: originalKey && key !== originalKey ? `${originalKey.toString()} ➞ ${key.toString()}` : key.toString(),\n\t\tvalue: returnError(() => instance.ctx.hasOwnProperty(key) ? instance.ctx[key] : instance.provides.hasOwnProperty(originalKey) ? instance.provides[originalKey] : defaultValue)\n\t}));\n}\nfunction processRefs(instance) {\n\treturn Object.keys(instance.refs).map((key) => ({\n\t\ttype: \"template refs\",\n\t\tkey,\n\t\tvalue: returnError(() => instance.refs[key])\n\t}));\n}\nfunction processEventListeners(instance) {\n\tconst emitsDefinition = instance.type.emits;\n\tconst declaredEmits = Array.isArray(emitsDefinition) ? emitsDefinition : Object.keys(emitsDefinition ?? {});\n\tconst keys = Object.keys(instance?.vnode?.props ?? {});\n\tconst result = [];\n\tfor (const key of keys) {\n\t\tconst [prefix, ...eventNameParts] = key.split(/(?=[A-Z])/);\n\t\tif (prefix === \"on\") {\n\t\t\tconst eventName = eventNameParts.join(\"-\").toLowerCase();\n\t\t\tconst isDeclared = declaredEmits.includes(eventName);\n\t\t\tresult.push({\n\t\t\t\ttype: \"event listeners\",\n\t\t\t\tkey: eventName,\n\t\t\t\tvalue: { _custom: {\n\t\t\t\t\tdisplayText: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\tkey: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\tvalue: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\ttooltipText: !isDeclared ? `The event <code>${eventName}</code> is not declared in the <code>emits</code> option. It will leak into the component's attributes (<code>$attrs</code>).` : null\n\t\t\t\t} }\n\t\t\t});\n\t\t}\n\t}\n\treturn result;\n}\nfunction processInstanceState(instance) {\n\tconst mergedType = resolveMergedOptions(instance);\n\treturn processProps(instance).concat(processState(instance), processSetupState(instance), processComputed(instance, mergedType), processAttrs(instance), processProvide(instance), processInject(instance, mergedType), processRefs(instance), processEventListeners(instance));\n}\n\n//#endregion\n//#region src/core/component/state/index.ts\nfunction getInstanceState(params) {\n\tconst instance = getComponentInstance(activeAppRecord.value, params.instanceId);\n\treturn {\n\t\tid: getUniqueComponentId(instance),\n\t\tname: getInstanceName(instance),\n\t\tfile: instance?.type?.__file,\n\t\tstate: processInstanceState(instance),\n\t\tinstance\n\t};\n}\n\n//#endregion\n//#region src/core/component/tree/filter.ts\nvar ComponentFilter = class {\n\tconstructor(filter) {\n\t\tthis.filter = filter || \"\";\n\t}\n\t/**\n\t* Check if an instance is qualified.\n\t*\n\t* @param {Vue|Vnode} instance\n\t* @return {boolean}\n\t*/\n\tisQualified(instance) {\n\t\tconst name = getInstanceName(instance);\n\t\treturn classify(name).toLowerCase().includes(this.filter) || kebabize(name).toLowerCase().includes(this.filter);\n\t}\n};\nfunction createComponentFilter(filterText) {\n\treturn new ComponentFilter(filterText);\n}\n\n//#endregion\n//#region src/core/component/tree/walker.ts\nvar ComponentWalker = class {\n\tconstructor(options) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\tconst { filterText = \"\", maxDepth, recursively, api } = options;\n\t\tthis.componentFilter = createComponentFilter(filterText);\n\t\tthis.maxDepth = maxDepth;\n\t\tthis.recursively = recursively;\n\t\tthis.api = api;\n\t}\n\tgetComponentTree(instance) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\treturn this.findQualifiedChildren(instance, 0);\n\t}\n\tgetComponentParents(instance) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\tconst parents = [];\n\t\tthis.captureId(instance);\n\t\tlet parent = instance;\n\t\twhile (parent = parent.parent) {\n\t\t\tthis.captureId(parent);\n\t\t\tparents.push(parent);\n\t\t}\n\t\treturn parents;\n\t}\n\tcaptureId(instance) {\n\t\tif (!instance) return null;\n\t\tconst id = instance.__VUE_DEVTOOLS_NEXT_UID__ != null ? instance.__VUE_DEVTOOLS_NEXT_UID__ : getUniqueComponentId(instance);\n\t\tinstance.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\tif (this.captureIds.has(id)) return null;\n\t\telse this.captureIds.set(id, void 0);\n\t\tthis.mark(instance);\n\t\treturn id;\n\t}\n\t/**\n\t* Capture the meta information of an instance. (recursive)\n\t*\n\t* @param {Vue} instance\n\t* @return {object}\n\t*/\n\tasync capture(instance, depth) {\n\t\tif (!instance) return null;\n\t\tconst id = this.captureId(instance);\n\t\tconst name = getInstanceName(instance);\n\t\tconst children = this.getInternalInstanceChildren(instance.subTree).filter((child) => !isBeingDestroyed(child));\n\t\tconst parents = this.getComponentParents(instance) || [];\n\t\tconst inactive = !!instance.isDeactivated || parents.some((parent) => parent.isDeactivated);\n\t\tconst treeNode = {\n\t\t\tuid: instance.uid,\n\t\t\tid,\n\t\t\tname,\n\t\t\trenderKey: getRenderKey(instance.vnode ? instance.vnode.key : null),\n\t\t\tinactive,\n\t\t\tchildren: [],\n\t\t\tisFragment: isFragment(instance),\n\t\t\ttags: typeof instance.type !== \"function\" ? [] : [{\n\t\t\t\tlabel: \"functional\",\n\t\t\t\ttextColor: 5592405,\n\t\t\t\tbackgroundColor: 15658734\n\t\t\t}],\n\t\t\tautoOpen: this.recursively,\n\t\t\tfile: instance.type.__file || \"\"\n\t\t};\n\t\tif (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some((parent) => parent.type.__isKeepAlive)) treeNode.children = await Promise.all(children.map((child) => this.capture(child, depth + 1)).filter(Boolean));\n\t\tif (this.isKeepAlive(instance)) {\n\t\t\tconst cachedComponents = this.getKeepAliveCachedInstances(instance);\n\t\t\tconst childrenIds = children.map((child) => child.__VUE_DEVTOOLS_NEXT_UID__);\n\t\t\tfor (const cachedChild of cachedComponents) if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_NEXT_UID__)) {\n\t\t\t\tconst node = await this.capture({\n\t\t\t\t\t...cachedChild,\n\t\t\t\t\tisDeactivated: true\n\t\t\t\t}, depth + 1);\n\t\t\t\tif (node) treeNode.children.push(node);\n\t\t\t}\n\t\t}\n\t\tconst firstElement = getRootElementsFromComponentInstance(instance)[0];\n\t\tif (firstElement?.parentElement) {\n\t\t\tconst parentInstance = instance.parent;\n\t\t\tconst parentRootElements = parentInstance ? getRootElementsFromComponentInstance(parentInstance) : [];\n\t\t\tlet el = firstElement;\n\t\t\tconst indexList = [];\n\t\t\tdo {\n\t\t\t\tindexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n\t\t\t\tel = el.parentElement;\n\t\t\t} while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\t\t\ttreeNode.domOrder = indexList.reverse();\n\t\t} else treeNode.domOrder = [-1];\n\t\tif (instance.suspense?.suspenseKey) {\n\t\t\ttreeNode.tags.push({\n\t\t\t\tlabel: instance.suspense.suspenseKey,\n\t\t\t\tbackgroundColor: 14979812,\n\t\t\t\ttextColor: 16777215\n\t\t\t});\n\t\t\tthis.mark(instance, true);\n\t\t}\n\t\tthis.api.visitComponentTree({\n\t\t\ttreeNode,\n\t\t\tcomponentInstance: instance,\n\t\t\tapp: instance.appContext.app,\n\t\t\tfilter: this.componentFilter.filter\n\t\t});\n\t\treturn treeNode;\n\t}\n\t/**\n\t* Find qualified children from a single instance.\n\t* If the instance itself is qualified, just return itself.\n\t* This is ok because [].concat works in both cases.\n\t*\n\t* @param {Vue|Vnode} instance\n\t* @return {Vue|Array}\n\t*/\n\tasync findQualifiedChildren(instance, depth) {\n\t\tif (this.componentFilter.isQualified(instance) && !instance.type.devtools?.hide) return [await this.capture(instance, depth)];\n\t\telse if (instance.subTree) {\n\t\t\tconst list = this.isKeepAlive(instance) ? this.getKeepAliveCachedInstances(instance) : this.getInternalInstanceChildren(instance.subTree);\n\t\t\treturn this.findQualifiedChildrenFromList(list, depth);\n\t\t} else return [];\n\t}\n\t/**\n\t* Iterate through an array of instances and flatten it into\n\t* an array of qualified instances. This is a depth-first\n\t* traversal - e.g. if an instance is not matched, we will\n\t* recursively go deeper until a qualified child is found.\n\t*\n\t* @param {Array} instances\n\t* @return {Array}\n\t*/\n\tasync findQualifiedChildrenFromList(instances, depth) {\n\t\tinstances = instances.filter((child) => !isBeingDestroyed(child) && !child.type.devtools?.hide);\n\t\tif (!this.componentFilter.filter) return Promise.all(instances.map((child) => this.capture(child, depth)));\n\t\telse return Array.prototype.concat.apply([], await Promise.all(instances.map((i) => this.findQualifiedChildren(i, depth))));\n\t}\n\t/**\n\t* Get children from a component instance.\n\t*/\n\tgetInternalInstanceChildren(subTree, suspense = null) {\n\t\tconst list = [];\n\t\tif (subTree) {\n\t\t\tif (subTree.component) !suspense ? list.push(subTree.component) : list.push({\n\t\t\t\t...subTree.component,\n\t\t\t\tsuspense\n\t\t\t});\n\t\t\telse if (subTree.suspense) {\n\t\t\t\tconst suspenseKey = !subTree.suspense.isInFallback ? \"suspense default\" : \"suspense fallback\";\n\t\t\t\tlist.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, {\n\t\t\t\t\t...subTree.suspense,\n\t\t\t\t\tsuspenseKey\n\t\t\t\t}));\n\t\t\t} else if (Array.isArray(subTree.children)) subTree.children.forEach((childSubTree) => {\n\t\t\t\tif (childSubTree.component) !suspense ? list.push(childSubTree.component) : list.push({\n\t\t\t\t\t...childSubTree.component,\n\t\t\t\t\tsuspense\n\t\t\t\t});\n\t\t\t\telse list.push(...this.getInternalInstanceChildren(childSubTree, suspense));\n\t\t\t});\n\t\t}\n\t\treturn list.filter((child) => !isBeingDestroyed(child) && !child.type.devtools?.hide);\n\t}\n\t/**\n\t* Mark an instance as captured and store it in the instance map.\n\t*\n\t* @param {Vue} instance\n\t*/\n\tmark(instance, force = false) {\n\t\tconst instanceMap = getAppRecord(instance).instanceMap;\n\t\tif (force || !instanceMap.has(instance.__VUE_DEVTOOLS_NEXT_UID__)) {\n\t\t\tinstanceMap.set(instance.__VUE_DEVTOOLS_NEXT_UID__, instance);\n\t\t\tactiveAppRecord.value.instanceMap = instanceMap;\n\t\t}\n\t}\n\tisKeepAlive(instance) {\n\t\treturn instance.type.__isKeepAlive && instance.__v_cache;\n\t}\n\tgetKeepAliveCachedInstances(instance) {\n\t\treturn Array.from(instance.__v_cache.values()).map((vnode) => vnode.component).filter(Boolean);\n\t}\n};\n\n//#endregion\n//#region src/core/timeline/perf.ts\nconst markEndQueue = /* @__PURE__ */ new Map();\nconst PERFORMANCE_EVENT_LAYER_ID = \"performance\";\nasync function performanceMarkStart(api, app, uid, vm, type, time) {\n\tconst appRecord = await getAppRecord(app);\n\tif (!appRecord) return;\n\tconst componentName = getInstanceName(vm) || \"Unknown Component\";\n\tconst groupId = devtoolsState.perfUniqueGroupId++;\n\tconst groupKey = `${uid}-${type}`;\n\tappRecord.perfGroupIds.set(groupKey, {\n\t\tgroupId,\n\t\ttime\n\t});\n\tawait api.addTimelineEvent({\n\t\tlayerId: PERFORMANCE_EVENT_LAYER_ID,\n\t\tevent: {\n\t\t\ttime: Date.now(),\n\t\t\tdata: {\n\t\t\t\tcomponent: componentName,\n\t\t\t\ttype,\n\t\t\t\tmeasure: \"start\"\n\t\t\t},\n\t\t\ttitle: componentName,\n\t\t\tsubtitle: type,\n\t\t\tgroupId\n\t\t}\n\t});\n\tif (markEndQueue.has(groupKey)) {\n\t\tconst { app: app$1, uid: uid$1, instance, type: type$1, time: time$1 } = markEndQueue.get(groupKey);\n\t\tmarkEndQueue.delete(groupKey);\n\t\tawait performanceMarkEnd(api, app$1, uid$1, instance, type$1, time$1);\n\t}\n}\nfunction performanceMarkEnd(api, app, uid, vm, type, time) {\n\tconst appRecord = getAppRecord(app);\n\tif (!appRecord) return;\n\tconst componentName = getInstanceName(vm) || \"Unknown Component\";\n\tconst groupKey = `${uid}-${type}`;\n\tconst groupInfo = appRecord.perfGroupIds.get(groupKey);\n\tif (groupInfo) {\n\t\tconst groupId = groupInfo.groupId;\n\t\tconst duration = time - groupInfo.time;\n\t\tapi.addTimelineEvent({\n\t\t\tlayerId: PERFORMANCE_EVENT_LAYER_ID,\n\t\t\tevent: {\n\t\t\t\ttime: Date.now(),\n\t\t\t\tdata: {\n\t\t\t\t\tcomponent: componentName,\n\t\t\t\t\ttype,\n\t\t\t\t\tmeasure: \"end\",\n\t\t\t\t\tduration: { _custom: {\n\t\t\t\t\t\ttype: \"Duration\",\n\t\t\t\t\t\tvalue: duration,\n\t\t\t\t\t\tdisplay: `${duration} ms`\n\t\t\t\t\t} }\n\t\t\t\t},\n\t\t\t\ttitle: componentName,\n\t\t\t\tsubtitle: type,\n\t\t\t\tgroupId\n\t\t\t}\n\t\t});\n\t} else markEndQueue.set(groupKey, {\n\t\tapp,\n\t\tuid,\n\t\tinstance: vm,\n\t\ttype,\n\t\ttime\n\t});\n}\n\n//#endregion\n//#region src/core/timeline/index.ts\nconst COMPONENT_EVENT_LAYER_ID = \"component-event\";\nfunction setupBuiltinTimelineLayers(api) {\n\tif (!isBrowser) return;\n\tapi.addTimelineLayer({\n\t\tid: \"mouse\",\n\t\tlabel: \"Mouse\",\n\t\tcolor: 10768815\n\t});\n\t[\n\t\t\"mousedown\",\n\t\t\"mouseup\",\n\t\t\"click\",\n\t\t\"dblclick\"\n\t].forEach((eventType) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.mouseEventEnabled) return;\n\t\twindow.addEventListener(eventType, async (event) => {\n\t\t\tawait api.addTimelineEvent({\n\t\t\t\tlayerId: \"mouse\",\n\t\t\t\tevent: {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype: eventType,\n\t\t\t\t\t\tx: event.clientX,\n\t\t\t\t\t\ty: event.clientY\n\t\t\t\t\t},\n\t\t\t\t\ttitle: eventType\n\t\t\t\t}\n\t\t\t});\n\t\t}, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: \"keyboard\",\n\t\tlabel: \"Keyboard\",\n\t\tcolor: 8475055\n\t});\n\t[\n\t\t\"keyup\",\n\t\t\"keydown\",\n\t\t\"keypress\"\n\t].forEach((eventType) => {\n\t\twindow.addEventListener(eventType, async (event) => {\n\t\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.keyboardEventEnabled) return;\n\t\t\tawait api.addTimelineEvent({\n\t\t\t\tlayerId: \"keyboard\",\n\t\t\t\tevent: {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype: eventType,\n\t\t\t\t\t\tkey: event.key,\n\t\t\t\t\t\tctrlKey: event.ctrlKey,\n\t\t\t\t\t\tshiftKey: event.shiftKey,\n\t\t\t\t\t\taltKey: event.altKey,\n\t\t\t\t\t\tmetaKey: event.metaKey\n\t\t\t\t\t},\n\t\t\t\t\ttitle: event.key\n\t\t\t\t}\n\t\t\t});\n\t\t}, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: COMPONENT_EVENT_LAYER_ID,\n\t\tlabel: \"Component events\",\n\t\tcolor: 5226637\n\t});\n\thook.on.componentEmit(async (app, instance, event, params) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.componentEventEnabled) return;\n\t\tconst appRecord = await getAppRecord(app);\n\t\tif (!appRecord) return;\n\t\tconst componentId = `${appRecord.id}:${instance.uid}`;\n\t\tconst componentName = getInstanceName(instance) || \"Unknown Component\";\n\t\tapi.addTimelineEvent({\n\t\t\tlayerId: COMPONENT_EVENT_LAYER_ID,\n\t\t\tevent: {\n\t\t\t\ttime: Date.now(),\n\t\t\t\tdata: {\n\t\t\t\t\tcomponent: { _custom: {\n\t\t\t\t\t\ttype: \"component-definition\",\n\t\t\t\t\t\tdisplay: componentName\n\t\t\t\t\t} },\n\t\t\t\t\tevent,\n\t\t\t\t\tparams\n\t\t\t\t},\n\t\t\t\ttitle: event,\n\t\t\t\tsubtitle: `by ${componentName}`,\n\t\t\t\tmeta: { componentId }\n\t\t\t}\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: \"performance\",\n\t\tlabel: PERFORMANCE_EVENT_LAYER_ID,\n\t\tcolor: 4307050\n\t});\n\thook.on.perfStart((app, uid, vm, type, time) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled) return;\n\t\tperformanceMarkStart(api, app, uid, vm, type, time);\n\t});\n\thook.on.perfEnd((app, uid, vm, type, time) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled) return;\n\t\tperformanceMarkEnd(api, app, uid, vm, type, time);\n\t});\n}\n\n//#endregion\n//#region src/core/vm/index.ts\nconst MAX_$VM = 10;\nconst $vmQueue = [];\nfunction exposeInstanceToWindow(componentInstance) {\n\tif (typeof window === \"undefined\") return;\n\tconst win = window;\n\tif (!componentInstance) return;\n\twin.$vm = componentInstance;\n\tif ($vmQueue[0] !== componentInstance) {\n\t\tif ($vmQueue.length >= MAX_$VM) $vmQueue.pop();\n\t\tfor (let i = $vmQueue.length; i > 0; i--) win[`$vm${i}`] = $vmQueue[i] = $vmQueue[i - 1];\n\t\twin.$vm0 = $vmQueue[0] = componentInstance;\n\t}\n}\n\n//#endregion\n//#region src/core/plugin/components.ts\nconst INSPECTOR_ID = \"components\";\nfunction createComponentsDevToolsPlugin(app) {\n\tconst descriptor = {\n\t\tid: INSPECTOR_ID,\n\t\tlabel: \"Components\",\n\t\tapp\n\t};\n\tconst setupFn = (api) => {\n\t\tapi.addInspector({\n\t\t\tid: INSPECTOR_ID,\n\t\t\tlabel: \"Components\",\n\t\t\ttreeFilterPlaceholder: \"Search components\"\n\t\t});\n\t\tsetupBuiltinTimelineLayers(api);\n\t\tapi.on.getInspectorTree(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\tconst instance = getComponentInstance(activeAppRecord.value, payload.instanceId);\n\t\t\t\tif (instance) payload.rootNodes = await new ComponentWalker({\n\t\t\t\t\tfilterText: payload.filter,\n\t\t\t\t\tmaxDepth: 100,\n\t\t\t\t\trecursively: false,\n\t\t\t\t\tapi\n\t\t\t\t}).getComponentTree(instance);\n\t\t\t}\n\t\t});\n\t\tapi.on.getInspectorState(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\tconst result = getInstanceState({ instanceId: payload.nodeId });\n\t\t\t\tconst componentInstance = result.instance;\n\t\t\t\tconst _payload = {\n\t\t\t\t\tcomponentInstance,\n\t\t\t\t\tapp: result.instance?.appContext.app,\n\t\t\t\t\tinstanceData: result\n\t\t\t\t};\n\t\t\t\tdevtoolsContext.hooks.callHookWith((callbacks) => {\n\t\t\t\t\tcallbacks.forEach((cb) => cb(_payload));\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT);\n\t\t\t\tpayload.state = result;\n\t\t\t\texposeInstanceToWindow(componentInstance);\n\t\t\t}\n\t\t});\n\t\tapi.on.editInspectorState(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\teditState(payload);\n\t\t\t\tawait api.sendInspectorState(\"components\");\n\t\t\t}\n\t\t});\n\t\tconst debounceSendInspectorTree = debounce(() => {\n\t\t\tapi.sendInspectorTree(INSPECTOR_ID);\n\t\t}, 120);\n\t\tconst debounceSendInspectorState = debounce(() => {\n\t\t\tapi.sendInspectorState(INSPECTOR_ID);\n\t\t}, 120);\n\t\thook.on.componentAdded(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (component) {\n\t\t\t\tif (component.__VUE_DEVTOOLS_NEXT_UID__ == null) component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\t\t\tif (!appRecord?.instanceMap.has(id)) {\n\t\t\t\t\tappRecord?.instanceMap.set(id, component);\n\t\t\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!appRecord) return;\n\t\t\tdebounceSendInspectorTree();\n\t\t});\n\t\thook.on.componentUpdated(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (component) {\n\t\t\t\tif (component.__VUE_DEVTOOLS_NEXT_UID__ == null) component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\t\t\tif (!appRecord?.instanceMap.has(id)) {\n\t\t\t\t\tappRecord?.instanceMap.set(id, component);\n\t\t\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!appRecord) return;\n\t\t\tdebounceSendInspectorTree();\n\t\t\tdebounceSendInspectorState();\n\t\t});\n\t\thook.on.componentRemoved(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (!appRecord) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tappRecord?.instanceMap.delete(id);\n\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\tdebounceSendInspectorTree();\n\t\t});\n\t};\n\treturn [descriptor, setupFn];\n}\n\n//#endregion\n//#region src/core/plugin/index.ts\ntarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__ ??= /* @__PURE__ */ new Set();\nfunction setupDevToolsPlugin(pluginDescriptor, setupFn) {\n\treturn hook.setupDevToolsPlugin(pluginDescriptor, setupFn);\n}\nfunction callDevToolsPluginSetupFn(plugin, app) {\n\tconst [pluginDescriptor, setupFn] = plugin;\n\tif (pluginDescriptor.app !== app) return;\n\tconst api = new DevToolsPluginAPI({\n\t\tplugin: {\n\t\t\tsetupFn,\n\t\t\tdescriptor: pluginDescriptor\n\t\t},\n\t\tctx: devtoolsContext\n\t});\n\tif (pluginDescriptor.packageName === \"vuex\") api.on.editInspectorState((payload) => {\n\t\tapi.sendInspectorState(payload.inspectorId);\n\t});\n\tsetupFn(api);\n}\nfunction removeRegisteredPluginApp(app) {\n\ttarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.delete(app);\n}\nfunction registerDevToolsPlugin(app, options) {\n\tif (target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(app)) return;\n\tif (devtoolsState.highPerfModeEnabled && !options?.inspectingComponent) return;\n\ttarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(app);\n\tdevtoolsPluginBuffer.forEach((plugin) => {\n\t\tcallDevToolsPluginSetupFn(plugin, app);\n\t});\n}\n\n//#endregion\n//#region src/ctx/router.ts\nconst ROUTER_KEY = \"__VUE_DEVTOOLS_ROUTER__\";\nconst ROUTER_INFO_KEY = \"__VUE_DEVTOOLS_ROUTER_INFO__\";\ntarget[ROUTER_INFO_KEY] ??= {\n\tcurrentRoute: null,\n\troutes: []\n};\ntarget[ROUTER_KEY] ??= {};\nconst devtoolsRouterInfo = new Proxy(target[ROUTER_INFO_KEY], { get(target$1, property) {\n\treturn target[ROUTER_INFO_KEY][property];\n} });\nconst devtoolsRouter = new Proxy(target[ROUTER_KEY], { get(target$1, property) {\n\tif (property === \"value\") return target[ROUTER_KEY];\n} });\n\n//#endregion\n//#region src/core/router/index.ts\nfunction getRoutes(router) {\n\tconst routesMap = /* @__PURE__ */ new Map();\n\treturn (router?.getRoutes() || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1));\n}\nfunction filterRoutes(routes) {\n\treturn routes.map((item) => {\n\t\tlet { path, name, children, meta } = item;\n\t\tif (children?.length) children = filterRoutes(children);\n\t\treturn {\n\t\t\tpath,\n\t\t\tname,\n\t\t\tchildren,\n\t\t\tmeta\n\t\t};\n\t});\n}\nfunction filterCurrentRoute(route) {\n\tif (route) {\n\t\tconst { fullPath, hash, href, path, name, matched, params, query } = route;\n\t\treturn {\n\t\t\tfullPath,\n\t\t\thash,\n\t\t\thref,\n\t\t\tpath,\n\t\t\tname,\n\t\t\tparams,\n\t\t\tquery,\n\t\t\tmatched: filterRoutes(matched)\n\t\t};\n\t}\n\treturn route;\n}\nfunction normalizeRouterInfo(appRecord, activeAppRecord$1) {\n\tfunction init() {\n\t\tconst router = appRecord.app?.config.globalProperties.$router;\n\t\tconst currentRoute = filterCurrentRoute(router?.currentRoute.value);\n\t\tconst routes = filterRoutes(getRoutes(router));\n\t\tconst c = console.warn;\n\t\tconsole.warn = () => {};\n\t\ttarget[ROUTER_INFO_KEY] = {\n\t\t\tcurrentRoute: currentRoute ? deepClone(currentRoute) : {},\n\t\t\troutes: deepClone(routes)\n\t\t};\n\t\ttarget[ROUTER_KEY] = router;\n\t\tconsole.warn = c;\n\t}\n\tinit();\n\thook.on.componentUpdated(debounce(() => {\n\t\tif (activeAppRecord$1.value?.app !== appRecord.app) return;\n\t\tinit();\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED, { state: target[ROUTER_INFO_KEY] });\n\t}, 200));\n}\n\n//#endregion\n//#region src/ctx/api.ts\nfunction createDevToolsApi(hooks$1) {\n\treturn {\n\t\tasync getInspectorTree(payload) {\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\trootNodes: []\n\t\t\t};\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload)));\n\t\t\t\t\tresolve();\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE);\n\t\t\t});\n\t\t\treturn _payload.rootNodes;\n\t\t},\n\t\tasync getInspectorState(payload) {\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\tstate: null\n\t\t\t};\n\t\t\tconst ctx = { currentTab: `custom-inspector:${payload.inspectorId}` };\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n\t\t\t\t\tresolve();\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE);\n\t\t\t});\n\t\t\treturn _payload.state;\n\t\t},\n\t\teditInspectorState(payload) {\n\t\t\tconst stateEditor$1 = new StateEditor();\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\tset: (obj, path = payload.path, value = payload.state.value, cb) => {\n\t\t\t\t\tstateEditor$1.set(obj, path, value, cb || stateEditor$1.createDefaultSetCallback(payload.state));\n\t\t\t\t}\n\t\t\t};\n\t\t\thooks$1.callHookWith((callbacks) => {\n\t\t\t\tcallbacks.forEach((cb) => cb(_payload));\n\t\t\t}, DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE);\n\t\t},\n\t\tsendInspectorState(inspectorId) {\n\t\t\tconst inspector = getInspector(inspectorId);\n\t\t\thooks$1.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\t\tinspectorId,\n\t\t\t\tplugin: {\n\t\t\t\t\tdescriptor: inspector.descriptor,\n\t\t\t\t\tsetupFn: () => ({})\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinspectComponentInspector() {\n\t\t\treturn inspectComponentHighLighter();\n\t\t},\n\t\tcancelInspectComponentInspector() {\n\t\t\treturn cancelInspectComponentHighLighter();\n\t\t},\n\t\tgetComponentRenderCode(id) {\n\t\t\tconst instance = getComponentInstance(activeAppRecord.value, id);\n\t\t\tif (instance) return !(typeof instance?.type === \"function\") ? instance.render.toString() : instance.type.toString();\n\t\t},\n\t\tscrollToComponent(id) {\n\t\t\treturn scrollToComponent({ id });\n\t\t},\n\t\topenInEditor,\n\t\tgetVueInspector: getComponentInspector,\n\t\ttoggleApp(id, options) {\n\t\t\tconst appRecord = devtoolsAppRecords.value.find((record) => record.id === id);\n\t\t\tif (appRecord) {\n\t\t\t\tsetActiveAppRecordId(id);\n\t\t\t\tsetActiveAppRecord(appRecord);\n\t\t\t\tnormalizeRouterInfo(appRecord, activeAppRecord);\n\t\t\t\tcallInspectorUpdatedHook();\n\t\t\t\tregisterDevToolsPlugin(appRecord.app, options);\n\t\t\t}\n\t\t},\n\t\tinspectDOM(instanceId) {\n\t\t\tconst instance = getComponentInstance(activeAppRecord.value, instanceId);\n\t\t\tif (instance) {\n\t\t\t\tconst [el] = getRootElementsFromComponentInstance(instance);\n\t\t\t\tif (el) target.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__ = el;\n\t\t\t}\n\t\t},\n\t\tupdatePluginSettings(pluginId, key, value) {\n\t\t\tsetPluginSettings(pluginId, key, value);\n\t\t},\n\t\tgetPluginSettings(pluginId) {\n\t\t\treturn {\n\t\t\t\toptions: getPluginSettingsOptions(pluginId),\n\t\t\t\tvalues: getPluginSettings(pluginId)\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/ctx/env.ts\ntarget.__VUE_DEVTOOLS_ENV__ ??= { vitePluginDetected: false };\nfunction getDevToolsEnv() {\n\treturn target.__VUE_DEVTOOLS_ENV__;\n}\nfunction setDevToolsEnv(env) {\n\ttarget.__VUE_DEVTOOLS_ENV__ = {\n\t\t...target.__VUE_DEVTOOLS_ENV__,\n\t\t...env\n\t};\n}\n\n//#endregion\n//#region src/ctx/index.ts\nconst hooks = createDevToolsCtxHooks();\ntarget.__VUE_DEVTOOLS_KIT_CONTEXT__ ??= {\n\thooks,\n\tget state() {\n\t\treturn {\n\t\t\t...devtoolsState,\n\t\t\tactiveAppRecordId: activeAppRecord.id,\n\t\t\tactiveAppRecord: activeAppRecord.value,\n\t\t\tappRecords: devtoolsAppRecords.value\n\t\t};\n\t},\n\tapi: createDevToolsApi(hooks)\n};\nconst devtoolsContext = target.__VUE_DEVTOOLS_KIT_CONTEXT__;\n\n//#endregion\n//#region ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\nvar require_speakingurl$1 = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\": ((exports, module) => {\n\t(function(root) {\n\t\t/**\n\t\t* charMap\n\t\t* @type {Object}\n\t\t*/\n\t\tvar charMap = {\n\t\t\t\"À\": \"A\",\n\t\t\t\"Á\": \"A\",\n\t\t\t\"Â\": \"A\",\n\t\t\t\"Ã\": \"A\",\n\t\t\t\"Ä\": \"Ae\",\n\t\t\t\"Å\": \"A\",\n\t\t\t\"Æ\": \"AE\",\n\t\t\t\"Ç\": \"C\",\n\t\t\t\"È\": \"E\",\n\t\t\t\"É\": \"E\",\n\t\t\t\"Ê\": \"E\",\n\t\t\t\"Ë\": \"E\",\n\t\t\t\"Ì\": \"I\",\n\t\t\t\"Í\": \"I\",\n\t\t\t\"Î\": \"I\",\n\t\t\t\"Ï\": \"I\",\n\t\t\t\"Ð\": \"D\",\n\t\t\t\"Ñ\": \"N\",\n\t\t\t\"Ò\": \"O\",\n\t\t\t\"Ó\": \"O\",\n\t\t\t\"Ô\": \"O\",\n\t\t\t\"Õ\": \"O\",\n\t\t\t\"Ö\": \"Oe\",\n\t\t\t\"Ő\": \"O\",\n\t\t\t\"Ø\": \"O\",\n\t\t\t\"Ù\": \"U\",\n\t\t\t\"Ú\": \"U\",\n\t\t\t\"Û\": \"U\",\n\t\t\t\"Ü\": \"Ue\",\n\t\t\t\"Ű\": \"U\",\n\t\t\t\"Ý\": \"Y\",\n\t\t\t\"Þ\": \"TH\",\n\t\t\t\"ß\": \"ss\",\n\t\t\t\"à\": \"a\",\n\t\t\t\"á\": \"a\",\n\t\t\t\"â\": \"a\",\n\t\t\t\"ã\": \"a\",\n\t\t\t\"ä\": \"ae\",\n\t\t\t\"å\": \"a\",\n\t\t\t\"æ\": \"ae\",\n\t\t\t\"ç\": \"c\",\n\t\t\t\"è\": \"e\",\n\t\t\t\"é\": \"e\",\n\t\t\t\"ê\": \"e\",\n\t\t\t\"ë\": \"e\",\n\t\t\t\"ì\": \"i\",\n\t\t\t\"í\": \"i\",\n\t\t\t\"î\": \"i\",\n\t\t\t\"ï\": \"i\",\n\t\t\t\"ð\": \"d\",\n\t\t\t\"ñ\": \"n\",\n\t\t\t\"ò\": \"o\",\n\t\t\t\"ó\": \"o\",\n\t\t\t\"ô\": \"o\",\n\t\t\t\"õ\": \"o\",\n\t\t\t\"ö\": \"oe\",\n\t\t\t\"ő\": \"o\",\n\t\t\t\"ø\": \"o\",\n\t\t\t\"ù\": \"u\",\n\t\t\t\"ú\": \"u\",\n\t\t\t\"û\": \"u\",\n\t\t\t\"ü\": \"ue\",\n\t\t\t\"ű\": \"u\",\n\t\t\t\"ý\": \"y\",\n\t\t\t\"þ\": \"th\",\n\t\t\t\"ÿ\": \"y\",\n\t\t\t\"ẞ\": \"SS\",\n\t\t\t\"ا\": \"a\",\n\t\t\t\"أ\": \"a\",\n\t\t\t\"إ\": \"i\",\n\t\t\t\"آ\": \"aa\",\n\t\t\t\"ؤ\": \"u\",\n\t\t\t\"ئ\": \"e\",\n\t\t\t\"ء\": \"a\",\n\t\t\t\"ب\": \"b\",\n\t\t\t\"ت\": \"t\",\n\t\t\t\"ث\": \"th\",\n\t\t\t\"ج\": \"j\",\n\t\t\t\"ح\": \"h\",\n\t\t\t\"خ\": \"kh\",\n\t\t\t\"د\": \"d\",\n\t\t\t\"ذ\": \"th\",\n\t\t\t\"ر\": \"r\",\n\t\t\t\"ز\": \"z\",\n\t\t\t\"س\": \"s\",\n\t\t\t\"ش\": \"sh\",\n\t\t\t\"ص\": \"s\",\n\t\t\t\"ض\": \"dh\",\n\t\t\t\"ط\": \"t\",\n\t\t\t\"ظ\": \"z\",\n\t\t\t\"ع\": \"a\",\n\t\t\t\"غ\": \"gh\",\n\t\t\t\"ف\": \"f\",\n\t\t\t\"ق\": \"q\",\n\t\t\t\"ك\": \"k\",\n\t\t\t\"ل\": \"l\",\n\t\t\t\"م\": \"m\",\n\t\t\t\"ن\": \"n\",\n\t\t\t\"ه\": \"h\",\n\t\t\t\"و\": \"w\",\n\t\t\t\"ي\": \"y\",\n\t\t\t\"ى\": \"a\",\n\t\t\t\"ة\": \"h\",\n\t\t\t\"ﻻ\": \"la\",\n\t\t\t\"ﻷ\": \"laa\",\n\t\t\t\"ﻹ\": \"lai\",\n\t\t\t\"ﻵ\": \"laa\",\n\t\t\t\"گ\": \"g\",\n\t\t\t\"چ\": \"ch\",\n\t\t\t\"پ\": \"p\",\n\t\t\t\"ژ\": \"zh\",\n\t\t\t\"ک\": \"k\",\n\t\t\t\"ی\": \"y\",\n\t\t\t\"َ\": \"a\",\n\t\t\t\"ً\": \"an\",\n\t\t\t\"ِ\": \"e\",\n\t\t\t\"ٍ\": \"en\",\n\t\t\t\"ُ\": \"u\",\n\t\t\t\"ٌ\": \"on\",\n\t\t\t\"ْ\": \"\",\n\t\t\t\"٠\": \"0\",\n\t\t\t\"١\": \"1\",\n\t\t\t\"٢\": \"2\",\n\t\t\t\"٣\": \"3\",\n\t\t\t\"٤\": \"4\",\n\t\t\t\"٥\": \"5\",\n\t\t\t\"٦\": \"6\",\n\t\t\t\"٧\": \"7\",\n\t\t\t\"٨\": \"8\",\n\t\t\t\"٩\": \"9\",\n\t\t\t\"۰\": \"0\",\n\t\t\t\"۱\": \"1\",\n\t\t\t\"۲\": \"2\",\n\t\t\t\"۳\": \"3\",\n\t\t\t\"۴\": \"4\",\n\t\t\t\"۵\": \"5\",\n\t\t\t\"۶\": \"6\",\n\t\t\t\"۷\": \"7\",\n\t\t\t\"۸\": \"8\",\n\t\t\t\"۹\": \"9\",\n\t\t\t\"က\": \"k\",\n\t\t\t\"ခ\": \"kh\",\n\t\t\t\"ဂ\": \"g\",\n\t\t\t\"ဃ\": \"ga\",\n\t\t\t\"င\": \"ng\",\n\t\t\t\"စ\": \"s\",\n\t\t\t\"ဆ\": \"sa\",\n\t\t\t\"ဇ\": \"z\",\n\t\t\t\"စျ\": \"za\",\n\t\t\t\"ည\": \"ny\",\n\t\t\t\"ဋ\": \"t\",\n\t\t\t\"ဌ\": \"ta\",\n\t\t\t\"ဍ\": \"d\",\n\t\t\t\"ဎ\": \"da\",\n\t\t\t\"ဏ\": \"na\",\n\t\t\t\"တ\": \"t\",\n\t\t\t\"ထ\": \"ta\",\n\t\t\t\"ဒ\": \"d\",\n\t\t\t\"ဓ\": \"da\",\n\t\t\t\"န\": \"n\",\n\t\t\t\"ပ\": \"p\",\n\t\t\t\"ဖ\": \"pa\",\n\t\t\t\"ဗ\": \"b\",\n\t\t\t\"ဘ\": \"ba\",\n\t\t\t\"မ\": \"m\",\n\t\t\t\"ယ\": \"y\",\n\t\t\t\"ရ\": \"ya\",\n\t\t\t\"လ\": \"l\",\n\t\t\t\"ဝ\": \"w\",\n\t\t\t\"သ\": \"th\",\n\t\t\t\"ဟ\": \"h\",\n\t\t\t\"ဠ\": \"la\",\n\t\t\t\"အ\": \"a\",\n\t\t\t\"ြ\": \"y\",\n\t\t\t\"ျ\": \"ya\",\n\t\t\t\"ွ\": \"w\",\n\t\t\t\"ြွ\": \"yw\",\n\t\t\t\"ျွ\": \"ywa\",\n\t\t\t\"ှ\": \"h\",\n\t\t\t\"ဧ\": \"e\",\n\t\t\t\"၏\": \"-e\",\n\t\t\t\"ဣ\": \"i\",\n\t\t\t\"ဤ\": \"-i\",\n\t\t\t\"ဉ\": \"u\",\n\t\t\t\"ဦ\": \"-u\",\n\t\t\t\"ဩ\": \"aw\",\n\t\t\t\"သြော\": \"aw\",\n\t\t\t\"ဪ\": \"aw\",\n\t\t\t\"၀\": \"0\",\n\t\t\t\"၁\": \"1\",\n\t\t\t\"၂\": \"2\",\n\t\t\t\"၃\": \"3\",\n\t\t\t\"၄\": \"4\",\n\t\t\t\"၅\": \"5\",\n\t\t\t\"၆\": \"6\",\n\t\t\t\"၇\": \"7\",\n\t\t\t\"၈\": \"8\",\n\t\t\t\"၉\": \"9\",\n\t\t\t\"္\": \"\",\n\t\t\t\"့\": \"\",\n\t\t\t\"း\": \"\",\n\t\t\t\"č\": \"c\",\n\t\t\t\"ď\": \"d\",\n\t\t\t\"ě\": \"e\",\n\t\t\t\"ň\": \"n\",\n\t\t\t\"ř\": \"r\",\n\t\t\t\"š\": \"s\",\n\t\t\t\"ť\": \"t\",\n\t\t\t\"ů\": \"u\",\n\t\t\t\"ž\": \"z\",\n\t\t\t\"Č\": \"C\",\n\t\t\t\"Ď\": \"D\",\n\t\t\t\"Ě\": \"E\",\n\t\t\t\"Ň\": \"N\",\n\t\t\t\"Ř\": \"R\",\n\t\t\t\"Š\": \"S\",\n\t\t\t\"Ť\": \"T\",\n\t\t\t\"Ů\": \"U\",\n\t\t\t\"Ž\": \"Z\",\n\t\t\t\"ހ\": \"h\",\n\t\t\t\"ށ\": \"sh\",\n\t\t\t\"ނ\": \"n\",\n\t\t\t\"ރ\": \"r\",\n\t\t\t\"ބ\": \"b\",\n\t\t\t\"ޅ\": \"lh\",\n\t\t\t\"ކ\": \"k\",\n\t\t\t\"އ\": \"a\",\n\t\t\t\"ވ\": \"v\",\n\t\t\t\"މ\": \"m\",\n\t\t\t\"ފ\": \"f\",\n\t\t\t\"ދ\": \"dh\",\n\t\t\t\"ތ\": \"th\",\n\t\t\t\"ލ\": \"l\",\n\t\t\t\"ގ\": \"g\",\n\t\t\t\"ޏ\": \"gn\",\n\t\t\t\"ސ\": \"s\",\n\t\t\t\"ޑ\": \"d\",\n\t\t\t\"ޒ\": \"z\",\n\t\t\t\"ޓ\": \"t\",\n\t\t\t\"ޔ\": \"y\",\n\t\t\t\"ޕ\": \"p\",\n\t\t\t\"ޖ\": \"j\",\n\t\t\t\"ޗ\": \"ch\",\n\t\t\t\"ޘ\": \"tt\",\n\t\t\t\"ޙ\": \"hh\",\n\t\t\t\"ޚ\": \"kh\",\n\t\t\t\"ޛ\": \"th\",\n\t\t\t\"ޜ\": \"z\",\n\t\t\t\"ޝ\": \"sh\",\n\t\t\t\"ޞ\": \"s\",\n\t\t\t\"ޟ\": \"d\",\n\t\t\t\"ޠ\": \"t\",\n\t\t\t\"ޡ\": \"z\",\n\t\t\t\"ޢ\": \"a\",\n\t\t\t\"ޣ\": \"gh\",\n\t\t\t\"ޤ\": \"q\",\n\t\t\t\"ޥ\": \"w\",\n\t\t\t\"ަ\": \"a\",\n\t\t\t\"ާ\": \"aa\",\n\t\t\t\"ި\": \"i\",\n\t\t\t\"ީ\": \"ee\",\n\t\t\t\"ު\": \"u\",\n\t\t\t\"ޫ\": \"oo\",\n\t\t\t\"ެ\": \"e\",\n\t\t\t\"ޭ\": \"ey\",\n\t\t\t\"ޮ\": \"o\",\n\t\t\t\"ޯ\": \"oa\",\n\t\t\t\"ް\": \"\",\n\t\t\t\"ა\": \"a\",\n\t\t\t\"ბ\": \"b\",\n\t\t\t\"გ\": \"g\",\n\t\t\t\"დ\": \"d\",\n\t\t\t\"ე\": \"e\",\n\t\t\t\"ვ\": \"v\",\n\t\t\t\"ზ\": \"z\",\n\t\t\t\"თ\": \"t\",\n\t\t\t\"ი\": \"i\",\n\t\t\t\"კ\": \"k\",\n\t\t\t\"ლ\": \"l\",\n\t\t\t\"მ\": \"m\",\n\t\t\t\"ნ\": \"n\",\n\t\t\t\"ო\": \"o\",\n\t\t\t\"პ\": \"p\",\n\t\t\t\"ჟ\": \"zh\",\n\t\t\t\"რ\": \"r\",\n\t\t\t\"ს\": \"s\",\n\t\t\t\"ტ\": \"t\",\n\t\t\t\"უ\": \"u\",\n\t\t\t\"ფ\": \"p\",\n\t\t\t\"ქ\": \"k\",\n\t\t\t\"ღ\": \"gh\",\n\t\t\t\"ყ\": \"q\",\n\t\t\t\"შ\": \"sh\",\n\t\t\t\"ჩ\": \"ch\",\n\t\t\t\"ც\": \"ts\",\n\t\t\t\"ძ\": \"dz\",\n\t\t\t\"წ\": \"ts\",\n\t\t\t\"ჭ\": \"ch\",\n\t\t\t\"ხ\": \"kh\",\n\t\t\t\"ჯ\": \"j\",\n\t\t\t\"ჰ\": \"h\",\n\t\t\t\"α\": \"a\",\n\t\t\t\"β\": \"v\",\n\t\t\t\"γ\": \"g\",\n\t\t\t\"δ\": \"d\",\n\t\t\t\"ε\": \"e\",\n\t\t\t\"ζ\": \"z\",\n\t\t\t\"η\": \"i\",\n\t\t\t\"θ\": \"th\",\n\t\t\t\"ι\": \"i\",\n\t\t\t\"κ\": \"k\",\n\t\t\t\"λ\": \"l\",\n\t\t\t\"μ\": \"m\",\n\t\t\t\"ν\": \"n\",\n\t\t\t\"ξ\": \"ks\",\n\t\t\t\"ο\": \"o\",\n\t\t\t\"π\": \"p\",\n\t\t\t\"ρ\": \"r\",\n\t\t\t\"σ\": \"s\",\n\t\t\t\"τ\": \"t\",\n\t\t\t\"υ\": \"y\",\n\t\t\t\"φ\": \"f\",\n\t\t\t\"χ\": \"x\",\n\t\t\t\"ψ\": \"ps\",\n\t\t\t\"ω\": \"o\",\n\t\t\t\"ά\": \"a\",\n\t\t\t\"έ\": \"e\",\n\t\t\t\"ί\": \"i\",\n\t\t\t\"ό\": \"o\",\n\t\t\t\"ύ\": \"y\",\n\t\t\t\"ή\": \"i\",\n\t\t\t\"ώ\": \"o\",\n\t\t\t\"ς\": \"s\",\n\t\t\t\"ϊ\": \"i\",\n\t\t\t\"ΰ\": \"y\",\n\t\t\t\"ϋ\": \"y\",\n\t\t\t\"ΐ\": \"i\",\n\t\t\t\"Α\": \"A\",\n\t\t\t\"Β\": \"B\",\n\t\t\t\"Γ\": \"G\",\n\t\t\t\"Δ\": \"D\",\n\t\t\t\"Ε\": \"E\",\n\t\t\t\"Ζ\": \"Z\",\n\t\t\t\"Η\": \"I\",\n\t\t\t\"Θ\": \"TH\",\n\t\t\t\"Ι\": \"I\",\n\t\t\t\"Κ\": \"K\",\n\t\t\t\"Λ\": \"L\",\n\t\t\t\"Μ\": \"M\",\n\t\t\t\"Ν\": \"N\",\n\t\t\t\"Ξ\": \"KS\",\n\t\t\t\"Ο\": \"O\",\n\t\t\t\"Π\": \"P\",\n\t\t\t\"Ρ\": \"R\",\n\t\t\t\"Σ\": \"S\",\n\t\t\t\"Τ\": \"T\",\n\t\t\t\"Υ\": \"Y\",\n\t\t\t\"Φ\": \"F\",\n\t\t\t\"Χ\": \"X\",\n\t\t\t\"Ψ\": \"PS\",\n\t\t\t\"Ω\": \"O\",\n\t\t\t\"Ά\": \"A\",\n\t\t\t\"Έ\": \"E\",\n\t\t\t\"Ί\": \"I\",\n\t\t\t\"Ό\": \"O\",\n\t\t\t\"Ύ\": \"Y\",\n\t\t\t\"Ή\": \"I\",\n\t\t\t\"Ώ\": \"O\",\n\t\t\t\"Ϊ\": \"I\",\n\t\t\t\"Ϋ\": \"Y\",\n\t\t\t\"ā\": \"a\",\n\t\t\t\"ē\": \"e\",\n\t\t\t\"ģ\": \"g\",\n\t\t\t\"ī\": \"i\",\n\t\t\t\"ķ\": \"k\",\n\t\t\t\"ļ\": \"l\",\n\t\t\t\"ņ\": \"n\",\n\t\t\t\"ū\": \"u\",\n\t\t\t\"Ā\": \"A\",\n\t\t\t\"Ē\": \"E\",\n\t\t\t\"Ģ\": \"G\",\n\t\t\t\"Ī\": \"I\",\n\t\t\t\"Ķ\": \"k\",\n\t\t\t\"Ļ\": \"L\",\n\t\t\t\"Ņ\": \"N\",\n\t\t\t\"Ū\": \"U\",\n\t\t\t\"Ќ\": \"Kj\",\n\t\t\t\"ќ\": \"kj\",\n\t\t\t\"Љ\": \"Lj\",\n\t\t\t\"љ\": \"lj\",\n\t\t\t\"Њ\": \"Nj\",\n\t\t\t\"њ\": \"nj\",\n\t\t\t\"Тс\": \"Ts\",\n\t\t\t\"тс\": \"ts\",\n\t\t\t\"ą\": \"a\",\n\t\t\t\"ć\": \"c\",\n\t\t\t\"ę\": \"e\",\n\t\t\t\"ł\": \"l\",\n\t\t\t\"ń\": \"n\",\n\t\t\t\"ś\": \"s\",\n\t\t\t\"ź\": \"z\",\n\t\t\t\"ż\": \"z\",\n\t\t\t\"Ą\": \"A\",\n\t\t\t\"Ć\": \"C\",\n\t\t\t\"Ę\": \"E\",\n\t\t\t\"Ł\": \"L\",\n\t\t\t\"Ń\": \"N\",\n\t\t\t\"Ś\": \"S\",\n\t\t\t\"Ź\": \"Z\",\n\t\t\t\"Ż\": \"Z\",\n\t\t\t\"Є\": \"Ye\",\n\t\t\t\"І\": \"I\",\n\t\t\t\"Ї\": \"Yi\",\n\t\t\t\"Ґ\": \"G\",\n\t\t\t\"є\": \"ye\",\n\t\t\t\"і\": \"i\",\n\t\t\t\"ї\": \"yi\",\n\t\t\t\"ґ\": \"g\",\n\t\t\t\"ă\": \"a\",\n\t\t\t\"Ă\": \"A\",\n\t\t\t\"ș\": \"s\",\n\t\t\t\"Ș\": \"S\",\n\t\t\t\"ț\": \"t\",\n\t\t\t\"Ț\": \"T\",\n\t\t\t\"ţ\": \"t\",\n\t\t\t\"Ţ\": \"T\",\n\t\t\t\"а\": \"a\",\n\t\t\t\"б\": \"b\",\n\t\t\t\"в\": \"v\",\n\t\t\t\"г\": \"g\",\n\t\t\t\"д\": \"d\",\n\t\t\t\"е\": \"e\",\n\t\t\t\"ё\": \"yo\",\n\t\t\t\"ж\": \"zh\",\n\t\t\t\"з\": \"z\",\n\t\t\t\"и\": \"i\",\n\t\t\t\"й\": \"i\",\n\t\t\t\"к\": \"k\",\n\t\t\t\"л\": \"l\",\n\t\t\t\"м\": \"m\",\n\t\t\t\"н\": \"n\",\n\t\t\t\"о\": \"o\",\n\t\t\t\"п\": \"p\",\n\t\t\t\"р\": \"r\",\n\t\t\t\"с\": \"s\",\n\t\t\t\"т\": \"t\",\n\t\t\t\"у\": \"u\",\n\t\t\t\"ф\": \"f\",\n\t\t\t\"х\": \"kh\",\n\t\t\t\"ц\": \"c\",\n\t\t\t\"ч\": \"ch\",\n\t\t\t\"ш\": \"sh\",\n\t\t\t\"щ\": \"sh\",\n\t\t\t\"ъ\": \"\",\n\t\t\t\"ы\": \"y\",\n\t\t\t\"ь\": \"\",\n\t\t\t\"э\": \"e\",\n\t\t\t\"ю\": \"yu\",\n\t\t\t\"я\": \"ya\",\n\t\t\t\"А\": \"A\",\n\t\t\t\"Б\": \"B\",\n\t\t\t\"В\": \"V\",\n\t\t\t\"Г\": \"G\",\n\t\t\t\"Д\": \"D\",\n\t\t\t\"Е\": \"E\",\n\t\t\t\"Ё\": \"Yo\",\n\t\t\t\"Ж\": \"Zh\",\n\t\t\t\"З\": \"Z\",\n\t\t\t\"И\": \"I\",\n\t\t\t\"Й\": \"I\",\n\t\t\t\"К\": \"K\",\n\t\t\t\"Л\": \"L\",\n\t\t\t\"М\": \"M\",\n\t\t\t\"Н\": \"N\",\n\t\t\t\"О\": \"O\",\n\t\t\t\"П\": \"P\",\n\t\t\t\"Р\": \"R\",\n\t\t\t\"С\": \"S\",\n\t\t\t\"Т\": \"T\",\n\t\t\t\"У\": \"U\",\n\t\t\t\"Ф\": \"F\",\n\t\t\t\"Х\": \"Kh\",\n\t\t\t\"Ц\": \"C\",\n\t\t\t\"Ч\": \"Ch\",\n\t\t\t\"Ш\": \"Sh\",\n\t\t\t\"Щ\": \"Sh\",\n\t\t\t\"Ъ\": \"\",\n\t\t\t\"Ы\": \"Y\",\n\t\t\t\"Ь\": \"\",\n\t\t\t\"Э\": \"E\",\n\t\t\t\"Ю\": \"Yu\",\n\t\t\t\"Я\": \"Ya\",\n\t\t\t\"ђ\": \"dj\",\n\t\t\t\"ј\": \"j\",\n\t\t\t\"ћ\": \"c\",\n\t\t\t\"џ\": \"dz\",\n\t\t\t\"Ђ\": \"Dj\",\n\t\t\t\"Ј\": \"j\",\n\t\t\t\"Ћ\": \"C\",\n\t\t\t\"Џ\": \"Dz\",\n\t\t\t\"ľ\": \"l\",\n\t\t\t\"ĺ\": \"l\",\n\t\t\t\"ŕ\": \"r\",\n\t\t\t\"Ľ\": \"L\",\n\t\t\t\"Ĺ\": \"L\",\n\t\t\t\"Ŕ\": \"R\",\n\t\t\t\"ş\": \"s\",\n\t\t\t\"Ş\": \"S\",\n\t\t\t\"ı\": \"i\",\n\t\t\t\"İ\": \"I\",\n\t\t\t\"ğ\": \"g\",\n\t\t\t\"Ğ\": \"G\",\n\t\t\t\"ả\": \"a\",\n\t\t\t\"Ả\": \"A\",\n\t\t\t\"ẳ\": \"a\",\n\t\t\t\"Ẳ\": \"A\",\n\t\t\t\"ẩ\": \"a\",\n\t\t\t\"Ẩ\": \"A\",\n\t\t\t\"đ\": \"d\",\n\t\t\t\"Đ\": \"D\",\n\t\t\t\"ẹ\": \"e\",\n\t\t\t\"Ẹ\": \"E\",\n\t\t\t\"ẽ\": \"e\",\n\t\t\t\"Ẽ\": \"E\",\n\t\t\t\"ẻ\": \"e\",\n\t\t\t\"Ẻ\": \"E\",\n\t\t\t\"ế\": \"e\",\n\t\t\t\"Ế\": \"E\",\n\t\t\t\"ề\": \"e\",\n\t\t\t\"Ề\": \"E\",\n\t\t\t\"ệ\": \"e\",\n\t\t\t\"Ệ\": \"E\",\n\t\t\t\"ễ\": \"e\",\n\t\t\t\"Ễ\": \"E\",\n\t\t\t\"ể\": \"e\",\n\t\t\t\"Ể\": \"E\",\n\t\t\t\"ỏ\": \"o\",\n\t\t\t\"ọ\": \"o\",\n\t\t\t\"Ọ\": \"o\",\n\t\t\t\"ố\": \"o\",\n\t\t\t\"Ố\": \"O\",\n\t\t\t\"ồ\": \"o\",\n\t\t\t\"Ồ\": \"O\",\n\t\t\t\"ổ\": \"o\",\n\t\t\t\"Ổ\": \"O\",\n\t\t\t\"ộ\": \"o\",\n\t\t\t\"Ộ\": \"O\",\n\t\t\t\"ỗ\": \"o\",\n\t\t\t\"Ỗ\": \"O\",\n\t\t\t\"ơ\": \"o\",\n\t\t\t\"Ơ\": \"O\",\n\t\t\t\"ớ\": \"o\",\n\t\t\t\"Ớ\": \"O\",\n\t\t\t\"ờ\": \"o\",\n\t\t\t\"Ờ\": \"O\",\n\t\t\t\"ợ\": \"o\",\n\t\t\t\"Ợ\": \"O\",\n\t\t\t\"ỡ\": \"o\",\n\t\t\t\"Ỡ\": \"O\",\n\t\t\t\"Ở\": \"o\",\n\t\t\t\"ở\": \"o\",\n\t\t\t\"ị\": \"i\",\n\t\t\t\"Ị\": \"I\",\n\t\t\t\"ĩ\": \"i\",\n\t\t\t\"Ĩ\": \"I\",\n\t\t\t\"ỉ\": \"i\",\n\t\t\t\"Ỉ\": \"i\",\n\t\t\t\"ủ\": \"u\",\n\t\t\t\"Ủ\": \"U\",\n\t\t\t\"ụ\": \"u\",\n\t\t\t\"Ụ\": \"U\",\n\t\t\t\"ũ\": \"u\",\n\t\t\t\"Ũ\": \"U\",\n\t\t\t\"ư\": \"u\",\n\t\t\t\"Ư\": \"U\",\n\t\t\t\"ứ\": \"u\",\n\t\t\t\"Ứ\": \"U\",\n\t\t\t\"ừ\": \"u\",\n\t\t\t\"Ừ\": \"U\",\n\t\t\t\"ự\": \"u\",\n\t\t\t\"Ự\": \"U\",\n\t\t\t\"ữ\": \"u\",\n\t\t\t\"Ữ\": \"U\",\n\t\t\t\"ử\": \"u\",\n\t\t\t\"Ử\": \"ư\",\n\t\t\t\"ỷ\": \"y\",\n\t\t\t\"Ỷ\": \"y\",\n\t\t\t\"ỳ\": \"y\",\n\t\t\t\"Ỳ\": \"Y\",\n\t\t\t\"ỵ\": \"y\",\n\t\t\t\"Ỵ\": \"Y\",\n\t\t\t\"ỹ\": \"y\",\n\t\t\t\"Ỹ\": \"Y\",\n\t\t\t\"ạ\": \"a\",\n\t\t\t\"Ạ\": \"A\",\n\t\t\t\"ấ\": \"a\",\n\t\t\t\"Ấ\": \"A\",\n\t\t\t\"ầ\": \"a\",\n\t\t\t\"Ầ\": \"A\",\n\t\t\t\"ậ\": \"a\",\n\t\t\t\"Ậ\": \"A\",\n\t\t\t\"ẫ\": \"a\",\n\t\t\t\"Ẫ\": \"A\",\n\t\t\t\"ắ\": \"a\",\n\t\t\t\"Ắ\": \"A\",\n\t\t\t\"ằ\": \"a\",\n\t\t\t\"Ằ\": \"A\",\n\t\t\t\"ặ\": \"a\",\n\t\t\t\"Ặ\": \"A\",\n\t\t\t\"ẵ\": \"a\",\n\t\t\t\"Ẵ\": \"A\",\n\t\t\t\"⓪\": \"0\",\n\t\t\t\"①\": \"1\",\n\t\t\t\"②\": \"2\",\n\t\t\t\"③\": \"3\",\n\t\t\t\"④\": \"4\",\n\t\t\t\"⑤\": \"5\",\n\t\t\t\"⑥\": \"6\",\n\t\t\t\"⑦\": \"7\",\n\t\t\t\"⑧\": \"8\",\n\t\t\t\"⑨\": \"9\",\n\t\t\t\"⑩\": \"10\",\n\t\t\t\"⑪\": \"11\",\n\t\t\t\"⑫\": \"12\",\n\t\t\t\"⑬\": \"13\",\n\t\t\t\"⑭\": \"14\",\n\t\t\t\"⑮\": \"15\",\n\t\t\t\"⑯\": \"16\",\n\t\t\t\"⑰\": \"17\",\n\t\t\t\"⑱\": \"18\",\n\t\t\t\"⑲\": \"18\",\n\t\t\t\"⑳\": \"18\",\n\t\t\t\"⓵\": \"1\",\n\t\t\t\"⓶\": \"2\",\n\t\t\t\"⓷\": \"3\",\n\t\t\t\"⓸\": \"4\",\n\t\t\t\"⓹\": \"5\",\n\t\t\t\"⓺\": \"6\",\n\t\t\t\"⓻\": \"7\",\n\t\t\t\"⓼\": \"8\",\n\t\t\t\"⓽\": \"9\",\n\t\t\t\"⓾\": \"10\",\n\t\t\t\"⓿\": \"0\",\n\t\t\t\"⓫\": \"11\",\n\t\t\t\"⓬\": \"12\",\n\t\t\t\"⓭\": \"13\",\n\t\t\t\"⓮\": \"14\",\n\t\t\t\"⓯\": \"15\",\n\t\t\t\"⓰\": \"16\",\n\t\t\t\"⓱\": \"17\",\n\t\t\t\"⓲\": \"18\",\n\t\t\t\"⓳\": \"19\",\n\t\t\t\"⓴\": \"20\",\n\t\t\t\"Ⓐ\": \"A\",\n\t\t\t\"Ⓑ\": \"B\",\n\t\t\t\"Ⓒ\": \"C\",\n\t\t\t\"Ⓓ\": \"D\",\n\t\t\t\"Ⓔ\": \"E\",\n\t\t\t\"Ⓕ\": \"F\",\n\t\t\t\"Ⓖ\": \"G\",\n\t\t\t\"Ⓗ\": \"H\",\n\t\t\t\"Ⓘ\": \"I\",\n\t\t\t\"Ⓙ\": \"J\",\n\t\t\t\"Ⓚ\": \"K\",\n\t\t\t\"Ⓛ\": \"L\",\n\t\t\t\"Ⓜ\": \"M\",\n\t\t\t\"Ⓝ\": \"N\",\n\t\t\t\"Ⓞ\": \"O\",\n\t\t\t\"Ⓟ\": \"P\",\n\t\t\t\"Ⓠ\": \"Q\",\n\t\t\t\"Ⓡ\": \"R\",\n\t\t\t\"Ⓢ\": \"S\",\n\t\t\t\"Ⓣ\": \"T\",\n\t\t\t\"Ⓤ\": \"U\",\n\t\t\t\"Ⓥ\": \"V\",\n\t\t\t\"Ⓦ\": \"W\",\n\t\t\t\"Ⓧ\": \"X\",\n\t\t\t\"Ⓨ\": \"Y\",\n\t\t\t\"Ⓩ\": \"Z\",\n\t\t\t\"ⓐ\": \"a\",\n\t\t\t\"ⓑ\": \"b\",\n\t\t\t\"ⓒ\": \"c\",\n\t\t\t\"ⓓ\": \"d\",\n\t\t\t\"ⓔ\": \"e\",\n\t\t\t\"ⓕ\": \"f\",\n\t\t\t\"ⓖ\": \"g\",\n\t\t\t\"ⓗ\": \"h\",\n\t\t\t\"ⓘ\": \"i\",\n\t\t\t\"ⓙ\": \"j\",\n\t\t\t\"ⓚ\": \"k\",\n\t\t\t\"ⓛ\": \"l\",\n\t\t\t\"ⓜ\": \"m\",\n\t\t\t\"ⓝ\": \"n\",\n\t\t\t\"ⓞ\": \"o\",\n\t\t\t\"ⓟ\": \"p\",\n\t\t\t\"ⓠ\": \"q\",\n\t\t\t\"ⓡ\": \"r\",\n\t\t\t\"ⓢ\": \"s\",\n\t\t\t\"ⓣ\": \"t\",\n\t\t\t\"ⓤ\": \"u\",\n\t\t\t\"ⓦ\": \"v\",\n\t\t\t\"ⓥ\": \"w\",\n\t\t\t\"ⓧ\": \"x\",\n\t\t\t\"ⓨ\": \"y\",\n\t\t\t\"ⓩ\": \"z\",\n\t\t\t\"“\": \"\\\"\",\n\t\t\t\"”\": \"\\\"\",\n\t\t\t\"‘\": \"'\",\n\t\t\t\"’\": \"'\",\n\t\t\t\"∂\": \"d\",\n\t\t\t\"ƒ\": \"f\",\n\t\t\t\"™\": \"(TM)\",\n\t\t\t\"©\": \"(C)\",\n\t\t\t\"œ\": \"oe\",\n\t\t\t\"Œ\": \"OE\",\n\t\t\t\"®\": \"(R)\",\n\t\t\t\"†\": \"+\",\n\t\t\t\"℠\": \"(SM)\",\n\t\t\t\"…\": \"...\",\n\t\t\t\"˚\": \"o\",\n\t\t\t\"º\": \"o\",\n\t\t\t\"ª\": \"a\",\n\t\t\t\"•\": \"*\",\n\t\t\t\"၊\": \",\",\n\t\t\t\"။\": \".\",\n\t\t\t\"$\": \"USD\",\n\t\t\t\"€\": \"EUR\",\n\t\t\t\"₢\": \"BRN\",\n\t\t\t\"₣\": \"FRF\",\n\t\t\t\"£\": \"GBP\",\n\t\t\t\"₤\": \"ITL\",\n\t\t\t\"₦\": \"NGN\",\n\t\t\t\"₧\": \"ESP\",\n\t\t\t\"₩\": \"KRW\",\n\t\t\t\"₪\": \"ILS\",\n\t\t\t\"₫\": \"VND\",\n\t\t\t\"₭\": \"LAK\",\n\t\t\t\"₮\": \"MNT\",\n\t\t\t\"₯\": \"GRD\",\n\t\t\t\"₱\": \"ARS\",\n\t\t\t\"₲\": \"PYG\",\n\t\t\t\"₳\": \"ARA\",\n\t\t\t\"₴\": \"UAH\",\n\t\t\t\"₵\": \"GHS\",\n\t\t\t\"¢\": \"cent\",\n\t\t\t\"¥\": \"CNY\",\n\t\t\t\"元\": \"CNY\",\n\t\t\t\"円\": \"YEN\",\n\t\t\t\"﷼\": \"IRR\",\n\t\t\t\"₠\": \"EWE\",\n\t\t\t\"฿\": \"THB\",\n\t\t\t\"₨\": \"INR\",\n\t\t\t\"₹\": \"INR\",\n\t\t\t\"₰\": \"PF\",\n\t\t\t\"₺\": \"TRY\",\n\t\t\t\"؋\": \"AFN\",\n\t\t\t\"₼\": \"AZN\",\n\t\t\t\"лв\": \"BGN\",\n\t\t\t\"៛\": \"KHR\",\n\t\t\t\"₡\": \"CRC\",\n\t\t\t\"₸\": \"KZT\",\n\t\t\t\"ден\": \"MKD\",\n\t\t\t\"zł\": \"PLN\",\n\t\t\t\"₽\": \"RUB\",\n\t\t\t\"₾\": \"GEL\"\n\t\t};\n\t\t/**\n\t\t* special look ahead character array\n\t\t* These characters form with consonants to become 'single'/consonant combo\n\t\t* @type [Array]\n\t\t*/\n\t\tvar lookAheadCharArray = [\"်\", \"ް\"];\n\t\t/**\n\t\t* diatricMap for languages where transliteration changes entirely as more diatrics are added\n\t\t* @type {Object}\n\t\t*/\n\t\tvar diatricMap = {\n\t\t\t\"ာ\": \"a\",\n\t\t\t\"ါ\": \"a\",\n\t\t\t\"ေ\": \"e\",\n\t\t\t\"ဲ\": \"e\",\n\t\t\t\"ိ\": \"i\",\n\t\t\t\"ီ\": \"i\",\n\t\t\t\"ို\": \"o\",\n\t\t\t\"ု\": \"u\",\n\t\t\t\"ူ\": \"u\",\n\t\t\t\"ေါင်\": \"aung\",\n\t\t\t\"ော\": \"aw\",\n\t\t\t\"ော်\": \"aw\",\n\t\t\t\"ေါ\": \"aw\",\n\t\t\t\"ေါ်\": \"aw\",\n\t\t\t\"်\": \"်\",\n\t\t\t\"က်\": \"et\",\n\t\t\t\"ိုက်\": \"aik\",\n\t\t\t\"ောက်\": \"auk\",\n\t\t\t\"င်\": \"in\",\n\t\t\t\"ိုင်\": \"aing\",\n\t\t\t\"ောင်\": \"aung\",\n\t\t\t\"စ်\": \"it\",\n\t\t\t\"ည်\": \"i\",\n\t\t\t\"တ်\": \"at\",\n\t\t\t\"ိတ်\": \"eik\",\n\t\t\t\"ုတ်\": \"ok\",\n\t\t\t\"ွတ်\": \"ut\",\n\t\t\t\"ေတ်\": \"it\",\n\t\t\t\"ဒ်\": \"d\",\n\t\t\t\"ိုဒ်\": \"ok\",\n\t\t\t\"ုဒ်\": \"ait\",\n\t\t\t\"န်\": \"an\",\n\t\t\t\"ာန်\": \"an\",\n\t\t\t\"ိန်\": \"ein\",\n\t\t\t\"ုန်\": \"on\",\n\t\t\t\"ွန်\": \"un\",\n\t\t\t\"ပ်\": \"at\",\n\t\t\t\"ိပ်\": \"eik\",\n\t\t\t\"ုပ်\": \"ok\",\n\t\t\t\"ွပ်\": \"ut\",\n\t\t\t\"န်ုပ်\": \"nub\",\n\t\t\t\"မ်\": \"an\",\n\t\t\t\"ိမ်\": \"ein\",\n\t\t\t\"ုမ်\": \"on\",\n\t\t\t\"ွမ်\": \"un\",\n\t\t\t\"ယ်\": \"e\",\n\t\t\t\"ိုလ်\": \"ol\",\n\t\t\t\"ဉ်\": \"in\",\n\t\t\t\"ံ\": \"an\",\n\t\t\t\"ိံ\": \"ein\",\n\t\t\t\"ုံ\": \"on\",\n\t\t\t\"ައް\": \"ah\",\n\t\t\t\"ަށް\": \"ah\"\n\t\t};\n\t\t/**\n\t\t* langCharMap language specific characters translations\n\t\t* @type {Object}\n\t\t*/\n\t\tvar langCharMap = {\n\t\t\t\"en\": {},\n\t\t\t\"az\": {\n\t\t\t\t\"ç\": \"c\",\n\t\t\t\t\"ə\": \"e\",\n\t\t\t\t\"ğ\": \"g\",\n\t\t\t\t\"ı\": \"i\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"ş\": \"s\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"Ç\": \"C\",\n\t\t\t\t\"Ə\": \"E\",\n\t\t\t\t\"Ğ\": \"G\",\n\t\t\t\t\"İ\": \"I\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"Ş\": \"S\",\n\t\t\t\t\"Ü\": \"U\"\n\t\t\t},\n\t\t\t\"cs\": {\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ď\": \"d\",\n\t\t\t\t\"ě\": \"e\",\n\t\t\t\t\"ň\": \"n\",\n\t\t\t\t\"ř\": \"r\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ť\": \"t\",\n\t\t\t\t\"ů\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ď\": \"D\",\n\t\t\t\t\"Ě\": \"E\",\n\t\t\t\t\"Ň\": \"N\",\n\t\t\t\t\"Ř\": \"R\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ť\": \"T\",\n\t\t\t\t\"Ů\": \"U\",\n\t\t\t\t\"Ž\": \"Z\"\n\t\t\t},\n\t\t\t\"fi\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\"\n\t\t\t},\n\t\t\t\"hu\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"Ü\": \"U\",\n\t\t\t\t\"ű\": \"u\",\n\t\t\t\t\"Ű\": \"U\"\n\t\t\t},\n\t\t\t\"lt\": {\n\t\t\t\t\"ą\": \"a\",\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ę\": \"e\",\n\t\t\t\t\"ė\": \"e\",\n\t\t\t\t\"į\": \"i\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ų\": \"u\",\n\t\t\t\t\"ū\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Ą\": \"A\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ę\": \"E\",\n\t\t\t\t\"Ė\": \"E\",\n\t\t\t\t\"Į\": \"I\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ų\": \"U\",\n\t\t\t\t\"Ū\": \"U\"\n\t\t\t},\n\t\t\t\"lv\": {\n\t\t\t\t\"ā\": \"a\",\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ē\": \"e\",\n\t\t\t\t\"ģ\": \"g\",\n\t\t\t\t\"ī\": \"i\",\n\t\t\t\t\"ķ\": \"k\",\n\t\t\t\t\"ļ\": \"l\",\n\t\t\t\t\"ņ\": \"n\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ū\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Ā\": \"A\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ē\": \"E\",\n\t\t\t\t\"Ģ\": \"G\",\n\t\t\t\t\"Ī\": \"i\",\n\t\t\t\t\"Ķ\": \"k\",\n\t\t\t\t\"Ļ\": \"L\",\n\t\t\t\t\"Ņ\": \"N\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ū\": \"u\",\n\t\t\t\t\"Ž\": \"Z\"\n\t\t\t},\n\t\t\t\"pl\": {\n\t\t\t\t\"ą\": \"a\",\n\t\t\t\t\"ć\": \"c\",\n\t\t\t\t\"ę\": \"e\",\n\t\t\t\t\"ł\": \"l\",\n\t\t\t\t\"ń\": \"n\",\n\t\t\t\t\"ó\": \"o\",\n\t\t\t\t\"ś\": \"s\",\n\t\t\t\t\"ź\": \"z\",\n\t\t\t\t\"ż\": \"z\",\n\t\t\t\t\"Ą\": \"A\",\n\t\t\t\t\"Ć\": \"C\",\n\t\t\t\t\"Ę\": \"e\",\n\t\t\t\t\"Ł\": \"L\",\n\t\t\t\t\"Ń\": \"N\",\n\t\t\t\t\"Ó\": \"O\",\n\t\t\t\t\"Ś\": \"S\",\n\t\t\t\t\"Ź\": \"Z\",\n\t\t\t\t\"Ż\": \"Z\"\n\t\t\t},\n\t\t\t\"sv\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\"\n\t\t\t},\n\t\t\t\"sk\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\"\n\t\t\t},\n\t\t\t\"sr\": {\n\t\t\t\t\"љ\": \"lj\",\n\t\t\t\t\"њ\": \"nj\",\n\t\t\t\t\"Љ\": \"Lj\",\n\t\t\t\t\"Њ\": \"Nj\",\n\t\t\t\t\"đ\": \"dj\",\n\t\t\t\t\"Đ\": \"Dj\"\n\t\t\t},\n\t\t\t\"tr\": {\n\t\t\t\t\"Ü\": \"U\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"ö\": \"o\"\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t* symbolMap language specific symbol translations\n\t\t* translations must be transliterated already\n\t\t* @type {Object}\n\t\t*/\n\t\tvar symbolMap = {\n\t\t\t\"ar\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"la-nihaya\",\n\t\t\t\t\"♥\": \"hob\",\n\t\t\t\t\"&\": \"wa\",\n\t\t\t\t\"|\": \"aw\",\n\t\t\t\t\"<\": \"aqal-men\",\n\t\t\t\t\">\": \"akbar-men\",\n\t\t\t\t\"∑\": \"majmou\",\n\t\t\t\t\"¤\": \"omla\"\n\t\t\t},\n\t\t\t\"az\": {},\n\t\t\t\"ca\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinit\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"o\",\n\t\t\t\t\"<\": \"menys que\",\n\t\t\t\t\">\": \"mes que\",\n\t\t\t\t\"∑\": \"suma dels\",\n\t\t\t\t\"¤\": \"moneda\"\n\t\t\t},\n\t\t\t\"cs\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nekonecno\",\n\t\t\t\t\"♥\": \"laska\",\n\t\t\t\t\"&\": \"a\",\n\t\t\t\t\"|\": \"nebo\",\n\t\t\t\t\"<\": \"mensi nez\",\n\t\t\t\t\">\": \"vetsi nez\",\n\t\t\t\t\"∑\": \"soucet\",\n\t\t\t\t\"¤\": \"mena\"\n\t\t\t},\n\t\t\t\"de\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"unendlich\",\n\t\t\t\t\"♥\": \"Liebe\",\n\t\t\t\t\"&\": \"und\",\n\t\t\t\t\"|\": \"oder\",\n\t\t\t\t\"<\": \"kleiner als\",\n\t\t\t\t\">\": \"groesser als\",\n\t\t\t\t\"∑\": \"Summe von\",\n\t\t\t\t\"¤\": \"Waehrung\"\n\t\t\t},\n\t\t\t\"dv\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"kolunulaa\",\n\t\t\t\t\"♥\": \"loabi\",\n\t\t\t\t\"&\": \"aai\",\n\t\t\t\t\"|\": \"noonee\",\n\t\t\t\t\"<\": \"ah vure kuda\",\n\t\t\t\t\">\": \"ah vure bodu\",\n\t\t\t\t\"∑\": \"jumula\",\n\t\t\t\t\"¤\": \"faisaa\"\n\t\t\t},\n\t\t\t\"en\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinity\",\n\t\t\t\t\"♥\": \"love\",\n\t\t\t\t\"&\": \"and\",\n\t\t\t\t\"|\": \"or\",\n\t\t\t\t\"<\": \"less than\",\n\t\t\t\t\">\": \"greater than\",\n\t\t\t\t\"∑\": \"sum\",\n\t\t\t\t\"¤\": \"currency\"\n\t\t\t},\n\t\t\t\"es\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"y\",\n\t\t\t\t\"|\": \"u\",\n\t\t\t\t\"<\": \"menos que\",\n\t\t\t\t\">\": \"mas que\",\n\t\t\t\t\"∑\": \"suma de los\",\n\t\t\t\t\"¤\": \"moneda\"\n\t\t\t},\n\t\t\t\"fa\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bi-nahayat\",\n\t\t\t\t\"♥\": \"eshgh\",\n\t\t\t\t\"&\": \"va\",\n\t\t\t\t\"|\": \"ya\",\n\t\t\t\t\"<\": \"kamtar-az\",\n\t\t\t\t\">\": \"bishtar-az\",\n\t\t\t\t\"∑\": \"majmooe\",\n\t\t\t\t\"¤\": \"vahed\"\n\t\t\t},\n\t\t\t\"fi\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"aarettomyys\",\n\t\t\t\t\"♥\": \"rakkaus\",\n\t\t\t\t\"&\": \"ja\",\n\t\t\t\t\"|\": \"tai\",\n\t\t\t\t\"<\": \"pienempi kuin\",\n\t\t\t\t\">\": \"suurempi kuin\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valuutta\"\n\t\t\t},\n\t\t\t\"fr\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infiniment\",\n\t\t\t\t\"♥\": \"Amour\",\n\t\t\t\t\"&\": \"et\",\n\t\t\t\t\"|\": \"ou\",\n\t\t\t\t\"<\": \"moins que\",\n\t\t\t\t\">\": \"superieure a\",\n\t\t\t\t\"∑\": \"somme des\",\n\t\t\t\t\"¤\": \"monnaie\"\n\t\t\t},\n\t\t\t\"ge\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"usasruloba\",\n\t\t\t\t\"♥\": \"siqvaruli\",\n\t\t\t\t\"&\": \"da\",\n\t\t\t\t\"|\": \"an\",\n\t\t\t\t\"<\": \"naklebi\",\n\t\t\t\t\">\": \"meti\",\n\t\t\t\t\"∑\": \"jami\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"gr\": {},\n\t\t\t\"hu\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"vegtelen\",\n\t\t\t\t\"♥\": \"szerelem\",\n\t\t\t\t\"&\": \"es\",\n\t\t\t\t\"|\": \"vagy\",\n\t\t\t\t\"<\": \"kisebb mint\",\n\t\t\t\t\">\": \"nagyobb mint\",\n\t\t\t\t\"∑\": \"szumma\",\n\t\t\t\t\"¤\": \"penznem\"\n\t\t\t},\n\t\t\t\"it\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amore\",\n\t\t\t\t\"&\": \"e\",\n\t\t\t\t\"|\": \"o\",\n\t\t\t\t\"<\": \"minore di\",\n\t\t\t\t\">\": \"maggiore di\",\n\t\t\t\t\"∑\": \"somma\",\n\t\t\t\t\"¤\": \"moneta\"\n\t\t\t},\n\t\t\t\"lt\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"begalybe\",\n\t\t\t\t\"♥\": \"meile\",\n\t\t\t\t\"&\": \"ir\",\n\t\t\t\t\"|\": \"ar\",\n\t\t\t\t\"<\": \"maziau nei\",\n\t\t\t\t\">\": \"daugiau nei\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valiuta\"\n\t\t\t},\n\t\t\t\"lv\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bezgaliba\",\n\t\t\t\t\"♥\": \"milestiba\",\n\t\t\t\t\"&\": \"un\",\n\t\t\t\t\"|\": \"vai\",\n\t\t\t\t\"<\": \"mazak neka\",\n\t\t\t\t\">\": \"lielaks neka\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"my\": {\n\t\t\t\t\"∆\": \"kwahkhyaet\",\n\t\t\t\t\"∞\": \"asaonasme\",\n\t\t\t\t\"♥\": \"akhyait\",\n\t\t\t\t\"&\": \"nhin\",\n\t\t\t\t\"|\": \"tho\",\n\t\t\t\t\"<\": \"ngethaw\",\n\t\t\t\t\">\": \"kyithaw\",\n\t\t\t\t\"∑\": \"paungld\",\n\t\t\t\t\"¤\": \"ngwekye\"\n\t\t\t},\n\t\t\t\"mk\": {},\n\t\t\t\"nl\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"oneindig\",\n\t\t\t\t\"♥\": \"liefde\",\n\t\t\t\t\"&\": \"en\",\n\t\t\t\t\"|\": \"of\",\n\t\t\t\t\"<\": \"kleiner dan\",\n\t\t\t\t\">\": \"groter dan\",\n\t\t\t\t\"∑\": \"som\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"pl\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nieskonczonosc\",\n\t\t\t\t\"♥\": \"milosc\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"lub\",\n\t\t\t\t\"<\": \"mniejsze niz\",\n\t\t\t\t\">\": \"wieksze niz\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"waluta\"\n\t\t\t},\n\t\t\t\"pt\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"e\",\n\t\t\t\t\"|\": \"ou\",\n\t\t\t\t\"<\": \"menor que\",\n\t\t\t\t\">\": \"maior que\",\n\t\t\t\t\"∑\": \"soma\",\n\t\t\t\t\"¤\": \"moeda\"\n\t\t\t},\n\t\t\t\"ro\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinit\",\n\t\t\t\t\"♥\": \"dragoste\",\n\t\t\t\t\"&\": \"si\",\n\t\t\t\t\"|\": \"sau\",\n\t\t\t\t\"<\": \"mai mic ca\",\n\t\t\t\t\">\": \"mai mare ca\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"ru\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"beskonechno\",\n\t\t\t\t\"♥\": \"lubov\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"ili\",\n\t\t\t\t\"<\": \"menshe\",\n\t\t\t\t\">\": \"bolshe\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valjuta\"\n\t\t\t},\n\t\t\t\"sk\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nekonecno\",\n\t\t\t\t\"♥\": \"laska\",\n\t\t\t\t\"&\": \"a\",\n\t\t\t\t\"|\": \"alebo\",\n\t\t\t\t\"<\": \"menej ako\",\n\t\t\t\t\">\": \"viac ako\",\n\t\t\t\t\"∑\": \"sucet\",\n\t\t\t\t\"¤\": \"mena\"\n\t\t\t},\n\t\t\t\"sr\": {},\n\t\t\t\"tr\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"sonsuzluk\",\n\t\t\t\t\"♥\": \"ask\",\n\t\t\t\t\"&\": \"ve\",\n\t\t\t\t\"|\": \"veya\",\n\t\t\t\t\"<\": \"kucuktur\",\n\t\t\t\t\">\": \"buyuktur\",\n\t\t\t\t\"∑\": \"toplam\",\n\t\t\t\t\"¤\": \"para birimi\"\n\t\t\t},\n\t\t\t\"uk\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bezkinechnist\",\n\t\t\t\t\"♥\": \"lubov\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"abo\",\n\t\t\t\t\"<\": \"menshe\",\n\t\t\t\t\">\": \"bilshe\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valjuta\"\n\t\t\t},\n\t\t\t\"vn\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"vo cuc\",\n\t\t\t\t\"♥\": \"yeu\",\n\t\t\t\t\"&\": \"va\",\n\t\t\t\t\"|\": \"hoac\",\n\t\t\t\t\"<\": \"nho hon\",\n\t\t\t\t\">\": \"lon hon\",\n\t\t\t\t\"∑\": \"tong\",\n\t\t\t\t\"¤\": \"tien te\"\n\t\t\t}\n\t\t};\n\t\tvar uricChars = [\n\t\t\t\";\",\n\t\t\t\"?\",\n\t\t\t\":\",\n\t\t\t\"@\",\n\t\t\t\"&\",\n\t\t\t\"=\",\n\t\t\t\"+\",\n\t\t\t\"$\",\n\t\t\t\",\",\n\t\t\t\"/\"\n\t\t].join(\"\");\n\t\tvar uricNoSlashChars = [\n\t\t\t\";\",\n\t\t\t\"?\",\n\t\t\t\":\",\n\t\t\t\"@\",\n\t\t\t\"&\",\n\t\t\t\"=\",\n\t\t\t\"+\",\n\t\t\t\"$\",\n\t\t\t\",\"\n\t\t].join(\"\");\n\t\tvar markChars = [\n\t\t\t\".\",\n\t\t\t\"!\",\n\t\t\t\"~\",\n\t\t\t\"*\",\n\t\t\t\"'\",\n\t\t\t\"(\",\n\t\t\t\")\"\n\t\t].join(\"\");\n\t\t/**\n\t\t* getSlug\n\t\t* @param {string} input input string\n\t\t* @param {object|string} opts config object or separator string/char\n\t\t* @api public\n\t\t* @return {string} sluggified string\n\t\t*/\n\t\tvar getSlug = function getSlug$1(input, opts) {\n\t\t\tvar separator = \"-\";\n\t\t\tvar result = \"\";\n\t\t\tvar diatricString = \"\";\n\t\t\tvar convertSymbols = true;\n\t\t\tvar customReplacements = {};\n\t\t\tvar maintainCase;\n\t\t\tvar titleCase;\n\t\t\tvar truncate;\n\t\t\tvar uricFlag;\n\t\t\tvar uricNoSlashFlag;\n\t\t\tvar markFlag;\n\t\t\tvar symbol;\n\t\t\tvar langChar;\n\t\t\tvar lucky;\n\t\t\tvar i;\n\t\t\tvar ch;\n\t\t\tvar l;\n\t\t\tvar lastCharWasSymbol;\n\t\t\tvar lastCharWasDiatric;\n\t\t\tvar allowedChars = \"\";\n\t\t\tif (typeof input !== \"string\") return \"\";\n\t\t\tif (typeof opts === \"string\") separator = opts;\n\t\t\tsymbol = symbolMap.en;\n\t\t\tlangChar = langCharMap.en;\n\t\t\tif (typeof opts === \"object\") {\n\t\t\t\tmaintainCase = opts.maintainCase || false;\n\t\t\t\tcustomReplacements = opts.custom && typeof opts.custom === \"object\" ? opts.custom : customReplacements;\n\t\t\t\ttruncate = +opts.truncate > 1 && opts.truncate || false;\n\t\t\t\turicFlag = opts.uric || false;\n\t\t\t\turicNoSlashFlag = opts.uricNoSlash || false;\n\t\t\t\tmarkFlag = opts.mark || false;\n\t\t\t\tconvertSymbols = opts.symbols === false || opts.lang === false ? false : true;\n\t\t\t\tseparator = opts.separator || separator;\n\t\t\t\tif (uricFlag) allowedChars += uricChars;\n\t\t\t\tif (uricNoSlashFlag) allowedChars += uricNoSlashChars;\n\t\t\t\tif (markFlag) allowedChars += markChars;\n\t\t\t\tsymbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {};\n\t\t\t\tlangChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en;\n\t\t\t\tif (opts.titleCase && typeof opts.titleCase.length === \"number\" && Array.prototype.toString.call(opts.titleCase)) {\n\t\t\t\t\topts.titleCase.forEach(function(v) {\n\t\t\t\t\t\tcustomReplacements[v + \"\"] = v + \"\";\n\t\t\t\t\t});\n\t\t\t\t\ttitleCase = true;\n\t\t\t\t} else titleCase = !!opts.titleCase;\n\t\t\t\tif (opts.custom && typeof opts.custom.length === \"number\" && Array.prototype.toString.call(opts.custom)) opts.custom.forEach(function(v) {\n\t\t\t\t\tcustomReplacements[v + \"\"] = v + \"\";\n\t\t\t\t});\n\t\t\t\tObject.keys(customReplacements).forEach(function(v) {\n\t\t\t\t\tvar r;\n\t\t\t\t\tif (v.length > 1) r = new RegExp(\"\\\\b\" + escapeChars(v) + \"\\\\b\", \"gi\");\n\t\t\t\t\telse r = new RegExp(escapeChars(v), \"gi\");\n\t\t\t\t\tinput = input.replace(r, customReplacements[v]);\n\t\t\t\t});\n\t\t\t\tfor (ch in customReplacements) allowedChars += ch;\n\t\t\t}\n\t\t\tallowedChars += separator;\n\t\t\tallowedChars = escapeChars(allowedChars);\n\t\t\tinput = input.replace(/(^\\s+|\\s+$)/g, \"\");\n\t\t\tlastCharWasSymbol = false;\n\t\t\tlastCharWasDiatric = false;\n\t\t\tfor (i = 0, l = input.length; i < l; i++) {\n\t\t\t\tch = input[i];\n\t\t\t\tif (isReplacedCustomChar(ch, customReplacements)) lastCharWasSymbol = false;\n\t\t\t\telse if (langChar[ch]) {\n\t\t\t\t\tch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? \" \" + langChar[ch] : langChar[ch];\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t} else if (ch in charMap) {\n\t\t\t\t\tif (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {\n\t\t\t\t\t\tdiatricString += ch;\n\t\t\t\t\t\tch = \"\";\n\t\t\t\t\t} else if (lastCharWasDiatric === true) {\n\t\t\t\t\t\tch = diatricMap[diatricString] + charMap[ch];\n\t\t\t\t\t\tdiatricString = \"\";\n\t\t\t\t\t} else ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? \" \" + charMap[ch] : charMap[ch];\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t\tlastCharWasDiatric = false;\n\t\t\t\t} else if (ch in diatricMap) {\n\t\t\t\t\tdiatricString += ch;\n\t\t\t\t\tch = \"\";\n\t\t\t\t\tif (i === l - 1) ch = diatricMap[diatricString];\n\t\t\t\t\tlastCharWasDiatric = true;\n\t\t\t\t} else if (symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)) {\n\t\t\t\t\tch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];\n\t\t\t\t\tch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : \"\";\n\t\t\t\t\tlastCharWasSymbol = true;\n\t\t\t\t} else {\n\t\t\t\t\tif (lastCharWasDiatric === true) {\n\t\t\t\t\t\tch = diatricMap[diatricString] + ch;\n\t\t\t\t\t\tdiatricString = \"\";\n\t\t\t\t\t\tlastCharWasDiatric = false;\n\t\t\t\t\t} else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) ch = \" \" + ch;\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t}\n\t\t\t\tresult += ch.replace(new RegExp(\"[^\\\\w\\\\s\" + allowedChars + \"_-]\", \"g\"), separator);\n\t\t\t}\n\t\t\tif (titleCase) result = result.replace(/(\\w)(\\S*)/g, function(_, i$1, r) {\n\t\t\t\tvar j = i$1.toUpperCase() + (r !== null ? r : \"\");\n\t\t\t\treturn Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase();\n\t\t\t});\n\t\t\tresult = result.replace(/\\s+/g, separator).replace(new RegExp(\"\\\\\" + separator + \"+\", \"g\"), separator).replace(new RegExp(\"(^\\\\\" + separator + \"+|\\\\\" + separator + \"+$)\", \"g\"), \"\");\n\t\t\tif (truncate && result.length > truncate) {\n\t\t\t\tlucky = result.charAt(truncate) === separator;\n\t\t\t\tresult = result.slice(0, truncate);\n\t\t\t\tif (!lucky) result = result.slice(0, result.lastIndexOf(separator));\n\t\t\t}\n\t\t\tif (!maintainCase && !titleCase) result = result.toLowerCase();\n\t\t\treturn result;\n\t\t};\n\t\t/**\n\t\t* createSlug curried(opts)(input)\n\t\t* @param {object|string} opts config object or input string\n\t\t* @return {Function} function getSlugWithConfig()\n\t\t**/\n\t\tvar createSlug = function createSlug$1(opts) {\n\t\t\t/**\n\t\t\t* getSlugWithConfig\n\t\t\t* @param {string} input string\n\t\t\t* @return {string} slug string\n\t\t\t*/\n\t\t\treturn function getSlugWithConfig(input) {\n\t\t\t\treturn getSlug(input, opts);\n\t\t\t};\n\t\t};\n\t\t/**\n\t\t* escape Chars\n\t\t* @param {string} input string\n\t\t*/\n\t\tvar escapeChars = function escapeChars$1(input) {\n\t\t\treturn input.replace(/[-\\\\^$*+?.()|[\\]{}\\/]/g, \"\\\\$&\");\n\t\t};\n\t\t/**\n\t\t* check if the char is an already converted char from custom list\n\t\t* @param {char} ch character to check\n\t\t* @param {object} customReplacements custom translation map\n\t\t*/\n\t\tvar isReplacedCustomChar = function(ch, customReplacements) {\n\t\t\tfor (var c in customReplacements) if (customReplacements[c] === ch) return true;\n\t\t};\n\t\tif (typeof module !== \"undefined\" && module.exports) {\n\t\t\tmodule.exports = getSlug;\n\t\t\tmodule.exports.createSlug = createSlug;\n\t\t} else if (typeof define !== \"undefined\" && define.amd) define([], function() {\n\t\t\treturn getSlug;\n\t\t});\n\t\telse try {\n\t\t\tif (root.getSlug || root.createSlug) throw \"speakingurl: globals exists /(getSlug|createSlug)/\";\n\t\t\telse {\n\t\t\t\troot.getSlug = getSlug;\n\t\t\t\troot.createSlug = createSlug;\n\t\t\t}\n\t\t} catch (e) {}\n\t})(exports);\n}) });\n\n//#endregion\n//#region ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\nvar require_speakingurl = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\": ((exports, module) => {\n\tmodule.exports = require_speakingurl$1();\n}) });\n\n//#endregion\n//#region src/core/app/index.ts\nvar import_speakingurl = /* @__PURE__ */ __toESM(require_speakingurl(), 1);\nconst appRecordInfo = target.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__ ??= {\n\tid: 0,\n\tappIds: /* @__PURE__ */ new Set()\n};\nfunction getAppRecordName(app, fallbackName) {\n\treturn app?._component?.name || `App ${fallbackName}`;\n}\nfunction getAppRootInstance(app) {\n\tif (app._instance) return app._instance;\n\telse if (app._container?._vnode?.component) return app._container?._vnode?.component;\n}\nfunction removeAppRecordId(app) {\n\tconst id = app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n\tif (id != null) {\n\t\tappRecordInfo.appIds.delete(id);\n\t\tappRecordInfo.id--;\n\t}\n}\nfunction getAppRecordId(app, defaultId) {\n\tif (app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ != null) return app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n\tlet id = defaultId ?? (appRecordInfo.id++).toString();\n\tif (defaultId && appRecordInfo.appIds.has(id)) {\n\t\tlet count = 1;\n\t\twhile (appRecordInfo.appIds.has(`${defaultId}_${count}`)) count++;\n\t\tid = `${defaultId}_${count}`;\n\t}\n\tappRecordInfo.appIds.add(id);\n\tapp.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ = id;\n\treturn id;\n}\nfunction createAppRecord(app, types) {\n\tconst rootInstance = getAppRootInstance(app);\n\tif (rootInstance) {\n\t\tappRecordInfo.id++;\n\t\tconst name = getAppRecordName(app, appRecordInfo.id.toString());\n\t\tconst id = getAppRecordId(app, (0, import_speakingurl.default)(name));\n\t\tconst [el] = getRootElementsFromComponentInstance(rootInstance);\n\t\tconst record = {\n\t\t\tid,\n\t\t\tname,\n\t\t\ttypes,\n\t\t\tinstanceMap: /* @__PURE__ */ new Map(),\n\t\t\tperfGroupIds: /* @__PURE__ */ new Map(),\n\t\t\trootInstance,\n\t\t\tiframe: isBrowser && document !== el?.ownerDocument ? el?.ownerDocument?.location?.pathname : void 0\n\t\t};\n\t\tapp.__VUE_DEVTOOLS_NEXT_APP_RECORD__ = record;\n\t\tconst rootId = `${record.id}:root`;\n\t\trecord.instanceMap.set(rootId, record.rootInstance);\n\t\trecord.rootInstance.__VUE_DEVTOOLS_NEXT_UID__ = rootId;\n\t\treturn record;\n\t} else return {};\n}\n\n//#endregion\n//#region src/core/iframe/index.ts\nfunction detectIframeApp(target$1, inIframe = false) {\n\tif (inIframe) {\n\t\tfunction sendEventToParent(cb) {\n\t\t\ttry {\n\t\t\t\tconst hook$2 = window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\t\t\t\tif (hook$2) cb(hook$2);\n\t\t\t} catch (e) {}\n\t\t}\n\t\tconst hook$1 = {\n\t\t\tid: \"vue-devtools-next\",\n\t\t\tdevtoolsVersion: \"7.0\",\n\t\t\ton: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.on(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\tonce: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.once(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\toff: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.off(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\temit: (event, ...payload) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.emit(event, ...payload);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tObject.defineProperty(target$1, \"__VUE_DEVTOOLS_GLOBAL_HOOK__\", {\n\t\t\tget() {\n\t\t\t\treturn hook$1;\n\t\t\t},\n\t\t\tconfigurable: true\n\t\t});\n\t}\n\tfunction injectVueHookToIframe(iframe) {\n\t\tif (iframe.__vdevtools__injected) return;\n\t\ttry {\n\t\t\tiframe.__vdevtools__injected = true;\n\t\t\tconst inject = () => {\n\t\t\t\ttry {\n\t\t\t\t\tiframe.contentWindow.__VUE_DEVTOOLS_IFRAME__ = iframe;\n\t\t\t\t\tconst script = iframe.contentDocument.createElement(\"script\");\n\t\t\t\t\tscript.textContent = `;(${detectIframeApp.toString()})(window, true)`;\n\t\t\t\t\tiframe.contentDocument.documentElement.appendChild(script);\n\t\t\t\t\tscript.parentNode.removeChild(script);\n\t\t\t\t} catch (e) {}\n\t\t\t};\n\t\t\tinject();\n\t\t\tiframe.addEventListener(\"load\", () => inject());\n\t\t} catch (e) {}\n\t}\n\tfunction injectVueHookToIframes() {\n\t\tif (typeof window === \"undefined\") return;\n\t\tconst iframes = Array.from(document.querySelectorAll(\"iframe:not([data-vue-devtools-ignore])\"));\n\t\tfor (const iframe of iframes) injectVueHookToIframe(iframe);\n\t}\n\tinjectVueHookToIframes();\n\tlet iframeAppChecks = 0;\n\tconst iframeAppCheckTimer = setInterval(() => {\n\t\tinjectVueHookToIframes();\n\t\tiframeAppChecks++;\n\t\tif (iframeAppChecks >= 5) clearInterval(iframeAppCheckTimer);\n\t}, 1e3);\n}\n\n//#endregion\n//#region src/core/index.ts\nfunction initDevTools() {\n\tdetectIframeApp(target);\n\tupdateDevToolsState({ vitePluginDetected: getDevToolsEnv().vitePluginDetected });\n\tconst isDevToolsNext = target.__VUE_DEVTOOLS_GLOBAL_HOOK__?.id === \"vue-devtools-next\";\n\tif (target.__VUE_DEVTOOLS_GLOBAL_HOOK__ && isDevToolsNext) return;\n\tconst _devtoolsHook = createDevToolsHook();\n\tif (target.__VUE_DEVTOOLS_HOOK_REPLAY__) try {\n\t\ttarget.__VUE_DEVTOOLS_HOOK_REPLAY__.forEach((cb) => cb(_devtoolsHook));\n\t\ttarget.__VUE_DEVTOOLS_HOOK_REPLAY__ = [];\n\t} catch (e) {\n\t\tconsole.error(\"[vue-devtools] Error during hook replay\", e);\n\t}\n\t_devtoolsHook.once(\"init\", (Vue) => {\n\t\ttarget.__VUE_DEVTOOLS_VUE2_APP_DETECTED__ = true;\n\t\tconsole.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n\t\tconsole.log(\"%cVue DevTools v7 detected in your Vue2 project. v7 only supports Vue3 and will not work.\", \"font-bold: 500; font-size: 14px;\");\n\t\tconst legacyChromeUrl = \"https://chromewebstore.google.com/detail/vuejs-devtools/iaajmlceplecbljialhhkmedjlpdblhp\";\n\t\tconst legacyFirefoxUrl = \"https://addons.mozilla.org/firefox/addon/vue-js-devtools-v6-legacy\";\n\t\tconsole.log(`%cThe legacy version of chrome extension that supports both Vue 2 and Vue 3 has been moved to %c ${legacyChromeUrl}`, \"font-size: 14px;\", \"text-decoration: underline; cursor: pointer;font-size: 14px;\");\n\t\tconsole.log(`%cThe legacy version of firefox extension that supports both Vue 2 and Vue 3 has been moved to %c ${legacyFirefoxUrl}`, \"font-size: 14px;\", \"text-decoration: underline; cursor: pointer;font-size: 14px;\");\n\t\tconsole.log(\"%cPlease install and enable only the legacy version for your Vue2 app.\", \"font-bold: 500; font-size: 14px;\");\n\t\tconsole.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n\t});\n\thook.on.setupDevtoolsPlugin((pluginDescriptor, setupFn) => {\n\t\taddDevToolsPluginToBuffer(pluginDescriptor, setupFn);\n\t\tconst { app } = activeAppRecord ?? {};\n\t\tif (pluginDescriptor.settings) initPluginSettings(pluginDescriptor.id, pluginDescriptor.settings);\n\t\tif (!app) return;\n\t\tcallDevToolsPluginSetupFn([pluginDescriptor, setupFn], app);\n\t});\n\tonLegacyDevToolsPluginApiAvailable(() => {\n\t\tdevtoolsPluginBuffer.filter(([item]) => item.id !== \"components\").forEach(([pluginDescriptor, setupFn]) => {\n\t\t\t_devtoolsHook.emit(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn, { target: \"legacy\" });\n\t\t});\n\t});\n\thook.on.vueAppInit(async (app, version, types) => {\n\t\tconst normalizedAppRecord = {\n\t\t\t...createAppRecord(app, types),\n\t\t\tapp,\n\t\t\tversion\n\t\t};\n\t\taddDevToolsAppRecord(normalizedAppRecord);\n\t\tif (devtoolsAppRecords.value.length === 1) {\n\t\t\tsetActiveAppRecord(normalizedAppRecord);\n\t\t\tsetActiveAppRecordId(normalizedAppRecord.id);\n\t\t\tnormalizeRouterInfo(normalizedAppRecord, activeAppRecord);\n\t\t\tregisterDevToolsPlugin(normalizedAppRecord.app);\n\t\t}\n\t\tsetupDevToolsPlugin(...createComponentsDevToolsPlugin(normalizedAppRecord.app));\n\t\tupdateDevToolsState({ connected: true });\n\t\t_devtoolsHook.apps.push(app);\n\t});\n\thook.on.vueAppUnmount(async (app) => {\n\t\tconst activeRecords = devtoolsAppRecords.value.filter((appRecord) => appRecord.app !== app);\n\t\tif (activeRecords.length === 0) updateDevToolsState({ connected: false });\n\t\tremoveDevToolsAppRecord(app);\n\t\tremoveAppRecordId(app);\n\t\tif (activeAppRecord.value.app === app) {\n\t\t\tsetActiveAppRecord(activeRecords[0]);\n\t\t\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT);\n\t\t}\n\t\ttarget.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.splice(target.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.indexOf(app), 1);\n\t\tremoveRegisteredPluginApp(app);\n\t});\n\tsubscribeDevToolsHook(_devtoolsHook);\n\tif (!target.__VUE_DEVTOOLS_GLOBAL_HOOK__) Object.defineProperty(target, \"__VUE_DEVTOOLS_GLOBAL_HOOK__\", {\n\t\tget() {\n\t\t\treturn _devtoolsHook;\n\t\t},\n\t\tconfigurable: true\n\t});\n\telse if (!isNuxtApp) Object.assign(__VUE_DEVTOOLS_GLOBAL_HOOK__, _devtoolsHook);\n}\nfunction onDevToolsClientConnected(fn) {\n\treturn new Promise((resolve) => {\n\t\tif (devtoolsState.connected && devtoolsState.clientConnected) {\n\t\t\tfn();\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tdevtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => {\n\t\t\tif (state.connected && state.clientConnected) {\n\t\t\t\tfn();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n}\n\n//#endregion\n//#region src/core/high-perf-mode/index.ts\nfunction toggleHighPerfMode(state) {\n\tdevtoolsState.highPerfModeEnabled = state ?? !devtoolsState.highPerfModeEnabled;\n\tif (!state && activeAppRecord.value) registerDevToolsPlugin(activeAppRecord.value.app);\n}\n\n//#endregion\n//#region src/core/component/state/reviver.ts\nfunction reviveSet(val) {\n\tconst result = /* @__PURE__ */ new Set();\n\tconst list = val._custom.value;\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst value = list[i];\n\t\tresult.add(revive(value));\n\t}\n\treturn result;\n}\nfunction reviveMap(val) {\n\tconst result = /* @__PURE__ */ new Map();\n\tconst list = val._custom.value;\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst { key, value } = list[i];\n\t\tresult.set(key, revive(value));\n\t}\n\treturn result;\n}\nfunction revive(val) {\n\tif (val === UNDEFINED) return;\n\telse if (val === INFINITY) return Number.POSITIVE_INFINITY;\n\telse if (val === NEGATIVE_INFINITY) return Number.NEGATIVE_INFINITY;\n\telse if (val === NAN) return NaN;\n\telse if (val && val._custom) {\n\t\tconst { _custom: custom } = val;\n\t\tif (custom.type === \"component\") return activeAppRecord.value.instanceMap.get(custom.id);\n\t\telse if (custom.type === \"map\") return reviveMap(val);\n\t\telse if (custom.type === \"set\") return reviveSet(val);\n\t\telse if (custom.type === \"bigint\") return BigInt(custom.value);\n\t\telse return revive(custom.value);\n\t} else if (symbolRE.test(val)) {\n\t\tconst [, string] = symbolRE.exec(val);\n\t\treturn Symbol.for(string);\n\t} else if (specialTypeRE.test(val)) {\n\t\tconst [, type, string, , details] = specialTypeRE.exec(val);\n\t\tconst result = new target[type](string);\n\t\tif (type === \"Error\" && details) result.stack = details;\n\t\treturn result;\n\t} else return val;\n}\nfunction reviver(key, value) {\n\treturn revive(value);\n}\n\n//#endregion\n//#region src/core/component/state/format.ts\nfunction getInspectorStateValueType(value, raw = true) {\n\tconst type = typeof value;\n\tif (value == null || value === UNDEFINED || value === \"undefined\") return \"null\";\n\telse if (type === \"boolean\" || type === \"number\" || value === INFINITY || value === NEGATIVE_INFINITY || value === NAN) return \"literal\";\n\telse if (value?._custom) if (raw || value._custom.display != null || value._custom.displayText != null) return \"custom\";\n\telse return getInspectorStateValueType(value._custom.value);\n\telse if (typeof value === \"string\") {\n\t\tconst typeMatch = specialTypeRE.exec(value);\n\t\tif (typeMatch) {\n\t\t\tconst [, type$1] = typeMatch;\n\t\t\treturn `native ${type$1}`;\n\t\t} else return \"string\";\n\t} else if (Array.isArray(value) || value?._isArray) return \"array\";\n\telse if (isPlainObject(value)) return \"plain-object\";\n\telse return \"unknown\";\n}\nfunction formatInspectorStateValue(value, quotes = false, options) {\n\tconst { customClass } = options ?? {};\n\tlet result;\n\tconst type = getInspectorStateValueType(value, false);\n\tif (type !== \"custom\" && value?._custom) value = value._custom.value;\n\tif (result = internalStateTokenToString(value)) return result;\n\telse if (type === \"custom\") return value._custom.value?._custom && formatInspectorStateValue(value._custom.value, quotes, options) || value._custom.displayText || value._custom.display;\n\telse if (type === \"array\") return `Array[${value.length}]`;\n\telse if (type === \"plain-object\") return `Object${Object.keys(value).length ? \"\" : \" (empty)\"}`;\n\telse if (type?.includes(\"native\")) return escape(specialTypeRE.exec(value)?.[2]);\n\telse if (typeof value === \"string\") {\n\t\tconst typeMatch = value.match(rawTypeRE);\n\t\tif (typeMatch) value = escapeString(typeMatch[1]);\n\t\telse if (quotes) value = `<span>\"</span>${customClass?.string ? `<span class=${customClass.string}>${escapeString(value)}</span>` : escapeString(value)}<span>\"</span>`;\n\t\telse value = customClass?.string ? `<span class=\"${customClass?.string ?? \"\"}\">${escapeString(value)}</span>` : escapeString(value);\n\t}\n\treturn value;\n}\nfunction escapeString(value) {\n\treturn escape(value).replace(/ /g, \"&nbsp;\").replace(/\\n/g, \"<span>\\\\n</span>\");\n}\nfunction getRaw(value) {\n\tlet customType;\n\tconst isCustom = getInspectorStateValueType(value) === \"custom\";\n\tlet inherit = {};\n\tif (isCustom) {\n\t\tconst data = value;\n\t\tconst customValue = data._custom?.value;\n\t\tconst currentCustomType = data._custom?.type;\n\t\tconst nestedCustom = typeof customValue === \"object\" && customValue !== null && \"_custom\" in customValue ? getRaw(customValue) : {\n\t\t\tinherit: void 0,\n\t\t\tvalue: void 0,\n\t\t\tcustomType: void 0\n\t\t};\n\t\tinherit = nestedCustom.inherit || data._custom?.fields || {};\n\t\tvalue = nestedCustom.value || customValue;\n\t\tcustomType = nestedCustom.customType || currentCustomType;\n\t}\n\tif (value && value._isArray) value = value.items;\n\treturn {\n\t\tvalue,\n\t\tinherit,\n\t\tcustomType\n\t};\n}\nfunction toEdit(value, customType) {\n\tif (customType === \"bigint\") return value;\n\tif (customType === \"date\") return value;\n\treturn replaceTokenToString(JSON.stringify(value));\n}\nfunction toSubmit(value, customType) {\n\tif (customType === \"bigint\") return BigInt(value);\n\tif (customType === \"date\") return new Date(value);\n\treturn JSON.parse(replaceStringToToken(value), reviver);\n}\n\n//#endregion\n//#region src/core/devtools-client/detected.ts\nfunction updateDevToolsClientDetected(params) {\n\tdevtoolsState.devtoolsClientDetected = {\n\t\t...devtoolsState.devtoolsClientDetected,\n\t\t...params\n\t};\n\ttoggleHighPerfMode(!Object.values(devtoolsState.devtoolsClientDetected).some(Boolean));\n}\ntarget.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__ ??= updateDevToolsClientDetected;\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/double-indexed-kv.js\nvar DoubleIndexedKV = class {\n\tconstructor() {\n\t\tthis.keyToValue = /* @__PURE__ */ new Map();\n\t\tthis.valueToKey = /* @__PURE__ */ new Map();\n\t}\n\tset(key, value) {\n\t\tthis.keyToValue.set(key, value);\n\t\tthis.valueToKey.set(value, key);\n\t}\n\tgetByKey(key) {\n\t\treturn this.keyToValue.get(key);\n\t}\n\tgetByValue(value) {\n\t\treturn this.valueToKey.get(value);\n\t}\n\tclear() {\n\t\tthis.keyToValue.clear();\n\t\tthis.valueToKey.clear();\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/registry.js\nvar Registry = class {\n\tconstructor(generateIdentifier) {\n\t\tthis.generateIdentifier = generateIdentifier;\n\t\tthis.kv = new DoubleIndexedKV();\n\t}\n\tregister(value, identifier) {\n\t\tif (this.kv.getByValue(value)) return;\n\t\tif (!identifier) identifier = this.generateIdentifier(value);\n\t\tthis.kv.set(identifier, value);\n\t}\n\tclear() {\n\t\tthis.kv.clear();\n\t}\n\tgetIdentifier(value) {\n\t\treturn this.kv.getByValue(value);\n\t}\n\tgetValue(identifier) {\n\t\treturn this.kv.getByKey(identifier);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/class-registry.js\nvar ClassRegistry = class extends Registry {\n\tconstructor() {\n\t\tsuper((c) => c.name);\n\t\tthis.classToAllowedProps = /* @__PURE__ */ new Map();\n\t}\n\tregister(value, options) {\n\t\tif (typeof options === \"object\") {\n\t\t\tif (options.allowProps) this.classToAllowedProps.set(value, options.allowProps);\n\t\t\tsuper.register(value, options.identifier);\n\t\t} else super.register(value, options);\n\t}\n\tgetAllowedProps(value) {\n\t\treturn this.classToAllowedProps.get(value);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/util.js\nfunction valuesOfObj(record) {\n\tif (\"values\" in Object) return Object.values(record);\n\tconst values = [];\n\tfor (const key in record) if (record.hasOwnProperty(key)) values.push(record[key]);\n\treturn values;\n}\nfunction find(record, predicate) {\n\tconst values = valuesOfObj(record);\n\tif (\"find\" in values) return values.find(predicate);\n\tconst valuesNotNever = values;\n\tfor (let i = 0; i < valuesNotNever.length; i++) {\n\t\tconst value = valuesNotNever[i];\n\t\tif (predicate(value)) return value;\n\t}\n}\nfunction forEach(record, run) {\n\tObject.entries(record).forEach(([key, value]) => run(value, key));\n}\nfunction includes(arr, value) {\n\treturn arr.indexOf(value) !== -1;\n}\nfunction findArr(record, predicate) {\n\tfor (let i = 0; i < record.length; i++) {\n\t\tconst value = record[i];\n\t\tif (predicate(value)) return value;\n\t}\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/custom-transformer-registry.js\nvar CustomTransformerRegistry = class {\n\tconstructor() {\n\t\tthis.transfomers = {};\n\t}\n\tregister(transformer) {\n\t\tthis.transfomers[transformer.name] = transformer;\n\t}\n\tfindApplicable(v) {\n\t\treturn find(this.transfomers, (transformer) => transformer.isApplicable(v));\n\t}\n\tfindByName(name) {\n\t\treturn this.transfomers[name];\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/is.js\nconst getType$1 = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nconst isUndefined$1 = (payload) => typeof payload === \"undefined\";\nconst isNull$1 = (payload) => payload === null;\nconst isPlainObject$2 = (payload) => {\n\tif (typeof payload !== \"object\" || payload === null) return false;\n\tif (payload === Object.prototype) return false;\n\tif (Object.getPrototypeOf(payload) === null) return true;\n\treturn Object.getPrototypeOf(payload) === Object.prototype;\n};\nconst isEmptyObject = (payload) => isPlainObject$2(payload) && Object.keys(payload).length === 0;\nconst isArray$2 = (payload) => Array.isArray(payload);\nconst isString = (payload) => typeof payload === \"string\";\nconst isNumber = (payload) => typeof payload === \"number\" && !isNaN(payload);\nconst isBoolean = (payload) => typeof payload === \"boolean\";\nconst isRegExp = (payload) => payload instanceof RegExp;\nconst isMap = (payload) => payload instanceof Map;\nconst isSet = (payload) => payload instanceof Set;\nconst isSymbol = (payload) => getType$1(payload) === \"Symbol\";\nconst isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nconst isError = (payload) => payload instanceof Error;\nconst isNaNValue = (payload) => typeof payload === \"number\" && isNaN(payload);\nconst isPrimitive = (payload) => isBoolean(payload) || isNull$1(payload) || isUndefined$1(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\nconst isBigint = (payload) => typeof payload === \"bigint\";\nconst isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nconst isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nconst isURL = (payload) => payload instanceof URL;\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/pathstringifier.js\nconst escapeKey = (key) => key.replace(/\\./g, \"\\\\.\");\nconst stringifyPath = (path) => path.map(String).map(escapeKey).join(\".\");\nconst parsePath = (string) => {\n\tconst result = [];\n\tlet segment = \"\";\n\tfor (let i = 0; i < string.length; i++) {\n\t\tlet char = string.charAt(i);\n\t\tif (char === \"\\\\\" && string.charAt(i + 1) === \".\") {\n\t\t\tsegment += \".\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \".\") {\n\t\t\tresult.push(segment);\n\t\t\tsegment = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tsegment += char;\n\t}\n\tconst lastSegment = segment;\n\tresult.push(lastSegment);\n\treturn result;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/transformer.js\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n\treturn {\n\t\tisApplicable,\n\t\tannotation,\n\t\ttransform,\n\t\tuntransform\n\t};\n}\nconst simpleRules = [\n\tsimpleTransformation(isUndefined$1, \"undefined\", () => null, () => void 0),\n\tsimpleTransformation(isBigint, \"bigint\", (v) => v.toString(), (v) => {\n\t\tif (typeof BigInt !== \"undefined\") return BigInt(v);\n\t\tconsole.error(\"Please add a BigInt polyfill.\");\n\t\treturn v;\n\t}),\n\tsimpleTransformation(isDate, \"Date\", (v) => v.toISOString(), (v) => new Date(v)),\n\tsimpleTransformation(isError, \"Error\", (v, superJson) => {\n\t\tconst baseError = {\n\t\t\tname: v.name,\n\t\t\tmessage: v.message\n\t\t};\n\t\tsuperJson.allowedErrorProps.forEach((prop) => {\n\t\t\tbaseError[prop] = v[prop];\n\t\t});\n\t\treturn baseError;\n\t}, (v, superJson) => {\n\t\tconst e = new Error(v.message);\n\t\te.name = v.name;\n\t\te.stack = v.stack;\n\t\tsuperJson.allowedErrorProps.forEach((prop) => {\n\t\t\te[prop] = v[prop];\n\t\t});\n\t\treturn e;\n\t}),\n\tsimpleTransformation(isRegExp, \"regexp\", (v) => \"\" + v, (regex) => {\n\t\tconst body = regex.slice(1, regex.lastIndexOf(\"/\"));\n\t\tconst flags = regex.slice(regex.lastIndexOf(\"/\") + 1);\n\t\treturn new RegExp(body, flags);\n\t}),\n\tsimpleTransformation(isSet, \"set\", (v) => [...v.values()], (v) => new Set(v)),\n\tsimpleTransformation(isMap, \"map\", (v) => [...v.entries()], (v) => new Map(v)),\n\tsimpleTransformation((v) => isNaNValue(v) || isInfinite(v), \"number\", (v) => {\n\t\tif (isNaNValue(v)) return \"NaN\";\n\t\tif (v > 0) return \"Infinity\";\n\t\telse return \"-Infinity\";\n\t}, Number),\n\tsimpleTransformation((v) => v === 0 && 1 / v === -Infinity, \"number\", () => {\n\t\treturn \"-0\";\n\t}, Number),\n\tsimpleTransformation(isURL, \"URL\", (v) => v.toString(), (v) => new URL(v))\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n\treturn {\n\t\tisApplicable,\n\t\tannotation,\n\t\ttransform,\n\t\tuntransform\n\t};\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n\tif (isSymbol(s)) return !!superJson.symbolRegistry.getIdentifier(s);\n\treturn false;\n}, (s, superJson) => {\n\treturn [\"symbol\", superJson.symbolRegistry.getIdentifier(s)];\n}, (v) => v.description, (_, a, superJson) => {\n\tconst value = superJson.symbolRegistry.getValue(a[1]);\n\tif (!value) throw new Error(\"Trying to deserialize unknown symbol\");\n\treturn value;\n});\nconst constructorToName = [\n\tInt8Array,\n\tUint8Array,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tUint8ClampedArray\n].reduce((obj, ctor) => {\n\tobj[ctor.name] = ctor;\n\treturn obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, (v) => [\"typed-array\", v.constructor.name], (v) => [...v], (v, a) => {\n\tconst ctor = constructorToName[a[1]];\n\tif (!ctor) throw new Error(\"Trying to deserialize unknown typed array\");\n\treturn new ctor(v);\n});\nfunction isInstanceOfRegisteredClass(potentialClass, superJson) {\n\tif (potentialClass?.constructor) return !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n\treturn false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n\treturn [\"class\", superJson.classRegistry.getIdentifier(clazz.constructor)];\n}, (clazz, superJson) => {\n\tconst allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n\tif (!allowedProps) return { ...clazz };\n\tconst result = {};\n\tallowedProps.forEach((prop) => {\n\t\tresult[prop] = clazz[prop];\n\t});\n\treturn result;\n}, (v, a, superJson) => {\n\tconst clazz = superJson.classRegistry.getValue(a[1]);\n\tif (!clazz) throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n\treturn Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n\treturn !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n\treturn [\"custom\", superJson.customTransformerRegistry.findApplicable(value).name];\n}, (value, superJson) => {\n\treturn superJson.customTransformerRegistry.findApplicable(value).serialize(value);\n}, (v, a, superJson) => {\n\tconst transformer = superJson.customTransformerRegistry.findByName(a[1]);\n\tif (!transformer) throw new Error(\"Trying to deserialize unknown custom value\");\n\treturn transformer.deserialize(v);\n});\nconst compositeRules = [\n\tclassRule,\n\tsymbolRule,\n\tcustomRule,\n\ttypedArrayRule\n];\nconst transformValue = (value, superJson) => {\n\tconst applicableCompositeRule = findArr(compositeRules, (rule) => rule.isApplicable(value, superJson));\n\tif (applicableCompositeRule) return {\n\t\tvalue: applicableCompositeRule.transform(value, superJson),\n\t\ttype: applicableCompositeRule.annotation(value, superJson)\n\t};\n\tconst applicableSimpleRule = findArr(simpleRules, (rule) => rule.isApplicable(value, superJson));\n\tif (applicableSimpleRule) return {\n\t\tvalue: applicableSimpleRule.transform(value, superJson),\n\t\ttype: applicableSimpleRule.annotation\n\t};\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach((rule) => {\n\tsimpleRulesByAnnotation[rule.annotation] = rule;\n});\nconst untransformValue = (json, type, superJson) => {\n\tif (isArray$2(type)) switch (type[0]) {\n\t\tcase \"symbol\": return symbolRule.untransform(json, type, superJson);\n\t\tcase \"class\": return classRule.untransform(json, type, superJson);\n\t\tcase \"custom\": return customRule.untransform(json, type, superJson);\n\t\tcase \"typed-array\": return typedArrayRule.untransform(json, type, superJson);\n\t\tdefault: throw new Error(\"Unknown transformation: \" + type);\n\t}\n\telse {\n\t\tconst transformation = simpleRulesByAnnotation[type];\n\t\tif (!transformation) throw new Error(\"Unknown transformation: \" + type);\n\t\treturn transformation.untransform(json, superJson);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/accessDeep.js\nconst getNthKey = (value, n) => {\n\tif (n > value.size) throw new Error(\"index out of bounds\");\n\tconst keys = value.keys();\n\twhile (n > 0) {\n\t\tkeys.next();\n\t\tn--;\n\t}\n\treturn keys.next().value;\n};\nfunction validatePath(path) {\n\tif (includes(path, \"__proto__\")) throw new Error(\"__proto__ is not allowed as a property\");\n\tif (includes(path, \"prototype\")) throw new Error(\"prototype is not allowed as a property\");\n\tif (includes(path, \"constructor\")) throw new Error(\"constructor is not allowed as a property\");\n}\nconst getDeep = (object, path) => {\n\tvalidatePath(path);\n\tfor (let i = 0; i < path.length; i++) {\n\t\tconst key = path[i];\n\t\tif (isSet(object)) object = getNthKey(object, +key);\n\t\telse if (isMap(object)) {\n\t\t\tconst row = +key;\n\t\t\tconst type = +path[++i] === 0 ? \"key\" : \"value\";\n\t\t\tconst keyOfRow = getNthKey(object, row);\n\t\t\tswitch (type) {\n\t\t\t\tcase \"key\":\n\t\t\t\t\tobject = keyOfRow;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"value\":\n\t\t\t\t\tobject = object.get(keyOfRow);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else object = object[key];\n\t}\n\treturn object;\n};\nconst setDeep = (object, path, mapper) => {\n\tvalidatePath(path);\n\tif (path.length === 0) return mapper(object);\n\tlet parent = object;\n\tfor (let i = 0; i < path.length - 1; i++) {\n\t\tconst key = path[i];\n\t\tif (isArray$2(parent)) {\n\t\t\tconst index = +key;\n\t\t\tparent = parent[index];\n\t\t} else if (isPlainObject$2(parent)) parent = parent[key];\n\t\telse if (isSet(parent)) {\n\t\t\tconst row = +key;\n\t\t\tparent = getNthKey(parent, row);\n\t\t} else if (isMap(parent)) {\n\t\t\tif (i === path.length - 2) break;\n\t\t\tconst row = +key;\n\t\t\tconst type = +path[++i] === 0 ? \"key\" : \"value\";\n\t\t\tconst keyOfRow = getNthKey(parent, row);\n\t\t\tswitch (type) {\n\t\t\t\tcase \"key\":\n\t\t\t\t\tparent = keyOfRow;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"value\":\n\t\t\t\t\tparent = parent.get(keyOfRow);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tconst lastKey = path[path.length - 1];\n\tif (isArray$2(parent)) parent[+lastKey] = mapper(parent[+lastKey]);\n\telse if (isPlainObject$2(parent)) parent[lastKey] = mapper(parent[lastKey]);\n\tif (isSet(parent)) {\n\t\tconst oldValue = getNthKey(parent, +lastKey);\n\t\tconst newValue = mapper(oldValue);\n\t\tif (oldValue !== newValue) {\n\t\t\tparent.delete(oldValue);\n\t\t\tparent.add(newValue);\n\t\t}\n\t}\n\tif (isMap(parent)) {\n\t\tconst row = +path[path.length - 2];\n\t\tconst keyToRow = getNthKey(parent, row);\n\t\tswitch (+lastKey === 0 ? \"key\" : \"value\") {\n\t\t\tcase \"key\": {\n\t\t\t\tconst newKey = mapper(keyToRow);\n\t\t\t\tparent.set(newKey, parent.get(keyToRow));\n\t\t\t\tif (newKey !== keyToRow) parent.delete(keyToRow);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"value\":\n\t\t\t\tparent.set(keyToRow, mapper(parent.get(keyToRow)));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn object;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/plainer.js\nfunction traverse(tree, walker$1, origin = []) {\n\tif (!tree) return;\n\tif (!isArray$2(tree)) {\n\t\tforEach(tree, (subtree, key) => traverse(subtree, walker$1, [...origin, ...parsePath(key)]));\n\t\treturn;\n\t}\n\tconst [nodeValue, children] = tree;\n\tif (children) forEach(children, (child, key) => {\n\t\ttraverse(child, walker$1, [...origin, ...parsePath(key)]);\n\t});\n\twalker$1(nodeValue, origin);\n}\nfunction applyValueAnnotations(plain, annotations, superJson) {\n\ttraverse(annotations, (type, path) => {\n\t\tplain = setDeep(plain, path, (v) => untransformValue(v, type, superJson));\n\t});\n\treturn plain;\n}\nfunction applyReferentialEqualityAnnotations(plain, annotations) {\n\tfunction apply(identicalPaths, path) {\n\t\tconst object = getDeep(plain, parsePath(path));\n\t\tidenticalPaths.map(parsePath).forEach((identicalObjectPath) => {\n\t\t\tplain = setDeep(plain, identicalObjectPath, () => object);\n\t\t});\n\t}\n\tif (isArray$2(annotations)) {\n\t\tconst [root, other] = annotations;\n\t\troot.forEach((identicalPath) => {\n\t\t\tplain = setDeep(plain, parsePath(identicalPath), () => plain);\n\t\t});\n\t\tif (other) forEach(other, apply);\n\t} else forEach(annotations, apply);\n\treturn plain;\n}\nconst isDeep = (object, superJson) => isPlainObject$2(object) || isArray$2(object) || isMap(object) || isSet(object) || isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n\tconst existingSet = identities.get(object);\n\tif (existingSet) existingSet.push(path);\n\telse identities.set(object, [path]);\n}\nfunction generateReferentialEqualityAnnotations(identitites, dedupe) {\n\tconst result = {};\n\tlet rootEqualityPaths = void 0;\n\tidentitites.forEach((paths) => {\n\t\tif (paths.length <= 1) return;\n\t\tif (!dedupe) paths = paths.map((path) => path.map(String)).sort((a, b) => a.length - b.length);\n\t\tconst [representativePath, ...identicalPaths] = paths;\n\t\tif (representativePath.length === 0) rootEqualityPaths = identicalPaths.map(stringifyPath);\n\t\telse result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n\t});\n\tif (rootEqualityPaths) if (isEmptyObject(result)) return [rootEqualityPaths];\n\telse return [rootEqualityPaths, result];\n\telse return isEmptyObject(result) ? void 0 : result;\n}\nconst walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => {\n\tconst primitive = isPrimitive(object);\n\tif (!primitive) {\n\t\taddIdentity(object, path, identities);\n\t\tconst seen = seenObjects.get(object);\n\t\tif (seen) return dedupe ? { transformedValue: null } : seen;\n\t}\n\tif (!isDeep(object, superJson)) {\n\t\tconst transformed$1 = transformValue(object, superJson);\n\t\tconst result$1 = transformed$1 ? {\n\t\t\ttransformedValue: transformed$1.value,\n\t\t\tannotations: [transformed$1.type]\n\t\t} : { transformedValue: object };\n\t\tif (!primitive) seenObjects.set(object, result$1);\n\t\treturn result$1;\n\t}\n\tif (includes(objectsInThisPath, object)) return { transformedValue: null };\n\tconst transformationResult = transformValue(object, superJson);\n\tconst transformed = transformationResult?.value ?? object;\n\tconst transformedValue = isArray$2(transformed) ? [] : {};\n\tconst innerAnnotations = {};\n\tforEach(transformed, (value, index) => {\n\t\tif (index === \"__proto__\" || index === \"constructor\" || index === \"prototype\") throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n\t\tconst recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n\t\ttransformedValue[index] = recursiveResult.transformedValue;\n\t\tif (isArray$2(recursiveResult.annotations)) innerAnnotations[index] = recursiveResult.annotations;\n\t\telse if (isPlainObject$2(recursiveResult.annotations)) forEach(recursiveResult.annotations, (tree, key) => {\n\t\t\tinnerAnnotations[escapeKey(index) + \".\" + key] = tree;\n\t\t});\n\t});\n\tconst result = isEmptyObject(innerAnnotations) ? {\n\t\ttransformedValue,\n\t\tannotations: !!transformationResult ? [transformationResult.type] : void 0\n\t} : {\n\t\ttransformedValue,\n\t\tannotations: !!transformationResult ? [transformationResult.type, innerAnnotations] : innerAnnotations\n\t};\n\tif (!primitive) seenObjects.set(object, result);\n\treturn result;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/is-what@4.1.16/node_modules/is-what/dist/index.js\nfunction getType(payload) {\n\treturn Object.prototype.toString.call(payload).slice(8, -1);\n}\nfunction isArray$1(payload) {\n\treturn getType(payload) === \"Array\";\n}\nfunction isPlainObject$1(payload) {\n\tif (getType(payload) !== \"Object\") return false;\n\tconst prototype = Object.getPrototypeOf(payload);\n\treturn !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\nfunction isNull(payload) {\n\treturn getType(payload) === \"Null\";\n}\nfunction isOneOf(a, b, c, d, e) {\n\treturn (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);\n}\nfunction isUndefined(payload) {\n\treturn getType(payload) === \"Undefined\";\n}\nconst isNullOrUndefined = isOneOf(isNull, isUndefined);\n\n//#endregion\n//#region ../../node_modules/.pnpm/copy-anything@3.0.5/node_modules/copy-anything/dist/index.js\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n\tconst propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n\tif (propType === \"enumerable\") carry[key] = newVal;\n\tif (includeNonenumerable && propType === \"nonenumerable\") Object.defineProperty(carry, key, {\n\t\tvalue: newVal,\n\t\tenumerable: false,\n\t\twritable: true,\n\t\tconfigurable: true\n\t});\n}\nfunction copy(target$1, options = {}) {\n\tif (isArray$1(target$1)) return target$1.map((item) => copy(item, options));\n\tif (!isPlainObject$1(target$1)) return target$1;\n\tconst props = Object.getOwnPropertyNames(target$1);\n\tconst symbols = Object.getOwnPropertySymbols(target$1);\n\treturn [...props, ...symbols].reduce((carry, key) => {\n\t\tif (isArray$1(options.props) && !options.props.includes(key)) return carry;\n\t\tconst val = target$1[key];\n\t\tassignProp(carry, key, copy(val, options), target$1, options.nonenumerable);\n\t\treturn carry;\n\t}, {});\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/index.js\nvar SuperJSON = class {\n\t/**\n\t* @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n\t*/\n\tconstructor({ dedupe = false } = {}) {\n\t\tthis.classRegistry = new ClassRegistry();\n\t\tthis.symbolRegistry = new Registry((s) => s.description ?? \"\");\n\t\tthis.customTransformerRegistry = new CustomTransformerRegistry();\n\t\tthis.allowedErrorProps = [];\n\t\tthis.dedupe = dedupe;\n\t}\n\tserialize(object) {\n\t\tconst identities = /* @__PURE__ */ new Map();\n\t\tconst output = walker(object, identities, this, this.dedupe);\n\t\tconst res = { json: output.transformedValue };\n\t\tif (output.annotations) res.meta = {\n\t\t\t...res.meta,\n\t\t\tvalues: output.annotations\n\t\t};\n\t\tconst equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n\t\tif (equalityAnnotations) res.meta = {\n\t\t\t...res.meta,\n\t\t\treferentialEqualities: equalityAnnotations\n\t\t};\n\t\treturn res;\n\t}\n\tdeserialize(payload) {\n\t\tconst { json, meta } = payload;\n\t\tlet result = copy(json);\n\t\tif (meta?.values) result = applyValueAnnotations(result, meta.values, this);\n\t\tif (meta?.referentialEqualities) result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities);\n\t\treturn result;\n\t}\n\tstringify(object) {\n\t\treturn JSON.stringify(this.serialize(object));\n\t}\n\tparse(string) {\n\t\treturn this.deserialize(JSON.parse(string));\n\t}\n\tregisterClass(v, options) {\n\t\tthis.classRegistry.register(v, options);\n\t}\n\tregisterSymbol(v, identifier) {\n\t\tthis.symbolRegistry.register(v, identifier);\n\t}\n\tregisterCustom(transformer, name) {\n\t\tthis.customTransformerRegistry.register({\n\t\t\tname,\n\t\t\t...transformer\n\t\t});\n\t}\n\tallowErrorProps(...props) {\n\t\tthis.allowedErrorProps.push(...props);\n\t}\n};\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nconst serialize = SuperJSON.serialize;\nconst deserialize = SuperJSON.deserialize;\nconst stringify$1 = SuperJSON.stringify;\nconst parse$1 = SuperJSON.parse;\nconst registerClass = SuperJSON.registerClass;\nconst registerCustom = SuperJSON.registerCustom;\nconst registerSymbol = SuperJSON.registerSymbol;\nconst allowErrorProps = SuperJSON.allowErrorProps;\n\n//#endregion\n//#region src/messaging/presets/broadcast-channel/context.ts\nconst __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY = \"__devtools-kit-broadcast-messaging-event-key__\";\n\n//#endregion\n//#region src/messaging/presets/broadcast-channel/index.ts\nconst BROADCAST_CHANNEL_NAME = \"__devtools-kit:broadcast-channel__\";\nfunction createBroadcastChannel() {\n\tconst channel = new BroadcastChannel(BROADCAST_CHANNEL_NAME);\n\treturn {\n\t\tpost: (data) => {\n\t\t\tchannel.postMessage(SuperJSON.stringify({\n\t\t\t\tevent: __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY,\n\t\t\t\tdata\n\t\t\t}));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tchannel.onmessage = (event) => {\n\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\tif (parsed.event === __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/context.ts\nconst __ELECTRON_CLIENT_CONTEXT__ = \"electron:client-context\";\nconst __ELECTRON_RPOXY_CONTEXT__ = \"electron:proxy-context\";\nconst __ELECTRON_SERVER_CONTEXT__ = \"electron:server-context\";\nconst __DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__ = {\n\tCLIENT_TO_PROXY: \"client->proxy\",\n\tPROXY_TO_CLIENT: \"proxy->client\",\n\tPROXY_TO_SERVER: \"proxy->server\",\n\tSERVER_TO_PROXY: \"server->proxy\"\n};\nfunction getElectronClientContext() {\n\treturn target[__ELECTRON_CLIENT_CONTEXT__];\n}\nfunction setElectronClientContext(context) {\n\ttarget[__ELECTRON_CLIENT_CONTEXT__] = context;\n}\nfunction getElectronProxyContext() {\n\treturn target[__ELECTRON_RPOXY_CONTEXT__];\n}\nfunction setElectronProxyContext(context) {\n\ttarget[__ELECTRON_RPOXY_CONTEXT__] = context;\n}\nfunction getElectronServerContext() {\n\treturn target[__ELECTRON_SERVER_CONTEXT__];\n}\nfunction setElectronServerContext(context) {\n\ttarget[__ELECTRON_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/electron/client.ts\nfunction createElectronClientChannel() {\n\tconst socket = getElectronClientContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tsocket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, (e) => {\n\t\t\t\thandler(SuperJSON.parse(e));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/proxy.ts\nfunction createElectronProxyChannel() {\n\tconst socket = getElectronProxyContext();\n\treturn {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, (data) => {\n\t\t\t\tsocket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, data);\n\t\t\t});\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, (data) => {\n\t\t\t\tsocket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, data);\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/server.ts\nfunction createElectronServerChannel() {\n\tconst socket = getElectronServerContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tsocket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, (data) => {\n\t\t\t\thandler(SuperJSON.parse(data));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/context.ts\nconst __EXTENSION_CLIENT_CONTEXT__ = \"electron:client-context\";\nconst __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__ = {\n\tCLIENT_TO_PROXY: \"client->proxy\",\n\tPROXY_TO_CLIENT: \"proxy->client\",\n\tPROXY_TO_SERVER: \"proxy->server\",\n\tSERVER_TO_PROXY: \"server->proxy\"\n};\nfunction getExtensionClientContext() {\n\treturn target[__EXTENSION_CLIENT_CONTEXT__];\n}\nfunction setExtensionClientContext(context) {\n\ttarget[__EXTENSION_CLIENT_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/extension/client.ts\nfunction createExtensionClientChannel() {\n\tlet disconnected = false;\n\tlet port = null;\n\tlet reconnectTimer = null;\n\tlet onMessageHandler = null;\n\tfunction connect() {\n\t\ttry {\n\t\t\tclearTimeout(reconnectTimer);\n\t\t\tport = chrome.runtime.connect({ name: `${chrome.devtools.inspectedWindow.tabId}` });\n\t\t\tsetExtensionClientContext(port);\n\t\t\tdisconnected = false;\n\t\t\tport?.onMessage.addListener(onMessageHandler);\n\t\t\tport.onDisconnect.addListener(() => {\n\t\t\t\tdisconnected = true;\n\t\t\t\tport?.onMessage.removeListener(onMessageHandler);\n\t\t\t\treconnectTimer = setTimeout(connect, 1e3);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tdisconnected = true;\n\t\t}\n\t}\n\tconnect();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tif (disconnected) return;\n\t\t\tport?.postMessage(SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tonMessageHandler = (data) => {\n\t\t\t\tif (disconnected) return;\n\t\t\t\thandler(SuperJSON.parse(data));\n\t\t\t};\n\t\t\tport?.onMessage.addListener(onMessageHandler);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/proxy.ts\nfunction createExtensionProxyChannel() {\n\tconst port = chrome.runtime.connect({ name: \"content-script\" });\n\tfunction sendMessageToUserApp(payload) {\n\t\twindow.postMessage({\n\t\t\tsource: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER,\n\t\t\tpayload\n\t\t}, \"*\");\n\t}\n\tfunction sendMessageToDevToolsClient(e) {\n\t\tif (e.data && e.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY) try {\n\t\t\tport.postMessage(e.data.payload);\n\t\t} catch (e$1) {}\n\t}\n\tport.onMessage.addListener(sendMessageToUserApp);\n\twindow.addEventListener(\"message\", sendMessageToDevToolsClient);\n\tport.onDisconnect.addListener(() => {\n\t\twindow.removeEventListener(\"message\", sendMessageToDevToolsClient);\n\t\tsendMessageToUserApp(SuperJSON.stringify({ event: \"shutdown\" }));\n\t});\n\tsendMessageToUserApp(SuperJSON.stringify({ event: \"init\" }));\n\treturn {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/server.ts\nfunction createExtensionServerChannel() {\n\treturn {\n\t\tpost: (data) => {\n\t\t\twindow.postMessage({\n\t\t\t\tsource: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY,\n\t\t\t\tpayload: SuperJSON.stringify(data)\n\t\t\t}, \"*\");\n\t\t},\n\t\ton: (handler) => {\n\t\t\tconst listener = (event) => {\n\t\t\t\tif (event.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER && event.data.payload) handler(SuperJSON.parse(event.data.payload));\n\t\t\t};\n\t\t\twindow.addEventListener(\"message\", listener);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener(\"message\", listener);\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/context.ts\nconst __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY = \"__devtools-kit-iframe-messaging-event-key__\";\nconst __IFRAME_SERVER_CONTEXT__ = \"iframe:server-context\";\nfunction getIframeServerContext() {\n\treturn target[__IFRAME_SERVER_CONTEXT__];\n}\nfunction setIframeServerContext(context) {\n\ttarget[__IFRAME_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/client.ts\nfunction createIframeClientChannel() {\n\tif (!isBrowser) return {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n\treturn {\n\t\tpost: (data) => window.parent.postMessage(SuperJSON.stringify({\n\t\t\tevent: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n\t\t\tdata\n\t\t}), \"*\"),\n\t\ton: (handler) => window.addEventListener(\"message\", (event) => {\n\t\t\ttry {\n\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\tif (event.source === window.parent && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t} catch (e) {}\n\t\t})\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/server.ts\nfunction createIframeServerChannel() {\n\tif (!isBrowser) return {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n\treturn {\n\t\tpost: (data) => {\n\t\t\tgetIframeServerContext()?.contentWindow?.postMessage(SuperJSON.stringify({\n\t\t\t\tevent: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n\t\t\t\tdata\n\t\t\t}), \"*\");\n\t\t},\n\t\ton: (handler) => {\n\t\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\t\tconst iframe = getIframeServerContext();\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\t\tif (event.source === iframe?.contentWindow && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/vite/context.ts\nconst __DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY = \"__devtools-kit-vite-messaging-event-key__\";\nconst __VITE_CLIENT_CONTEXT__ = \"vite:client-context\";\nconst __VITE_SERVER_CONTEXT__ = \"vite:server-context\";\nfunction getViteClientContext() {\n\treturn target[__VITE_CLIENT_CONTEXT__];\n}\nfunction setViteClientContext(context) {\n\ttarget[__VITE_CLIENT_CONTEXT__] = context;\n}\nfunction getViteServerContext() {\n\treturn target[__VITE_SERVER_CONTEXT__];\n}\nfunction setViteServerContext(context) {\n\ttarget[__VITE_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/vite/client.ts\nfunction createViteClientChannel() {\n\tconst client = getViteClientContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tclient?.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tclient?.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n\t\t\t\thandler(SuperJSON.parse(event));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/vite/server.ts\nfunction createViteServerChannel() {\n\tconst viteServer = getViteServerContext();\n\tconst ws = viteServer.hot ?? viteServer.ws;\n\treturn {\n\t\tpost: (data) => ws?.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data)),\n\t\ton: (handler) => ws?.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n\t\t\thandler(SuperJSON.parse(event));\n\t\t})\n\t};\n}\n\n//#endregion\n//#region src/messaging/index.ts\ntarget.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_RPC_SERVER__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__ ??= null;\nfunction setRpcClientToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ = rpc;\n}\nfunction setRpcServerToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_RPC_SERVER__ = rpc;\n}\nfunction getRpcClient() {\n\treturn target.__VUE_DEVTOOLS_KIT_RPC_CLIENT__;\n}\nfunction getRpcServer() {\n\treturn target.__VUE_DEVTOOLS_KIT_RPC_SERVER__;\n}\nfunction setViteRpcClientToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ = rpc;\n}\nfunction setViteRpcServerToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ = rpc;\n}\nfunction getViteRpcClient() {\n\treturn target.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__;\n}\nfunction getViteRpcServer() {\n\treturn target.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__;\n}\nfunction getChannel(preset, host = \"client\") {\n\tconst channel = {\n\t\tiframe: {\n\t\t\tclient: createIframeClientChannel,\n\t\t\tserver: createIframeServerChannel\n\t\t}[host],\n\t\telectron: {\n\t\t\tclient: createElectronClientChannel,\n\t\t\tproxy: createElectronProxyChannel,\n\t\t\tserver: createElectronServerChannel\n\t\t}[host],\n\t\tvite: {\n\t\t\tclient: createViteClientChannel,\n\t\t\tserver: createViteServerChannel\n\t\t}[host],\n\t\tbroadcast: {\n\t\t\tclient: createBroadcastChannel,\n\t\t\tserver: createBroadcastChannel\n\t\t}[host],\n\t\textension: {\n\t\t\tclient: createExtensionClientChannel,\n\t\t\tproxy: createExtensionProxyChannel,\n\t\t\tserver: createExtensionServerChannel\n\t\t}[host]\n\t}[preset];\n\treturn channel();\n}\nfunction createRpcClient(functions, options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset) : _channel;\n\tconst rpc = createBirpc(functions, {\n\t\t..._options,\n\t\t...channel,\n\t\ttimeout: -1\n\t});\n\tif (preset === \"vite\") {\n\t\tsetViteRpcClientToGlobal(rpc);\n\t\treturn;\n\t}\n\tsetRpcClientToGlobal(rpc);\n\treturn rpc;\n}\nfunction createRpcServer(functions, options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset, \"server\") : _channel;\n\tconst rpcServer = getRpcServer();\n\tif (!rpcServer) {\n\t\tconst group = createBirpcGroup(functions, [channel], {\n\t\t\t..._options,\n\t\t\ttimeout: -1\n\t\t});\n\t\tif (preset === \"vite\") {\n\t\t\tsetViteRpcServerToGlobal(group);\n\t\t\treturn;\n\t\t}\n\t\tsetRpcServerToGlobal(group);\n\t} else rpcServer.updateChannels((channels) => {\n\t\tchannels.push(channel);\n\t});\n}\nfunction createRpcProxy(options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset, \"proxy\") : _channel;\n\treturn createBirpc({}, {\n\t\t..._options,\n\t\t...channel,\n\t\ttimeout: -1\n\t});\n}\n\n//#endregion\n//#region src/core/component/state/custom.ts\nfunction getFunctionDetails(func) {\n\tlet string = \"\";\n\tlet matches = null;\n\ttry {\n\t\tstring = Function.prototype.toString.call(func);\n\t\tmatches = String.prototype.match.call(string, /\\([\\s\\S]*?\\)/);\n\t} catch (e) {}\n\tconst match = matches && matches[0];\n\tconst args = typeof match === \"string\" ? match : \"(?)\";\n\treturn { _custom: {\n\t\ttype: \"function\",\n\t\tdisplayText: `<span style=\"opacity:.8;margin-right:5px;\">function</span> <span style=\"white-space:nowrap;\">${escape(typeof func.name === \"string\" ? func.name : \"\")}${args}</span>`,\n\t\ttooltipText: string.trim() ? `<pre>${string}</pre>` : null\n\t} };\n}\nfunction getBigIntDetails(val) {\n\tconst stringifiedBigInt = BigInt.prototype.toString.call(val);\n\treturn { _custom: {\n\t\ttype: \"bigint\",\n\t\tdisplayText: `BigInt(${stringifiedBigInt})`,\n\t\tvalue: stringifiedBigInt\n\t} };\n}\nfunction getDateDetails(val) {\n\tconst date = new Date(val.getTime());\n\tdate.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n\treturn { _custom: {\n\t\ttype: \"date\",\n\t\tdisplayText: Date.prototype.toString.call(val),\n\t\tvalue: date.toISOString().slice(0, -1)\n\t} };\n}\nfunction getMapDetails(val) {\n\treturn { _custom: {\n\t\ttype: \"map\",\n\t\tdisplayText: \"Map\",\n\t\tvalue: Object.fromEntries(val),\n\t\treadOnly: true,\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getSetDetails(val) {\n\tconst list = Array.from(val);\n\treturn { _custom: {\n\t\ttype: \"set\",\n\t\tdisplayText: `Set[${list.length}]`,\n\t\tvalue: list,\n\t\treadOnly: true\n\t} };\n}\nfunction getCaughtGetters(store) {\n\tconst getters = {};\n\tconst origGetters = store.getters || {};\n\tconst keys = Object.keys(origGetters);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tObject.defineProperty(getters, key, {\n\t\t\tenumerable: true,\n\t\t\tget: () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn origGetters[key];\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn getters;\n}\nfunction reduceStateList(list) {\n\tif (!list.length) return void 0;\n\treturn list.reduce((map, item) => {\n\t\tconst key = item.type || \"data\";\n\t\tconst obj = map[key] = map[key] || {};\n\t\tobj[item.key] = item.value;\n\t\treturn map;\n\t}, {});\n}\nfunction namedNodeMapToObject(map) {\n\tconst result = {};\n\tconst l = map.length;\n\tfor (let i = 0; i < l; i++) {\n\t\tconst node = map.item(i);\n\t\tresult[node.name] = node.value;\n\t}\n\treturn result;\n}\nfunction getStoreDetails(store) {\n\treturn { _custom: {\n\t\ttype: \"store\",\n\t\tdisplayText: \"Store\",\n\t\tvalue: {\n\t\t\tstate: store.state,\n\t\t\tgetters: getCaughtGetters(store)\n\t\t},\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getRouterDetails(router) {\n\treturn { _custom: {\n\t\ttype: \"router\",\n\t\tdisplayText: \"VueRouter\",\n\t\tvalue: {\n\t\t\toptions: router.options,\n\t\t\tcurrentRoute: router.currentRoute\n\t\t},\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getInstanceDetails(instance) {\n\tif (instance._) instance = instance._;\n\tconst state = processInstanceState(instance);\n\treturn { _custom: {\n\t\ttype: \"component\",\n\t\tid: instance.__VUE_DEVTOOLS_NEXT_UID__,\n\t\tdisplayText: getInstanceName(instance),\n\t\ttooltipText: \"Component instance\",\n\t\tvalue: reduceStateList(state),\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getComponentDefinitionDetails(definition) {\n\tlet display = getComponentName(definition);\n\tif (display) {\n\t\tif (definition.name && definition.__file) display += ` <span>(${definition.__file})</span>`;\n\t} else display = \"<i>Unknown Component</i>\";\n\treturn { _custom: {\n\t\ttype: \"component-definition\",\n\t\tdisplayText: display,\n\t\ttooltipText: \"Component definition\",\n\t\t...definition.__file ? { file: definition.__file } : {}\n\t} };\n}\nfunction getHTMLElementDetails(value) {\n\ttry {\n\t\treturn { _custom: {\n\t\t\ttype: \"HTMLElement\",\n\t\t\tdisplayText: `<span class=\"opacity-30\">&lt;</span><span class=\"text-blue-500\">${value.tagName.toLowerCase()}</span><span class=\"opacity-30\">&gt;</span>`,\n\t\t\tvalue: namedNodeMapToObject(value.attributes)\n\t\t} };\n\t} catch (e) {\n\t\treturn { _custom: {\n\t\t\ttype: \"HTMLElement\",\n\t\t\tdisplayText: `<span class=\"text-blue-500\">${String(value)}</span>`\n\t\t} };\n\t}\n}\n/**\n* - ObjectRefImpl, toRef({ foo: 'foo' }, 'foo'), `_value` is the actual value, (since 3.5.0)\n* - GetterRefImpl, toRef(() => state.foo), `_value` is the actual value, (since 3.5.0)\n* - RefImpl, ref('foo') / computed(() => 'foo'), `_value` is the actual value\n*/\nfunction tryGetRefValue(ref) {\n\tif (ensurePropertyExists(ref, \"_value\", true)) return ref._value;\n\tif (ensurePropertyExists(ref, \"value\", true)) return ref.value;\n}\nfunction getObjectDetails(object) {\n\tconst info = getSetupStateType(object);\n\tif (info.ref || info.computed || info.reactive) {\n\t\tconst stateTypeName = info.computed ? \"Computed\" : info.ref ? \"Ref\" : info.reactive ? \"Reactive\" : null;\n\t\tconst value = toRaw(info.reactive ? object : tryGetRefValue(object));\n\t\tconst raw = ensurePropertyExists(object, \"effect\") ? object.effect?.raw?.toString() || object.effect?.fn?.toString() : null;\n\t\treturn { _custom: {\n\t\t\ttype: stateTypeName?.toLowerCase(),\n\t\t\tstateTypeName,\n\t\t\tvalue,\n\t\t\t...raw ? { tooltipText: `<span class=\"font-mono\">${raw}</span>` } : {}\n\t\t} };\n\t}\n\tif (ensurePropertyExists(object, \"__asyncLoader\") && typeof object.__asyncLoader === \"function\") return { _custom: {\n\t\ttype: \"component-definition\",\n\t\tdisplay: \"Async component definition\"\n\t} };\n}\n\n//#endregion\n//#region src/core/component/state/replacer.ts\nfunction stringifyReplacer(key, _value, depth, seenInstance) {\n\tif (key === \"compilerOptions\") return;\n\tconst val = this[key];\n\tconst type = typeof val;\n\tif (Array.isArray(val)) {\n\t\tconst l = val.length;\n\t\tif (l > MAX_ARRAY_SIZE) return {\n\t\t\t_isArray: true,\n\t\t\tlength: l,\n\t\t\titems: val.slice(0, MAX_ARRAY_SIZE)\n\t\t};\n\t\treturn val;\n\t} else if (typeof val === \"string\") if (val.length > MAX_STRING_SIZE) return `${val.substring(0, MAX_STRING_SIZE)}... (${val.length} total length)`;\n\telse return val;\n\telse if (type === \"undefined\") return UNDEFINED;\n\telse if (val === Number.POSITIVE_INFINITY) return INFINITY;\n\telse if (val === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n\telse if (typeof val === \"function\") return getFunctionDetails(val);\n\telse if (type === \"symbol\") return `[native Symbol ${Symbol.prototype.toString.call(val)}]`;\n\telse if (typeof val === \"bigint\") return getBigIntDetails(val);\n\telse if (val !== null && typeof val === \"object\") {\n\t\tconst proto = Object.prototype.toString.call(val);\n\t\tif (proto === \"[object Map]\") return getMapDetails(val);\n\t\telse if (proto === \"[object Set]\") return getSetDetails(val);\n\t\telse if (proto === \"[object RegExp]\") return `[native RegExp ${RegExp.prototype.toString.call(val)}]`;\n\t\telse if (proto === \"[object Date]\") return getDateDetails(val);\n\t\telse if (proto === \"[object Error]\") return `[native Error ${val.message}<>${val.stack}]`;\n\t\telse if (ensurePropertyExists(val, \"state\", true) && ensurePropertyExists(val, \"_vm\", true)) return getStoreDetails(val);\n\t\telse if (val.constructor && val.constructor.name === \"VueRouter\") return getRouterDetails(val);\n\t\telse if (isVueInstance(val)) {\n\t\t\tconst componentVal = getInstanceDetails(val);\n\t\t\tconst parentInstanceDepth = seenInstance?.get(val);\n\t\t\tif (parentInstanceDepth && parentInstanceDepth < depth) return `[[CircularRef]] <${componentVal._custom.displayText}>`;\n\t\t\tseenInstance?.set(val, depth);\n\t\t\treturn componentVal;\n\t\t} else if (ensurePropertyExists(val, \"render\", true) && typeof val.render === \"function\") return getComponentDefinitionDetails(val);\n\t\telse if (val.constructor && val.constructor.name === \"VNode\") return `[native VNode <${val.tag}>]`;\n\t\telse if (typeof HTMLElement !== \"undefined\" && val instanceof HTMLElement) return getHTMLElementDetails(val);\n\t\telse if (val.constructor?.name === \"Store\" && \"_wrappedGetters\" in val) return \"[object Store]\";\n\t\telse if (ensurePropertyExists(val, \"currentRoute\", true)) return \"[object Router]\";\n\t\tconst customDetails = getObjectDetails(val);\n\t\tif (customDetails != null) return customDetails;\n\t} else if (Number.isNaN(val)) return NAN;\n\treturn sanitize(val);\n}\n\n//#endregion\n//#region src/shared/transfer.ts\nconst MAX_SERIALIZED_SIZE = 2 * 1024 * 1024;\nfunction isObject(_data, proto) {\n\treturn proto === \"[object Object]\";\n}\nfunction isArray(_data, proto) {\n\treturn proto === \"[object Array]\";\n}\nfunction isVueReactiveLinkNode(node) {\n\tconst constructorName = node?.constructor?.name;\n\treturn constructorName === \"Dep\" && \"activeLink\" in node || constructorName === \"Link\" && \"dep\" in node;\n}\n/**\n* This function is used to serialize object with handling circular references.\n*\n* ```ts\n* const obj = { a: 1, b: { c: 2 }, d: obj }\n* const result = stringifyCircularAutoChunks(obj) // call `encode` inside\n* console.log(result) // [{\"a\":1,\"b\":2,\"d\":0},1,{\"c\":4},2]\n* ```\n*\n* Each object is stored in a list and the index is used to reference the object.\n* With seen map, we can check if the object is already stored in the list to avoid circular references.\n*\n* Note: here we have a special case for Vue instance.\n* We check if a vue instance includes itself in its properties and skip it\n* by using `seenVueInstance` and `depth` to avoid infinite loop.\n*/\nfunction encode(data, replacer, list, seen, depth = 0, seenVueInstance = /* @__PURE__ */ new Map()) {\n\tlet stored;\n\tlet key;\n\tlet value;\n\tlet i;\n\tlet l;\n\tconst seenIndex = seen.get(data);\n\tif (seenIndex != null) return seenIndex;\n\tconst index = list.length;\n\tconst proto = Object.prototype.toString.call(data);\n\tif (isObject(data, proto)) {\n\t\tif (isVueReactiveLinkNode(data)) return index;\n\t\tstored = {};\n\t\tseen.set(data, index);\n\t\tlist.push(stored);\n\t\tconst keys = Object.keys(data);\n\t\tfor (i = 0, l = keys.length; i < l; i++) {\n\t\t\tkey = keys[i];\n\t\t\tif (key === \"compilerOptions\") return index;\n\t\t\tvalue = data[key];\n\t\t\tconst isVm = value != null && isObject(value, Object.prototype.toString.call(data)) && isVueInstance(value);\n\t\t\ttry {\n\t\t\t\tif (replacer) value = replacer.call(data, key, value, depth, seenVueInstance);\n\t\t\t} catch (e) {\n\t\t\t\tvalue = e;\n\t\t\t}\n\t\t\tstored[key] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n\t\t\tif (isVm) seenVueInstance.delete(value);\n\t\t}\n\t} else if (isArray(data, proto)) {\n\t\tstored = [];\n\t\tseen.set(data, index);\n\t\tlist.push(stored);\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttry {\n\t\t\t\tvalue = data[i];\n\t\t\t\tif (replacer) value = replacer.call(data, i, value, depth, seenVueInstance);\n\t\t\t} catch (e) {\n\t\t\t\tvalue = e;\n\t\t\t}\n\t\t\tstored[i] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n\t\t}\n\t} else list.push(data);\n\treturn index;\n}\nfunction decode(list, reviver$1 = null) {\n\tlet i = list.length;\n\tlet j, k, data, key, value, proto;\n\twhile (i--) {\n\t\tdata = list[i];\n\t\tproto = Object.prototype.toString.call(data);\n\t\tif (proto === \"[object Object]\") {\n\t\t\tconst keys = Object.keys(data);\n\t\t\tfor (j = 0, k = keys.length; j < k; j++) {\n\t\t\t\tkey = keys[j];\n\t\t\t\tvalue = list[data[key]];\n\t\t\t\tif (reviver$1) value = reviver$1.call(data, key, value);\n\t\t\t\tdata[key] = value;\n\t\t\t}\n\t\t} else if (proto === \"[object Array]\") for (j = 0, k = data.length; j < k; j++) {\n\t\t\tvalue = list[data[j]];\n\t\t\tif (reviver$1) value = reviver$1.call(data, j, value);\n\t\t\tdata[j] = value;\n\t\t}\n\t}\n}\nfunction stringifyCircularAutoChunks(data, replacer = null, space = null) {\n\tlet result;\n\ttry {\n\t\tresult = arguments.length === 1 ? JSON.stringify(data) : JSON.stringify(data, (k, v) => replacer?.(k, v)?.call(this), space);\n\t} catch (e) {\n\t\tresult = stringifyStrictCircularAutoChunks(data, replacer, space);\n\t}\n\tif (result.length > MAX_SERIALIZED_SIZE) {\n\t\tconst chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE);\n\t\tconst chunks = [];\n\t\tfor (let i = 0; i < chunkCount; i++) chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE));\n\t\treturn chunks;\n\t}\n\treturn result;\n}\nfunction stringifyStrictCircularAutoChunks(data, replacer = null, space = null) {\n\tconst list = [];\n\tencode(data, replacer, list, /* @__PURE__ */ new Map());\n\treturn space ? ` ${JSON.stringify(list, null, space)}` : ` ${JSON.stringify(list)}`;\n}\nfunction parseCircularAutoChunks(data, reviver$1 = null) {\n\tif (Array.isArray(data)) data = data.join(\"\");\n\tif (!/^\\s/.test(data)) return arguments.length === 1 ? JSON.parse(data) : JSON.parse(data, reviver$1);\n\telse {\n\t\tconst list = JSON.parse(data);\n\t\tdecode(list, reviver$1);\n\t\treturn list[0];\n\t}\n}\n\n//#endregion\n//#region src/shared/util.ts\nfunction stringify(data) {\n\treturn stringifyCircularAutoChunks(data, stringifyReplacer);\n}\nfunction parse(data, revive$1 = false) {\n\tif (data == void 0) return {};\n\treturn revive$1 ? parseCircularAutoChunks(data, reviver) : parseCircularAutoChunks(data);\n}\n\n//#endregion\n//#region src/index.ts\nconst devtools = {\n\thook,\n\tinit: () => {\n\t\tinitDevTools();\n\t},\n\tget ctx() {\n\t\treturn devtoolsContext;\n\t},\n\tget api() {\n\t\treturn devtoolsContext.api;\n\t}\n};\n\n//#endregion\nexport { DevToolsContextHookKeys, DevToolsMessagingHookKeys, DevToolsV6PluginAPIHookKeys, INFINITY, NAN, NEGATIVE_INFINITY, ROUTER_INFO_KEY, ROUTER_KEY, UNDEFINED, activeAppRecord, addCustomCommand, addCustomTab, addDevToolsAppRecord, addDevToolsPluginToBuffer, addInspector, callConnectedUpdatedHook, callDevToolsPluginSetupFn, callInspectorUpdatedHook, callStateUpdatedHook, createComponentsDevToolsPlugin, createDevToolsApi, createDevToolsCtxHooks, createRpcClient, createRpcProxy, createRpcServer, devtools, devtoolsAppRecords, devtoolsContext, devtoolsInspector, devtoolsPluginBuffer, devtoolsRouter, devtoolsRouterInfo, devtoolsState, escape, formatInspectorStateValue, getActiveInspectors, getDevToolsEnv, getExtensionClientContext, getInspector, getInspectorActions, getInspectorInfo, getInspectorNodeActions, getInspectorStateValueType, getRaw, getRpcClient, getRpcServer, getViteRpcClient, getViteRpcServer, initDevTools, isPlainObject, onDevToolsClientConnected, onDevToolsConnected, parse, registerDevToolsPlugin, removeCustomCommand, removeDevToolsAppRecord, removeRegisteredPluginApp, resetDevToolsState, setActiveAppRecord, setActiveAppRecordId, setDevToolsEnv, setElectronClientContext, setElectronProxyContext, setElectronServerContext, setExtensionClientContext, setIframeServerContext, setOpenInEditorBaseUrl, setRpcServerToGlobal, setViteClientContext, setViteRpcClientToGlobal, setViteRpcServerToGlobal, setViteServerContext, setupDevToolsPlugin, stringify, toEdit, toSubmit, toggleClientConnected, toggleComponentInspectorEnabled, toggleHighPerfMode, updateDevToolsClientDetected, updateDevToolsState, updateTimelineLayersState };","import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { watch } from 'vue'\nimport type { App } from 'vue'\nimport type { Pinia } from 'pinia'\nimport { useQueryCache } from '../query-store'\nimport type { AsyncStatus, DataStateStatus } from '../data-state'\n\nconst QUERY_INSPECTOR_ID = 'pinia-colada-queries'\nconst ID_SEPARATOR = '\\0'\n\nfunction debounce(fn: () => void, delay: number) {\n let timeout: ReturnType<typeof setTimeout>\n return () => {\n clearTimeout(timeout)\n timeout = setTimeout(fn, delay)\n }\n}\n\nexport function addDevtools(app: App, pinia: Pinia) {\n const queryCache = useQueryCache(pinia)\n\n setupDevtoolsPlugin(\n {\n id: 'dev.esm.pinia-colada',\n app,\n label: 'Pinia Colada',\n packageName: 'pinia-colada',\n homepage: 'https://pinia-colada.esm.dev/',\n logo: 'https://pinia-colada.esm.dev/logo.svg',\n componentStateTypes: [],\n },\n (api) => {\n const updateQueryInspectorTree = debounce(() => {\n api.sendInspectorTree(QUERY_INSPECTOR_ID)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n }, 100)\n\n api.addInspector({\n id: QUERY_INSPECTOR_ID,\n label: 'Pinia Queries',\n icon: 'storage',\n noSelectionText: 'Select a query entry to inspect it',\n treeFilterPlaceholder: 'Filter query entries',\n stateFilterPlaceholder: 'Find within the query entry',\n actions: [\n {\n icon: 'refresh',\n action: updateQueryInspectorTree,\n tooltip: 'Sync',\n },\n ],\n })\n\n let stopWatcher = () => {}\n\n api.on.getInspectorState((payload) => {\n if (payload.app !== app) return\n if (payload.inspectorId === QUERY_INSPECTOR_ID) {\n const entry = queryCache.getEntries({\n key: payload.nodeId.split(ID_SEPARATOR),\n exact: true,\n })[0]\n if (!entry) {\n payload.state = {\n Error: [\n {\n key: 'error',\n value: new Error(`Query entry ${payload.nodeId} not found`),\n editable: false,\n },\n ],\n }\n return\n }\n\n stopWatcher()\n stopWatcher = watch(\n () => [entry.state.value, entry.asyncStatus.value],\n () => {\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n },\n )\n\n const state = entry.state.value\n\n payload.state = {\n state: [\n { key: 'data', value: state.data, editable: true },\n { key: 'error', value: state.error, editable: true },\n { key: 'status', value: state.status, editable: true },\n { key: 'asyncStatus', value: entry.asyncStatus.value, editable: true },\n ],\n entry: [\n { key: 'key', value: entry.key, editable: false },\n { key: 'options', value: entry.options, editable: true },\n ],\n }\n }\n })\n\n api.on.editInspectorState((payload) => {\n if (payload.app !== app) return\n if (payload.inspectorId === QUERY_INSPECTOR_ID) {\n const entry = queryCache.getEntries({\n key: payload.nodeId.split(ID_SEPARATOR),\n exact: true,\n })[0]\n if (!entry) return\n const path = payload.path.slice()\n payload.set(entry, path, payload.state.value)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n }\n })\n\n const QUERY_FILTER_RE = /\\b(active|inactive|stale|fresh|exact|loading|idle)\\b/gi\n\n api.on.getInspectorTree((payload) => {\n if (payload.app !== app || payload.inspectorId !== QUERY_INSPECTOR_ID) return\n\n const filters = payload.filter.match(QUERY_FILTER_RE)\n // strip the filters from the query\n const filter = (\n filters ? payload.filter.replace(QUERY_FILTER_RE, '') : payload.filter\n ).trim()\n\n const active = filters?.includes('active')\n ? true\n : filters?.includes('inactive')\n ? false\n : undefined\n const stale = filters?.includes('stale')\n ? true\n : filters?.includes('fresh')\n ? false\n : undefined\n const asyncStatus = filters?.includes('loading')\n ? 'loading'\n : filters?.includes('idle')\n ? 'idle'\n : undefined\n\n payload.rootNodes = queryCache\n .getEntries({\n active,\n stale,\n // TODO: if there is an exact match, we should put it at the top\n exact: false, // we also filter many\n predicate(entry) {\n // filter out by asyncStatus\n if (asyncStatus && entry.asyncStatus.value !== asyncStatus) return false\n if (filter) {\n // TODO: fuzzy match between entry.key.join('/') and the filter\n return entry.key.some((key) => String(key).includes(filter))\n }\n return true\n },\n })\n .map((entry) => {\n const id = entry.key.join(ID_SEPARATOR)\n const label = entry.key.join('/')\n const asyncStatus = entry.asyncStatus.value\n const state = entry.state.value\n\n const tags: InspectorNodeTag[] = [\n ASYNC_STATUS_TAG[asyncStatus],\n STATUS_TAG[state.status],\n // useful for testing colors\n // ASYNC_STATUS_TAG.idle,\n // ASYNC_STATUS_TAG.fetching,\n // STATUS_TAG.pending,\n // STATUS_TAG.success,\n // STATUS_TAG.error,\n ]\n if (!entry.active) {\n tags.push({\n label: 'inactive',\n textColor: 0,\n backgroundColor: 0xaa_aa_aa,\n tooltip: 'The query is not being used anywhere',\n })\n }\n return {\n id,\n label,\n name: label,\n tags,\n }\n })\n })\n\n queryCache.$onAction(({ name, after, onError }) => {\n if (\n name === 'invalidate' || // includes cancel\n name === 'fetch' || // includes refresh\n name === 'setEntryState' || // includes set data\n name === 'remove' ||\n name === 'untrack' ||\n name === 'track' ||\n name === 'ensure' // includes create\n ) {\n updateQueryInspectorTree()\n after(updateQueryInspectorTree)\n onError(updateQueryInspectorTree)\n }\n })\n\n // update the devtools too\n api.notifyComponentUpdate()\n api.sendInspectorTree(QUERY_INSPECTOR_ID)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n },\n )\n\n // TODO: custom tab?\n\n // addCustomTab({\n // name: 'pinia-colada',\n // title: 'Pinia Colada',\n // icon: 'https://pinia-colada.esm.dev/logo.svg',\n // view: {\n // type: 'iframe',\n // src: '//localhost:',\n // persistent: true,\n // // type: 'vnode',\n // // sfc: DevtoolsPanel,\n // // type: 'vnode',\n // // vnode: h(DevtoolsPane),\n // // vnode: h('p', ['hello world']),\n // // vnode: createVNode(DevtoolsPane),\n // },\n // category: 'modules',\n // })\n\n // window.addEventListener('message', (event) => {\n // const data = event.data\n // if (data != null && typeof data === 'object' && data.id === 'pinia-colada-devtools') {\n // console.log('message', event)\n // }\n // })\n}\n\ninterface InspectorNodeTag {\n label: string\n textColor: number\n backgroundColor: number\n tooltip?: string\n}\n\n/**\n * Tags for the different states of a query\n */\nconst STATUS_TAG: Record<DataStateStatus, InspectorNodeTag> = {\n pending: {\n label: 'pending',\n textColor: 0,\n backgroundColor: 0xff_9d_23,\n tooltip: `The query hasn't resolved yet`,\n },\n success: {\n label: 'success',\n textColor: 0,\n backgroundColor: 0x16_c4_7f,\n tooltip: 'The query resolved successfully',\n },\n error: {\n label: 'error',\n textColor: 0,\n backgroundColor: 0xf9_38_27,\n tooltip: 'The query rejected with an error',\n },\n}\n\n/**\n * Tags for the different states of a query\n */\nconst ASYNC_STATUS_TAG: Record<AsyncStatus, InspectorNodeTag> = {\n idle: {\n label: 'idle',\n textColor: 0,\n backgroundColor: 0xaa_aa_aa,\n tooltip: 'The query is not fetching',\n },\n loading: {\n label: 'fetching',\n textColor: 0xff_ff_ff,\n backgroundColor: 0x57_8f_ca,\n tooltip: 'The query is currently fetching',\n },\n}\n","import type { App, Plugin } from 'vue'\nimport type { Pinia } from 'pinia'\nimport type { UseQueryOptionsGlobal } from './query-options'\nimport { USE_QUERY_DEFAULTS, USE_QUERY_OPTIONS_KEY } from './query-options'\nimport { useQueryCache } from './query-store'\nimport type { PiniaColadaPlugin } from './plugins'\nimport { addDevtools } from './devtools/plugin'\nimport { USE_MUTATION_DEFAULTS, USE_MUTATION_OPTIONS_KEY } from './mutation-options'\nimport type { UseMutationOptionsGlobal } from './mutation-options'\n\n/**\n * Options for the Pinia Colada plugin.\n */\nexport interface PiniaColadaOptions {\n /**\n * Pinia instance to use. This is only needed if installing before the Pinia plugin.\n */\n pinia?: Pinia\n\n /**\n * Pinia Colada plugins to install.\n */\n plugins?: PiniaColadaPlugin[]\n\n /**\n * Global options for queries. These will apply to all `useQuery()`, `defineQuery()`, etc.\n */\n queryOptions?: UseQueryOptionsGlobal\n\n /**\n * Global options for mutations. These will apply to all `useMutation()`, `defineMutation()`, etc.\n */\n mutationOptions?: UseMutationOptionsGlobal\n}\n\n/**\n * Plugin that installs the Query and Mutation plugins alongside some extra plugins.\n *\n * @see {@link QueryPlugin} to only install the Query plugin.\n *\n * @param app - Vue App\n * @param options - Pinia Colada options\n */\nexport const PiniaColada: Plugin<[options?: PiniaColadaOptions]> = (\n app: App,\n options: PiniaColadaOptions = {},\n): void => {\n const {\n pinia = app.config.globalProperties.$pinia,\n plugins,\n queryOptions,\n mutationOptions,\n } = options\n\n app.provide(USE_QUERY_OPTIONS_KEY, {\n ...USE_QUERY_DEFAULTS,\n ...queryOptions,\n })\n\n app.provide(USE_MUTATION_OPTIONS_KEY, {\n ...USE_MUTATION_DEFAULTS,\n ...mutationOptions,\n })\n\n if (process.env.NODE_ENV !== 'production' && !pinia) {\n throw new Error(\n '[@pinia/colada] root pinia plugin not detected. Make sure you install pinia before installing the \"PiniaColada\" plugin or to manually pass the pinia instance.',\n )\n }\n\n if (typeof document !== 'undefined' && process.env.NODE_ENV === 'development') {\n addDevtools(app, pinia)\n }\n\n // install plugins\n const queryCache = useQueryCache(pinia)\n plugins?.forEach((plugin) =>\n plugin({\n scope: queryCache._s,\n queryCache,\n pinia,\n }),\n )\n}\n","import type { UseQueryEntry } from '../query-store'\nimport type { PiniaColadaPlugin } from '.'\n\n/**\n * Options for {@link PiniaColadaQueryHooksPlugin}.\n */\nexport interface PiniaColadaQueryHooksPluginOptions {\n /**\n * Global handler for when a query is successful.\n *\n * @param data - data returned by the query\n */\n onSuccess?: <TData = unknown>(data: TData, entry: UseQueryEntry<TData, unknown>) => unknown\n\n /**\n * Global handler for when a query is settled (either successfully or with an error). Will await for the `onSuccess`\n * or `onError` handlers to resolve if they return a promise.\n *\n * @param data - data returned by the query if any\n * @param error - error thrown if any\n */\n onSettled?: <TData = unknown, TError = unknown>(\n data: TData | undefined,\n error: TError | null,\n entry: UseQueryEntry<TData, TError>,\n ) => unknown\n\n /**\n * Global error handler for all queries.\n *\n * @param error - error thrown\n */\n onError?: <TError = unknown>(error: TError, entry: UseQueryEntry<unknown, TError>) => unknown\n}\n\n/**\n * Allows to add global hooks to all queries:\n * - `onSuccess`: called when a query is successful\n * - `onError`: called when a query throws an error\n * - `onSettled`: called when a query is settled (either successfully or with an error)\n * @param options - Pinia Colada Query Hooks plugin options\n *\n * @example\n * ```ts\n * import { PiniaColada, PiniaColadaQueryHooksPlugin } from '@pinia/colada'\n *\n * const app = createApp(App)\n * // app setup with other plugins\n * app.use(PiniaColada, {\n * plugins: [\n * PiniaColadaQueryHooksPlugin({\n * onError(error, entry) {\n * // ...\n * },\n * }),\n * ],\n * })\n * ```\n */\nexport function PiniaColadaQueryHooksPlugin(\n options: PiniaColadaQueryHooksPluginOptions,\n): PiniaColadaPlugin {\n return ({ queryCache }) => {\n queryCache.$onAction(({ name, after, onError, args }) => {\n if (name === 'fetch') {\n const [entry] = args\n after(async ({ data }) => {\n await options.onSuccess?.(data, entry)\n options.onSettled?.(data, null, entry)\n })\n\n onError(async (error) => {\n await options.onError?.(error, entry)\n options.onSettled?.(undefined, error, entry)\n })\n }\n })\n }\n}\n"],"x_google_ignoreList":[13,14,15,16],"mappings":"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,wBAAwC,2BAAW,EAAE,6FAA6F,WAAS,aAAW;AACzK,EAAC,SAAS,MAAM;;;;;EAKf,IAAI,UAAU;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,QAAQ;GACR,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,OAAO;GACP,MAAM;GACN,KAAK;GACL,KAAK;GACL;;;;;;EAMD,IAAI,qBAAqB,CAAC,KAAK,IAAI;;;;;EAKnC,IAAI,aAAa;GAChB,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACP,MAAM;GACN,OAAO;GACP,KAAK;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,MAAM;GACN,KAAK;GACL,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP;;;;;EAKD,IAAI,cAAc;GACjB,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD;;;;;;EAMD,IAAI,YAAY;GACf,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;I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"}
1
+ {"version":3,"file":"index.cjs","names":["key","find","USE_QUERY_OPTIONS_KEY: InjectionKey<UseQueryOptionsGlobalDefaults>","currentDefineQueryEntry: DefineQueryEntry | undefined | null","queryEntry_toJSON: <TData, TError>(\n entry: UseQueryEntry<TData, TError>,\n) => _UseQueryEntryNodeValueSerialized<TData, TError>","app: App<unknown>","create","fetch","find","options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial>","lastEntry: UseQueryEntry<TData, TError, TDataInitial>","target","entry","currentDefineQueryEffect: undefined | EffectScope","hasBeenEnsured: boolean | undefined","pages: TPage","data: TData","USE_MUTATION_OPTIONS_KEY: InjectionKey<UseMutationOptionsGlobalDefaults>","triggerCache!: () => void","create","key: EntryKey | undefined","find","currentData: TData | undefined","currentError: TError | undefined","context: OnMutateContext | OnErrorContext | OnSuccessContext","newError: unknown","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJS","__copyProps","__toESM","debounce","hooks","hook","debounce","module","exports","timeout: ReturnType<typeof setTimeout>","pinia","asyncStatus","tags: InspectorNodeTag[]","STATUS_TAG: Record<DataStateStatus, InspectorNodeTag>","ASYNC_STATUS_TAG: Record<AsyncStatus, InspectorNodeTag>","PiniaColada: Plugin<[options?: PiniaColadaOptions]>","pinia"],"sources":["../../../src/entry-keys.ts","../../../src/define-query-options.ts","../../../src/query-options.ts","../../../src/utils.ts","../../../src/query-store.ts","../../../src/use-query.ts","../../../src/define-query.ts","../../../src/use-query-state.ts","../../../src/infinite-query.ts","../../../src/mutation-options.ts","../../../src/mutation-store.ts","../../../src/use-mutation.ts","../../../src/define-mutation.ts","../../../node_modules/.pnpm/@vue+devtools-shared@8.0.5/node_modules/@vue/devtools-shared/dist/index.js","../../../node_modules/.pnpm/perfect-debounce@2.0.0/node_modules/perfect-debounce/dist/index.mjs","../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../node_modules/.pnpm/@vue+devtools-kit@8.0.5/node_modules/@vue/devtools-kit/dist/index.js","../../../src/devtools/plugin.ts","../../../src/pinia-colada.ts","../../../src/plugins/query-hooks.ts"],"sourcesContent":["import type { ErrorDefault } from './types-extension'\n\nexport function toCacheKey(key: undefined): undefined\nexport function toCacheKey(key: EntryKey): string\nexport function toCacheKey(key: EntryKey | undefined): string | undefined\n/**\n * Serializes the given {@link EntryKey | key} (query or mutation key) to a string.\n *\n * @param key - The key to serialize.\n *\n * @see {@link EntryKey}\n */\nexport function toCacheKey(key: EntryKey | undefined): string | undefined {\n return (\n key &&\n JSON.stringify(key, (_, val) =>\n !val || typeof val !== 'object' || Array.isArray(val)\n ? val\n : Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any),\n )\n )\n}\n\n/**\n * Checks whether `subsetKey` is a subset of `fullsetKey` by matching partially objects and arrays.\n *\n * @param subsetKey - subset key to check\n * @param fullsetKey - fullset key to check against\n */\nexport function isSubsetOf(subsetKey: EntryKey, fullsetKey: EntryKey): boolean {\n return subsetKey === fullsetKey\n ? true\n : typeof subsetKey !== typeof fullsetKey\n ? false\n : subsetKey && fullsetKey && typeof subsetKey === 'object' && typeof fullsetKey === 'object'\n ? Object.keys(subsetKey).every((key) =>\n isSubsetOf(\n // NOTE: this or making them `any` in the function signature\n subsetKey[key as unknown as number] as EntryKey,\n fullsetKey[key as unknown as number] as EntryKey,\n ),\n )\n : false\n}\n\n/**\n * Used for keys\n *\n * @internal\n */\nexport type JSONPrimitive = string | number | boolean | null\n\n/**\n * Used for keys\n *\n * @internal\n */\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\n\n/**\n * Used for keys. Interface to avoid deep recursion.\n *\n * @internal\n */\nexport type JSONObject = object\n// NOTE: this doesn't allow interfaces to be assigned to it due to its index signature\n// export interface JSONObject {\n// readonly [key: string]: JSONValue | undefined\n// }\n\n/**\n * Used for keys. Interface to avoid deep recursion.\n *\n * @internal\n */\nexport interface JSONArray extends Array<JSONValue> {}\n\n/**\n * Key used to identify a query or a mutation. Must be a JSON serializable\n * value. Type is unknwon to avoid annoying type errors like recursive types\n * and not being able to assign an interface to it due to its index signature.\n */\nexport type EntryKey = readonly JSONValue[]\n\n/**\n * Internal symbol used to tag the data type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_DATA_TAG = Symbol('Pinia Colada data tag')\n\n/**\n * Internal symbol used to tag the error type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_ERROR_TAG = Symbol('Pinia Colada error tag')\n\n/**\n * Internal symbol used to tag the data initial type of the entry key.\n *\n * @internal\n */\nexport const ENTRY_DATA_INITIAL_TAG = Symbol('Pinia Colada data initial tag')\n\n/**\n * Same as {@link EntryKey} but with a data tag that allows inference of the data type.\n * Used by `defineQueryOptions()`.\n */\nexport type EntryKeyTagged<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = EntryKey & {\n [ENTRY_DATA_TAG]: TData\n [ENTRY_ERROR_TAG]: TError\n [ENTRY_DATA_INITIAL_TAG]: TDataInitial\n}\n\n/**\n * Finds entries that partially match the given key. If no key is provided, all\n * entries are returned.\n *\n * @param map - The map to search in.\n * @param partialKey - The key to match against. If not provided, all entries are yield.\n *\n * @internal\n */\nexport function* find<T extends { key: EntryKey | undefined }>(\n map: Map<string | number, T>,\n partialKey?: EntryKey,\n) {\n for (const entry of map.values()) {\n if (!partialKey || (entry.key && isSubsetOf(partialKey, entry.key))) {\n yield entry\n }\n }\n}\n\n/**\n * Empty starting object for extensions that allows to detect when to update.\n *\n * @internal\n */\nexport const START_EXT = Object.freeze({})\n","import type { DefineQueryOptions } from './define-query'\nimport type { EntryKeyTagged } from './entry-keys'\nimport type { ErrorDefault } from './types-extension'\nimport { useQuery } from './use-query'\n\n/**\n * Tagged version of {@link DefineQueryOptions} that includes a key with\n * data type information.\n */\nexport interface DefineQueryOptionsTagged<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends DefineQueryOptions<TData, TError, TDataInitial> {\n key: EntryKeyTagged<TData, TError, TDataInitial>\n}\n\n/**\n * Define dynamic query options by passing a function that accepts an optional\n * arbitrary parameter and returns the query options. Enables type-safe query\n * keys. Must be passed to {@link useQuery} with or without a getter to\n * retrieve the params.\n *\n * @param setupOptions - A function that returns the query options.\n */\nexport function defineQueryOptions<\n Params,\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n setupOptions: (params?: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n): (params?: Params) => DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define dynamic query options by passing a function that accepts an arbitrary\n * parameter and returns the query options. Enables type-safe query keys.\n * Must be passed to {@link useQuery} alongside a getter for the params.\n *\n * @param setupOptions - A function that returns the query options.\n */\nexport function defineQueryOptions<\n Params,\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n): (params: Params) => DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define static query options that are type safe with\n * `queryCache.getQueryData()`. Can be passed directly to {@link useQuery}.\n *\n * @param options - The query options.\n */\nexport function defineQueryOptions<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n options: DefineQueryOptions<TData, TError, TDataInitial>,\n): DefineQueryOptionsTagged<TData, TError, TDataInitial>\n\n/**\n * Define type-safe query options. Can be static or dynamic. Define the arguments based\n * on what's needed on the query and the key. Use an object if you need\n * multiple properties.\n *\n * @param setupOrOptions - The query options or a function that returns the query options.\n *\n * @example\n * ```ts\n * import { defineQueryOptions } from '@pinia/colada'\n *\n * const documentDetailsQuery = defineQueryOptions((id: number ) => ({\n * key: ['documents', id],\n * query: () => fetchDocument(id),\n * }))\n *\n * queryCache.getQueryData(documentDetailsQuery(4).key) // typed\n * ```\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport function defineQueryOptions<const Options extends DefineQueryOptions, Params>(\n setupOrOptions: Options | ((params: Params) => Options),\n): Options | ((params: Params) => Options) {\n return setupOrOptions\n}\n","import { inject } from 'vue'\nimport type { InjectionKey, MaybeRefOrGetter } from 'vue'\nimport type { EntryKey } from './entry-keys'\nimport type { ErrorDefault, QueryMeta } from './types-extension'\n\n/**\n * Possible values for `refetchOnMount`, `refetchOnWindowFocus`, and `refetchOnReconnect`.\n * `true` refetches if data is stale (calles `refresh()`), `false` never refetches, `'always'` always refetches.\n */\nexport type RefetchOnControl = boolean | 'always'\n\n/**\n * Options for queries that can be globally overridden.\n */\nexport interface UseQueryOptionsGlobal {\n /**\n * Whether the query should be enabled or not. If `false`, the query will not\n * be executed until `refetch()` or `refresh()` is called. If it becomes\n * `true`, the query will be refreshed.\n */\n enabled?: MaybeRefOrGetter<boolean>\n\n /**\n * Time in ms after which the data is considered stale and will be refreshed\n * on next read.\n *\n * @default 5000 (5 seconds)\n */\n staleTime?: number\n\n /**\n * Time in ms after which, once the data is no longer being used, it will be\n * garbage collected to free resources. Set to `false` to disable garbage\n * collection.\n *\n * @default 300_000 (5 minutes)\n */\n gcTime?: number | false\n\n /**\n * Whether to refetch the query when the component is mounted.\n * @default true\n */\n refetchOnMount?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * Whether to refetch the query when the window regains focus.\n * @default true\n */\n refetchOnWindowFocus?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * Whether to refetch the query when the network reconnects.\n * @default true\n */\n refetchOnReconnect?: MaybeRefOrGetter<RefetchOnControl>\n\n /**\n * A placeholder data that is initially shown while the query is loading for\n * the first time. This will also show the `status` as `success` until the\n * query finishes loading (no matter the outcome of the query). Note: unlike\n * with `initialData`, the placeholder does not change the cache state.\n */\n placeholderData?: (previousData: unknown) => any // any allows us to not worry about the types when merging options\n\n /**\n * Whether to catch errors during SSR (onServerPrefetch) when the query fails.\n * @default false\n */\n ssrCatchError?: boolean\n}\n\n/**\n * Context object passed to the `query` function of `useQuery()`.\n * @see {@link UseQueryOptions}\n */\nexport interface UseQueryFnContext {\n /**\n * `AbortSignal` instance attached to the query call. If the call becomes\n * outdated (e.g. due to a new call with the same key), the signal will be\n * aborted.\n */\n signal: AbortSignal\n}\n\n/**\n * Type-only symbol to keep the type\n *\n * @internal\n */\nexport declare const tErrorSymbol: unique symbol\n\n/**\n * Options for `useQuery()`. Can be extended by plugins.\n *\n * @example\n * ```ts\n * // use-query-plugin.d.ts\n * export {} // needed\n * declare module '@pinia/colada' {\n * interface UseQueryOptions {\n * // Whether to refresh the data when the component is mounted.\n * refreshOnMount?: boolean\n * }\n * }\n * ```\n */\nexport interface UseQueryOptions<\n TData = unknown,\n // eslint-disable-next-line unused-imports/no-unused-vars\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends Pick<\n UseQueryOptionsGlobal,\n | 'gcTime'\n | 'enabled'\n | 'refetchOnMount'\n | 'refetchOnReconnect'\n | 'refetchOnWindowFocus'\n | 'staleTime'\n | 'ssrCatchError'\n> {\n /**\n * The key used to identify the query. Array of primitives **without**\n * reactive values or a reactive array or getter. It should be treaded as an\n * array of dependencies of your queries, e.g. if you use the\n * `route.params.id` property, it should also be part of the key:\n *\n * ```ts\n * import { useRoute } from 'vue-router'\n * import { useQuery } from '@pinia/colada'\n *\n * const route = useRoute()\n * const { data } = useQuery({\n * // pass a getter function (or computed, ref, etc.) to ensure reactivity\n * key: () => ['user', route.params.id],\n * query: () => fetchUser(route.params.id),\n * })\n * ```\n */\n key: MaybeRefOrGetter<EntryKey>\n\n /**\n * The function that will be called to fetch the data. It **must** be async.\n */\n query: (context: UseQueryFnContext) => Promise<TData>\n\n /**\n * The data which is initially set to the query while the query is loading\n * for the first time. Note: unlike with {@link placeholderData}, setting the\n * initial data changes the state of the query (it will be set to `success`).\n *\n * @see {@link placeholderData}\n */\n initialData?: () => TDataInitial\n\n /**\n * The timestamp (in milliseconds) when the initial data was last updated.\n * This determines the staleness of the {@link initialData}. If not provided,\n * defaults to `Date.now()` when initial data is set.\n *\n * @default Date.now() when {@link initialData} is used\n *\n * @example\n * ```ts\n * // Using a static timestamp\n * useQuery({\n * key: ['user'],\n * query: () => fetchUser(),\n * initialData: () => cachedUser,\n * initialDataUpdatedAt: 1234567890000\n * })\n *\n * // Using a function\n * useQuery({\n * key: ['user'],\n * query: () => fetchUser(),\n * initialData: () => cachedUser,\n * initialDataUpdatedAt: () => Number(localStorage.getItem('userTimestamp'))\n * })\n * ```\n */\n initialDataUpdatedAt?: number | (() => number)\n\n /**\n * A placeholder data that is initially shown while the query is loading for\n * the first time. This will also show the `status` as `success` until the\n * query finishes loading (no matter the outcome of the query). Note: unlike\n * with {@link initialData}, the placeholder does not change the cache state.\n *\n * @see {@link initialData}\n */\n placeholderData?:\n | NoInfer<TDataInitial>\n | NoInfer<TData>\n // NOTE: the generic here allows to make UseQueryOptions<T> assignable to UseQueryOptions<unknown>\n // https://www.typescriptlang.org/play/?#code/JYOwLgpgTgZghgYwgAgPIAczAPYgM4A8AKsgLzICuIA1iNgO4gB8yA3gFDLICOAXMgAoAlGRYAFKNgC2wPBGJNOydAH5eSrgHpNyABZwAbqADmyMLpRwoxilIjhkAIygQ41PMmBgNyAD6CBdBcjbAo8ABE4MDh+ADlsAEkQGGgFP0oQABMIGFAITJFSFniklKgFIR9tZCJdWWQDaDwcEGR6bCh3Kp1-AWISCAAPSCyPIiZA4JwwyOj+IhJ-KmzckHzCliJKgF92dlBIWEQUAFFwKABPYjIM2gZmNiVsTBa8fgwsXEJx9JAKABt-uxduwYFQEJ9WggAPr2MCXBQCZ6Qt5oF5fNL+P6AoT8M7wq4-DhcFxgChQVqsZDI17IXa7BBfMDIDzkNb0ZAAZQgYAI+MuE0qeAAdHBMpkBDC4ZcBMSuDx+HA8BcQAhBBtkAAWABMABofOh+AIQBrWgBCNkA-7IFTIVoAKmQ2uQ-E1wKElSAA\n | (<T extends TData>(\n previousData: T | undefined,\n ) => NoInfer<TDataInitial> | NoInfer<TData> | undefined)\n\n /**\n * Meta information associated with the query. Can be a raw object, a function\n * returning the meta object, or a ref containing the meta object.\n * The meta is resolved when the entry is **created** and stored in\n * `entry.meta`.\n *\n * **Note**: Meta is serialized during SSR, so it must be serializable (no functions,\n * class instances, or circular references). You can also completely ignore\n * it during SSR with a ternary: `meta: import.meta.ev.SSR ? {} : actualMeta`\n *\n * @example\n * ```ts\n * // SSR-safe: simple serializable data\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: { errorMessage: true }\n * })\n *\n * // Using a function to compute meta\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: () => ({ timestamp: Date.now() })\n * })\n *\n * // Skipping meta during SSR\n * useQuery({\n * key: ['user', id],\n * query: () => fetchUser(id),\n * meta: {\n * onError: import.meta.env.SSR ? undefined : ((err) => console.log('error'))\n * }\n * })\n * ```\n */\n meta?: MaybeRefOrGetter<QueryMeta>\n\n /**\n * Ghost property to ensure TError generic parameter is included in the\n * interface structure. This property should never be used directly and is\n * only for type system correctness. it could be removed in the future if the\n * type can be inferred in any other way.\n *\n * @internal\n */\n readonly [tErrorSymbol]?: TError\n}\n\n/**\n * Default options for `useQuery()`. Modifying this object will affect all the queries that don't override these\n */\nexport const USE_QUERY_DEFAULTS = {\n staleTime: 1000 * 5, // 5 seconds\n gcTime: (1000 * 60 * 5) as NonNullable<UseQueryOptions['gcTime']>, // 5 minutes\n // avoid type narrowing to `true`\n refetchOnWindowFocus: true as NonNullable<UseQueryOptions['refetchOnWindowFocus']>,\n refetchOnReconnect: true as NonNullable<UseQueryOptions['refetchOnReconnect']>,\n refetchOnMount: true as NonNullable<UseQueryOptions['refetchOnMount']>,\n enabled: true as MaybeRefOrGetter<boolean>,\n} satisfies UseQueryOptionsGlobal\n\nexport type UseQueryOptionsWithDefaults<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = UseQueryOptions<TData, TError, TDataInitial> & typeof USE_QUERY_DEFAULTS\n\n/**\n * Global default options for `useQuery()`.\n * @internal\n */\nexport type UseQueryOptionsGlobalDefaults = Pick<\n UseQueryOptionsGlobal,\n | 'gcTime'\n | 'enabled'\n | 'refetchOnMount'\n | 'refetchOnReconnect'\n | 'refetchOnWindowFocus'\n | 'staleTime'\n | 'ssrCatchError'\n> &\n typeof USE_QUERY_DEFAULTS\n\nexport const USE_QUERY_OPTIONS_KEY: InjectionKey<UseQueryOptionsGlobalDefaults> =\n process.env.NODE_ENV !== 'production' ? Symbol('useQueryOptions') : Symbol()\n\n/**\n * Injects the global query options.\n *\n * @internal\n */\nexport const useQueryOptions = (): UseQueryOptionsGlobalDefaults =>\n inject(USE_QUERY_OPTIONS_KEY, USE_QUERY_DEFAULTS)\n","import { computed, getCurrentScope, onScopeDispose } from 'vue'\nimport type { MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\n\n/**\n * Adds an event listener to Window that is automatically removed on scope dispose.\n */\nexport function useEventListener<E extends keyof WindowEventMap>(\n target: Window,\n event: E,\n listener: (this: Window, ev: WindowEventMap[E]) => any,\n options?: boolean | AddEventListenerOptions,\n): void\n\n/**\n * Adds an event listener to Document that is automatically removed on scope dispose.\n */\nexport function useEventListener<E extends keyof DocumentEventMap>(\n target: Document,\n event: E,\n listener: (this: Document, ev: DocumentEventMap[E]) => any,\n options?: boolean | AddEventListenerOptions,\n): void\n\nexport function useEventListener(\n target: Document | Window | EventTarget,\n event: string,\n listener: (this: EventTarget, ev: Event) => any,\n options?: boolean | AddEventListenerOptions,\n) {\n target.addEventListener(event, listener, options)\n if (getCurrentScope()) {\n onScopeDispose(() => {\n target.removeEventListener(event, listener)\n })\n }\n}\n\nexport const IS_CLIENT = typeof window !== 'undefined'\n\n/**\n * Type that represents a value that can be an array or a single value.\n *\n * @internal\n */\nexport type _MaybeArray<T> = T | T[]\n\n/**\n * Checks if a type is exactly `any`.\n *\n * @internal\n */\nexport type IsAny<T> = 0 extends 1 & T ? true : false\n\n/**\n * Checks if a type is exactly `unknown`. This is useful to determine if a type is\n *\n * @internal\n */\nexport type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false\n\n/**\n * Type that represents a value that can be a function or a single value. Used\n * for `defineQuery()` and `defineMutation()`.\n *\n * @internal\n */\nexport type _MaybeFunction<T, Args extends any[] = []> = T | ((...args: Args) => T)\n\n/**\n * Transforms a value or a function that returns a value to a value.\n *\n * @param valFn either a value or a function that returns a value\n * @param args arguments to pass to the function if `valFn` is a function\n *\n * @internal\n */\nexport function toValueWithArgs<T, Args extends any[]>(\n valFn: T | ((...args: Args) => T),\n ...args: Args\n): T {\n return typeof valFn === 'function' ? (valFn as (...args: Args) => T)(...args) : valFn\n}\n\n/**\n * Type that represents a value that can be a promise or a single value.\n *\n * @internal\n */\nexport type _Awaitable<T> = T | Promise<T>\n\n/**\n * Flattens an object type for readability.\n *\n * @internal\n */\nexport type _Simplify<T> = { [K in keyof T]: T[K] }\n\n/**\n * Converts a value to an array if necessary.\n *\n * @param value - value to convert\n */\nexport const toArray = <T>(value: _MaybeArray<T>): T[] => (Array.isArray(value) ? value : [value])\n\n/**\n * Valid primitives that can be stringified with `JSON.stringify`.\n *\n * @internal\n */\nexport type _JSONPrimitive = string | number | boolean | null | undefined\n\n/**\n * Utility type to represent a flat object that can be stringified with\n * `JSON.stringify` no matter the order of keys.\n *\n * @internal\n */\nexport interface _ObjectFlat {\n [key: string]: _JSONPrimitive | Array<_JSONPrimitive>\n}\n\n/**\n * Valid values that can be stringified with `JSON.stringify`.\n *\n * @internal\n */\nexport type _JSONValue = _JSONPrimitive | _JSONValue[] | { [key: string]: _JSONValue }\n\n/**\n * Stringifies an object no matter the order of keys. This is used to create a\n * hash for a given object. It only works with flat objects. It can contain\n * arrays of primitives only. `undefined` values are skipped.\n *\n * @param obj - object to stringify\n */\nexport function stringifyFlatObject(obj: _ObjectFlat | _JSONPrimitive): string {\n return obj && typeof obj === 'object' ? JSON.stringify(obj, Object.keys(obj).sort()) : String(obj)\n}\n\n/**\n * Merges two types when the second one can be null | undefined. Allows to safely use the returned type for { ...a,\n * ...undefined, ...null }\n * @internal\n */\nexport type _MergeObjects<Obj, MaybeNull> = MaybeNull extends undefined | null | void\n ? Obj\n : _Simplify<Obj & MaybeNull>\n\n/**\n * @internal\n */\nexport const noop = () => {}\n\n/**\n * Wraps a getter to be used as a ref. This is useful when you want to use a getter as a ref but you need to modify the\n * value.\n *\n * @internal\n * @param other - getter of the ref to compute\n * @returns a wrapper around a writable getter that can be used as a ref\n */\nexport const computedRef = <T>(other: () => Ref<T>): ShallowRef<T> =>\n computed({\n get: () => other().value,\n set: (value) => (other().value = value),\n })\n\n/**\n * Renames a property in an object type.\n */\nexport type _RenameProperty<T, Key extends keyof T, NewKey extends string> = {\n [P in keyof T as P extends Key ? NewKey : P]: T[P]\n}\n\n/**\n * Type safe version of `Object.assign` that allows to set all properties of a reactive object at once. Used to set\n * {@link DataState} properties in a type safe way.\n */\nexport const setReactiveValue = Object.assign as <T>(value: T, ...args: T[]) => T\n\n/**\n * To avoid using `{}`\n * @internal\n */\nexport interface _EmptyObject {}\n\n/**\n * Dev only warning that is only shown once.\n */\nconst warnedMessages = new Set<string>()\n\n/**\n * Warns only once. This should only be used in dev\n *\n * @param message - Message to show\n * @param id - Unique id for the message, defaults to the message\n */\nexport function warnOnce(message: string, id: string = message) {\n if (warnedMessages.has(id)) return\n warnedMessages.add(id)\n console.warn(`[@pinia/colada]: ${message}`)\n}\n\n/**\n * @internal\n */\nexport type _IsMaybeRefOrGetter<T> = [T] extends [MaybeRefOrGetter<infer U>]\n ? MaybeRefOrGetter<U> extends T // must match the wrapper, not just any function\n ? true\n : false\n : false\n\n/**\n * @internal\n */\nexport type _UnwrapMaybeRefOrGetter<T> = T extends MaybeRefOrGetter<infer U> ? U : T\n\n/**\n * Removes the `MaybeRefOrGetter` wrapper from all fields of an object,\n * except for fields specified in the `Ignore` type.\n * @internal\n */\nexport type _RemoveMaybeRef<T, Ignore extends keyof T = never> = {\n [K in keyof T]: K extends Ignore\n ? T[K]\n : _IsMaybeRefOrGetter<NonNullable<T[K]>> extends true\n ? _UnwrapMaybeRefOrGetter<T[K]>\n : T[K]\n}\n","import { defineStore, getActivePinia, skipHydrate } from 'pinia'\nimport {\n effectScope,\n getCurrentInstance,\n getCurrentScope,\n hasInjectionContext,\n markRaw,\n shallowRef,\n toValue,\n watch,\n triggerRef,\n} from 'vue'\nimport type { App, ComponentInternalInstance, EffectScope, ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState } from './data-state'\nimport type { EntryKeyTagged, EntryKey } from './entry-keys'\nimport { useQueryOptions } from './query-options'\nimport type { UseQueryOptions, UseQueryOptionsWithDefaults } from './query-options'\nimport type { EntryFilter } from './entry-filter'\nimport { find, START_EXT, toCacheKey } from './entry-keys'\nimport type { ErrorDefault, QueryMeta } from './types-extension'\nimport { toValueWithArgs, warnOnce } from './utils'\n\n/**\n * Allows defining extensions to the query entry that are returned by `useQuery()`.\n */\n\nexport interface UseQueryEntryExtensions<\n TData,\n /* eslint-disable-next-line unused-imports/no-unused-vars */\n TError,\n /* eslint-disable-next-line unused-imports/no-unused-vars */\n TDataInitial extends TData | undefined = undefined,\n> {}\n\n/**\n * NOTE: Entries could be classes but the point of having all functions within the store is to allow plugins to hook\n * into actions.\n */\n\n/**\n * A query entry in the cache.\n */\nexport interface UseQueryEntry<\n TData = unknown,\n TError = unknown,\n // allows for UseQueryEntry to have unknown everywhere (generic version)\n TDataInitial extends TData | undefined = unknown extends TData ? unknown : undefined,\n> {\n /**\n * The state of the query. Contains the data, error and status.\n */\n state: ShallowRef<DataState<TData, TError, TDataInitial>>\n\n /**\n * A placeholder `data` that is initially shown while the query is loading for the first time. This will also show the\n * `status` as `success` until the query finishes loading (no matter the outcome).\n */\n placeholderData: TDataInitial | TData | null | undefined\n\n /**\n * The status of the query.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * When was this data set in the entry for the last time in ms. It can also\n * be 0 if the entry has been invalidated.\n */\n when: number\n\n /**\n * The serialized key associated with this query entry.\n */\n key: EntryKey\n\n /**\n * Seriaized version of the key. Used to retrieve the entry from the cache.\n */\n keyHash: string\n\n /**\n * Components and effects scopes that use this query entry.\n */\n deps: Set<EffectScope | ComponentInternalInstance>\n\n /**\n * Timeout id that scheduled a garbage collection. It is set here to clear it when the entry is used by a different component\n */\n gcTimeout: ReturnType<typeof setTimeout> | undefined\n\n /**\n * The current pending request.\n */\n pending: null | {\n /**\n * The abort controller used to cancel the request and which `signal` is passed to the query function.\n */\n abortController: AbortController\n /**\n * The promise created by `queryCache.fetch` that is currently pending.\n */\n refreshCall: Promise<DataState<TData, TError, TDataInitial>>\n /**\n * When was this `pending` object created.\n */\n when: number\n }\n\n /**\n * Options used to create the query. They can be `null` during hydration but are needed for fetching. This is why\n * `store.ensure()` sets this property. Note these options might be shared by multiple query entries when the key is\n * dynamic and that's why some methods like {@link fetch} receive the options as an argument.\n */\n options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> | null\n\n /**\n * Whether the data is stale or not, requires `options.staleTime` to be set.\n */\n readonly stale: boolean\n\n /**\n * Whether the query is currently being used by a Component or EffectScope (e.g. a store).\n */\n readonly active: boolean\n\n /**\n * Resolved meta information for this query. This is the computed value\n * from options.meta (function/ref resolved to raw object).\n */\n meta: QueryMeta\n\n /**\n * Extensions to the query entry added by plugins. Must be extended in the\n * `extend` action.\n */\n ext: UseQueryEntryExtensions<TData, TError, TDataInitial>\n\n /**\n * Internal property to store the HMR ids of the components that are using\n * this query and force refetching.\n *\n * @internal\n */\n __hmr?: {\n /**\n * Reference count of the components using this query.\n */\n ids: Map<string, number>\n }\n}\n\n/**\n * Keep track of the entry being defined so we can add the queries in ensure\n * this allows us to refresh the entry when a defined query is used again\n * and refetchOnMount is true\n *\n * @internal\n */\nexport let currentDefineQueryEntry: DefineQueryEntry | undefined | null\n\n/**\n * Returns whether the entry is using a placeholder data.\n *\n * @template TDataInitial - Initial data type\n * @param entry - entry to check\n */\nexport function isEntryUsingPlaceholderData<TDataInitial>(\n entry: UseQueryEntry<unknown, unknown, TDataInitial> | undefined | null,\n): entry is UseQueryEntry<unknown, unknown, TDataInitial> & { placeholderData: TDataInitial } {\n return entry?.placeholderData != null && entry.state.value.status === 'pending'\n}\n\n/**\n * Filter object to get entries from the query cache.\n *\n * @see {@link QueryCache.getEntries}\n * @see {@link QueryCache.cancelQueries}\n * @see {@link QueryCache#invalidateQueries}\n */\nexport type UseQueryEntryFilter = EntryFilter<UseQueryEntry>\n\n/**\n * UseQueryEntry method to serialize the entry to JSON.\n *\n * @param entry - entry to serialize\n * @param entry.when - when the data was fetched the last time\n * @param entry.state - data state of the entry\n * @param entry.state.value - value of the data state\n * @returns Serialized version of the entry\n */\nexport const queryEntry_toJSON: <TData, TError>(\n entry: UseQueryEntry<TData, TError>,\n) => _UseQueryEntryNodeValueSerialized<TData, TError> = ({ state: { value }, when, meta }) => [\n value.data,\n value.error,\n // because of time zones, we create a relative time\n when ? Date.now() - when : -1,\n meta,\n]\n// TODO: errors are not serializable by default. We should provide a way to serialize custom errors and, by default provide one that serializes the name and message\n\n/**\n * UseQueryEntry method to serialize the entry to a string.\n *\n * @internal\n * @param entry - entry to serialize\n * @returns Stringified version of the entry\n */\nexport const queryEntry_toString: <TData, TError>(entry: UseQueryEntry<TData, TError>) => string = (\n entry,\n) => String(queryEntry_toJSON(entry))\n\n/**\n * The id of the store used for queries.\n * @internal\n */\nexport const QUERY_STORE_ID = '_pc_query'\n\n/**\n * A query entry that is defined with {@link defineQuery}.\n * @internal\n */\ntype DefineQueryEntry = [\n lastEnsuredEntries: UseQueryEntry[],\n returnValue: unknown,\n effect: EffectScope,\n paused: ShallowRef<boolean>,\n]\n\n/**\n * Composable to get the cache of the queries. As any other composable, it can\n * be used inside the `setup` function of a component, within another\n * composable, or in injectable contexts like stores and navigation guards.\n */\nexport const useQueryCache = /* @__PURE__ */ defineStore(QUERY_STORE_ID, ({ action }) => {\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n const cachesRaw = new Map<string, UseQueryEntry<unknown, unknown, unknown>>()\n const caches = skipHydrate(shallowRef(cachesRaw))\n\n if (process.env.NODE_ENV !== 'production') {\n watch(\n () => caches.value !== cachesRaw,\n (isDifferent) => {\n if (isDifferent) {\n console.error(\n `[@pinia/colada] The query cache cannot be directly set, it must be modified only. This will fail on production`,\n )\n }\n },\n )\n }\n\n // this version of the cache cannot be hydrated because it would miss all of the actions\n // and plugins won't be able to hook into entry creation and fetching\n // this allows use to attach reactive effects to the scope later on\n const scope = getCurrentScope()!\n const app: App<unknown> =\n // @ts-expect-error: internal\n getActivePinia()!._a\n\n if (process.env.NODE_ENV !== 'production') {\n if (!hasInjectionContext()) {\n warnOnce(\n `useQueryCache() was called outside of an injection context (component setup, store, navigation guard) You will get a warning about \"inject\" being used incorrectly from Vue. Make sure to use it only in allowed places.\\n` +\n `See https://vuejs.org/guide/reusability/composables.html#usage-restrictions`,\n )\n }\n }\n\n const optionDefaults = useQueryOptions()\n\n /**\n * Creates a new query entry in the cache. Shouldn't be called directly.\n *\n * @param key - Serialized key of the query\n * @param [options] - options attached to the query\n * @param [initialData] - initial data of the query if any\n * @param [error] - initial error of the query if any\n * @param [when] - relative when was the data or error fetched (will be substracted to Date.now())\n * @param [meta] - resolved meta information for the query\n */\n const create = action(\n <TData, TError, TDataInitial extends TData | undefined>(\n key: EntryKey,\n options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> | null = null,\n initialData?: TDataInitial,\n error: TError | null = null,\n when: number = 0,\n meta: QueryMeta = {},\n // when: number = initialData === undefined ? 0 : Date.now(),\n ): UseQueryEntry<TData, TError, TDataInitial> =>\n scope.run(() => {\n const state = shallowRef<DataState<TData, TError, TDataInitial>>(\n // @ts-expect-error: to make the code shorter we are using one declaration instead of multiple ternaries\n {\n // NOTE: we could move the `initialData` parameter before `options` and make it required\n // but that would force `create` call in `setQueryData` to pass an extra `undefined` argument\n data: initialData as TDataInitial,\n error,\n status: error ? 'error' : initialData !== undefined ? 'success' : 'pending',\n },\n )\n const asyncStatus = shallowRef<AsyncStatus>('idle')\n // we markRaw to avoid unnecessary vue traversal\n return markRaw<UseQueryEntry<TData, TError, TDataInitial>>({\n key,\n keyHash: toCacheKey(key),\n state,\n placeholderData: null,\n when: initialData === undefined ? 0 : Date.now() - when,\n asyncStatus,\n pending: null,\n // this set can contain components and effects and worsen the performance\n // and create weird warnings\n deps: markRaw(new Set()),\n gcTimeout: undefined,\n // eslint-disable-next-line ts/ban-ts-comment\n // @ts-ignore: some plugins are adding properties to the entry type\n ext: START_EXT,\n options,\n meta,\n get stale() {\n return !this.options || !this.when || Date.now() >= this.when + this.options.staleTime\n },\n get active() {\n return this.deps.size > 0\n },\n } satisfies UseQueryEntry<TData, TError, TDataInitial>)\n })!,\n )\n\n const defineQueryMap = new WeakMap<() => unknown, DefineQueryEntry>()\n\n /**\n * Ensures a query created with {@link defineQuery} is present in the cache. If it's not, it creates a new one.\n * @param fn - function that defines the query\n */\n const ensureDefinedQuery = action(<T>(fn: () => T) => {\n let defineQueryEntry = defineQueryMap.get(fn)\n if (!defineQueryEntry) {\n // create the entry first\n currentDefineQueryEntry = defineQueryEntry = scope.run(() => [\n [],\n null,\n effectScope(),\n shallowRef(false),\n ])!\n\n // then run it so it can add the queries to the entry\n // we use the app context for injections and the scope for effects\n defineQueryEntry[1] = app.runWithContext(() => defineQueryEntry![2].run(fn)!)\n currentDefineQueryEntry = null\n defineQueryMap.set(fn, defineQueryEntry)\n } else {\n // ensure the scope is active so effects computing inside `useQuery()` run (e.g. the entry computed)\n defineQueryEntry[2].resume()\n defineQueryEntry[3].value = false\n // if the entry already exists, we know the queries inside\n // we should consider as if they are activated again\n defineQueryEntry[0] = defineQueryEntry[0].map((oldEntry) =>\n // the entries' key might have changed (e.g. Nuxt navigation)\n // so we need to ensure them again\n oldEntry.options ? ensure(oldEntry.options, oldEntry) : oldEntry,\n )\n }\n\n return defineQueryEntry\n })\n\n /**\n * Tracks an effect or component that uses a query.\n *\n * @param entry - the entry of the query\n * @param effect - the effect or component to untrack\n *\n * @see {@link untrack}\n */\n function track(\n entry: UseQueryEntry,\n effect: EffectScope | ComponentInternalInstance | null | undefined,\n ) {\n if (!effect) return\n entry.deps.add(effect)\n // clearTimeout ignores anything that isn't a timerId\n clearTimeout(entry.gcTimeout)\n entry.gcTimeout = undefined\n triggerRef(caches)\n }\n\n /**\n * Untracks an effect or component that uses a query.\n *\n * @param entry - the entry of the query\n * @param effect - the effect or component to untrack\n *\n * @see {@link track}\n */\n function untrack(\n entry: UseQueryEntry,\n effect: EffectScope | ComponentInternalInstance | undefined | null,\n ) {\n // avoid clearing an existing timeout\n if (!effect || !entry.deps.has(effect)) return\n\n // clear any HMR to avoid letting the set grow\n if (process.env.NODE_ENV !== 'production') {\n if ('type' in effect && '__hmrId' in effect.type && entry.__hmr) {\n const count = (entry.__hmr.ids.get(effect.type.__hmrId) ?? 1) - 1\n if (count > 0) {\n entry.__hmr.ids.set(effect.type.__hmrId, count)\n } else {\n entry.__hmr.ids.delete(effect.type.__hmrId)\n }\n }\n }\n\n entry.deps.delete(effect)\n triggerRef(caches)\n\n scheduleGarbageCollection(entry)\n }\n\n function scheduleGarbageCollection(entry: UseQueryEntry) {\n // schedule a garbage collection if the entry is not active\n // and we know its gcTime value\n if (entry.deps.size > 0 || !entry.options) return\n clearTimeout(entry.gcTimeout)\n entry.pending?.abortController.abort()\n // avoid setting a timeout with false, Infinity or NaN\n if ((Number.isFinite as (val: unknown) => val is number)(entry.options.gcTime)) {\n entry.gcTimeout = setTimeout(() => {\n remove(entry)\n }, entry.options.gcTime)\n }\n }\n\n /**\n * Invalidates and cancel matched queries, and then refetches (in parallel)\n * all active ones. If you need to further control which queries are\n * invalidated, canceled, and/or refetched, you can use the filters, you\n * can direcly call {@link invalidate} on {@link getEntries}:\n *\n * ```ts\n * // instead of doing\n * await queryCache.invalidateQueries(filters)\n * await Promise.all(queryCache.getEntries(filters).map(entry => {\n * queryCache.invalidate(entry)\n * // this is the default behavior of invalidateQueries\n * // return entry.active && queryCache.fetch(entry)\n * // here to refetch everything, even non active queries\n * return queryCache.fetch(entry)\n * })\n * ```\n *\n * @param filters - filters to apply to the entries\n * @param refetchActive - whether to refetch active queries or not. Set\n * to `'all'` to refetch all queries\n *\n * @see {@link invalidate}\n * @see {@link cancel}\n */\n const invalidateQueries = action(\n (filters?: UseQueryEntryFilter, refetchActive: boolean | 'all' = true): Promise<unknown> => {\n return Promise.all(\n getEntries(filters).map((entry) => {\n invalidate(entry)\n return (\n (refetchActive === 'all' || (entry.active && refetchActive)) &&\n toValue(entry.options?.enabled) &&\n fetch(entry)\n )\n }),\n )\n },\n )\n\n /**\n * Returns all the entries in the cache that match the filters.\n *\n * @param filters - filters to apply to the entries\n */\n const getEntries = action((filters: UseQueryEntryFilter = {}): UseQueryEntry[] => {\n // TODO: Iterator.from(node) in 2028 once widely available? or maybe not worth it\n return (\n filters.exact\n ? filters.key\n ? [caches.value.get(toCacheKey(filters.key))].filter((v) => !!v)\n : [] // exact with no key can't match anything\n : [...find(caches.value, filters.key)]\n ).filter(\n (entry) =>\n (filters.stale == null || entry.stale === filters.stale) &&\n (filters.active == null || entry.active === filters.active) &&\n (!filters.status || entry.state.value.status === filters.status) &&\n (!filters.predicate || filters.predicate(entry)),\n )\n })\n\n /**\n * Ensures a query entry is present in the cache. If it's not, it creates a\n * new one. The resulting entry is required to call other methods like\n * {@link fetch}, {@link refresh}, or {@link invalidate}.\n *\n * @param opts - options to create the query\n * @param previousEntry - the previous entry that was associated with the same options\n */\n const ensure = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n opts: UseQueryOptions<TData, TError, TDataInitial>,\n previousEntry?: UseQueryEntry<TData, TError, TDataInitial>,\n ): UseQueryEntry<TData, TError, TDataInitial> => {\n // NOTE: in the code we always pass the options with the defaults but it's convenient\n // to allow ensure be called with just the user options\n const options: UseQueryOptionsWithDefaults<TData, TError, TDataInitial> = {\n ...optionDefaults,\n ...opts,\n }\n const key = toValue(options.key)\n const keyHash = toCacheKey(key)\n\n if (process.env.NODE_ENV !== 'production' && keyHash === '[]') {\n throw new Error(\n `useQuery() was called with an empty array as the key. It must have at least one element.`,\n )\n }\n\n // do not reinitialize the entry\n // because of the immediate watcher in useQuery, the `ensure()` action is called twice on mount\n // we return early to avoid pushing to currentDefineQueryEntry\n if (previousEntry && keyHash === previousEntry.keyHash) {\n return previousEntry\n }\n\n // Since ensure() is called within a computed, we cannot let Vue track cache, so we use the raw version instead\n let entry = cachesRaw.get(keyHash) as UseQueryEntry<TData, TError, TDataInitial> | undefined\n // ensure the state\n if (!entry) {\n // Resolve the meta from options.meta (could be function, ref, or raw object)\n\n const initialDataUpdatedAt = toValue(options.initialDataUpdatedAt)\n\n cachesRaw.set(\n keyHash,\n (entry = create(\n key,\n options,\n options.initialData?.(),\n null,\n initialDataUpdatedAt != null ? Date.now() - initialDataUpdatedAt : 0,\n toValue(options.meta),\n )),\n )\n // the placeholderData is only used if the entry is initially loading\n if (options.placeholderData && entry.state.value.status === 'pending') {\n entry.placeholderData = toValueWithArgs(\n options.placeholderData,\n // pass the previous entry placeholder data if it was in placeholder state\n isEntryUsingPlaceholderData(previousEntry)\n ? previousEntry.placeholderData\n : previousEntry?.state.value.data,\n )\n }\n triggerRef(caches)\n }\n\n // during HMR, staleTime could be long and if we change the query function, the query won't trigger a refetch\n // so we need to detect and trigger just in case\n if (process.env.NODE_ENV !== 'production') {\n const currentInstance = getCurrentInstance()\n if (currentInstance) {\n entry.__hmr ??= { ids: new Map() }\n\n const id =\n // @ts-expect-error: internal property\n currentInstance.type?.__hmrId\n\n // FIXME: if the user mounts the same component multiple times, I think it makes sense to fix this\n // because we could have the same component mounted multiple times with different props but inside of the same\n // they use the same query (cache, centralized). This sholdn't invalidate the query\n // we can fix it by storing the currentInstance.type.render (we need to copy the values because the\n // type object gets reused and replaced in place). It's not clear if this will work with Vapor\n if (id) {\n if (entry.__hmr.ids.has(id)) {\n invalidate(entry)\n }\n const count = (entry.__hmr.ids.get(id) ?? 0) + 1\n entry.__hmr.ids.set(id, count)\n }\n }\n }\n\n // we set it every time to ensure we are using up to date key getters and others options\n entry.options = options\n\n // extend the entry with plugins the first time only\n if (entry.ext === START_EXT) {\n entry.ext = {} as UseQueryEntryExtensions<TData, TError>\n extend(entry)\n }\n\n // if this query was defined within a defineQuery call, add it to the list\n currentDefineQueryEntry?.[0].push(entry)\n\n return entry\n },\n )\n\n /**\n * Action called when an entry is ensured for the first time to allow plugins to extend it.\n *\n * @param _entry - the entry of the query to extend\n */\n const extend = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n _entry: UseQueryEntry<TData, TError, TDataInitial>,\n ) => {},\n )\n\n /**\n * Invalidates and cancels a query entry. It effectively sets the `when`\n * property to `0` and {@link cancel | cancels} the pending request.\n *\n * @param entry - the entry of the query to invalidate\n *\n * @see {@link cancel}\n */\n const invalidate = action((entry: UseQueryEntry) => {\n // will force a fetch next time\n entry.when = 0\n // ignores the pending query\n cancel(entry)\n })\n\n /**\n * Ensures the current data is fresh. If the data is stale or if the status\n * is 'error', calls {@link fetch}, if not return the current data. Can only\n * be called if the entry has been initialized with `useQuery()` and has\n * options.\n *\n * @param entry - the entry of the query to refresh\n * @param options - the options to use for the fetch\n *\n * @see {@link fetch}\n */\n const refresh = action(\n async <TData, TError, TDataInitial extends TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n options = entry.options,\n ): Promise<DataState<TData, TError, TDataInitial>> => {\n if (process.env.NODE_ENV !== 'production' && !options) {\n throw new Error(\n `\"entry.refresh()\" was called but the entry has no options. This is probably a bug, report it to pinia-colada with a boiled down example to reproduce it. Thank you!`,\n )\n }\n\n if (entry.state.value.error || entry.stale) {\n return entry.pending?.refreshCall ?? fetch(entry, options)\n }\n\n return entry.state.value\n },\n )\n\n /**\n * Fetch an entry. Ignores fresh data and triggers a new fetch. Can only be called if the entry has options.\n *\n * @param entry - the entry of the query to fetch\n * @param options - the options to use for the fetch\n */\n const fetch = action(\n async <TData, TError, TDataInitial extends TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n options = entry.options,\n ): Promise<DataState<TData, TError, TDataInitial>> => {\n if (process.env.NODE_ENV !== 'production' && !options) {\n throw new Error(\n `\"entry.fetch()\" was called but the entry has no options. This is probably a bug, report it to pinia-colada with a boiled down example to reproduce it. Thank you!`,\n )\n }\n\n entry.asyncStatus.value = 'loading'\n\n const abortController = new AbortController()\n const { signal } = abortController\n // Abort any ongoing request without a reason to keep `AbortError` even with\n // signal.throwIfAborted() in the query function\n entry.pending?.abortController.abort()\n\n const pendingCall = (entry.pending = {\n abortController,\n // wrapping with async allows us to catch synchronous errors too\n refreshCall: (async () => options!.query({ signal }))()\n .then((data) => {\n if (pendingCall === entry.pending) {\n setEntryState(entry, {\n data,\n error: null,\n status: 'success',\n })\n }\n return entry.state.value\n })\n .catch((error: unknown) => {\n // we skip updating the state if a new request was made\n // or if the error is from our own abort signal\n if (\n pendingCall === entry.pending &&\n // does the error come from a different reason than the abort signal?\n (error !== signal.reason || !signal.aborted)\n ) {\n setEntryState(entry, {\n status: 'error',\n data: entry.state.value.data,\n error: error as any,\n })\n }\n\n // always propagate up the error\n throw error\n // NOTE: other options included returning an ongoing request if the error was a cancellation but it seems not worth it\n })\n .finally(() => {\n entry.asyncStatus.value = 'idle'\n if (pendingCall === entry.pending) {\n entry.pending = null\n // there are cases when the result is ignored, in that case, we still\n // do not have a real result so we keep the placeholder data\n if (entry.state.value.status !== 'pending') {\n // reset the placeholder data to free up memory\n entry.placeholderData = null\n }\n }\n }),\n when: Date.now(),\n })\n\n return pendingCall.refreshCall\n },\n )\n\n /**\n * Cancels an entry's query if it's currently pending. This will effectively abort the `AbortSignal` of the query and any\n * pending request will be ignored.\n *\n * @param entry - the entry of the query to cancel\n * @param reason - the reason passed to the abort controller\n */\n const cancel = action((entry: UseQueryEntry, reason?: unknown) => {\n entry.pending?.abortController.abort(reason)\n // eagerly set the status to idle because the abort signal might not\n // be consumed by the user's query\n entry.asyncStatus.value = 'idle'\n entry.pending = null\n })\n\n /**\n * Cancels queries if they are currently pending. This will effectively abort the `AbortSignal` of the query and any\n * pending request will be ignored.\n *\n * @param filters - filters to apply to the entries\n * @param reason - the reason passed to the abort controller\n *\n * @see {@link cancel}\n */\n const cancelQueries = action((filters?: UseQueryEntryFilter, reason?: unknown) => {\n getEntries(filters).forEach((entry) => cancel(entry, reason))\n })\n\n /**\n * Sets the state of a query entry in the cache and updates the\n * {@link UseQueryEntry['pending']['when'] | `when` property}. This action is\n * called every time the cache state changes and can be used by plugins to\n * detect changes.\n *\n * @param entry - the entry of the query to set the state\n * @param state - the new state of the entry\n */\n const setEntryState = action(\n <TData, TError, TDataInitial extends TData | undefined = TData | undefined>(\n entry: UseQueryEntry<TData, TError, TDataInitial>,\n // NOTE: NoInfer ensures correct inference of TData and TError\n state: DataState<NoInfer<TData>, NoInfer<TError>, NoInfer<TDataInitial>>,\n ) => {\n entry.state.value = state\n entry.when = Date.now()\n // if we need to, we could schedule a garbage collection here but I don't\n // see why would one create entries that are not used (not tracked immediately after)\n },\n )\n\n /**\n * Gets a single query entry from the cache based on the key of the query.\n *\n * @param key - the key of the query\n */\n function get<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n >(\n key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey,\n ): UseQueryEntry<TData, TError, TDataInitial> | undefined {\n return caches.value.get(toCacheKey(key)) as\n | UseQueryEntry<TData, TError, TDataInitial>\n | undefined\n }\n\n /**\n * Set the data of a query entry in the cache. It also sets the `status` to `success`.\n *\n * @param key - the key of the query\n * @param data - the new data to set\n *\n * @see {@link setEntryState}\n */\n const setQueryData = action(\n <TData = unknown, TError = ErrorDefault, TDataInitial extends TData | undefined = undefined>(\n key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey,\n data:\n | NoInfer<TData>\n // a success query cannot have undefined data\n | Exclude<NoInfer<TDataInitial>, undefined>\n // but could not be there and therefore have undefined here\n | ((oldData: TData | TDataInitial | undefined) => TData | Exclude<TDataInitial, undefined>),\n ) => {\n const keyHash = toCacheKey(key)\n let entry = cachesRaw.get(keyHash) as UseQueryEntry<TData, unknown, TDataInitial> | undefined\n\n // if the entry doesn't exist, we create it to set the data\n // it cannot be refreshed or fetched since the options\n // will be missing\n if (!entry) {\n cachesRaw.set(keyHash, (entry = create<TData, unknown, TDataInitial>(key)))\n }\n\n setEntryState(entry, {\n // we assume the data accounts for a successful state\n error: null,\n status: 'success',\n data: toValueWithArgs(data, entry.state.value.data),\n })\n scheduleGarbageCollection(entry)\n triggerRef(caches)\n },\n )\n\n /**\n * Sets the data of all queries in the cache that are children of a key. It\n * also sets the `status` to `success`. Differently from {@link\n * setQueryData}, this method recursively sets the data for all queries. This\n * is why it requires a function to set the data.\n *\n * @param filters - filters used to get the entries\n * @param updater - the function to set the data\n *\n * @example\n * ```ts\n * // let's suppose we want to optimistically update all contacts in the cache\n * setQueriesData(['contacts', 'list'], (contactList: Contact[]) => {\n * const contactToReplaceIndex = contactList.findIndex(c => c.id === updatedContact.id)\n * return contactList.toSpliced(contactToReplaceIndex, 1, updatedContact)\n * })\n * ```\n *\n * @see {@link setQueryData}\n */\n function setQueriesData<TData = unknown>(\n filters: UseQueryEntryFilter,\n updater: (previous: TData | undefined) => TData,\n ): void {\n for (const entry of getEntries(filters)) {\n setEntryState(entry, {\n error: null,\n status: 'success',\n data: updater(entry.state.value.data as TData | undefined),\n })\n scheduleGarbageCollection(entry)\n }\n triggerRef(caches)\n }\n\n /**\n * Gets the data of a query entry in the cache based on the key of the query.\n *\n * @param key - the key of the query\n */\n function getQueryData<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n >(key: EntryKeyTagged<TData, TError, TDataInitial> | EntryKey): TData | TDataInitial | undefined {\n return caches.value.get(toCacheKey(key))?.state.value.data as TData | TDataInitial | undefined\n }\n\n /**\n * Removes a query entry from the cache.\n *\n * @param entry - the entry of the query to remove\n */\n const remove = action((entry: UseQueryEntry) => {\n // setting without a value is like setting it to undefined\n cachesRaw.delete(entry.keyHash)\n triggerRef(caches)\n })\n\n return {\n caches,\n\n ensureDefinedQuery,\n /**\n * Scope to track effects and components that use the query cache.\n * @internal\n */\n _s: markRaw(scope),\n setQueryData,\n setQueriesData,\n getQueryData,\n\n invalidateQueries,\n cancelQueries,\n\n // Actions for entries\n invalidate,\n fetch,\n refresh,\n ensure,\n extend,\n track,\n untrack,\n cancel,\n create,\n remove,\n get,\n setEntryState,\n getEntries,\n }\n})\n\n/**\n * The cache of the queries. It's the store returned by {@link useQueryCache}.\n */\nexport type QueryCache = ReturnType<typeof useQueryCache>\n\n/**\n * Checks if the given object is a query cache. Used in SSR to apply custom serialization.\n *\n * @param cache - the object to check\n *\n * @see {@link QueryCache}\n * @see {@link serializeQueryCache}\n */\nexport function isQueryCache(cache: unknown): cache is QueryCache {\n return (\n typeof cache === 'object' &&\n !!cache &&\n (cache as Record<string, unknown>).$id === QUERY_STORE_ID\n )\n}\n\n/**\n * Raw data of a query entry. Can be serialized from the server and used to\n * hydrate the store.\n *\n * @internal\n */\nexport type _UseQueryEntryNodeValueSerialized<TData = unknown, TError = unknown> = [\n /**\n * The data returned by the query.\n */\n data: TData | undefined,\n\n /**\n * The error thrown by the query.\n */\n error: TError | null,\n\n /**\n * When was this data fetched the last time in ms\n */\n when?: number,\n\n /**\n * Meta information associated with the query\n */\n meta?: QueryMeta,\n]\n\n/**\n * Hydrates the query cache with the serialized cache. Used during SSR.\n * @param queryCache - query cache\n * @param serializedCache - serialized cache\n */\nexport function hydrateQueryCache(\n queryCache: QueryCache,\n serializedCache: Record<string, _UseQueryEntryNodeValueSerialized>,\n) {\n for (const keyHash in serializedCache) {\n queryCache.caches.set(\n keyHash,\n queryCache.create(\n JSON.parse(keyHash),\n undefined,\n // data, error, when, meta\n ...(serializedCache[keyHash] ?? []),\n ),\n )\n }\n}\n\n/**\n * Serializes the query cache to a compressed version. Used during SSR.\n *\n * @param queryCache - query cache\n */\nexport function serializeQueryCache(\n queryCache: QueryCache,\n): Record<string, _UseQueryEntryNodeValueSerialized> {\n return Object.fromEntries(\n // TODO: 2028: directly use .map on the iterator\n [...queryCache.caches.entries()].map(([keyHash, entry]) => [keyHash, queryEntry_toJSON(entry)]),\n )\n}\n","import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\nimport {\n computed,\n getCurrentInstance,\n getCurrentScope,\n isRef,\n onMounted,\n onScopeDispose,\n onServerPrefetch,\n onUnmounted,\n toValue,\n watch,\n} from 'vue'\nimport { IS_CLIENT, useEventListener } from './utils'\nimport type { UseQueryEntry, UseQueryEntryExtensions } from './query-store'\nimport { currentDefineQueryEntry, isEntryUsingPlaceholderData, useQueryCache } from './query-store'\nimport { useQueryOptions } from './query-options'\nimport type { UseQueryOptions, UseQueryOptionsWithDefaults } from './query-options'\nimport type { ErrorDefault } from './types-extension'\nimport { currentDefineQueryEffect } from './define-query'\nimport type { DefineQueryOptions } from './define-query'\nimport type { AsyncStatus, DataState, DataStateStatus, DataState_Success } from './data-state'\n\n/**\n * Return type of `useQuery()`.\n */\nexport interface UseQueryReturn<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> extends UseQueryEntryExtensions<TData, TError, TDataInitial> {\n /**\n * The state of the query. Contains its data, error, and status.\n */\n state: ComputedRef<DataState<TData, TError, TDataInitial>>\n\n /**\n * Status of the query. Becomes `'loading'` while the query is being fetched, is `'idle'` otherwise.\n */\n asyncStatus: ComputedRef<AsyncStatus>\n\n /**\n * The last successful data resolved by the query. Alias for `state.value.data`.\n *\n * @see {@link state}\n */\n data: ShallowRef<TData | TDataInitial>\n\n /**\n * The error rejected by the query. Alias for `state.value.error`.\n *\n * @see {@link state}\n */\n error: ShallowRef<TError | null>\n\n /**\n * The status of the query. Alias for `state.value.status`.\n *\n * @see {@link state}\n * @see {@link DataStateStatus}\n */\n status: ShallowRef<DataStateStatus>\n\n /**\n * Returns whether the request is still pending its first call. Alias for `status.value === 'pending'`\n */\n isPending: ComputedRef<boolean>\n\n /**\n * Returns whether the `data` is the `placeholderData`.\n */\n isPlaceholderData: ComputedRef<boolean>\n\n /**\n * Returns whether the request is currently fetching data. Alias for `asyncStatus.value === 'loading'`\n */\n isLoading: ShallowRef<boolean>\n\n /**\n * Ensures the current data is fresh. If the data is stale, refetch, if not return as is.\n * @param throwOnError - whether to throw an error if the refresh fails. Defaults to `false`\n * @returns a promise that resolves when the refresh is done\n */\n refresh: (throwOnError?: boolean) => Promise<DataState<TData, TError, TDataInitial>>\n\n /**\n * Ignores fresh data and triggers a new fetch\n * @param throwOnError - whether to throw an error if the fetch fails. Defaults to `false`\n * @returns a promise that resolves when the fetch is done\n */\n refetch: (throwOnError?: boolean) => Promise<DataState<TData, TError, TDataInitial>>\n}\n\n/**\n * Ensures and return a shared query state based on the `key` option.\n *\n * @param options - The options of the query\n *\n * @example\n * ```ts\n * const { state } = useQuery({\n * key: ['documents'],\n * query: () => getDocuments(),\n * })\n * ```\n */\nexport function useQuery<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n options:\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n): UseQueryReturn<TData, TError, TDataInitial>\n\n/**\n * `useQuery` for dynamic typed query keys. Requires options defined with\n * {@link defineQueryOptions}.\n *\n * @param setupOptions - options defined with {@link defineQueryOptions}\n * @param paramsGetter - a getter or ref that returns the parameters for the `setupOptions`\n *\n * @example\n * ```ts\n * import { defineQueryOptions, useQuery } from '@pinia/colada'\n *\n * const documentDetailsQuery = defineQueryOptions((id: number ) => ({\n * key: ['documents', id],\n * query: () => fetchDocument(id),\n * }))\n *\n * useQuery(documentDetailsQuery, 4)\n * useQuery(documentDetailsQuery, () => route.params.id)\n * useQuery(documentDetailsQuery, () => props.id)\n * ```\n */\nexport function useQuery<Params, TData, TError, TDataInitial extends TData | undefined>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter: MaybeRefOrGetter<NoInfer<Params>>,\n): UseQueryReturn<TData, TError, TDataInitial>\n\n/**\n * Ensures and return a shared query state based on the `key` option.\n *\n * @param _options - The options of the query\n * @param paramsGetter - a getter or ref that returns the parameters for the `_options`\n */\nexport function useQuery<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n // NOTE: this version has better type inference but still imperfect\n ...[_options, paramsGetter]:\n | [\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n ]\n | [\n (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter?: MaybeRefOrGetter<unknown>,\n ]\n) // _options:\n// | UseQueryOptions<TData, TError, TDataInitial>\n// | (() => DefineQueryOptions<TData, TError, TDataInitial>)\n// | ((params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>),\n// paramsGetter?: MaybeRefOrGetter<unknown>,\n: UseQueryReturn<TData, TError, TDataInitial> {\n if (paramsGetter != null) {\n return useQuery(() =>\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n (_options as (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>)(\n toValue(paramsGetter),\n ),\n )\n }\n const queryCache = useQueryCache()\n const optionDefaults = useQueryOptions()\n const hasCurrentInstance = getCurrentInstance()\n // this is the effect created by defineQuery in ensureDefinedQuery\n // it shouldn't be tracked by the query cache otherwise it would never cleanup\n const defineQueryEffect = currentDefineQueryEntry?.[2]\n const currentEffect = currentDefineQueryEffect || getCurrentScope()\n const isPaused = currentDefineQueryEntry?.[3]\n\n const options = computed<UseQueryOptionsWithDefaults<TData, TError, TDataInitial>>(\n () =>\n ({\n ...optionDefaults,\n ...toValue(\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n _options as\n | UseQueryOptions<TData, TError, TDataInitial>\n | (() => DefineQueryOptions<TData, TError, TDataInitial>),\n ),\n }) satisfies UseQueryOptionsWithDefaults<TData, TError, TDataInitial>,\n )\n const enabled = (): boolean => toValue(options.value.enabled)\n\n // NOTE: here we used to check if the same key was previously called with a different query\n // but it ended up creating too many false positives and was removed. We could add it back\n // to at least warn against the cases shown in https://pinia-colada.esm.dev/guide/reusable-queries.html\n\n // This plain variable is not reactive and allows us to use the currentEntry\n // without triggering watchers and creating entries. It is used during\n // unmounting and mounting\n let lastEntry: UseQueryEntry<TData, TError, TDataInitial>\n const entry = computed(() =>\n // NOTE: there should be a `paused` property on the effect later on\n // if the effect is paused, we don't want to compute the entry because its key\n // might be referencing undefined values\n // https://github.com/posva/pinia-colada/issues/227\n // NOTE: _isPaused isn't reactive which meant that reentering a component\n // would never recompute the entry, so _isPaused was replaced\n // this makes the computed depend on nothing initially, but the `watch` on the entry\n // with immediate: true will trigger it again\n // https://github.com/posva/pinia-colada/issues/290\n isPaused?.value // && currentEffect?._isPaused\n ? lastEntry!\n : (lastEntry = queryCache.ensure<TData, TError, TDataInitial>(options.value, lastEntry)),\n )\n // we compute the entry here and reuse this across\n lastEntry = entry.value\n\n // adapter that returns the entry state\n const errorCatcher = () => entry.value.state.value\n const refresh = (throwOnError?: boolean) =>\n queryCache.refresh(entry.value, options.value).catch(\n // true is not allowed but it works per spec as only callable onRejected are used\n // https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-performpromisethen\n // In other words `Promise.rejects('ok').catch(true)` still rejects\n // anything other than `true` falls back to the `errorCatcher`\n (throwOnError as false | undefined) || errorCatcher,\n )\n const refetch = (throwOnError?: boolean) =>\n queryCache.fetch(entry.value, options.value).catch(\n // same as above\n (throwOnError as false | undefined) || errorCatcher,\n )\n const isPlaceholderData = computed(() => isEntryUsingPlaceholderData(entry.value))\n const state = computed<DataState<TData, TError, TDataInitial>>(() =>\n isPlaceholderData.value\n ? ({\n status: 'success',\n data: entry.value.placeholderData!,\n error: null,\n } satisfies DataState_Success<TData, TDataInitial>)\n : entry.value.state.value,\n )\n\n // TODO: find a way to allow a custom implementation for the returned value\n const extensions = {} as Record<string, any>\n for (const key in lastEntry.ext) {\n extensions[key] = computed<unknown>({\n get: () =>\n toValue<unknown>(entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>]),\n set(value) {\n const target = entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>]\n if (isRef(target)) {\n ;(target as Ref | ShallowRef).value = value\n } else {\n ;(entry.value.ext[key as keyof UseQueryEntryExtensions<TData, TError>] as unknown) = value\n }\n },\n })\n }\n\n const queryReturn = {\n ...(extensions as UseQueryEntryExtensions<TData, TError, TDataInitial>),\n state,\n\n status: computed(() => state.value.status),\n data: computed(() => state.value.data),\n error: computed(() => entry.value.state.value.error),\n asyncStatus: computed(() => entry.value.asyncStatus.value),\n\n isPlaceholderData,\n isPending: computed(() => state.value.status === 'pending'),\n isLoading: computed(() => entry.value.asyncStatus.value === 'loading'),\n\n refresh,\n refetch,\n } satisfies UseQueryReturn<TData, TError, TDataInitial>\n\n if (hasCurrentInstance) {\n // only happens on server, app awaits this\n onServerPrefetch(async () => {\n if (enabled()) await refresh(!options.value.ssrCatchError)\n })\n }\n\n // should we be watching entry\n // NOTE: this avoids fetching initially during SSR but it could be refactored to only use the watcher\n let isActive = false\n if (hasCurrentInstance) {\n onMounted(() => {\n isActive = true\n queryCache.track(lastEntry, hasCurrentInstance)\n })\n onUnmounted(() => {\n // remove instance from Set of refs\n queryCache.untrack(lastEntry, hasCurrentInstance)\n })\n } else {\n isActive = true\n if (currentEffect !== defineQueryEffect) {\n queryCache.track(lastEntry, currentEffect)\n onScopeDispose(() => {\n queryCache.untrack(lastEntry, currentEffect)\n })\n }\n }\n\n watch(\n entry,\n (entry, previousEntry) => {\n if (!isActive) return\n if (previousEntry) {\n queryCache.untrack(previousEntry, hasCurrentInstance)\n queryCache.untrack(previousEntry, currentEffect)\n }\n // track the current effect and component\n queryCache.track(entry, hasCurrentInstance)\n // if we have acurrent instance we don't track the effect because in Vue each component\n // has its own scope that is detached\n if (!hasCurrentInstance && currentEffect !== defineQueryEffect) {\n queryCache.track(entry, currentEffect)\n }\n\n // TODO: does this trigger after unmount?\n if (enabled()) refresh()\n },\n {\n immediate: true,\n },\n )\n\n // since options can be a getter, enabled might change\n watch(enabled, (newEnabled) => {\n // no need to check for the previous value since the watcher will only trigger if the value changed\n if (newEnabled) refresh()\n })\n\n // only happens on client\n // we could also call fetch instead but forcing a refresh is more interesting\n if (hasCurrentInstance) {\n onMounted(() => {\n if (enabled()) {\n const refetchControl = toValue(options.value.refetchOnMount)\n if (refetchControl === 'always') {\n refetch()\n } else if (\n refetchControl ||\n // always refetch if the query has no real data (even if placeholderData is shown)\n entry.value.state.value.status === 'pending'\n ) {\n refresh()\n }\n }\n })\n }\n // TODO: we could save the time it was fetched to avoid fetching again. This is useful to not refetch during SSR app but do refetch in SSG apps if the data is stale. Careful with timers and timezones\n\n if (IS_CLIENT) {\n useEventListener(document, 'visibilitychange', () => {\n const refetchControl = toValue(options.value.refetchOnWindowFocus)\n if (document.visibilityState === 'visible' && enabled()) {\n if (refetchControl === 'always') {\n refetch()\n } else if (refetchControl) {\n refresh()\n }\n }\n })\n\n useEventListener(window, 'online', () => {\n if (enabled()) {\n const refetchControl = toValue(options.value.refetchOnReconnect)\n if (refetchControl === 'always') {\n refetch()\n } else if (refetchControl) {\n refresh()\n }\n }\n })\n }\n\n return queryReturn\n}\n","import { getCurrentInstance, getCurrentScope, onScopeDispose, toValue } from 'vue'\nimport type { EffectScope } from 'vue'\nimport type { tErrorSymbol, UseQueryOptions } from './query-options'\nimport { useQueryCache } from './query-store'\nimport type { ErrorDefault } from './types-extension'\nimport type { UseQueryReturn } from './use-query'\nimport { useQuery } from './use-query'\nimport { noop } from './utils'\nimport type { _RemoveMaybeRef } from './utils'\n\n/**\n * The current effect scope where the function returned by `defineQuery` is\n * being called. This allows `useQuery()` to know if it should be attached to\n * an effect scope or not\n *\n * @internal\n */\nexport let currentDefineQueryEffect: undefined | EffectScope\n\n/**\n * Options to define a query with `defineQuery()`. Similar to\n * {@link UseQueryOptions} but disallows reactive values as `defineQuery()` is\n * used outside of an effect scope.\n */\nexport type DefineQueryOptions<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> = _RemoveMaybeRef<\n UseQueryOptions<TData, TError, TDataInitial>,\n typeof tErrorSymbol | 'initialData' | 'placeholderData'\n>\n\n/**\n * Define a query with the given options. Similar to `useQuery(options)` but\n * allows you to reuse **all** of the query state in multiple places. It only\n * allow static values in options. If you need dynamic values, use the function\n * version.\n *\n * @param options - the options to define the query\n *\n * @example\n * ```ts\n * const useTodoList = defineQuery({\n * key: ['todos'],\n * query: () => fetch('/api/todos', { method: 'GET' }),\n * })\n * ```\n */\nexport function defineQuery<TData, TError = ErrorDefault>(\n options: DefineQueryOptions<TData, TError>,\n): () => UseQueryReturn<TData, TError>\n\n/**\n * Define a query with a setup function. Allows to return arbitrary values from\n * the query function, create contextual refs, rename the returned values, etc.\n * The setup function will be called only once, like stores, and **must be\n * synchronous**.\n *\n * @param setup - a function to setup the query\n *\n * @example\n * ```ts\n * const useFilteredTodos = defineQuery(() => {\n * const todoFilter = ref<'all' | 'finished' | 'unfinished'>('all')\n * const { data, ...rest } = useQuery({\n * key: ['todos', { filter: todoFilter.value }],\n * query: () =>\n * fetch(`/api/todos?filter=${todoFilter.value}`, { method: 'GET' }),\n * })\n * // expose the todoFilter ref and rename data for convenience\n * return { ...rest, todoList: data, todoFilter }\n * })\n * ```\n */\nexport function defineQuery<T>(setup: () => T): () => T\nexport function defineQuery(optionsOrSetup: DefineQueryOptions | (() => unknown)): () => unknown {\n const setupFn =\n typeof optionsOrSetup === 'function' ? optionsOrSetup : () => useQuery(optionsOrSetup)\n\n let hasBeenEnsured: boolean | undefined\n // allows pausing the scope when the defined query is no used anymore\n let refCount = 0\n return () => {\n const queryCache = useQueryCache()\n // preserve any current effect to account for nested usage of these functions\n const previousEffect = currentDefineQueryEffect\n const currentScope = getCurrentInstance() || (currentDefineQueryEffect = getCurrentScope())\n\n const [ensuredEntries, ret, scope, isPaused] = queryCache.ensureDefinedQuery(setupFn)\n\n // subsequent calls to the composable returned by useQuery will not trigger the `useQuery()`,\n // this ensures the refetchOnMount option is respected\n if (hasBeenEnsured) {\n ensuredEntries.forEach((entry) => {\n // since defined query can be activated multiple times without executing useQuery,\n // we need to execute it here too\n if (entry.options?.refetchOnMount && toValue(entry.options.enabled)) {\n if (toValue(entry.options.refetchOnMount) === 'always') {\n // we catch the error to avoid unhandled rejections\n queryCache.fetch(entry).catch(noop)\n } else {\n queryCache.refresh(entry).catch(noop)\n }\n }\n })\n }\n hasBeenEnsured = true\n\n // NOTE: most of the time this should be set, so maybe we should show a dev warning\n // if it's not set instead\n //\n // Because `useQuery()` might already be called before and we might be reusing an existing query\n // we need to manually track and untrack. When untracking, we cannot use the ensuredEntries because\n // there might be another component using the defineQuery, so we simply count how many are using it\n if (currentScope) {\n refCount++\n ensuredEntries.forEach((entry) => {\n queryCache.track(entry, currentScope)\n })\n onScopeDispose(() => {\n ensuredEntries.forEach((entry) => {\n queryCache.untrack(entry, currentScope)\n })\n // if all entries become inactive, we pause the scope\n // to avoid triggering the effects within useQuery. This immitates the behavior\n // of a component that unmounts\n if (--refCount < 1) {\n scope.pause()\n isPaused.value = true\n }\n })\n }\n\n // reset the previous effect\n currentDefineQueryEffect = previousEffect\n\n return ret\n }\n}\n","import type { ComputedRef, MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { useQueryCache } from './query-store'\nimport type { UseQueryReturn } from './use-query'\nimport type { EntryKey, EntryKeyTagged } from './entry-keys'\nimport type { AsyncStatus, DataState, DataStateStatus } from './data-state'\nimport type { ErrorDefault } from './types-extension'\nimport type { DefineQueryOptions } from './define-query'\nimport type { defineQueryOptions } from './define-query-options'\n\n/**\n * Return type for the {@link useQueryState} composable.\n *\n * @see {@link useQueryState}\n */\nexport interface UseQueryStateReturn<\n TData = unknown,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n> {\n /**\n * `state` of the query entry.\n *\n * @see {@link UseQueryReturn#state}\n */\n state: ComputedRef<DataState<TData, TError, TDataInitial> | undefined>\n\n /**\n * `data` of the query entry.\n *\n * @see {@link UseQueryReturn#data}\n */\n data: ComputedRef<TData | TDataInitial | undefined>\n\n /**\n * `error` of the query entry.\n *\n * @see {@link UseQueryReturn#error}\n */\n error: ComputedRef<TError | null | undefined>\n\n /**\n * `status` of the query entry.\n *\n * @see {@link DataStateStatus}\n * @see {@link UseQueryReturn#status}\n */\n status: ComputedRef<DataStateStatus | undefined>\n\n /**\n * `asyncStatus` of the query entry.\n *\n * @see {@link AsyncStatus}\n * @see {@link UseQueryReturn#asyncStatus}\n */\n asyncStatus: ComputedRef<AsyncStatus | undefined>\n\n /**\n * Is the query entry currently pending or non existent.\n */\n isPending: ComputedRef<boolean>\n}\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param key - tagged key of the query entry to access\n */\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n key: MaybeRefOrGetter<EntryKeyTagged<TData, TError, TDataInitial>>,\n): UseQueryStateReturn<TData, TError, TDataInitial>\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param setupOptions - function that returns the query options based on the provided params\n * @param paramsGetter - getter for the parameters used to generate the query key\n *\n * @see {@link DefineQueryOptions}\n * @see {@link defineQueryOptions}\n */\nexport function useQueryState<Params, TData, TError, TDataInitial extends TData | undefined>(\n setupOptions: (params: Params) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter: MaybeRefOrGetter<NoInfer<Params>>,\n): UseQueryStateReturn<TData, TError, TDataInitial>\n\n/**\n * Reactive access to the state of a query entry without fetching it.\n *\n * @param key - key of the query entry to access\n */\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(key: MaybeRefOrGetter<EntryKey>): UseQueryStateReturn<TData, TError, TDataInitial>\n\nexport function useQueryState<\n TData,\n TError = ErrorDefault,\n TDataInitial extends TData | undefined = undefined,\n>(\n // NOTE: this version has better type inference but still imperfect\n ...[_keyOrSetup, paramsGetter]:\n | [key: MaybeRefOrGetter<EntryKeyTagged<TData, TError, TDataInitial> | EntryKey>]\n | [\n (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>,\n paramsGetter?: MaybeRefOrGetter<unknown>,\n ]\n): UseQueryStateReturn<TData, TError, TDataInitial> {\n const queryCache = useQueryCache()\n\n const key = paramsGetter\n ? computed(\n () =>\n // NOTE: we manually type cast here because TS cannot infer correctly in overloads\n (_keyOrSetup as (params: unknown) => DefineQueryOptions<TData, TError, TDataInitial>)(\n toValue(paramsGetter),\n ).key as EntryKeyTagged<TData, TError, TDataInitial>,\n )\n : (_keyOrSetup as EntryKeyTagged<TData, TError, TDataInitial>)\n\n const entry = computed(() => queryCache.get(toValue(key)))\n\n const state = computed(() => entry.value?.state.value)\n const data = computed(() => state.value?.data)\n const error = computed(() => state.value?.error)\n const status = computed(() => state.value?.status)\n const asyncStatus = computed(() => entry.value?.asyncStatus.value)\n const isPending = computed(() => !state.value || state.value.status === 'pending')\n\n return {\n state,\n data,\n error,\n status,\n asyncStatus,\n isPending,\n }\n}\n","import { toValue } from 'vue'\nimport type { UseQueryFnContext, UseQueryOptions } from './query-options'\nimport { useQuery } from './use-query'\nimport type { UseQueryReturn } from './use-query'\nimport type { ErrorDefault } from './types-extension'\n\n/**\n * Options for {@link useInfiniteQuery}.\n *\n * @experimental See https://github.com/posva/pinia-colada/issues/178\n */\nexport interface UseInfiniteQueryOptions<\n TData,\n TError,\n TDataInitial extends TData | undefined = TData | undefined,\n TPages = unknown,\n> extends Omit<\n UseQueryOptions<TData, TError, TDataInitial>,\n 'query' | 'initialData' | 'placeholderData' | 'key'\n> {\n key: UseQueryOptions<TPages, TError, TPages>['key']\n /**\n * The function that will be called to fetch the data. It **must** be async.\n */\n query: (pages: NoInfer<TPages>, context: UseQueryFnContext) => Promise<TData>\n initialPage: TPages | (() => TPages)\n merge: (result: NoInfer<TPages>, current: NoInfer<TData>) => NoInfer<TPages>\n}\n\nexport interface UseInfiniteQueryReturn<TPage = unknown, TError = ErrorDefault> extends Omit<\n UseQueryReturn<TPage, TError, TPage>,\n 'refetch' | 'refresh'\n> {\n loadMore: () => Promise<unknown>\n}\n\n/**\n * Store and merge paginated data into a single cache entry. Allows to handle\n * infinite scrolling. This is an **experimental** API and is subject to\n * change.\n *\n * @param options - Options to configure the infinite query.\n *\n * @experimental See https://github.com/posva/pinia-colada/issues/178\n */\nexport function useInfiniteQuery<TData, TError = ErrorDefault, TPage = unknown>(\n options: UseInfiniteQueryOptions<TData, TError, TData | undefined, TPage>,\n): UseInfiniteQueryReturn<TPage, TError> {\n let pages: TPage = toValue(options.initialPage)\n\n const { refetch, refresh, ...query } = useQuery<TPage, TError, TPage>({\n ...options,\n initialData: () => pages,\n // since we hijack the query function and augment the data, we cannot refetch the data\n // like usual\n staleTime: Infinity,\n async query(context) {\n const data: TData = await options.query(pages, context)\n return (pages = options.merge(pages, data))\n },\n })\n\n return {\n ...query,\n loadMore: () => refetch(),\n }\n}\n","import { inject } from 'vue'\nimport type { InjectionKey } from 'vue'\nimport type { ErrorDefault } from './types-extension'\nimport type { _ReduceContext, _MutationKey, UseMutationGlobalContext } from './use-mutation'\nimport type { _EmptyObject, _Awaitable } from './utils'\n\n/**\n * Options for mutations that can be globally overridden.\n */\nexport interface UseMutationOptionsGlobal {\n /**\n * Runs before a mutation is executed. It can return a value that will be\n * passed to `mutation`, `onSuccess`, `onError` and `onSettled`. If it\n * returns a promise, it will be awaited before running `mutation`.\n */\n onMutate?: (\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n ) => _Awaitable<UseMutationGlobalContext | undefined | void | null>\n\n /**\n * Runs when a mutation is successful.\n */\n onSuccess?: (\n /**\n * The result of the mutation.\n */\n data: unknown,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context.\n */\n context: UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Runs when a mutation encounters an error.\n */\n onError?: (\n /**\n * The error thrown by the mutation.\n */\n error: unknown,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | Partial<Record<keyof UseMutationGlobalContext, never>>\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Runs after the mutation is settled, regardless of the result.\n */\n onSettled?: (\n /**\n * The result of the mutation. `undefined` when a mutation failed.\n */\n data: unknown | undefined,\n /**\n * The error thrown by the mutation. `undefined` if the mutation was successful.\n */\n error: unknown | undefined,\n /**\n * The variables passed to the mutation.\n */\n vars: unknown,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | Partial<Record<keyof UseMutationGlobalContext, never>>\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | UseMutationGlobalContext,\n ) => unknown\n\n /**\n * Time in ms after which, once the mutation is no longer being used, it will be\n * garbage collected to free resources. Set to `false` to disable garbage\n * collection (not recommended).\n *\n * @default 60_000 (1 minute)\n */\n gcTime?: number | false\n}\n\n/**\n * Default options for `useMutation()`. Modifying this object will affect all mutations.\n */\nexport const USE_MUTATION_DEFAULTS = {\n gcTime: (1000 * 60) as NonNullable<UseMutationOptions['gcTime']>, // 1 minute\n} satisfies UseMutationOptionsGlobal\n\nexport type UseMutationOptionsWithDefaults<\n TData = unknown,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n> = UseMutationOptions<TData, TVars, TError, TContext> & typeof USE_MUTATION_DEFAULTS\n\n/**\n * Options to create a mutation.\n */\nexport interface UseMutationOptions<\n TData = unknown,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n> extends Pick<UseMutationOptionsGlobal, 'gcTime'> {\n /**\n * The key of the mutation. If the mutation is successful, it will invalidate the mutation with the same key and refetch it\n */\n mutation: (vars: TVars, context: _ReduceContext<NoInfer<TContext>>) => Promise<TData>\n\n /**\n * Optional key to identify the mutation globally and access it through other\n * helpers like `useMutationState()`. If you don't need to reference the\n * mutation elsewhere, you should ignore this option.\n */\n key?: _MutationKey<NoInfer<TVars>>\n\n /**\n * Runs before the mutation is executed. **It should be placed before `mutation()` for `context` to be inferred**. It\n * can return a value that will be passed to `mutation`, `onSuccess`, `onError` and `onSettled`. If it returns a\n * promise, it will be awaited before running `mutation`.\n *\n * @example\n * ```ts\n * useMutation({\n * // must appear before `mutation` for `{ foo: string }` to be inferred\n * // within `mutation`\n * onMutate() {\n * return { foo: 'bar' }\n * },\n * mutation: (id: number, { foo }) => {\n * console.log(foo) // bar\n * return fetch(`/api/todos/${id}`)\n * },\n * onSuccess(data, vars, context) {\n * console.log(context.foo) // bar\n * },\n * })\n * ```\n */\n onMutate?: (\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n context: UseMutationGlobalContext,\n ) => _Awaitable<TContext | undefined | void | null>\n\n /**\n * Runs if the mutation is successful.\n */\n onSuccess?: (\n /**\n * The result of the mutation.\n */\n data: NoInfer<TData>,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context.\n */\n context: UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>,\n ) => unknown\n\n /**\n * Runs if the mutation encounters an error.\n */\n onError?: (\n /**\n * The error thrown by the mutation.\n */\n error: TError,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | (Partial<Record<keyof UseMutationGlobalContext, never>> &\n Partial<Record<keyof _ReduceContext<NoInfer<TContext>>, never>>)\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | (UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>),\n ) => unknown\n\n /**\n * Runs after the mutation is settled, regardless of the result.\n */\n onSettled?: (\n /**\n * The result of the mutation. `undefined` if the mutation failed.\n */\n data: NoInfer<TData> | undefined,\n /**\n * The error thrown by the mutation. `undefined` if the mutation was successful.\n */\n error: TError | undefined,\n /**\n * The variables passed to the mutation.\n */\n vars: NoInfer<TVars>,\n /**\n * The merged context from `onMutate` and the global context. Properties returned by `onMutate` can be `undefined`\n * if `onMutate` throws.\n */\n context:\n | (Partial<Record<keyof UseMutationGlobalContext, never>> &\n Partial<Record<keyof _ReduceContext<NoInfer<TContext>>, never>>)\n // this is the success case where everything is defined\n // undefined if global onMutate throws\n | (UseMutationGlobalContext & _ReduceContext<NoInfer<TContext>>),\n ) => unknown\n}\n\n/**\n * Global default options for `useMutations()`.\n * @internal\n */\nexport type UseMutationOptionsGlobalDefaults = UseMutationOptionsGlobal &\n typeof USE_MUTATION_DEFAULTS\n\nexport const USE_MUTATION_OPTIONS_KEY: InjectionKey<UseMutationOptionsGlobalDefaults> =\n process.env.NODE_ENV !== 'production' ? Symbol('useMutationOptions') : Symbol()\n\n/**\n * Injects the global query options.\n *\n * @internal\n */\nexport const useMutationOptions = (): UseMutationOptionsGlobalDefaults =>\n inject(USE_MUTATION_OPTIONS_KEY, USE_MUTATION_DEFAULTS)\n","import type { ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState } from './data-state'\nimport { defineStore, skipHydrate } from 'pinia'\nimport { customRef, getCurrentScope, hasInjectionContext, shallowRef } from 'vue'\nimport { find, START_EXT } from './entry-keys'\nimport type { EntryFilter } from './entry-filter'\nimport type { _EmptyObject } from './utils'\nimport { noop, toValueWithArgs, warnOnce } from './utils'\nimport type { _ReduceContext } from './use-mutation'\nimport { useMutationOptions } from './mutation-options'\nimport type { UseMutationOptions, UseMutationOptionsWithDefaults } from './mutation-options'\nimport type { EntryKey } from './entry-keys'\n\n/**\n * Allows defining extensions to the mutation entry that are returned by `useMutation()`.\n */\nexport interface UseMutationEntryExtensions<\n // oxlint-disable-next-line no-unused-vars\n TData,\n // oxlint-disable-next-line no-unused-vars\n TVars,\n // oxlint-disable-next-line no-unused-vars\n TError,\n // oxlint-disable-next-line no-unused-vars\n TContext extends Record<any, any> = _EmptyObject,\n> {}\n\n/**\n * A mutation entry in the cache.\n */\nexport interface UseMutationEntry<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n> {\n /**\n * Unique id of the mutation entry. 0 if the entry is not yet in the cache.\n */\n id: number\n\n /**\n * The state of the mutation. Contains the data, error and status.\n */\n state: ShallowRef<DataState<TData, TError>>\n\n /**\n * The async status of the mutation.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * When was this data fetched the last time in ms\n */\n when: number\n\n /**\n * The key associated with this mutation entry.\n * Can be `undefined` if the entry has no key.\n */\n key: EntryKey | undefined\n\n /**\n * The variables used to call the mutation.\n */\n vars: TVars | undefined\n\n /**\n * Options used to create the mutation.\n */\n options: UseMutationOptionsWithDefaults<TData, TVars, TError, TContext>\n\n /**\n * Timeout id that scheduled a garbage collection. It is set here to clear it when the entry is used by a different component.\n */\n gcTimeout: ReturnType<typeof setTimeout> | undefined\n\n /**\n * Extensions to the mutation entry added by plugins.\n */\n ext: UseMutationEntryExtensions<TData, TVars, TError, TContext>\n}\n\n/**\n * Filter to get entries from the mutation cache.\n */\nexport type UseMutationEntryFilter = EntryFilter<UseMutationEntry>\n\n/**\n * The id of the store used for mutations.\n * @internal\n */\nexport const MUTATION_STORE_ID = '_pc_mutation'\n\n/**\n * Composable to get the cache of the mutations. As any other composable, it\n * can be used inside the `setup` function of a component, within another\n * composable, or in injectable contexts like stores and navigation guards.\n */\nexport const useMutationCache = /* @__PURE__ */ defineStore(MUTATION_STORE_ID, ({ action }) => {\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n // We have two versions of the cache, one that track changes and another that doesn't so the actions can be used\n // inside computed properties\n const cachesRaw = new Map<number, UseMutationEntry<unknown, any, unknown, any>>()\n let triggerCache!: () => void\n const caches = skipHydrate(\n customRef(\n (track, trigger) =>\n (triggerCache = trigger) && {\n // eslint-disable-next-line no-sequences\n get: () => (track(), cachesRaw),\n set:\n process.env.NODE_ENV !== 'production'\n ? () => {\n console.error(\n `[@pinia/colada]: The mutation cache instance cannot be set directly, it must be modified. This will fail in production.`,\n )\n }\n : noop,\n },\n ),\n )\n\n // this allows use to attach reactive effects to the scope later on\n const scope = getCurrentScope()!\n\n if (process.env.NODE_ENV !== 'production') {\n if (!hasInjectionContext()) {\n warnOnce(\n `useMutationCache() was called outside of an injection context (component setup, store, navigation guard) You will get a warning about \"inject\" being used incorrectly from Vue. Make sure to use it only in allowed places.\\n` +\n `See https://vuejs.org/guide/reusability/composables.html#usage-restrictions`,\n )\n }\n }\n\n const globalOptions = useMutationOptions()\n const defineMutationMap = new WeakMap<() => unknown, unknown>()\n\n let nextMutationId = 1\n\n /**\n * Creates a mutation entry and its state without adding it to the cache.\n * This allows for the state to exist in `useMutation()` before the mutation\n * is actually called. The mutation must be _ensured_ with {@link ensure}\n * before being called.\n *\n * @param options - options to create the mutation\n */\n const create = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n options: UseMutationOptionsWithDefaults<TData, TVars, TError, TContext>,\n key?: EntryKey | undefined,\n vars?: TVars,\n ): UseMutationEntry<TData, TVars, TError, TContext> =>\n scope.run(\n () =>\n ({\n // only ids > 0 are real ids\n id: 0,\n state: shallowRef<DataState<TData, TError>>({\n status: 'pending',\n data: undefined,\n error: null,\n }),\n gcTimeout: undefined,\n asyncStatus: shallowRef<AsyncStatus>('idle'),\n when: 0,\n vars,\n key,\n options,\n // eslint-disable-next-line ts/ban-ts-comment\n // @ts-ignore: some plugins are adding properties to the entry type\n ext: START_EXT,\n }) satisfies UseMutationEntry<TData, TVars, TError, TContext>,\n )!,\n )\n\n /**\n * Ensures a mutation entry in the cache by assigning it an `id` and a `key` based on `vars`. Usually, a mutation is ensured twice\n *\n * @param entry - entry to ensure\n * @param vars - variables to call the mutation with\n */\n function ensure<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n vars: NoInfer<TVars>,\n ): UseMutationEntry<TData, TVars, TError, TContext> {\n const options = entry.options\n const id = nextMutationId++\n const key: EntryKey | undefined = options.key && toValueWithArgs(options.key, vars)\n\n // override the existing entry and untrack it if it was already created\n entry = entry.id ? (untrack(entry), create(options, key, vars)) : entry\n entry.id = id\n entry.key = key\n entry.vars = vars\n\n // store the entry with the mutation ID as the map key\n cachesRaw.set(id, entry as unknown as UseMutationEntry)\n triggerCache()\n\n // extend the entry with plugins the first time only\n if (entry.ext === START_EXT) {\n entry.ext = {} as UseMutationEntryExtensions<TData, TVars, TError, TContext>\n extend(entry)\n }\n\n return entry\n }\n\n /**\n * Ensures a query created with {@link defineMutation} is present in the cache. If it's not, it creates a new one.\n * @param fn - function that defines the query\n */\n const ensureDefinedMutation = action(<T>(fn: () => T) => {\n let defineMutationResult = defineMutationMap.get(fn)\n if (!defineMutationResult) {\n defineMutationMap.set(fn, (defineMutationResult = scope.run(fn)))\n }\n\n return defineMutationResult\n })\n\n /**\n * Action called when an entry is ensured for the first time to allow plugins to extend it.\n *\n * @param _entry - the entry of the mutation to extend\n */\n const extend = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n _entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {},\n )\n\n /**\n * Gets a single mutation entry from the cache based on the ID of the mutation.\n *\n * @param id - the ID of the mutation\n */\n function get<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(id: number): UseMutationEntry<TData, TVars, TError, TContext> | undefined {\n return caches.value.get(id) as UseMutationEntry<TData, TVars, TError, TContext> | undefined\n }\n\n /**\n * Sets the state of a query entry in the cache and updates the\n * {@link UseQueryEntry['pending']['when'] | `when` property}. This action is\n * called every time the cache state changes and can be used by plugins to\n * detect changes.\n *\n * @param entry - the entry of the query to set the state\n * @param state - the new state of the entry\n */\n const setEntryState = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n // NOTE: NoInfer ensures correct inference of TData and TError\n state: DataState<NoInfer<TData>, NoInfer<TError>>,\n ) => {\n entry.state.value = state\n entry.when = Date.now()\n },\n )\n\n /**\n * Removes a mutation entry from the cache if it has an id. If it doesn't then it does nothing.\n *\n * @param entry - the entry of the mutation to remove\n */\n const remove = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {\n cachesRaw.delete(entry.id)\n triggerCache()\n },\n )\n\n /**\n * Returns all the entries in the cache that match the filters.\n * Note that you can have multiple entries with the exact same key if they\n * were called multiple times.\n *\n * @param filters - filters to apply to the entries\n */\n const getEntries = action((filters: UseMutationEntryFilter = {}): UseMutationEntry[] => {\n return [...find(caches.value, filters.key)].filter(\n (entry) =>\n (filters.status == null || entry.state.value.status === filters.status) &&\n (!filters.predicate || filters.predicate(entry)),\n )\n })\n\n /**\n * Untracks a mutation entry, scheduling garbage collection.\n *\n * @param entry - the entry of the mutation to untrack\n */\n const untrack = action(\n <\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(\n entry: UseMutationEntry<TData, TVars, TError, TContext>,\n ) => {\n // schedule a garbage collection if the entry is not active\n if (entry.gcTimeout) return\n\n // avoid setting a timeout with false, Infinity or NaN\n if ((Number.isFinite as (val: unknown) => val is number)(entry.options.gcTime)) {\n entry.gcTimeout = setTimeout(() => {\n remove(entry)\n }, entry.options.gcTime)\n }\n },\n )\n\n /**\n * Mutate a previously ensured mutation entry.\n *\n * @param entry - the entry to mutate\n */\n async function mutate<\n TData = unknown,\n TVars = unknown,\n TError = unknown,\n TContext extends Record<any, any> = _EmptyObject,\n >(entry: UseMutationEntry<TData, TVars, TError, TContext>): Promise<TData> {\n // the vars is set when the entry is ensured, we warn against it below\n const { vars, options } = entry as typeof entry & { vars: TVars }\n\n // DEV warnings\n if (process.env.NODE_ENV !== 'production') {\n const key = entry.key?.join('/')\n const keyMessage = key ? `with key \"${key}\"` : 'without a key'\n if (entry.id === 0) {\n console.error(\n `[@pinia/colada] A mutation entry ${keyMessage} was mutated before being ensured. If you are manually calling the \"mutationCache.mutate()\", you should always ensure the entry first If not, this is probably a bug. Please, open an issue on GitHub with a boiled down reproduction.`,\n )\n }\n if (\n // the entry has already an ongoing request\n entry.state.value.status !== 'pending' ||\n entry.asyncStatus.value === 'loading'\n ) {\n console.error(\n `[@pinia/colada] A mutation entry ${keyMessage} was reused. If you are manually calling the \"mutationCache.mutate()\", you should always ensure the entry first: \"mutationCache.mutate(mutationCache.ensure(entry, vars))\". If not this is probably a bug. Please, open an issue on GitHub with a boiled down reproduction.`,\n )\n }\n }\n\n entry.asyncStatus.value = 'loading'\n\n // TODO: AbortSignal that is aborted when the mutation is called again so we can throw in pending\n let currentData: TData | undefined\n let currentError: TError | undefined\n type OnMutateContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onMutate']\n >['1']\n type OnSuccessContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onSuccess']\n >['2']\n type OnErrorContext = Parameters<\n Required<UseMutationOptions<TData, TVars, TError, TContext>>['onError']\n >['2']\n\n let context: OnMutateContext | OnErrorContext | OnSuccessContext = {}\n\n try {\n const globalOnMutateContext = globalOptions.onMutate?.(vars)\n\n context =\n (globalOnMutateContext instanceof Promise\n ? await globalOnMutateContext\n : globalOnMutateContext) || {}\n\n const onMutateContext = (await options.onMutate?.(\n vars,\n context,\n // NOTE: the cast makes it easier to write without extra code. It's safe because { ...null, ...undefined } works and TContext must be a Record<any, any>\n )) as _ReduceContext<TContext>\n\n // we set the context here so it can be used by other hooks\n context = {\n ...context,\n ...onMutateContext,\n // NOTE: needed for onSuccess cast\n } satisfies OnSuccessContext\n\n const newData = (currentData = await options.mutation(vars, context as OnSuccessContext))\n\n await globalOptions.onSuccess?.(newData, vars, context as OnSuccessContext)\n await options.onSuccess?.(\n newData,\n vars,\n // NOTE: cast is safe because of the satisfies above\n // using a spread also works\n context as OnSuccessContext,\n )\n\n setEntryState(entry, {\n status: 'success',\n data: newData,\n error: null,\n })\n } catch (newError: unknown) {\n currentError = newError as TError\n await globalOptions.onError?.(currentError, vars, context)\n await options.onError?.(currentError, vars, context)\n setEntryState(entry, {\n status: 'error',\n data: entry.state.value.data,\n error: currentError,\n })\n throw newError\n } finally {\n // TODO: should we catch and log it?\n await globalOptions.onSettled?.(currentData, currentError, vars, context)\n await options.onSettled?.(currentData, currentError, vars, context)\n entry.asyncStatus.value = 'idle'\n }\n\n return currentData\n }\n\n return {\n caches,\n\n create,\n ensure,\n ensureDefinedMutation,\n mutate,\n remove,\n extend,\n get,\n\n setEntryState,\n getEntries,\n untrack,\n\n /**\n * Scope to track effects and components that use the mutation cache.\n * @internal\n */\n _s: scope,\n }\n})\n\n/**\n * The cache of the mutations. It's the store returned by {@link useMutationCache}.\n */\nexport type MutationCache = ReturnType<typeof useMutationCache>\n\n/**\n * Checks if the given object is a mutation cache. Used in SSR to apply custom serialization.\n *\n * @param cache - the object to check\n *\n * @see {@link MutationCache}\n */\nexport function isMutationCache(cache: unknown): cache is MutationCache {\n return (\n typeof cache === 'object' &&\n !!cache &&\n (cache as Record<string, unknown>).$id === MUTATION_STORE_ID\n )\n}\n","import type { ComputedRef, ShallowRef } from 'vue'\nimport type { AsyncStatus, DataState, DataStateStatus } from './data-state'\nimport type { EntryKey } from './entry-keys'\nimport type { ErrorDefault } from './types-extension'\nimport {\n computed,\n shallowRef,\n getCurrentInstance,\n getCurrentScope,\n onUnmounted,\n onScopeDispose,\n} from 'vue'\nimport { useMutationCache } from './mutation-store'\nimport type { UseMutationEntry } from './mutation-store'\nimport { noop } from './utils'\nimport type { _EmptyObject } from './utils'\nimport {\n USE_MUTATION_DEFAULTS,\n useMutationOptions,\n type UseMutationOptions,\n} from './mutation-options'\n\n/**\n * Valid keys for a mutation. Similar to query keys.\n *\n * @see {@link EntryKey}\n *\n * @internal\n */\nexport type _MutationKey<TVars> = EntryKey | ((vars: TVars) => EntryKey)\n\n/**\n * Removes the nullish types from the context type to make `A & TContext` work instead of yield `never`.\n *\n * @internal\n */\nexport type _ReduceContext<TContext> = TContext extends void | null | undefined\n ? _EmptyObject\n : Record<any, any> extends TContext\n ? _EmptyObject\n : TContext\n\n/**\n * Context object returned by a global `onMutate` function that is merged with the context returned by a local\n * `onMutate`.\n * @example\n * ```ts\n * declare module '@pinia/colada' {\n * export interface UseMutationGlobalContext {\n * router: Router // from vue-router\n * }\n * }\n *\n * // add the `router` to the context\n * app.use(MutationPlugin, {\n * onMutate() {\n * return { router }\n * },\n * })\n * ```\n */\nexport interface UseMutationGlobalContext {}\n\n// export const USE_MUTATIONS_DEFAULTS = {} satisfies Partial<UseMutationsOptions>\n\nexport interface UseMutationReturn<TData, TVars, TError> {\n key?: EntryKey | ((vars: NoInfer<TVars>) => EntryKey)\n\n /**\n * The combined state of the mutation. Contains its data, error, and status.\n * It enables type narrowing based on the {@link UseMutationReturn['status']}.\n */\n state: ComputedRef<DataState<TData, TError>>\n\n /**\n * The status of the mutation.\n *\n * @see {@link DataStateStatus}\n */\n status: ShallowRef<DataStateStatus>\n\n /**\n * Status of the mutation. Becomes `'loading'` while the mutation is being fetched, is `'idle'` otherwise.\n */\n asyncStatus: ShallowRef<AsyncStatus>\n\n /**\n * The result of the mutation. `undefined` if the mutation has not been called yet.\n */\n data: ShallowRef<TData | undefined>\n\n /**\n * The error of the mutation. `null` if the mutation has not been called yet or if it was successful.\n */\n error: ShallowRef<TError | null>\n\n /**\n * Whether the mutation is currently executing.\n */\n isLoading: ComputedRef<boolean>\n\n /**\n * The variables passed to the mutation. They are initially `undefined` and change every time the mutation is called.\n */\n variables: ShallowRef<TVars | undefined>\n\n /**\n * Calls the mutation and returns a promise with the result.\n *\n * @param vars - parameters to pass to the mutation\n */\n mutateAsync: unknown | void extends TVars ? () => Promise<TData> : (vars: TVars) => Promise<TData>\n\n /**\n * Calls the mutation without returning a promise to avoid unhandled promise rejections.\n *\n * @param args - parameters to pass to the mutation\n */\n mutate: (...args: unknown | void extends TVars ? [] : [vars: TVars]) => void\n\n /**\n * Resets the state of the mutation to its initial state.\n */\n reset: () => void\n}\n\n/**\n * Setups a mutation.\n *\n * @param options - Options to create the mutation\n *\n * @example\n * ```ts\n * const queryCache = useQueryCache()\n * const { mutate, status, error } = useMutation({\n * mutation: (id: number) => fetch(`/api/todos/${id}`),\n * onSuccess() {\n * queryCache.invalidateQueries('todos')\n * },\n * })\n * ```\n */\nexport function useMutation<\n TData,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n>(\n options: UseMutationOptions<TData, TVars, TError, TContext>,\n): UseMutationReturn<TData, TVars, TError> {\n const mutationCache = useMutationCache()\n const hasCurrentInstance = getCurrentInstance()\n const currentEffect = getCurrentScope()\n const optionDefaults = useMutationOptions()\n\n const mergedOptions = {\n ...optionDefaults,\n // global hooks are directly handled in the mutation cache\n onMutate: undefined,\n onSuccess: undefined,\n onError: undefined,\n onSettled: undefined,\n ...options,\n }\n\n // always create an initial entry with no key (cannot be computed without vars)\n const entry = shallowRef<UseMutationEntry<TData, TVars, TError, TContext>>(\n mutationCache.create(mergedOptions),\n )\n\n // Untrack the mutation entry when component or effect scope is disposed\n if (hasCurrentInstance) {\n onUnmounted(() => {\n mutationCache.untrack(entry.value)\n })\n }\n if (currentEffect) {\n onScopeDispose(() => {\n mutationCache.untrack(entry.value)\n })\n }\n\n const state = computed(() => entry.value.state.value)\n const status = computed(() => state.value.status)\n const data = computed(() => state.value.data)\n const error = computed(() => state.value.error)\n const asyncStatus = computed(() => entry.value.asyncStatus.value)\n const variables = computed(() => entry.value.vars)\n\n async function mutateAsync(vars: TVars): Promise<TData> {\n return mutationCache.mutate(\n // ensures we reuse the initial empty entry and adapt it or create a new one\n (entry.value = mutationCache.ensure(entry.value, vars)),\n )\n }\n\n function mutate(vars: NoInfer<TVars>) {\n mutateAsync(vars).catch(noop)\n }\n\n function reset() {\n entry.value = mutationCache.create(mergedOptions)\n }\n\n return {\n state,\n data,\n isLoading: computed(() => asyncStatus.value === 'loading'),\n status,\n variables,\n asyncStatus,\n error,\n // @ts-expect-error: because of the conditional type in UseMutationReturn\n // it would be nice to find a type-only refactor that works\n mutate,\n // @ts-expect-error: same as above\n mutateAsync,\n reset,\n }\n}\n","import { useMutationCache } from './mutation-store'\nimport type { ErrorDefault } from './types-extension'\nimport { useMutation } from './use-mutation'\nimport type { UseMutationReturn } from './use-mutation'\nimport type { UseMutationOptions } from './mutation-options'\nimport type { _EmptyObject } from './utils'\n\n/**\n * Define a mutation with the given options. Similar to `useMutation(options)` but allows you to reuse the mutation in\n * multiple places.\n *\n * @param options - the options to define the mutation\n * @example\n * ```ts\n * const useCreateTodo = defineMutation({\n * mutation: (todoText: string) =>\n * fetch('/api/todos', {\n * method: 'POST',\n * body: JSON.stringify({ text: todoText }),\n * }),\n * })\n * ```\n */\nexport function defineMutation<\n TData,\n TVars = void,\n TError = ErrorDefault,\n TContext extends Record<any, any> = _EmptyObject,\n>(\n options: UseMutationOptions<TData, TVars, TError, TContext>,\n): () => UseMutationReturn<TData, TVars, TError>\n\n/**\n * Define a mutation with a function setup. Allows to return arbitrary values from the mutation function, create\n * contextual refs, rename the returned values, etc.\n *\n * @param setup - a function to setup the mutation\n * @example\n * ```ts\n * const useCreateTodo = defineMutation(() => {\n * const todoText = ref('')\n * const { data, mutate, ...rest } = useMutation({\n * mutation: () =>\n * fetch('/api/todos', {\n * method: 'POST',\n * body: JSON.stringify({ text: todoText.value }),\n * }),\n * })\n * // expose the todoText ref and rename other methods for convenience\n * return { ...rest, createTodo: mutate, todo: data, todoText }\n * })\n * ```\n */\nexport function defineMutation<T>(setup: () => T): () => T\nexport function defineMutation(\n optionsOrSetup: UseMutationOptions | (() => unknown),\n): () => unknown {\n const setupFn =\n typeof optionsOrSetup === 'function' ? optionsOrSetup : () => useMutation(optionsOrSetup)\n return () => {\n // TODO: provide a way to clean them up `mutationCache.clear()`\n const mutationCache = useMutationCache()\n return mutationCache.ensureDefinedMutation(setupFn)\n }\n}\n","//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target$1) => (target$1 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target$1, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target$1, mod));\n\n//#endregion\n//#region src/constants.ts\nconst VIEW_MODE_STORAGE_KEY = \"__vue-devtools-view-mode__\";\nconst VITE_PLUGIN_DETECTED_STORAGE_KEY = \"__vue-devtools-vite-plugin-detected__\";\nconst VITE_PLUGIN_CLIENT_URL_STORAGE_KEY = \"__vue-devtools-vite-plugin-client-url__\";\nconst BROADCAST_CHANNEL_NAME = \"__vue-devtools-broadcast-channel__\";\n\n//#endregion\n//#region src/env.ts\nconst isBrowser = typeof navigator !== \"undefined\";\nconst target = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : typeof global !== \"undefined\" ? global : {};\nconst isInChromePanel = typeof target.chrome !== \"undefined\" && !!target.chrome.devtools;\nconst isInIframe = isBrowser && target.self !== target.top;\nconst isInElectron = typeof navigator !== \"undefined\" && navigator.userAgent?.toLowerCase().includes(\"electron\");\nconst isNuxtApp = typeof window !== \"undefined\" && !!window.__NUXT__;\nconst isInSeparateWindow = !isInIframe && !isInChromePanel && !isInElectron;\n\n//#endregion\n//#region ../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\nvar require_rfdc = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js\": ((exports, module) => {\n\tmodule.exports = rfdc$1;\n\tfunction copyBuffer(cur) {\n\t\tif (cur instanceof Buffer) return Buffer.from(cur);\n\t\treturn new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);\n\t}\n\tfunction rfdc$1(opts) {\n\t\topts = opts || {};\n\t\tif (opts.circles) return rfdcCircles(opts);\n\t\tconst constructorHandlers = /* @__PURE__ */ new Map();\n\t\tconstructorHandlers.set(Date, (o) => new Date(o));\n\t\tconstructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n\t\tconstructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n\t\tif (opts.constructorHandlers) for (const handler$1 of opts.constructorHandlers) constructorHandlers.set(handler$1[0], handler$1[1]);\n\t\tlet handler = null;\n\t\treturn opts.proto ? cloneProto : clone;\n\t\tfunction cloneArray(a, fn) {\n\t\t\tconst keys = Object.keys(a);\n\t\t\tconst a2 = new Array(keys.length);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst k = keys[i];\n\t\t\t\tconst cur = a[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) a2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur);\n\t\t\t\telse a2[k] = fn(cur);\n\t\t\t}\n\t\t\treturn a2;\n\t\t}\n\t\tfunction clone(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, clone);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone);\n\t\t\tconst o2 = {};\n\t\t\tfor (const k in o) {\n\t\t\t\tif (Object.hasOwnProperty.call(o, k) === false) continue;\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse o2[k] = clone(cur);\n\t\t\t}\n\t\t\treturn o2;\n\t\t}\n\t\tfunction cloneProto(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, cloneProto);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto);\n\t\t\tconst o2 = {};\n\t\t\tfor (const k in o) {\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse o2[k] = cloneProto(cur);\n\t\t\t}\n\t\t\treturn o2;\n\t\t}\n\t}\n\tfunction rfdcCircles(opts) {\n\t\tconst refs = [];\n\t\tconst refsNew = [];\n\t\tconst constructorHandlers = /* @__PURE__ */ new Map();\n\t\tconstructorHandlers.set(Date, (o) => new Date(o));\n\t\tconstructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)));\n\t\tconstructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)));\n\t\tif (opts.constructorHandlers) for (const handler$1 of opts.constructorHandlers) constructorHandlers.set(handler$1[0], handler$1[1]);\n\t\tlet handler = null;\n\t\treturn opts.proto ? cloneProto : clone;\n\t\tfunction cloneArray(a, fn) {\n\t\t\tconst keys = Object.keys(a);\n\t\t\tconst a2 = new Array(keys.length);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst k = keys[i];\n\t\t\t\tconst cur = a[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) a2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst index = refs.indexOf(cur);\n\t\t\t\t\tif (index !== -1) a2[k] = refsNew[index];\n\t\t\t\t\telse a2[k] = fn(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn a2;\n\t\t}\n\t\tfunction clone(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, clone);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone);\n\t\t\tconst o2 = {};\n\t\t\trefs.push(o);\n\t\t\trefsNew.push(o2);\n\t\t\tfor (const k in o) {\n\t\t\t\tif (Object.hasOwnProperty.call(o, k) === false) continue;\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst i = refs.indexOf(cur);\n\t\t\t\t\tif (i !== -1) o2[k] = refsNew[i];\n\t\t\t\t\telse o2[k] = clone(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\trefs.pop();\n\t\t\trefsNew.pop();\n\t\t\treturn o2;\n\t\t}\n\t\tfunction cloneProto(o) {\n\t\t\tif (typeof o !== \"object\" || o === null) return o;\n\t\t\tif (Array.isArray(o)) return cloneArray(o, cloneProto);\n\t\t\tif (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto);\n\t\t\tconst o2 = {};\n\t\t\trefs.push(o);\n\t\t\trefsNew.push(o2);\n\t\t\tfor (const k in o) {\n\t\t\t\tconst cur = o[k];\n\t\t\t\tif (typeof cur !== \"object\" || cur === null) o2[k] = cur;\n\t\t\t\telse if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto);\n\t\t\t\telse if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur);\n\t\t\t\telse {\n\t\t\t\t\tconst i = refs.indexOf(cur);\n\t\t\t\t\tif (i !== -1) o2[k] = refsNew[i];\n\t\t\t\t\telse o2[k] = cloneProto(cur);\n\t\t\t\t}\n\t\t\t}\n\t\t\trefs.pop();\n\t\t\trefsNew.pop();\n\t\t\treturn o2;\n\t\t}\n\t}\n}) });\n\n//#endregion\n//#region src/general.ts\nvar import_rfdc = /* @__PURE__ */ __toESM(require_rfdc(), 1);\nfunction NOOP() {}\nconst isNumeric = (str) => `${+str}` === str;\nconst isMacOS = () => navigator?.platform ? navigator?.platform.toLowerCase().includes(\"mac\") : /Macintosh/.test(navigator.userAgent);\nconst classifyRE = /(?:^|[-_/])(\\w)/g;\nconst camelizeRE = /-(\\w)/g;\nconst kebabizeRE = /([a-z0-9])([A-Z])/g;\nfunction toUpper(_, c) {\n\treturn c ? c.toUpperCase() : \"\";\n}\nfunction classify(str) {\n\treturn str && `${str}`.replace(classifyRE, toUpper);\n}\nfunction camelize(str) {\n\treturn str && str.replace(camelizeRE, toUpper);\n}\nfunction kebabize(str) {\n\treturn str && str.replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {\n\t\treturn `${lowerCaseCharacter}-${upperCaseLetter}`;\n\t}).toLowerCase();\n}\nfunction basename(filename, ext) {\n\tlet normalizedFilename = filename.replace(/^[a-z]:/i, \"\").replace(/\\\\/g, \"/\");\n\tif (normalizedFilename.endsWith(`index${ext}`)) normalizedFilename = normalizedFilename.replace(`/index${ext}`, ext);\n\tconst lastSlashIndex = normalizedFilename.lastIndexOf(\"/\");\n\tconst baseNameWithExt = normalizedFilename.substring(lastSlashIndex + 1);\n\tif (ext) {\n\t\tconst extIndex = baseNameWithExt.lastIndexOf(ext);\n\t\treturn baseNameWithExt.substring(0, extIndex);\n\t}\n\treturn \"\";\n}\nfunction sortByKey(state) {\n\treturn state && state.slice().sort((a, b) => {\n\t\tif (a.key < b.key) return -1;\n\t\tif (a.key > b.key) return 1;\n\t\treturn 0;\n\t});\n}\nconst HTTP_URL_RE = /^https?:\\/\\//;\n/**\n* Check a string is start with `/` or a valid http url\n*/\nfunction isUrlString(str) {\n\treturn str.startsWith(\"/\") || HTTP_URL_RE.test(str);\n}\n/**\n* @copyright [rfdc](https://github.com/davidmarkclements/rfdc)\n* @description A really fast deep clone alternative\n*/\nconst deepClone = (0, import_rfdc.default)({ circles: true });\nfunction randomStr() {\n\treturn Math.random().toString(36).slice(2);\n}\nfunction isObject(value) {\n\treturn typeof value === \"object\" && !Array.isArray(value) && value !== null;\n}\nfunction isArray(value) {\n\treturn Array.isArray(value);\n}\nfunction isSet(value) {\n\treturn value instanceof Set;\n}\nfunction isMap(value) {\n\treturn value instanceof Map;\n}\n\n//#endregion\nexport { BROADCAST_CHANNEL_NAME, NOOP, VIEW_MODE_STORAGE_KEY, VITE_PLUGIN_CLIENT_URL_STORAGE_KEY, VITE_PLUGIN_DETECTED_STORAGE_KEY, basename, camelize, classify, deepClone, isArray, isBrowser, isInChromePanel, isInElectron, isInIframe, isInSeparateWindow, isMacOS, isMap, isNumeric, isNuxtApp, isObject, isSet, isUrlString, kebabize, randomStr, sortByKey, target };","//#region src/index.ts\nconst DEBOUNCE_DEFAULTS = { trailing: true };\n/**\nDebounce functions\n@param fn - Promise-returning/async function to debounce.\n@param wait - Milliseconds to wait before calling `fn`. Default value is 25ms\n@returns A function that delays calling `fn` until after `wait` milliseconds have elapsed since the last time it was called.\n@example\n```\nimport { debounce } from 'perfect-debounce';\nconst expensiveCall = async input => input;\nconst debouncedFn = debounce(expensiveCall, 200);\nfor (const number of [1, 2, 3]) {\nconsole.log(await debouncedFn(number));\n}\n//=> 1\n//=> 2\n//=> 3\n```\n*/\nfunction debounce(fn, wait = 25, options = {}) {\n\toptions = {\n\t\t...DEBOUNCE_DEFAULTS,\n\t\t...options\n\t};\n\tif (!Number.isFinite(wait)) throw new TypeError(\"Expected `wait` to be a finite number\");\n\tlet leadingValue;\n\tlet timeout;\n\tlet resolveList = [];\n\tlet currentPromise;\n\tlet trailingArgs;\n\tconst applyFn = (_this, args) => {\n\t\tcurrentPromise = _applyPromised(fn, _this, args);\n\t\tcurrentPromise.finally(() => {\n\t\t\tcurrentPromise = null;\n\t\t\tif (options.trailing && trailingArgs && !timeout) {\n\t\t\t\tconst promise = applyFn(_this, trailingArgs);\n\t\t\t\ttrailingArgs = null;\n\t\t\t\treturn promise;\n\t\t\t}\n\t\t});\n\t\treturn currentPromise;\n\t};\n\tconst debounced = function(...args) {\n\t\tif (options.trailing) trailingArgs = args;\n\t\tif (currentPromise) return currentPromise;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst shouldCallNow = !timeout && options.leading;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\ttimeout = null;\n\t\t\t\tconst promise = options.leading ? leadingValue : applyFn(this, args);\n\t\t\t\ttrailingArgs = null;\n\t\t\t\tfor (const _resolve of resolveList) _resolve(promise);\n\t\t\t\tresolveList = [];\n\t\t\t}, wait);\n\t\t\tif (shouldCallNow) {\n\t\t\t\tleadingValue = applyFn(this, args);\n\t\t\t\tresolve(leadingValue);\n\t\t\t} else resolveList.push(resolve);\n\t\t});\n\t};\n\tconst _clearTimeout = (timer) => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimeout = null;\n\t\t}\n\t};\n\tdebounced.isPending = () => !!timeout;\n\tdebounced.cancel = () => {\n\t\t_clearTimeout(timeout);\n\t\tresolveList = [];\n\t\ttrailingArgs = null;\n\t};\n\tdebounced.flush = () => {\n\t\t_clearTimeout(timeout);\n\t\tif (!trailingArgs || currentPromise) return;\n\t\tconst args = trailingArgs;\n\t\ttrailingArgs = null;\n\t\treturn applyFn(this, args);\n\t};\n\treturn debounced;\n}\nasync function _applyPromised(fn, _this, args) {\n\treturn await fn.apply(_this, args);\n}\n\n//#endregion\nexport { debounce };","function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n","import { basename, camelize, classify, deepClone, isBrowser, isNuxtApp, isUrlString, kebabize, target } from \"@vue/devtools-shared\";\nimport { debounce } from \"perfect-debounce\";\nimport { createHooks } from \"hookable\";\nimport { createBirpc, createBirpcGroup } from \"birpc\";\n\n//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target$1) => (target$1 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target$1, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target$1, mod));\n\n//#endregion\n//#region src/compat/index.ts\nfunction onLegacyDevToolsPluginApiAvailable(cb) {\n\tif (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__) {\n\t\tcb();\n\t\treturn;\n\t}\n\tObject.defineProperty(target, \"__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__\", {\n\t\tset(value) {\n\t\t\tif (value) cb();\n\t\t},\n\t\tconfigurable: true\n\t});\n}\n\n//#endregion\n//#region src/core/component/utils/index.ts\nfunction getComponentTypeName(options) {\n\tconst name = options.name || options._componentTag || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || options.__name;\n\tif (name === \"index\" && options.__file?.endsWith(\"index.vue\")) return \"\";\n\treturn name;\n}\nfunction getComponentFileName(options) {\n\tconst file = options.__file;\n\tif (file) return classify(basename(file, \".vue\"));\n}\nfunction getComponentName(options) {\n\tconst name = options.displayName || options.name || options._componentTag;\n\tif (name) return name;\n\treturn getComponentFileName(options);\n}\nfunction saveComponentGussedName(instance, name) {\n\tinstance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name;\n\treturn name;\n}\nfunction getAppRecord(instance) {\n\tif (instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__) return instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n\telse if (instance.root) return instance.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n}\nasync function getComponentId(options) {\n\tconst { app, uid, instance } = options;\n\ttry {\n\t\tif (instance.__VUE_DEVTOOLS_NEXT_UID__) return instance.__VUE_DEVTOOLS_NEXT_UID__;\n\t\tconst appRecord = await getAppRecord(app);\n\t\tif (!appRecord) return null;\n\t\tconst isRoot = appRecord.rootInstance === instance;\n\t\treturn `${appRecord.id}:${isRoot ? \"root\" : uid}`;\n\t} catch (e) {}\n}\nfunction isFragment(instance) {\n\tconst subTreeType = instance.subTree?.type;\n\tconst appRecord = getAppRecord(instance);\n\tif (appRecord) return appRecord?.types?.Fragment === subTreeType;\n\treturn false;\n}\nfunction isBeingDestroyed(instance) {\n\treturn instance._isBeingDestroyed || instance.isUnmounted;\n}\n/**\n* Get the appropriate display name for an instance.\n*\n* @param {Vue} instance\n* @return {string}\n*/\nfunction getInstanceName(instance) {\n\tconst name = getComponentTypeName(instance?.type || {});\n\tif (name) return name;\n\tif (instance?.root === instance) return \"Root\";\n\tfor (const key in instance.parent?.type?.components) if (instance.parent.type.components[key] === instance?.type) return saveComponentGussedName(instance, key);\n\tfor (const key in instance.appContext?.components) if (instance.appContext.components[key] === instance?.type) return saveComponentGussedName(instance, key);\n\tconst fileName = getComponentFileName(instance?.type || {});\n\tif (fileName) return fileName;\n\treturn \"Anonymous Component\";\n}\n/**\n* Returns a devtools unique id for instance.\n* @param {Vue} instance\n*/\nfunction getUniqueComponentId(instance) {\n\treturn `${instance?.appContext?.app?.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ ?? 0}:${instance === instance?.root ? \"root\" : instance.uid}`;\n}\nfunction getRenderKey(value) {\n\tif (value == null) return \"\";\n\tif (typeof value === \"number\") return value;\n\telse if (typeof value === \"string\") return `'${value}'`;\n\telse if (Array.isArray(value)) return \"Array\";\n\telse return \"Object\";\n}\nfunction returnError(cb) {\n\ttry {\n\t\treturn cb();\n\t} catch (e) {\n\t\treturn e;\n\t}\n}\nfunction getComponentInstance(appRecord, instanceId) {\n\tinstanceId = instanceId || `${appRecord.id}:root`;\n\treturn appRecord.instanceMap.get(instanceId) || appRecord.instanceMap.get(\":root\");\n}\nfunction ensurePropertyExists(obj, key, skipObjCheck = false) {\n\treturn skipObjCheck ? key in obj : typeof obj === \"object\" && obj !== null ? key in obj : false;\n}\n\n//#endregion\n//#region src/core/component/state/bounding-rect.ts\nfunction createRect() {\n\tconst rect = {\n\t\ttop: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tget width() {\n\t\t\treturn rect.right - rect.left;\n\t\t},\n\t\tget height() {\n\t\t\treturn rect.bottom - rect.top;\n\t\t}\n\t};\n\treturn rect;\n}\nlet range;\nfunction getTextRect(node) {\n\tif (!range) range = document.createRange();\n\trange.selectNode(node);\n\treturn range.getBoundingClientRect();\n}\nfunction getFragmentRect(vnode) {\n\tconst rect = createRect();\n\tif (!vnode.children) return rect;\n\tfor (let i = 0, l = vnode.children.length; i < l; i++) {\n\t\tconst childVnode = vnode.children[i];\n\t\tlet childRect;\n\t\tif (childVnode.component) childRect = getComponentBoundingRect(childVnode.component);\n\t\telse if (childVnode.el) {\n\t\t\tconst el = childVnode.el;\n\t\t\tif (el.nodeType === 1 || el.getBoundingClientRect) childRect = el.getBoundingClientRect();\n\t\t\telse if (el.nodeType === 3 && el.data.trim()) childRect = getTextRect(el);\n\t\t}\n\t\tif (childRect) mergeRects(rect, childRect);\n\t}\n\treturn rect;\n}\nfunction mergeRects(a, b) {\n\tif (!a.top || b.top < a.top) a.top = b.top;\n\tif (!a.bottom || b.bottom > a.bottom) a.bottom = b.bottom;\n\tif (!a.left || b.left < a.left) a.left = b.left;\n\tif (!a.right || b.right > a.right) a.right = b.right;\n\treturn a;\n}\nconst DEFAULT_RECT = {\n\ttop: 0,\n\tleft: 0,\n\tright: 0,\n\tbottom: 0,\n\twidth: 0,\n\theight: 0\n};\nfunction getComponentBoundingRect(instance) {\n\tconst el = instance.subTree.el;\n\tif (typeof window === \"undefined\") return DEFAULT_RECT;\n\tif (isFragment(instance)) return getFragmentRect(instance.subTree);\n\telse if (el?.nodeType === 1) return el?.getBoundingClientRect();\n\telse if (instance.subTree.component) return getComponentBoundingRect(instance.subTree.component);\n\telse return DEFAULT_RECT;\n}\n\n//#endregion\n//#region src/core/component/tree/el.ts\nfunction getRootElementsFromComponentInstance(instance) {\n\tif (isFragment(instance)) return getFragmentRootElements(instance.subTree);\n\tif (!instance.subTree) return [];\n\treturn [instance.subTree.el];\n}\nfunction getFragmentRootElements(vnode) {\n\tif (!vnode.children) return [];\n\tconst list = [];\n\tvnode.children.forEach((childVnode) => {\n\t\tif (childVnode.component) list.push(...getRootElementsFromComponentInstance(childVnode.component));\n\t\telse if (childVnode?.el) list.push(childVnode.el);\n\t});\n\treturn list;\n}\n\n//#endregion\n//#region src/core/component-highlighter/index.ts\nconst CONTAINER_ELEMENT_ID = \"__vue-devtools-component-inspector__\";\nconst CARD_ELEMENT_ID = \"__vue-devtools-component-inspector__card__\";\nconst COMPONENT_NAME_ELEMENT_ID = \"__vue-devtools-component-inspector__name__\";\nconst INDICATOR_ELEMENT_ID = \"__vue-devtools-component-inspector__indicator__\";\nconst containerStyles = {\n\tdisplay: \"block\",\n\tzIndex: 2147483640,\n\tposition: \"fixed\",\n\tbackgroundColor: \"#42b88325\",\n\tborder: \"1px solid #42b88350\",\n\tborderRadius: \"5px\",\n\ttransition: \"all 0.1s ease-in\",\n\tpointerEvents: \"none\"\n};\nconst cardStyles = {\n\tfontFamily: \"Arial, Helvetica, sans-serif\",\n\tpadding: \"5px 8px\",\n\tborderRadius: \"4px\",\n\ttextAlign: \"left\",\n\tposition: \"absolute\",\n\tleft: 0,\n\tcolor: \"#e9e9e9\",\n\tfontSize: \"14px\",\n\tfontWeight: 600,\n\tlineHeight: \"24px\",\n\tbackgroundColor: \"#42b883\",\n\tboxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)\"\n};\nconst indicatorStyles = {\n\tdisplay: \"inline-block\",\n\tfontWeight: 400,\n\tfontStyle: \"normal\",\n\tfontSize: \"12px\",\n\topacity: .7\n};\nfunction getContainerElement() {\n\treturn document.getElementById(CONTAINER_ELEMENT_ID);\n}\nfunction getCardElement() {\n\treturn document.getElementById(CARD_ELEMENT_ID);\n}\nfunction getIndicatorElement() {\n\treturn document.getElementById(INDICATOR_ELEMENT_ID);\n}\nfunction getNameElement() {\n\treturn document.getElementById(COMPONENT_NAME_ELEMENT_ID);\n}\nfunction getStyles(bounds) {\n\treturn {\n\t\tleft: `${Math.round(bounds.left * 100) / 100}px`,\n\t\ttop: `${Math.round(bounds.top * 100) / 100}px`,\n\t\twidth: `${Math.round(bounds.width * 100) / 100}px`,\n\t\theight: `${Math.round(bounds.height * 100) / 100}px`\n\t};\n}\nfunction create(options) {\n\tconst containerEl = document.createElement(\"div\");\n\tcontainerEl.id = options.elementId ?? CONTAINER_ELEMENT_ID;\n\tObject.assign(containerEl.style, {\n\t\t...containerStyles,\n\t\t...getStyles(options.bounds),\n\t\t...options.style\n\t});\n\tconst cardEl = document.createElement(\"span\");\n\tcardEl.id = CARD_ELEMENT_ID;\n\tObject.assign(cardEl.style, {\n\t\t...cardStyles,\n\t\ttop: options.bounds.top < 35 ? 0 : \"-35px\"\n\t});\n\tconst nameEl = document.createElement(\"span\");\n\tnameEl.id = COMPONENT_NAME_ELEMENT_ID;\n\tnameEl.innerHTML = `&lt;${options.name}&gt;&nbsp;&nbsp;`;\n\tconst indicatorEl = document.createElement(\"i\");\n\tindicatorEl.id = INDICATOR_ELEMENT_ID;\n\tindicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n\tObject.assign(indicatorEl.style, indicatorStyles);\n\tcardEl.appendChild(nameEl);\n\tcardEl.appendChild(indicatorEl);\n\tcontainerEl.appendChild(cardEl);\n\tdocument.body.appendChild(containerEl);\n\treturn containerEl;\n}\nfunction update(options) {\n\tconst containerEl = getContainerElement();\n\tconst cardEl = getCardElement();\n\tconst nameEl = getNameElement();\n\tconst indicatorEl = getIndicatorElement();\n\tif (containerEl) {\n\t\tObject.assign(containerEl.style, {\n\t\t\t...containerStyles,\n\t\t\t...getStyles(options.bounds)\n\t\t});\n\t\tObject.assign(cardEl.style, { top: options.bounds.top < 35 ? 0 : \"-35px\" });\n\t\tnameEl.innerHTML = `&lt;${options.name}&gt;&nbsp;&nbsp;`;\n\t\tindicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;\n\t}\n}\nfunction highlight(instance) {\n\tconst bounds = getComponentBoundingRect(instance);\n\tif (!bounds.width && !bounds.height) return;\n\tconst name = getInstanceName(instance);\n\tgetContainerElement() ? update({\n\t\tbounds,\n\t\tname\n\t}) : create({\n\t\tbounds,\n\t\tname\n\t});\n}\nfunction unhighlight() {\n\tconst el = getContainerElement();\n\tif (el) el.style.display = \"none\";\n}\nlet inspectInstance = null;\nfunction inspectFn(e) {\n\tconst target$1 = e.target;\n\tif (target$1) {\n\t\tconst instance = target$1.__vueParentComponent;\n\t\tif (instance) {\n\t\t\tinspectInstance = instance;\n\t\t\tif (instance.vnode.el) {\n\t\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\t\tconst name = getInstanceName(instance);\n\t\t\t\tgetContainerElement() ? update({\n\t\t\t\t\tbounds,\n\t\t\t\t\tname\n\t\t\t\t}) : create({\n\t\t\t\t\tbounds,\n\t\t\t\t\tname\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\nfunction selectComponentFn(e, cb) {\n\te.preventDefault();\n\te.stopPropagation();\n\tif (inspectInstance) cb(getUniqueComponentId(inspectInstance));\n}\nlet inspectComponentHighLighterSelectFn = null;\nfunction cancelInspectComponentHighLighter() {\n\tunhighlight();\n\twindow.removeEventListener(\"mouseover\", inspectFn);\n\twindow.removeEventListener(\"click\", inspectComponentHighLighterSelectFn, true);\n\tinspectComponentHighLighterSelectFn = null;\n}\nfunction inspectComponentHighLighter() {\n\twindow.addEventListener(\"mouseover\", inspectFn);\n\treturn new Promise((resolve) => {\n\t\tfunction onSelect(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tselectComponentFn(e, (id) => {\n\t\t\t\twindow.removeEventListener(\"click\", onSelect, true);\n\t\t\t\tinspectComponentHighLighterSelectFn = null;\n\t\t\t\twindow.removeEventListener(\"mouseover\", inspectFn);\n\t\t\t\tconst el = getContainerElement();\n\t\t\t\tif (el) el.style.display = \"none\";\n\t\t\t\tresolve(JSON.stringify({ id }));\n\t\t\t});\n\t\t}\n\t\tinspectComponentHighLighterSelectFn = onSelect;\n\t\twindow.addEventListener(\"click\", onSelect, true);\n\t});\n}\nfunction scrollToComponent(options) {\n\tconst instance = getComponentInstance(activeAppRecord.value, options.id);\n\tif (instance) {\n\t\tconst [el] = getRootElementsFromComponentInstance(instance);\n\t\tif (typeof el.scrollIntoView === \"function\") el.scrollIntoView({ behavior: \"smooth\" });\n\t\telse {\n\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\tconst scrollTarget = document.createElement(\"div\");\n\t\t\tconst styles = {\n\t\t\t\t...getStyles(bounds),\n\t\t\t\tposition: \"absolute\"\n\t\t\t};\n\t\t\tObject.assign(scrollTarget.style, styles);\n\t\t\tdocument.body.appendChild(scrollTarget);\n\t\t\tscrollTarget.scrollIntoView({ behavior: \"smooth\" });\n\t\t\tsetTimeout(() => {\n\t\t\t\tdocument.body.removeChild(scrollTarget);\n\t\t\t}, 2e3);\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tconst bounds = getComponentBoundingRect(instance);\n\t\t\tif (bounds.width || bounds.height) {\n\t\t\t\tconst name = getInstanceName(instance);\n\t\t\t\tconst el$1 = getContainerElement();\n\t\t\t\tel$1 ? update({\n\t\t\t\t\t...options,\n\t\t\t\t\tname,\n\t\t\t\t\tbounds\n\t\t\t\t}) : create({\n\t\t\t\t\t...options,\n\t\t\t\t\tname,\n\t\t\t\t\tbounds\n\t\t\t\t});\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (el$1) el$1.style.display = \"none\";\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t}, 1200);\n\t}\n}\n\n//#endregion\n//#region src/core/component-inspector/index.ts\ntarget.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ ??= true;\nfunction toggleComponentInspectorEnabled(enabled) {\n\ttarget.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = enabled;\n}\nfunction waitForInspectorInit(cb) {\n\tlet total = 0;\n\tconst timer = setInterval(() => {\n\t\tif (target.__VUE_INSPECTOR__) {\n\t\t\tclearInterval(timer);\n\t\t\ttotal += 30;\n\t\t\tcb();\n\t\t}\n\t\tif (total >= 5e3) clearInterval(timer);\n\t}, 30);\n}\nfunction setupInspector() {\n\tconst inspector = target.__VUE_INSPECTOR__;\n\tconst _openInEditor = inspector.openInEditor;\n\tinspector.openInEditor = async (...params) => {\n\t\tinspector.disable();\n\t\t_openInEditor(...params);\n\t};\n}\nfunction getComponentInspector() {\n\treturn new Promise((resolve) => {\n\t\tfunction setup() {\n\t\t\tsetupInspector();\n\t\t\tresolve(target.__VUE_INSPECTOR__);\n\t\t}\n\t\tif (!target.__VUE_INSPECTOR__) waitForInspectorInit(() => {\n\t\t\tsetup();\n\t\t});\n\t\telse setup();\n\t});\n}\n\n//#endregion\n//#region src/shared/stub-vue.ts\n/**\n* To prevent include a **HUGE** vue package in the final bundle of chrome ext / electron\n* we stub the necessary vue module.\n* This implementation is based on the 1c3327a0fa5983aa9078e3f7bb2330f572435425 commit\n*/\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/constants.ts#L17-L23)\n*/\nlet ReactiveFlags = /* @__PURE__ */ function(ReactiveFlags$1) {\n\tReactiveFlags$1[\"SKIP\"] = \"__v_skip\";\n\tReactiveFlags$1[\"IS_REACTIVE\"] = \"__v_isReactive\";\n\tReactiveFlags$1[\"IS_READONLY\"] = \"__v_isReadonly\";\n\tReactiveFlags$1[\"IS_SHALLOW\"] = \"__v_isShallow\";\n\tReactiveFlags$1[\"RAW\"] = \"__v_raw\";\n\treturn ReactiveFlags$1;\n}({});\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L330-L332)\n*/\nfunction isReadonly(value) {\n\treturn !!(value && value[ReactiveFlags.IS_READONLY]);\n}\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L312-L317)\n*/\nfunction isReactive$1(value) {\n\tif (isReadonly(value)) return isReactive$1(value[ReactiveFlags.RAW]);\n\treturn !!(value && value[ReactiveFlags.IS_REACTIVE]);\n}\nfunction isRef$1(r) {\n\treturn !!(r && r.__v_isRef === true);\n}\n/**\n* @from [@vue/reactivity](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/reactivity/src/reactive.ts#L372-L375)\n*/\nfunction toRaw$1(observed) {\n\tconst raw = observed && observed[ReactiveFlags.RAW];\n\treturn raw ? toRaw$1(raw) : observed;\n}\n/**\n* @from [@vue/runtime-core](https://github.com/vuejs/core/blob/1c3327a0fa5983aa9078e3f7bb2330f572435425/packages/runtime-core/src/vnode.ts#L63-L68)\n*/\nconst Fragment = Symbol.for(\"v-fgt\");\n\n//#endregion\n//#region src/core/component/state/editor.ts\nvar StateEditor = class {\n\tconstructor() {\n\t\tthis.refEditor = new RefStateEditor();\n\t}\n\tset(object, path, value, cb) {\n\t\tconst sections = Array.isArray(path) ? path : path.split(\".\");\n\t\twhile (sections.length > 1) {\n\t\t\tconst section = sections.shift();\n\t\t\tif (object instanceof Map) object = object.get(section);\n\t\t\telse if (object instanceof Set) object = Array.from(object.values())[section];\n\t\t\telse object = object[section];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t}\n\t\tconst field = sections[0];\n\t\tconst item = this.refEditor.get(object)[field];\n\t\tif (cb) cb(object, field, value);\n\t\telse if (this.refEditor.isRef(item)) this.refEditor.set(item, value);\n\t\telse object[field] = value;\n\t}\n\tget(object, path) {\n\t\tconst sections = Array.isArray(path) ? path : path.split(\".\");\n\t\tfor (let i = 0; i < sections.length; i++) {\n\t\t\tif (object instanceof Map) object = object.get(sections[i]);\n\t\t\telse object = object[sections[i]];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t\tif (!object) return void 0;\n\t\t}\n\t\treturn object;\n\t}\n\thas(object, path, parent = false) {\n\t\tif (typeof object === \"undefined\") return false;\n\t\tconst sections = Array.isArray(path) ? path.slice() : path.split(\".\");\n\t\tconst size = !parent ? 1 : 2;\n\t\twhile (object && sections.length > size) {\n\t\t\tconst section = sections.shift();\n\t\t\tobject = object[section];\n\t\t\tif (this.refEditor.isRef(object)) object = this.refEditor.get(object);\n\t\t}\n\t\treturn object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);\n\t}\n\tcreateDefaultSetCallback(state) {\n\t\treturn (object, field, value) => {\n\t\t\tif (state.remove || state.newKey) if (Array.isArray(object)) object.splice(field, 1);\n\t\t\telse if (toRaw$1(object) instanceof Map) object.delete(field);\n\t\t\telse if (toRaw$1(object) instanceof Set) object.delete(Array.from(object.values())[field]);\n\t\t\telse Reflect.deleteProperty(object, field);\n\t\t\tif (!state.remove) {\n\t\t\t\tconst target$1 = object[state.newKey || field];\n\t\t\t\tif (this.refEditor.isRef(target$1)) this.refEditor.set(target$1, value);\n\t\t\t\telse if (toRaw$1(object) instanceof Map) object.set(state.newKey || field, value);\n\t\t\t\telse if (toRaw$1(object) instanceof Set) object.add(value);\n\t\t\t\telse object[state.newKey || field] = value;\n\t\t\t}\n\t\t};\n\t}\n};\nvar RefStateEditor = class {\n\tset(ref, value) {\n\t\tif (isRef$1(ref)) ref.value = value;\n\t\telse {\n\t\t\tif (ref instanceof Set && Array.isArray(value)) {\n\t\t\t\tref.clear();\n\t\t\t\tvalue.forEach((v) => ref.add(v));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentKeys = Object.keys(value);\n\t\t\tif (ref instanceof Map) {\n\t\t\t\tconst previousKeysSet$1 = new Set(ref.keys());\n\t\t\t\tcurrentKeys.forEach((key) => {\n\t\t\t\t\tref.set(key, Reflect.get(value, key));\n\t\t\t\t\tpreviousKeysSet$1.delete(key);\n\t\t\t\t});\n\t\t\t\tpreviousKeysSet$1.forEach((key) => ref.delete(key));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst previousKeysSet = new Set(Object.keys(ref));\n\t\t\tcurrentKeys.forEach((key) => {\n\t\t\t\tReflect.set(ref, key, Reflect.get(value, key));\n\t\t\t\tpreviousKeysSet.delete(key);\n\t\t\t});\n\t\t\tpreviousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key));\n\t\t}\n\t}\n\tget(ref) {\n\t\treturn isRef$1(ref) ? ref.value : ref;\n\t}\n\tisRef(ref) {\n\t\treturn isRef$1(ref) || isReactive$1(ref);\n\t}\n};\nasync function editComponentState(payload, stateEditor$1) {\n\tconst { path, nodeId, state, type } = payload;\n\tconst instance = getComponentInstance(activeAppRecord.value, nodeId);\n\tif (!instance) return;\n\tconst targetPath = path.slice();\n\tlet target$1;\n\tif (Object.keys(instance.props).includes(path[0])) target$1 = instance.props;\n\telse if (instance.devtoolsRawSetupState && Object.keys(instance.devtoolsRawSetupState).includes(path[0])) target$1 = instance.devtoolsRawSetupState;\n\telse if (instance.data && Object.keys(instance.data).includes(path[0])) target$1 = instance.data;\n\telse target$1 = instance.proxy;\n\tif (target$1 && targetPath) {\n\t\tif (state.type === \"object\" && type === \"reactive\") {}\n\t\tstateEditor$1.set(target$1, targetPath, state.value, stateEditor$1.createDefaultSetCallback(state));\n\t}\n}\nconst stateEditor = new StateEditor();\nasync function editState(payload) {\n\teditComponentState(payload, stateEditor);\n}\n\n//#endregion\n//#region src/core/timeline/storage.ts\nconst TIMELINE_LAYERS_STATE_STORAGE_ID = \"__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__\";\nfunction addTimelineLayersStateToStorage(state) {\n\tif (!isBrowser || typeof localStorage === \"undefined\" || localStorage === null) return;\n\tlocalStorage.setItem(TIMELINE_LAYERS_STATE_STORAGE_ID, JSON.stringify(state));\n}\nfunction getTimelineLayersStateFromStorage() {\n\tif (typeof window === \"undefined\" || !isBrowser || typeof localStorage === \"undefined\" || localStorage === null) return {\n\t\trecordingState: false,\n\t\tmouseEventEnabled: false,\n\t\tkeyboardEventEnabled: false,\n\t\tcomponentEventEnabled: false,\n\t\tperformanceEventEnabled: false,\n\t\tselected: \"\"\n\t};\n\tconst state = typeof localStorage.getItem !== \"undefined\" ? localStorage.getItem(TIMELINE_LAYERS_STATE_STORAGE_ID) : null;\n\treturn state ? JSON.parse(state) : {\n\t\trecordingState: false,\n\t\tmouseEventEnabled: false,\n\t\tkeyboardEventEnabled: false,\n\t\tcomponentEventEnabled: false,\n\t\tperformanceEventEnabled: false,\n\t\tselected: \"\"\n\t};\n}\n\n//#endregion\n//#region src/ctx/timeline.ts\ntarget.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS ??= [];\nconst devtoolsTimelineLayers = new Proxy(target.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nfunction addTimelineLayer(options, descriptor) {\n\tdevtoolsState.timelineLayersState[descriptor.id] = false;\n\tdevtoolsTimelineLayers.push({\n\t\t...options,\n\t\tdescriptorId: descriptor.id,\n\t\tappRecord: getAppRecord(descriptor.app)\n\t});\n}\nfunction updateTimelineLayersState(state) {\n\tconst updatedState = {\n\t\t...devtoolsState.timelineLayersState,\n\t\t...state\n\t};\n\taddTimelineLayersStateToStorage(updatedState);\n\tupdateDevToolsState({ timelineLayersState: updatedState });\n}\n\n//#endregion\n//#region src/ctx/inspector.ts\ntarget.__VUE_DEVTOOLS_KIT_INSPECTOR__ ??= [];\nconst devtoolsInspector = new Proxy(target.__VUE_DEVTOOLS_KIT_INSPECTOR__, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nconst callInspectorUpdatedHook = debounce(() => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT, getActiveInspectors());\n});\nfunction addInspector(inspector, descriptor) {\n\tdevtoolsInspector.push({\n\t\toptions: inspector,\n\t\tdescriptor,\n\t\ttreeFilterPlaceholder: inspector.treeFilterPlaceholder ?? \"Search tree...\",\n\t\tstateFilterPlaceholder: inspector.stateFilterPlaceholder ?? \"Search state...\",\n\t\ttreeFilter: \"\",\n\t\tselectedNodeId: \"\",\n\t\tappRecord: getAppRecord(descriptor.app)\n\t});\n\tcallInspectorUpdatedHook();\n}\nfunction getActiveInspectors() {\n\treturn devtoolsInspector.filter((inspector) => inspector.descriptor.app === activeAppRecord.value.app).filter((inspector) => inspector.descriptor.id !== \"components\").map((inspector) => {\n\t\tconst descriptor = inspector.descriptor;\n\t\tconst options = inspector.options;\n\t\treturn {\n\t\t\tid: options.id,\n\t\t\tlabel: options.label,\n\t\t\tlogo: descriptor.logo,\n\t\t\ticon: `custom-ic-baseline-${options?.icon?.replace(/_/g, \"-\")}`,\n\t\t\tpackageName: descriptor.packageName,\n\t\t\thomepage: descriptor.homepage,\n\t\t\tpluginId: descriptor.id\n\t\t};\n\t});\n}\nfunction getInspectorInfo(id) {\n\tconst inspector = getInspector(id, activeAppRecord.value.app);\n\tif (!inspector) return;\n\tconst descriptor = inspector.descriptor;\n\tconst options = inspector.options;\n\tconst timelineLayers = devtoolsTimelineLayers.filter((layer) => layer.descriptorId === descriptor.id).map((item) => ({\n\t\tid: item.id,\n\t\tlabel: item.label,\n\t\tcolor: item.color\n\t}));\n\treturn {\n\t\tid: options.id,\n\t\tlabel: options.label,\n\t\tlogo: descriptor.logo,\n\t\tpackageName: descriptor.packageName,\n\t\thomepage: descriptor.homepage,\n\t\ttimelineLayers,\n\t\ttreeFilterPlaceholder: inspector.treeFilterPlaceholder,\n\t\tstateFilterPlaceholder: inspector.stateFilterPlaceholder\n\t};\n}\nfunction getInspector(id, app) {\n\treturn devtoolsInspector.find((inspector) => inspector.options.id === id && (app ? inspector.descriptor.app === app : true));\n}\nfunction getInspectorActions(id) {\n\treturn getInspector(id)?.options.actions;\n}\nfunction getInspectorNodeActions(id) {\n\treturn getInspector(id)?.options.nodeActions;\n}\n\n//#endregion\n//#region src/ctx/hook.ts\nlet DevToolsV6PluginAPIHookKeys = /* @__PURE__ */ function(DevToolsV6PluginAPIHookKeys$1) {\n\tDevToolsV6PluginAPIHookKeys$1[\"VISIT_COMPONENT_TREE\"] = \"visitComponentTree\";\n\tDevToolsV6PluginAPIHookKeys$1[\"INSPECT_COMPONENT\"] = \"inspectComponent\";\n\tDevToolsV6PluginAPIHookKeys$1[\"EDIT_COMPONENT_STATE\"] = \"editComponentState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"GET_INSPECTOR_TREE\"] = \"getInspectorTree\";\n\tDevToolsV6PluginAPIHookKeys$1[\"GET_INSPECTOR_STATE\"] = \"getInspectorState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"EDIT_INSPECTOR_STATE\"] = \"editInspectorState\";\n\tDevToolsV6PluginAPIHookKeys$1[\"INSPECT_TIMELINE_EVENT\"] = \"inspectTimelineEvent\";\n\tDevToolsV6PluginAPIHookKeys$1[\"TIMELINE_CLEARED\"] = \"timelineCleared\";\n\tDevToolsV6PluginAPIHookKeys$1[\"SET_PLUGIN_SETTINGS\"] = \"setPluginSettings\";\n\treturn DevToolsV6PluginAPIHookKeys$1;\n}({});\nlet DevToolsContextHookKeys = /* @__PURE__ */ function(DevToolsContextHookKeys$1) {\n\tDevToolsContextHookKeys$1[\"ADD_INSPECTOR\"] = \"addInspector\";\n\tDevToolsContextHookKeys$1[\"SEND_INSPECTOR_TREE\"] = \"sendInspectorTree\";\n\tDevToolsContextHookKeys$1[\"SEND_INSPECTOR_STATE\"] = \"sendInspectorState\";\n\tDevToolsContextHookKeys$1[\"CUSTOM_INSPECTOR_SELECT_NODE\"] = \"customInspectorSelectNode\";\n\tDevToolsContextHookKeys$1[\"TIMELINE_LAYER_ADDED\"] = \"timelineLayerAdded\";\n\tDevToolsContextHookKeys$1[\"TIMELINE_EVENT_ADDED\"] = \"timelineEventAdded\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_INSTANCES\"] = \"getComponentInstances\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_BOUNDS\"] = \"getComponentBounds\";\n\tDevToolsContextHookKeys$1[\"GET_COMPONENT_NAME\"] = \"getComponentName\";\n\tDevToolsContextHookKeys$1[\"COMPONENT_HIGHLIGHT\"] = \"componentHighlight\";\n\tDevToolsContextHookKeys$1[\"COMPONENT_UNHIGHLIGHT\"] = \"componentUnhighlight\";\n\treturn DevToolsContextHookKeys$1;\n}({});\nlet DevToolsMessagingHookKeys = /* @__PURE__ */ function(DevToolsMessagingHookKeys$1) {\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_TREE_TO_CLIENT\"] = \"sendInspectorTreeToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_STATE_TO_CLIENT\"] = \"sendInspectorStateToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_TIMELINE_EVENT_TO_CLIENT\"] = \"sendTimelineEventToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_INSPECTOR_TO_CLIENT\"] = \"sendInspectorToClient\";\n\tDevToolsMessagingHookKeys$1[\"SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT\"] = \"sendActiveAppUpdatedToClient\";\n\tDevToolsMessagingHookKeys$1[\"DEVTOOLS_STATE_UPDATED\"] = \"devtoolsStateUpdated\";\n\tDevToolsMessagingHookKeys$1[\"DEVTOOLS_CONNECTED_UPDATED\"] = \"devtoolsConnectedUpdated\";\n\tDevToolsMessagingHookKeys$1[\"ROUTER_INFO_UPDATED\"] = \"routerInfoUpdated\";\n\treturn DevToolsMessagingHookKeys$1;\n}({});\nfunction createDevToolsCtxHooks() {\n\tconst hooks$1 = createHooks();\n\thooks$1.hook(DevToolsContextHookKeys.ADD_INSPECTOR, ({ inspector, plugin }) => {\n\t\taddInspector(inspector, plugin.descriptor);\n\t});\n\tconst debounceSendInspectorTree = debounce(async ({ inspectorId, plugin }) => {\n\t\tif (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tconst _payload = {\n\t\t\tapp: plugin.descriptor.app,\n\t\t\tinspectorId,\n\t\t\tfilter: inspector?.treeFilter || \"\",\n\t\t\trootNodes: []\n\t\t};\n\t\tawait new Promise((resolve) => {\n\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload)));\n\t\t\t\tresolve();\n\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE);\n\t\t});\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb({\n\t\t\t\tinspectorId,\n\t\t\t\trootNodes: _payload.rootNodes\n\t\t\t})));\n\t\t}, DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT);\n\t}, 120);\n\thooks$1.hook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, debounceSendInspectorTree);\n\tconst debounceSendInspectorState = debounce(async ({ inspectorId, plugin }) => {\n\t\tif (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tconst _payload = {\n\t\t\tapp: plugin.descriptor.app,\n\t\t\tinspectorId,\n\t\t\tnodeId: inspector?.selectedNodeId || \"\",\n\t\t\tstate: null\n\t\t};\n\t\tconst ctx = { currentTab: `custom-inspector:${inspectorId}` };\n\t\tif (_payload.nodeId) await new Promise((resolve) => {\n\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n\t\t\t\tresolve();\n\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE);\n\t\t});\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb({\n\t\t\t\tinspectorId,\n\t\t\t\tnodeId: _payload.nodeId,\n\t\t\t\tstate: _payload.state\n\t\t\t})));\n\t\t}, DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT);\n\t}, 120);\n\thooks$1.hook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, debounceSendInspectorState);\n\thooks$1.hook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, ({ inspectorId, nodeId, plugin }) => {\n\t\tconst inspector = getInspector(inspectorId, plugin.descriptor.app);\n\t\tif (!inspector) return;\n\t\tinspector.selectedNodeId = nodeId;\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, ({ options, plugin }) => {\n\t\taddTimelineLayer(options, plugin.descriptor);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, ({ options, plugin }) => {\n\t\tif (devtoolsState.highPerfModeEnabled || !devtoolsState.timelineLayersState?.[plugin.descriptor.id] && ![\n\t\t\t\"performance\",\n\t\t\t\"component-event\",\n\t\t\t\"keyboard\",\n\t\t\t\"mouse\"\n\t\t].includes(options.layerId)) return;\n\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\tawait Promise.all(callbacks.map((cb) => cb(options)));\n\t\t}, DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, async ({ app }) => {\n\t\tconst appRecord = app.__VUE_DEVTOOLS_NEXT_APP_RECORD__;\n\t\tif (!appRecord) return null;\n\t\tconst appId = appRecord.id.toString();\n\t\treturn [...appRecord.instanceMap].filter(([key]) => key.split(\":\")[0] === appId).map(([, instance]) => instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, async ({ instance }) => {\n\t\treturn getComponentBoundingRect(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.GET_COMPONENT_NAME, ({ instance }) => {\n\t\treturn getInstanceName(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, ({ uid }) => {\n\t\tconst instance = activeAppRecord.value.instanceMap.get(uid);\n\t\tif (instance) highlight(instance);\n\t});\n\thooks$1.hook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT, () => {\n\t\tunhighlight();\n\t});\n\treturn hooks$1;\n}\n\n//#endregion\n//#region src/ctx/state.ts\ntarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ ??= {};\ntarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ ??= \"\";\ntarget.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ ??= [];\nconst STATE_KEY = \"__VUE_DEVTOOLS_KIT_GLOBAL_STATE__\";\nfunction initStateFactory() {\n\treturn {\n\t\tconnected: false,\n\t\tclientConnected: false,\n\t\tvitePluginDetected: true,\n\t\tappRecords: [],\n\t\tactiveAppRecordId: \"\",\n\t\ttabs: [],\n\t\tcommands: [],\n\t\thighPerfModeEnabled: true,\n\t\tdevtoolsClientDetected: {},\n\t\tperfUniqueGroupId: 0,\n\t\ttimelineLayersState: getTimelineLayersStateFromStorage()\n\t};\n}\ntarget[STATE_KEY] ??= initStateFactory();\nconst callStateUpdatedHook = debounce((state) => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED, { state });\n});\nconst callConnectedUpdatedHook = debounce((state, oldState) => {\n\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, {\n\t\tstate,\n\t\toldState\n\t});\n});\nconst devtoolsAppRecords = new Proxy(target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, { get(_target, prop, receiver) {\n\tif (prop === \"value\") return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__;\n\treturn target.__VUE_DEVTOOLS_KIT_APP_RECORDS__[prop];\n} });\nconst addDevToolsAppRecord = (app) => {\n\ttarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = [...target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, app];\n};\nconst removeDevToolsAppRecord = (app) => {\n\ttarget.__VUE_DEVTOOLS_KIT_APP_RECORDS__ = devtoolsAppRecords.value.filter((record) => record.app !== app);\n};\nconst activeAppRecord = new Proxy(target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__, { get(_target, prop, receiver) {\n\tif (prop === \"value\") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__;\n\telse if (prop === \"id\") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__;\n\treturn target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[prop];\n} });\nfunction updateAllStates() {\n\tcallStateUpdatedHook({\n\t\t...target[STATE_KEY],\n\t\tappRecords: devtoolsAppRecords.value,\n\t\tactiveAppRecordId: activeAppRecord.id,\n\t\ttabs: target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,\n\t\tcommands: target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__\n\t});\n}\nfunction setActiveAppRecord(app) {\n\ttarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = app;\n\tupdateAllStates();\n}\nfunction setActiveAppRecordId(id) {\n\ttarget.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = id;\n\tupdateAllStates();\n}\nconst devtoolsState = new Proxy(target[STATE_KEY], {\n\tget(target$1, property) {\n\t\tif (property === \"appRecords\") return devtoolsAppRecords;\n\t\telse if (property === \"activeAppRecordId\") return activeAppRecord.id;\n\t\telse if (property === \"tabs\") return target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n\t\telse if (property === \"commands\") return target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\t\treturn target[STATE_KEY][property];\n\t},\n\tdeleteProperty(target$1, property) {\n\t\tdelete target$1[property];\n\t\treturn true;\n\t},\n\tset(target$1, property, value) {\n\t\t({ ...target[STATE_KEY] });\n\t\ttarget$1[property] = value;\n\t\ttarget[STATE_KEY][property] = value;\n\t\treturn true;\n\t}\n});\nfunction resetDevToolsState() {\n\tObject.assign(target[STATE_KEY], initStateFactory());\n}\nfunction updateDevToolsState(state) {\n\tconst oldState = {\n\t\t...target[STATE_KEY],\n\t\tappRecords: devtoolsAppRecords.value,\n\t\tactiveAppRecordId: activeAppRecord.id\n\t};\n\tif (oldState.connected !== state.connected && state.connected || oldState.clientConnected !== state.clientConnected && state.clientConnected) callConnectedUpdatedHook(target[STATE_KEY], oldState);\n\tObject.assign(target[STATE_KEY], state);\n\tupdateAllStates();\n}\nfunction onDevToolsConnected(fn) {\n\treturn new Promise((resolve) => {\n\t\tif (devtoolsState.connected) {\n\t\t\tfn();\n\t\t\tresolve();\n\t\t}\n\t\tdevtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => {\n\t\t\tif (state.connected) {\n\t\t\t\tfn();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n}\nconst resolveIcon = (icon) => {\n\tif (!icon) return;\n\tif (icon.startsWith(\"baseline-\")) return `custom-ic-${icon}`;\n\tif (icon.startsWith(\"i-\") || isUrlString(icon)) return icon;\n\treturn `custom-ic-baseline-${icon}`;\n};\nfunction addCustomTab(tab) {\n\tconst tabs = target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__;\n\tif (tabs.some((t) => t.name === tab.name)) return;\n\ttabs.push({\n\t\t...tab,\n\t\ticon: resolveIcon(tab.icon)\n\t});\n\tupdateAllStates();\n}\nfunction addCustomCommand(action) {\n\tconst commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\tif (commands.some((t) => t.id === action.id)) return;\n\tcommands.push({\n\t\t...action,\n\t\ticon: resolveIcon(action.icon),\n\t\tchildren: action.children ? action.children.map((child) => ({\n\t\t\t...child,\n\t\t\ticon: resolveIcon(child.icon)\n\t\t})) : void 0\n\t});\n\tupdateAllStates();\n}\nfunction removeCustomCommand(actionId) {\n\tconst commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__;\n\tconst index = commands.findIndex((t) => t.id === actionId);\n\tif (index === -1) return;\n\tcommands.splice(index, 1);\n\tupdateAllStates();\n}\nfunction toggleClientConnected(state) {\n\tupdateDevToolsState({ clientConnected: state });\n}\n\n//#endregion\n//#region src/core/open-in-editor/index.ts\nfunction setOpenInEditorBaseUrl(url) {\n\ttarget.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ = url;\n}\nfunction openInEditor(options = {}) {\n\tconst { file, host, baseUrl = window.location.origin, line = 0, column = 0 } = options;\n\tif (file) {\n\t\tif (host === \"chrome-extension\") {\n\t\t\tconst fileName = file.replace(/\\\\/g, \"\\\\\\\\\");\n\t\t\tconst _baseUrl = window.VUE_DEVTOOLS_CONFIG?.openInEditorHost ?? \"/\";\n\t\t\tfetch(`${_baseUrl}__open-in-editor?file=${encodeURI(file)}`).then((response) => {\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\tconst msg = `Opening component ${fileName} failed`;\n\t\t\t\t\tconsole.log(`%c${msg}`, \"color:red\");\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (devtoolsState.vitePluginDetected) {\n\t\t\tconst _baseUrl = target.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ ?? baseUrl;\n\t\t\ttarget.__VUE_INSPECTOR__.openInEditor(_baseUrl, file, line, column);\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/ctx/plugin.ts\ntarget.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__ ??= [];\nconst devtoolsPluginBuffer = new Proxy(target.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__, { get(target$1, prop, receiver) {\n\treturn Reflect.get(target$1, prop, receiver);\n} });\nfunction addDevToolsPluginToBuffer(pluginDescriptor, setupFn) {\n\tdevtoolsPluginBuffer.push([pluginDescriptor, setupFn]);\n}\n\n//#endregion\n//#region src/core/plugin/plugin-settings.ts\nfunction _getSettings(settings) {\n\tconst _settings = {};\n\tObject.keys(settings).forEach((key) => {\n\t\t_settings[key] = settings[key].defaultValue;\n\t});\n\treturn _settings;\n}\nfunction getPluginLocalKey(pluginId) {\n\treturn `__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${pluginId}__`;\n}\nfunction getPluginSettingsOptions(pluginId) {\n\treturn (devtoolsPluginBuffer.find((item) => item[0].id === pluginId && !!item[0]?.settings)?.[0] ?? null)?.settings ?? null;\n}\nfunction getPluginSettings(pluginId, fallbackValue) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tif (localKey) {\n\t\tconst localSettings = localStorage.getItem(localKey);\n\t\tif (localSettings) return JSON.parse(localSettings);\n\t}\n\tif (pluginId) return _getSettings((devtoolsPluginBuffer.find((item) => item[0].id === pluginId)?.[0] ?? null)?.settings ?? {});\n\treturn _getSettings(fallbackValue);\n}\nfunction initPluginSettings(pluginId, settings) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tif (!localStorage.getItem(localKey)) localStorage.setItem(localKey, JSON.stringify(_getSettings(settings)));\n}\nfunction setPluginSettings(pluginId, key, value) {\n\tconst localKey = getPluginLocalKey(pluginId);\n\tconst localSettings = localStorage.getItem(localKey);\n\tconst parsedLocalSettings = JSON.parse(localSettings || \"{}\");\n\tconst updated = {\n\t\t...parsedLocalSettings,\n\t\t[key]: value\n\t};\n\tlocalStorage.setItem(localKey, JSON.stringify(updated));\n\tdevtoolsContext.hooks.callHookWith((callbacks) => {\n\t\tcallbacks.forEach((cb) => cb({\n\t\t\tpluginId,\n\t\t\tkey,\n\t\t\toldValue: parsedLocalSettings[key],\n\t\t\tnewValue: value,\n\t\t\tsettings: updated\n\t\t}));\n\t}, DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS);\n}\n\n//#endregion\n//#region src/types/hook.ts\nlet DevToolsHooks = /* @__PURE__ */ function(DevToolsHooks$1) {\n\tDevToolsHooks$1[\"APP_INIT\"] = \"app:init\";\n\tDevToolsHooks$1[\"APP_UNMOUNT\"] = \"app:unmount\";\n\tDevToolsHooks$1[\"COMPONENT_UPDATED\"] = \"component:updated\";\n\tDevToolsHooks$1[\"COMPONENT_ADDED\"] = \"component:added\";\n\tDevToolsHooks$1[\"COMPONENT_REMOVED\"] = \"component:removed\";\n\tDevToolsHooks$1[\"COMPONENT_EMIT\"] = \"component:emit\";\n\tDevToolsHooks$1[\"PERFORMANCE_START\"] = \"perf:start\";\n\tDevToolsHooks$1[\"PERFORMANCE_END\"] = \"perf:end\";\n\tDevToolsHooks$1[\"ADD_ROUTE\"] = \"router:add-route\";\n\tDevToolsHooks$1[\"REMOVE_ROUTE\"] = \"router:remove-route\";\n\tDevToolsHooks$1[\"RENDER_TRACKED\"] = \"render:tracked\";\n\tDevToolsHooks$1[\"RENDER_TRIGGERED\"] = \"render:triggered\";\n\tDevToolsHooks$1[\"APP_CONNECTED\"] = \"app:connected\";\n\tDevToolsHooks$1[\"SETUP_DEVTOOLS_PLUGIN\"] = \"devtools-plugin:setup\";\n\treturn DevToolsHooks$1;\n}({});\n\n//#endregion\n//#region src/hook/index.ts\nconst devtoolsHooks = target.__VUE_DEVTOOLS_HOOK ??= createHooks();\nconst on = {\n\tvueAppInit(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_INIT, fn);\n\t},\n\tvueAppUnmount(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_UNMOUNT, fn);\n\t},\n\tvueAppConnected(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.APP_CONNECTED, fn);\n\t},\n\tcomponentAdded(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_ADDED, fn);\n\t},\n\tcomponentEmit(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_EMIT, fn);\n\t},\n\tcomponentUpdated(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_UPDATED, fn);\n\t},\n\tcomponentRemoved(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.COMPONENT_REMOVED, fn);\n\t},\n\tsetupDevtoolsPlugin(fn) {\n\t\tdevtoolsHooks.hook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, fn);\n\t},\n\tperfStart(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_START, fn);\n\t},\n\tperfEnd(fn) {\n\t\treturn devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_END, fn);\n\t}\n};\nfunction createDevToolsHook() {\n\treturn {\n\t\tid: \"vue-devtools-next\",\n\t\tdevtoolsVersion: \"7.0\",\n\t\tenabled: false,\n\t\tappRecords: [],\n\t\tapps: [],\n\t\tevents: /* @__PURE__ */ new Map(),\n\t\ton(event, fn) {\n\t\t\tif (!this.events.has(event)) this.events.set(event, []);\n\t\t\tthis.events.get(event)?.push(fn);\n\t\t\treturn () => this.off(event, fn);\n\t\t},\n\t\tonce(event, fn) {\n\t\t\tconst onceFn = (...args) => {\n\t\t\t\tthis.off(event, onceFn);\n\t\t\t\tfn(...args);\n\t\t\t};\n\t\t\tthis.on(event, onceFn);\n\t\t\treturn [event, onceFn];\n\t\t},\n\t\toff(event, fn) {\n\t\t\tif (this.events.has(event)) {\n\t\t\t\tconst eventCallbacks = this.events.get(event);\n\t\t\t\tconst index = eventCallbacks.indexOf(fn);\n\t\t\t\tif (index !== -1) eventCallbacks.splice(index, 1);\n\t\t\t}\n\t\t},\n\t\temit(event, ...payload) {\n\t\t\tif (this.events.has(event)) this.events.get(event).forEach((fn) => fn(...payload));\n\t\t}\n\t};\n}\nfunction subscribeDevToolsHook(hook$1) {\n\thook$1.on(DevToolsHooks.APP_INIT, (app, version, types) => {\n\t\tif (app?._instance?.type?.devtools?.hide) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.APP_INIT, app, version, types);\n\t});\n\thook$1.on(DevToolsHooks.APP_UNMOUNT, (app) => {\n\t\tdevtoolsHooks.callHook(DevToolsHooks.APP_UNMOUNT, app);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_ADDED, async (app, uid, parentUid, component) => {\n\t\tif (app?._instance?.type?.devtools?.hide || devtoolsState.highPerfModeEnabled) return;\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_ADDED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_UPDATED, (app, uid, parentUid, component) => {\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_REMOVED, async (app, uid, parentUid, component) => {\n\t\tif (!app || typeof uid !== \"number\" && !uid || !component || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_REMOVED, app, uid, parentUid, component);\n\t});\n\thook$1.on(DevToolsHooks.COMPONENT_EMIT, async (app, instance, event, params) => {\n\t\tif (!app || !instance || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_EMIT, app, instance, event, params);\n\t});\n\thook$1.on(DevToolsHooks.PERFORMANCE_START, (app, uid, vm, type, time) => {\n\t\tif (!app || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.PERFORMANCE_START, app, uid, vm, type, time);\n\t});\n\thook$1.on(DevToolsHooks.PERFORMANCE_END, (app, uid, vm, type, time) => {\n\t\tif (!app || devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.PERFORMANCE_END, app, uid, vm, type, time);\n\t});\n\thook$1.on(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, (pluginDescriptor, setupFn, options) => {\n\t\tif (options?.target === \"legacy\") return;\n\t\tdevtoolsHooks.callHook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn);\n\t});\n}\nconst hook = {\n\ton,\n\tsetupDevToolsPlugin(pluginDescriptor, setupFn) {\n\t\treturn devtoolsHooks.callHook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn);\n\t}\n};\n\n//#endregion\n//#region src/api/v6/index.ts\nvar DevToolsV6PluginAPI = class {\n\tconstructor({ plugin, ctx }) {\n\t\tthis.hooks = ctx.hooks;\n\t\tthis.plugin = plugin;\n\t}\n\tget on() {\n\t\treturn {\n\t\t\tvisitComponentTree: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, handler);\n\t\t\t},\n\t\t\tinspectComponent: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT, handler);\n\t\t\t},\n\t\t\teditComponentState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE, handler);\n\t\t\t},\n\t\t\tgetInspectorTree: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE, handler);\n\t\t\t},\n\t\t\tgetInspectorState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE, handler);\n\t\t\t},\n\t\t\teditInspectorState: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE, handler);\n\t\t\t},\n\t\t\tinspectTimelineEvent: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT, handler);\n\t\t\t},\n\t\t\ttimelineCleared: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED, handler);\n\t\t\t},\n\t\t\tsetPluginSettings: (handler) => {\n\t\t\t\tthis.hooks.hook(DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS, handler);\n\t\t\t}\n\t\t};\n\t}\n\tnotifyComponentUpdate(instance) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tconst inspector = getActiveInspectors().find((i) => i.packageName === this.plugin.descriptor.packageName);\n\t\tif (inspector?.id) {\n\t\t\tif (instance) {\n\t\t\t\tconst args = [\n\t\t\t\t\tinstance.appContext.app,\n\t\t\t\t\tinstance.uid,\n\t\t\t\t\tinstance.parent?.uid,\n\t\t\t\t\tinstance\n\t\t\t\t];\n\t\t\t\tdevtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, ...args);\n\t\t\t} else devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED);\n\t\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\t\tinspectorId: inspector.id,\n\t\t\t\tplugin: this.plugin\n\t\t\t});\n\t\t}\n\t}\n\taddInspector(options) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.ADD_INSPECTOR, {\n\t\t\tinspector: options,\n\t\t\tplugin: this.plugin\n\t\t});\n\t\tif (this.plugin.descriptor.settings) initPluginSettings(options.id, this.plugin.descriptor.settings);\n\t}\n\tsendInspectorTree(inspectorId) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, {\n\t\t\tinspectorId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tsendInspectorState(inspectorId) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\tinspectorId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tselectInspectorNode(inspectorId, nodeId) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, {\n\t\t\tinspectorId,\n\t\t\tnodeId,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tvisitComponentTree(payload) {\n\t\treturn this.hooks.callHook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, payload);\n\t}\n\tnow() {\n\t\tif (devtoolsState.highPerfModeEnabled) return 0;\n\t\treturn Date.now();\n\t}\n\taddTimelineLayer(options) {\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, {\n\t\t\toptions,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\taddTimelineEvent(options) {\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tthis.hooks.callHook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, {\n\t\t\toptions,\n\t\t\tplugin: this.plugin\n\t\t});\n\t}\n\tgetSettings(pluginId) {\n\t\treturn getPluginSettings(pluginId ?? this.plugin.descriptor.id, this.plugin.descriptor.settings);\n\t}\n\tgetComponentInstances(app) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, { app });\n\t}\n\tgetComponentBounds(instance) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, { instance });\n\t}\n\tgetComponentName(instance) {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_NAME, { instance });\n\t}\n\thighlightElement(instance) {\n\t\tconst uid = instance.__VUE_DEVTOOLS_NEXT_UID__;\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, { uid });\n\t}\n\tunhighlightElement() {\n\t\treturn this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT);\n\t}\n};\n\n//#endregion\n//#region src/api/index.ts\nconst DevToolsPluginAPI = DevToolsV6PluginAPI;\n\n//#endregion\n//#region src/core/component/state/constants.ts\nconst vueBuiltins = new Set([\n\t\"nextTick\",\n\t\"defineComponent\",\n\t\"defineAsyncComponent\",\n\t\"defineCustomElement\",\n\t\"ref\",\n\t\"computed\",\n\t\"reactive\",\n\t\"readonly\",\n\t\"watchEffect\",\n\t\"watchPostEffect\",\n\t\"watchSyncEffect\",\n\t\"watch\",\n\t\"isRef\",\n\t\"unref\",\n\t\"toRef\",\n\t\"toRefs\",\n\t\"isProxy\",\n\t\"isReactive\",\n\t\"isReadonly\",\n\t\"shallowRef\",\n\t\"triggerRef\",\n\t\"customRef\",\n\t\"shallowReactive\",\n\t\"shallowReadonly\",\n\t\"toRaw\",\n\t\"markRaw\",\n\t\"effectScope\",\n\t\"getCurrentScope\",\n\t\"onScopeDispose\",\n\t\"onMounted\",\n\t\"onUpdated\",\n\t\"onUnmounted\",\n\t\"onBeforeMount\",\n\t\"onBeforeUpdate\",\n\t\"onBeforeUnmount\",\n\t\"onErrorCaptured\",\n\t\"onRenderTracked\",\n\t\"onRenderTriggered\",\n\t\"onActivated\",\n\t\"onDeactivated\",\n\t\"onServerPrefetch\",\n\t\"provide\",\n\t\"inject\",\n\t\"h\",\n\t\"mergeProps\",\n\t\"cloneVNode\",\n\t\"isVNode\",\n\t\"resolveComponent\",\n\t\"resolveDirective\",\n\t\"withDirectives\",\n\t\"withModifiers\"\n]);\nconst symbolRE = /^\\[native Symbol Symbol\\((.*)\\)\\]$/;\nconst rawTypeRE = /^\\[object (\\w+)\\]$/;\nconst specialTypeRE = /^\\[native (\\w+) (.*?)(<>(([\\s\\S])*))?\\]$/;\nconst fnTypeRE = /^(?:function|class) (\\w+)/;\nconst MAX_STRING_SIZE = 1e4;\nconst MAX_ARRAY_SIZE = 5e3;\nconst UNDEFINED = \"__vue_devtool_undefined__\";\nconst INFINITY = \"__vue_devtool_infinity__\";\nconst NEGATIVE_INFINITY = \"__vue_devtool_negative_infinity__\";\nconst NAN = \"__vue_devtool_nan__\";\nconst ESC = {\n\t\"<\": \"&lt;\",\n\t\">\": \"&gt;\",\n\t\"\\\"\": \"&quot;\",\n\t\"&\": \"&amp;\"\n};\n\n//#endregion\n//#region src/core/component/state/is.ts\nfunction isVueInstance(value) {\n\tif (!ensurePropertyExists(value, \"_\")) return false;\n\tif (!isPlainObject(value._)) return false;\n\treturn Object.keys(value._).includes(\"vnode\");\n}\nfunction isPlainObject(obj) {\n\treturn Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isPrimitive$1(data) {\n\tif (data == null) return true;\n\tconst type = typeof data;\n\treturn type === \"string\" || type === \"number\" || type === \"boolean\";\n}\nfunction isRef(raw) {\n\treturn !!raw.__v_isRef;\n}\nfunction isComputed(raw) {\n\treturn isRef(raw) && !!raw.effect;\n}\nfunction isReactive(raw) {\n\treturn !!raw.__v_isReactive;\n}\nfunction isReadOnly(raw) {\n\treturn !!raw.__v_isReadonly;\n}\n\n//#endregion\n//#region src/core/component/state/util.ts\nconst tokenMap = {\n\t[UNDEFINED]: \"undefined\",\n\t[NAN]: \"NaN\",\n\t[INFINITY]: \"Infinity\",\n\t[NEGATIVE_INFINITY]: \"-Infinity\"\n};\nconst reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => {\n\tacc[value] = key;\n\treturn acc;\n}, {});\nfunction internalStateTokenToString(value) {\n\tif (value === null) return \"null\";\n\treturn typeof value === \"string\" && tokenMap[value] || false;\n}\nfunction replaceTokenToString(value) {\n\tconst replaceRegex = new RegExp(`\"(${Object.keys(tokenMap).join(\"|\")})\"`, \"g\");\n\treturn value.replace(replaceRegex, (_, g1) => tokenMap[g1]);\n}\nfunction replaceStringToToken(value) {\n\tconst literalValue = reversedTokenMap[value.trim()];\n\tif (literalValue) return `\"${literalValue}\"`;\n\tconst replaceRegex = new RegExp(`:\\\\s*(${Object.keys(reversedTokenMap).join(\"|\")})`, \"g\");\n\treturn value.replace(replaceRegex, (_, g1) => `:\"${reversedTokenMap[g1]}\"`);\n}\n/**\n* Convert prop type constructor to string.\n*/\nfunction getPropType(type) {\n\tif (Array.isArray(type)) return type.map((t) => getPropType(t)).join(\" or \");\n\tif (type == null) return \"null\";\n\tconst match = type.toString().match(fnTypeRE);\n\treturn typeof type === \"function\" ? match && match[1] || \"any\" : \"any\";\n}\n/**\n* Sanitize data to be posted to the other side.\n* Since the message posted is sent with structured clone,\n* we need to filter out any types that might cause an error.\n*/\nfunction sanitize(data) {\n\tif (!isPrimitive$1(data) && !Array.isArray(data) && !isPlainObject(data)) return Object.prototype.toString.call(data);\n\telse return data;\n}\nfunction getSetupStateType(raw) {\n\ttry {\n\t\treturn {\n\t\t\tref: isRef(raw),\n\t\t\tcomputed: isComputed(raw),\n\t\t\treactive: isReactive(raw),\n\t\t\treadonly: isReadOnly(raw)\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tref: false,\n\t\t\tcomputed: false,\n\t\t\treactive: false,\n\t\t\treadonly: false\n\t\t};\n\t}\n}\nfunction toRaw(value) {\n\tif (value?.__v_raw) return value.__v_raw;\n\treturn value;\n}\nfunction escape(s) {\n\treturn s.replace(/[<>\"&]/g, (s$1) => {\n\t\treturn ESC[s$1] || s$1;\n\t});\n}\n\n//#endregion\n//#region src/core/component/state/process.ts\nfunction mergeOptions(to, from, instance) {\n\tif (typeof from === \"function\") from = from.options;\n\tif (!from) return to;\n\tconst { mixins, extends: extendsOptions } = from;\n\textendsOptions && mergeOptions(to, extendsOptions, instance);\n\tmixins && mixins.forEach((m) => mergeOptions(to, m, instance));\n\tfor (const key of [\"computed\", \"inject\"]) if (Object.prototype.hasOwnProperty.call(from, key)) if (!to[key]) to[key] = from[key];\n\telse Object.assign(to[key], from[key]);\n\treturn to;\n}\nfunction resolveMergedOptions(instance) {\n\tconst raw = instance?.type;\n\tif (!raw) return {};\n\tconst { mixins, extends: extendsOptions } = raw;\n\tconst globalMixins = instance.appContext.mixins;\n\tif (!globalMixins.length && !mixins && !extendsOptions) return raw;\n\tconst options = {};\n\tglobalMixins.forEach((m) => mergeOptions(options, m, instance));\n\tmergeOptions(options, raw, instance);\n\treturn options;\n}\n/**\n* Process the props of an instance.\n* Make sure return a plain object because window.postMessage()\n* will throw an Error if the passed object contains Functions.\n*\n*/\nfunction processProps(instance) {\n\tconst props = [];\n\tconst propDefinitions = instance?.type?.props;\n\tfor (const key in instance?.props) {\n\t\tconst propDefinition = propDefinitions ? propDefinitions[key] : null;\n\t\tconst camelizeKey = camelize(key);\n\t\tprops.push({\n\t\t\ttype: \"props\",\n\t\t\tkey: camelizeKey,\n\t\t\tvalue: returnError(() => instance.props[key]),\n\t\t\teditable: true,\n\t\t\tmeta: propDefinition ? {\n\t\t\t\ttype: propDefinition.type ? getPropType(propDefinition.type) : \"any\",\n\t\t\t\trequired: !!propDefinition.required,\n\t\t\t\t...propDefinition.default ? { default: propDefinition.default.toString() } : {}\n\t\t\t} : { type: \"invalid\" }\n\t\t});\n\t}\n\treturn props;\n}\n/**\n* Process state, filtering out props and \"clean\" the result\n* with a JSON dance. This removes functions which can cause\n* errors during structured clone used by window.postMessage.\n*\n*/\nfunction processState(instance) {\n\tconst type = instance.type;\n\tconst props = type?.props;\n\tconst getters = type.vuex && type.vuex.getters;\n\tconst computedDefs = type.computed;\n\tconst data = {\n\t\t...instance.data,\n\t\t...instance.renderContext\n\t};\n\treturn Object.keys(data).filter((key) => !(props && key in props) && !(getters && key in getters) && !(computedDefs && key in computedDefs)).map((key) => ({\n\t\tkey,\n\t\ttype: \"data\",\n\t\tvalue: returnError(() => data[key]),\n\t\teditable: true\n\t}));\n}\nfunction getStateTypeAndName(info) {\n\tconst stateType = info.computed ? \"computed\" : info.ref ? \"ref\" : info.reactive ? \"reactive\" : null;\n\treturn {\n\t\tstateType,\n\t\tstateTypeName: stateType ? `${stateType.charAt(0).toUpperCase()}${stateType.slice(1)}` : null\n\t};\n}\nfunction processSetupState(instance) {\n\tconst raw = instance.devtoolsRawSetupState || {};\n\treturn Object.keys(instance.setupState).filter((key) => !vueBuiltins.has(key) && key.split(/(?=[A-Z])/)[0] !== \"use\").map((key) => {\n\t\tconst value = returnError(() => toRaw(instance.setupState[key]));\n\t\tconst accessError = value instanceof Error;\n\t\tconst rawData = raw[key];\n\t\tlet result;\n\t\tlet isOtherType = accessError || typeof value === \"function\" || ensurePropertyExists(value, \"render\") && typeof value.render === \"function\" || ensurePropertyExists(value, \"__asyncLoader\") && typeof value.__asyncLoader === \"function\" || typeof value === \"object\" && value && (\"setup\" in value || \"props\" in value) || /^v[A-Z]/.test(key);\n\t\tif (rawData && !accessError) {\n\t\t\tconst info = getSetupStateType(rawData);\n\t\t\tconst { stateType, stateTypeName } = getStateTypeAndName(info);\n\t\t\tconst isState = info.ref || info.computed || info.reactive;\n\t\t\tconst raw$1 = ensurePropertyExists(rawData, \"effect\") ? rawData.effect?.raw?.toString() || rawData.effect?.fn?.toString() : null;\n\t\t\tif (stateType) isOtherType = false;\n\t\t\tresult = {\n\t\t\t\t...stateType ? {\n\t\t\t\t\tstateType,\n\t\t\t\t\tstateTypeName\n\t\t\t\t} : {},\n\t\t\t\t...raw$1 ? { raw: raw$1 } : {},\n\t\t\t\teditable: isState && !info.readonly\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: isOtherType ? \"setup (other)\" : \"setup\",\n\t\t\t...result\n\t\t};\n\t});\n}\n/**\n* Process the computed properties of an instance.\n*/\nfunction processComputed(instance, mergedType) {\n\tconst type = mergedType;\n\tconst computed = [];\n\tconst defs = type.computed || {};\n\tfor (const key in defs) {\n\t\tconst def = defs[key];\n\t\tconst type$1 = typeof def === \"function\" && def.vuex ? \"vuex bindings\" : \"computed\";\n\t\tcomputed.push({\n\t\t\ttype: type$1,\n\t\t\tkey,\n\t\t\tvalue: returnError(() => instance?.proxy?.[key]),\n\t\t\teditable: typeof def.set === \"function\"\n\t\t});\n\t}\n\treturn computed;\n}\nfunction processAttrs(instance) {\n\treturn Object.keys(instance.attrs).map((key) => ({\n\t\ttype: \"attrs\",\n\t\tkey,\n\t\tvalue: returnError(() => instance.attrs[key])\n\t}));\n}\nfunction processProvide(instance) {\n\treturn Reflect.ownKeys(instance.provides).map((key) => ({\n\t\ttype: \"provided\",\n\t\tkey: key.toString(),\n\t\tvalue: returnError(() => instance.provides[key])\n\t}));\n}\nfunction processInject(instance, mergedType) {\n\tif (!mergedType?.inject) return [];\n\tlet keys = [];\n\tlet defaultValue;\n\tif (Array.isArray(mergedType.inject)) keys = mergedType.inject.map((key) => ({\n\t\tkey,\n\t\toriginalKey: key\n\t}));\n\telse keys = Reflect.ownKeys(mergedType.inject).map((key) => {\n\t\tconst value = mergedType.inject[key];\n\t\tlet originalKey;\n\t\tif (typeof value === \"string\" || typeof value === \"symbol\") originalKey = value;\n\t\telse {\n\t\t\toriginalKey = value.from;\n\t\t\tdefaultValue = value.default;\n\t\t}\n\t\treturn {\n\t\t\tkey,\n\t\t\toriginalKey\n\t\t};\n\t});\n\treturn keys.map(({ key, originalKey }) => ({\n\t\ttype: \"injected\",\n\t\tkey: originalKey && key !== originalKey ? `${originalKey.toString()} ➞ ${key.toString()}` : key.toString(),\n\t\tvalue: returnError(() => instance.ctx.hasOwnProperty(key) ? instance.ctx[key] : instance.provides.hasOwnProperty(originalKey) ? instance.provides[originalKey] : defaultValue)\n\t}));\n}\nfunction processRefs(instance) {\n\treturn Object.keys(instance.refs).map((key) => ({\n\t\ttype: \"template refs\",\n\t\tkey,\n\t\tvalue: returnError(() => instance.refs[key])\n\t}));\n}\nfunction processEventListeners(instance) {\n\tconst emitsDefinition = instance.type.emits;\n\tconst declaredEmits = Array.isArray(emitsDefinition) ? emitsDefinition : Object.keys(emitsDefinition ?? {});\n\tconst keys = Object.keys(instance?.vnode?.props ?? {});\n\tconst result = [];\n\tfor (const key of keys) {\n\t\tconst [prefix, ...eventNameParts] = key.split(/(?=[A-Z])/);\n\t\tif (prefix === \"on\") {\n\t\t\tconst eventName = eventNameParts.join(\"-\").toLowerCase();\n\t\t\tconst isDeclared = declaredEmits.includes(eventName);\n\t\t\tresult.push({\n\t\t\t\ttype: \"event listeners\",\n\t\t\t\tkey: eventName,\n\t\t\t\tvalue: { _custom: {\n\t\t\t\t\tdisplayText: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\tkey: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\tvalue: isDeclared ? \"✅ Declared\" : \"⚠️ Not declared\",\n\t\t\t\t\ttooltipText: !isDeclared ? `The event <code>${eventName}</code> is not declared in the <code>emits</code> option. It will leak into the component's attributes (<code>$attrs</code>).` : null\n\t\t\t\t} }\n\t\t\t});\n\t\t}\n\t}\n\treturn result;\n}\nfunction processInstanceState(instance) {\n\tconst mergedType = resolveMergedOptions(instance);\n\treturn processProps(instance).concat(processState(instance), processSetupState(instance), processComputed(instance, mergedType), processAttrs(instance), processProvide(instance), processInject(instance, mergedType), processRefs(instance), processEventListeners(instance));\n}\n\n//#endregion\n//#region src/core/component/state/index.ts\nfunction getInstanceState(params) {\n\tconst instance = getComponentInstance(activeAppRecord.value, params.instanceId);\n\treturn {\n\t\tid: getUniqueComponentId(instance),\n\t\tname: getInstanceName(instance),\n\t\tfile: instance?.type?.__file,\n\t\tstate: processInstanceState(instance),\n\t\tinstance\n\t};\n}\n\n//#endregion\n//#region src/core/component/tree/filter.ts\nvar ComponentFilter = class {\n\tconstructor(filter) {\n\t\tthis.filter = filter || \"\";\n\t}\n\t/**\n\t* Check if an instance is qualified.\n\t*\n\t* @param {Vue|Vnode} instance\n\t* @return {boolean}\n\t*/\n\tisQualified(instance) {\n\t\tconst name = getInstanceName(instance);\n\t\treturn classify(name).toLowerCase().includes(this.filter) || kebabize(name).toLowerCase().includes(this.filter);\n\t}\n};\nfunction createComponentFilter(filterText) {\n\treturn new ComponentFilter(filterText);\n}\n\n//#endregion\n//#region src/core/component/tree/walker.ts\nvar ComponentWalker = class {\n\tconstructor(options) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\tconst { filterText = \"\", maxDepth, recursively, api } = options;\n\t\tthis.componentFilter = createComponentFilter(filterText);\n\t\tthis.maxDepth = maxDepth;\n\t\tthis.recursively = recursively;\n\t\tthis.api = api;\n\t}\n\tgetComponentTree(instance) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\treturn this.findQualifiedChildren(instance, 0);\n\t}\n\tgetComponentParents(instance) {\n\t\tthis.captureIds = /* @__PURE__ */ new Map();\n\t\tconst parents = [];\n\t\tthis.captureId(instance);\n\t\tlet parent = instance;\n\t\twhile (parent = parent.parent) {\n\t\t\tthis.captureId(parent);\n\t\t\tparents.push(parent);\n\t\t}\n\t\treturn parents;\n\t}\n\tcaptureId(instance) {\n\t\tif (!instance) return null;\n\t\tconst id = instance.__VUE_DEVTOOLS_NEXT_UID__ != null ? instance.__VUE_DEVTOOLS_NEXT_UID__ : getUniqueComponentId(instance);\n\t\tinstance.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\tif (this.captureIds.has(id)) return null;\n\t\telse this.captureIds.set(id, void 0);\n\t\tthis.mark(instance);\n\t\treturn id;\n\t}\n\t/**\n\t* Capture the meta information of an instance. (recursive)\n\t*\n\t* @param {Vue} instance\n\t* @return {object}\n\t*/\n\tasync capture(instance, depth) {\n\t\tif (!instance) return null;\n\t\tconst id = this.captureId(instance);\n\t\tconst name = getInstanceName(instance);\n\t\tconst children = this.getInternalInstanceChildren(instance.subTree).filter((child) => !isBeingDestroyed(child));\n\t\tconst parents = this.getComponentParents(instance) || [];\n\t\tconst inactive = !!instance.isDeactivated || parents.some((parent) => parent.isDeactivated);\n\t\tconst treeNode = {\n\t\t\tuid: instance.uid,\n\t\t\tid,\n\t\t\tname,\n\t\t\trenderKey: getRenderKey(instance.vnode ? instance.vnode.key : null),\n\t\t\tinactive,\n\t\t\tchildren: [],\n\t\t\tisFragment: isFragment(instance),\n\t\t\ttags: typeof instance.type !== \"function\" ? [] : [{\n\t\t\t\tlabel: \"functional\",\n\t\t\t\ttextColor: 5592405,\n\t\t\t\tbackgroundColor: 15658734\n\t\t\t}],\n\t\t\tautoOpen: this.recursively,\n\t\t\tfile: instance.type.__file || \"\"\n\t\t};\n\t\tif (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some((parent) => parent.type.__isKeepAlive)) treeNode.children = await Promise.all(children.map((child) => this.capture(child, depth + 1)).filter(Boolean));\n\t\tif (this.isKeepAlive(instance)) {\n\t\t\tconst cachedComponents = this.getKeepAliveCachedInstances(instance);\n\t\t\tconst childrenIds = children.map((child) => child.__VUE_DEVTOOLS_NEXT_UID__);\n\t\t\tfor (const cachedChild of cachedComponents) if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_NEXT_UID__)) {\n\t\t\t\tconst node = await this.capture({\n\t\t\t\t\t...cachedChild,\n\t\t\t\t\tisDeactivated: true\n\t\t\t\t}, depth + 1);\n\t\t\t\tif (node) treeNode.children.push(node);\n\t\t\t}\n\t\t}\n\t\tconst firstElement = getRootElementsFromComponentInstance(instance)[0];\n\t\tif (firstElement?.parentElement) {\n\t\t\tconst parentInstance = instance.parent;\n\t\t\tconst parentRootElements = parentInstance ? getRootElementsFromComponentInstance(parentInstance) : [];\n\t\t\tlet el = firstElement;\n\t\t\tconst indexList = [];\n\t\t\tdo {\n\t\t\t\tindexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n\t\t\t\tel = el.parentElement;\n\t\t\t} while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\t\t\ttreeNode.domOrder = indexList.reverse();\n\t\t} else treeNode.domOrder = [-1];\n\t\tif (instance.suspense?.suspenseKey) {\n\t\t\ttreeNode.tags.push({\n\t\t\t\tlabel: instance.suspense.suspenseKey,\n\t\t\t\tbackgroundColor: 14979812,\n\t\t\t\ttextColor: 16777215\n\t\t\t});\n\t\t\tthis.mark(instance, true);\n\t\t}\n\t\tthis.api.visitComponentTree({\n\t\t\ttreeNode,\n\t\t\tcomponentInstance: instance,\n\t\t\tapp: instance.appContext.app,\n\t\t\tfilter: this.componentFilter.filter\n\t\t});\n\t\treturn treeNode;\n\t}\n\t/**\n\t* Find qualified children from a single instance.\n\t* If the instance itself is qualified, just return itself.\n\t* This is ok because [].concat works in both cases.\n\t*\n\t* @param {Vue|Vnode} instance\n\t* @return {Vue|Array}\n\t*/\n\tasync findQualifiedChildren(instance, depth) {\n\t\tif (this.componentFilter.isQualified(instance) && !instance.type.devtools?.hide) return [await this.capture(instance, depth)];\n\t\telse if (instance.subTree) {\n\t\t\tconst list = this.isKeepAlive(instance) ? this.getKeepAliveCachedInstances(instance) : this.getInternalInstanceChildren(instance.subTree);\n\t\t\treturn this.findQualifiedChildrenFromList(list, depth);\n\t\t} else return [];\n\t}\n\t/**\n\t* Iterate through an array of instances and flatten it into\n\t* an array of qualified instances. This is a depth-first\n\t* traversal - e.g. if an instance is not matched, we will\n\t* recursively go deeper until a qualified child is found.\n\t*\n\t* @param {Array} instances\n\t* @return {Array}\n\t*/\n\tasync findQualifiedChildrenFromList(instances, depth) {\n\t\tinstances = instances.filter((child) => !isBeingDestroyed(child) && !child.type.devtools?.hide);\n\t\tif (!this.componentFilter.filter) return Promise.all(instances.map((child) => this.capture(child, depth)));\n\t\telse return Array.prototype.concat.apply([], await Promise.all(instances.map((i) => this.findQualifiedChildren(i, depth))));\n\t}\n\t/**\n\t* Get children from a component instance.\n\t*/\n\tgetInternalInstanceChildren(subTree, suspense = null) {\n\t\tconst list = [];\n\t\tif (subTree) {\n\t\t\tif (subTree.component) !suspense ? list.push(subTree.component) : list.push({\n\t\t\t\t...subTree.component,\n\t\t\t\tsuspense\n\t\t\t});\n\t\t\telse if (subTree.suspense) {\n\t\t\t\tconst suspenseKey = !subTree.suspense.isInFallback ? \"suspense default\" : \"suspense fallback\";\n\t\t\t\tlist.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, {\n\t\t\t\t\t...subTree.suspense,\n\t\t\t\t\tsuspenseKey\n\t\t\t\t}));\n\t\t\t} else if (Array.isArray(subTree.children)) subTree.children.forEach((childSubTree) => {\n\t\t\t\tif (childSubTree.component) !suspense ? list.push(childSubTree.component) : list.push({\n\t\t\t\t\t...childSubTree.component,\n\t\t\t\t\tsuspense\n\t\t\t\t});\n\t\t\t\telse list.push(...this.getInternalInstanceChildren(childSubTree, suspense));\n\t\t\t});\n\t\t}\n\t\treturn list.filter((child) => !isBeingDestroyed(child) && !child.type.devtools?.hide);\n\t}\n\t/**\n\t* Mark an instance as captured and store it in the instance map.\n\t*\n\t* @param {Vue} instance\n\t*/\n\tmark(instance, force = false) {\n\t\tconst instanceMap = getAppRecord(instance).instanceMap;\n\t\tif (force || !instanceMap.has(instance.__VUE_DEVTOOLS_NEXT_UID__)) {\n\t\t\tinstanceMap.set(instance.__VUE_DEVTOOLS_NEXT_UID__, instance);\n\t\t\tactiveAppRecord.value.instanceMap = instanceMap;\n\t\t}\n\t}\n\tisKeepAlive(instance) {\n\t\treturn instance.type.__isKeepAlive && instance.__v_cache;\n\t}\n\tgetKeepAliveCachedInstances(instance) {\n\t\treturn Array.from(instance.__v_cache.values()).map((vnode) => vnode.component).filter(Boolean);\n\t}\n};\n\n//#endregion\n//#region src/core/timeline/perf.ts\nconst markEndQueue = /* @__PURE__ */ new Map();\nconst PERFORMANCE_EVENT_LAYER_ID = \"performance\";\nasync function performanceMarkStart(api, app, uid, vm, type, time) {\n\tconst appRecord = await getAppRecord(app);\n\tif (!appRecord) return;\n\tconst componentName = getInstanceName(vm) || \"Unknown Component\";\n\tconst groupId = devtoolsState.perfUniqueGroupId++;\n\tconst groupKey = `${uid}-${type}`;\n\tappRecord.perfGroupIds.set(groupKey, {\n\t\tgroupId,\n\t\ttime\n\t});\n\tawait api.addTimelineEvent({\n\t\tlayerId: PERFORMANCE_EVENT_LAYER_ID,\n\t\tevent: {\n\t\t\ttime: Date.now(),\n\t\t\tdata: {\n\t\t\t\tcomponent: componentName,\n\t\t\t\ttype,\n\t\t\t\tmeasure: \"start\"\n\t\t\t},\n\t\t\ttitle: componentName,\n\t\t\tsubtitle: type,\n\t\t\tgroupId\n\t\t}\n\t});\n\tif (markEndQueue.has(groupKey)) {\n\t\tconst { app: app$1, uid: uid$1, instance, type: type$1, time: time$1 } = markEndQueue.get(groupKey);\n\t\tmarkEndQueue.delete(groupKey);\n\t\tawait performanceMarkEnd(api, app$1, uid$1, instance, type$1, time$1);\n\t}\n}\nfunction performanceMarkEnd(api, app, uid, vm, type, time) {\n\tconst appRecord = getAppRecord(app);\n\tif (!appRecord) return;\n\tconst componentName = getInstanceName(vm) || \"Unknown Component\";\n\tconst groupKey = `${uid}-${type}`;\n\tconst groupInfo = appRecord.perfGroupIds.get(groupKey);\n\tif (groupInfo) {\n\t\tconst groupId = groupInfo.groupId;\n\t\tconst duration = time - groupInfo.time;\n\t\tapi.addTimelineEvent({\n\t\t\tlayerId: PERFORMANCE_EVENT_LAYER_ID,\n\t\t\tevent: {\n\t\t\t\ttime: Date.now(),\n\t\t\t\tdata: {\n\t\t\t\t\tcomponent: componentName,\n\t\t\t\t\ttype,\n\t\t\t\t\tmeasure: \"end\",\n\t\t\t\t\tduration: { _custom: {\n\t\t\t\t\t\ttype: \"Duration\",\n\t\t\t\t\t\tvalue: duration,\n\t\t\t\t\t\tdisplay: `${duration} ms`\n\t\t\t\t\t} }\n\t\t\t\t},\n\t\t\t\ttitle: componentName,\n\t\t\t\tsubtitle: type,\n\t\t\t\tgroupId\n\t\t\t}\n\t\t});\n\t} else markEndQueue.set(groupKey, {\n\t\tapp,\n\t\tuid,\n\t\tinstance: vm,\n\t\ttype,\n\t\ttime\n\t});\n}\n\n//#endregion\n//#region src/core/timeline/index.ts\nconst COMPONENT_EVENT_LAYER_ID = \"component-event\";\nfunction setupBuiltinTimelineLayers(api) {\n\tif (!isBrowser) return;\n\tapi.addTimelineLayer({\n\t\tid: \"mouse\",\n\t\tlabel: \"Mouse\",\n\t\tcolor: 10768815\n\t});\n\t[\n\t\t\"mousedown\",\n\t\t\"mouseup\",\n\t\t\"click\",\n\t\t\"dblclick\"\n\t].forEach((eventType) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.mouseEventEnabled) return;\n\t\twindow.addEventListener(eventType, async (event) => {\n\t\t\tawait api.addTimelineEvent({\n\t\t\t\tlayerId: \"mouse\",\n\t\t\t\tevent: {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype: eventType,\n\t\t\t\t\t\tx: event.clientX,\n\t\t\t\t\t\ty: event.clientY\n\t\t\t\t\t},\n\t\t\t\t\ttitle: eventType\n\t\t\t\t}\n\t\t\t});\n\t\t}, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: \"keyboard\",\n\t\tlabel: \"Keyboard\",\n\t\tcolor: 8475055\n\t});\n\t[\n\t\t\"keyup\",\n\t\t\"keydown\",\n\t\t\"keypress\"\n\t].forEach((eventType) => {\n\t\twindow.addEventListener(eventType, async (event) => {\n\t\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.keyboardEventEnabled) return;\n\t\t\tawait api.addTimelineEvent({\n\t\t\t\tlayerId: \"keyboard\",\n\t\t\t\tevent: {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\ttype: eventType,\n\t\t\t\t\t\tkey: event.key,\n\t\t\t\t\t\tctrlKey: event.ctrlKey,\n\t\t\t\t\t\tshiftKey: event.shiftKey,\n\t\t\t\t\t\taltKey: event.altKey,\n\t\t\t\t\t\tmetaKey: event.metaKey\n\t\t\t\t\t},\n\t\t\t\t\ttitle: event.key\n\t\t\t\t}\n\t\t\t});\n\t\t}, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: COMPONENT_EVENT_LAYER_ID,\n\t\tlabel: \"Component events\",\n\t\tcolor: 5226637\n\t});\n\thook.on.componentEmit(async (app, instance, event, params) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.componentEventEnabled) return;\n\t\tconst appRecord = await getAppRecord(app);\n\t\tif (!appRecord) return;\n\t\tconst componentId = `${appRecord.id}:${instance.uid}`;\n\t\tconst componentName = getInstanceName(instance) || \"Unknown Component\";\n\t\tapi.addTimelineEvent({\n\t\t\tlayerId: COMPONENT_EVENT_LAYER_ID,\n\t\t\tevent: {\n\t\t\t\ttime: Date.now(),\n\t\t\t\tdata: {\n\t\t\t\t\tcomponent: { _custom: {\n\t\t\t\t\t\ttype: \"component-definition\",\n\t\t\t\t\t\tdisplay: componentName\n\t\t\t\t\t} },\n\t\t\t\t\tevent,\n\t\t\t\t\tparams\n\t\t\t\t},\n\t\t\t\ttitle: event,\n\t\t\t\tsubtitle: `by ${componentName}`,\n\t\t\t\tmeta: { componentId }\n\t\t\t}\n\t\t});\n\t});\n\tapi.addTimelineLayer({\n\t\tid: \"performance\",\n\t\tlabel: PERFORMANCE_EVENT_LAYER_ID,\n\t\tcolor: 4307050\n\t});\n\thook.on.perfStart((app, uid, vm, type, time) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled) return;\n\t\tperformanceMarkStart(api, app, uid, vm, type, time);\n\t});\n\thook.on.perfEnd((app, uid, vm, type, time) => {\n\t\tif (!devtoolsState.timelineLayersState.recordingState || !devtoolsState.timelineLayersState.performanceEventEnabled) return;\n\t\tperformanceMarkEnd(api, app, uid, vm, type, time);\n\t});\n}\n\n//#endregion\n//#region src/core/vm/index.ts\nconst MAX_$VM = 10;\nconst $vmQueue = [];\nfunction exposeInstanceToWindow(componentInstance) {\n\tif (typeof window === \"undefined\") return;\n\tconst win = window;\n\tif (!componentInstance) return;\n\twin.$vm = componentInstance;\n\tif ($vmQueue[0] !== componentInstance) {\n\t\tif ($vmQueue.length >= MAX_$VM) $vmQueue.pop();\n\t\tfor (let i = $vmQueue.length; i > 0; i--) win[`$vm${i}`] = $vmQueue[i] = $vmQueue[i - 1];\n\t\twin.$vm0 = $vmQueue[0] = componentInstance;\n\t}\n}\n\n//#endregion\n//#region src/core/plugin/components.ts\nconst INSPECTOR_ID = \"components\";\nfunction createComponentsDevToolsPlugin(app) {\n\tconst descriptor = {\n\t\tid: INSPECTOR_ID,\n\t\tlabel: \"Components\",\n\t\tapp\n\t};\n\tconst setupFn = (api) => {\n\t\tapi.addInspector({\n\t\t\tid: INSPECTOR_ID,\n\t\t\tlabel: \"Components\",\n\t\t\ttreeFilterPlaceholder: \"Search components\"\n\t\t});\n\t\tsetupBuiltinTimelineLayers(api);\n\t\tapi.on.getInspectorTree(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\tconst instance = getComponentInstance(activeAppRecord.value, payload.instanceId);\n\t\t\t\tif (instance) payload.rootNodes = await new ComponentWalker({\n\t\t\t\t\tfilterText: payload.filter,\n\t\t\t\t\tmaxDepth: 100,\n\t\t\t\t\trecursively: false,\n\t\t\t\t\tapi\n\t\t\t\t}).getComponentTree(instance);\n\t\t\t}\n\t\t});\n\t\tapi.on.getInspectorState(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\tconst result = getInstanceState({ instanceId: payload.nodeId });\n\t\t\t\tconst componentInstance = result.instance;\n\t\t\t\tconst _payload = {\n\t\t\t\t\tcomponentInstance,\n\t\t\t\t\tapp: result.instance?.appContext.app,\n\t\t\t\t\tinstanceData: result\n\t\t\t\t};\n\t\t\t\tdevtoolsContext.hooks.callHookWith((callbacks) => {\n\t\t\t\t\tcallbacks.forEach((cb) => cb(_payload));\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT);\n\t\t\t\tpayload.state = result;\n\t\t\t\texposeInstanceToWindow(componentInstance);\n\t\t\t}\n\t\t});\n\t\tapi.on.editInspectorState(async (payload) => {\n\t\t\tif (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n\t\t\t\teditState(payload);\n\t\t\t\tawait api.sendInspectorState(\"components\");\n\t\t\t}\n\t\t});\n\t\tconst debounceSendInspectorTree = debounce(() => {\n\t\t\tapi.sendInspectorTree(INSPECTOR_ID);\n\t\t}, 120);\n\t\tconst debounceSendInspectorState = debounce(() => {\n\t\t\tapi.sendInspectorState(INSPECTOR_ID);\n\t\t}, 120);\n\t\thook.on.componentAdded(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (component) {\n\t\t\t\tif (component.__VUE_DEVTOOLS_NEXT_UID__ == null) component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\t\t\tif (!appRecord?.instanceMap.has(id)) {\n\t\t\t\t\tappRecord?.instanceMap.set(id, component);\n\t\t\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!appRecord) return;\n\t\t\tdebounceSendInspectorTree();\n\t\t});\n\t\thook.on.componentUpdated(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (component) {\n\t\t\t\tif (component.__VUE_DEVTOOLS_NEXT_UID__ == null) component.__VUE_DEVTOOLS_NEXT_UID__ = id;\n\t\t\t\tif (!appRecord?.instanceMap.has(id)) {\n\t\t\t\t\tappRecord?.instanceMap.set(id, component);\n\t\t\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!appRecord) return;\n\t\t\tdebounceSendInspectorTree();\n\t\t\tdebounceSendInspectorState();\n\t\t});\n\t\thook.on.componentRemoved(async (app$1, uid, parentUid, component) => {\n\t\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\t\tif (app$1?._instance?.type?.devtools?.hide) return;\n\t\t\tif (!app$1 || typeof uid !== \"number\" && !uid || !component) return;\n\t\t\tconst appRecord = await getAppRecord(app$1);\n\t\t\tif (!appRecord) return;\n\t\t\tconst id = await getComponentId({\n\t\t\t\tapp: app$1,\n\t\t\t\tuid,\n\t\t\t\tinstance: component\n\t\t\t});\n\t\t\tappRecord?.instanceMap.delete(id);\n\t\t\tif (activeAppRecord.value.id === appRecord?.id) activeAppRecord.value.instanceMap = appRecord.instanceMap;\n\t\t\tdebounceSendInspectorTree();\n\t\t});\n\t};\n\treturn [descriptor, setupFn];\n}\n\n//#endregion\n//#region src/core/plugin/index.ts\ntarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__ ??= /* @__PURE__ */ new Set();\nfunction setupDevToolsPlugin(pluginDescriptor, setupFn) {\n\treturn hook.setupDevToolsPlugin(pluginDescriptor, setupFn);\n}\nfunction callDevToolsPluginSetupFn(plugin, app) {\n\tconst [pluginDescriptor, setupFn] = plugin;\n\tif (pluginDescriptor.app !== app) return;\n\tconst api = new DevToolsPluginAPI({\n\t\tplugin: {\n\t\t\tsetupFn,\n\t\t\tdescriptor: pluginDescriptor\n\t\t},\n\t\tctx: devtoolsContext\n\t});\n\tif (pluginDescriptor.packageName === \"vuex\") api.on.editInspectorState((payload) => {\n\t\tapi.sendInspectorState(payload.inspectorId);\n\t});\n\tsetupFn(api);\n}\nfunction removeRegisteredPluginApp(app) {\n\ttarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.delete(app);\n}\nfunction registerDevToolsPlugin(app, options) {\n\tif (target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(app)) return;\n\tif (devtoolsState.highPerfModeEnabled && !options?.inspectingComponent) return;\n\ttarget.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(app);\n\tdevtoolsPluginBuffer.forEach((plugin) => {\n\t\tcallDevToolsPluginSetupFn(plugin, app);\n\t});\n}\n\n//#endregion\n//#region src/ctx/router.ts\nconst ROUTER_KEY = \"__VUE_DEVTOOLS_ROUTER__\";\nconst ROUTER_INFO_KEY = \"__VUE_DEVTOOLS_ROUTER_INFO__\";\ntarget[ROUTER_INFO_KEY] ??= {\n\tcurrentRoute: null,\n\troutes: []\n};\ntarget[ROUTER_KEY] ??= {};\nconst devtoolsRouterInfo = new Proxy(target[ROUTER_INFO_KEY], { get(target$1, property) {\n\treturn target[ROUTER_INFO_KEY][property];\n} });\nconst devtoolsRouter = new Proxy(target[ROUTER_KEY], { get(target$1, property) {\n\tif (property === \"value\") return target[ROUTER_KEY];\n} });\n\n//#endregion\n//#region src/core/router/index.ts\nfunction getRoutes(router) {\n\tconst routesMap = /* @__PURE__ */ new Map();\n\treturn (router?.getRoutes() || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1));\n}\nfunction filterRoutes(routes) {\n\treturn routes.map((item) => {\n\t\tlet { path, name, children, meta } = item;\n\t\tif (children?.length) children = filterRoutes(children);\n\t\treturn {\n\t\t\tpath,\n\t\t\tname,\n\t\t\tchildren,\n\t\t\tmeta\n\t\t};\n\t});\n}\nfunction filterCurrentRoute(route) {\n\tif (route) {\n\t\tconst { fullPath, hash, href, path, name, matched, params, query } = route;\n\t\treturn {\n\t\t\tfullPath,\n\t\t\thash,\n\t\t\thref,\n\t\t\tpath,\n\t\t\tname,\n\t\t\tparams,\n\t\t\tquery,\n\t\t\tmatched: filterRoutes(matched)\n\t\t};\n\t}\n\treturn route;\n}\nfunction normalizeRouterInfo(appRecord, activeAppRecord$1) {\n\tfunction init() {\n\t\tconst router = appRecord.app?.config.globalProperties.$router;\n\t\tconst currentRoute = filterCurrentRoute(router?.currentRoute.value);\n\t\tconst routes = filterRoutes(getRoutes(router));\n\t\tconst c = console.warn;\n\t\tconsole.warn = () => {};\n\t\ttarget[ROUTER_INFO_KEY] = {\n\t\t\tcurrentRoute: currentRoute ? deepClone(currentRoute) : {},\n\t\t\troutes: deepClone(routes)\n\t\t};\n\t\ttarget[ROUTER_KEY] = router;\n\t\tconsole.warn = c;\n\t}\n\tinit();\n\thook.on.componentUpdated(debounce(() => {\n\t\tif (activeAppRecord$1.value?.app !== appRecord.app) return;\n\t\tinit();\n\t\tif (devtoolsState.highPerfModeEnabled) return;\n\t\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED, { state: target[ROUTER_INFO_KEY] });\n\t}, 200));\n}\n\n//#endregion\n//#region src/ctx/api.ts\nfunction createDevToolsApi(hooks$1) {\n\treturn {\n\t\tasync getInspectorTree(payload) {\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\trootNodes: []\n\t\t\t};\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload)));\n\t\t\t\t\tresolve();\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE);\n\t\t\t});\n\t\t\treturn _payload.rootNodes;\n\t\t},\n\t\tasync getInspectorState(payload) {\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\tstate: null\n\t\t\t};\n\t\t\tconst ctx = { currentTab: `custom-inspector:${payload.inspectorId}` };\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\thooks$1.callHookWith(async (callbacks) => {\n\t\t\t\t\tawait Promise.all(callbacks.map((cb) => cb(_payload, ctx)));\n\t\t\t\t\tresolve();\n\t\t\t\t}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE);\n\t\t\t});\n\t\t\treturn _payload.state;\n\t\t},\n\t\teditInspectorState(payload) {\n\t\t\tconst stateEditor$1 = new StateEditor();\n\t\t\tconst _payload = {\n\t\t\t\t...payload,\n\t\t\t\tapp: activeAppRecord.value.app,\n\t\t\t\tset: (obj, path = payload.path, value = payload.state.value, cb) => {\n\t\t\t\t\tstateEditor$1.set(obj, path, value, cb || stateEditor$1.createDefaultSetCallback(payload.state));\n\t\t\t\t}\n\t\t\t};\n\t\t\thooks$1.callHookWith((callbacks) => {\n\t\t\t\tcallbacks.forEach((cb) => cb(_payload));\n\t\t\t}, DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE);\n\t\t},\n\t\tsendInspectorState(inspectorId) {\n\t\t\tconst inspector = getInspector(inspectorId);\n\t\t\thooks$1.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, {\n\t\t\t\tinspectorId,\n\t\t\t\tplugin: {\n\t\t\t\t\tdescriptor: inspector.descriptor,\n\t\t\t\t\tsetupFn: () => ({})\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tinspectComponentInspector() {\n\t\t\treturn inspectComponentHighLighter();\n\t\t},\n\t\tcancelInspectComponentInspector() {\n\t\t\treturn cancelInspectComponentHighLighter();\n\t\t},\n\t\tgetComponentRenderCode(id) {\n\t\t\tconst instance = getComponentInstance(activeAppRecord.value, id);\n\t\t\tif (instance) return !(typeof instance?.type === \"function\") ? instance.render.toString() : instance.type.toString();\n\t\t},\n\t\tscrollToComponent(id) {\n\t\t\treturn scrollToComponent({ id });\n\t\t},\n\t\topenInEditor,\n\t\tgetVueInspector: getComponentInspector,\n\t\ttoggleApp(id, options) {\n\t\t\tconst appRecord = devtoolsAppRecords.value.find((record) => record.id === id);\n\t\t\tif (appRecord) {\n\t\t\t\tsetActiveAppRecordId(id);\n\t\t\t\tsetActiveAppRecord(appRecord);\n\t\t\t\tnormalizeRouterInfo(appRecord, activeAppRecord);\n\t\t\t\tcallInspectorUpdatedHook();\n\t\t\t\tregisterDevToolsPlugin(appRecord.app, options);\n\t\t\t}\n\t\t},\n\t\tinspectDOM(instanceId) {\n\t\t\tconst instance = getComponentInstance(activeAppRecord.value, instanceId);\n\t\t\tif (instance) {\n\t\t\t\tconst [el] = getRootElementsFromComponentInstance(instance);\n\t\t\t\tif (el) target.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__ = el;\n\t\t\t}\n\t\t},\n\t\tupdatePluginSettings(pluginId, key, value) {\n\t\t\tsetPluginSettings(pluginId, key, value);\n\t\t},\n\t\tgetPluginSettings(pluginId) {\n\t\t\treturn {\n\t\t\t\toptions: getPluginSettingsOptions(pluginId),\n\t\t\t\tvalues: getPluginSettings(pluginId)\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/ctx/env.ts\ntarget.__VUE_DEVTOOLS_ENV__ ??= { vitePluginDetected: false };\nfunction getDevToolsEnv() {\n\treturn target.__VUE_DEVTOOLS_ENV__;\n}\nfunction setDevToolsEnv(env) {\n\ttarget.__VUE_DEVTOOLS_ENV__ = {\n\t\t...target.__VUE_DEVTOOLS_ENV__,\n\t\t...env\n\t};\n}\n\n//#endregion\n//#region src/ctx/index.ts\nconst hooks = createDevToolsCtxHooks();\ntarget.__VUE_DEVTOOLS_KIT_CONTEXT__ ??= {\n\thooks,\n\tget state() {\n\t\treturn {\n\t\t\t...devtoolsState,\n\t\t\tactiveAppRecordId: activeAppRecord.id,\n\t\t\tactiveAppRecord: activeAppRecord.value,\n\t\t\tappRecords: devtoolsAppRecords.value\n\t\t};\n\t},\n\tapi: createDevToolsApi(hooks)\n};\nconst devtoolsContext = target.__VUE_DEVTOOLS_KIT_CONTEXT__;\n\n//#endregion\n//#region ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\nvar require_speakingurl$1 = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js\": ((exports, module) => {\n\t(function(root) {\n\t\t/**\n\t\t* charMap\n\t\t* @type {Object}\n\t\t*/\n\t\tvar charMap = {\n\t\t\t\"À\": \"A\",\n\t\t\t\"Á\": \"A\",\n\t\t\t\"Â\": \"A\",\n\t\t\t\"Ã\": \"A\",\n\t\t\t\"Ä\": \"Ae\",\n\t\t\t\"Å\": \"A\",\n\t\t\t\"Æ\": \"AE\",\n\t\t\t\"Ç\": \"C\",\n\t\t\t\"È\": \"E\",\n\t\t\t\"É\": \"E\",\n\t\t\t\"Ê\": \"E\",\n\t\t\t\"Ë\": \"E\",\n\t\t\t\"Ì\": \"I\",\n\t\t\t\"Í\": \"I\",\n\t\t\t\"Î\": \"I\",\n\t\t\t\"Ï\": \"I\",\n\t\t\t\"Ð\": \"D\",\n\t\t\t\"Ñ\": \"N\",\n\t\t\t\"Ò\": \"O\",\n\t\t\t\"Ó\": \"O\",\n\t\t\t\"Ô\": \"O\",\n\t\t\t\"Õ\": \"O\",\n\t\t\t\"Ö\": \"Oe\",\n\t\t\t\"Ő\": \"O\",\n\t\t\t\"Ø\": \"O\",\n\t\t\t\"Ù\": \"U\",\n\t\t\t\"Ú\": \"U\",\n\t\t\t\"Û\": \"U\",\n\t\t\t\"Ü\": \"Ue\",\n\t\t\t\"Ű\": \"U\",\n\t\t\t\"Ý\": \"Y\",\n\t\t\t\"Þ\": \"TH\",\n\t\t\t\"ß\": \"ss\",\n\t\t\t\"à\": \"a\",\n\t\t\t\"á\": \"a\",\n\t\t\t\"â\": \"a\",\n\t\t\t\"ã\": \"a\",\n\t\t\t\"ä\": \"ae\",\n\t\t\t\"å\": \"a\",\n\t\t\t\"æ\": \"ae\",\n\t\t\t\"ç\": \"c\",\n\t\t\t\"è\": \"e\",\n\t\t\t\"é\": \"e\",\n\t\t\t\"ê\": \"e\",\n\t\t\t\"ë\": \"e\",\n\t\t\t\"ì\": \"i\",\n\t\t\t\"í\": \"i\",\n\t\t\t\"î\": \"i\",\n\t\t\t\"ï\": \"i\",\n\t\t\t\"ð\": \"d\",\n\t\t\t\"ñ\": \"n\",\n\t\t\t\"ò\": \"o\",\n\t\t\t\"ó\": \"o\",\n\t\t\t\"ô\": \"o\",\n\t\t\t\"õ\": \"o\",\n\t\t\t\"ö\": \"oe\",\n\t\t\t\"ő\": \"o\",\n\t\t\t\"ø\": \"o\",\n\t\t\t\"ù\": \"u\",\n\t\t\t\"ú\": \"u\",\n\t\t\t\"û\": \"u\",\n\t\t\t\"ü\": \"ue\",\n\t\t\t\"ű\": \"u\",\n\t\t\t\"ý\": \"y\",\n\t\t\t\"þ\": \"th\",\n\t\t\t\"ÿ\": \"y\",\n\t\t\t\"ẞ\": \"SS\",\n\t\t\t\"ا\": \"a\",\n\t\t\t\"أ\": \"a\",\n\t\t\t\"إ\": \"i\",\n\t\t\t\"آ\": \"aa\",\n\t\t\t\"ؤ\": \"u\",\n\t\t\t\"ئ\": \"e\",\n\t\t\t\"ء\": \"a\",\n\t\t\t\"ب\": \"b\",\n\t\t\t\"ت\": \"t\",\n\t\t\t\"ث\": \"th\",\n\t\t\t\"ج\": \"j\",\n\t\t\t\"ح\": \"h\",\n\t\t\t\"خ\": \"kh\",\n\t\t\t\"د\": \"d\",\n\t\t\t\"ذ\": \"th\",\n\t\t\t\"ر\": \"r\",\n\t\t\t\"ز\": \"z\",\n\t\t\t\"س\": \"s\",\n\t\t\t\"ش\": \"sh\",\n\t\t\t\"ص\": \"s\",\n\t\t\t\"ض\": \"dh\",\n\t\t\t\"ط\": \"t\",\n\t\t\t\"ظ\": \"z\",\n\t\t\t\"ع\": \"a\",\n\t\t\t\"غ\": \"gh\",\n\t\t\t\"ف\": \"f\",\n\t\t\t\"ق\": \"q\",\n\t\t\t\"ك\": \"k\",\n\t\t\t\"ل\": \"l\",\n\t\t\t\"م\": \"m\",\n\t\t\t\"ن\": \"n\",\n\t\t\t\"ه\": \"h\",\n\t\t\t\"و\": \"w\",\n\t\t\t\"ي\": \"y\",\n\t\t\t\"ى\": \"a\",\n\t\t\t\"ة\": \"h\",\n\t\t\t\"ﻻ\": \"la\",\n\t\t\t\"ﻷ\": \"laa\",\n\t\t\t\"ﻹ\": \"lai\",\n\t\t\t\"ﻵ\": \"laa\",\n\t\t\t\"گ\": \"g\",\n\t\t\t\"چ\": \"ch\",\n\t\t\t\"پ\": \"p\",\n\t\t\t\"ژ\": \"zh\",\n\t\t\t\"ک\": \"k\",\n\t\t\t\"ی\": \"y\",\n\t\t\t\"َ\": \"a\",\n\t\t\t\"ً\": \"an\",\n\t\t\t\"ِ\": \"e\",\n\t\t\t\"ٍ\": \"en\",\n\t\t\t\"ُ\": \"u\",\n\t\t\t\"ٌ\": \"on\",\n\t\t\t\"ْ\": \"\",\n\t\t\t\"٠\": \"0\",\n\t\t\t\"١\": \"1\",\n\t\t\t\"٢\": \"2\",\n\t\t\t\"٣\": \"3\",\n\t\t\t\"٤\": \"4\",\n\t\t\t\"٥\": \"5\",\n\t\t\t\"٦\": \"6\",\n\t\t\t\"٧\": \"7\",\n\t\t\t\"٨\": \"8\",\n\t\t\t\"٩\": \"9\",\n\t\t\t\"۰\": \"0\",\n\t\t\t\"۱\": \"1\",\n\t\t\t\"۲\": \"2\",\n\t\t\t\"۳\": \"3\",\n\t\t\t\"۴\": \"4\",\n\t\t\t\"۵\": \"5\",\n\t\t\t\"۶\": \"6\",\n\t\t\t\"۷\": \"7\",\n\t\t\t\"۸\": \"8\",\n\t\t\t\"۹\": \"9\",\n\t\t\t\"က\": \"k\",\n\t\t\t\"ခ\": \"kh\",\n\t\t\t\"ဂ\": \"g\",\n\t\t\t\"ဃ\": \"ga\",\n\t\t\t\"င\": \"ng\",\n\t\t\t\"စ\": \"s\",\n\t\t\t\"ဆ\": \"sa\",\n\t\t\t\"ဇ\": \"z\",\n\t\t\t\"စျ\": \"za\",\n\t\t\t\"ည\": \"ny\",\n\t\t\t\"ဋ\": \"t\",\n\t\t\t\"ဌ\": \"ta\",\n\t\t\t\"ဍ\": \"d\",\n\t\t\t\"ဎ\": \"da\",\n\t\t\t\"ဏ\": \"na\",\n\t\t\t\"တ\": \"t\",\n\t\t\t\"ထ\": \"ta\",\n\t\t\t\"ဒ\": \"d\",\n\t\t\t\"ဓ\": \"da\",\n\t\t\t\"န\": \"n\",\n\t\t\t\"ပ\": \"p\",\n\t\t\t\"ဖ\": \"pa\",\n\t\t\t\"ဗ\": \"b\",\n\t\t\t\"ဘ\": \"ba\",\n\t\t\t\"မ\": \"m\",\n\t\t\t\"ယ\": \"y\",\n\t\t\t\"ရ\": \"ya\",\n\t\t\t\"လ\": \"l\",\n\t\t\t\"ဝ\": \"w\",\n\t\t\t\"သ\": \"th\",\n\t\t\t\"ဟ\": \"h\",\n\t\t\t\"ဠ\": \"la\",\n\t\t\t\"အ\": \"a\",\n\t\t\t\"ြ\": \"y\",\n\t\t\t\"ျ\": \"ya\",\n\t\t\t\"ွ\": \"w\",\n\t\t\t\"ြွ\": \"yw\",\n\t\t\t\"ျွ\": \"ywa\",\n\t\t\t\"ှ\": \"h\",\n\t\t\t\"ဧ\": \"e\",\n\t\t\t\"၏\": \"-e\",\n\t\t\t\"ဣ\": \"i\",\n\t\t\t\"ဤ\": \"-i\",\n\t\t\t\"ဉ\": \"u\",\n\t\t\t\"ဦ\": \"-u\",\n\t\t\t\"ဩ\": \"aw\",\n\t\t\t\"သြော\": \"aw\",\n\t\t\t\"ဪ\": \"aw\",\n\t\t\t\"၀\": \"0\",\n\t\t\t\"၁\": \"1\",\n\t\t\t\"၂\": \"2\",\n\t\t\t\"၃\": \"3\",\n\t\t\t\"၄\": \"4\",\n\t\t\t\"၅\": \"5\",\n\t\t\t\"၆\": \"6\",\n\t\t\t\"၇\": \"7\",\n\t\t\t\"၈\": \"8\",\n\t\t\t\"၉\": \"9\",\n\t\t\t\"္\": \"\",\n\t\t\t\"့\": \"\",\n\t\t\t\"း\": \"\",\n\t\t\t\"č\": \"c\",\n\t\t\t\"ď\": \"d\",\n\t\t\t\"ě\": \"e\",\n\t\t\t\"ň\": \"n\",\n\t\t\t\"ř\": \"r\",\n\t\t\t\"š\": \"s\",\n\t\t\t\"ť\": \"t\",\n\t\t\t\"ů\": \"u\",\n\t\t\t\"ž\": \"z\",\n\t\t\t\"Č\": \"C\",\n\t\t\t\"Ď\": \"D\",\n\t\t\t\"Ě\": \"E\",\n\t\t\t\"Ň\": \"N\",\n\t\t\t\"Ř\": \"R\",\n\t\t\t\"Š\": \"S\",\n\t\t\t\"Ť\": \"T\",\n\t\t\t\"Ů\": \"U\",\n\t\t\t\"Ž\": \"Z\",\n\t\t\t\"ހ\": \"h\",\n\t\t\t\"ށ\": \"sh\",\n\t\t\t\"ނ\": \"n\",\n\t\t\t\"ރ\": \"r\",\n\t\t\t\"ބ\": \"b\",\n\t\t\t\"ޅ\": \"lh\",\n\t\t\t\"ކ\": \"k\",\n\t\t\t\"އ\": \"a\",\n\t\t\t\"ވ\": \"v\",\n\t\t\t\"މ\": \"m\",\n\t\t\t\"ފ\": \"f\",\n\t\t\t\"ދ\": \"dh\",\n\t\t\t\"ތ\": \"th\",\n\t\t\t\"ލ\": \"l\",\n\t\t\t\"ގ\": \"g\",\n\t\t\t\"ޏ\": \"gn\",\n\t\t\t\"ސ\": \"s\",\n\t\t\t\"ޑ\": \"d\",\n\t\t\t\"ޒ\": \"z\",\n\t\t\t\"ޓ\": \"t\",\n\t\t\t\"ޔ\": \"y\",\n\t\t\t\"ޕ\": \"p\",\n\t\t\t\"ޖ\": \"j\",\n\t\t\t\"ޗ\": \"ch\",\n\t\t\t\"ޘ\": \"tt\",\n\t\t\t\"ޙ\": \"hh\",\n\t\t\t\"ޚ\": \"kh\",\n\t\t\t\"ޛ\": \"th\",\n\t\t\t\"ޜ\": \"z\",\n\t\t\t\"ޝ\": \"sh\",\n\t\t\t\"ޞ\": \"s\",\n\t\t\t\"ޟ\": \"d\",\n\t\t\t\"ޠ\": \"t\",\n\t\t\t\"ޡ\": \"z\",\n\t\t\t\"ޢ\": \"a\",\n\t\t\t\"ޣ\": \"gh\",\n\t\t\t\"ޤ\": \"q\",\n\t\t\t\"ޥ\": \"w\",\n\t\t\t\"ަ\": \"a\",\n\t\t\t\"ާ\": \"aa\",\n\t\t\t\"ި\": \"i\",\n\t\t\t\"ީ\": \"ee\",\n\t\t\t\"ު\": \"u\",\n\t\t\t\"ޫ\": \"oo\",\n\t\t\t\"ެ\": \"e\",\n\t\t\t\"ޭ\": \"ey\",\n\t\t\t\"ޮ\": \"o\",\n\t\t\t\"ޯ\": \"oa\",\n\t\t\t\"ް\": \"\",\n\t\t\t\"ა\": \"a\",\n\t\t\t\"ბ\": \"b\",\n\t\t\t\"გ\": \"g\",\n\t\t\t\"დ\": \"d\",\n\t\t\t\"ე\": \"e\",\n\t\t\t\"ვ\": \"v\",\n\t\t\t\"ზ\": \"z\",\n\t\t\t\"თ\": \"t\",\n\t\t\t\"ი\": \"i\",\n\t\t\t\"კ\": \"k\",\n\t\t\t\"ლ\": \"l\",\n\t\t\t\"მ\": \"m\",\n\t\t\t\"ნ\": \"n\",\n\t\t\t\"ო\": \"o\",\n\t\t\t\"პ\": \"p\",\n\t\t\t\"ჟ\": \"zh\",\n\t\t\t\"რ\": \"r\",\n\t\t\t\"ს\": \"s\",\n\t\t\t\"ტ\": \"t\",\n\t\t\t\"უ\": \"u\",\n\t\t\t\"ფ\": \"p\",\n\t\t\t\"ქ\": \"k\",\n\t\t\t\"ღ\": \"gh\",\n\t\t\t\"ყ\": \"q\",\n\t\t\t\"შ\": \"sh\",\n\t\t\t\"ჩ\": \"ch\",\n\t\t\t\"ც\": \"ts\",\n\t\t\t\"ძ\": \"dz\",\n\t\t\t\"წ\": \"ts\",\n\t\t\t\"ჭ\": \"ch\",\n\t\t\t\"ხ\": \"kh\",\n\t\t\t\"ჯ\": \"j\",\n\t\t\t\"ჰ\": \"h\",\n\t\t\t\"α\": \"a\",\n\t\t\t\"β\": \"v\",\n\t\t\t\"γ\": \"g\",\n\t\t\t\"δ\": \"d\",\n\t\t\t\"ε\": \"e\",\n\t\t\t\"ζ\": \"z\",\n\t\t\t\"η\": \"i\",\n\t\t\t\"θ\": \"th\",\n\t\t\t\"ι\": \"i\",\n\t\t\t\"κ\": \"k\",\n\t\t\t\"λ\": \"l\",\n\t\t\t\"μ\": \"m\",\n\t\t\t\"ν\": \"n\",\n\t\t\t\"ξ\": \"ks\",\n\t\t\t\"ο\": \"o\",\n\t\t\t\"π\": \"p\",\n\t\t\t\"ρ\": \"r\",\n\t\t\t\"σ\": \"s\",\n\t\t\t\"τ\": \"t\",\n\t\t\t\"υ\": \"y\",\n\t\t\t\"φ\": \"f\",\n\t\t\t\"χ\": \"x\",\n\t\t\t\"ψ\": \"ps\",\n\t\t\t\"ω\": \"o\",\n\t\t\t\"ά\": \"a\",\n\t\t\t\"έ\": \"e\",\n\t\t\t\"ί\": \"i\",\n\t\t\t\"ό\": \"o\",\n\t\t\t\"ύ\": \"y\",\n\t\t\t\"ή\": \"i\",\n\t\t\t\"ώ\": \"o\",\n\t\t\t\"ς\": \"s\",\n\t\t\t\"ϊ\": \"i\",\n\t\t\t\"ΰ\": \"y\",\n\t\t\t\"ϋ\": \"y\",\n\t\t\t\"ΐ\": \"i\",\n\t\t\t\"Α\": \"A\",\n\t\t\t\"Β\": \"B\",\n\t\t\t\"Γ\": \"G\",\n\t\t\t\"Δ\": \"D\",\n\t\t\t\"Ε\": \"E\",\n\t\t\t\"Ζ\": \"Z\",\n\t\t\t\"Η\": \"I\",\n\t\t\t\"Θ\": \"TH\",\n\t\t\t\"Ι\": \"I\",\n\t\t\t\"Κ\": \"K\",\n\t\t\t\"Λ\": \"L\",\n\t\t\t\"Μ\": \"M\",\n\t\t\t\"Ν\": \"N\",\n\t\t\t\"Ξ\": \"KS\",\n\t\t\t\"Ο\": \"O\",\n\t\t\t\"Π\": \"P\",\n\t\t\t\"Ρ\": \"R\",\n\t\t\t\"Σ\": \"S\",\n\t\t\t\"Τ\": \"T\",\n\t\t\t\"Υ\": \"Y\",\n\t\t\t\"Φ\": \"F\",\n\t\t\t\"Χ\": \"X\",\n\t\t\t\"Ψ\": \"PS\",\n\t\t\t\"Ω\": \"O\",\n\t\t\t\"Ά\": \"A\",\n\t\t\t\"Έ\": \"E\",\n\t\t\t\"Ί\": \"I\",\n\t\t\t\"Ό\": \"O\",\n\t\t\t\"Ύ\": \"Y\",\n\t\t\t\"Ή\": \"I\",\n\t\t\t\"Ώ\": \"O\",\n\t\t\t\"Ϊ\": \"I\",\n\t\t\t\"Ϋ\": \"Y\",\n\t\t\t\"ā\": \"a\",\n\t\t\t\"ē\": \"e\",\n\t\t\t\"ģ\": \"g\",\n\t\t\t\"ī\": \"i\",\n\t\t\t\"ķ\": \"k\",\n\t\t\t\"ļ\": \"l\",\n\t\t\t\"ņ\": \"n\",\n\t\t\t\"ū\": \"u\",\n\t\t\t\"Ā\": \"A\",\n\t\t\t\"Ē\": \"E\",\n\t\t\t\"Ģ\": \"G\",\n\t\t\t\"Ī\": \"I\",\n\t\t\t\"Ķ\": \"k\",\n\t\t\t\"Ļ\": \"L\",\n\t\t\t\"Ņ\": \"N\",\n\t\t\t\"Ū\": \"U\",\n\t\t\t\"Ќ\": \"Kj\",\n\t\t\t\"ќ\": \"kj\",\n\t\t\t\"Љ\": \"Lj\",\n\t\t\t\"љ\": \"lj\",\n\t\t\t\"Њ\": \"Nj\",\n\t\t\t\"њ\": \"nj\",\n\t\t\t\"Тс\": \"Ts\",\n\t\t\t\"тс\": \"ts\",\n\t\t\t\"ą\": \"a\",\n\t\t\t\"ć\": \"c\",\n\t\t\t\"ę\": \"e\",\n\t\t\t\"ł\": \"l\",\n\t\t\t\"ń\": \"n\",\n\t\t\t\"ś\": \"s\",\n\t\t\t\"ź\": \"z\",\n\t\t\t\"ż\": \"z\",\n\t\t\t\"Ą\": \"A\",\n\t\t\t\"Ć\": \"C\",\n\t\t\t\"Ę\": \"E\",\n\t\t\t\"Ł\": \"L\",\n\t\t\t\"Ń\": \"N\",\n\t\t\t\"Ś\": \"S\",\n\t\t\t\"Ź\": \"Z\",\n\t\t\t\"Ż\": \"Z\",\n\t\t\t\"Є\": \"Ye\",\n\t\t\t\"І\": \"I\",\n\t\t\t\"Ї\": \"Yi\",\n\t\t\t\"Ґ\": \"G\",\n\t\t\t\"є\": \"ye\",\n\t\t\t\"і\": \"i\",\n\t\t\t\"ї\": \"yi\",\n\t\t\t\"ґ\": \"g\",\n\t\t\t\"ă\": \"a\",\n\t\t\t\"Ă\": \"A\",\n\t\t\t\"ș\": \"s\",\n\t\t\t\"Ș\": \"S\",\n\t\t\t\"ț\": \"t\",\n\t\t\t\"Ț\": \"T\",\n\t\t\t\"ţ\": \"t\",\n\t\t\t\"Ţ\": \"T\",\n\t\t\t\"а\": \"a\",\n\t\t\t\"б\": \"b\",\n\t\t\t\"в\": \"v\",\n\t\t\t\"г\": \"g\",\n\t\t\t\"д\": \"d\",\n\t\t\t\"е\": \"e\",\n\t\t\t\"ё\": \"yo\",\n\t\t\t\"ж\": \"zh\",\n\t\t\t\"з\": \"z\",\n\t\t\t\"и\": \"i\",\n\t\t\t\"й\": \"i\",\n\t\t\t\"к\": \"k\",\n\t\t\t\"л\": \"l\",\n\t\t\t\"м\": \"m\",\n\t\t\t\"н\": \"n\",\n\t\t\t\"о\": \"o\",\n\t\t\t\"п\": \"p\",\n\t\t\t\"р\": \"r\",\n\t\t\t\"с\": \"s\",\n\t\t\t\"т\": \"t\",\n\t\t\t\"у\": \"u\",\n\t\t\t\"ф\": \"f\",\n\t\t\t\"х\": \"kh\",\n\t\t\t\"ц\": \"c\",\n\t\t\t\"ч\": \"ch\",\n\t\t\t\"ш\": \"sh\",\n\t\t\t\"щ\": \"sh\",\n\t\t\t\"ъ\": \"\",\n\t\t\t\"ы\": \"y\",\n\t\t\t\"ь\": \"\",\n\t\t\t\"э\": \"e\",\n\t\t\t\"ю\": \"yu\",\n\t\t\t\"я\": \"ya\",\n\t\t\t\"А\": \"A\",\n\t\t\t\"Б\": \"B\",\n\t\t\t\"В\": \"V\",\n\t\t\t\"Г\": \"G\",\n\t\t\t\"Д\": \"D\",\n\t\t\t\"Е\": \"E\",\n\t\t\t\"Ё\": \"Yo\",\n\t\t\t\"Ж\": \"Zh\",\n\t\t\t\"З\": \"Z\",\n\t\t\t\"И\": \"I\",\n\t\t\t\"Й\": \"I\",\n\t\t\t\"К\": \"K\",\n\t\t\t\"Л\": \"L\",\n\t\t\t\"М\": \"M\",\n\t\t\t\"Н\": \"N\",\n\t\t\t\"О\": \"O\",\n\t\t\t\"П\": \"P\",\n\t\t\t\"Р\": \"R\",\n\t\t\t\"С\": \"S\",\n\t\t\t\"Т\": \"T\",\n\t\t\t\"У\": \"U\",\n\t\t\t\"Ф\": \"F\",\n\t\t\t\"Х\": \"Kh\",\n\t\t\t\"Ц\": \"C\",\n\t\t\t\"Ч\": \"Ch\",\n\t\t\t\"Ш\": \"Sh\",\n\t\t\t\"Щ\": \"Sh\",\n\t\t\t\"Ъ\": \"\",\n\t\t\t\"Ы\": \"Y\",\n\t\t\t\"Ь\": \"\",\n\t\t\t\"Э\": \"E\",\n\t\t\t\"Ю\": \"Yu\",\n\t\t\t\"Я\": \"Ya\",\n\t\t\t\"ђ\": \"dj\",\n\t\t\t\"ј\": \"j\",\n\t\t\t\"ћ\": \"c\",\n\t\t\t\"џ\": \"dz\",\n\t\t\t\"Ђ\": \"Dj\",\n\t\t\t\"Ј\": \"j\",\n\t\t\t\"Ћ\": \"C\",\n\t\t\t\"Џ\": \"Dz\",\n\t\t\t\"ľ\": \"l\",\n\t\t\t\"ĺ\": \"l\",\n\t\t\t\"ŕ\": \"r\",\n\t\t\t\"Ľ\": \"L\",\n\t\t\t\"Ĺ\": \"L\",\n\t\t\t\"Ŕ\": \"R\",\n\t\t\t\"ş\": \"s\",\n\t\t\t\"Ş\": \"S\",\n\t\t\t\"ı\": \"i\",\n\t\t\t\"İ\": \"I\",\n\t\t\t\"ğ\": \"g\",\n\t\t\t\"Ğ\": \"G\",\n\t\t\t\"ả\": \"a\",\n\t\t\t\"Ả\": \"A\",\n\t\t\t\"ẳ\": \"a\",\n\t\t\t\"Ẳ\": \"A\",\n\t\t\t\"ẩ\": \"a\",\n\t\t\t\"Ẩ\": \"A\",\n\t\t\t\"đ\": \"d\",\n\t\t\t\"Đ\": \"D\",\n\t\t\t\"ẹ\": \"e\",\n\t\t\t\"Ẹ\": \"E\",\n\t\t\t\"ẽ\": \"e\",\n\t\t\t\"Ẽ\": \"E\",\n\t\t\t\"ẻ\": \"e\",\n\t\t\t\"Ẻ\": \"E\",\n\t\t\t\"ế\": \"e\",\n\t\t\t\"Ế\": \"E\",\n\t\t\t\"ề\": \"e\",\n\t\t\t\"Ề\": \"E\",\n\t\t\t\"ệ\": \"e\",\n\t\t\t\"Ệ\": \"E\",\n\t\t\t\"ễ\": \"e\",\n\t\t\t\"Ễ\": \"E\",\n\t\t\t\"ể\": \"e\",\n\t\t\t\"Ể\": \"E\",\n\t\t\t\"ỏ\": \"o\",\n\t\t\t\"ọ\": \"o\",\n\t\t\t\"Ọ\": \"o\",\n\t\t\t\"ố\": \"o\",\n\t\t\t\"Ố\": \"O\",\n\t\t\t\"ồ\": \"o\",\n\t\t\t\"Ồ\": \"O\",\n\t\t\t\"ổ\": \"o\",\n\t\t\t\"Ổ\": \"O\",\n\t\t\t\"ộ\": \"o\",\n\t\t\t\"Ộ\": \"O\",\n\t\t\t\"ỗ\": \"o\",\n\t\t\t\"Ỗ\": \"O\",\n\t\t\t\"ơ\": \"o\",\n\t\t\t\"Ơ\": \"O\",\n\t\t\t\"ớ\": \"o\",\n\t\t\t\"Ớ\": \"O\",\n\t\t\t\"ờ\": \"o\",\n\t\t\t\"Ờ\": \"O\",\n\t\t\t\"ợ\": \"o\",\n\t\t\t\"Ợ\": \"O\",\n\t\t\t\"ỡ\": \"o\",\n\t\t\t\"Ỡ\": \"O\",\n\t\t\t\"Ở\": \"o\",\n\t\t\t\"ở\": \"o\",\n\t\t\t\"ị\": \"i\",\n\t\t\t\"Ị\": \"I\",\n\t\t\t\"ĩ\": \"i\",\n\t\t\t\"Ĩ\": \"I\",\n\t\t\t\"ỉ\": \"i\",\n\t\t\t\"Ỉ\": \"i\",\n\t\t\t\"ủ\": \"u\",\n\t\t\t\"Ủ\": \"U\",\n\t\t\t\"ụ\": \"u\",\n\t\t\t\"Ụ\": \"U\",\n\t\t\t\"ũ\": \"u\",\n\t\t\t\"Ũ\": \"U\",\n\t\t\t\"ư\": \"u\",\n\t\t\t\"Ư\": \"U\",\n\t\t\t\"ứ\": \"u\",\n\t\t\t\"Ứ\": \"U\",\n\t\t\t\"ừ\": \"u\",\n\t\t\t\"Ừ\": \"U\",\n\t\t\t\"ự\": \"u\",\n\t\t\t\"Ự\": \"U\",\n\t\t\t\"ữ\": \"u\",\n\t\t\t\"Ữ\": \"U\",\n\t\t\t\"ử\": \"u\",\n\t\t\t\"Ử\": \"ư\",\n\t\t\t\"ỷ\": \"y\",\n\t\t\t\"Ỷ\": \"y\",\n\t\t\t\"ỳ\": \"y\",\n\t\t\t\"Ỳ\": \"Y\",\n\t\t\t\"ỵ\": \"y\",\n\t\t\t\"Ỵ\": \"Y\",\n\t\t\t\"ỹ\": \"y\",\n\t\t\t\"Ỹ\": \"Y\",\n\t\t\t\"ạ\": \"a\",\n\t\t\t\"Ạ\": \"A\",\n\t\t\t\"ấ\": \"a\",\n\t\t\t\"Ấ\": \"A\",\n\t\t\t\"ầ\": \"a\",\n\t\t\t\"Ầ\": \"A\",\n\t\t\t\"ậ\": \"a\",\n\t\t\t\"Ậ\": \"A\",\n\t\t\t\"ẫ\": \"a\",\n\t\t\t\"Ẫ\": \"A\",\n\t\t\t\"ắ\": \"a\",\n\t\t\t\"Ắ\": \"A\",\n\t\t\t\"ằ\": \"a\",\n\t\t\t\"Ằ\": \"A\",\n\t\t\t\"ặ\": \"a\",\n\t\t\t\"Ặ\": \"A\",\n\t\t\t\"ẵ\": \"a\",\n\t\t\t\"Ẵ\": \"A\",\n\t\t\t\"⓪\": \"0\",\n\t\t\t\"①\": \"1\",\n\t\t\t\"②\": \"2\",\n\t\t\t\"③\": \"3\",\n\t\t\t\"④\": \"4\",\n\t\t\t\"⑤\": \"5\",\n\t\t\t\"⑥\": \"6\",\n\t\t\t\"⑦\": \"7\",\n\t\t\t\"⑧\": \"8\",\n\t\t\t\"⑨\": \"9\",\n\t\t\t\"⑩\": \"10\",\n\t\t\t\"⑪\": \"11\",\n\t\t\t\"⑫\": \"12\",\n\t\t\t\"⑬\": \"13\",\n\t\t\t\"⑭\": \"14\",\n\t\t\t\"⑮\": \"15\",\n\t\t\t\"⑯\": \"16\",\n\t\t\t\"⑰\": \"17\",\n\t\t\t\"⑱\": \"18\",\n\t\t\t\"⑲\": \"18\",\n\t\t\t\"⑳\": \"18\",\n\t\t\t\"⓵\": \"1\",\n\t\t\t\"⓶\": \"2\",\n\t\t\t\"⓷\": \"3\",\n\t\t\t\"⓸\": \"4\",\n\t\t\t\"⓹\": \"5\",\n\t\t\t\"⓺\": \"6\",\n\t\t\t\"⓻\": \"7\",\n\t\t\t\"⓼\": \"8\",\n\t\t\t\"⓽\": \"9\",\n\t\t\t\"⓾\": \"10\",\n\t\t\t\"⓿\": \"0\",\n\t\t\t\"⓫\": \"11\",\n\t\t\t\"⓬\": \"12\",\n\t\t\t\"⓭\": \"13\",\n\t\t\t\"⓮\": \"14\",\n\t\t\t\"⓯\": \"15\",\n\t\t\t\"⓰\": \"16\",\n\t\t\t\"⓱\": \"17\",\n\t\t\t\"⓲\": \"18\",\n\t\t\t\"⓳\": \"19\",\n\t\t\t\"⓴\": \"20\",\n\t\t\t\"Ⓐ\": \"A\",\n\t\t\t\"Ⓑ\": \"B\",\n\t\t\t\"Ⓒ\": \"C\",\n\t\t\t\"Ⓓ\": \"D\",\n\t\t\t\"Ⓔ\": \"E\",\n\t\t\t\"Ⓕ\": \"F\",\n\t\t\t\"Ⓖ\": \"G\",\n\t\t\t\"Ⓗ\": \"H\",\n\t\t\t\"Ⓘ\": \"I\",\n\t\t\t\"Ⓙ\": \"J\",\n\t\t\t\"Ⓚ\": \"K\",\n\t\t\t\"Ⓛ\": \"L\",\n\t\t\t\"Ⓜ\": \"M\",\n\t\t\t\"Ⓝ\": \"N\",\n\t\t\t\"Ⓞ\": \"O\",\n\t\t\t\"Ⓟ\": \"P\",\n\t\t\t\"Ⓠ\": \"Q\",\n\t\t\t\"Ⓡ\": \"R\",\n\t\t\t\"Ⓢ\": \"S\",\n\t\t\t\"Ⓣ\": \"T\",\n\t\t\t\"Ⓤ\": \"U\",\n\t\t\t\"Ⓥ\": \"V\",\n\t\t\t\"Ⓦ\": \"W\",\n\t\t\t\"Ⓧ\": \"X\",\n\t\t\t\"Ⓨ\": \"Y\",\n\t\t\t\"Ⓩ\": \"Z\",\n\t\t\t\"ⓐ\": \"a\",\n\t\t\t\"ⓑ\": \"b\",\n\t\t\t\"ⓒ\": \"c\",\n\t\t\t\"ⓓ\": \"d\",\n\t\t\t\"ⓔ\": \"e\",\n\t\t\t\"ⓕ\": \"f\",\n\t\t\t\"ⓖ\": \"g\",\n\t\t\t\"ⓗ\": \"h\",\n\t\t\t\"ⓘ\": \"i\",\n\t\t\t\"ⓙ\": \"j\",\n\t\t\t\"ⓚ\": \"k\",\n\t\t\t\"ⓛ\": \"l\",\n\t\t\t\"ⓜ\": \"m\",\n\t\t\t\"ⓝ\": \"n\",\n\t\t\t\"ⓞ\": \"o\",\n\t\t\t\"ⓟ\": \"p\",\n\t\t\t\"ⓠ\": \"q\",\n\t\t\t\"ⓡ\": \"r\",\n\t\t\t\"ⓢ\": \"s\",\n\t\t\t\"ⓣ\": \"t\",\n\t\t\t\"ⓤ\": \"u\",\n\t\t\t\"ⓦ\": \"v\",\n\t\t\t\"ⓥ\": \"w\",\n\t\t\t\"ⓧ\": \"x\",\n\t\t\t\"ⓨ\": \"y\",\n\t\t\t\"ⓩ\": \"z\",\n\t\t\t\"“\": \"\\\"\",\n\t\t\t\"”\": \"\\\"\",\n\t\t\t\"‘\": \"'\",\n\t\t\t\"’\": \"'\",\n\t\t\t\"∂\": \"d\",\n\t\t\t\"ƒ\": \"f\",\n\t\t\t\"™\": \"(TM)\",\n\t\t\t\"©\": \"(C)\",\n\t\t\t\"œ\": \"oe\",\n\t\t\t\"Œ\": \"OE\",\n\t\t\t\"®\": \"(R)\",\n\t\t\t\"†\": \"+\",\n\t\t\t\"℠\": \"(SM)\",\n\t\t\t\"…\": \"...\",\n\t\t\t\"˚\": \"o\",\n\t\t\t\"º\": \"o\",\n\t\t\t\"ª\": \"a\",\n\t\t\t\"•\": \"*\",\n\t\t\t\"၊\": \",\",\n\t\t\t\"။\": \".\",\n\t\t\t\"$\": \"USD\",\n\t\t\t\"€\": \"EUR\",\n\t\t\t\"₢\": \"BRN\",\n\t\t\t\"₣\": \"FRF\",\n\t\t\t\"£\": \"GBP\",\n\t\t\t\"₤\": \"ITL\",\n\t\t\t\"₦\": \"NGN\",\n\t\t\t\"₧\": \"ESP\",\n\t\t\t\"₩\": \"KRW\",\n\t\t\t\"₪\": \"ILS\",\n\t\t\t\"₫\": \"VND\",\n\t\t\t\"₭\": \"LAK\",\n\t\t\t\"₮\": \"MNT\",\n\t\t\t\"₯\": \"GRD\",\n\t\t\t\"₱\": \"ARS\",\n\t\t\t\"₲\": \"PYG\",\n\t\t\t\"₳\": \"ARA\",\n\t\t\t\"₴\": \"UAH\",\n\t\t\t\"₵\": \"GHS\",\n\t\t\t\"¢\": \"cent\",\n\t\t\t\"¥\": \"CNY\",\n\t\t\t\"元\": \"CNY\",\n\t\t\t\"円\": \"YEN\",\n\t\t\t\"﷼\": \"IRR\",\n\t\t\t\"₠\": \"EWE\",\n\t\t\t\"฿\": \"THB\",\n\t\t\t\"₨\": \"INR\",\n\t\t\t\"₹\": \"INR\",\n\t\t\t\"₰\": \"PF\",\n\t\t\t\"₺\": \"TRY\",\n\t\t\t\"؋\": \"AFN\",\n\t\t\t\"₼\": \"AZN\",\n\t\t\t\"лв\": \"BGN\",\n\t\t\t\"៛\": \"KHR\",\n\t\t\t\"₡\": \"CRC\",\n\t\t\t\"₸\": \"KZT\",\n\t\t\t\"ден\": \"MKD\",\n\t\t\t\"zł\": \"PLN\",\n\t\t\t\"₽\": \"RUB\",\n\t\t\t\"₾\": \"GEL\"\n\t\t};\n\t\t/**\n\t\t* special look ahead character array\n\t\t* These characters form with consonants to become 'single'/consonant combo\n\t\t* @type [Array]\n\t\t*/\n\t\tvar lookAheadCharArray = [\"်\", \"ް\"];\n\t\t/**\n\t\t* diatricMap for languages where transliteration changes entirely as more diatrics are added\n\t\t* @type {Object}\n\t\t*/\n\t\tvar diatricMap = {\n\t\t\t\"ာ\": \"a\",\n\t\t\t\"ါ\": \"a\",\n\t\t\t\"ေ\": \"e\",\n\t\t\t\"ဲ\": \"e\",\n\t\t\t\"ိ\": \"i\",\n\t\t\t\"ီ\": \"i\",\n\t\t\t\"ို\": \"o\",\n\t\t\t\"ု\": \"u\",\n\t\t\t\"ူ\": \"u\",\n\t\t\t\"ေါင်\": \"aung\",\n\t\t\t\"ော\": \"aw\",\n\t\t\t\"ော်\": \"aw\",\n\t\t\t\"ေါ\": \"aw\",\n\t\t\t\"ေါ်\": \"aw\",\n\t\t\t\"်\": \"်\",\n\t\t\t\"က်\": \"et\",\n\t\t\t\"ိုက်\": \"aik\",\n\t\t\t\"ောက်\": \"auk\",\n\t\t\t\"င်\": \"in\",\n\t\t\t\"ိုင်\": \"aing\",\n\t\t\t\"ောင်\": \"aung\",\n\t\t\t\"စ်\": \"it\",\n\t\t\t\"ည်\": \"i\",\n\t\t\t\"တ်\": \"at\",\n\t\t\t\"ိတ်\": \"eik\",\n\t\t\t\"ုတ်\": \"ok\",\n\t\t\t\"ွတ်\": \"ut\",\n\t\t\t\"ေတ်\": \"it\",\n\t\t\t\"ဒ်\": \"d\",\n\t\t\t\"ိုဒ်\": \"ok\",\n\t\t\t\"ုဒ်\": \"ait\",\n\t\t\t\"န်\": \"an\",\n\t\t\t\"ာန်\": \"an\",\n\t\t\t\"ိန်\": \"ein\",\n\t\t\t\"ုန်\": \"on\",\n\t\t\t\"ွန်\": \"un\",\n\t\t\t\"ပ်\": \"at\",\n\t\t\t\"ိပ်\": \"eik\",\n\t\t\t\"ုပ်\": \"ok\",\n\t\t\t\"ွပ်\": \"ut\",\n\t\t\t\"န်ုပ်\": \"nub\",\n\t\t\t\"မ်\": \"an\",\n\t\t\t\"ိမ်\": \"ein\",\n\t\t\t\"ုမ်\": \"on\",\n\t\t\t\"ွမ်\": \"un\",\n\t\t\t\"ယ်\": \"e\",\n\t\t\t\"ိုလ်\": \"ol\",\n\t\t\t\"ဉ်\": \"in\",\n\t\t\t\"ံ\": \"an\",\n\t\t\t\"ိံ\": \"ein\",\n\t\t\t\"ုံ\": \"on\",\n\t\t\t\"ައް\": \"ah\",\n\t\t\t\"ަށް\": \"ah\"\n\t\t};\n\t\t/**\n\t\t* langCharMap language specific characters translations\n\t\t* @type {Object}\n\t\t*/\n\t\tvar langCharMap = {\n\t\t\t\"en\": {},\n\t\t\t\"az\": {\n\t\t\t\t\"ç\": \"c\",\n\t\t\t\t\"ə\": \"e\",\n\t\t\t\t\"ğ\": \"g\",\n\t\t\t\t\"ı\": \"i\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"ş\": \"s\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"Ç\": \"C\",\n\t\t\t\t\"Ə\": \"E\",\n\t\t\t\t\"Ğ\": \"G\",\n\t\t\t\t\"İ\": \"I\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"Ş\": \"S\",\n\t\t\t\t\"Ü\": \"U\"\n\t\t\t},\n\t\t\t\"cs\": {\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ď\": \"d\",\n\t\t\t\t\"ě\": \"e\",\n\t\t\t\t\"ň\": \"n\",\n\t\t\t\t\"ř\": \"r\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ť\": \"t\",\n\t\t\t\t\"ů\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ď\": \"D\",\n\t\t\t\t\"Ě\": \"E\",\n\t\t\t\t\"Ň\": \"N\",\n\t\t\t\t\"Ř\": \"R\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ť\": \"T\",\n\t\t\t\t\"Ů\": \"U\",\n\t\t\t\t\"Ž\": \"Z\"\n\t\t\t},\n\t\t\t\"fi\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\"\n\t\t\t},\n\t\t\t\"hu\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"Ü\": \"U\",\n\t\t\t\t\"ű\": \"u\",\n\t\t\t\t\"Ű\": \"U\"\n\t\t\t},\n\t\t\t\"lt\": {\n\t\t\t\t\"ą\": \"a\",\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ę\": \"e\",\n\t\t\t\t\"ė\": \"e\",\n\t\t\t\t\"į\": \"i\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ų\": \"u\",\n\t\t\t\t\"ū\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Ą\": \"A\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ę\": \"E\",\n\t\t\t\t\"Ė\": \"E\",\n\t\t\t\t\"Į\": \"I\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ų\": \"U\",\n\t\t\t\t\"Ū\": \"U\"\n\t\t\t},\n\t\t\t\"lv\": {\n\t\t\t\t\"ā\": \"a\",\n\t\t\t\t\"č\": \"c\",\n\t\t\t\t\"ē\": \"e\",\n\t\t\t\t\"ģ\": \"g\",\n\t\t\t\t\"ī\": \"i\",\n\t\t\t\t\"ķ\": \"k\",\n\t\t\t\t\"ļ\": \"l\",\n\t\t\t\t\"ņ\": \"n\",\n\t\t\t\t\"š\": \"s\",\n\t\t\t\t\"ū\": \"u\",\n\t\t\t\t\"ž\": \"z\",\n\t\t\t\t\"Ā\": \"A\",\n\t\t\t\t\"Č\": \"C\",\n\t\t\t\t\"Ē\": \"E\",\n\t\t\t\t\"Ģ\": \"G\",\n\t\t\t\t\"Ī\": \"i\",\n\t\t\t\t\"Ķ\": \"k\",\n\t\t\t\t\"Ļ\": \"L\",\n\t\t\t\t\"Ņ\": \"N\",\n\t\t\t\t\"Š\": \"S\",\n\t\t\t\t\"Ū\": \"u\",\n\t\t\t\t\"Ž\": \"Z\"\n\t\t\t},\n\t\t\t\"pl\": {\n\t\t\t\t\"ą\": \"a\",\n\t\t\t\t\"ć\": \"c\",\n\t\t\t\t\"ę\": \"e\",\n\t\t\t\t\"ł\": \"l\",\n\t\t\t\t\"ń\": \"n\",\n\t\t\t\t\"ó\": \"o\",\n\t\t\t\t\"ś\": \"s\",\n\t\t\t\t\"ź\": \"z\",\n\t\t\t\t\"ż\": \"z\",\n\t\t\t\t\"Ą\": \"A\",\n\t\t\t\t\"Ć\": \"C\",\n\t\t\t\t\"Ę\": \"e\",\n\t\t\t\t\"Ł\": \"L\",\n\t\t\t\t\"Ń\": \"N\",\n\t\t\t\t\"Ó\": \"O\",\n\t\t\t\t\"Ś\": \"S\",\n\t\t\t\t\"Ź\": \"Z\",\n\t\t\t\t\"Ż\": \"Z\"\n\t\t\t},\n\t\t\t\"sv\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\",\n\t\t\t\t\"ö\": \"o\",\n\t\t\t\t\"Ö\": \"O\"\n\t\t\t},\n\t\t\t\"sk\": {\n\t\t\t\t\"ä\": \"a\",\n\t\t\t\t\"Ä\": \"A\"\n\t\t\t},\n\t\t\t\"sr\": {\n\t\t\t\t\"љ\": \"lj\",\n\t\t\t\t\"њ\": \"nj\",\n\t\t\t\t\"Љ\": \"Lj\",\n\t\t\t\t\"Њ\": \"Nj\",\n\t\t\t\t\"đ\": \"dj\",\n\t\t\t\t\"Đ\": \"Dj\"\n\t\t\t},\n\t\t\t\"tr\": {\n\t\t\t\t\"Ü\": \"U\",\n\t\t\t\t\"Ö\": \"O\",\n\t\t\t\t\"ü\": \"u\",\n\t\t\t\t\"ö\": \"o\"\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t* symbolMap language specific symbol translations\n\t\t* translations must be transliterated already\n\t\t* @type {Object}\n\t\t*/\n\t\tvar symbolMap = {\n\t\t\t\"ar\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"la-nihaya\",\n\t\t\t\t\"♥\": \"hob\",\n\t\t\t\t\"&\": \"wa\",\n\t\t\t\t\"|\": \"aw\",\n\t\t\t\t\"<\": \"aqal-men\",\n\t\t\t\t\">\": \"akbar-men\",\n\t\t\t\t\"∑\": \"majmou\",\n\t\t\t\t\"¤\": \"omla\"\n\t\t\t},\n\t\t\t\"az\": {},\n\t\t\t\"ca\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinit\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"o\",\n\t\t\t\t\"<\": \"menys que\",\n\t\t\t\t\">\": \"mes que\",\n\t\t\t\t\"∑\": \"suma dels\",\n\t\t\t\t\"¤\": \"moneda\"\n\t\t\t},\n\t\t\t\"cs\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nekonecno\",\n\t\t\t\t\"♥\": \"laska\",\n\t\t\t\t\"&\": \"a\",\n\t\t\t\t\"|\": \"nebo\",\n\t\t\t\t\"<\": \"mensi nez\",\n\t\t\t\t\">\": \"vetsi nez\",\n\t\t\t\t\"∑\": \"soucet\",\n\t\t\t\t\"¤\": \"mena\"\n\t\t\t},\n\t\t\t\"de\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"unendlich\",\n\t\t\t\t\"♥\": \"Liebe\",\n\t\t\t\t\"&\": \"und\",\n\t\t\t\t\"|\": \"oder\",\n\t\t\t\t\"<\": \"kleiner als\",\n\t\t\t\t\">\": \"groesser als\",\n\t\t\t\t\"∑\": \"Summe von\",\n\t\t\t\t\"¤\": \"Waehrung\"\n\t\t\t},\n\t\t\t\"dv\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"kolunulaa\",\n\t\t\t\t\"♥\": \"loabi\",\n\t\t\t\t\"&\": \"aai\",\n\t\t\t\t\"|\": \"noonee\",\n\t\t\t\t\"<\": \"ah vure kuda\",\n\t\t\t\t\">\": \"ah vure bodu\",\n\t\t\t\t\"∑\": \"jumula\",\n\t\t\t\t\"¤\": \"faisaa\"\n\t\t\t},\n\t\t\t\"en\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinity\",\n\t\t\t\t\"♥\": \"love\",\n\t\t\t\t\"&\": \"and\",\n\t\t\t\t\"|\": \"or\",\n\t\t\t\t\"<\": \"less than\",\n\t\t\t\t\">\": \"greater than\",\n\t\t\t\t\"∑\": \"sum\",\n\t\t\t\t\"¤\": \"currency\"\n\t\t\t},\n\t\t\t\"es\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"y\",\n\t\t\t\t\"|\": \"u\",\n\t\t\t\t\"<\": \"menos que\",\n\t\t\t\t\">\": \"mas que\",\n\t\t\t\t\"∑\": \"suma de los\",\n\t\t\t\t\"¤\": \"moneda\"\n\t\t\t},\n\t\t\t\"fa\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bi-nahayat\",\n\t\t\t\t\"♥\": \"eshgh\",\n\t\t\t\t\"&\": \"va\",\n\t\t\t\t\"|\": \"ya\",\n\t\t\t\t\"<\": \"kamtar-az\",\n\t\t\t\t\">\": \"bishtar-az\",\n\t\t\t\t\"∑\": \"majmooe\",\n\t\t\t\t\"¤\": \"vahed\"\n\t\t\t},\n\t\t\t\"fi\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"aarettomyys\",\n\t\t\t\t\"♥\": \"rakkaus\",\n\t\t\t\t\"&\": \"ja\",\n\t\t\t\t\"|\": \"tai\",\n\t\t\t\t\"<\": \"pienempi kuin\",\n\t\t\t\t\">\": \"suurempi kuin\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valuutta\"\n\t\t\t},\n\t\t\t\"fr\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infiniment\",\n\t\t\t\t\"♥\": \"Amour\",\n\t\t\t\t\"&\": \"et\",\n\t\t\t\t\"|\": \"ou\",\n\t\t\t\t\"<\": \"moins que\",\n\t\t\t\t\">\": \"superieure a\",\n\t\t\t\t\"∑\": \"somme des\",\n\t\t\t\t\"¤\": \"monnaie\"\n\t\t\t},\n\t\t\t\"ge\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"usasruloba\",\n\t\t\t\t\"♥\": \"siqvaruli\",\n\t\t\t\t\"&\": \"da\",\n\t\t\t\t\"|\": \"an\",\n\t\t\t\t\"<\": \"naklebi\",\n\t\t\t\t\">\": \"meti\",\n\t\t\t\t\"∑\": \"jami\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"gr\": {},\n\t\t\t\"hu\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"vegtelen\",\n\t\t\t\t\"♥\": \"szerelem\",\n\t\t\t\t\"&\": \"es\",\n\t\t\t\t\"|\": \"vagy\",\n\t\t\t\t\"<\": \"kisebb mint\",\n\t\t\t\t\">\": \"nagyobb mint\",\n\t\t\t\t\"∑\": \"szumma\",\n\t\t\t\t\"¤\": \"penznem\"\n\t\t\t},\n\t\t\t\"it\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amore\",\n\t\t\t\t\"&\": \"e\",\n\t\t\t\t\"|\": \"o\",\n\t\t\t\t\"<\": \"minore di\",\n\t\t\t\t\">\": \"maggiore di\",\n\t\t\t\t\"∑\": \"somma\",\n\t\t\t\t\"¤\": \"moneta\"\n\t\t\t},\n\t\t\t\"lt\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"begalybe\",\n\t\t\t\t\"♥\": \"meile\",\n\t\t\t\t\"&\": \"ir\",\n\t\t\t\t\"|\": \"ar\",\n\t\t\t\t\"<\": \"maziau nei\",\n\t\t\t\t\">\": \"daugiau nei\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valiuta\"\n\t\t\t},\n\t\t\t\"lv\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bezgaliba\",\n\t\t\t\t\"♥\": \"milestiba\",\n\t\t\t\t\"&\": \"un\",\n\t\t\t\t\"|\": \"vai\",\n\t\t\t\t\"<\": \"mazak neka\",\n\t\t\t\t\">\": \"lielaks neka\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"my\": {\n\t\t\t\t\"∆\": \"kwahkhyaet\",\n\t\t\t\t\"∞\": \"asaonasme\",\n\t\t\t\t\"♥\": \"akhyait\",\n\t\t\t\t\"&\": \"nhin\",\n\t\t\t\t\"|\": \"tho\",\n\t\t\t\t\"<\": \"ngethaw\",\n\t\t\t\t\">\": \"kyithaw\",\n\t\t\t\t\"∑\": \"paungld\",\n\t\t\t\t\"¤\": \"ngwekye\"\n\t\t\t},\n\t\t\t\"mk\": {},\n\t\t\t\"nl\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"oneindig\",\n\t\t\t\t\"♥\": \"liefde\",\n\t\t\t\t\"&\": \"en\",\n\t\t\t\t\"|\": \"of\",\n\t\t\t\t\"<\": \"kleiner dan\",\n\t\t\t\t\">\": \"groter dan\",\n\t\t\t\t\"∑\": \"som\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"pl\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nieskonczonosc\",\n\t\t\t\t\"♥\": \"milosc\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"lub\",\n\t\t\t\t\"<\": \"mniejsze niz\",\n\t\t\t\t\">\": \"wieksze niz\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"waluta\"\n\t\t\t},\n\t\t\t\"pt\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinito\",\n\t\t\t\t\"♥\": \"amor\",\n\t\t\t\t\"&\": \"e\",\n\t\t\t\t\"|\": \"ou\",\n\t\t\t\t\"<\": \"menor que\",\n\t\t\t\t\">\": \"maior que\",\n\t\t\t\t\"∑\": \"soma\",\n\t\t\t\t\"¤\": \"moeda\"\n\t\t\t},\n\t\t\t\"ro\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"infinit\",\n\t\t\t\t\"♥\": \"dragoste\",\n\t\t\t\t\"&\": \"si\",\n\t\t\t\t\"|\": \"sau\",\n\t\t\t\t\"<\": \"mai mic ca\",\n\t\t\t\t\">\": \"mai mare ca\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valuta\"\n\t\t\t},\n\t\t\t\"ru\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"beskonechno\",\n\t\t\t\t\"♥\": \"lubov\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"ili\",\n\t\t\t\t\"<\": \"menshe\",\n\t\t\t\t\">\": \"bolshe\",\n\t\t\t\t\"∑\": \"summa\",\n\t\t\t\t\"¤\": \"valjuta\"\n\t\t\t},\n\t\t\t\"sk\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"nekonecno\",\n\t\t\t\t\"♥\": \"laska\",\n\t\t\t\t\"&\": \"a\",\n\t\t\t\t\"|\": \"alebo\",\n\t\t\t\t\"<\": \"menej ako\",\n\t\t\t\t\">\": \"viac ako\",\n\t\t\t\t\"∑\": \"sucet\",\n\t\t\t\t\"¤\": \"mena\"\n\t\t\t},\n\t\t\t\"sr\": {},\n\t\t\t\"tr\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"sonsuzluk\",\n\t\t\t\t\"♥\": \"ask\",\n\t\t\t\t\"&\": \"ve\",\n\t\t\t\t\"|\": \"veya\",\n\t\t\t\t\"<\": \"kucuktur\",\n\t\t\t\t\">\": \"buyuktur\",\n\t\t\t\t\"∑\": \"toplam\",\n\t\t\t\t\"¤\": \"para birimi\"\n\t\t\t},\n\t\t\t\"uk\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"bezkinechnist\",\n\t\t\t\t\"♥\": \"lubov\",\n\t\t\t\t\"&\": \"i\",\n\t\t\t\t\"|\": \"abo\",\n\t\t\t\t\"<\": \"menshe\",\n\t\t\t\t\">\": \"bilshe\",\n\t\t\t\t\"∑\": \"suma\",\n\t\t\t\t\"¤\": \"valjuta\"\n\t\t\t},\n\t\t\t\"vn\": {\n\t\t\t\t\"∆\": \"delta\",\n\t\t\t\t\"∞\": \"vo cuc\",\n\t\t\t\t\"♥\": \"yeu\",\n\t\t\t\t\"&\": \"va\",\n\t\t\t\t\"|\": \"hoac\",\n\t\t\t\t\"<\": \"nho hon\",\n\t\t\t\t\">\": \"lon hon\",\n\t\t\t\t\"∑\": \"tong\",\n\t\t\t\t\"¤\": \"tien te\"\n\t\t\t}\n\t\t};\n\t\tvar uricChars = [\n\t\t\t\";\",\n\t\t\t\"?\",\n\t\t\t\":\",\n\t\t\t\"@\",\n\t\t\t\"&\",\n\t\t\t\"=\",\n\t\t\t\"+\",\n\t\t\t\"$\",\n\t\t\t\",\",\n\t\t\t\"/\"\n\t\t].join(\"\");\n\t\tvar uricNoSlashChars = [\n\t\t\t\";\",\n\t\t\t\"?\",\n\t\t\t\":\",\n\t\t\t\"@\",\n\t\t\t\"&\",\n\t\t\t\"=\",\n\t\t\t\"+\",\n\t\t\t\"$\",\n\t\t\t\",\"\n\t\t].join(\"\");\n\t\tvar markChars = [\n\t\t\t\".\",\n\t\t\t\"!\",\n\t\t\t\"~\",\n\t\t\t\"*\",\n\t\t\t\"'\",\n\t\t\t\"(\",\n\t\t\t\")\"\n\t\t].join(\"\");\n\t\t/**\n\t\t* getSlug\n\t\t* @param {string} input input string\n\t\t* @param {object|string} opts config object or separator string/char\n\t\t* @api public\n\t\t* @return {string} sluggified string\n\t\t*/\n\t\tvar getSlug = function getSlug$1(input, opts) {\n\t\t\tvar separator = \"-\";\n\t\t\tvar result = \"\";\n\t\t\tvar diatricString = \"\";\n\t\t\tvar convertSymbols = true;\n\t\t\tvar customReplacements = {};\n\t\t\tvar maintainCase;\n\t\t\tvar titleCase;\n\t\t\tvar truncate;\n\t\t\tvar uricFlag;\n\t\t\tvar uricNoSlashFlag;\n\t\t\tvar markFlag;\n\t\t\tvar symbol;\n\t\t\tvar langChar;\n\t\t\tvar lucky;\n\t\t\tvar i;\n\t\t\tvar ch;\n\t\t\tvar l;\n\t\t\tvar lastCharWasSymbol;\n\t\t\tvar lastCharWasDiatric;\n\t\t\tvar allowedChars = \"\";\n\t\t\tif (typeof input !== \"string\") return \"\";\n\t\t\tif (typeof opts === \"string\") separator = opts;\n\t\t\tsymbol = symbolMap.en;\n\t\t\tlangChar = langCharMap.en;\n\t\t\tif (typeof opts === \"object\") {\n\t\t\t\tmaintainCase = opts.maintainCase || false;\n\t\t\t\tcustomReplacements = opts.custom && typeof opts.custom === \"object\" ? opts.custom : customReplacements;\n\t\t\t\ttruncate = +opts.truncate > 1 && opts.truncate || false;\n\t\t\t\turicFlag = opts.uric || false;\n\t\t\t\turicNoSlashFlag = opts.uricNoSlash || false;\n\t\t\t\tmarkFlag = opts.mark || false;\n\t\t\t\tconvertSymbols = opts.symbols === false || opts.lang === false ? false : true;\n\t\t\t\tseparator = opts.separator || separator;\n\t\t\t\tif (uricFlag) allowedChars += uricChars;\n\t\t\t\tif (uricNoSlashFlag) allowedChars += uricNoSlashChars;\n\t\t\t\tif (markFlag) allowedChars += markChars;\n\t\t\t\tsymbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {};\n\t\t\t\tlangChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en;\n\t\t\t\tif (opts.titleCase && typeof opts.titleCase.length === \"number\" && Array.prototype.toString.call(opts.titleCase)) {\n\t\t\t\t\topts.titleCase.forEach(function(v) {\n\t\t\t\t\t\tcustomReplacements[v + \"\"] = v + \"\";\n\t\t\t\t\t});\n\t\t\t\t\ttitleCase = true;\n\t\t\t\t} else titleCase = !!opts.titleCase;\n\t\t\t\tif (opts.custom && typeof opts.custom.length === \"number\" && Array.prototype.toString.call(opts.custom)) opts.custom.forEach(function(v) {\n\t\t\t\t\tcustomReplacements[v + \"\"] = v + \"\";\n\t\t\t\t});\n\t\t\t\tObject.keys(customReplacements).forEach(function(v) {\n\t\t\t\t\tvar r;\n\t\t\t\t\tif (v.length > 1) r = new RegExp(\"\\\\b\" + escapeChars(v) + \"\\\\b\", \"gi\");\n\t\t\t\t\telse r = new RegExp(escapeChars(v), \"gi\");\n\t\t\t\t\tinput = input.replace(r, customReplacements[v]);\n\t\t\t\t});\n\t\t\t\tfor (ch in customReplacements) allowedChars += ch;\n\t\t\t}\n\t\t\tallowedChars += separator;\n\t\t\tallowedChars = escapeChars(allowedChars);\n\t\t\tinput = input.replace(/(^\\s+|\\s+$)/g, \"\");\n\t\t\tlastCharWasSymbol = false;\n\t\t\tlastCharWasDiatric = false;\n\t\t\tfor (i = 0, l = input.length; i < l; i++) {\n\t\t\t\tch = input[i];\n\t\t\t\tif (isReplacedCustomChar(ch, customReplacements)) lastCharWasSymbol = false;\n\t\t\t\telse if (langChar[ch]) {\n\t\t\t\t\tch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? \" \" + langChar[ch] : langChar[ch];\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t} else if (ch in charMap) {\n\t\t\t\t\tif (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {\n\t\t\t\t\t\tdiatricString += ch;\n\t\t\t\t\t\tch = \"\";\n\t\t\t\t\t} else if (lastCharWasDiatric === true) {\n\t\t\t\t\t\tch = diatricMap[diatricString] + charMap[ch];\n\t\t\t\t\t\tdiatricString = \"\";\n\t\t\t\t\t} else ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? \" \" + charMap[ch] : charMap[ch];\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t\tlastCharWasDiatric = false;\n\t\t\t\t} else if (ch in diatricMap) {\n\t\t\t\t\tdiatricString += ch;\n\t\t\t\t\tch = \"\";\n\t\t\t\t\tif (i === l - 1) ch = diatricMap[diatricString];\n\t\t\t\t\tlastCharWasDiatric = true;\n\t\t\t\t} else if (symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)) {\n\t\t\t\t\tch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];\n\t\t\t\t\tch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : \"\";\n\t\t\t\t\tlastCharWasSymbol = true;\n\t\t\t\t} else {\n\t\t\t\t\tif (lastCharWasDiatric === true) {\n\t\t\t\t\t\tch = diatricMap[diatricString] + ch;\n\t\t\t\t\t\tdiatricString = \"\";\n\t\t\t\t\t\tlastCharWasDiatric = false;\n\t\t\t\t\t} else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) ch = \" \" + ch;\n\t\t\t\t\tlastCharWasSymbol = false;\n\t\t\t\t}\n\t\t\t\tresult += ch.replace(new RegExp(\"[^\\\\w\\\\s\" + allowedChars + \"_-]\", \"g\"), separator);\n\t\t\t}\n\t\t\tif (titleCase) result = result.replace(/(\\w)(\\S*)/g, function(_, i$1, r) {\n\t\t\t\tvar j = i$1.toUpperCase() + (r !== null ? r : \"\");\n\t\t\t\treturn Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase();\n\t\t\t});\n\t\t\tresult = result.replace(/\\s+/g, separator).replace(new RegExp(\"\\\\\" + separator + \"+\", \"g\"), separator).replace(new RegExp(\"(^\\\\\" + separator + \"+|\\\\\" + separator + \"+$)\", \"g\"), \"\");\n\t\t\tif (truncate && result.length > truncate) {\n\t\t\t\tlucky = result.charAt(truncate) === separator;\n\t\t\t\tresult = result.slice(0, truncate);\n\t\t\t\tif (!lucky) result = result.slice(0, result.lastIndexOf(separator));\n\t\t\t}\n\t\t\tif (!maintainCase && !titleCase) result = result.toLowerCase();\n\t\t\treturn result;\n\t\t};\n\t\t/**\n\t\t* createSlug curried(opts)(input)\n\t\t* @param {object|string} opts config object or input string\n\t\t* @return {Function} function getSlugWithConfig()\n\t\t**/\n\t\tvar createSlug = function createSlug$1(opts) {\n\t\t\t/**\n\t\t\t* getSlugWithConfig\n\t\t\t* @param {string} input string\n\t\t\t* @return {string} slug string\n\t\t\t*/\n\t\t\treturn function getSlugWithConfig(input) {\n\t\t\t\treturn getSlug(input, opts);\n\t\t\t};\n\t\t};\n\t\t/**\n\t\t* escape Chars\n\t\t* @param {string} input string\n\t\t*/\n\t\tvar escapeChars = function escapeChars$1(input) {\n\t\t\treturn input.replace(/[-\\\\^$*+?.()|[\\]{}\\/]/g, \"\\\\$&\");\n\t\t};\n\t\t/**\n\t\t* check if the char is an already converted char from custom list\n\t\t* @param {char} ch character to check\n\t\t* @param {object} customReplacements custom translation map\n\t\t*/\n\t\tvar isReplacedCustomChar = function(ch, customReplacements) {\n\t\t\tfor (var c in customReplacements) if (customReplacements[c] === ch) return true;\n\t\t};\n\t\tif (typeof module !== \"undefined\" && module.exports) {\n\t\t\tmodule.exports = getSlug;\n\t\t\tmodule.exports.createSlug = createSlug;\n\t\t} else if (typeof define !== \"undefined\" && define.amd) define([], function() {\n\t\t\treturn getSlug;\n\t\t});\n\t\telse try {\n\t\t\tif (root.getSlug || root.createSlug) throw \"speakingurl: globals exists /(getSlug|createSlug)/\";\n\t\t\telse {\n\t\t\t\troot.getSlug = getSlug;\n\t\t\t\troot.createSlug = createSlug;\n\t\t\t}\n\t\t} catch (e) {}\n\t})(exports);\n}) });\n\n//#endregion\n//#region ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\nvar require_speakingurl = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js\": ((exports, module) => {\n\tmodule.exports = require_speakingurl$1();\n}) });\n\n//#endregion\n//#region src/core/app/index.ts\nvar import_speakingurl = /* @__PURE__ */ __toESM(require_speakingurl(), 1);\nconst appRecordInfo = target.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__ ??= {\n\tid: 0,\n\tappIds: /* @__PURE__ */ new Set()\n};\nfunction getAppRecordName(app, fallbackName) {\n\treturn app?._component?.name || `App ${fallbackName}`;\n}\nfunction getAppRootInstance(app) {\n\tif (app._instance) return app._instance;\n\telse if (app._container?._vnode?.component) return app._container?._vnode?.component;\n}\nfunction removeAppRecordId(app) {\n\tconst id = app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n\tif (id != null) {\n\t\tappRecordInfo.appIds.delete(id);\n\t\tappRecordInfo.id--;\n\t}\n}\nfunction getAppRecordId(app, defaultId) {\n\tif (app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ != null) return app.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__;\n\tlet id = defaultId ?? (appRecordInfo.id++).toString();\n\tif (defaultId && appRecordInfo.appIds.has(id)) {\n\t\tlet count = 1;\n\t\twhile (appRecordInfo.appIds.has(`${defaultId}_${count}`)) count++;\n\t\tid = `${defaultId}_${count}`;\n\t}\n\tappRecordInfo.appIds.add(id);\n\tapp.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ = id;\n\treturn id;\n}\nfunction createAppRecord(app, types) {\n\tconst rootInstance = getAppRootInstance(app);\n\tif (rootInstance) {\n\t\tappRecordInfo.id++;\n\t\tconst name = getAppRecordName(app, appRecordInfo.id.toString());\n\t\tconst id = getAppRecordId(app, (0, import_speakingurl.default)(name));\n\t\tconst [el] = getRootElementsFromComponentInstance(rootInstance);\n\t\tconst record = {\n\t\t\tid,\n\t\t\tname,\n\t\t\ttypes,\n\t\t\tinstanceMap: /* @__PURE__ */ new Map(),\n\t\t\tperfGroupIds: /* @__PURE__ */ new Map(),\n\t\t\trootInstance,\n\t\t\tiframe: isBrowser && document !== el?.ownerDocument ? el?.ownerDocument?.location?.pathname : void 0\n\t\t};\n\t\tapp.__VUE_DEVTOOLS_NEXT_APP_RECORD__ = record;\n\t\tconst rootId = `${record.id}:root`;\n\t\trecord.instanceMap.set(rootId, record.rootInstance);\n\t\trecord.rootInstance.__VUE_DEVTOOLS_NEXT_UID__ = rootId;\n\t\treturn record;\n\t} else return {};\n}\n\n//#endregion\n//#region src/core/iframe/index.ts\nfunction detectIframeApp(target$1, inIframe = false) {\n\tif (inIframe) {\n\t\tfunction sendEventToParent(cb) {\n\t\t\ttry {\n\t\t\t\tconst hook$2 = window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\t\t\t\tif (hook$2) cb(hook$2);\n\t\t\t} catch (e) {}\n\t\t}\n\t\tconst hook$1 = {\n\t\t\tid: \"vue-devtools-next\",\n\t\t\tdevtoolsVersion: \"7.0\",\n\t\t\ton: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.on(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\tonce: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.once(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\toff: (event, cb) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.off(event, cb);\n\t\t\t\t});\n\t\t\t},\n\t\t\temit: (event, ...payload) => {\n\t\t\t\tsendEventToParent((hook$2) => {\n\t\t\t\t\thook$2.emit(event, ...payload);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tObject.defineProperty(target$1, \"__VUE_DEVTOOLS_GLOBAL_HOOK__\", {\n\t\t\tget() {\n\t\t\t\treturn hook$1;\n\t\t\t},\n\t\t\tconfigurable: true\n\t\t});\n\t}\n\tfunction injectVueHookToIframe(iframe) {\n\t\tif (iframe.__vdevtools__injected) return;\n\t\ttry {\n\t\t\tiframe.__vdevtools__injected = true;\n\t\t\tconst inject = () => {\n\t\t\t\ttry {\n\t\t\t\t\tiframe.contentWindow.__VUE_DEVTOOLS_IFRAME__ = iframe;\n\t\t\t\t\tconst script = iframe.contentDocument.createElement(\"script\");\n\t\t\t\t\tscript.textContent = `;(${detectIframeApp.toString()})(window, true)`;\n\t\t\t\t\tiframe.contentDocument.documentElement.appendChild(script);\n\t\t\t\t\tscript.parentNode.removeChild(script);\n\t\t\t\t} catch (e) {}\n\t\t\t};\n\t\t\tinject();\n\t\t\tiframe.addEventListener(\"load\", () => inject());\n\t\t} catch (e) {}\n\t}\n\tfunction injectVueHookToIframes() {\n\t\tif (typeof window === \"undefined\") return;\n\t\tconst iframes = Array.from(document.querySelectorAll(\"iframe:not([data-vue-devtools-ignore])\"));\n\t\tfor (const iframe of iframes) injectVueHookToIframe(iframe);\n\t}\n\tinjectVueHookToIframes();\n\tlet iframeAppChecks = 0;\n\tconst iframeAppCheckTimer = setInterval(() => {\n\t\tinjectVueHookToIframes();\n\t\tiframeAppChecks++;\n\t\tif (iframeAppChecks >= 5) clearInterval(iframeAppCheckTimer);\n\t}, 1e3);\n}\n\n//#endregion\n//#region src/core/index.ts\nfunction initDevTools() {\n\tdetectIframeApp(target);\n\tupdateDevToolsState({ vitePluginDetected: getDevToolsEnv().vitePluginDetected });\n\tconst isDevToolsNext = target.__VUE_DEVTOOLS_GLOBAL_HOOK__?.id === \"vue-devtools-next\";\n\tif (target.__VUE_DEVTOOLS_GLOBAL_HOOK__ && isDevToolsNext) return;\n\tconst _devtoolsHook = createDevToolsHook();\n\tif (target.__VUE_DEVTOOLS_HOOK_REPLAY__) try {\n\t\ttarget.__VUE_DEVTOOLS_HOOK_REPLAY__.forEach((cb) => cb(_devtoolsHook));\n\t\ttarget.__VUE_DEVTOOLS_HOOK_REPLAY__ = [];\n\t} catch (e) {\n\t\tconsole.error(\"[vue-devtools] Error during hook replay\", e);\n\t}\n\t_devtoolsHook.once(\"init\", (Vue) => {\n\t\ttarget.__VUE_DEVTOOLS_VUE2_APP_DETECTED__ = true;\n\t\tconsole.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n\t\tconsole.log(\"%cVue DevTools v7 detected in your Vue2 project. v7 only supports Vue3 and will not work.\", \"font-bold: 500; font-size: 14px;\");\n\t\tconst legacyChromeUrl = \"https://chromewebstore.google.com/detail/vuejs-devtools/iaajmlceplecbljialhhkmedjlpdblhp\";\n\t\tconst legacyFirefoxUrl = \"https://addons.mozilla.org/firefox/addon/vue-js-devtools-v6-legacy\";\n\t\tconsole.log(`%cThe legacy version of chrome extension that supports both Vue 2 and Vue 3 has been moved to %c ${legacyChromeUrl}`, \"font-size: 14px;\", \"text-decoration: underline; cursor: pointer;font-size: 14px;\");\n\t\tconsole.log(`%cThe legacy version of firefox extension that supports both Vue 2 and Vue 3 has been moved to %c ${legacyFirefoxUrl}`, \"font-size: 14px;\", \"text-decoration: underline; cursor: pointer;font-size: 14px;\");\n\t\tconsole.log(\"%cPlease install and enable only the legacy version for your Vue2 app.\", \"font-bold: 500; font-size: 14px;\");\n\t\tconsole.log(\"%c[_____Vue DevTools v7 log_____]\", \"color: red; font-bold: 600; font-size: 16px;\");\n\t});\n\thook.on.setupDevtoolsPlugin((pluginDescriptor, setupFn) => {\n\t\taddDevToolsPluginToBuffer(pluginDescriptor, setupFn);\n\t\tconst { app } = activeAppRecord ?? {};\n\t\tif (pluginDescriptor.settings) initPluginSettings(pluginDescriptor.id, pluginDescriptor.settings);\n\t\tif (!app) return;\n\t\tcallDevToolsPluginSetupFn([pluginDescriptor, setupFn], app);\n\t});\n\tonLegacyDevToolsPluginApiAvailable(() => {\n\t\tdevtoolsPluginBuffer.filter(([item]) => item.id !== \"components\").forEach(([pluginDescriptor, setupFn]) => {\n\t\t\t_devtoolsHook.emit(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn, { target: \"legacy\" });\n\t\t});\n\t});\n\thook.on.vueAppInit(async (app, version, types) => {\n\t\tconst normalizedAppRecord = {\n\t\t\t...createAppRecord(app, types),\n\t\t\tapp,\n\t\t\tversion\n\t\t};\n\t\taddDevToolsAppRecord(normalizedAppRecord);\n\t\tif (devtoolsAppRecords.value.length === 1) {\n\t\t\tsetActiveAppRecord(normalizedAppRecord);\n\t\t\tsetActiveAppRecordId(normalizedAppRecord.id);\n\t\t\tnormalizeRouterInfo(normalizedAppRecord, activeAppRecord);\n\t\t\tregisterDevToolsPlugin(normalizedAppRecord.app);\n\t\t}\n\t\tsetupDevToolsPlugin(...createComponentsDevToolsPlugin(normalizedAppRecord.app));\n\t\tupdateDevToolsState({ connected: true });\n\t\t_devtoolsHook.apps.push(app);\n\t});\n\thook.on.vueAppUnmount(async (app) => {\n\t\tconst activeRecords = devtoolsAppRecords.value.filter((appRecord) => appRecord.app !== app);\n\t\tif (activeRecords.length === 0) updateDevToolsState({ connected: false });\n\t\tremoveDevToolsAppRecord(app);\n\t\tremoveAppRecordId(app);\n\t\tif (activeAppRecord.value.app === app) {\n\t\t\tsetActiveAppRecord(activeRecords[0]);\n\t\t\tdevtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT);\n\t\t}\n\t\ttarget.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.splice(target.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.indexOf(app), 1);\n\t\tremoveRegisteredPluginApp(app);\n\t});\n\tsubscribeDevToolsHook(_devtoolsHook);\n\tif (!target.__VUE_DEVTOOLS_GLOBAL_HOOK__) Object.defineProperty(target, \"__VUE_DEVTOOLS_GLOBAL_HOOK__\", {\n\t\tget() {\n\t\t\treturn _devtoolsHook;\n\t\t},\n\t\tconfigurable: true\n\t});\n\telse if (!isNuxtApp) Object.assign(__VUE_DEVTOOLS_GLOBAL_HOOK__, _devtoolsHook);\n}\nfunction onDevToolsClientConnected(fn) {\n\treturn new Promise((resolve) => {\n\t\tif (devtoolsState.connected && devtoolsState.clientConnected) {\n\t\t\tfn();\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tdevtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => {\n\t\t\tif (state.connected && state.clientConnected) {\n\t\t\t\tfn();\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t});\n}\n\n//#endregion\n//#region src/core/high-perf-mode/index.ts\nfunction toggleHighPerfMode(state) {\n\tdevtoolsState.highPerfModeEnabled = state ?? !devtoolsState.highPerfModeEnabled;\n\tif (!state && activeAppRecord.value) registerDevToolsPlugin(activeAppRecord.value.app);\n}\n\n//#endregion\n//#region src/core/component/state/reviver.ts\nfunction reviveSet(val) {\n\tconst result = /* @__PURE__ */ new Set();\n\tconst list = val._custom.value;\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst value = list[i];\n\t\tresult.add(revive(value));\n\t}\n\treturn result;\n}\nfunction reviveMap(val) {\n\tconst result = /* @__PURE__ */ new Map();\n\tconst list = val._custom.value;\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst { key, value } = list[i];\n\t\tresult.set(key, revive(value));\n\t}\n\treturn result;\n}\nfunction revive(val) {\n\tif (val === UNDEFINED) return;\n\telse if (val === INFINITY) return Number.POSITIVE_INFINITY;\n\telse if (val === NEGATIVE_INFINITY) return Number.NEGATIVE_INFINITY;\n\telse if (val === NAN) return NaN;\n\telse if (val && val._custom) {\n\t\tconst { _custom: custom } = val;\n\t\tif (custom.type === \"component\") return activeAppRecord.value.instanceMap.get(custom.id);\n\t\telse if (custom.type === \"map\") return reviveMap(val);\n\t\telse if (custom.type === \"set\") return reviveSet(val);\n\t\telse if (custom.type === \"bigint\") return BigInt(custom.value);\n\t\telse return revive(custom.value);\n\t} else if (symbolRE.test(val)) {\n\t\tconst [, string] = symbolRE.exec(val);\n\t\treturn Symbol.for(string);\n\t} else if (specialTypeRE.test(val)) {\n\t\tconst [, type, string, , details] = specialTypeRE.exec(val);\n\t\tconst result = new target[type](string);\n\t\tif (type === \"Error\" && details) result.stack = details;\n\t\treturn result;\n\t} else return val;\n}\nfunction reviver(key, value) {\n\treturn revive(value);\n}\n\n//#endregion\n//#region src/core/component/state/format.ts\nfunction getInspectorStateValueType(value, raw = true) {\n\tconst type = typeof value;\n\tif (value == null || value === UNDEFINED || value === \"undefined\") return \"null\";\n\telse if (type === \"boolean\" || type === \"number\" || value === INFINITY || value === NEGATIVE_INFINITY || value === NAN) return \"literal\";\n\telse if (value?._custom) if (raw || value._custom.display != null || value._custom.displayText != null) return \"custom\";\n\telse return getInspectorStateValueType(value._custom.value);\n\telse if (typeof value === \"string\") {\n\t\tconst typeMatch = specialTypeRE.exec(value);\n\t\tif (typeMatch) {\n\t\t\tconst [, type$1] = typeMatch;\n\t\t\treturn `native ${type$1}`;\n\t\t} else return \"string\";\n\t} else if (Array.isArray(value) || value?._isArray) return \"array\";\n\telse if (isPlainObject(value)) return \"plain-object\";\n\telse return \"unknown\";\n}\nfunction formatInspectorStateValue(value, quotes = false, options) {\n\tconst { customClass } = options ?? {};\n\tlet result;\n\tconst type = getInspectorStateValueType(value, false);\n\tif (type !== \"custom\" && value?._custom) value = value._custom.value;\n\tif (result = internalStateTokenToString(value)) return result;\n\telse if (type === \"custom\") return value._custom.value?._custom && formatInspectorStateValue(value._custom.value, quotes, options) || value._custom.displayText || value._custom.display;\n\telse if (type === \"array\") return `Array[${value.length}]`;\n\telse if (type === \"plain-object\") return `Object${Object.keys(value).length ? \"\" : \" (empty)\"}`;\n\telse if (type?.includes(\"native\")) return escape(specialTypeRE.exec(value)?.[2]);\n\telse if (typeof value === \"string\") {\n\t\tconst typeMatch = value.match(rawTypeRE);\n\t\tif (typeMatch) value = escapeString(typeMatch[1]);\n\t\telse if (quotes) value = `<span>\"</span>${customClass?.string ? `<span class=${customClass.string}>${escapeString(value)}</span>` : escapeString(value)}<span>\"</span>`;\n\t\telse value = customClass?.string ? `<span class=\"${customClass?.string ?? \"\"}\">${escapeString(value)}</span>` : escapeString(value);\n\t}\n\treturn value;\n}\nfunction escapeString(value) {\n\treturn escape(value).replace(/ /g, \"&nbsp;\").replace(/\\n/g, \"<span>\\\\n</span>\");\n}\nfunction getRaw(value) {\n\tlet customType;\n\tconst isCustom = getInspectorStateValueType(value) === \"custom\";\n\tlet inherit = {};\n\tif (isCustom) {\n\t\tconst data = value;\n\t\tconst customValue = data._custom?.value;\n\t\tconst currentCustomType = data._custom?.type;\n\t\tconst nestedCustom = typeof customValue === \"object\" && customValue !== null && \"_custom\" in customValue ? getRaw(customValue) : {\n\t\t\tinherit: void 0,\n\t\t\tvalue: void 0,\n\t\t\tcustomType: void 0\n\t\t};\n\t\tinherit = nestedCustom.inherit || data._custom?.fields || {};\n\t\tvalue = nestedCustom.value || customValue;\n\t\tcustomType = nestedCustom.customType || currentCustomType;\n\t}\n\tif (value && value._isArray) value = value.items;\n\treturn {\n\t\tvalue,\n\t\tinherit,\n\t\tcustomType\n\t};\n}\nfunction toEdit(value, customType) {\n\tif (customType === \"bigint\") return value;\n\tif (customType === \"date\") return value;\n\treturn replaceTokenToString(JSON.stringify(value));\n}\nfunction toSubmit(value, customType) {\n\tif (customType === \"bigint\") return BigInt(value);\n\tif (customType === \"date\") return new Date(value);\n\treturn JSON.parse(replaceStringToToken(value), reviver);\n}\n\n//#endregion\n//#region src/core/devtools-client/detected.ts\nfunction updateDevToolsClientDetected(params) {\n\tdevtoolsState.devtoolsClientDetected = {\n\t\t...devtoolsState.devtoolsClientDetected,\n\t\t...params\n\t};\n\ttoggleHighPerfMode(!Object.values(devtoolsState.devtoolsClientDetected).some(Boolean));\n}\ntarget.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__ ??= updateDevToolsClientDetected;\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/double-indexed-kv.js\nvar DoubleIndexedKV = class {\n\tconstructor() {\n\t\tthis.keyToValue = /* @__PURE__ */ new Map();\n\t\tthis.valueToKey = /* @__PURE__ */ new Map();\n\t}\n\tset(key, value) {\n\t\tthis.keyToValue.set(key, value);\n\t\tthis.valueToKey.set(value, key);\n\t}\n\tgetByKey(key) {\n\t\treturn this.keyToValue.get(key);\n\t}\n\tgetByValue(value) {\n\t\treturn this.valueToKey.get(value);\n\t}\n\tclear() {\n\t\tthis.keyToValue.clear();\n\t\tthis.valueToKey.clear();\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/registry.js\nvar Registry = class {\n\tconstructor(generateIdentifier) {\n\t\tthis.generateIdentifier = generateIdentifier;\n\t\tthis.kv = new DoubleIndexedKV();\n\t}\n\tregister(value, identifier) {\n\t\tif (this.kv.getByValue(value)) return;\n\t\tif (!identifier) identifier = this.generateIdentifier(value);\n\t\tthis.kv.set(identifier, value);\n\t}\n\tclear() {\n\t\tthis.kv.clear();\n\t}\n\tgetIdentifier(value) {\n\t\treturn this.kv.getByValue(value);\n\t}\n\tgetValue(identifier) {\n\t\treturn this.kv.getByKey(identifier);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/class-registry.js\nvar ClassRegistry = class extends Registry {\n\tconstructor() {\n\t\tsuper((c) => c.name);\n\t\tthis.classToAllowedProps = /* @__PURE__ */ new Map();\n\t}\n\tregister(value, options) {\n\t\tif (typeof options === \"object\") {\n\t\t\tif (options.allowProps) this.classToAllowedProps.set(value, options.allowProps);\n\t\t\tsuper.register(value, options.identifier);\n\t\t} else super.register(value, options);\n\t}\n\tgetAllowedProps(value) {\n\t\treturn this.classToAllowedProps.get(value);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/util.js\nfunction valuesOfObj(record) {\n\tif (\"values\" in Object) return Object.values(record);\n\tconst values = [];\n\tfor (const key in record) if (record.hasOwnProperty(key)) values.push(record[key]);\n\treturn values;\n}\nfunction find(record, predicate) {\n\tconst values = valuesOfObj(record);\n\tif (\"find\" in values) return values.find(predicate);\n\tconst valuesNotNever = values;\n\tfor (let i = 0; i < valuesNotNever.length; i++) {\n\t\tconst value = valuesNotNever[i];\n\t\tif (predicate(value)) return value;\n\t}\n}\nfunction forEach(record, run) {\n\tObject.entries(record).forEach(([key, value]) => run(value, key));\n}\nfunction includes(arr, value) {\n\treturn arr.indexOf(value) !== -1;\n}\nfunction findArr(record, predicate) {\n\tfor (let i = 0; i < record.length; i++) {\n\t\tconst value = record[i];\n\t\tif (predicate(value)) return value;\n\t}\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/custom-transformer-registry.js\nvar CustomTransformerRegistry = class {\n\tconstructor() {\n\t\tthis.transfomers = {};\n\t}\n\tregister(transformer) {\n\t\tthis.transfomers[transformer.name] = transformer;\n\t}\n\tfindApplicable(v) {\n\t\treturn find(this.transfomers, (transformer) => transformer.isApplicable(v));\n\t}\n\tfindByName(name) {\n\t\treturn this.transfomers[name];\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/is.js\nconst getType$1 = (payload) => Object.prototype.toString.call(payload).slice(8, -1);\nconst isUndefined$1 = (payload) => typeof payload === \"undefined\";\nconst isNull$1 = (payload) => payload === null;\nconst isPlainObject$2 = (payload) => {\n\tif (typeof payload !== \"object\" || payload === null) return false;\n\tif (payload === Object.prototype) return false;\n\tif (Object.getPrototypeOf(payload) === null) return true;\n\treturn Object.getPrototypeOf(payload) === Object.prototype;\n};\nconst isEmptyObject = (payload) => isPlainObject$2(payload) && Object.keys(payload).length === 0;\nconst isArray$2 = (payload) => Array.isArray(payload);\nconst isString = (payload) => typeof payload === \"string\";\nconst isNumber = (payload) => typeof payload === \"number\" && !isNaN(payload);\nconst isBoolean = (payload) => typeof payload === \"boolean\";\nconst isRegExp = (payload) => payload instanceof RegExp;\nconst isMap = (payload) => payload instanceof Map;\nconst isSet = (payload) => payload instanceof Set;\nconst isSymbol = (payload) => getType$1(payload) === \"Symbol\";\nconst isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf());\nconst isError = (payload) => payload instanceof Error;\nconst isNaNValue = (payload) => typeof payload === \"number\" && isNaN(payload);\nconst isPrimitive = (payload) => isBoolean(payload) || isNull$1(payload) || isUndefined$1(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\nconst isBigint = (payload) => typeof payload === \"bigint\";\nconst isInfinite = (payload) => payload === Infinity || payload === -Infinity;\nconst isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView);\nconst isURL = (payload) => payload instanceof URL;\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/pathstringifier.js\nconst escapeKey = (key) => key.replace(/\\./g, \"\\\\.\");\nconst stringifyPath = (path) => path.map(String).map(escapeKey).join(\".\");\nconst parsePath = (string) => {\n\tconst result = [];\n\tlet segment = \"\";\n\tfor (let i = 0; i < string.length; i++) {\n\t\tlet char = string.charAt(i);\n\t\tif (char === \"\\\\\" && string.charAt(i + 1) === \".\") {\n\t\t\tsegment += \".\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \".\") {\n\t\t\tresult.push(segment);\n\t\t\tsegment = \"\";\n\t\t\tcontinue;\n\t\t}\n\t\tsegment += char;\n\t}\n\tconst lastSegment = segment;\n\tresult.push(lastSegment);\n\treturn result;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/transformer.js\nfunction simpleTransformation(isApplicable, annotation, transform, untransform) {\n\treturn {\n\t\tisApplicable,\n\t\tannotation,\n\t\ttransform,\n\t\tuntransform\n\t};\n}\nconst simpleRules = [\n\tsimpleTransformation(isUndefined$1, \"undefined\", () => null, () => void 0),\n\tsimpleTransformation(isBigint, \"bigint\", (v) => v.toString(), (v) => {\n\t\tif (typeof BigInt !== \"undefined\") return BigInt(v);\n\t\tconsole.error(\"Please add a BigInt polyfill.\");\n\t\treturn v;\n\t}),\n\tsimpleTransformation(isDate, \"Date\", (v) => v.toISOString(), (v) => new Date(v)),\n\tsimpleTransformation(isError, \"Error\", (v, superJson) => {\n\t\tconst baseError = {\n\t\t\tname: v.name,\n\t\t\tmessage: v.message\n\t\t};\n\t\tsuperJson.allowedErrorProps.forEach((prop) => {\n\t\t\tbaseError[prop] = v[prop];\n\t\t});\n\t\treturn baseError;\n\t}, (v, superJson) => {\n\t\tconst e = new Error(v.message);\n\t\te.name = v.name;\n\t\te.stack = v.stack;\n\t\tsuperJson.allowedErrorProps.forEach((prop) => {\n\t\t\te[prop] = v[prop];\n\t\t});\n\t\treturn e;\n\t}),\n\tsimpleTransformation(isRegExp, \"regexp\", (v) => \"\" + v, (regex) => {\n\t\tconst body = regex.slice(1, regex.lastIndexOf(\"/\"));\n\t\tconst flags = regex.slice(regex.lastIndexOf(\"/\") + 1);\n\t\treturn new RegExp(body, flags);\n\t}),\n\tsimpleTransformation(isSet, \"set\", (v) => [...v.values()], (v) => new Set(v)),\n\tsimpleTransformation(isMap, \"map\", (v) => [...v.entries()], (v) => new Map(v)),\n\tsimpleTransformation((v) => isNaNValue(v) || isInfinite(v), \"number\", (v) => {\n\t\tif (isNaNValue(v)) return \"NaN\";\n\t\tif (v > 0) return \"Infinity\";\n\t\telse return \"-Infinity\";\n\t}, Number),\n\tsimpleTransformation((v) => v === 0 && 1 / v === -Infinity, \"number\", () => {\n\t\treturn \"-0\";\n\t}, Number),\n\tsimpleTransformation(isURL, \"URL\", (v) => v.toString(), (v) => new URL(v))\n];\nfunction compositeTransformation(isApplicable, annotation, transform, untransform) {\n\treturn {\n\t\tisApplicable,\n\t\tannotation,\n\t\ttransform,\n\t\tuntransform\n\t};\n}\nconst symbolRule = compositeTransformation((s, superJson) => {\n\tif (isSymbol(s)) return !!superJson.symbolRegistry.getIdentifier(s);\n\treturn false;\n}, (s, superJson) => {\n\treturn [\"symbol\", superJson.symbolRegistry.getIdentifier(s)];\n}, (v) => v.description, (_, a, superJson) => {\n\tconst value = superJson.symbolRegistry.getValue(a[1]);\n\tif (!value) throw new Error(\"Trying to deserialize unknown symbol\");\n\treturn value;\n});\nconst constructorToName = [\n\tInt8Array,\n\tUint8Array,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tUint8ClampedArray\n].reduce((obj, ctor) => {\n\tobj[ctor.name] = ctor;\n\treturn obj;\n}, {});\nconst typedArrayRule = compositeTransformation(isTypedArray, (v) => [\"typed-array\", v.constructor.name], (v) => [...v], (v, a) => {\n\tconst ctor = constructorToName[a[1]];\n\tif (!ctor) throw new Error(\"Trying to deserialize unknown typed array\");\n\treturn new ctor(v);\n});\nfunction isInstanceOfRegisteredClass(potentialClass, superJson) {\n\tif (potentialClass?.constructor) return !!superJson.classRegistry.getIdentifier(potentialClass.constructor);\n\treturn false;\n}\nconst classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => {\n\treturn [\"class\", superJson.classRegistry.getIdentifier(clazz.constructor)];\n}, (clazz, superJson) => {\n\tconst allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor);\n\tif (!allowedProps) return { ...clazz };\n\tconst result = {};\n\tallowedProps.forEach((prop) => {\n\t\tresult[prop] = clazz[prop];\n\t});\n\treturn result;\n}, (v, a, superJson) => {\n\tconst clazz = superJson.classRegistry.getValue(a[1]);\n\tif (!clazz) throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);\n\treturn Object.assign(Object.create(clazz.prototype), v);\n});\nconst customRule = compositeTransformation((value, superJson) => {\n\treturn !!superJson.customTransformerRegistry.findApplicable(value);\n}, (value, superJson) => {\n\treturn [\"custom\", superJson.customTransformerRegistry.findApplicable(value).name];\n}, (value, superJson) => {\n\treturn superJson.customTransformerRegistry.findApplicable(value).serialize(value);\n}, (v, a, superJson) => {\n\tconst transformer = superJson.customTransformerRegistry.findByName(a[1]);\n\tif (!transformer) throw new Error(\"Trying to deserialize unknown custom value\");\n\treturn transformer.deserialize(v);\n});\nconst compositeRules = [\n\tclassRule,\n\tsymbolRule,\n\tcustomRule,\n\ttypedArrayRule\n];\nconst transformValue = (value, superJson) => {\n\tconst applicableCompositeRule = findArr(compositeRules, (rule) => rule.isApplicable(value, superJson));\n\tif (applicableCompositeRule) return {\n\t\tvalue: applicableCompositeRule.transform(value, superJson),\n\t\ttype: applicableCompositeRule.annotation(value, superJson)\n\t};\n\tconst applicableSimpleRule = findArr(simpleRules, (rule) => rule.isApplicable(value, superJson));\n\tif (applicableSimpleRule) return {\n\t\tvalue: applicableSimpleRule.transform(value, superJson),\n\t\ttype: applicableSimpleRule.annotation\n\t};\n};\nconst simpleRulesByAnnotation = {};\nsimpleRules.forEach((rule) => {\n\tsimpleRulesByAnnotation[rule.annotation] = rule;\n});\nconst untransformValue = (json, type, superJson) => {\n\tif (isArray$2(type)) switch (type[0]) {\n\t\tcase \"symbol\": return symbolRule.untransform(json, type, superJson);\n\t\tcase \"class\": return classRule.untransform(json, type, superJson);\n\t\tcase \"custom\": return customRule.untransform(json, type, superJson);\n\t\tcase \"typed-array\": return typedArrayRule.untransform(json, type, superJson);\n\t\tdefault: throw new Error(\"Unknown transformation: \" + type);\n\t}\n\telse {\n\t\tconst transformation = simpleRulesByAnnotation[type];\n\t\tif (!transformation) throw new Error(\"Unknown transformation: \" + type);\n\t\treturn transformation.untransform(json, superJson);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/accessDeep.js\nconst getNthKey = (value, n) => {\n\tif (n > value.size) throw new Error(\"index out of bounds\");\n\tconst keys = value.keys();\n\twhile (n > 0) {\n\t\tkeys.next();\n\t\tn--;\n\t}\n\treturn keys.next().value;\n};\nfunction validatePath(path) {\n\tif (includes(path, \"__proto__\")) throw new Error(\"__proto__ is not allowed as a property\");\n\tif (includes(path, \"prototype\")) throw new Error(\"prototype is not allowed as a property\");\n\tif (includes(path, \"constructor\")) throw new Error(\"constructor is not allowed as a property\");\n}\nconst getDeep = (object, path) => {\n\tvalidatePath(path);\n\tfor (let i = 0; i < path.length; i++) {\n\t\tconst key = path[i];\n\t\tif (isSet(object)) object = getNthKey(object, +key);\n\t\telse if (isMap(object)) {\n\t\t\tconst row = +key;\n\t\t\tconst type = +path[++i] === 0 ? \"key\" : \"value\";\n\t\t\tconst keyOfRow = getNthKey(object, row);\n\t\t\tswitch (type) {\n\t\t\t\tcase \"key\":\n\t\t\t\t\tobject = keyOfRow;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"value\":\n\t\t\t\t\tobject = object.get(keyOfRow);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else object = object[key];\n\t}\n\treturn object;\n};\nconst setDeep = (object, path, mapper) => {\n\tvalidatePath(path);\n\tif (path.length === 0) return mapper(object);\n\tlet parent = object;\n\tfor (let i = 0; i < path.length - 1; i++) {\n\t\tconst key = path[i];\n\t\tif (isArray$2(parent)) {\n\t\t\tconst index = +key;\n\t\t\tparent = parent[index];\n\t\t} else if (isPlainObject$2(parent)) parent = parent[key];\n\t\telse if (isSet(parent)) {\n\t\t\tconst row = +key;\n\t\t\tparent = getNthKey(parent, row);\n\t\t} else if (isMap(parent)) {\n\t\t\tif (i === path.length - 2) break;\n\t\t\tconst row = +key;\n\t\t\tconst type = +path[++i] === 0 ? \"key\" : \"value\";\n\t\t\tconst keyOfRow = getNthKey(parent, row);\n\t\t\tswitch (type) {\n\t\t\t\tcase \"key\":\n\t\t\t\t\tparent = keyOfRow;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"value\":\n\t\t\t\t\tparent = parent.get(keyOfRow);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tconst lastKey = path[path.length - 1];\n\tif (isArray$2(parent)) parent[+lastKey] = mapper(parent[+lastKey]);\n\telse if (isPlainObject$2(parent)) parent[lastKey] = mapper(parent[lastKey]);\n\tif (isSet(parent)) {\n\t\tconst oldValue = getNthKey(parent, +lastKey);\n\t\tconst newValue = mapper(oldValue);\n\t\tif (oldValue !== newValue) {\n\t\t\tparent.delete(oldValue);\n\t\t\tparent.add(newValue);\n\t\t}\n\t}\n\tif (isMap(parent)) {\n\t\tconst row = +path[path.length - 2];\n\t\tconst keyToRow = getNthKey(parent, row);\n\t\tswitch (+lastKey === 0 ? \"key\" : \"value\") {\n\t\t\tcase \"key\": {\n\t\t\t\tconst newKey = mapper(keyToRow);\n\t\t\t\tparent.set(newKey, parent.get(keyToRow));\n\t\t\t\tif (newKey !== keyToRow) parent.delete(keyToRow);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"value\":\n\t\t\t\tparent.set(keyToRow, mapper(parent.get(keyToRow)));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn object;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/plainer.js\nfunction traverse(tree, walker$1, origin = []) {\n\tif (!tree) return;\n\tif (!isArray$2(tree)) {\n\t\tforEach(tree, (subtree, key) => traverse(subtree, walker$1, [...origin, ...parsePath(key)]));\n\t\treturn;\n\t}\n\tconst [nodeValue, children] = tree;\n\tif (children) forEach(children, (child, key) => {\n\t\ttraverse(child, walker$1, [...origin, ...parsePath(key)]);\n\t});\n\twalker$1(nodeValue, origin);\n}\nfunction applyValueAnnotations(plain, annotations, superJson) {\n\ttraverse(annotations, (type, path) => {\n\t\tplain = setDeep(plain, path, (v) => untransformValue(v, type, superJson));\n\t});\n\treturn plain;\n}\nfunction applyReferentialEqualityAnnotations(plain, annotations) {\n\tfunction apply(identicalPaths, path) {\n\t\tconst object = getDeep(plain, parsePath(path));\n\t\tidenticalPaths.map(parsePath).forEach((identicalObjectPath) => {\n\t\t\tplain = setDeep(plain, identicalObjectPath, () => object);\n\t\t});\n\t}\n\tif (isArray$2(annotations)) {\n\t\tconst [root, other] = annotations;\n\t\troot.forEach((identicalPath) => {\n\t\t\tplain = setDeep(plain, parsePath(identicalPath), () => plain);\n\t\t});\n\t\tif (other) forEach(other, apply);\n\t} else forEach(annotations, apply);\n\treturn plain;\n}\nconst isDeep = (object, superJson) => isPlainObject$2(object) || isArray$2(object) || isMap(object) || isSet(object) || isInstanceOfRegisteredClass(object, superJson);\nfunction addIdentity(object, path, identities) {\n\tconst existingSet = identities.get(object);\n\tif (existingSet) existingSet.push(path);\n\telse identities.set(object, [path]);\n}\nfunction generateReferentialEqualityAnnotations(identitites, dedupe) {\n\tconst result = {};\n\tlet rootEqualityPaths = void 0;\n\tidentitites.forEach((paths) => {\n\t\tif (paths.length <= 1) return;\n\t\tif (!dedupe) paths = paths.map((path) => path.map(String)).sort((a, b) => a.length - b.length);\n\t\tconst [representativePath, ...identicalPaths] = paths;\n\t\tif (representativePath.length === 0) rootEqualityPaths = identicalPaths.map(stringifyPath);\n\t\telse result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath);\n\t});\n\tif (rootEqualityPaths) if (isEmptyObject(result)) return [rootEqualityPaths];\n\telse return [rootEqualityPaths, result];\n\telse return isEmptyObject(result) ? void 0 : result;\n}\nconst walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => {\n\tconst primitive = isPrimitive(object);\n\tif (!primitive) {\n\t\taddIdentity(object, path, identities);\n\t\tconst seen = seenObjects.get(object);\n\t\tif (seen) return dedupe ? { transformedValue: null } : seen;\n\t}\n\tif (!isDeep(object, superJson)) {\n\t\tconst transformed$1 = transformValue(object, superJson);\n\t\tconst result$1 = transformed$1 ? {\n\t\t\ttransformedValue: transformed$1.value,\n\t\t\tannotations: [transformed$1.type]\n\t\t} : { transformedValue: object };\n\t\tif (!primitive) seenObjects.set(object, result$1);\n\t\treturn result$1;\n\t}\n\tif (includes(objectsInThisPath, object)) return { transformedValue: null };\n\tconst transformationResult = transformValue(object, superJson);\n\tconst transformed = transformationResult?.value ?? object;\n\tconst transformedValue = isArray$2(transformed) ? [] : {};\n\tconst innerAnnotations = {};\n\tforEach(transformed, (value, index) => {\n\t\tif (index === \"__proto__\" || index === \"constructor\" || index === \"prototype\") throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`);\n\t\tconst recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects);\n\t\ttransformedValue[index] = recursiveResult.transformedValue;\n\t\tif (isArray$2(recursiveResult.annotations)) innerAnnotations[index] = recursiveResult.annotations;\n\t\telse if (isPlainObject$2(recursiveResult.annotations)) forEach(recursiveResult.annotations, (tree, key) => {\n\t\t\tinnerAnnotations[escapeKey(index) + \".\" + key] = tree;\n\t\t});\n\t});\n\tconst result = isEmptyObject(innerAnnotations) ? {\n\t\ttransformedValue,\n\t\tannotations: !!transformationResult ? [transformationResult.type] : void 0\n\t} : {\n\t\ttransformedValue,\n\t\tannotations: !!transformationResult ? [transformationResult.type, innerAnnotations] : innerAnnotations\n\t};\n\tif (!primitive) seenObjects.set(object, result);\n\treturn result;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/is-what@4.1.16/node_modules/is-what/dist/index.js\nfunction getType(payload) {\n\treturn Object.prototype.toString.call(payload).slice(8, -1);\n}\nfunction isArray$1(payload) {\n\treturn getType(payload) === \"Array\";\n}\nfunction isPlainObject$1(payload) {\n\tif (getType(payload) !== \"Object\") return false;\n\tconst prototype = Object.getPrototypeOf(payload);\n\treturn !!prototype && prototype.constructor === Object && prototype === Object.prototype;\n}\nfunction isNull(payload) {\n\treturn getType(payload) === \"Null\";\n}\nfunction isOneOf(a, b, c, d, e) {\n\treturn (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);\n}\nfunction isUndefined(payload) {\n\treturn getType(payload) === \"Undefined\";\n}\nconst isNullOrUndefined = isOneOf(isNull, isUndefined);\n\n//#endregion\n//#region ../../node_modules/.pnpm/copy-anything@3.0.5/node_modules/copy-anything/dist/index.js\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\n\tconst propType = {}.propertyIsEnumerable.call(originalObject, key) ? \"enumerable\" : \"nonenumerable\";\n\tif (propType === \"enumerable\") carry[key] = newVal;\n\tif (includeNonenumerable && propType === \"nonenumerable\") Object.defineProperty(carry, key, {\n\t\tvalue: newVal,\n\t\tenumerable: false,\n\t\twritable: true,\n\t\tconfigurable: true\n\t});\n}\nfunction copy(target$1, options = {}) {\n\tif (isArray$1(target$1)) return target$1.map((item) => copy(item, options));\n\tif (!isPlainObject$1(target$1)) return target$1;\n\tconst props = Object.getOwnPropertyNames(target$1);\n\tconst symbols = Object.getOwnPropertySymbols(target$1);\n\treturn [...props, ...symbols].reduce((carry, key) => {\n\t\tif (isArray$1(options.props) && !options.props.includes(key)) return carry;\n\t\tconst val = target$1[key];\n\t\tassignProp(carry, key, copy(val, options), target$1, options.nonenumerable);\n\t\treturn carry;\n\t}, {});\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/superjson@2.2.2/node_modules/superjson/dist/index.js\nvar SuperJSON = class {\n\t/**\n\t* @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`.\n\t*/\n\tconstructor({ dedupe = false } = {}) {\n\t\tthis.classRegistry = new ClassRegistry();\n\t\tthis.symbolRegistry = new Registry((s) => s.description ?? \"\");\n\t\tthis.customTransformerRegistry = new CustomTransformerRegistry();\n\t\tthis.allowedErrorProps = [];\n\t\tthis.dedupe = dedupe;\n\t}\n\tserialize(object) {\n\t\tconst identities = /* @__PURE__ */ new Map();\n\t\tconst output = walker(object, identities, this, this.dedupe);\n\t\tconst res = { json: output.transformedValue };\n\t\tif (output.annotations) res.meta = {\n\t\t\t...res.meta,\n\t\t\tvalues: output.annotations\n\t\t};\n\t\tconst equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe);\n\t\tif (equalityAnnotations) res.meta = {\n\t\t\t...res.meta,\n\t\t\treferentialEqualities: equalityAnnotations\n\t\t};\n\t\treturn res;\n\t}\n\tdeserialize(payload) {\n\t\tconst { json, meta } = payload;\n\t\tlet result = copy(json);\n\t\tif (meta?.values) result = applyValueAnnotations(result, meta.values, this);\n\t\tif (meta?.referentialEqualities) result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities);\n\t\treturn result;\n\t}\n\tstringify(object) {\n\t\treturn JSON.stringify(this.serialize(object));\n\t}\n\tparse(string) {\n\t\treturn this.deserialize(JSON.parse(string));\n\t}\n\tregisterClass(v, options) {\n\t\tthis.classRegistry.register(v, options);\n\t}\n\tregisterSymbol(v, identifier) {\n\t\tthis.symbolRegistry.register(v, identifier);\n\t}\n\tregisterCustom(transformer, name) {\n\t\tthis.customTransformerRegistry.register({\n\t\t\tname,\n\t\t\t...transformer\n\t\t});\n\t}\n\tallowErrorProps(...props) {\n\t\tthis.allowedErrorProps.push(...props);\n\t}\n};\nSuperJSON.defaultInstance = new SuperJSON();\nSuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance);\nSuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance);\nSuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance);\nSuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance);\nSuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance);\nSuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance);\nSuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance);\nSuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance);\nconst serialize = SuperJSON.serialize;\nconst deserialize = SuperJSON.deserialize;\nconst stringify$1 = SuperJSON.stringify;\nconst parse$1 = SuperJSON.parse;\nconst registerClass = SuperJSON.registerClass;\nconst registerCustom = SuperJSON.registerCustom;\nconst registerSymbol = SuperJSON.registerSymbol;\nconst allowErrorProps = SuperJSON.allowErrorProps;\n\n//#endregion\n//#region src/messaging/presets/broadcast-channel/context.ts\nconst __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY = \"__devtools-kit-broadcast-messaging-event-key__\";\n\n//#endregion\n//#region src/messaging/presets/broadcast-channel/index.ts\nconst BROADCAST_CHANNEL_NAME = \"__devtools-kit:broadcast-channel__\";\nfunction createBroadcastChannel() {\n\tconst channel = new BroadcastChannel(BROADCAST_CHANNEL_NAME);\n\treturn {\n\t\tpost: (data) => {\n\t\t\tchannel.postMessage(SuperJSON.stringify({\n\t\t\t\tevent: __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY,\n\t\t\t\tdata\n\t\t\t}));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tchannel.onmessage = (event) => {\n\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\tif (parsed.event === __DEVTOOLS_KIT_BROADCAST_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/context.ts\nconst __ELECTRON_CLIENT_CONTEXT__ = \"electron:client-context\";\nconst __ELECTRON_RPOXY_CONTEXT__ = \"electron:proxy-context\";\nconst __ELECTRON_SERVER_CONTEXT__ = \"electron:server-context\";\nconst __DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__ = {\n\tCLIENT_TO_PROXY: \"client->proxy\",\n\tPROXY_TO_CLIENT: \"proxy->client\",\n\tPROXY_TO_SERVER: \"proxy->server\",\n\tSERVER_TO_PROXY: \"server->proxy\"\n};\nfunction getElectronClientContext() {\n\treturn target[__ELECTRON_CLIENT_CONTEXT__];\n}\nfunction setElectronClientContext(context) {\n\ttarget[__ELECTRON_CLIENT_CONTEXT__] = context;\n}\nfunction getElectronProxyContext() {\n\treturn target[__ELECTRON_RPOXY_CONTEXT__];\n}\nfunction setElectronProxyContext(context) {\n\ttarget[__ELECTRON_RPOXY_CONTEXT__] = context;\n}\nfunction getElectronServerContext() {\n\treturn target[__ELECTRON_SERVER_CONTEXT__];\n}\nfunction setElectronServerContext(context) {\n\ttarget[__ELECTRON_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/electron/client.ts\nfunction createElectronClientChannel() {\n\tconst socket = getElectronClientContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tsocket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, (e) => {\n\t\t\t\thandler(SuperJSON.parse(e));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/proxy.ts\nfunction createElectronProxyChannel() {\n\tconst socket = getElectronProxyContext();\n\treturn {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, (data) => {\n\t\t\t\tsocket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_CLIENT, data);\n\t\t\t});\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.CLIENT_TO_PROXY, (data) => {\n\t\t\t\tsocket.broadcast.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, data);\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/electron/server.ts\nfunction createElectronServerChannel() {\n\tconst socket = getElectronServerContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tsocket.emit(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tsocket.on(__DEVTOOLS_KIT_ELECTRON_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER, (data) => {\n\t\t\t\thandler(SuperJSON.parse(data));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/context.ts\nconst __EXTENSION_CLIENT_CONTEXT__ = \"electron:client-context\";\nconst __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__ = {\n\tCLIENT_TO_PROXY: \"client->proxy\",\n\tPROXY_TO_CLIENT: \"proxy->client\",\n\tPROXY_TO_SERVER: \"proxy->server\",\n\tSERVER_TO_PROXY: \"server->proxy\"\n};\nfunction getExtensionClientContext() {\n\treturn target[__EXTENSION_CLIENT_CONTEXT__];\n}\nfunction setExtensionClientContext(context) {\n\ttarget[__EXTENSION_CLIENT_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/extension/client.ts\nfunction createExtensionClientChannel() {\n\tlet disconnected = false;\n\tlet port = null;\n\tlet reconnectTimer = null;\n\tlet onMessageHandler = null;\n\tfunction connect() {\n\t\ttry {\n\t\t\tclearTimeout(reconnectTimer);\n\t\t\tport = chrome.runtime.connect({ name: `${chrome.devtools.inspectedWindow.tabId}` });\n\t\t\tsetExtensionClientContext(port);\n\t\t\tdisconnected = false;\n\t\t\tport?.onMessage.addListener(onMessageHandler);\n\t\t\tport.onDisconnect.addListener(() => {\n\t\t\t\tdisconnected = true;\n\t\t\t\tport?.onMessage.removeListener(onMessageHandler);\n\t\t\t\treconnectTimer = setTimeout(connect, 1e3);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tdisconnected = true;\n\t\t}\n\t}\n\tconnect();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tif (disconnected) return;\n\t\t\tport?.postMessage(SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tonMessageHandler = (data) => {\n\t\t\t\tif (disconnected) return;\n\t\t\t\thandler(SuperJSON.parse(data));\n\t\t\t};\n\t\t\tport?.onMessage.addListener(onMessageHandler);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/proxy.ts\nfunction createExtensionProxyChannel() {\n\tconst port = chrome.runtime.connect({ name: \"content-script\" });\n\tfunction sendMessageToUserApp(payload) {\n\t\twindow.postMessage({\n\t\t\tsource: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER,\n\t\t\tpayload\n\t\t}, \"*\");\n\t}\n\tfunction sendMessageToDevToolsClient(e) {\n\t\tif (e.data && e.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY) try {\n\t\t\tport.postMessage(e.data.payload);\n\t\t} catch (e$1) {}\n\t}\n\tport.onMessage.addListener(sendMessageToUserApp);\n\twindow.addEventListener(\"message\", sendMessageToDevToolsClient);\n\tport.onDisconnect.addListener(() => {\n\t\twindow.removeEventListener(\"message\", sendMessageToDevToolsClient);\n\t\tsendMessageToUserApp(SuperJSON.stringify({ event: \"shutdown\" }));\n\t});\n\tsendMessageToUserApp(SuperJSON.stringify({ event: \"init\" }));\n\treturn {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/extension/server.ts\nfunction createExtensionServerChannel() {\n\treturn {\n\t\tpost: (data) => {\n\t\t\twindow.postMessage({\n\t\t\t\tsource: __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.SERVER_TO_PROXY,\n\t\t\t\tpayload: SuperJSON.stringify(data)\n\t\t\t}, \"*\");\n\t\t},\n\t\ton: (handler) => {\n\t\t\tconst listener = (event) => {\n\t\t\t\tif (event.data.source === __DEVTOOLS_KIT_EXTENSION_MESSAGING_EVENT_KEY__.PROXY_TO_SERVER && event.data.payload) handler(SuperJSON.parse(event.data.payload));\n\t\t\t};\n\t\t\twindow.addEventListener(\"message\", listener);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener(\"message\", listener);\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/context.ts\nconst __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY = \"__devtools-kit-iframe-messaging-event-key__\";\nconst __IFRAME_SERVER_CONTEXT__ = \"iframe:server-context\";\nfunction getIframeServerContext() {\n\treturn target[__IFRAME_SERVER_CONTEXT__];\n}\nfunction setIframeServerContext(context) {\n\ttarget[__IFRAME_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/client.ts\nfunction createIframeClientChannel() {\n\tif (!isBrowser) return {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n\treturn {\n\t\tpost: (data) => window.parent.postMessage(SuperJSON.stringify({\n\t\t\tevent: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n\t\t\tdata\n\t\t}), \"*\"),\n\t\ton: (handler) => window.addEventListener(\"message\", (event) => {\n\t\t\ttry {\n\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\tif (event.source === window.parent && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t} catch (e) {}\n\t\t})\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/iframe/server.ts\nfunction createIframeServerChannel() {\n\tif (!isBrowser) return {\n\t\tpost: (data) => {},\n\t\ton: (handler) => {}\n\t};\n\treturn {\n\t\tpost: (data) => {\n\t\t\tgetIframeServerContext()?.contentWindow?.postMessage(SuperJSON.stringify({\n\t\t\t\tevent: __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY,\n\t\t\t\tdata\n\t\t\t}), \"*\");\n\t\t},\n\t\ton: (handler) => {\n\t\t\twindow.addEventListener(\"message\", (event) => {\n\t\t\t\tconst iframe = getIframeServerContext();\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = SuperJSON.parse(event.data);\n\t\t\t\t\tif (event.source === iframe?.contentWindow && parsed.event === __DEVTOOLS_KIT_IFRAME_MESSAGING_EVENT_KEY) handler(parsed.data);\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/vite/context.ts\nconst __DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY = \"__devtools-kit-vite-messaging-event-key__\";\nconst __VITE_CLIENT_CONTEXT__ = \"vite:client-context\";\nconst __VITE_SERVER_CONTEXT__ = \"vite:server-context\";\nfunction getViteClientContext() {\n\treturn target[__VITE_CLIENT_CONTEXT__];\n}\nfunction setViteClientContext(context) {\n\ttarget[__VITE_CLIENT_CONTEXT__] = context;\n}\nfunction getViteServerContext() {\n\treturn target[__VITE_SERVER_CONTEXT__];\n}\nfunction setViteServerContext(context) {\n\ttarget[__VITE_SERVER_CONTEXT__] = context;\n}\n\n//#endregion\n//#region src/messaging/presets/vite/client.ts\nfunction createViteClientChannel() {\n\tconst client = getViteClientContext();\n\treturn {\n\t\tpost: (data) => {\n\t\t\tclient?.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data));\n\t\t},\n\t\ton: (handler) => {\n\t\t\tclient?.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n\t\t\t\thandler(SuperJSON.parse(event));\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/messaging/presets/vite/server.ts\nfunction createViteServerChannel() {\n\tconst viteServer = getViteServerContext();\n\tconst ws = viteServer.hot ?? viteServer.ws;\n\treturn {\n\t\tpost: (data) => ws?.send(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, SuperJSON.stringify(data)),\n\t\ton: (handler) => ws?.on(__DEVTOOLS_KIT_VITE_MESSAGING_EVENT_KEY, (event) => {\n\t\t\thandler(SuperJSON.parse(event));\n\t\t})\n\t};\n}\n\n//#endregion\n//#region src/messaging/index.ts\ntarget.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__ ??= [];\ntarget.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_RPC_SERVER__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ ??= null;\ntarget.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__ ??= null;\nfunction setRpcClientToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ = rpc;\n}\nfunction setRpcServerToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_RPC_SERVER__ = rpc;\n}\nfunction getRpcClient() {\n\treturn target.__VUE_DEVTOOLS_KIT_RPC_CLIENT__;\n}\nfunction getRpcServer() {\n\treturn target.__VUE_DEVTOOLS_KIT_RPC_SERVER__;\n}\nfunction setViteRpcClientToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ = rpc;\n}\nfunction setViteRpcServerToGlobal(rpc) {\n\ttarget.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ = rpc;\n}\nfunction getViteRpcClient() {\n\treturn target.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__;\n}\nfunction getViteRpcServer() {\n\treturn target.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__;\n}\nfunction getChannel(preset, host = \"client\") {\n\tconst channel = {\n\t\tiframe: {\n\t\t\tclient: createIframeClientChannel,\n\t\t\tserver: createIframeServerChannel\n\t\t}[host],\n\t\telectron: {\n\t\t\tclient: createElectronClientChannel,\n\t\t\tproxy: createElectronProxyChannel,\n\t\t\tserver: createElectronServerChannel\n\t\t}[host],\n\t\tvite: {\n\t\t\tclient: createViteClientChannel,\n\t\t\tserver: createViteServerChannel\n\t\t}[host],\n\t\tbroadcast: {\n\t\t\tclient: createBroadcastChannel,\n\t\t\tserver: createBroadcastChannel\n\t\t}[host],\n\t\textension: {\n\t\t\tclient: createExtensionClientChannel,\n\t\t\tproxy: createExtensionProxyChannel,\n\t\t\tserver: createExtensionServerChannel\n\t\t}[host]\n\t}[preset];\n\treturn channel();\n}\nfunction createRpcClient(functions, options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset) : _channel;\n\tconst rpc = createBirpc(functions, {\n\t\t..._options,\n\t\t...channel,\n\t\ttimeout: -1\n\t});\n\tif (preset === \"vite\") {\n\t\tsetViteRpcClientToGlobal(rpc);\n\t\treturn;\n\t}\n\tsetRpcClientToGlobal(rpc);\n\treturn rpc;\n}\nfunction createRpcServer(functions, options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset, \"server\") : _channel;\n\tconst rpcServer = getRpcServer();\n\tif (!rpcServer) {\n\t\tconst group = createBirpcGroup(functions, [channel], {\n\t\t\t..._options,\n\t\t\ttimeout: -1\n\t\t});\n\t\tif (preset === \"vite\") {\n\t\t\tsetViteRpcServerToGlobal(group);\n\t\t\treturn;\n\t\t}\n\t\tsetRpcServerToGlobal(group);\n\t} else rpcServer.updateChannels((channels) => {\n\t\tchannels.push(channel);\n\t});\n}\nfunction createRpcProxy(options = {}) {\n\tconst { channel: _channel, options: _options, preset } = options;\n\tconst channel = preset ? getChannel(preset, \"proxy\") : _channel;\n\treturn createBirpc({}, {\n\t\t..._options,\n\t\t...channel,\n\t\ttimeout: -1\n\t});\n}\n\n//#endregion\n//#region src/core/component/state/custom.ts\nfunction getFunctionDetails(func) {\n\tlet string = \"\";\n\tlet matches = null;\n\ttry {\n\t\tstring = Function.prototype.toString.call(func);\n\t\tmatches = String.prototype.match.call(string, /\\([\\s\\S]*?\\)/);\n\t} catch (e) {}\n\tconst match = matches && matches[0];\n\tconst args = typeof match === \"string\" ? match : \"(?)\";\n\treturn { _custom: {\n\t\ttype: \"function\",\n\t\tdisplayText: `<span style=\"opacity:.8;margin-right:5px;\">function</span> <span style=\"white-space:nowrap;\">${escape(typeof func.name === \"string\" ? func.name : \"\")}${args}</span>`,\n\t\ttooltipText: string.trim() ? `<pre>${string}</pre>` : null\n\t} };\n}\nfunction getBigIntDetails(val) {\n\tconst stringifiedBigInt = BigInt.prototype.toString.call(val);\n\treturn { _custom: {\n\t\ttype: \"bigint\",\n\t\tdisplayText: `BigInt(${stringifiedBigInt})`,\n\t\tvalue: stringifiedBigInt\n\t} };\n}\nfunction getDateDetails(val) {\n\tconst date = new Date(val.getTime());\n\tdate.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n\treturn { _custom: {\n\t\ttype: \"date\",\n\t\tdisplayText: Date.prototype.toString.call(val),\n\t\tvalue: date.toISOString().slice(0, -1)\n\t} };\n}\nfunction getMapDetails(val) {\n\treturn { _custom: {\n\t\ttype: \"map\",\n\t\tdisplayText: \"Map\",\n\t\tvalue: Object.fromEntries(val),\n\t\treadOnly: true,\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getSetDetails(val) {\n\tconst list = Array.from(val);\n\treturn { _custom: {\n\t\ttype: \"set\",\n\t\tdisplayText: `Set[${list.length}]`,\n\t\tvalue: list,\n\t\treadOnly: true\n\t} };\n}\nfunction getCaughtGetters(store) {\n\tconst getters = {};\n\tconst origGetters = store.getters || {};\n\tconst keys = Object.keys(origGetters);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tObject.defineProperty(getters, key, {\n\t\t\tenumerable: true,\n\t\t\tget: () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn origGetters[key];\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn getters;\n}\nfunction reduceStateList(list) {\n\tif (!list.length) return void 0;\n\treturn list.reduce((map, item) => {\n\t\tconst key = item.type || \"data\";\n\t\tconst obj = map[key] = map[key] || {};\n\t\tobj[item.key] = item.value;\n\t\treturn map;\n\t}, {});\n}\nfunction namedNodeMapToObject(map) {\n\tconst result = {};\n\tconst l = map.length;\n\tfor (let i = 0; i < l; i++) {\n\t\tconst node = map.item(i);\n\t\tresult[node.name] = node.value;\n\t}\n\treturn result;\n}\nfunction getStoreDetails(store) {\n\treturn { _custom: {\n\t\ttype: \"store\",\n\t\tdisplayText: \"Store\",\n\t\tvalue: {\n\t\t\tstate: store.state,\n\t\t\tgetters: getCaughtGetters(store)\n\t\t},\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getRouterDetails(router) {\n\treturn { _custom: {\n\t\ttype: \"router\",\n\t\tdisplayText: \"VueRouter\",\n\t\tvalue: {\n\t\t\toptions: router.options,\n\t\t\tcurrentRoute: router.currentRoute\n\t\t},\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getInstanceDetails(instance) {\n\tif (instance._) instance = instance._;\n\tconst state = processInstanceState(instance);\n\treturn { _custom: {\n\t\ttype: \"component\",\n\t\tid: instance.__VUE_DEVTOOLS_NEXT_UID__,\n\t\tdisplayText: getInstanceName(instance),\n\t\ttooltipText: \"Component instance\",\n\t\tvalue: reduceStateList(state),\n\t\tfields: { abstract: true }\n\t} };\n}\nfunction getComponentDefinitionDetails(definition) {\n\tlet display = getComponentName(definition);\n\tif (display) {\n\t\tif (definition.name && definition.__file) display += ` <span>(${definition.__file})</span>`;\n\t} else display = \"<i>Unknown Component</i>\";\n\treturn { _custom: {\n\t\ttype: \"component-definition\",\n\t\tdisplayText: display,\n\t\ttooltipText: \"Component definition\",\n\t\t...definition.__file ? { file: definition.__file } : {}\n\t} };\n}\nfunction getHTMLElementDetails(value) {\n\ttry {\n\t\treturn { _custom: {\n\t\t\ttype: \"HTMLElement\",\n\t\t\tdisplayText: `<span class=\"opacity-30\">&lt;</span><span class=\"text-blue-500\">${value.tagName.toLowerCase()}</span><span class=\"opacity-30\">&gt;</span>`,\n\t\t\tvalue: namedNodeMapToObject(value.attributes)\n\t\t} };\n\t} catch (e) {\n\t\treturn { _custom: {\n\t\t\ttype: \"HTMLElement\",\n\t\t\tdisplayText: `<span class=\"text-blue-500\">${String(value)}</span>`\n\t\t} };\n\t}\n}\n/**\n* - ObjectRefImpl, toRef({ foo: 'foo' }, 'foo'), `_value` is the actual value, (since 3.5.0)\n* - GetterRefImpl, toRef(() => state.foo), `_value` is the actual value, (since 3.5.0)\n* - RefImpl, ref('foo') / computed(() => 'foo'), `_value` is the actual value\n*/\nfunction tryGetRefValue(ref) {\n\tif (ensurePropertyExists(ref, \"_value\", true)) return ref._value;\n\tif (ensurePropertyExists(ref, \"value\", true)) return ref.value;\n}\nfunction getObjectDetails(object) {\n\tconst info = getSetupStateType(object);\n\tif (info.ref || info.computed || info.reactive) {\n\t\tconst stateTypeName = info.computed ? \"Computed\" : info.ref ? \"Ref\" : info.reactive ? \"Reactive\" : null;\n\t\tconst value = toRaw(info.reactive ? object : tryGetRefValue(object));\n\t\tconst raw = ensurePropertyExists(object, \"effect\") ? object.effect?.raw?.toString() || object.effect?.fn?.toString() : null;\n\t\treturn { _custom: {\n\t\t\ttype: stateTypeName?.toLowerCase(),\n\t\t\tstateTypeName,\n\t\t\tvalue,\n\t\t\t...raw ? { tooltipText: `<span class=\"font-mono\">${raw}</span>` } : {}\n\t\t} };\n\t}\n\tif (ensurePropertyExists(object, \"__asyncLoader\") && typeof object.__asyncLoader === \"function\") return { _custom: {\n\t\ttype: \"component-definition\",\n\t\tdisplay: \"Async component definition\"\n\t} };\n}\n\n//#endregion\n//#region src/core/component/state/replacer.ts\nfunction stringifyReplacer(key, _value, depth, seenInstance) {\n\tif (key === \"compilerOptions\") return;\n\tconst val = this[key];\n\tconst type = typeof val;\n\tif (Array.isArray(val)) {\n\t\tconst l = val.length;\n\t\tif (l > MAX_ARRAY_SIZE) return {\n\t\t\t_isArray: true,\n\t\t\tlength: l,\n\t\t\titems: val.slice(0, MAX_ARRAY_SIZE)\n\t\t};\n\t\treturn val;\n\t} else if (typeof val === \"string\") if (val.length > MAX_STRING_SIZE) return `${val.substring(0, MAX_STRING_SIZE)}... (${val.length} total length)`;\n\telse return val;\n\telse if (type === \"undefined\") return UNDEFINED;\n\telse if (val === Number.POSITIVE_INFINITY) return INFINITY;\n\telse if (val === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n\telse if (typeof val === \"function\") return getFunctionDetails(val);\n\telse if (type === \"symbol\") return `[native Symbol ${Symbol.prototype.toString.call(val)}]`;\n\telse if (typeof val === \"bigint\") return getBigIntDetails(val);\n\telse if (val !== null && typeof val === \"object\") {\n\t\tconst proto = Object.prototype.toString.call(val);\n\t\tif (proto === \"[object Map]\") return getMapDetails(val);\n\t\telse if (proto === \"[object Set]\") return getSetDetails(val);\n\t\telse if (proto === \"[object RegExp]\") return `[native RegExp ${RegExp.prototype.toString.call(val)}]`;\n\t\telse if (proto === \"[object Date]\") return getDateDetails(val);\n\t\telse if (proto === \"[object Error]\") return `[native Error ${val.message}<>${val.stack}]`;\n\t\telse if (ensurePropertyExists(val, \"state\", true) && ensurePropertyExists(val, \"_vm\", true)) return getStoreDetails(val);\n\t\telse if (val.constructor && val.constructor.name === \"VueRouter\") return getRouterDetails(val);\n\t\telse if (isVueInstance(val)) {\n\t\t\tconst componentVal = getInstanceDetails(val);\n\t\t\tconst parentInstanceDepth = seenInstance?.get(val);\n\t\t\tif (parentInstanceDepth && parentInstanceDepth < depth) return `[[CircularRef]] <${componentVal._custom.displayText}>`;\n\t\t\tseenInstance?.set(val, depth);\n\t\t\treturn componentVal;\n\t\t} else if (ensurePropertyExists(val, \"render\", true) && typeof val.render === \"function\") return getComponentDefinitionDetails(val);\n\t\telse if (val.constructor && val.constructor.name === \"VNode\") return `[native VNode <${val.tag}>]`;\n\t\telse if (typeof HTMLElement !== \"undefined\" && val instanceof HTMLElement) return getHTMLElementDetails(val);\n\t\telse if (val.constructor?.name === \"Store\" && \"_wrappedGetters\" in val) return \"[object Store]\";\n\t\telse if (ensurePropertyExists(val, \"currentRoute\", true)) return \"[object Router]\";\n\t\tconst customDetails = getObjectDetails(val);\n\t\tif (customDetails != null) return customDetails;\n\t} else if (Number.isNaN(val)) return NAN;\n\treturn sanitize(val);\n}\n\n//#endregion\n//#region src/shared/transfer.ts\nconst MAX_SERIALIZED_SIZE = 2 * 1024 * 1024;\nfunction isObject(_data, proto) {\n\treturn proto === \"[object Object]\";\n}\nfunction isArray(_data, proto) {\n\treturn proto === \"[object Array]\";\n}\nfunction isVueReactiveLinkNode(node) {\n\tconst constructorName = node?.constructor?.name;\n\treturn constructorName === \"Dep\" && \"activeLink\" in node || constructorName === \"Link\" && \"dep\" in node;\n}\n/**\n* This function is used to serialize object with handling circular references.\n*\n* ```ts\n* const obj = { a: 1, b: { c: 2 }, d: obj }\n* const result = stringifyCircularAutoChunks(obj) // call `encode` inside\n* console.log(result) // [{\"a\":1,\"b\":2,\"d\":0},1,{\"c\":4},2]\n* ```\n*\n* Each object is stored in a list and the index is used to reference the object.\n* With seen map, we can check if the object is already stored in the list to avoid circular references.\n*\n* Note: here we have a special case for Vue instance.\n* We check if a vue instance includes itself in its properties and skip it\n* by using `seenVueInstance` and `depth` to avoid infinite loop.\n*/\nfunction encode(data, replacer, list, seen, depth = 0, seenVueInstance = /* @__PURE__ */ new Map()) {\n\tlet stored;\n\tlet key;\n\tlet value;\n\tlet i;\n\tlet l;\n\tconst seenIndex = seen.get(data);\n\tif (seenIndex != null) return seenIndex;\n\tconst index = list.length;\n\tconst proto = Object.prototype.toString.call(data);\n\tif (isObject(data, proto)) {\n\t\tif (isVueReactiveLinkNode(data)) return index;\n\t\tstored = {};\n\t\tseen.set(data, index);\n\t\tlist.push(stored);\n\t\tconst keys = Object.keys(data);\n\t\tfor (i = 0, l = keys.length; i < l; i++) {\n\t\t\tkey = keys[i];\n\t\t\tif (key === \"compilerOptions\") return index;\n\t\t\tvalue = data[key];\n\t\t\tconst isVm = value != null && isObject(value, Object.prototype.toString.call(data)) && isVueInstance(value);\n\t\t\ttry {\n\t\t\t\tif (replacer) value = replacer.call(data, key, value, depth, seenVueInstance);\n\t\t\t} catch (e) {\n\t\t\t\tvalue = e;\n\t\t\t}\n\t\t\tstored[key] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n\t\t\tif (isVm) seenVueInstance.delete(value);\n\t\t}\n\t} else if (isArray(data, proto)) {\n\t\tstored = [];\n\t\tseen.set(data, index);\n\t\tlist.push(stored);\n\t\tfor (i = 0, l = data.length; i < l; i++) {\n\t\t\ttry {\n\t\t\t\tvalue = data[i];\n\t\t\t\tif (replacer) value = replacer.call(data, i, value, depth, seenVueInstance);\n\t\t\t} catch (e) {\n\t\t\t\tvalue = e;\n\t\t\t}\n\t\t\tstored[i] = encode(value, replacer, list, seen, depth + 1, seenVueInstance);\n\t\t}\n\t} else list.push(data);\n\treturn index;\n}\nfunction decode(list, reviver$1 = null) {\n\tlet i = list.length;\n\tlet j, k, data, key, value, proto;\n\twhile (i--) {\n\t\tdata = list[i];\n\t\tproto = Object.prototype.toString.call(data);\n\t\tif (proto === \"[object Object]\") {\n\t\t\tconst keys = Object.keys(data);\n\t\t\tfor (j = 0, k = keys.length; j < k; j++) {\n\t\t\t\tkey = keys[j];\n\t\t\t\tvalue = list[data[key]];\n\t\t\t\tif (reviver$1) value = reviver$1.call(data, key, value);\n\t\t\t\tdata[key] = value;\n\t\t\t}\n\t\t} else if (proto === \"[object Array]\") for (j = 0, k = data.length; j < k; j++) {\n\t\t\tvalue = list[data[j]];\n\t\t\tif (reviver$1) value = reviver$1.call(data, j, value);\n\t\t\tdata[j] = value;\n\t\t}\n\t}\n}\nfunction stringifyCircularAutoChunks(data, replacer = null, space = null) {\n\tlet result;\n\ttry {\n\t\tresult = arguments.length === 1 ? JSON.stringify(data) : JSON.stringify(data, (k, v) => replacer?.(k, v)?.call(this), space);\n\t} catch (e) {\n\t\tresult = stringifyStrictCircularAutoChunks(data, replacer, space);\n\t}\n\tif (result.length > MAX_SERIALIZED_SIZE) {\n\t\tconst chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE);\n\t\tconst chunks = [];\n\t\tfor (let i = 0; i < chunkCount; i++) chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE));\n\t\treturn chunks;\n\t}\n\treturn result;\n}\nfunction stringifyStrictCircularAutoChunks(data, replacer = null, space = null) {\n\tconst list = [];\n\tencode(data, replacer, list, /* @__PURE__ */ new Map());\n\treturn space ? ` ${JSON.stringify(list, null, space)}` : ` ${JSON.stringify(list)}`;\n}\nfunction parseCircularAutoChunks(data, reviver$1 = null) {\n\tif (Array.isArray(data)) data = data.join(\"\");\n\tif (!/^\\s/.test(data)) return arguments.length === 1 ? JSON.parse(data) : JSON.parse(data, reviver$1);\n\telse {\n\t\tconst list = JSON.parse(data);\n\t\tdecode(list, reviver$1);\n\t\treturn list[0];\n\t}\n}\n\n//#endregion\n//#region src/shared/util.ts\nfunction stringify(data) {\n\treturn stringifyCircularAutoChunks(data, stringifyReplacer);\n}\nfunction parse(data, revive$1 = false) {\n\tif (data == void 0) return {};\n\treturn revive$1 ? parseCircularAutoChunks(data, reviver) : parseCircularAutoChunks(data);\n}\n\n//#endregion\n//#region src/index.ts\nconst devtools = {\n\thook,\n\tinit: () => {\n\t\tinitDevTools();\n\t},\n\tget ctx() {\n\t\treturn devtoolsContext;\n\t},\n\tget api() {\n\t\treturn devtoolsContext.api;\n\t}\n};\n\n//#endregion\nexport { DevToolsContextHookKeys, DevToolsMessagingHookKeys, DevToolsV6PluginAPIHookKeys, INFINITY, NAN, NEGATIVE_INFINITY, ROUTER_INFO_KEY, ROUTER_KEY, UNDEFINED, activeAppRecord, addCustomCommand, addCustomTab, addDevToolsAppRecord, addDevToolsPluginToBuffer, addInspector, callConnectedUpdatedHook, callDevToolsPluginSetupFn, callInspectorUpdatedHook, callStateUpdatedHook, createComponentsDevToolsPlugin, createDevToolsApi, createDevToolsCtxHooks, createRpcClient, createRpcProxy, createRpcServer, devtools, devtoolsAppRecords, devtoolsContext, devtoolsInspector, devtoolsPluginBuffer, devtoolsRouter, devtoolsRouterInfo, devtoolsState, escape, formatInspectorStateValue, getActiveInspectors, getDevToolsEnv, getExtensionClientContext, getInspector, getInspectorActions, getInspectorInfo, getInspectorNodeActions, getInspectorStateValueType, getRaw, getRpcClient, getRpcServer, getViteRpcClient, getViteRpcServer, initDevTools, isPlainObject, onDevToolsClientConnected, onDevToolsConnected, parse, registerDevToolsPlugin, removeCustomCommand, removeDevToolsAppRecord, removeRegisteredPluginApp, resetDevToolsState, setActiveAppRecord, setActiveAppRecordId, setDevToolsEnv, setElectronClientContext, setElectronProxyContext, setElectronServerContext, setExtensionClientContext, setIframeServerContext, setOpenInEditorBaseUrl, setRpcServerToGlobal, setViteClientContext, setViteRpcClientToGlobal, setViteRpcServerToGlobal, setViteServerContext, setupDevToolsPlugin, stringify, toEdit, toSubmit, toggleClientConnected, toggleComponentInspectorEnabled, toggleHighPerfMode, updateDevToolsClientDetected, updateDevToolsState, updateTimelineLayersState };","import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { watch } from 'vue'\nimport type { App } from 'vue'\nimport type { Pinia } from 'pinia'\nimport { useQueryCache } from '../query-store'\nimport type { AsyncStatus, DataStateStatus } from '../data-state'\n\nconst QUERY_INSPECTOR_ID = 'pinia-colada-queries'\nconst ID_SEPARATOR = '\\0'\n\nfunction debounce(fn: () => void, delay: number) {\n let timeout: ReturnType<typeof setTimeout>\n return () => {\n clearTimeout(timeout)\n timeout = setTimeout(fn, delay)\n }\n}\n\nexport function addDevtools(app: App, pinia: Pinia) {\n const queryCache = useQueryCache(pinia)\n\n setupDevtoolsPlugin(\n {\n id: 'dev.esm.pinia-colada',\n app,\n label: 'Pinia Colada',\n packageName: 'pinia-colada',\n homepage: 'https://pinia-colada.esm.dev/',\n logo: 'https://pinia-colada.esm.dev/logo.svg',\n componentStateTypes: [],\n },\n (api) => {\n const updateQueryInspectorTree = debounce(() => {\n api.sendInspectorTree(QUERY_INSPECTOR_ID)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n }, 100)\n\n api.addInspector({\n id: QUERY_INSPECTOR_ID,\n label: 'Pinia Queries',\n icon: 'storage',\n noSelectionText: 'Select a query entry to inspect it',\n treeFilterPlaceholder: 'Filter query entries',\n stateFilterPlaceholder: 'Find within the query entry',\n actions: [\n {\n icon: 'refresh',\n action: updateQueryInspectorTree,\n tooltip: 'Sync',\n },\n ],\n })\n\n let stopWatcher = () => {}\n\n api.on.getInspectorState((payload) => {\n if (payload.app !== app) return\n if (payload.inspectorId === QUERY_INSPECTOR_ID) {\n const entry = queryCache.getEntries({\n key: payload.nodeId.split(ID_SEPARATOR),\n exact: true,\n })[0]\n if (!entry) {\n payload.state = {\n Error: [\n {\n key: 'error',\n value: new Error(`Query entry ${payload.nodeId} not found`),\n editable: false,\n },\n ],\n }\n return\n }\n\n stopWatcher()\n stopWatcher = watch(\n () => [entry.state.value, entry.asyncStatus.value],\n () => {\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n },\n )\n\n const state = entry.state.value\n\n payload.state = {\n state: [\n { key: 'data', value: state.data, editable: true },\n { key: 'error', value: state.error, editable: true },\n { key: 'status', value: state.status, editable: true },\n { key: 'asyncStatus', value: entry.asyncStatus.value, editable: true },\n ],\n entry: [\n { key: 'key', value: entry.key, editable: false },\n { key: 'options', value: entry.options, editable: true },\n ],\n }\n }\n })\n\n api.on.editInspectorState((payload) => {\n if (payload.app !== app) return\n if (payload.inspectorId === QUERY_INSPECTOR_ID) {\n const entry = queryCache.getEntries({\n key: payload.nodeId.split(ID_SEPARATOR),\n exact: true,\n })[0]\n if (!entry) return\n const path = payload.path.slice()\n payload.set(entry, path, payload.state.value)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n }\n })\n\n const QUERY_FILTER_RE = /\\b(active|inactive|stale|fresh|exact|loading|idle)\\b/gi\n\n api.on.getInspectorTree((payload) => {\n if (payload.app !== app || payload.inspectorId !== QUERY_INSPECTOR_ID) return\n\n const filters = payload.filter.match(QUERY_FILTER_RE)\n // strip the filters from the query\n const filter = (\n filters ? payload.filter.replace(QUERY_FILTER_RE, '') : payload.filter\n ).trim()\n\n const active = filters?.includes('active')\n ? true\n : filters?.includes('inactive')\n ? false\n : undefined\n const stale = filters?.includes('stale')\n ? true\n : filters?.includes('fresh')\n ? false\n : undefined\n const asyncStatus = filters?.includes('loading')\n ? 'loading'\n : filters?.includes('idle')\n ? 'idle'\n : undefined\n\n payload.rootNodes = queryCache\n .getEntries({\n active,\n stale,\n // TODO: if there is an exact match, we should put it at the top\n exact: false, // we also filter many\n predicate(entry) {\n // filter out by asyncStatus\n if (asyncStatus && entry.asyncStatus.value !== asyncStatus) return false\n if (filter) {\n // TODO: fuzzy match between entry.key.join('/') and the filter\n return entry.key.some((key) => String(key).includes(filter))\n }\n return true\n },\n })\n .map((entry) => {\n const id = entry.key.join(ID_SEPARATOR)\n const label = entry.key.join('/')\n const asyncStatus = entry.asyncStatus.value\n const state = entry.state.value\n\n const tags: InspectorNodeTag[] = [\n ASYNC_STATUS_TAG[asyncStatus],\n STATUS_TAG[state.status],\n // useful for testing colors\n // ASYNC_STATUS_TAG.idle,\n // ASYNC_STATUS_TAG.fetching,\n // STATUS_TAG.pending,\n // STATUS_TAG.success,\n // STATUS_TAG.error,\n ]\n if (!entry.active) {\n tags.push({\n label: 'inactive',\n textColor: 0,\n backgroundColor: 0xaa_aa_aa,\n tooltip: 'The query is not being used anywhere',\n })\n }\n return {\n id,\n label,\n name: label,\n tags,\n }\n })\n })\n\n queryCache.$onAction(({ name, after, onError }) => {\n if (\n name === 'invalidate' || // includes cancel\n name === 'fetch' || // includes refresh\n name === 'setEntryState' || // includes set data\n name === 'remove' ||\n name === 'untrack' ||\n name === 'track' ||\n name === 'ensure' // includes create\n ) {\n updateQueryInspectorTree()\n after(updateQueryInspectorTree)\n onError(updateQueryInspectorTree)\n }\n })\n\n // update the devtools too\n api.notifyComponentUpdate()\n api.sendInspectorTree(QUERY_INSPECTOR_ID)\n api.sendInspectorState(QUERY_INSPECTOR_ID)\n },\n )\n\n // TODO: custom tab?\n\n // addCustomTab({\n // name: 'pinia-colada',\n // title: 'Pinia Colada',\n // icon: 'https://pinia-colada.esm.dev/logo.svg',\n // view: {\n // type: 'iframe',\n // src: '//localhost:',\n // persistent: true,\n // // type: 'vnode',\n // // sfc: DevtoolsPanel,\n // // type: 'vnode',\n // // vnode: h(DevtoolsPane),\n // // vnode: h('p', ['hello world']),\n // // vnode: createVNode(DevtoolsPane),\n // },\n // category: 'modules',\n // })\n\n // window.addEventListener('message', (event) => {\n // const data = event.data\n // if (data != null && typeof data === 'object' && data.id === 'pinia-colada-devtools') {\n // console.log('message', event)\n // }\n // })\n}\n\ninterface InspectorNodeTag {\n label: string\n textColor: number\n backgroundColor: number\n tooltip?: string\n}\n\n/**\n * Tags for the different states of a query\n */\nconst STATUS_TAG: Record<DataStateStatus, InspectorNodeTag> = {\n pending: {\n label: 'pending',\n textColor: 0,\n backgroundColor: 0xff_9d_23,\n tooltip: `The query hasn't resolved yet`,\n },\n success: {\n label: 'success',\n textColor: 0,\n backgroundColor: 0x16_c4_7f,\n tooltip: 'The query resolved successfully',\n },\n error: {\n label: 'error',\n textColor: 0,\n backgroundColor: 0xf9_38_27,\n tooltip: 'The query rejected with an error',\n },\n}\n\n/**\n * Tags for the different states of a query\n */\nconst ASYNC_STATUS_TAG: Record<AsyncStatus, InspectorNodeTag> = {\n idle: {\n label: 'idle',\n textColor: 0,\n backgroundColor: 0xaa_aa_aa,\n tooltip: 'The query is not fetching',\n },\n loading: {\n label: 'fetching',\n textColor: 0xff_ff_ff,\n backgroundColor: 0x57_8f_ca,\n tooltip: 'The query is currently fetching',\n },\n}\n","import type { App, Plugin } from 'vue'\nimport type { Pinia } from 'pinia'\nimport type { UseQueryOptionsGlobal } from './query-options'\nimport { USE_QUERY_DEFAULTS, USE_QUERY_OPTIONS_KEY } from './query-options'\nimport { useQueryCache } from './query-store'\nimport type { PiniaColadaPlugin } from './plugins'\nimport { addDevtools } from './devtools/plugin'\nimport { USE_MUTATION_DEFAULTS, USE_MUTATION_OPTIONS_KEY } from './mutation-options'\nimport type { UseMutationOptionsGlobal } from './mutation-options'\n\n/**\n * Options for the Pinia Colada plugin.\n */\nexport interface PiniaColadaOptions {\n /**\n * Pinia instance to use. This is only needed if installing before the Pinia plugin.\n */\n pinia?: Pinia\n\n /**\n * Pinia Colada plugins to install.\n */\n plugins?: PiniaColadaPlugin[]\n\n /**\n * Global options for queries. These will apply to all `useQuery()`, `defineQuery()`, etc.\n */\n queryOptions?: UseQueryOptionsGlobal\n\n /**\n * Global options for mutations. These will apply to all `useMutation()`, `defineMutation()`, etc.\n */\n mutationOptions?: UseMutationOptionsGlobal\n}\n\n/**\n * Plugin that installs the Query and Mutation plugins alongside some extra plugins.\n *\n * @see {@link QueryPlugin} to only install the Query plugin.\n *\n * @param app - Vue App\n * @param options - Pinia Colada options\n */\nexport const PiniaColada: Plugin<[options?: PiniaColadaOptions]> = (\n app: App,\n options: PiniaColadaOptions = {},\n): void => {\n const {\n pinia = app.config.globalProperties.$pinia,\n plugins,\n queryOptions,\n mutationOptions,\n } = options\n\n app.provide(USE_QUERY_OPTIONS_KEY, {\n ...USE_QUERY_DEFAULTS,\n ...queryOptions,\n })\n\n app.provide(USE_MUTATION_OPTIONS_KEY, {\n ...USE_MUTATION_DEFAULTS,\n ...mutationOptions,\n })\n\n if (process.env.NODE_ENV !== 'production' && !pinia) {\n throw new Error(\n '[@pinia/colada] root pinia plugin not detected. Make sure you install pinia before installing the \"PiniaColada\" plugin or to manually pass the pinia instance.',\n )\n }\n\n if (typeof document !== 'undefined' && process.env.NODE_ENV === 'development') {\n addDevtools(app, pinia)\n }\n\n // install plugins\n const queryCache = useQueryCache(pinia)\n plugins?.forEach((plugin) =>\n plugin({\n scope: queryCache._s,\n queryCache,\n pinia,\n }),\n )\n}\n","import type { UseQueryEntry } from '../query-store'\nimport type { PiniaColadaPlugin } from '.'\n\n/**\n * Options for {@link PiniaColadaQueryHooksPlugin}.\n */\nexport interface PiniaColadaQueryHooksPluginOptions {\n /**\n * Global handler for when a query is successful.\n *\n * @param data - data returned by the query\n */\n onSuccess?: <TData = unknown>(data: TData, entry: UseQueryEntry<TData, unknown>) => unknown\n\n /**\n * Global handler for when a query is settled (either successfully or with an error). Will await for the `onSuccess`\n * or `onError` handlers to resolve if they return a promise.\n *\n * @param data - data returned by the query if any\n * @param error - error thrown if any\n */\n onSettled?: <TData = unknown, TError = unknown>(\n data: TData | undefined,\n error: TError | null,\n entry: UseQueryEntry<TData, TError>,\n ) => unknown\n\n /**\n * Global error handler for all queries.\n *\n * @param error - error thrown\n */\n onError?: <TError = unknown>(error: TError, entry: UseQueryEntry<unknown, TError>) => unknown\n}\n\n/**\n * Allows to add global hooks to all queries:\n * - `onSuccess`: called when a query is successful\n * - `onError`: called when a query throws an error\n * - `onSettled`: called when a query is settled (either successfully or with an error)\n * @param options - Pinia Colada Query Hooks plugin options\n *\n * @example\n * ```ts\n * import { PiniaColada, PiniaColadaQueryHooksPlugin } from '@pinia/colada'\n *\n * const app = createApp(App)\n * // app setup with other plugins\n * app.use(PiniaColada, {\n * plugins: [\n * PiniaColadaQueryHooksPlugin({\n * onError(error, entry) {\n * // ...\n * },\n * }),\n * ],\n * })\n * ```\n */\nexport function PiniaColadaQueryHooksPlugin(\n options: PiniaColadaQueryHooksPluginOptions,\n): PiniaColadaPlugin {\n return ({ queryCache }) => {\n queryCache.$onAction(({ name, after, onError, args }) => {\n if (name === 'fetch') {\n const [entry] = args\n after(async ({ data }) => {\n await options.onSuccess?.(data, entry)\n options.onSettled?.(data, null, entry)\n })\n\n onError(async (error) => {\n await options.onError?.(error, entry)\n options.onSettled?.(undefined, error, entry)\n })\n }\n })\n }\n}\n"],"x_google_ignoreList":[13,14,15,16],"mappings":"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L,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,QAAQ;GACR,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,OAAO;GACP,MAAM;GACN,KAAK;GACL,KAAK;GACL;;;;;;EAMD,IAAI,qBAAqB,CAAC,KAAK,IAAI;;;;;EAKnC,IAAI,aAAa;GAChB,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACP,MAAM;GACN,OAAO;GACP,KAAK;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,SAAS;GACT,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,MAAM;GACN,KAAK;GACL,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP;;;;;EAKD,IAAI,cAAc;GACjB,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD;;;;;;EAMD,IAAI,YAAY;GACf,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM,EAAE;GACR,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL;GACD,MAAM;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,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"}