@delta-comic/model 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -9
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/dist/lib/model/content.d.ts +0 -11
- package/dist/pack.tgz +0 -0
- package/package.json +4 -5
package/dist/index.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.cjs","names":["isTypedArray","isString"],"sources":["../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isError.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isLength.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isString.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isString.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs","../../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs","../lib/struct/promise.ts","../lib/struct/store.ts","../../request/dist/index.js","../../../node_modules/.pnpm/@vueuse+shared@14.2.1_vue@3.5.28_typescript@5.8.2_/node_modules/@vueuse/shared/dist/index.js","../lib/struct/stream.ts","../lib/struct/struct.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../lib/model/comment.ts","../lib/model/ep.ts","../lib/model/resource.ts","../lib/model/image.ts","../lib/model/item.ts","../lib/model/content.ts","../lib/model/download.ts","../lib/model/user.ts","../lib/model/index.ts"],"sourcesContent":["function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","function isError(value) {\n return value instanceof Error;\n}\n\nexport { isError };\n","function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n","function isString(value) {\n return typeof value === 'string';\n}\n\nexport { isString };\n","import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","function isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\nexport { isString };\n","function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n","import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n","import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import { useGlobalVar } from '@delta-comic/utils'\nimport { isError } from 'es-toolkit'\nimport { isEmpty } from 'es-toolkit/compat'\nimport mitt from 'mitt'\nimport { markRaw, shallowRef, type Raw } from 'vue'\n\ntype PromiseContentEmits<TR> = { success: TR; error: any; finial: void }\n/**\n * 扩展内容的`Promise`,可视为普通`Promise`使用\n */\nexport class PromiseContent<\n T,\n TPF extends any = T,\n TEmits extends PromiseContentEmits<TPF> = PromiseContentEmits<TPF>\n> implements PromiseLike<T> {\n [Symbol.toStringTag] = 'PromiseContent'\n private static _this\n static {\n this._this = useGlobalVar(this, 'data/PromiseContent')\n }\n public static isPromiseContent(value: unknown): value is PromiseContent<any> {\n return value instanceof this._this\n }\n public static fromPromise<T, TP = T>(\n promise: Promise<T>,\n processor: (val: T) => TP = v => <any>v\n ): RPromiseContent<T, TP> {\n const v = new this._this<T, TP>(promise, processor)\n return markRaw(v)\n }\n /**\n * 使用`PromiseContent.fromPromise`或`PromiseContent.fromAsyncFunction`代替`new PromiseContent`\n */\n private constructor(\n private promise: Promise<T>,\n private processor: (v: T) => TPF = v => <any>v\n ) {\n void this.loadPromise(promise)\n }\n public async loadPromise(promise: Promise<T>) {\n this.data.value = undefined\n this.isLoading.value = true\n this.isError.value = false\n this.errorCause.value = undefined\n this.isEmpty.value = true\n try {\n const v = await promise\n this.data.value = this.processor(v)\n this.isLoading.value = false\n this.isError.value = false\n this.isEmpty.value = isEmpty(v)\n this.emitter.emit('success', this.data.value)\n } catch (err) {\n this.data.value = undefined\n this.isError.value = true\n this.errorCause.value = isError(err) ? err : new Error(String(err))\n console.error('Non-throw Error [PromiseContent]', err)\n this.emitter.emit('error', err)\n }\n this.emitter.emit('finial', undefined)\n }\n private emitter = mitt<TEmits>()\n\n public onError(processor: (err: TEmits['error']) => any) {\n this.emitter.on('error', processor)\n return () => this.emitter.off('error', processor)\n }\n public onSuccess(processor: (err: TEmits['success']) => any) {\n this.emitter.on('success', processor)\n return () => this.emitter.off('success', processor)\n }\n public onFinal(processor: (err: TEmits['finial']) => any) {\n this.emitter.on('finial', processor)\n return () => this.emitter.off('finial', processor)\n }\n\n /**\n * 对`this.data.value`做出处理,多次调用仅最后一次生效\n */\n public setProcessor<TP>(processor: (val: T) => TP): RPromiseContent<T, TP> {\n return PromiseContent.fromPromise(this.promise, processor)\n }\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n ): Promise<T | TResult> {\n return this.promise.catch<TResult>(onrejected)\n }\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.promise.then<TResult1, TResult2>(onfulfilled, onrejected)\n }\n public finally(onfinally?: (() => void) | null): Promise<T> {\n return this.promise.finally(onfinally)\n }\n public data = shallowRef<TPF>()\n public isLoading = shallowRef(true)\n public isError = shallowRef(false)\n public errorCause = shallowRef<Error>()\n public isEmpty = shallowRef(true)\n public static fromAsyncFunction<T extends (...args: any[]) => Promise<any>>(asyncFunction: T) {\n return (...args: Parameters<T>): RPromiseContent<Awaited<ReturnType<T>>> =>\n this.fromPromise((() => asyncFunction(...args))())\n }\n public static resolve<T>(data: T) {\n const pc = this.fromPromise(Promise.resolve(data))\n pc.isLoading.value = false\n return pc\n }\n public static withResolvers<T>(isLoading = false): PromiseWithResolvers<T> {\n let withResolvers = Promise.withResolvers<T>()\n const content = new this._this<T>(withResolvers.promise)\n content.isLoading.value = isLoading\n return {\n content,\n reject: (reason?: any) => {\n withResolvers.reject(reason)\n },\n resolve: (value: T | PromiseLike<T>) => {\n withResolvers.resolve(value)\n },\n reset(isLoading = false) {\n withResolvers = Promise.withResolvers<T>()\n void content.loadPromise(withResolvers.promise)\n content.isLoading.value = isLoading\n }\n }\n }\n}\nexport type PromiseWithResolvers<T> = {\n content: RPromiseContent<T>\n reject: (reason?: any) => void\n resolve: (value: T | PromiseLike<T>) => void\n reset: (isLoading?: boolean) => void\n}\nexport type RPromiseContent<T, PTF = T> = Raw<PromiseContent<T, PTF>>","import { isString } from 'es-toolkit'\nimport { shallowReactive } from 'vue'\n\n/**\n * 比如有很多需要注明来自哪个插件的值都可以用\n */\nexport class SourcedValue<T extends [string, string]> {\n public toJSON(value: T | string) {\n if (isString(value)) return this.parse(value)\n return value\n }\n public parse(value: string) {\n const splited = value.split(this.separator)\n return <T>[splited[0], splited.slice(1).join(this.separator)]\n }\n public toString(value: T | string) {\n if (isString(value)) return value\n return this.stringify(value)\n }\n public stringify(value: T) {\n return value.join(this.separator)\n }\n constructor(public separator = ':') {}\n}\nexport type SourcedKeyType<T extends SourcedKeyMap<[string, string], any> | SourcedValue<any>> =\n T extends SourcedKeyMap<[string, string], any>\n ? Parameters<T['get']>[0]\n : Parameters<T['toJSON']>[0]\n/**\n * 相比较于普通的Map,这个元素的key操作可以是`TKey | string`\n * _但内部保存仍使用`SourcedValue.toString`作为key_\n */\nexport class SourcedKeyMap<TKey extends [string, string], TValue>\n extends SourcedValue<TKey>\n implements Map<string, TValue>\n{\n public static create<TKey extends [string, string], TValue>(separator = ':') {\n return shallowReactive(new this<TKey, TValue>(separator))\n }\n private constructor(separator = ':') {\n super(separator)\n }\n private store = shallowReactive(new Map<string, TValue>())\n public get size(): number {\n return this.store.size\n }\n public [Symbol.toStringTag] = 'SourcedKeyMap'\n public clear(): void {\n this.store.clear()\n }\n public delete(key: string | TKey): boolean {\n return this.store.delete(this.toString(key))\n }\n public forEach(\n callbackfn: (value: TValue, key: string, map: Map<string, TValue>) => void,\n thisArg?: any\n ): void {\n this.store.forEach((v, k) => {\n callbackfn.call(thisArg, v, k, this)\n })\n }\n public get(key: string | TKey): TValue | undefined {\n return this.store.get(this.toString(key))\n }\n public has(key: string | TKey): boolean {\n return this.store.has(this.toString(key))\n }\n public set(key: string | TKey, value: TValue): this {\n this.store.set(this.toString(key), value)\n return this\n }\n public entries() {\n return this.store.entries()\n }\n public keys() {\n return this.store.keys()\n }\n public values() {\n return this.store.values()\n }\n public [Symbol.iterator]() {\n return this.entries()\n }\n}","import axios, { isAxiosError, isCancel } from \"axios\";\nfunction mitt_default(e) {\n\treturn {\n\t\tall: e ||= /* @__PURE__ */ new Map(),\n\t\ton: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr ? r.push(n) : e.set(t, [n]);\n\t\t},\n\t\toff: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr && (n ? r.splice(r.indexOf(n) >>> 0, 1) : e.set(t, []));\n\t\t},\n\t\temit: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr && r.slice().map(function(e) {\n\t\t\t\te(n);\n\t\t\t}), (r = e.get(\"*\")) && r.slice().map(function(e) {\n\t\t\t\te(t, n);\n\t\t\t});\n\t\t}\n\t};\n}\nvar SmartAbortController = class {\n\t_controller = new AbortController();\n\tmitt = mitt_default();\n\tget signal() {\n\t\treturn this._controller.signal;\n\t}\n\tabort(e) {\n\t\tthis._controller.abort(e), this._controller = new AbortController(), this.mitt.emit(\"abort\");\n\t}\n\tonAbort(e) {\n\t\treturn this.mitt.on(\"abort\", e), () => this.mitt.off(\"abort\", e);\n\t}\n\tonAbortOnce(e) {\n\t\tlet t = async () => {\n\t\t\tawait e(), this.mitt.off(\"abort\", t);\n\t\t};\n\t\tthis.mitt.on(\"abort\", t);\n\t}\n}, AbortError = class extends Error {\n\tconstructor(e = \"The operation was aborted\") {\n\t\tsuper(e), this.name = \"AbortError\";\n\t}\n};\nfunction delay(e, { signal: t } = {}) {\n\treturn new Promise((n, r) => {\n\t\tlet i = () => {\n\t\t\tr(new AbortError());\n\t\t}, a = () => {\n\t\t\tclearTimeout(o), i();\n\t\t};\n\t\tif (t?.aborted) return i();\n\t\tlet o = setTimeout(() => {\n\t\t\tt?.removeEventListener(\"abort\", a), n();\n\t\t}, e);\n\t\tt?.addEventListener(\"abort\", a, { once: !0 });\n\t});\n}\nconst checkType = {\n\tisPost: (e) => /^post$/i.test(e.config.method ?? \"\"),\n\tisPut: (e) => /^put$/i.test(e.config.method ?? \"\"),\n\tisGet: (e) => /^get$/i.test(e.config.method ?? \"\")\n}, interceptors = {\n\tcheckIsAxiosError(e) {\n\t\treturn \"__isAxiosError\" in e ? e.__isAxiosError : e.__isAxiosError = !isCancel(e) && isAxiosError(e);\n\t},\n\tasync useUnreadableRetry(e, t = 0) {\n\t\ttry {\n\t\t\treturn (await e()).data;\n\t\t} catch (n) {\n\t\t\tif (n instanceof Error && n.message.includes(\"Illegal invocation\")) {\n\t\t\t\tif (t > 20) throw n;\n\t\t\t\treturn await this.useUnreadableRetry(e, t + 1);\n\t\t\t}\n\t\t\tthrow n;\n\t\t}\n\t},\n\tasync useForceRetry(e, t = 0) {\n\t\ttry {\n\t\t\treturn (await e()).data;\n\t\t} catch (n) {\n\t\t\tif (n instanceof Error) {\n\t\t\t\tif (t > 20) throw n;\n\t\t\t\treturn await this.useForceRetry(e, t + 1);\n\t\t\t}\n\t\t\tthrow n;\n\t\t}\n\t},\n\tcreateAutoRetry(e, t = 3) {\n\t\treturn async (n) => {\n\t\t\tif (!n.config || n.config.disretry || (n.config.__retryCount ?? 0) >= t) throw Promise.reject(n);\n\t\t\treturn n.config.__retryCount = (n.config.__retryCount ?? 0) + 1, await delay(500 * n.config.__retryCount), e(n.config);\n\t\t};\n\t},\n\tisClientError(e) {\n\t\tif (e?.response?.status?.toString().startsWith(\"4\")) throw Promise.reject(e);\n\t\treturn Promise.reject(e);\n\t},\n\tpassCorsError(e) {\n\t\tif (!this.checkIsAxiosError(e)) return Promise.reject(e);\n\t\tif (e.code === \"ERR_NETWORK\" && !e.response) throw Promise.reject(e);\n\t\treturn Promise.reject(e);\n\t}\n}, createAxios = (t, n = {}, r) => {\n\tlet i = axios.create(n);\n\treturn r?.(i), i.interceptors.request.use(async (e) => (e.baseURL ??= await t(), e)), n.noPassClientError || i.interceptors.response.use(void 0, interceptors.isClientError), i.interceptors.response.use(void 0, interceptors.createAutoRetry(i, 10)), {\n\t\tget: async (e, t = {}) => interceptors.useUnreadableRetry(() => i.get(e, t)),\n\t\tpost: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.post(e, t, n)),\n\t\tpostForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.postForm(e, t, n)),\n\t\tput: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.put(e, t, n)),\n\t\tputForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.putForm(e, t, n)),\n\t\tdelete: async (e, t = {}) => interceptors.useUnreadableRetry(() => i.delete(e, t)),\n\t\tpatch: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.patch(e, t, n)),\n\t\tpatchForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.patchForm(e, t, n))\n\t};\n};\nexport { SmartAbortController, checkType, createAxios, interceptors };\n\n//# sourceMappingURL=index.js.map","import { computed, customRef, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isRef, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowReadonly, shallowRef, toRef as toRef$1, toRefs as toRefs$1, toValue, unref, watch, watchEffect } from \"vue\";\n\n//#region computedEager/index.ts\n/**\n*\n* @deprecated This function will be removed in future version.\n*\n* Note: If you are using Vue 3.4+, you can straight use computed instead.\n* Because in Vue 3.4+, if computed new value does not change,\n* computed, effect, watch, watchEffect, render dependencies will not be triggered.\n* refer: https://github.com/vuejs/core/pull/5912\n*\n* @param fn effect function\n* @param options WatchOptionsBase\n* @returns readonly shallowRef\n*/\nfunction computedEager(fn, options) {\n\tvar _options$flush;\n\tconst result = shallowRef();\n\twatchEffect(() => {\n\t\tresult.value = fn();\n\t}, {\n\t\t...options,\n\t\tflush: (_options$flush = options === null || options === void 0 ? void 0 : options.flush) !== null && _options$flush !== void 0 ? _options$flush : \"sync\"\n\t});\n\treturn readonly(result);\n}\n/** @deprecated use `computedEager` instead */\nconst eagerComputed = computedEager;\n\n//#endregion\n//#region computedWithControl/index.ts\n/**\n* Explicitly define the deps of computed.\n*\n* @param source\n* @param fn\n*/\nfunction computedWithControl(source, fn, options = {}) {\n\tlet v = void 0;\n\tlet track;\n\tlet trigger;\n\tlet dirty = true;\n\tconst update = () => {\n\t\tdirty = true;\n\t\ttrigger();\n\t};\n\twatch(source, update, {\n\t\tflush: \"sync\",\n\t\t...options\n\t});\n\tconst get$1 = typeof fn === \"function\" ? fn : fn.get;\n\tconst set$1 = typeof fn === \"function\" ? void 0 : fn.set;\n\tconst result = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (dirty) {\n\t\t\t\t\tv = get$1(v);\n\t\t\t\t\tdirty = false;\n\t\t\t\t}\n\t\t\t\ttrack();\n\t\t\t\treturn v;\n\t\t\t},\n\t\t\tset(v$1) {\n\t\t\t\tset$1 === null || set$1 === void 0 || set$1(v$1);\n\t\t\t}\n\t\t};\n\t});\n\tresult.trigger = update;\n\treturn result;\n}\n/** @deprecated use `computedWithControl` instead */\nconst controlledComputed = computedWithControl;\n\n//#endregion\n//#region tryOnScopeDispose/index.ts\n/**\n* Call onScopeDispose() if it's inside an effect scope lifecycle, if not, do nothing\n*\n* @param fn\n*/\nfunction tryOnScopeDispose(fn, failSilently) {\n\tif (getCurrentScope()) {\n\t\tonScopeDispose(fn, failSilently);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n//#endregion\n//#region createEventHook/index.ts\n/**\n* Utility for creating event hooks\n*\n* @see https://vueuse.org/createEventHook\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createEventHook() {\n\tconst fns = /* @__PURE__ */ new Set();\n\tconst off = (fn) => {\n\t\tfns.delete(fn);\n\t};\n\tconst clear = () => {\n\t\tfns.clear();\n\t};\n\tconst on = (fn) => {\n\t\tfns.add(fn);\n\t\tconst offFn = () => off(fn);\n\t\ttryOnScopeDispose(offFn);\n\t\treturn { off: offFn };\n\t};\n\tconst trigger = (...args) => {\n\t\treturn Promise.all(Array.from(fns).map((fn) => fn(...args)));\n\t};\n\treturn {\n\t\ton,\n\t\toff,\n\t\ttrigger,\n\t\tclear\n\t};\n}\n\n//#endregion\n//#region createGlobalState/index.ts\n/**\n* Keep states in the global scope to be reusable across Vue instances.\n*\n* @see https://vueuse.org/createGlobalState\n* @param stateFactory A factory function to create the state\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createGlobalState(stateFactory) {\n\tlet initialized = false;\n\tlet state;\n\tconst scope = effectScope(true);\n\treturn ((...args) => {\n\t\tif (!initialized) {\n\t\t\tstate = scope.run(() => stateFactory(...args));\n\t\t\tinitialized = true;\n\t\t}\n\t\treturn state;\n\t});\n}\n\n//#endregion\n//#region provideLocal/map.ts\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\n//#endregion\n//#region injectLocal/index.ts\n/**\n* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* injectLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*\n* @__NO_SIDE_EFFECTS__\n*/\nconst injectLocal = (...args) => {\n\tvar _getCurrentInstance;\n\tconst key = args[0];\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null && !hasInjectionContext()) throw new Error(\"injectLocal must be called in setup\");\n\tif (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];\n\treturn inject(...args);\n};\n\n//#endregion\n//#region provideLocal/index.ts\n/**\n* On the basis of `provide`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* provideLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*/\nfunction provideLocal(key, value) {\n\tvar _getCurrentInstance;\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null) throw new Error(\"provideLocal must be called in setup\");\n\tif (!localProvidedStateMap.has(owner)) localProvidedStateMap.set(owner, Object.create(null));\n\tconst localProvidedState = localProvidedStateMap.get(owner);\n\tlocalProvidedState[key] = value;\n\treturn provide(key, value);\n}\n\n//#endregion\n//#region createInjectionState/index.ts\n/**\n* Create global state that can be injected into components.\n*\n* @see https://vueuse.org/createInjectionState\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createInjectionState(composable, options) {\n\tconst key = (options === null || options === void 0 ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n\tconst defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue;\n\tconst useProvidingState = (...args) => {\n\t\tconst state = composable(...args);\n\t\tprovideLocal(key, state);\n\t\treturn state;\n\t};\n\tconst useInjectedState = () => injectLocal(key, defaultValue);\n\treturn [useProvidingState, useInjectedState];\n}\n\n//#endregion\n//#region createRef/index.ts\n/**\n* Returns a `deepRef` or `shallowRef` depending on the `deep` param.\n*\n* @example createRef(1) // ShallowRef<number>\n* @example createRef(1, false) // ShallowRef<number>\n* @example createRef(1, true) // Ref<number>\n* @example createRef(\"string\") // ShallowRef<string>\n* @example createRef<\"A\"|\"B\">(\"A\", true) // Ref<\"A\"|\"B\">\n*\n* @param value\n* @param deep\n* @returns the `deepRef` or `shallowRef`\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createRef(value, deep) {\n\tif (deep === true) return ref(value);\n\telse return shallowRef(value);\n}\n\n//#endregion\n//#region utils/is.ts\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n\tif (!condition) console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {};\nconst rand = (min, max) => {\n\tmin = Math.ceil(min);\n\tmax = Math.floor(max);\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n\tvar _window, _window2, _window3;\n\treturn isClient && !!((_window = window) === null || _window === void 0 || (_window = _window.navigator) === null || _window === void 0 ? void 0 : _window.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.maxTouchPoints) > 2 && /iPad|Macintosh/.test((_window3 = window) === null || _window3 === void 0 ? void 0 : _window3.navigator.userAgent));\n}\n\n//#endregion\n//#region toRef/index.ts\nfunction toRef(...args) {\n\tif (args.length !== 1) return toRef$1(...args);\n\tconst r = args[0];\n\treturn typeof r === \"function\" ? readonly(customRef(() => ({\n\t\tget: r,\n\t\tset: noop\n\t}))) : ref(r);\n}\n\n//#endregion\n//#region utils/filters.ts\n/**\n* @internal\n*/\nfunction createFilterWrapper(filter, fn) {\n\tfunction wrapper(...args) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tPromise.resolve(filter(() => fn.apply(this, args), {\n\t\t\t\tfn,\n\t\t\t\tthisArg: this,\n\t\t\t\targs\n\t\t\t})).then(resolve).catch(reject);\n\t\t});\n\t}\n\treturn wrapper;\n}\nconst bypassFilter = (invoke$1) => {\n\treturn invoke$1();\n};\n/**\n* Create an EventFilter that debounce the events\n*/\nfunction debounceFilter(ms, options = {}) {\n\tlet timer;\n\tlet maxTimer;\n\tlet lastRejector = noop;\n\tconst _clearTimeout = (timer$1) => {\n\t\tclearTimeout(timer$1);\n\t\tlastRejector();\n\t\tlastRejector = noop;\n\t};\n\tlet lastInvoker;\n\tconst filter = (invoke$1) => {\n\t\tconst duration = toValue(ms);\n\t\tconst maxDuration = toValue(options.maxWait);\n\t\tif (timer) _clearTimeout(timer);\n\t\tif (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n\t\t\tif (maxTimer) {\n\t\t\t\t_clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t}\n\t\t\treturn Promise.resolve(invoke$1());\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlastRejector = options.rejectOnCancel ? reject : resolve;\n\t\t\tlastInvoker = invoke$1;\n\t\t\tif (maxDuration && !maxTimer) maxTimer = setTimeout(() => {\n\t\t\t\tif (timer) _clearTimeout(timer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(lastInvoker());\n\t\t\t}, maxDuration);\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tif (maxTimer) _clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(invoke$1());\n\t\t\t}, duration);\n\t\t});\n\t};\n\treturn filter;\n}\nfunction throttleFilter(...args) {\n\tlet lastExec = 0;\n\tlet timer;\n\tlet isLeading = true;\n\tlet lastRejector = noop;\n\tlet lastValue;\n\tlet ms;\n\tlet trailing;\n\tlet leading;\n\tlet rejectOnCancel;\n\tif (!isRef(args[0]) && typeof args[0] === \"object\") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]);\n\telse [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n\tconst clear = () => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t\tlastRejector();\n\t\t\tlastRejector = noop;\n\t\t}\n\t};\n\tconst filter = (_invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst elapsed = Date.now() - lastExec;\n\t\tconst invoke$1 = () => {\n\t\t\treturn lastValue = _invoke();\n\t\t};\n\t\tclear();\n\t\tif (duration <= 0) {\n\t\t\tlastExec = Date.now();\n\t\t\treturn invoke$1();\n\t\t}\n\t\tif (elapsed > duration) {\n\t\t\tlastExec = Date.now();\n\t\t\tif (leading || !isLeading) invoke$1();\n\t\t} else if (trailing) lastValue = new Promise((resolve, reject) => {\n\t\t\tlastRejector = rejectOnCancel ? reject : resolve;\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tisLeading = true;\n\t\t\t\tresolve(invoke$1());\n\t\t\t\tclear();\n\t\t\t}, Math.max(0, duration - elapsed));\n\t\t});\n\t\tif (!leading && !timer) timer = setTimeout(() => isLeading = true, duration);\n\t\tisLeading = false;\n\t\treturn lastValue;\n\t};\n\treturn filter;\n}\n/**\n* EventFilter that gives extra controls to pause and resume the filter\n*\n* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none\n* @param options Options to configure the filter\n*/\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n\tconst { initialState = \"active\" } = options;\n\tconst isActive = toRef(initialState === \"active\");\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tfunction resume() {\n\t\tisActive.value = true;\n\t}\n\tconst eventFilter = (...args) => {\n\t\tif (isActive.value) extendFilter(...args);\n\t};\n\treturn {\n\t\tisActive: readonly(isActive),\n\t\tpause,\n\t\tresume,\n\t\teventFilter\n\t};\n}\n\n//#endregion\n//#region utils/general.ts\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n\treturn new Promise((resolve, reject) => {\n\t\tif (throwOnTimeout) setTimeout(() => reject(reason), ms);\n\t\telse setTimeout(resolve, ms);\n\t});\n}\nfunction identity(arg) {\n\treturn arg;\n}\n/**\n* Create singleton promise function\n*\n* @example\n* ```\n* const promise = createSingletonPromise(async () => { ... })\n*\n* await promise()\n* await promise() // all of them will be bind to a single promise instance\n* await promise() // and be resolved together\n* ```\n*/\nfunction createSingletonPromise(fn) {\n\tlet _promise;\n\tfunction wrapper() {\n\t\tif (!_promise) _promise = fn();\n\t\treturn _promise;\n\t}\n\twrapper.reset = async () => {\n\t\tconst _prev = _promise;\n\t\t_promise = void 0;\n\t\tif (_prev) await _prev;\n\t};\n\treturn wrapper;\n}\nfunction invoke(fn) {\n\treturn fn();\n}\nfunction containsProp(obj, ...props) {\n\treturn props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n\tvar _target$match;\n\tif (typeof target === \"number\") return target + delta;\n\tconst value = ((_target$match = target.match(/^-?\\d+\\.?\\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || \"\";\n\tconst unit = target.slice(value.length);\n\tconst result = Number.parseFloat(value) + delta;\n\tif (Number.isNaN(result)) return target;\n\treturn result + unit;\n}\n/**\n* Get a px value for SSR use, do not rely on this method outside of SSR as REM unit is assumed at 16px, which might not be the case on the client\n*/\nfunction pxValue(px) {\n\treturn px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\n/**\n* Create a new subset object by giving keys\n*/\nfunction objectPick(obj, keys, omitUndefined = false) {\n\treturn keys.reduce((n, k) => {\n\t\tif (k in obj) {\n\t\t\tif (!omitUndefined || obj[k] !== void 0) n[k] = obj[k];\n\t\t}\n\t\treturn n;\n\t}, {});\n}\n/**\n* Create a new subset object by omit giving keys\n*/\nfunction objectOmit(obj, keys, omitUndefined = false) {\n\treturn Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n\t\treturn (!omitUndefined || value !== void 0) && !keys.includes(key);\n\t}));\n}\nfunction objectEntries(obj) {\n\treturn Object.entries(obj);\n}\nfunction toArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\n//#endregion\n//#region utils/port.ts\nfunction cacheStringFunction(fn) {\n\tconst cache = Object.create(null);\n\treturn ((str) => {\n\t\treturn cache[str] || (cache[str] = fn(str));\n\t});\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n\treturn str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\n//#endregion\n//#region utils/vue.ts\nfunction getLifeCycleTarget(target) {\n\treturn target || getCurrentInstance();\n}\n\n//#endregion\n//#region createSharedComposable/index.ts\n/**\n* Make a composable function usable with multiple Vue instances.\n*\n* @see https://vueuse.org/createSharedComposable\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createSharedComposable(composable) {\n\tif (!isClient) return composable;\n\tlet subscribers = 0;\n\tlet state;\n\tlet scope;\n\tconst dispose = () => {\n\t\tsubscribers -= 1;\n\t\tif (scope && subscribers <= 0) {\n\t\t\tscope.stop();\n\t\t\tstate = void 0;\n\t\t\tscope = void 0;\n\t\t}\n\t};\n\treturn ((...args) => {\n\t\tsubscribers += 1;\n\t\tif (!scope) {\n\t\t\tscope = effectScope(true);\n\t\t\tstate = scope.run(() => composable(...args));\n\t\t}\n\t\ttryOnScopeDispose(dispose);\n\t\treturn state;\n\t});\n}\n\n//#endregion\n//#region extendRef/index.ts\nfunction extendRef(ref$1, extend, { enumerable = false, unwrap = true } = {}) {\n\tfor (const [key, value] of Object.entries(extend)) {\n\t\tif (key === \"value\") continue;\n\t\tif (isRef(value) && unwrap) Object.defineProperty(ref$1, key, {\n\t\t\tget() {\n\t\t\t\treturn value.value;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tvalue.value = v;\n\t\t\t},\n\t\t\tenumerable\n\t\t});\n\t\telse Object.defineProperty(ref$1, key, {\n\t\t\tvalue,\n\t\t\tenumerable\n\t\t});\n\t}\n\treturn ref$1;\n}\n\n//#endregion\n//#region get/index.ts\nfunction get(obj, key) {\n\tif (key == null) return unref(obj);\n\treturn unref(obj)[key];\n}\n\n//#endregion\n//#region isDefined/index.ts\nfunction isDefined(v) {\n\treturn unref(v) != null;\n}\n\n//#endregion\n//#region makeDestructurable/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction makeDestructurable(obj, arr) {\n\tif (typeof Symbol !== \"undefined\") {\n\t\tconst clone = { ...obj };\n\t\tObject.defineProperty(clone, Symbol.iterator, {\n\t\t\tenumerable: false,\n\t\t\tvalue() {\n\t\t\t\tlet index = 0;\n\t\t\t\treturn { next: () => ({\n\t\t\t\t\tvalue: arr[index++],\n\t\t\t\t\tdone: index > arr.length\n\t\t\t\t}) };\n\t\t\t}\n\t\t});\n\t\treturn clone;\n\t} else return Object.assign([...arr], obj);\n}\n\n//#endregion\n//#region reactify/index.ts\n/**\n* Converts plain function into a reactive function.\n* The converted function accepts refs as it's arguments\n* and returns a ComputedRef, with proper typing.\n*\n* @param fn - Source function\n* @param options - Options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactify(fn, options) {\n\tconst unrefFn = (options === null || options === void 0 ? void 0 : options.computedGetter) === false ? unref : toValue;\n\treturn function(...args) {\n\t\treturn computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n\t};\n}\n/** @deprecated use `reactify` instead */\nconst createReactiveFn = reactify;\n\n//#endregion\n//#region reactifyObject/index.ts\n/**\n* Apply `reactify` to an object\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n\tlet keys = [];\n\tlet options;\n\tif (Array.isArray(optionsOrKeys)) keys = optionsOrKeys;\n\telse {\n\t\toptions = optionsOrKeys;\n\t\tconst { includeOwnProperties = true } = optionsOrKeys;\n\t\tkeys.push(...Object.keys(obj));\n\t\tif (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj));\n\t}\n\treturn Object.fromEntries(keys.map((key) => {\n\t\tconst value = obj[key];\n\t\treturn [key, typeof value === \"function\" ? reactify(value.bind(obj), options) : value];\n\t}));\n}\n\n//#endregion\n//#region toReactive/index.ts\n/**\n* Converts ref to reactive.\n*\n* @see https://vueuse.org/toReactive\n* @param objectRef A ref of object\n*/\nfunction toReactive(objectRef) {\n\tif (!isRef(objectRef)) return reactive(objectRef);\n\treturn reactive(new Proxy({}, {\n\t\tget(_, p, receiver) {\n\t\t\treturn unref(Reflect.get(objectRef.value, p, receiver));\n\t\t},\n\t\tset(_, p, value) {\n\t\t\tif (isRef(objectRef.value[p]) && !isRef(value)) objectRef.value[p].value = value;\n\t\t\telse objectRef.value[p] = value;\n\t\t\treturn true;\n\t\t},\n\t\tdeleteProperty(_, p) {\n\t\t\treturn Reflect.deleteProperty(objectRef.value, p);\n\t\t},\n\t\thas(_, p) {\n\t\t\treturn Reflect.has(objectRef.value, p);\n\t\t},\n\t\townKeys() {\n\t\t\treturn Object.keys(objectRef.value);\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t};\n\t\t}\n\t}));\n}\n\n//#endregion\n//#region reactiveComputed/index.ts\n/**\n* Computed reactive object.\n*/\nfunction reactiveComputed(fn) {\n\treturn toReactive(computed(fn));\n}\n\n//#endregion\n//#region reactiveOmit/index.ts\n/**\n* Reactively omit fields from a reactive object\n*\n* @see https://vueuse.org/reactiveOmit\n*/\nfunction reactiveOmit(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\n//#endregion\n//#region reactivePick/index.ts\n/**\n* Reactively pick fields from a reactive object\n*\n* @see https://vueuse.org/reactivePick\n*/\nfunction reactivePick(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\n//#endregion\n//#region refAutoReset/index.ts\n/**\n* Create a ref which will be reset to the default value after some time.\n*\n* @see https://vueuse.org/refAutoReset\n* @param defaultValue The value which will be set.\n* @param afterMs A zero-or-greater delay in milliseconds.\n*/\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n\treturn customRef((track, trigger) => {\n\t\tlet value = toValue(defaultValue);\n\t\tlet timer;\n\t\tconst resetAfter = () => setTimeout(() => {\n\t\t\tvalue = toValue(defaultValue);\n\t\t\ttrigger();\n\t\t}, toValue(afterMs));\n\t\ttryOnScopeDispose(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = resetAfter();\n\t\t\t}\n\t\t};\n\t});\n}\n/** @deprecated use `refAutoReset` instead */\nconst autoResetRef = refAutoReset;\n\n//#endregion\n//#region useDebounceFn/index.ts\n/**\n* Debounce execution of a function.\n*\n* @see https://vueuse.org/useDebounceFn\n* @param fn A function to be executed after delay milliseconds debounced.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param options Options\n*\n* @return A new, debounce, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n\treturn createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\n//#endregion\n//#region refDebounced/index.ts\n/**\n* Debounce updates of a ref.\n*\n* @return A new debounced ref.\n*/\nfunction refDebounced(value, ms = 200, options = {}) {\n\tconst debounced = ref(toValue(value));\n\tconst updater = useDebounceFn(() => {\n\t\tdebounced.value = value.value;\n\t}, ms, options);\n\twatch(value, () => updater());\n\treturn shallowReadonly(debounced);\n}\n/** @deprecated use `refDebounced` instead */\nconst debouncedRef = refDebounced;\n/** @deprecated use `refDebounced` instead */\nconst useDebounce = refDebounced;\n\n//#endregion\n//#region refDefault/index.ts\n/**\n* Apply default value to a ref.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refDefault(source, defaultValue) {\n\treturn computed({\n\t\tget() {\n\t\t\tvar _source$value;\n\t\t\treturn (_source$value = source.value) !== null && _source$value !== void 0 ? _source$value : defaultValue;\n\t\t},\n\t\tset(value) {\n\t\t\tsource.value = value;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region refManualReset/index.ts\n/**\n* Create a ref with manual reset functionality.\n*\n* @see https://vueuse.org/refManualReset\n* @param defaultValue The value which will be set.\n*/\nfunction refManualReset(defaultValue) {\n\tlet value = toValue(defaultValue);\n\tlet trigger;\n\tconst reset = () => {\n\t\tvalue = toValue(defaultValue);\n\t\ttrigger();\n\t};\n\tconst refValue = customRef((track, _trigger) => {\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t}\n\t\t};\n\t});\n\trefValue.reset = reset;\n\treturn refValue;\n}\n\n//#endregion\n//#region useThrottleFn/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param fn A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n* to `callback` when the throttled-function is executed.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* (default value: 200)\n*\n* @param [trailing] if true, call fn again after the time is up (default value: false)\n*\n* @param [leading] if true, call fn on the leading edge of the ms timeout (default value: true)\n*\n* @param [rejectOnCancel] if true, reject the last call if it's been cancel (default value: false)\n*\n* @return A new, throttled, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n\treturn createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\n//#endregion\n//#region refThrottled/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param value Ref value to be watched with throttle effect\n* @param delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param trailing if true, update the value again after the delay time is up\n* @param leading if true, update the value on the leading edge of the ms timeout\n*/\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n\tif (delay <= 0) return value;\n\tconst throttled = ref(toValue(value));\n\tconst updater = useThrottleFn(() => {\n\t\tthrottled.value = value.value;\n\t}, delay, trailing, leading);\n\twatch(value, () => updater());\n\treturn throttled;\n}\n/** @deprecated use `refThrottled` instead */\nconst throttledRef = refThrottled;\n/** @deprecated use `refThrottled` instead */\nconst useThrottle = refThrottled;\n\n//#endregion\n//#region refWithControl/index.ts\n/**\n* Fine-grained controls over ref and its reactivity.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refWithControl(initial, options = {}) {\n\tlet source = initial;\n\tlet track;\n\tlet trigger;\n\tconst ref$1 = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\treturn get$1();\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset$1(v);\n\t\t\t}\n\t\t};\n\t});\n\tfunction get$1(tracking = true) {\n\t\tif (tracking) track();\n\t\treturn source;\n\t}\n\tfunction set$1(value, triggering = true) {\n\t\tvar _options$onBeforeChan, _options$onChanged;\n\t\tif (value === source) return;\n\t\tconst old = source;\n\t\tif (((_options$onBeforeChan = options.onBeforeChange) === null || _options$onBeforeChan === void 0 ? void 0 : _options$onBeforeChan.call(options, value, old)) === false) return;\n\t\tsource = value;\n\t\t(_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, value, old);\n\t\tif (triggering) trigger();\n\t}\n\t/**\n\t* Get the value without tracked in the reactivity system\n\t*/\n\tconst untrackedGet = () => get$1(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*/\n\tconst silentSet = (v) => set$1(v, false);\n\t/**\n\t* Get the value without tracked in the reactivity system.\n\t*\n\t* Alias for `untrackedGet()`\n\t*/\n\tconst peek = () => get$1(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*\n\t* Alias for `silentSet(v)`\n\t*/\n\tconst lay = (v) => set$1(v, false);\n\treturn extendRef(ref$1, {\n\t\tget: get$1,\n\t\tset: set$1,\n\t\tuntrackedGet,\n\t\tsilentSet,\n\t\tpeek,\n\t\tlay\n\t}, { enumerable: true });\n}\n/** @deprecated use `refWithControl` instead */\nconst controlledRef = refWithControl;\n\n//#endregion\n//#region set/index.ts\n/**\n* Shorthand for `ref.value = x`\n*/\nfunction set(...args) {\n\tif (args.length === 2) {\n\t\tconst [ref$1, value] = args;\n\t\tref$1.value = value;\n\t}\n\tif (args.length === 3) {\n\t\tconst [target, key, value] = args;\n\t\ttarget[key] = value;\n\t}\n}\n\n//#endregion\n//#region watchWithFilter/index.ts\nfunction watchWithFilter(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter,...watchOptions } = options;\n\treturn watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\n//#endregion\n//#region watchPausable/index.ts\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nfunction watchPausable(source, cb, options = {}) {\n\tconst { eventFilter: filter, initialState = \"active\",...watchOptions } = options;\n\tconst { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n\treturn {\n\t\tstop: watchWithFilter(source, cb, {\n\t\t\t...watchOptions,\n\t\t\teventFilter\n\t\t}),\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nconst pausableWatch = watchPausable;\n\n//#endregion\n//#region syncRef/index.ts\n/**\n* Two-way refs synchronization.\n* From the set theory perspective to restrict the option's type\n* Check in the following order:\n* 1. L = R\n* 2. L ∩ R ≠ ∅\n* 3. L ⊆ R\n* 4. L ∩ R = ∅\n*/\nfunction syncRef(left, right, ...[options]) {\n\tconst { flush = \"sync\", deep = false, immediate = true, direction = \"both\", transform = {} } = options || {};\n\tconst watchers = [];\n\tconst transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n\tconst transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n\tif (direction === \"both\" || direction === \"ltr\") watchers.push(watchPausable(left, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tright.value = transformLTR(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tif (direction === \"both\" || direction === \"rtl\") watchers.push(watchPausable(right, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tleft.value = transformRTL(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tconst stop = () => {\n\t\twatchers.forEach((w) => w.stop());\n\t};\n\treturn stop;\n}\n\n//#endregion\n//#region syncRefs/index.ts\n/**\n* Keep target ref(s) in sync with the source ref\n*\n* @param source source ref\n* @param targets\n*/\nfunction syncRefs(source, targets, options = {}) {\n\tconst { flush = \"sync\", deep = false, immediate = true } = options;\n\tconst targetsArray = toArray(targets);\n\treturn watch(source, (newValue) => targetsArray.forEach((target) => target.value = newValue), {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t});\n}\n\n//#endregion\n//#region toRefs/index.ts\n/**\n* Extended `toRefs` that also accepts refs of an object.\n*\n* @see https://vueuse.org/toRefs\n* @param objectRef A ref or normal object or array.\n* @param options Options\n*/\nfunction toRefs(objectRef, options = {}) {\n\tif (!isRef(objectRef)) return toRefs$1(objectRef);\n\tconst result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n\tfor (const key in objectRef.value) result[key] = customRef(() => ({\n\t\tget() {\n\t\t\treturn objectRef.value[key];\n\t\t},\n\t\tset(v) {\n\t\t\tvar _toValue;\n\t\t\tif ((_toValue = toValue(options.replaceRef)) !== null && _toValue !== void 0 ? _toValue : true) if (Array.isArray(objectRef.value)) {\n\t\t\t\tconst copy = [...objectRef.value];\n\t\t\t\tcopy[key] = v;\n\t\t\t\tobjectRef.value = copy;\n\t\t\t} else {\n\t\t\t\tconst newObject = {\n\t\t\t\t\t...objectRef.value,\n\t\t\t\t\t[key]: v\n\t\t\t\t};\n\t\t\t\tObject.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n\t\t\t\tobjectRef.value = newObject;\n\t\t\t}\n\t\t\telse objectRef.value[key] = v;\n\t\t}\n\t}));\n\treturn result;\n}\n\n//#endregion\n//#region tryOnBeforeMount/index.ts\n/**\n* Call onBeforeMount() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnBeforeMount(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onBeforeMount(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n\n//#endregion\n//#region tryOnBeforeUnmount/index.ts\n/**\n* Call onBeforeUnmount() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnBeforeUnmount(fn, target) {\n\tif (getLifeCycleTarget(target)) onBeforeUnmount(fn, target);\n}\n\n//#endregion\n//#region tryOnMounted/index.ts\n/**\n* Call onMounted() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnMounted(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onMounted(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n\n//#endregion\n//#region tryOnUnmounted/index.ts\n/**\n* Call onUnmounted() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnUnmounted(fn, target) {\n\tif (getLifeCycleTarget(target)) onUnmounted(fn, target);\n}\n\n//#endregion\n//#region until/index.ts\nfunction createUntil(r, isNot = false) {\n\tfunction toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch(r, (v) => {\n\t\t\t\tif (condition(v) !== isNot) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop === null || stop === void 0 ? void 0 : stop()));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBe(value, options) {\n\t\tif (!isRef(value)) return toMatch((v) => v === value, options);\n\t\tconst { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options !== null && options !== void 0 ? options : {};\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch([r, value], ([v1, v2]) => {\n\t\t\t\tif (isNot !== (v1 === v2)) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v1);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n\t\t\tstop === null || stop === void 0 || stop();\n\t\t\treturn toValue(r);\n\t\t}));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBeTruthy(options) {\n\t\treturn toMatch((v) => Boolean(v), options);\n\t}\n\tfunction toBeNull(options) {\n\t\treturn toBe(null, options);\n\t}\n\tfunction toBeUndefined(options) {\n\t\treturn toBe(void 0, options);\n\t}\n\tfunction toBeNaN(options) {\n\t\treturn toMatch(Number.isNaN, options);\n\t}\n\tfunction toContains(value, options) {\n\t\treturn toMatch((v) => {\n\t\t\tconst array = Array.from(v);\n\t\t\treturn array.includes(value) || array.includes(toValue(value));\n\t\t}, options);\n\t}\n\tfunction changed(options) {\n\t\treturn changedTimes(1, options);\n\t}\n\tfunction changedTimes(n = 1, options) {\n\t\tlet count = -1;\n\t\treturn toMatch(() => {\n\t\t\tcount += 1;\n\t\t\treturn count >= n;\n\t\t}, options);\n\t}\n\tif (Array.isArray(toValue(r))) return {\n\t\ttoMatch,\n\t\ttoContains,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n\telse return {\n\t\ttoMatch,\n\t\ttoBe,\n\t\ttoBeTruthy,\n\t\ttoBeNull,\n\t\ttoBeNaN,\n\t\ttoBeUndefined,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n}\nfunction until(r) {\n\treturn createUntil(r);\n}\n\n//#endregion\n//#region useArrayDifference/index.ts\nfunction defaultComparator(value, othVal) {\n\treturn value === othVal;\n}\n/**\n* Reactive get array difference of two array\n* @see https://vueuse.org/useArrayDifference\n* @returns - the difference of two array\n* @param args\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayDifference(...args) {\n\tvar _args$, _args$2;\n\tconst list = args[0];\n\tconst values = args[1];\n\tlet compareFn = (_args$ = args[2]) !== null && _args$ !== void 0 ? _args$ : defaultComparator;\n\tconst { symmetric = false } = (_args$2 = args[3]) !== null && _args$2 !== void 0 ? _args$2 : {};\n\tif (typeof compareFn === \"string\") {\n\t\tconst key = compareFn;\n\t\tcompareFn = (value, othVal) => value[key] === othVal[key];\n\t}\n\tconst diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n\tif (symmetric) {\n\t\tconst diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1));\n\t\treturn computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1));\n\t} else return diff1;\n}\n\n//#endregion\n//#region useArrayEvery/index.ts\n/**\n* Reactive `Array.every`\n*\n* @see https://vueuse.org/useArrayEvery\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for every element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayEvery(list, fn) {\n\treturn computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayFilter/index.ts\n/**\n* Reactive `Array.filter`\n*\n* @see https://vueuse.org/useArrayFilter\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a shallow copy of a portion of the given array, filtered down to just the elements from the given array that pass the test implemented by the provided function. If no elements pass the test, an empty array will be returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFilter(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\n//#endregion\n//#region useArrayFind/index.ts\n/**\n* Reactive `Array.find`\n*\n* @see https://vueuse.org/useArrayFind\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the first element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFind(list, fn) {\n\treturn computed(() => toValue(toValue(list).find((element, index, array) => fn(toValue(element), index, array))));\n}\n\n//#endregion\n//#region useArrayFindIndex/index.ts\n/**\n* Reactive `Array.findIndex`\n*\n* @see https://vueuse.org/useArrayFindIndex\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the index of the first element in the array that passes the test. Otherwise, \"-1\".\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindIndex(list, fn) {\n\treturn computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayFindLast/index.ts\nfunction findLast(arr, cb) {\n\tlet index = arr.length;\n\twhile (index-- > 0) if (cb(arr[index], index, arr)) return arr[index];\n}\n/**\n* Reactive `Array.findLast`\n*\n* @see https://vueuse.org/useArrayFindLast\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the last element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindLast(list, fn) {\n\treturn computed(() => toValue(!Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))));\n}\n\n//#endregion\n//#region useArrayIncludes/index.ts\nfunction isArrayIncludesOptions(obj) {\n\treturn isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\n/**\n* Reactive `Array.includes`\n*\n* @see https://vueuse.org/useArrayIncludes\n*\n* @returns true if the `value` is found in the array. Otherwise, false.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayIncludes(...args) {\n\tvar _comparator;\n\tconst list = args[0];\n\tconst value = args[1];\n\tlet comparator = args[2];\n\tlet formIndex = 0;\n\tif (isArrayIncludesOptions(comparator)) {\n\t\tvar _comparator$fromIndex;\n\t\tformIndex = (_comparator$fromIndex = comparator.fromIndex) !== null && _comparator$fromIndex !== void 0 ? _comparator$fromIndex : 0;\n\t\tcomparator = comparator.comparator;\n\t}\n\tif (typeof comparator === \"string\") {\n\t\tconst key = comparator;\n\t\tcomparator = (element, value$1) => element[key] === toValue(value$1);\n\t}\n\tcomparator = (_comparator = comparator) !== null && _comparator !== void 0 ? _comparator : ((element, value$1) => element === toValue(value$1));\n\treturn computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))));\n}\n\n//#endregion\n//#region useArrayJoin/index.ts\n/**\n* Reactive `Array.join`\n*\n* @see https://vueuse.org/useArrayJoin\n* @param list - the array was called upon.\n* @param separator - a string to separate each pair of adjacent elements of the array. If omitted, the array elements are separated with a comma (\",\").\n*\n* @returns a string with all array elements joined. If arr.length is 0, the empty string is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayJoin(list, separator) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\n//#endregion\n//#region useArrayMap/index.ts\n/**\n* Reactive `Array.map`\n*\n* @see https://vueuse.org/useArrayMap\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a new array with each element being the result of the callback function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayMap(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\n//#endregion\n//#region useArrayReduce/index.ts\n/**\n* Reactive `Array.reduce`\n*\n* @see https://vueuse.org/useArrayReduce\n* @param list - the array was called upon.\n* @param reducer - a \"reducer\" function.\n* @param args\n*\n* @returns the value that results from running the \"reducer\" callback function to completion over the entire array.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayReduce(list, reducer, ...args) {\n\tconst reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n\treturn computed(() => {\n\t\tconst resolved = toValue(list);\n\t\treturn args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n\t});\n}\n\n//#endregion\n//#region useArraySome/index.ts\n/**\n* Reactive `Array.some`\n*\n* @see https://vueuse.org/useArraySome\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for any element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArraySome(list, fn) {\n\treturn computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayUnique/index.ts\nfunction uniq(array) {\n\treturn Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n\treturn array.reduce((acc, v) => {\n\t\tif (!acc.some((x) => fn(v, x, array))) acc.push(v);\n\t\treturn acc;\n\t}, []);\n}\n/**\n* reactive unique array\n* @see https://vueuse.org/useArrayUnique\n* @param list - the array was called upon.\n* @param compareFn\n* @returns A computed ref that returns a unique array of items.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayUnique(list, compareFn) {\n\treturn computed(() => {\n\t\tconst resolvedList = toValue(list).map((element) => toValue(element));\n\t\treturn compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n\t});\n}\n\n//#endregion\n//#region useCounter/index.ts\n/**\n* Basic counter with utility functions.\n*\n* @see https://vueuse.org/useCounter\n* @param [initialValue]\n* @param options\n*/\nfunction useCounter(initialValue = 0, options = {}) {\n\tlet _initialValue = unref(initialValue);\n\tconst count = shallowRef(initialValue);\n\tconst { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = options;\n\tconst inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n\tconst dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n\tconst get$1 = () => count.value;\n\tconst set$1 = (val) => count.value = Math.max(min, Math.min(max, val));\n\tconst reset = (val = _initialValue) => {\n\t\t_initialValue = val;\n\t\treturn set$1(val);\n\t};\n\treturn {\n\t\tcount: shallowReadonly(count),\n\t\tinc,\n\t\tdec,\n\t\tget: get$1,\n\t\tset: set$1,\n\t\treset\n\t};\n}\n\n//#endregion\n//#region useDateFormat/index.ts\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n\tlet m = hours < 12 ? \"AM\" : \"PM\";\n\tif (hasPeriod) m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n\treturn isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n\tconst suffixes = [\n\t\t\"th\",\n\t\t\"st\",\n\t\t\"nd\",\n\t\t\"rd\"\n\t];\n\tconst v = num % 100;\n\treturn num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n\tvar _options$customMeridi;\n\tconst years = date.getFullYear();\n\tconst month = date.getMonth();\n\tconst days = date.getDate();\n\tconst hours = date.getHours();\n\tconst minutes = date.getMinutes();\n\tconst seconds = date.getSeconds();\n\tconst milliseconds = date.getMilliseconds();\n\tconst day = date.getDay();\n\tconst meridiem = (_options$customMeridi = options.customMeridiem) !== null && _options$customMeridi !== void 0 ? _options$customMeridi : defaultMeridiem;\n\tconst stripTimeZone = (dateString) => {\n\t\tvar _dateString$split$;\n\t\treturn (_dateString$split$ = dateString.split(\" \")[1]) !== null && _dateString$split$ !== void 0 ? _dateString$split$ : \"\";\n\t};\n\tconst matches = {\n\t\tYo: () => formatOrdinal(years),\n\t\tYY: () => String(years).slice(-2),\n\t\tYYYY: () => years,\n\t\tM: () => month + 1,\n\t\tMo: () => formatOrdinal(month + 1),\n\t\tMM: () => `${month + 1}`.padStart(2, \"0\"),\n\t\tMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n\t\tMMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n\t\tD: () => String(days),\n\t\tDo: () => formatOrdinal(days),\n\t\tDD: () => `${days}`.padStart(2, \"0\"),\n\t\tH: () => String(hours),\n\t\tHo: () => formatOrdinal(hours),\n\t\tHH: () => `${hours}`.padStart(2, \"0\"),\n\t\th: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n\t\tho: () => formatOrdinal(hours % 12 || 12),\n\t\thh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n\t\tm: () => String(minutes),\n\t\tmo: () => formatOrdinal(minutes),\n\t\tmm: () => `${minutes}`.padStart(2, \"0\"),\n\t\ts: () => String(seconds),\n\t\tso: () => formatOrdinal(seconds),\n\t\tss: () => `${seconds}`.padStart(2, \"0\"),\n\t\tSSS: () => `${milliseconds}`.padStart(3, \"0\"),\n\t\td: () => day,\n\t\tdd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n\t\tddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n\t\tdddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n\t\tA: () => meridiem(hours, minutes),\n\t\tAA: () => meridiem(hours, minutes, false, true),\n\t\ta: () => meridiem(hours, minutes, true),\n\t\taa: () => meridiem(hours, minutes, true, true),\n\t\tz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"longOffset\" }))\n\t};\n\treturn formatStr.replace(REGEX_FORMAT, (match, $1) => {\n\t\tvar _ref, _matches$match;\n\t\treturn (_ref = $1 !== null && $1 !== void 0 ? $1 : (_matches$match = matches[match]) === null || _matches$match === void 0 ? void 0 : _matches$match.call(matches)) !== null && _ref !== void 0 ? _ref : match;\n\t});\n}\nfunction normalizeDate(date) {\n\tif (date === null) return /* @__PURE__ */ new Date(NaN);\n\tif (date === void 0) return /* @__PURE__ */ new Date();\n\tif (date instanceof Date) return new Date(date);\n\tif (typeof date === \"string\" && !/Z$/i.test(date)) {\n\t\tconst d = date.match(REGEX_PARSE);\n\t\tif (d) {\n\t\t\tconst m = d[2] - 1 || 0;\n\t\t\tconst ms = (d[7] || \"0\").substring(0, 3);\n\t\t\treturn new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n\t\t}\n\t}\n\treturn new Date(date);\n}\n/**\n* Get the formatted date according to the string of tokens passed in.\n*\n* @see https://vueuse.org/useDateFormat\n* @param date - The date to format, can either be a `Date` object, a timestamp, or a string\n* @param formatStr - The combination of tokens to format the date\n* @param options - UseDateFormatOptions\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n\treturn computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\n//#endregion\n//#region useIntervalFn/index.ts\n/**\n* Wrapper for `setInterval` with controls\n*\n* @see https://vueuse.org/useIntervalFn\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tlet timer = null;\n\tconst isActive = shallowRef(false);\n\tfunction clean() {\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tclean();\n\t}\n\tfunction resume() {\n\t\tconst intervalValue = toValue(interval);\n\t\tif (intervalValue <= 0) return;\n\t\tisActive.value = true;\n\t\tif (immediateCallback) cb();\n\t\tclean();\n\t\tif (isActive.value) timer = setInterval(cb, intervalValue);\n\t}\n\tif (immediate && isClient) resume();\n\tif (isRef(interval) || typeof interval === \"function\") tryOnScopeDispose(watch(interval, () => {\n\t\tif (isActive.value && isClient) resume();\n\t}));\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n\n//#endregion\n//#region useInterval/index.ts\nfunction useInterval(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, immediate = true, callback } = options;\n\tconst counter = shallowRef(0);\n\tconst update = () => counter.value += 1;\n\tconst reset = () => {\n\t\tcounter.value = 0;\n\t};\n\tconst controls = useIntervalFn(callback ? () => {\n\t\tupdate();\n\t\tcallback(counter.value);\n\t} : update, interval, { immediate });\n\tif (exposeControls) return {\n\t\tcounter: shallowReadonly(counter),\n\t\treset,\n\t\t...controls\n\t};\n\telse return shallowReadonly(counter);\n}\n\n//#endregion\n//#region useLastChanged/index.ts\nfunction useLastChanged(source, options = {}) {\n\tvar _options$initialValue;\n\tconst ms = shallowRef((_options$initialValue = options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : null);\n\twatch(source, () => ms.value = timestamp(), options);\n\treturn shallowReadonly(ms);\n}\n\n//#endregion\n//#region useTimeoutFn/index.ts\n/**\n* Wrapper for `setTimeout` with controls.\n*\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useTimeoutFn(cb, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tfunction clear() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t}\n\tfunction stop() {\n\t\tisPending.value = false;\n\t\tclear();\n\t}\n\tfunction start(...args) {\n\t\tif (immediateCallback) cb();\n\t\tclear();\n\t\tisPending.value = true;\n\t\ttimer = setTimeout(() => {\n\t\t\tisPending.value = false;\n\t\t\ttimer = void 0;\n\t\t\tcb(...args);\n\t\t}, toValue(interval));\n\t}\n\tif (immediate) {\n\t\tisPending.value = true;\n\t\tif (isClient) start();\n\t}\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisPending: shallowReadonly(isPending),\n\t\tstart,\n\t\tstop\n\t};\n}\n\n//#endregion\n//#region useTimeout/index.ts\nfunction useTimeout(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, callback } = options;\n\tconst controls = useTimeoutFn(callback !== null && callback !== void 0 ? callback : noop, interval, options);\n\tconst ready = computed(() => !controls.isPending.value);\n\tif (exposeControls) return {\n\t\tready,\n\t\t...controls\n\t};\n\telse return ready;\n}\n\n//#endregion\n//#region useToNumber/index.ts\n/**\n* Reactively convert a string ref to number.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToNumber(value, options = {}) {\n\tconst { method = \"parseFloat\", radix, nanToZero } = options;\n\treturn computed(() => {\n\t\tlet resolved = toValue(value);\n\t\tif (typeof method === \"function\") resolved = method(resolved);\n\t\telse if (typeof resolved === \"string\") resolved = Number[method](resolved, radix);\n\t\tif (nanToZero && Number.isNaN(resolved)) resolved = 0;\n\t\treturn resolved;\n\t});\n}\n\n//#endregion\n//#region useToString/index.ts\n/**\n* Reactively convert a ref to string.\n*\n* @see https://vueuse.org/useToString\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToString(value) {\n\treturn computed(() => `${toValue(value)}`);\n}\n\n//#endregion\n//#region useToggle/index.ts\n/**\n* A boolean ref with a toggler\n*\n* @see https://vueuse.org/useToggle\n* @param [initialValue]\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToggle(initialValue = false, options = {}) {\n\tconst { truthyValue = true, falsyValue = false } = options;\n\tconst valueIsRef = isRef(initialValue);\n\tconst _value = shallowRef(initialValue);\n\tfunction toggle(value) {\n\t\tif (arguments.length) {\n\t\t\t_value.value = value;\n\t\t\treturn _value.value;\n\t\t} else {\n\t\t\tconst truthy = toValue(truthyValue);\n\t\t\t_value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n\t\t\treturn _value.value;\n\t\t}\n\t}\n\tif (valueIsRef) return toggle;\n\telse return [_value, toggle];\n}\n\n//#endregion\n//#region watchArray/index.ts\n/**\n* Watch for an array with additions and removals.\n*\n* @see https://vueuse.org/watchArray\n*/\nfunction watchArray(source, cb, options) {\n\tlet oldList = (options === null || options === void 0 ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue(source)];\n\treturn watch(source, (newList, _, onCleanup) => {\n\t\tconst oldListRemains = Array.from({ length: oldList.length });\n\t\tconst added = [];\n\t\tfor (const obj of newList) {\n\t\t\tlet found = false;\n\t\t\tfor (let i = 0; i < oldList.length; i++) if (!oldListRemains[i] && obj === oldList[i]) {\n\t\t\t\toldListRemains[i] = true;\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!found) added.push(obj);\n\t\t}\n\t\tconst removed = oldList.filter((_$1, i) => !oldListRemains[i]);\n\t\tcb(newList, oldList, added, removed, onCleanup);\n\t\toldList = [...newList];\n\t}, options);\n}\n\n//#endregion\n//#region watchAtMost/index.ts\nfunction watchAtMost(source, cb, options) {\n\tconst { count,...watchOptions } = options;\n\tconst current = shallowRef(0);\n\tconst { stop, resume, pause } = watchWithFilter(source, (...args) => {\n\t\tcurrent.value += 1;\n\t\tif (current.value >= toValue(count)) nextTick(() => stop());\n\t\tcb(...args);\n\t}, watchOptions);\n\treturn {\n\t\tcount: current,\n\t\tstop,\n\t\tresume,\n\t\tpause\n\t};\n}\n\n//#endregion\n//#region watchDebounced/index.ts\nfunction watchDebounced(source, cb, options = {}) {\n\tconst { debounce = 0, maxWait = void 0,...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: debounceFilter(debounce, { maxWait })\n\t});\n}\n/** @deprecated use `watchDebounced` instead */\nconst debouncedWatch = watchDebounced;\n\n//#endregion\n//#region watchDeep/index.ts\n/**\n* Shorthand for watching value with {deep: true}\n*\n* @see https://vueuse.org/watchDeep\n*/\nfunction watchDeep(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tdeep: true\n\t});\n}\n\n//#endregion\n//#region watchIgnorable/index.ts\nfunction watchIgnorable(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter,...watchOptions } = options;\n\tconst filteredCb = createFilterWrapper(eventFilter, cb);\n\tlet ignoreUpdates;\n\tlet ignorePrevAsyncUpdates;\n\tlet stop;\n\tif (watchOptions.flush === \"sync\") {\n\t\tlet ignore = false;\n\t\tignorePrevAsyncUpdates = () => {};\n\t\tignoreUpdates = (updater) => {\n\t\t\tignore = true;\n\t\t\tupdater();\n\t\t\tignore = false;\n\t\t};\n\t\tstop = watch(source, (...args) => {\n\t\t\tif (!ignore) filteredCb(...args);\n\t\t}, watchOptions);\n\t} else {\n\t\tconst disposables = [];\n\t\tlet ignoreCounter = 0;\n\t\tlet syncCounter = 0;\n\t\tignorePrevAsyncUpdates = () => {\n\t\t\tignoreCounter = syncCounter;\n\t\t};\n\t\tdisposables.push(watch(source, () => {\n\t\t\tsyncCounter++;\n\t\t}, {\n\t\t\t...watchOptions,\n\t\t\tflush: \"sync\"\n\t\t}));\n\t\tignoreUpdates = (updater) => {\n\t\t\tconst syncCounterPrev = syncCounter;\n\t\t\tupdater();\n\t\t\tignoreCounter += syncCounter - syncCounterPrev;\n\t\t};\n\t\tdisposables.push(watch(source, (...args) => {\n\t\t\tconst ignore = ignoreCounter > 0 && ignoreCounter === syncCounter;\n\t\t\tignoreCounter = 0;\n\t\t\tsyncCounter = 0;\n\t\t\tif (ignore) return;\n\t\t\tfilteredCb(...args);\n\t\t}, watchOptions));\n\t\tstop = () => {\n\t\t\tdisposables.forEach((fn) => fn());\n\t\t};\n\t}\n\treturn {\n\t\tstop,\n\t\tignoreUpdates,\n\t\tignorePrevAsyncUpdates\n\t};\n}\n/** @deprecated use `watchIgnorable` instead */\nconst ignorableWatch = watchIgnorable;\n\n//#endregion\n//#region watchImmediate/index.ts\n/**\n* Shorthand for watching value with {immediate: true}\n*\n* @see https://vueuse.org/watchImmediate\n*/\nfunction watchImmediate(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\timmediate: true\n\t});\n}\n\n//#endregion\n//#region watchOnce/index.ts\n/**\n* Shorthand for watching value with { once: true }\n*\n* @see https://vueuse.org/watchOnce\n*/\nfunction watchOnce(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tonce: true\n\t});\n}\n\n//#endregion\n//#region watchThrottled/index.ts\nfunction watchThrottled(source, cb, options = {}) {\n\tconst { throttle = 0, trailing = true, leading = true,...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: throttleFilter(throttle, trailing, leading)\n\t});\n}\n/** @deprecated use `watchThrottled` instead */\nconst throttledWatch = watchThrottled;\n\n//#endregion\n//#region watchTriggerable/index.ts\nfunction watchTriggerable(source, cb, options = {}) {\n\tlet cleanupFn;\n\tfunction onEffect() {\n\t\tif (!cleanupFn) return;\n\t\tconst fn = cleanupFn;\n\t\tcleanupFn = void 0;\n\t\tfn();\n\t}\n\t/** Register the function `cleanupFn` */\n\tfunction onCleanup(callback) {\n\t\tcleanupFn = callback;\n\t}\n\tconst _cb = (value, oldValue) => {\n\t\tonEffect();\n\t\treturn cb(value, oldValue, onCleanup);\n\t};\n\tconst res = watchIgnorable(source, _cb, options);\n\tconst { ignoreUpdates } = res;\n\tconst trigger = () => {\n\t\tlet res$1;\n\t\tignoreUpdates(() => {\n\t\t\tres$1 = _cb(getWatchSources(source), getOldValue(source));\n\t\t});\n\t\treturn res$1;\n\t};\n\treturn {\n\t\t...res,\n\t\ttrigger\n\t};\n}\nfunction getWatchSources(sources) {\n\tif (isReactive(sources)) return sources;\n\tif (Array.isArray(sources)) return sources.map((item) => toValue(item));\n\treturn toValue(sources);\n}\nfunction getOldValue(source) {\n\treturn Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\n//#endregion\n//#region whenever/index.ts\n/**\n* Shorthand for watching value to be truthy\n*\n* @see https://vueuse.org/whenever\n*/\nfunction whenever(source, cb, options) {\n\tconst stop = watch(source, (v, ov, onInvalidate) => {\n\t\tif (v) {\n\t\t\tif (options === null || options === void 0 ? void 0 : options.once) nextTick(() => stop());\n\t\t\tcb(v, ov, onInvalidate);\n\t\t}\n\t}, {\n\t\t...options,\n\t\tonce: false\n\t});\n\treturn stop;\n}\n\n//#endregion\nexport { assert, autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, debouncedRef, debouncedWatch, eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refManualReset, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, throttledRef, throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };","import { SmartAbortController } from '@delta-comic/request'\nimport { useGlobalVar } from '@delta-comic/utils'\nimport { until } from '@vueuse/core'\nimport { markRaw, shallowRef, type Raw, ref, type Ref, computed } from 'vue'\n\ntype RawGenerator<T> = (\n abortSignal: AbortSignal,\n that: Stream<T>\n) => IterableIterator<T[], void, Stream<T>> | AsyncIterableIterator<T[], void, Stream<T>>\nconst generatorMap = new Map<Stream<any>, RawGenerator<any>>()\n/**\n * _(网络)_ 数据流\n */\nexport type RStream<T> = Raw<Stream<T>>\n/**\n * 可迭代 _(网络)_ 数据流\n */\nexport class Stream<T> implements AsyncIterableIterator<T[], void> {\n /**\n * 使用`Stream.create`代替`new Stream`\n */\n private constructor(rawGenerator: RawGenerator<T>) {\n this.generator = rawGenerator(this.abortController.signal, this)\n generatorMap.set(this, rawGenerator)\n // console.trace('stream new', this)\n }\n private static _this\n static {\n this._this = useGlobalVar(this, 'data/Stream')\n }\n public static isStream(stream: any): stream is Stream<any> {\n return stream instanceof this._this\n }\n public static create<T>(generator: RawGenerator<T>): RStream<T> {\n const stream = new this._this<T>(generator)\n return markRaw(stream)\n }\n [x: symbol]: any\n private abortController = new SmartAbortController()\n private generator\n private _setupData = new Array<T>()\n /** 初始存在的数据(置顶) */\n public setupData(data: T[]) {\n this._setupData.push(...data)\n this.data.value.unshift(...data)\n return this\n }\n public async next(igRequesting = false): Promise<IteratorResult<T[], void>> {\n try {\n if (!igRequesting) {\n await until(this.isRequesting).toBe(false)\n this.isRequesting.value = true\n }\n if (this._isDone) {\n if (!igRequesting) this.isRequesting.value = false\n return { done: true, value: undefined }\n }\n if (igRequesting) console.log('igRequesting next')\n const { value, done } = await this.generator.next(this)\n this.isDone.value = done ?? false\n if (!igRequesting) this.isRequesting.value = false\n if (done) return { done: true, value: undefined }\n this.data.value.push(...value)\n return { value, done }\n } catch (error) {\n if (!igRequesting) this.isRequesting.value = false\n this.error.value = error as Error\n throw error\n }\n }\n public async return(): Promise<IteratorResult<T[], void>> {\n return (await this.generator.return?.()) ?? { value: undefined, done: true }\n }\n public async throw(e?: any): Promise<IteratorResult<T[], void>> {\n return (await this.generator.throw?.(e)) ?? { value: undefined, done: true }\n }\n /** 重置 */\n public reset() {\n const rawGenerator = generatorMap.get(this)!\n this.generator = rawGenerator(this.abortController.signal, this)\n this.total.value = NaN\n this.page.value = 0\n this.pageSize.value = NaN\n this.data.value = this._setupData\n this.isDone.value = false\n this.isRequesting.value = false\n this.error.value = undefined\n }\n /** 重试 */\n public async retry() {\n this.page.value--\n return this.next()\n }\n\n /** 一次性全部加载 */\n public async nextToDone() {\n if (isNaN(this._pages)) await this.next(true)\n const promises = []\n // e.g. p:1 ps:20 2->20\n for (let index = this._page + 1; index <= this._pages; index++) promises.push(this.next(true))\n await Promise.all(promises)\n return this._data\n }\n\n /** 停止正在进行的请求 */\n public stop() {\n this.abortController.abort()\n this.isRequesting.value = false\n }\n public [Symbol.asyncIterator]() {\n return this\n }\n\n /** 错误(如果有) */\n public error = shallowRef<void | Error>()\n\n /** 数据 */\n public data = ref<T[]>([]) as Ref<T[]>\n /** 数据 */\n public get _data() {\n return this.data.value\n }\n /** 当前页 */\n public page = shallowRef(0)\n /** 当前页 */\n public get _page() {\n return this.page.value\n }\n /** 总页数 */\n public pages = shallowRef(NaN)\n /** 总页数 */\n public get _pages() {\n return this.pages.value\n }\n /** 总条目数 */\n public total = shallowRef(NaN)\n /** 总条目数 */\n public get _total() {\n return this.total.value\n }\n /** 单页条目数 */\n public pageSize = shallowRef(NaN)\n /** 单页条目数 */\n public get _pageSize() {\n return this.pageSize.value\n }\n /** 数据当前总数 */\n public length = computed(() => this.data.value.length)\n /** 数据当前总数 */\n public get _length() {\n return this.data.value.length\n }\n /** 是否正在网络请求 */\n public isRequesting = shallowRef(false)\n /** 是否正在网络请求 */\n public get _isRequesting() {\n return this.isRequesting.value\n }\n /** 是否全部获取完成 */\n public isDone = shallowRef(false)\n /** 是否全部获取完成 */\n public get _isDone() {\n return this.isDone.value\n }\n /** 是否无结果 */\n public isNoData = computed(() => this.isDone.value && this.isEmpty.value)\n /** 是否无结果 */\n public get _isNoData() {\n return this.isNoData.value\n }\n /** 是否当前为空 */\n public isEmpty = computed(() => this.length.value === 0)\n /** 是否当前为空 */\n public get _isEmpty() {\n return this.isEmpty.value\n }\n}\nexport const callbackToPromise = <T = void>(\n fn: (resolve: (result: T | PromiseLike<T>) => void) => any\n) => {\n const { resolve, promise } = Promise.withResolvers<T>()\n fn(resolve)\n return promise\n}","/**\n * 可以结构化的数据,调用`toJSON`获取纯粹的json(没有get/set或method)\n */\nexport class Struct<TRaw extends object> {\n public toJSON() {\n return <TRaw>JSON.parse(JSON.stringify(this.$$raw))\n }\n /**\n * @param $$raw 一个纯粹json对象,不可以是高级对象\n */\n constructor(protected $$raw: TRaw) {}\n public static toRaw<T extends object, TRaw = T extends Struct<infer TR> ? TR : T>(item: T): TRaw {\n if (item instanceof Struct) return item.toJSON()\n return item as any\n }\n}","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import dayjs from 'dayjs'\nimport { type Component } from 'vue'\n\nimport type { ContentType } from './content'\nimport type { Item } from './item'\nimport type { User } from './user'\n\nimport { SourcedKeyMap, Struct, type MetaData, type RStream } from '../struct'\n\nexport interface RawComment {\n sender: User\n content: { type: 'string' | 'html'; text: string }\n time: number\n id: string\n childrenCount: number\n likeCount: number\n isLiked: boolean\n reported: boolean\n $$plugin: string\n $$meta?: MetaData\n isTop: boolean\n}\n\nexport type CommentRow = Component<{ comment: Comment; item: Item; parentComment?: Comment }>\n\nexport abstract class Comment extends Struct<RawComment> implements RawComment {\n public static commentRow = SourcedKeyMap.create<ContentType, CommentRow>()\n\n constructor(v: RawComment) {\n super(v)\n this.content = v.content\n this.time = v.time\n this.id = v.id\n this.childrenCount = v.childrenCount\n this.likeCount = v.likeCount\n this.isLiked = v.isLiked\n this.reported = v.reported\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n this.isTop = v.isTop\n }\n public abstract sender: User\n public content: { type: 'string' | 'html'; text: string }\n public time: number\n public get $time() {\n return dayjs(this.time)\n }\n public id: string\n public childrenCount: number\n public likeCount: number\n public isTop: boolean\n public isLiked: boolean\n public reported: boolean\n public $$plugin: string\n public $$meta?: MetaData\n public abstract like(signal?: AbortSignal): PromiseLike<boolean>\n public abstract report(signal?: AbortSignal): PromiseLike<any>\n public abstract sendComment(text: string, signal?: AbortSignal): PromiseLike<any>\n public abstract children: RStream<Comment>\n}","import { Struct, type MetaData } from '../struct'\nexport interface RawEp {\n name: string\n index: string\n $$plugin: string\n $$meta?: MetaData\n}\nexport class Ep extends Struct<RawEp> implements RawEp {\n public name: string\n public index: string\n public $$plugin: string\n public $$meta?: MetaData\n constructor(v: RawEp) {\n super(v)\n this.name = v.name\n this.index = v.index\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n }\n}","import { useGlobalVar } from '@delta-comic/utils'\nimport { isString } from 'es-toolkit/compat'\nimport { shallowReactive } from 'vue'\n\nimport { SourcedKeyMap, Struct, type MetaData } from '../struct'\n\nexport type ProcessInstance = (\n nowPath: string,\n resource: Resource\n) => Promise<[path: string, exit: boolean]>\nexport interface ProcessStep {\n referenceName: string\n ignoreExit?: boolean\n}\nexport type ProcessStep_ = ProcessStep | string\n\nexport interface ResourceType {\n type: string\n urls: string[]\n test: (url: string, signal: AbortSignal) => PromiseLike<void>\n}\nexport interface RawResource {\n $$plugin: string\n $$meta?: MetaData\n pathname: string\n type: string\n processSteps?: ProcessStep_[]\n}\nexport class Resource extends Struct<RawResource> implements RawResource {\n public static processInstances = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, referenceName: string], ProcessInstance>(),\n 'uni/resource/processInstances'\n )\n\n public static fork = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, type: string], ResourceType>(),\n 'uni/resource/fork'\n )\n public static precedenceFork = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, type: string], string>(),\n 'uni/resource/precedenceFork'\n )\n\n public static is(value: unknown): value is Resource {\n return value instanceof this\n }\n public static create(v: RawResource): Resource {\n return new this(v)\n }\n protected constructor(v: RawResource) {\n super(v)\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n this.pathname = v.pathname\n this.type = v.type\n this.processSteps = (v.processSteps ?? []).map<ProcessStep>(v =>\n isString(v) ? { referenceName: v, ignoreExit: false } : v\n )\n }\n public type: string\n public pathname: string\n public processSteps: ProcessStep[]\n public $$meta?: MetaData\n public $$plugin: string\n public async getUrl(): Promise<string> {\n let resultPath = this.pathname\n for (const option of this.processSteps) {\n // preflight\n const instance = Resource.processInstances.get([this.$$plugin, option.referenceName])\n if (!instance) {\n console.warn(\n `[Resource.getUrl] process not found, fullname: [${this.$$plugin}, ${option.referenceName}]`\n )\n continue\n }\n\n // call\n const result = await instance(resultPath, this)\n resultPath = result[0]\n if (option.ignoreExit || !result[1]) continue\n break\n }\n if (!URL.canParse(resultPath)) return `${this.getThisFork()}/${resultPath}`\n return resultPath\n }\n public omittedForks = shallowReactive(new Set<string>())\n public getThisFork() {\n const all = new Set(Resource.fork.get([this.$$plugin, this.type])?.urls ?? [])\n if (this.omittedForks.size == 0)\n var fork: string | undefined = Resource.precedenceFork.get([this.$$plugin, this.type])\n else {\n const diff = Array.from(all.difference(this.omittedForks).values())\n var fork: string | undefined = diff[0]\n }\n if (!fork)\n throw new Error(\n `[Resource.getThisFork] fork not found, type: [${this.$$plugin}, ${this.type}]`\n )\n return fork\n }\n public localChangeFork() {\n const all = new Set(Resource.fork.get([this.$$plugin, this.type])?.urls ?? [])\n this.omittedForks.add(this.getThisFork())\n const isEmptied = all.difference(this.omittedForks).size != 0\n if (isEmptied) this.omittedForks.clear()\n return isEmptied\n }\n}","import type { MetaData } from '../struct'\n\nimport { Resource, type RawResource, type ProcessStep_ } from './resource'\n\nexport interface RawImage {\n $$plugin: string\n $$meta?: MetaData\n path: string\n forkNamespace: string\n processSteps?: ProcessStep_[]\n}\n\nexport class Image extends Resource {\n public static override is(value: unknown): value is Image {\n return value instanceof this\n }\n public static override create(v: RawResource | RawImage, aspect?: ImageAspect): Image {\n return new this(v, aspect)\n }\n protected constructor(v: RawResource | RawImage, aspect?: ImageAspect) {\n if ('forkNamespace' in v)\n super({\n $$plugin: v.$$plugin,\n $$meta: { ...v.$$meta, ...aspect },\n pathname: v.path,\n type: v.forkNamespace,\n processSteps: v.processSteps\n })\n else super(v)\n }\n public get aspect() {\n return this.$$meta! as Partial<ImageAspect>\n }\n public set aspect(v) {\n this.$$meta ??= {}\n this.$$meta.width = v.width\n this.$$meta.height = v.height\n }\n}\nexport interface ImageAspect {\n width: number\n height: number\n}\nexport type Image_ = string | Image","import { useGlobalVar } from '@delta-comic/utils'\nimport dayjs from 'dayjs'\nimport { type Component } from 'vue'\n\nimport type { RawResource } from './resource'\n\nimport { SourcedKeyMap, Struct, type MetaData } from '../struct'\nimport { ContentPage, type ContentType, type ContentType_ } from './content'\nimport { Ep, type RawEp } from './ep'\nimport * as image from './image'\n\nexport interface Category {\n name: string\n group: string\n search: { keyword: string; source: string; sort: string }\n}\n\nexport interface Author {\n label: string\n icon: RawResource | image.RawImage | string\n description: string\n /**\n * 为空则不可订阅\n * 否则传入的为`defineConfig`中定义的`subscribe.type`\n */ subscribe?: string\n actions?: string[]\n $$meta?: MetaData\n $$plugin: string\n}\n\nexport interface RawItem {\n cover: RawResource | image.RawImage\n title: string\n id: string\n /** @alias tags */\n categories: Category[]\n author: Author[]\n viewNumber?: number\n likeNumber?: number\n commentNumber?: number\n isLiked?: boolean\n updateTime?: number\n customIsAI?: boolean\n contentType: ContentType_\n length: string\n epLength: string\n $$plugin: string\n $$meta: MetaData\n description?: Description\n thisEp: RawEp\n commentSendable: boolean\n customIsSafe?: boolean\n}\n\nexport type ItemCardComp = Component<\n {\n item: Item\n freeHeight?: boolean\n disabled?: boolean\n type?: 'default' | 'big' | 'small'\n class?: any\n style?: any\n },\n any,\n any,\n any,\n any,\n { click: [] },\n { default(): void; smallTopInfo(): void; cover(): void }\n>\n\nexport type ItemTranslator = (raw: RawItem) => Item\n\nexport type Description =\n | string\n | { type: 'html'; content: string }\n | { type: 'text'; content: string }\n\nexport abstract class Item extends Struct<RawItem> implements RawItem {\n public static itemTranslator = SourcedKeyMap.create<\n [plugin: string, name: string],\n ItemTranslator\n >()\n public static create(raw: RawItem) {\n const translator = this.itemTranslator.get(raw.contentType)\n if (!translator)\n throw new Error(\n `can not found itemTranslator contentType:\"${ContentPage.contentPage.toString(raw.contentType)}\"`\n )\n return translator(raw)\n }\n public static authorIcon = SourcedKeyMap.create<[plugin: string, name: string], Component>()\n\n public static itemCard = useGlobalVar(\n SourcedKeyMap.create<ContentType, ItemCardComp>(),\n 'uni/item/itemCard'\n )\n\n public abstract like(signal?: AbortSignal): PromiseLike<boolean>\n public abstract report(signal?: AbortSignal): PromiseLike<any>\n public abstract sendComment(text: string, signal?: AbortSignal): PromiseLike<any>\n\n public static is(value: unknown): value is Item {\n return value instanceof this\n }\n public cover: RawResource | image.RawImage\n public get $cover() {\n return image.Image.create(this.cover)\n }\n public title: string\n public id: string\n public categories: Category[]\n public author: Author[]\n public viewNumber?: number\n public likeNumber?: number\n public commentNumber?: number\n public isLiked?: boolean\n public description?: Description\n public updateTime?: number\n public get $updateTime() {\n return dayjs(this.updateTime)\n }\n public contentType: ContentType\n public length: string\n public epLength: string\n public $$plugin: string\n public $$meta\n public thisEp: RawEp\n public customIsSafe?: boolean\n public get $thisEp() {\n return new Ep(this.thisEp)\n }\n constructor(v: RawItem) {\n super(v)\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n\n this.thisEp = v.thisEp\n this.updateTime = v.updateTime\n this.cover = v.cover\n this.title = v.title\n this.id = v.id\n this.categories = v.categories\n this.author = v.author\n this.viewNumber = v.viewNumber\n this.likeNumber = v.likeNumber\n this.commentNumber = v.commentNumber\n this.isLiked = v.isLiked\n this.customIsAI = v.customIsAI\n this.contentType = ContentPage.contentPage.toJSON(v.contentType)\n this.length = v.length\n this.epLength = v.epLength\n this.description = v.description\n this.commentSendable = v.commentSendable\n this.customIsSafe = v.customIsSafe\n }\n public commentSendable: boolean\n public customIsAI?: boolean\n public get $isAi() {\n const check = (str: string) => /(^|[\\((\\[\\s【])ai[】\\))\\]\\s]?/gi.test(str)\n return (\n this.customIsAI ||\n check(this.title) ||\n this.author.some(author => check(`${author.label}\\u1145${author.description}`))\n )\n }\n}","import type { AudioSrc, MediaSrc, TextTrackInit } from 'vidstack'\n\nimport { useGlobalVar } from '@delta-comic/utils'\nimport { computed, shallowRef, type Component } from 'vue'\n\nimport type { Image } from './image'\n\nimport { PromiseContent, SourcedKeyMap, type RStream, type SourcedKeyType } from '../struct'\nimport * as comment from './comment'\nimport * as ep from './ep'\nimport * as item from './item'\n\nexport type PreloadValue = item.Item | undefined\nexport type ContentPageLike = new (preload: PreloadValue, id: string, ep: string) => ContentPage\n\nexport type ContentType_ = SourcedKeyType<typeof ContentPage.contentPage>\nexport type ContentType = Exclude<ContentType_, string>\n\nexport type ViewComp = Component<{ page: ContentPage; isFullScreen: boolean }>\n\nexport type ViewLayoutComp = Component<{ page: ContentPage }>\n\nexport abstract class ContentPage<T extends object = any> {\n public static viewLayout = useGlobalVar(\n SourcedKeyMap.create<ContentType, ViewLayoutComp>(),\n 'uni/contentPage/viewLayout'\n )\n public static contentPage = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, name: string], ContentPageLike>(),\n 'uni/contentPage/contentPage'\n )\n\n constructor(\n preload: PreloadValue,\n public id: string,\n public ep: string\n ) {\n this.preload.value = preload\n }\n public abstract contentType: ContentType\n\n public pid = PromiseContent.withResolvers<string>()\n\n public preload = shallowRef<PreloadValue>(undefined)\n public detail = PromiseContent.withResolvers<item.Item>()\n public union = computed(() => this.detail.content.data.value ?? this.preload.value)\n\n public recommends = PromiseContent.withResolvers<item.Item[]>()\n\n public abstract comments: RStream<comment.Comment>\n\n public eps = PromiseContent.withResolvers<ep.Ep[]>()\n\n public abstract loadAll(signal?: AbortSignal): Promise<any>\n public abstract reloadAll(signal?: AbortSignal): Promise<any>\n\n public abstract plugin: string\n\n public abstract loadAllOffline(save: T): Promise<any>\n public abstract exportOffline(): Promise<T>\n\n public abstract ViewComp: ViewComp\n}\n\nexport abstract class ContentImagePage extends ContentPage {\n public images = PromiseContent.withResolvers<Image[]>()\n}\n\nexport type VideoConfig = { textTrack?: TextTrackInit[] } & Exclude<MediaSrc, string | AudioSrc>[]\nexport abstract class ContentVideoPage extends ContentPage {\n public videos = PromiseContent.withResolvers<VideoConfig>()\n}","export abstract class Downloader {\n public abstract id: string\n public abstract name: string\n public abstract $$plugin: string\n\n public abstract begin: () => void\n public abstract resume: () => void\n public abstract pause: () => void\n}","import { shallowReactive, type Component } from 'vue'\n\nimport type { RawResource } from './resource'\n\nimport { Image } from './image'\n\nexport interface RawUser {\n avatar?: RawResource\n name: string\n id: string\n $$plugin: string\n}\n\nexport abstract class User {\n public static userBase = shallowReactive(new Map<string, User>())\n public static userEditorBase = shallowReactive(new Map<string, Component>())\n\n constructor(v: RawUser) {\n if (v.avatar) this.avatar = Image.create(v.avatar)\n this.name = v.name\n this.id = v.id\n this.$$plugin = v.$$plugin\n }\n public avatar?: Image\n public name: string\n public id: string\n public $$plugin: string\n public abstract customUser: object\n}\n\nexport type UserCardComp = Component<{ user: User; isSmall?: boolean }>","export * as comment from './comment'\nexport * as content from './content'\nexport * as download from './download'\nexport * as ep from './ep'\nexport * as image from './image'\nexport * as item from './item'\nexport * as resource from './resource'\nexport * as user from './user'"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,15,18],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","names":["isTypedArray","isString"],"sources":["../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isError.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isLength.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/predicate/isString.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isString.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs","../../../node_modules/.pnpm/es-toolkit@1.40.0/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs","../../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs","../lib/struct/promise.ts","../lib/struct/store.ts","../../request/dist/index.js","../../../node_modules/.pnpm/@vueuse+shared@14.2.1_vue@3.5.28_typescript@5.8.2_/node_modules/@vueuse/shared/dist/index.js","../lib/struct/stream.ts","../lib/struct/struct.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../lib/model/comment.ts","../lib/model/ep.ts","../lib/model/resource.ts","../lib/model/image.ts","../lib/model/item.ts","../lib/model/content.ts","../lib/model/download.ts","../lib/model/user.ts","../lib/model/index.ts"],"sourcesContent":["function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","function isError(value) {\n return value instanceof Error;\n}\n\nexport { isError };\n","function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n","function isString(value) {\n return typeof value === 'string';\n}\n\nexport { isString };\n","import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","function isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\nexport { isString };\n","function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n","import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n","import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import { useGlobalVar } from '@delta-comic/utils'\nimport { isError } from 'es-toolkit'\nimport { isEmpty } from 'es-toolkit/compat'\nimport mitt from 'mitt'\nimport { markRaw, shallowRef, type Raw } from 'vue'\n\ntype PromiseContentEmits<TR> = { success: TR; error: any; finial: void }\n/**\n * 扩展内容的`Promise`,可视为普通`Promise`使用\n */\nexport class PromiseContent<\n T,\n TPF extends any = T,\n TEmits extends PromiseContentEmits<TPF> = PromiseContentEmits<TPF>\n> implements PromiseLike<T> {\n [Symbol.toStringTag] = 'PromiseContent'\n private static _this\n static {\n this._this = useGlobalVar(this, 'data/PromiseContent')\n }\n public static isPromiseContent(value: unknown): value is PromiseContent<any> {\n return value instanceof this._this\n }\n public static fromPromise<T, TP = T>(\n promise: Promise<T>,\n processor: (val: T) => TP = v => <any>v\n ): RPromiseContent<T, TP> {\n const v = new this._this<T, TP>(promise, processor)\n return markRaw(v)\n }\n /**\n * 使用`PromiseContent.fromPromise`或`PromiseContent.fromAsyncFunction`代替`new PromiseContent`\n */\n private constructor(\n private promise: Promise<T>,\n private processor: (v: T) => TPF = v => <any>v\n ) {\n void this.loadPromise(promise)\n }\n public async loadPromise(promise: Promise<T>) {\n this.data.value = undefined\n this.isLoading.value = true\n this.isError.value = false\n this.errorCause.value = undefined\n this.isEmpty.value = true\n try {\n const v = await promise\n this.data.value = this.processor(v)\n this.isLoading.value = false\n this.isError.value = false\n this.isEmpty.value = isEmpty(v)\n this.emitter.emit('success', this.data.value)\n } catch (err) {\n this.data.value = undefined\n this.isError.value = true\n this.errorCause.value = isError(err) ? err : new Error(String(err))\n console.error('Non-throw Error [PromiseContent]', err)\n this.emitter.emit('error', err)\n }\n this.emitter.emit('finial', undefined)\n }\n private emitter = mitt<TEmits>()\n\n public onError(processor: (err: TEmits['error']) => any) {\n this.emitter.on('error', processor)\n return () => this.emitter.off('error', processor)\n }\n public onSuccess(processor: (err: TEmits['success']) => any) {\n this.emitter.on('success', processor)\n return () => this.emitter.off('success', processor)\n }\n public onFinal(processor: (err: TEmits['finial']) => any) {\n this.emitter.on('finial', processor)\n return () => this.emitter.off('finial', processor)\n }\n\n /**\n * 对`this.data.value`做出处理,多次调用仅最后一次生效\n */\n public setProcessor<TP>(processor: (val: T) => TP): RPromiseContent<T, TP> {\n return PromiseContent.fromPromise(this.promise, processor)\n }\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n ): Promise<T | TResult> {\n return this.promise.catch<TResult>(onrejected)\n }\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.promise.then<TResult1, TResult2>(onfulfilled, onrejected)\n }\n public finally(onfinally?: (() => void) | null): Promise<T> {\n return this.promise.finally(onfinally)\n }\n public data = shallowRef<TPF>()\n public isLoading = shallowRef(true)\n public isError = shallowRef(false)\n public errorCause = shallowRef<Error>()\n public isEmpty = shallowRef(true)\n public static fromAsyncFunction<T extends (...args: any[]) => Promise<any>>(asyncFunction: T) {\n return (...args: Parameters<T>): RPromiseContent<Awaited<ReturnType<T>>> =>\n this.fromPromise((() => asyncFunction(...args))())\n }\n public static resolve<T>(data: T) {\n const pc = this.fromPromise(Promise.resolve(data))\n pc.isLoading.value = false\n return pc\n }\n public static withResolvers<T>(isLoading = false): PromiseWithResolvers<T> {\n let withResolvers = Promise.withResolvers<T>()\n const content = new this._this<T>(withResolvers.promise)\n content.isLoading.value = isLoading\n return {\n content,\n reject: (reason?: any) => {\n withResolvers.reject(reason)\n },\n resolve: (value: T | PromiseLike<T>) => {\n withResolvers.resolve(value)\n },\n reset(isLoading = false) {\n withResolvers = Promise.withResolvers<T>()\n void content.loadPromise(withResolvers.promise)\n content.isLoading.value = isLoading\n }\n }\n }\n}\nexport type PromiseWithResolvers<T> = {\n content: RPromiseContent<T>\n reject: (reason?: any) => void\n resolve: (value: T | PromiseLike<T>) => void\n reset: (isLoading?: boolean) => void\n}\nexport type RPromiseContent<T, PTF = T> = Raw<PromiseContent<T, PTF>>","import { isString } from 'es-toolkit'\nimport { shallowReactive } from 'vue'\n\n/**\n * 比如有很多需要注明来自哪个插件的值都可以用\n */\nexport class SourcedValue<T extends [string, string]> {\n public toJSON(value: T | string) {\n if (isString(value)) return this.parse(value)\n return value\n }\n public parse(value: string) {\n const splited = value.split(this.separator)\n return <T>[splited[0], splited.slice(1).join(this.separator)]\n }\n public toString(value: T | string) {\n if (isString(value)) return value\n return this.stringify(value)\n }\n public stringify(value: T) {\n return value.join(this.separator)\n }\n constructor(public separator = ':') {}\n}\nexport type SourcedKeyType<T extends SourcedKeyMap<[string, string], any> | SourcedValue<any>> =\n T extends SourcedKeyMap<[string, string], any>\n ? Parameters<T['get']>[0]\n : Parameters<T['toJSON']>[0]\n/**\n * 相比较于普通的Map,这个元素的key操作可以是`TKey | string`\n * _但内部保存仍使用`SourcedValue.toString`作为key_\n */\nexport class SourcedKeyMap<TKey extends [string, string], TValue>\n extends SourcedValue<TKey>\n implements Map<string, TValue>\n{\n public static create<TKey extends [string, string], TValue>(separator = ':') {\n return shallowReactive(new this<TKey, TValue>(separator))\n }\n private constructor(separator = ':') {\n super(separator)\n }\n private store = shallowReactive(new Map<string, TValue>())\n public get size(): number {\n return this.store.size\n }\n public [Symbol.toStringTag] = 'SourcedKeyMap'\n public clear(): void {\n this.store.clear()\n }\n public delete(key: string | TKey): boolean {\n return this.store.delete(this.toString(key))\n }\n public forEach(\n callbackfn: (value: TValue, key: string, map: Map<string, TValue>) => void,\n thisArg?: any\n ): void {\n this.store.forEach((v, k) => {\n callbackfn.call(thisArg, v, k, this)\n })\n }\n public get(key: string | TKey): TValue | undefined {\n return this.store.get(this.toString(key))\n }\n public has(key: string | TKey): boolean {\n return this.store.has(this.toString(key))\n }\n public set(key: string | TKey, value: TValue): this {\n this.store.set(this.toString(key), value)\n return this\n }\n public entries() {\n return this.store.entries()\n }\n public keys() {\n return this.store.keys()\n }\n public values() {\n return this.store.values()\n }\n public [Symbol.iterator]() {\n return this.entries()\n }\n}","import axios, { isAxiosError, isCancel } from \"axios\";\nfunction mitt_default(e) {\n\treturn {\n\t\tall: e ||= /* @__PURE__ */ new Map(),\n\t\ton: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr ? r.push(n) : e.set(t, [n]);\n\t\t},\n\t\toff: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr && (n ? r.splice(r.indexOf(n) >>> 0, 1) : e.set(t, []));\n\t\t},\n\t\temit: function(t, n) {\n\t\t\tvar r = e.get(t);\n\t\t\tr && r.slice().map(function(e) {\n\t\t\t\te(n);\n\t\t\t}), (r = e.get(\"*\")) && r.slice().map(function(e) {\n\t\t\t\te(t, n);\n\t\t\t});\n\t\t}\n\t};\n}\nvar SmartAbortController = class {\n\t_controller = new AbortController();\n\tmitt = mitt_default();\n\tget signal() {\n\t\treturn this._controller.signal;\n\t}\n\tabort(e) {\n\t\tthis._controller.abort(e), this._controller = new AbortController(), this.mitt.emit(\"abort\");\n\t}\n\tonAbort(e) {\n\t\treturn this.mitt.on(\"abort\", e), () => this.mitt.off(\"abort\", e);\n\t}\n\tonAbortOnce(e) {\n\t\tlet t = async () => {\n\t\t\tawait e(), this.mitt.off(\"abort\", t);\n\t\t};\n\t\tthis.mitt.on(\"abort\", t);\n\t}\n}, AbortError = class extends Error {\n\tconstructor(e = \"The operation was aborted\") {\n\t\tsuper(e), this.name = \"AbortError\";\n\t}\n};\nfunction delay(e, { signal: t } = {}) {\n\treturn new Promise((n, r) => {\n\t\tlet i = () => {\n\t\t\tr(new AbortError());\n\t\t}, a = () => {\n\t\t\tclearTimeout(o), i();\n\t\t};\n\t\tif (t?.aborted) return i();\n\t\tlet o = setTimeout(() => {\n\t\t\tt?.removeEventListener(\"abort\", a), n();\n\t\t}, e);\n\t\tt?.addEventListener(\"abort\", a, { once: !0 });\n\t});\n}\nconst checkType = {\n\tisPost: (e) => /^post$/i.test(e.config.method ?? \"\"),\n\tisPut: (e) => /^put$/i.test(e.config.method ?? \"\"),\n\tisGet: (e) => /^get$/i.test(e.config.method ?? \"\")\n}, interceptors = {\n\tcheckIsAxiosError(e) {\n\t\treturn \"__isAxiosError\" in e ? e.__isAxiosError : e.__isAxiosError = !isCancel(e) && isAxiosError(e);\n\t},\n\tasync useUnreadableRetry(e, t = 0) {\n\t\ttry {\n\t\t\treturn (await e()).data;\n\t\t} catch (n) {\n\t\t\tif (n instanceof Error && n.message.includes(\"Illegal invocation\")) {\n\t\t\t\tif (t > 20) throw n;\n\t\t\t\treturn await this.useUnreadableRetry(e, t + 1);\n\t\t\t}\n\t\t\tthrow n;\n\t\t}\n\t},\n\tasync useForceRetry(e, t = 0) {\n\t\ttry {\n\t\t\treturn (await e()).data;\n\t\t} catch (n) {\n\t\t\tif (n instanceof Error) {\n\t\t\t\tif (t > 20) throw n;\n\t\t\t\treturn await this.useForceRetry(e, t + 1);\n\t\t\t}\n\t\t\tthrow n;\n\t\t}\n\t},\n\tcreateAutoRetry(e, t = 3) {\n\t\treturn async (n) => {\n\t\t\tif (!n.config || n.config.disretry || (n.config.__retryCount ?? 0) >= t) throw Promise.reject(n);\n\t\t\treturn n.config.__retryCount = (n.config.__retryCount ?? 0) + 1, await delay(500 * n.config.__retryCount), e(n.config);\n\t\t};\n\t},\n\tisClientError(e) {\n\t\tif (e?.response?.status?.toString().startsWith(\"4\")) throw Promise.reject(e);\n\t\treturn Promise.reject(e);\n\t},\n\tpassCorsError(e) {\n\t\tif (!this.checkIsAxiosError(e)) return Promise.reject(e);\n\t\tif (e.code === \"ERR_NETWORK\" && !e.response) throw Promise.reject(e);\n\t\treturn Promise.reject(e);\n\t}\n}, createAxios = (t, n = {}, r) => {\n\tlet i = axios.create(n);\n\treturn r?.(i), i.interceptors.request.use(async (e) => (e.baseURL ??= await t(), e)), n.noPassClientError || i.interceptors.response.use(void 0, interceptors.isClientError), i.interceptors.response.use(void 0, interceptors.createAutoRetry(i, 10)), {\n\t\tget: async (e, t = {}) => interceptors.useUnreadableRetry(() => i.get(e, t)),\n\t\tpost: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.post(e, t, n)),\n\t\tpostForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.postForm(e, t, n)),\n\t\tput: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.put(e, t, n)),\n\t\tputForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.putForm(e, t, n)),\n\t\tdelete: async (e, t = {}) => interceptors.useUnreadableRetry(() => i.delete(e, t)),\n\t\tpatch: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.patch(e, t, n)),\n\t\tpatchForm: async (e, t, n = {}) => interceptors.useUnreadableRetry(() => i.patchForm(e, t, n))\n\t};\n};\nexport { SmartAbortController, checkType, createAxios, interceptors };\n\n//# sourceMappingURL=index.js.map","import { computed, customRef, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isRef, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowReadonly, shallowRef, toRef as toRef$1, toRefs as toRefs$1, toValue, unref, watch, watchEffect } from \"vue\";\n\n//#region computedEager/index.ts\n/**\n*\n* @deprecated This function will be removed in future version.\n*\n* Note: If you are using Vue 3.4+, you can straight use computed instead.\n* Because in Vue 3.4+, if computed new value does not change,\n* computed, effect, watch, watchEffect, render dependencies will not be triggered.\n* refer: https://github.com/vuejs/core/pull/5912\n*\n* @param fn effect function\n* @param options WatchOptionsBase\n* @returns readonly shallowRef\n*/\nfunction computedEager(fn, options) {\n\tvar _options$flush;\n\tconst result = shallowRef();\n\twatchEffect(() => {\n\t\tresult.value = fn();\n\t}, {\n\t\t...options,\n\t\tflush: (_options$flush = options === null || options === void 0 ? void 0 : options.flush) !== null && _options$flush !== void 0 ? _options$flush : \"sync\"\n\t});\n\treturn readonly(result);\n}\n/** @deprecated use `computedEager` instead */\nconst eagerComputed = computedEager;\n\n//#endregion\n//#region computedWithControl/index.ts\n/**\n* Explicitly define the deps of computed.\n*\n* @param source\n* @param fn\n*/\nfunction computedWithControl(source, fn, options = {}) {\n\tlet v = void 0;\n\tlet track;\n\tlet trigger;\n\tlet dirty = true;\n\tconst update = () => {\n\t\tdirty = true;\n\t\ttrigger();\n\t};\n\twatch(source, update, {\n\t\tflush: \"sync\",\n\t\t...options\n\t});\n\tconst get$1 = typeof fn === \"function\" ? fn : fn.get;\n\tconst set$1 = typeof fn === \"function\" ? void 0 : fn.set;\n\tconst result = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (dirty) {\n\t\t\t\t\tv = get$1(v);\n\t\t\t\t\tdirty = false;\n\t\t\t\t}\n\t\t\t\ttrack();\n\t\t\t\treturn v;\n\t\t\t},\n\t\t\tset(v$1) {\n\t\t\t\tset$1 === null || set$1 === void 0 || set$1(v$1);\n\t\t\t}\n\t\t};\n\t});\n\tresult.trigger = update;\n\treturn result;\n}\n/** @deprecated use `computedWithControl` instead */\nconst controlledComputed = computedWithControl;\n\n//#endregion\n//#region tryOnScopeDispose/index.ts\n/**\n* Call onScopeDispose() if it's inside an effect scope lifecycle, if not, do nothing\n*\n* @param fn\n*/\nfunction tryOnScopeDispose(fn, failSilently) {\n\tif (getCurrentScope()) {\n\t\tonScopeDispose(fn, failSilently);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n//#endregion\n//#region createEventHook/index.ts\n/**\n* Utility for creating event hooks\n*\n* @see https://vueuse.org/createEventHook\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createEventHook() {\n\tconst fns = /* @__PURE__ */ new Set();\n\tconst off = (fn) => {\n\t\tfns.delete(fn);\n\t};\n\tconst clear = () => {\n\t\tfns.clear();\n\t};\n\tconst on = (fn) => {\n\t\tfns.add(fn);\n\t\tconst offFn = () => off(fn);\n\t\ttryOnScopeDispose(offFn);\n\t\treturn { off: offFn };\n\t};\n\tconst trigger = (...args) => {\n\t\treturn Promise.all(Array.from(fns).map((fn) => fn(...args)));\n\t};\n\treturn {\n\t\ton,\n\t\toff,\n\t\ttrigger,\n\t\tclear\n\t};\n}\n\n//#endregion\n//#region createGlobalState/index.ts\n/**\n* Keep states in the global scope to be reusable across Vue instances.\n*\n* @see https://vueuse.org/createGlobalState\n* @param stateFactory A factory function to create the state\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createGlobalState(stateFactory) {\n\tlet initialized = false;\n\tlet state;\n\tconst scope = effectScope(true);\n\treturn ((...args) => {\n\t\tif (!initialized) {\n\t\t\tstate = scope.run(() => stateFactory(...args));\n\t\t\tinitialized = true;\n\t\t}\n\t\treturn state;\n\t});\n}\n\n//#endregion\n//#region provideLocal/map.ts\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\n//#endregion\n//#region injectLocal/index.ts\n/**\n* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* injectLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*\n* @__NO_SIDE_EFFECTS__\n*/\nconst injectLocal = (...args) => {\n\tvar _getCurrentInstance;\n\tconst key = args[0];\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null && !hasInjectionContext()) throw new Error(\"injectLocal must be called in setup\");\n\tif (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];\n\treturn inject(...args);\n};\n\n//#endregion\n//#region provideLocal/index.ts\n/**\n* On the basis of `provide`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* provideLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*/\nfunction provideLocal(key, value) {\n\tvar _getCurrentInstance;\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null) throw new Error(\"provideLocal must be called in setup\");\n\tif (!localProvidedStateMap.has(owner)) localProvidedStateMap.set(owner, Object.create(null));\n\tconst localProvidedState = localProvidedStateMap.get(owner);\n\tlocalProvidedState[key] = value;\n\treturn provide(key, value);\n}\n\n//#endregion\n//#region createInjectionState/index.ts\n/**\n* Create global state that can be injected into components.\n*\n* @see https://vueuse.org/createInjectionState\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createInjectionState(composable, options) {\n\tconst key = (options === null || options === void 0 ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n\tconst defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue;\n\tconst useProvidingState = (...args) => {\n\t\tconst state = composable(...args);\n\t\tprovideLocal(key, state);\n\t\treturn state;\n\t};\n\tconst useInjectedState = () => injectLocal(key, defaultValue);\n\treturn [useProvidingState, useInjectedState];\n}\n\n//#endregion\n//#region createRef/index.ts\n/**\n* Returns a `deepRef` or `shallowRef` depending on the `deep` param.\n*\n* @example createRef(1) // ShallowRef<number>\n* @example createRef(1, false) // ShallowRef<number>\n* @example createRef(1, true) // Ref<number>\n* @example createRef(\"string\") // ShallowRef<string>\n* @example createRef<\"A\"|\"B\">(\"A\", true) // Ref<\"A\"|\"B\">\n*\n* @param value\n* @param deep\n* @returns the `deepRef` or `shallowRef`\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createRef(value, deep) {\n\tif (deep === true) return ref(value);\n\telse return shallowRef(value);\n}\n\n//#endregion\n//#region utils/is.ts\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n\tif (!condition) console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {};\nconst rand = (min, max) => {\n\tmin = Math.ceil(min);\n\tmax = Math.floor(max);\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n\tvar _window, _window2, _window3;\n\treturn isClient && !!((_window = window) === null || _window === void 0 || (_window = _window.navigator) === null || _window === void 0 ? void 0 : _window.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.maxTouchPoints) > 2 && /iPad|Macintosh/.test((_window3 = window) === null || _window3 === void 0 ? void 0 : _window3.navigator.userAgent));\n}\n\n//#endregion\n//#region toRef/index.ts\nfunction toRef(...args) {\n\tif (args.length !== 1) return toRef$1(...args);\n\tconst r = args[0];\n\treturn typeof r === \"function\" ? readonly(customRef(() => ({\n\t\tget: r,\n\t\tset: noop\n\t}))) : ref(r);\n}\n\n//#endregion\n//#region utils/filters.ts\n/**\n* @internal\n*/\nfunction createFilterWrapper(filter, fn) {\n\tfunction wrapper(...args) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tPromise.resolve(filter(() => fn.apply(this, args), {\n\t\t\t\tfn,\n\t\t\t\tthisArg: this,\n\t\t\t\targs\n\t\t\t})).then(resolve).catch(reject);\n\t\t});\n\t}\n\treturn wrapper;\n}\nconst bypassFilter = (invoke$1) => {\n\treturn invoke$1();\n};\n/**\n* Create an EventFilter that debounce the events\n*/\nfunction debounceFilter(ms, options = {}) {\n\tlet timer;\n\tlet maxTimer;\n\tlet lastRejector = noop;\n\tconst _clearTimeout = (timer$1) => {\n\t\tclearTimeout(timer$1);\n\t\tlastRejector();\n\t\tlastRejector = noop;\n\t};\n\tlet lastInvoker;\n\tconst filter = (invoke$1) => {\n\t\tconst duration = toValue(ms);\n\t\tconst maxDuration = toValue(options.maxWait);\n\t\tif (timer) _clearTimeout(timer);\n\t\tif (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n\t\t\tif (maxTimer) {\n\t\t\t\t_clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t}\n\t\t\treturn Promise.resolve(invoke$1());\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlastRejector = options.rejectOnCancel ? reject : resolve;\n\t\t\tlastInvoker = invoke$1;\n\t\t\tif (maxDuration && !maxTimer) maxTimer = setTimeout(() => {\n\t\t\t\tif (timer) _clearTimeout(timer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(lastInvoker());\n\t\t\t}, maxDuration);\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tif (maxTimer) _clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(invoke$1());\n\t\t\t}, duration);\n\t\t});\n\t};\n\treturn filter;\n}\nfunction throttleFilter(...args) {\n\tlet lastExec = 0;\n\tlet timer;\n\tlet isLeading = true;\n\tlet lastRejector = noop;\n\tlet lastValue;\n\tlet ms;\n\tlet trailing;\n\tlet leading;\n\tlet rejectOnCancel;\n\tif (!isRef(args[0]) && typeof args[0] === \"object\") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]);\n\telse [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n\tconst clear = () => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t\tlastRejector();\n\t\t\tlastRejector = noop;\n\t\t}\n\t};\n\tconst filter = (_invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst elapsed = Date.now() - lastExec;\n\t\tconst invoke$1 = () => {\n\t\t\treturn lastValue = _invoke();\n\t\t};\n\t\tclear();\n\t\tif (duration <= 0) {\n\t\t\tlastExec = Date.now();\n\t\t\treturn invoke$1();\n\t\t}\n\t\tif (elapsed > duration) {\n\t\t\tlastExec = Date.now();\n\t\t\tif (leading || !isLeading) invoke$1();\n\t\t} else if (trailing) lastValue = new Promise((resolve, reject) => {\n\t\t\tlastRejector = rejectOnCancel ? reject : resolve;\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tisLeading = true;\n\t\t\t\tresolve(invoke$1());\n\t\t\t\tclear();\n\t\t\t}, Math.max(0, duration - elapsed));\n\t\t});\n\t\tif (!leading && !timer) timer = setTimeout(() => isLeading = true, duration);\n\t\tisLeading = false;\n\t\treturn lastValue;\n\t};\n\treturn filter;\n}\n/**\n* EventFilter that gives extra controls to pause and resume the filter\n*\n* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none\n* @param options Options to configure the filter\n*/\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n\tconst { initialState = \"active\" } = options;\n\tconst isActive = toRef(initialState === \"active\");\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tfunction resume() {\n\t\tisActive.value = true;\n\t}\n\tconst eventFilter = (...args) => {\n\t\tif (isActive.value) extendFilter(...args);\n\t};\n\treturn {\n\t\tisActive: readonly(isActive),\n\t\tpause,\n\t\tresume,\n\t\teventFilter\n\t};\n}\n\n//#endregion\n//#region utils/general.ts\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n\treturn new Promise((resolve, reject) => {\n\t\tif (throwOnTimeout) setTimeout(() => reject(reason), ms);\n\t\telse setTimeout(resolve, ms);\n\t});\n}\nfunction identity(arg) {\n\treturn arg;\n}\n/**\n* Create singleton promise function\n*\n* @example\n* ```\n* const promise = createSingletonPromise(async () => { ... })\n*\n* await promise()\n* await promise() // all of them will be bind to a single promise instance\n* await promise() // and be resolved together\n* ```\n*/\nfunction createSingletonPromise(fn) {\n\tlet _promise;\n\tfunction wrapper() {\n\t\tif (!_promise) _promise = fn();\n\t\treturn _promise;\n\t}\n\twrapper.reset = async () => {\n\t\tconst _prev = _promise;\n\t\t_promise = void 0;\n\t\tif (_prev) await _prev;\n\t};\n\treturn wrapper;\n}\nfunction invoke(fn) {\n\treturn fn();\n}\nfunction containsProp(obj, ...props) {\n\treturn props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n\tvar _target$match;\n\tif (typeof target === \"number\") return target + delta;\n\tconst value = ((_target$match = target.match(/^-?\\d+\\.?\\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || \"\";\n\tconst unit = target.slice(value.length);\n\tconst result = Number.parseFloat(value) + delta;\n\tif (Number.isNaN(result)) return target;\n\treturn result + unit;\n}\n/**\n* Get a px value for SSR use, do not rely on this method outside of SSR as REM unit is assumed at 16px, which might not be the case on the client\n*/\nfunction pxValue(px) {\n\treturn px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\n/**\n* Create a new subset object by giving keys\n*/\nfunction objectPick(obj, keys, omitUndefined = false) {\n\treturn keys.reduce((n, k) => {\n\t\tif (k in obj) {\n\t\t\tif (!omitUndefined || obj[k] !== void 0) n[k] = obj[k];\n\t\t}\n\t\treturn n;\n\t}, {});\n}\n/**\n* Create a new subset object by omit giving keys\n*/\nfunction objectOmit(obj, keys, omitUndefined = false) {\n\treturn Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n\t\treturn (!omitUndefined || value !== void 0) && !keys.includes(key);\n\t}));\n}\nfunction objectEntries(obj) {\n\treturn Object.entries(obj);\n}\nfunction toArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\n//#endregion\n//#region utils/port.ts\nfunction cacheStringFunction(fn) {\n\tconst cache = Object.create(null);\n\treturn ((str) => {\n\t\treturn cache[str] || (cache[str] = fn(str));\n\t});\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n\treturn str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\n//#endregion\n//#region utils/vue.ts\nfunction getLifeCycleTarget(target) {\n\treturn target || getCurrentInstance();\n}\n\n//#endregion\n//#region createSharedComposable/index.ts\n/**\n* Make a composable function usable with multiple Vue instances.\n*\n* @see https://vueuse.org/createSharedComposable\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createSharedComposable(composable) {\n\tif (!isClient) return composable;\n\tlet subscribers = 0;\n\tlet state;\n\tlet scope;\n\tconst dispose = () => {\n\t\tsubscribers -= 1;\n\t\tif (scope && subscribers <= 0) {\n\t\t\tscope.stop();\n\t\t\tstate = void 0;\n\t\t\tscope = void 0;\n\t\t}\n\t};\n\treturn ((...args) => {\n\t\tsubscribers += 1;\n\t\tif (!scope) {\n\t\t\tscope = effectScope(true);\n\t\t\tstate = scope.run(() => composable(...args));\n\t\t}\n\t\ttryOnScopeDispose(dispose);\n\t\treturn state;\n\t});\n}\n\n//#endregion\n//#region extendRef/index.ts\nfunction extendRef(ref$1, extend, { enumerable = false, unwrap = true } = {}) {\n\tfor (const [key, value] of Object.entries(extend)) {\n\t\tif (key === \"value\") continue;\n\t\tif (isRef(value) && unwrap) Object.defineProperty(ref$1, key, {\n\t\t\tget() {\n\t\t\t\treturn value.value;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tvalue.value = v;\n\t\t\t},\n\t\t\tenumerable\n\t\t});\n\t\telse Object.defineProperty(ref$1, key, {\n\t\t\tvalue,\n\t\t\tenumerable\n\t\t});\n\t}\n\treturn ref$1;\n}\n\n//#endregion\n//#region get/index.ts\nfunction get(obj, key) {\n\tif (key == null) return unref(obj);\n\treturn unref(obj)[key];\n}\n\n//#endregion\n//#region isDefined/index.ts\nfunction isDefined(v) {\n\treturn unref(v) != null;\n}\n\n//#endregion\n//#region makeDestructurable/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction makeDestructurable(obj, arr) {\n\tif (typeof Symbol !== \"undefined\") {\n\t\tconst clone = { ...obj };\n\t\tObject.defineProperty(clone, Symbol.iterator, {\n\t\t\tenumerable: false,\n\t\t\tvalue() {\n\t\t\t\tlet index = 0;\n\t\t\t\treturn { next: () => ({\n\t\t\t\t\tvalue: arr[index++],\n\t\t\t\t\tdone: index > arr.length\n\t\t\t\t}) };\n\t\t\t}\n\t\t});\n\t\treturn clone;\n\t} else return Object.assign([...arr], obj);\n}\n\n//#endregion\n//#region reactify/index.ts\n/**\n* Converts plain function into a reactive function.\n* The converted function accepts refs as it's arguments\n* and returns a ComputedRef, with proper typing.\n*\n* @param fn - Source function\n* @param options - Options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactify(fn, options) {\n\tconst unrefFn = (options === null || options === void 0 ? void 0 : options.computedGetter) === false ? unref : toValue;\n\treturn function(...args) {\n\t\treturn computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n\t};\n}\n/** @deprecated use `reactify` instead */\nconst createReactiveFn = reactify;\n\n//#endregion\n//#region reactifyObject/index.ts\n/**\n* Apply `reactify` to an object\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n\tlet keys = [];\n\tlet options;\n\tif (Array.isArray(optionsOrKeys)) keys = optionsOrKeys;\n\telse {\n\t\toptions = optionsOrKeys;\n\t\tconst { includeOwnProperties = true } = optionsOrKeys;\n\t\tkeys.push(...Object.keys(obj));\n\t\tif (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj));\n\t}\n\treturn Object.fromEntries(keys.map((key) => {\n\t\tconst value = obj[key];\n\t\treturn [key, typeof value === \"function\" ? reactify(value.bind(obj), options) : value];\n\t}));\n}\n\n//#endregion\n//#region toReactive/index.ts\n/**\n* Converts ref to reactive.\n*\n* @see https://vueuse.org/toReactive\n* @param objectRef A ref of object\n*/\nfunction toReactive(objectRef) {\n\tif (!isRef(objectRef)) return reactive(objectRef);\n\treturn reactive(new Proxy({}, {\n\t\tget(_, p, receiver) {\n\t\t\treturn unref(Reflect.get(objectRef.value, p, receiver));\n\t\t},\n\t\tset(_, p, value) {\n\t\t\tif (isRef(objectRef.value[p]) && !isRef(value)) objectRef.value[p].value = value;\n\t\t\telse objectRef.value[p] = value;\n\t\t\treturn true;\n\t\t},\n\t\tdeleteProperty(_, p) {\n\t\t\treturn Reflect.deleteProperty(objectRef.value, p);\n\t\t},\n\t\thas(_, p) {\n\t\t\treturn Reflect.has(objectRef.value, p);\n\t\t},\n\t\townKeys() {\n\t\t\treturn Object.keys(objectRef.value);\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t};\n\t\t}\n\t}));\n}\n\n//#endregion\n//#region reactiveComputed/index.ts\n/**\n* Computed reactive object.\n*/\nfunction reactiveComputed(fn) {\n\treturn toReactive(computed(fn));\n}\n\n//#endregion\n//#region reactiveOmit/index.ts\n/**\n* Reactively omit fields from a reactive object\n*\n* @see https://vueuse.org/reactiveOmit\n*/\nfunction reactiveOmit(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\n//#endregion\n//#region reactivePick/index.ts\n/**\n* Reactively pick fields from a reactive object\n*\n* @see https://vueuse.org/reactivePick\n*/\nfunction reactivePick(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\n//#endregion\n//#region refAutoReset/index.ts\n/**\n* Create a ref which will be reset to the default value after some time.\n*\n* @see https://vueuse.org/refAutoReset\n* @param defaultValue The value which will be set.\n* @param afterMs A zero-or-greater delay in milliseconds.\n*/\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n\treturn customRef((track, trigger) => {\n\t\tlet value = toValue(defaultValue);\n\t\tlet timer;\n\t\tconst resetAfter = () => setTimeout(() => {\n\t\t\tvalue = toValue(defaultValue);\n\t\t\ttrigger();\n\t\t}, toValue(afterMs));\n\t\ttryOnScopeDispose(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = resetAfter();\n\t\t\t}\n\t\t};\n\t});\n}\n/** @deprecated use `refAutoReset` instead */\nconst autoResetRef = refAutoReset;\n\n//#endregion\n//#region useDebounceFn/index.ts\n/**\n* Debounce execution of a function.\n*\n* @see https://vueuse.org/useDebounceFn\n* @param fn A function to be executed after delay milliseconds debounced.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param options Options\n*\n* @return A new, debounce, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n\treturn createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\n//#endregion\n//#region refDebounced/index.ts\n/**\n* Debounce updates of a ref.\n*\n* @return A new debounced ref.\n*/\nfunction refDebounced(value, ms = 200, options = {}) {\n\tconst debounced = ref(toValue(value));\n\tconst updater = useDebounceFn(() => {\n\t\tdebounced.value = value.value;\n\t}, ms, options);\n\twatch(value, () => updater());\n\treturn shallowReadonly(debounced);\n}\n/** @deprecated use `refDebounced` instead */\nconst debouncedRef = refDebounced;\n/** @deprecated use `refDebounced` instead */\nconst useDebounce = refDebounced;\n\n//#endregion\n//#region refDefault/index.ts\n/**\n* Apply default value to a ref.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refDefault(source, defaultValue) {\n\treturn computed({\n\t\tget() {\n\t\t\tvar _source$value;\n\t\t\treturn (_source$value = source.value) !== null && _source$value !== void 0 ? _source$value : defaultValue;\n\t\t},\n\t\tset(value) {\n\t\t\tsource.value = value;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region refManualReset/index.ts\n/**\n* Create a ref with manual reset functionality.\n*\n* @see https://vueuse.org/refManualReset\n* @param defaultValue The value which will be set.\n*/\nfunction refManualReset(defaultValue) {\n\tlet value = toValue(defaultValue);\n\tlet trigger;\n\tconst reset = () => {\n\t\tvalue = toValue(defaultValue);\n\t\ttrigger();\n\t};\n\tconst refValue = customRef((track, _trigger) => {\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t}\n\t\t};\n\t});\n\trefValue.reset = reset;\n\treturn refValue;\n}\n\n//#endregion\n//#region useThrottleFn/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param fn A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n* to `callback` when the throttled-function is executed.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* (default value: 200)\n*\n* @param [trailing] if true, call fn again after the time is up (default value: false)\n*\n* @param [leading] if true, call fn on the leading edge of the ms timeout (default value: true)\n*\n* @param [rejectOnCancel] if true, reject the last call if it's been cancel (default value: false)\n*\n* @return A new, throttled, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n\treturn createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\n//#endregion\n//#region refThrottled/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param value Ref value to be watched with throttle effect\n* @param delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param trailing if true, update the value again after the delay time is up\n* @param leading if true, update the value on the leading edge of the ms timeout\n*/\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n\tif (delay <= 0) return value;\n\tconst throttled = ref(toValue(value));\n\tconst updater = useThrottleFn(() => {\n\t\tthrottled.value = value.value;\n\t}, delay, trailing, leading);\n\twatch(value, () => updater());\n\treturn throttled;\n}\n/** @deprecated use `refThrottled` instead */\nconst throttledRef = refThrottled;\n/** @deprecated use `refThrottled` instead */\nconst useThrottle = refThrottled;\n\n//#endregion\n//#region refWithControl/index.ts\n/**\n* Fine-grained controls over ref and its reactivity.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refWithControl(initial, options = {}) {\n\tlet source = initial;\n\tlet track;\n\tlet trigger;\n\tconst ref$1 = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\treturn get$1();\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset$1(v);\n\t\t\t}\n\t\t};\n\t});\n\tfunction get$1(tracking = true) {\n\t\tif (tracking) track();\n\t\treturn source;\n\t}\n\tfunction set$1(value, triggering = true) {\n\t\tvar _options$onBeforeChan, _options$onChanged;\n\t\tif (value === source) return;\n\t\tconst old = source;\n\t\tif (((_options$onBeforeChan = options.onBeforeChange) === null || _options$onBeforeChan === void 0 ? void 0 : _options$onBeforeChan.call(options, value, old)) === false) return;\n\t\tsource = value;\n\t\t(_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, value, old);\n\t\tif (triggering) trigger();\n\t}\n\t/**\n\t* Get the value without tracked in the reactivity system\n\t*/\n\tconst untrackedGet = () => get$1(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*/\n\tconst silentSet = (v) => set$1(v, false);\n\t/**\n\t* Get the value without tracked in the reactivity system.\n\t*\n\t* Alias for `untrackedGet()`\n\t*/\n\tconst peek = () => get$1(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*\n\t* Alias for `silentSet(v)`\n\t*/\n\tconst lay = (v) => set$1(v, false);\n\treturn extendRef(ref$1, {\n\t\tget: get$1,\n\t\tset: set$1,\n\t\tuntrackedGet,\n\t\tsilentSet,\n\t\tpeek,\n\t\tlay\n\t}, { enumerable: true });\n}\n/** @deprecated use `refWithControl` instead */\nconst controlledRef = refWithControl;\n\n//#endregion\n//#region set/index.ts\n/**\n* Shorthand for `ref.value = x`\n*/\nfunction set(...args) {\n\tif (args.length === 2) {\n\t\tconst [ref$1, value] = args;\n\t\tref$1.value = value;\n\t}\n\tif (args.length === 3) {\n\t\tconst [target, key, value] = args;\n\t\ttarget[key] = value;\n\t}\n}\n\n//#endregion\n//#region watchWithFilter/index.ts\nfunction watchWithFilter(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter,...watchOptions } = options;\n\treturn watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\n//#endregion\n//#region watchPausable/index.ts\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nfunction watchPausable(source, cb, options = {}) {\n\tconst { eventFilter: filter, initialState = \"active\",...watchOptions } = options;\n\tconst { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n\treturn {\n\t\tstop: watchWithFilter(source, cb, {\n\t\t\t...watchOptions,\n\t\t\teventFilter\n\t\t}),\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nconst pausableWatch = watchPausable;\n\n//#endregion\n//#region syncRef/index.ts\n/**\n* Two-way refs synchronization.\n* From the set theory perspective to restrict the option's type\n* Check in the following order:\n* 1. L = R\n* 2. L ∩ R ≠ ∅\n* 3. L ⊆ R\n* 4. L ∩ R = ∅\n*/\nfunction syncRef(left, right, ...[options]) {\n\tconst { flush = \"sync\", deep = false, immediate = true, direction = \"both\", transform = {} } = options || {};\n\tconst watchers = [];\n\tconst transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n\tconst transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n\tif (direction === \"both\" || direction === \"ltr\") watchers.push(watchPausable(left, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tright.value = transformLTR(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tif (direction === \"both\" || direction === \"rtl\") watchers.push(watchPausable(right, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tleft.value = transformRTL(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tconst stop = () => {\n\t\twatchers.forEach((w) => w.stop());\n\t};\n\treturn stop;\n}\n\n//#endregion\n//#region syncRefs/index.ts\n/**\n* Keep target ref(s) in sync with the source ref\n*\n* @param source source ref\n* @param targets\n*/\nfunction syncRefs(source, targets, options = {}) {\n\tconst { flush = \"sync\", deep = false, immediate = true } = options;\n\tconst targetsArray = toArray(targets);\n\treturn watch(source, (newValue) => targetsArray.forEach((target) => target.value = newValue), {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t});\n}\n\n//#endregion\n//#region toRefs/index.ts\n/**\n* Extended `toRefs` that also accepts refs of an object.\n*\n* @see https://vueuse.org/toRefs\n* @param objectRef A ref or normal object or array.\n* @param options Options\n*/\nfunction toRefs(objectRef, options = {}) {\n\tif (!isRef(objectRef)) return toRefs$1(objectRef);\n\tconst result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n\tfor (const key in objectRef.value) result[key] = customRef(() => ({\n\t\tget() {\n\t\t\treturn objectRef.value[key];\n\t\t},\n\t\tset(v) {\n\t\t\tvar _toValue;\n\t\t\tif ((_toValue = toValue(options.replaceRef)) !== null && _toValue !== void 0 ? _toValue : true) if (Array.isArray(objectRef.value)) {\n\t\t\t\tconst copy = [...objectRef.value];\n\t\t\t\tcopy[key] = v;\n\t\t\t\tobjectRef.value = copy;\n\t\t\t} else {\n\t\t\t\tconst newObject = {\n\t\t\t\t\t...objectRef.value,\n\t\t\t\t\t[key]: v\n\t\t\t\t};\n\t\t\t\tObject.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n\t\t\t\tobjectRef.value = newObject;\n\t\t\t}\n\t\t\telse objectRef.value[key] = v;\n\t\t}\n\t}));\n\treturn result;\n}\n\n//#endregion\n//#region tryOnBeforeMount/index.ts\n/**\n* Call onBeforeMount() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnBeforeMount(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onBeforeMount(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n\n//#endregion\n//#region tryOnBeforeUnmount/index.ts\n/**\n* Call onBeforeUnmount() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnBeforeUnmount(fn, target) {\n\tif (getLifeCycleTarget(target)) onBeforeUnmount(fn, target);\n}\n\n//#endregion\n//#region tryOnMounted/index.ts\n/**\n* Call onMounted() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnMounted(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onMounted(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n\n//#endregion\n//#region tryOnUnmounted/index.ts\n/**\n* Call onUnmounted() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnUnmounted(fn, target) {\n\tif (getLifeCycleTarget(target)) onUnmounted(fn, target);\n}\n\n//#endregion\n//#region until/index.ts\nfunction createUntil(r, isNot = false) {\n\tfunction toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch(r, (v) => {\n\t\t\t\tif (condition(v) !== isNot) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop === null || stop === void 0 ? void 0 : stop()));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBe(value, options) {\n\t\tif (!isRef(value)) return toMatch((v) => v === value, options);\n\t\tconst { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options !== null && options !== void 0 ? options : {};\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch([r, value], ([v1, v2]) => {\n\t\t\t\tif (isNot !== (v1 === v2)) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v1);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n\t\t\tstop === null || stop === void 0 || stop();\n\t\t\treturn toValue(r);\n\t\t}));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBeTruthy(options) {\n\t\treturn toMatch((v) => Boolean(v), options);\n\t}\n\tfunction toBeNull(options) {\n\t\treturn toBe(null, options);\n\t}\n\tfunction toBeUndefined(options) {\n\t\treturn toBe(void 0, options);\n\t}\n\tfunction toBeNaN(options) {\n\t\treturn toMatch(Number.isNaN, options);\n\t}\n\tfunction toContains(value, options) {\n\t\treturn toMatch((v) => {\n\t\t\tconst array = Array.from(v);\n\t\t\treturn array.includes(value) || array.includes(toValue(value));\n\t\t}, options);\n\t}\n\tfunction changed(options) {\n\t\treturn changedTimes(1, options);\n\t}\n\tfunction changedTimes(n = 1, options) {\n\t\tlet count = -1;\n\t\treturn toMatch(() => {\n\t\t\tcount += 1;\n\t\t\treturn count >= n;\n\t\t}, options);\n\t}\n\tif (Array.isArray(toValue(r))) return {\n\t\ttoMatch,\n\t\ttoContains,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n\telse return {\n\t\ttoMatch,\n\t\ttoBe,\n\t\ttoBeTruthy,\n\t\ttoBeNull,\n\t\ttoBeNaN,\n\t\ttoBeUndefined,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n}\nfunction until(r) {\n\treturn createUntil(r);\n}\n\n//#endregion\n//#region useArrayDifference/index.ts\nfunction defaultComparator(value, othVal) {\n\treturn value === othVal;\n}\n/**\n* Reactive get array difference of two array\n* @see https://vueuse.org/useArrayDifference\n* @returns - the difference of two array\n* @param args\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayDifference(...args) {\n\tvar _args$, _args$2;\n\tconst list = args[0];\n\tconst values = args[1];\n\tlet compareFn = (_args$ = args[2]) !== null && _args$ !== void 0 ? _args$ : defaultComparator;\n\tconst { symmetric = false } = (_args$2 = args[3]) !== null && _args$2 !== void 0 ? _args$2 : {};\n\tif (typeof compareFn === \"string\") {\n\t\tconst key = compareFn;\n\t\tcompareFn = (value, othVal) => value[key] === othVal[key];\n\t}\n\tconst diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n\tif (symmetric) {\n\t\tconst diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1));\n\t\treturn computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1));\n\t} else return diff1;\n}\n\n//#endregion\n//#region useArrayEvery/index.ts\n/**\n* Reactive `Array.every`\n*\n* @see https://vueuse.org/useArrayEvery\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for every element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayEvery(list, fn) {\n\treturn computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayFilter/index.ts\n/**\n* Reactive `Array.filter`\n*\n* @see https://vueuse.org/useArrayFilter\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a shallow copy of a portion of the given array, filtered down to just the elements from the given array that pass the test implemented by the provided function. If no elements pass the test, an empty array will be returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFilter(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\n//#endregion\n//#region useArrayFind/index.ts\n/**\n* Reactive `Array.find`\n*\n* @see https://vueuse.org/useArrayFind\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the first element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFind(list, fn) {\n\treturn computed(() => toValue(toValue(list).find((element, index, array) => fn(toValue(element), index, array))));\n}\n\n//#endregion\n//#region useArrayFindIndex/index.ts\n/**\n* Reactive `Array.findIndex`\n*\n* @see https://vueuse.org/useArrayFindIndex\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the index of the first element in the array that passes the test. Otherwise, \"-1\".\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindIndex(list, fn) {\n\treturn computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayFindLast/index.ts\nfunction findLast(arr, cb) {\n\tlet index = arr.length;\n\twhile (index-- > 0) if (cb(arr[index], index, arr)) return arr[index];\n}\n/**\n* Reactive `Array.findLast`\n*\n* @see https://vueuse.org/useArrayFindLast\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the last element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindLast(list, fn) {\n\treturn computed(() => toValue(!Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))));\n}\n\n//#endregion\n//#region useArrayIncludes/index.ts\nfunction isArrayIncludesOptions(obj) {\n\treturn isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\n/**\n* Reactive `Array.includes`\n*\n* @see https://vueuse.org/useArrayIncludes\n*\n* @returns true if the `value` is found in the array. Otherwise, false.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayIncludes(...args) {\n\tvar _comparator;\n\tconst list = args[0];\n\tconst value = args[1];\n\tlet comparator = args[2];\n\tlet formIndex = 0;\n\tif (isArrayIncludesOptions(comparator)) {\n\t\tvar _comparator$fromIndex;\n\t\tformIndex = (_comparator$fromIndex = comparator.fromIndex) !== null && _comparator$fromIndex !== void 0 ? _comparator$fromIndex : 0;\n\t\tcomparator = comparator.comparator;\n\t}\n\tif (typeof comparator === \"string\") {\n\t\tconst key = comparator;\n\t\tcomparator = (element, value$1) => element[key] === toValue(value$1);\n\t}\n\tcomparator = (_comparator = comparator) !== null && _comparator !== void 0 ? _comparator : ((element, value$1) => element === toValue(value$1));\n\treturn computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))));\n}\n\n//#endregion\n//#region useArrayJoin/index.ts\n/**\n* Reactive `Array.join`\n*\n* @see https://vueuse.org/useArrayJoin\n* @param list - the array was called upon.\n* @param separator - a string to separate each pair of adjacent elements of the array. If omitted, the array elements are separated with a comma (\",\").\n*\n* @returns a string with all array elements joined. If arr.length is 0, the empty string is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayJoin(list, separator) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\n//#endregion\n//#region useArrayMap/index.ts\n/**\n* Reactive `Array.map`\n*\n* @see https://vueuse.org/useArrayMap\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a new array with each element being the result of the callback function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayMap(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\n//#endregion\n//#region useArrayReduce/index.ts\n/**\n* Reactive `Array.reduce`\n*\n* @see https://vueuse.org/useArrayReduce\n* @param list - the array was called upon.\n* @param reducer - a \"reducer\" function.\n* @param args\n*\n* @returns the value that results from running the \"reducer\" callback function to completion over the entire array.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayReduce(list, reducer, ...args) {\n\tconst reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n\treturn computed(() => {\n\t\tconst resolved = toValue(list);\n\t\treturn args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n\t});\n}\n\n//#endregion\n//#region useArraySome/index.ts\n/**\n* Reactive `Array.some`\n*\n* @see https://vueuse.org/useArraySome\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for any element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArraySome(list, fn) {\n\treturn computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\n//#endregion\n//#region useArrayUnique/index.ts\nfunction uniq(array) {\n\treturn Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n\treturn array.reduce((acc, v) => {\n\t\tif (!acc.some((x) => fn(v, x, array))) acc.push(v);\n\t\treturn acc;\n\t}, []);\n}\n/**\n* reactive unique array\n* @see https://vueuse.org/useArrayUnique\n* @param list - the array was called upon.\n* @param compareFn\n* @returns A computed ref that returns a unique array of items.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayUnique(list, compareFn) {\n\treturn computed(() => {\n\t\tconst resolvedList = toValue(list).map((element) => toValue(element));\n\t\treturn compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n\t});\n}\n\n//#endregion\n//#region useCounter/index.ts\n/**\n* Basic counter with utility functions.\n*\n* @see https://vueuse.org/useCounter\n* @param [initialValue]\n* @param options\n*/\nfunction useCounter(initialValue = 0, options = {}) {\n\tlet _initialValue = unref(initialValue);\n\tconst count = shallowRef(initialValue);\n\tconst { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = options;\n\tconst inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n\tconst dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n\tconst get$1 = () => count.value;\n\tconst set$1 = (val) => count.value = Math.max(min, Math.min(max, val));\n\tconst reset = (val = _initialValue) => {\n\t\t_initialValue = val;\n\t\treturn set$1(val);\n\t};\n\treturn {\n\t\tcount: shallowReadonly(count),\n\t\tinc,\n\t\tdec,\n\t\tget: get$1,\n\t\tset: set$1,\n\t\treset\n\t};\n}\n\n//#endregion\n//#region useDateFormat/index.ts\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n\tlet m = hours < 12 ? \"AM\" : \"PM\";\n\tif (hasPeriod) m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n\treturn isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n\tconst suffixes = [\n\t\t\"th\",\n\t\t\"st\",\n\t\t\"nd\",\n\t\t\"rd\"\n\t];\n\tconst v = num % 100;\n\treturn num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n\tvar _options$customMeridi;\n\tconst years = date.getFullYear();\n\tconst month = date.getMonth();\n\tconst days = date.getDate();\n\tconst hours = date.getHours();\n\tconst minutes = date.getMinutes();\n\tconst seconds = date.getSeconds();\n\tconst milliseconds = date.getMilliseconds();\n\tconst day = date.getDay();\n\tconst meridiem = (_options$customMeridi = options.customMeridiem) !== null && _options$customMeridi !== void 0 ? _options$customMeridi : defaultMeridiem;\n\tconst stripTimeZone = (dateString) => {\n\t\tvar _dateString$split$;\n\t\treturn (_dateString$split$ = dateString.split(\" \")[1]) !== null && _dateString$split$ !== void 0 ? _dateString$split$ : \"\";\n\t};\n\tconst matches = {\n\t\tYo: () => formatOrdinal(years),\n\t\tYY: () => String(years).slice(-2),\n\t\tYYYY: () => years,\n\t\tM: () => month + 1,\n\t\tMo: () => formatOrdinal(month + 1),\n\t\tMM: () => `${month + 1}`.padStart(2, \"0\"),\n\t\tMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n\t\tMMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n\t\tD: () => String(days),\n\t\tDo: () => formatOrdinal(days),\n\t\tDD: () => `${days}`.padStart(2, \"0\"),\n\t\tH: () => String(hours),\n\t\tHo: () => formatOrdinal(hours),\n\t\tHH: () => `${hours}`.padStart(2, \"0\"),\n\t\th: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n\t\tho: () => formatOrdinal(hours % 12 || 12),\n\t\thh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n\t\tm: () => String(minutes),\n\t\tmo: () => formatOrdinal(minutes),\n\t\tmm: () => `${minutes}`.padStart(2, \"0\"),\n\t\ts: () => String(seconds),\n\t\tso: () => formatOrdinal(seconds),\n\t\tss: () => `${seconds}`.padStart(2, \"0\"),\n\t\tSSS: () => `${milliseconds}`.padStart(3, \"0\"),\n\t\td: () => day,\n\t\tdd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n\t\tddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n\t\tdddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n\t\tA: () => meridiem(hours, minutes),\n\t\tAA: () => meridiem(hours, minutes, false, true),\n\t\ta: () => meridiem(hours, minutes, true),\n\t\taa: () => meridiem(hours, minutes, true, true),\n\t\tz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"longOffset\" }))\n\t};\n\treturn formatStr.replace(REGEX_FORMAT, (match, $1) => {\n\t\tvar _ref, _matches$match;\n\t\treturn (_ref = $1 !== null && $1 !== void 0 ? $1 : (_matches$match = matches[match]) === null || _matches$match === void 0 ? void 0 : _matches$match.call(matches)) !== null && _ref !== void 0 ? _ref : match;\n\t});\n}\nfunction normalizeDate(date) {\n\tif (date === null) return /* @__PURE__ */ new Date(NaN);\n\tif (date === void 0) return /* @__PURE__ */ new Date();\n\tif (date instanceof Date) return new Date(date);\n\tif (typeof date === \"string\" && !/Z$/i.test(date)) {\n\t\tconst d = date.match(REGEX_PARSE);\n\t\tif (d) {\n\t\t\tconst m = d[2] - 1 || 0;\n\t\t\tconst ms = (d[7] || \"0\").substring(0, 3);\n\t\t\treturn new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n\t\t}\n\t}\n\treturn new Date(date);\n}\n/**\n* Get the formatted date according to the string of tokens passed in.\n*\n* @see https://vueuse.org/useDateFormat\n* @param date - The date to format, can either be a `Date` object, a timestamp, or a string\n* @param formatStr - The combination of tokens to format the date\n* @param options - UseDateFormatOptions\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n\treturn computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\n//#endregion\n//#region useIntervalFn/index.ts\n/**\n* Wrapper for `setInterval` with controls\n*\n* @see https://vueuse.org/useIntervalFn\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tlet timer = null;\n\tconst isActive = shallowRef(false);\n\tfunction clean() {\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tclean();\n\t}\n\tfunction resume() {\n\t\tconst intervalValue = toValue(interval);\n\t\tif (intervalValue <= 0) return;\n\t\tisActive.value = true;\n\t\tif (immediateCallback) cb();\n\t\tclean();\n\t\tif (isActive.value) timer = setInterval(cb, intervalValue);\n\t}\n\tif (immediate && isClient) resume();\n\tif (isRef(interval) || typeof interval === \"function\") tryOnScopeDispose(watch(interval, () => {\n\t\tif (isActive.value && isClient) resume();\n\t}));\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n\n//#endregion\n//#region useInterval/index.ts\nfunction useInterval(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, immediate = true, callback } = options;\n\tconst counter = shallowRef(0);\n\tconst update = () => counter.value += 1;\n\tconst reset = () => {\n\t\tcounter.value = 0;\n\t};\n\tconst controls = useIntervalFn(callback ? () => {\n\t\tupdate();\n\t\tcallback(counter.value);\n\t} : update, interval, { immediate });\n\tif (exposeControls) return {\n\t\tcounter: shallowReadonly(counter),\n\t\treset,\n\t\t...controls\n\t};\n\telse return shallowReadonly(counter);\n}\n\n//#endregion\n//#region useLastChanged/index.ts\nfunction useLastChanged(source, options = {}) {\n\tvar _options$initialValue;\n\tconst ms = shallowRef((_options$initialValue = options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : null);\n\twatch(source, () => ms.value = timestamp(), options);\n\treturn shallowReadonly(ms);\n}\n\n//#endregion\n//#region useTimeoutFn/index.ts\n/**\n* Wrapper for `setTimeout` with controls.\n*\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useTimeoutFn(cb, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tfunction clear() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t}\n\tfunction stop() {\n\t\tisPending.value = false;\n\t\tclear();\n\t}\n\tfunction start(...args) {\n\t\tif (immediateCallback) cb();\n\t\tclear();\n\t\tisPending.value = true;\n\t\ttimer = setTimeout(() => {\n\t\t\tisPending.value = false;\n\t\t\ttimer = void 0;\n\t\t\tcb(...args);\n\t\t}, toValue(interval));\n\t}\n\tif (immediate) {\n\t\tisPending.value = true;\n\t\tif (isClient) start();\n\t}\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisPending: shallowReadonly(isPending),\n\t\tstart,\n\t\tstop\n\t};\n}\n\n//#endregion\n//#region useTimeout/index.ts\nfunction useTimeout(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, callback } = options;\n\tconst controls = useTimeoutFn(callback !== null && callback !== void 0 ? callback : noop, interval, options);\n\tconst ready = computed(() => !controls.isPending.value);\n\tif (exposeControls) return {\n\t\tready,\n\t\t...controls\n\t};\n\telse return ready;\n}\n\n//#endregion\n//#region useToNumber/index.ts\n/**\n* Reactively convert a string ref to number.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToNumber(value, options = {}) {\n\tconst { method = \"parseFloat\", radix, nanToZero } = options;\n\treturn computed(() => {\n\t\tlet resolved = toValue(value);\n\t\tif (typeof method === \"function\") resolved = method(resolved);\n\t\telse if (typeof resolved === \"string\") resolved = Number[method](resolved, radix);\n\t\tif (nanToZero && Number.isNaN(resolved)) resolved = 0;\n\t\treturn resolved;\n\t});\n}\n\n//#endregion\n//#region useToString/index.ts\n/**\n* Reactively convert a ref to string.\n*\n* @see https://vueuse.org/useToString\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToString(value) {\n\treturn computed(() => `${toValue(value)}`);\n}\n\n//#endregion\n//#region useToggle/index.ts\n/**\n* A boolean ref with a toggler\n*\n* @see https://vueuse.org/useToggle\n* @param [initialValue]\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToggle(initialValue = false, options = {}) {\n\tconst { truthyValue = true, falsyValue = false } = options;\n\tconst valueIsRef = isRef(initialValue);\n\tconst _value = shallowRef(initialValue);\n\tfunction toggle(value) {\n\t\tif (arguments.length) {\n\t\t\t_value.value = value;\n\t\t\treturn _value.value;\n\t\t} else {\n\t\t\tconst truthy = toValue(truthyValue);\n\t\t\t_value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n\t\t\treturn _value.value;\n\t\t}\n\t}\n\tif (valueIsRef) return toggle;\n\telse return [_value, toggle];\n}\n\n//#endregion\n//#region watchArray/index.ts\n/**\n* Watch for an array with additions and removals.\n*\n* @see https://vueuse.org/watchArray\n*/\nfunction watchArray(source, cb, options) {\n\tlet oldList = (options === null || options === void 0 ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue(source)];\n\treturn watch(source, (newList, _, onCleanup) => {\n\t\tconst oldListRemains = Array.from({ length: oldList.length });\n\t\tconst added = [];\n\t\tfor (const obj of newList) {\n\t\t\tlet found = false;\n\t\t\tfor (let i = 0; i < oldList.length; i++) if (!oldListRemains[i] && obj === oldList[i]) {\n\t\t\t\toldListRemains[i] = true;\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!found) added.push(obj);\n\t\t}\n\t\tconst removed = oldList.filter((_$1, i) => !oldListRemains[i]);\n\t\tcb(newList, oldList, added, removed, onCleanup);\n\t\toldList = [...newList];\n\t}, options);\n}\n\n//#endregion\n//#region watchAtMost/index.ts\nfunction watchAtMost(source, cb, options) {\n\tconst { count,...watchOptions } = options;\n\tconst current = shallowRef(0);\n\tconst { stop, resume, pause } = watchWithFilter(source, (...args) => {\n\t\tcurrent.value += 1;\n\t\tif (current.value >= toValue(count)) nextTick(() => stop());\n\t\tcb(...args);\n\t}, watchOptions);\n\treturn {\n\t\tcount: current,\n\t\tstop,\n\t\tresume,\n\t\tpause\n\t};\n}\n\n//#endregion\n//#region watchDebounced/index.ts\nfunction watchDebounced(source, cb, options = {}) {\n\tconst { debounce = 0, maxWait = void 0,...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: debounceFilter(debounce, { maxWait })\n\t});\n}\n/** @deprecated use `watchDebounced` instead */\nconst debouncedWatch = watchDebounced;\n\n//#endregion\n//#region watchDeep/index.ts\n/**\n* Shorthand for watching value with {deep: true}\n*\n* @see https://vueuse.org/watchDeep\n*/\nfunction watchDeep(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tdeep: true\n\t});\n}\n\n//#endregion\n//#region watchIgnorable/index.ts\nfunction watchIgnorable(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter,...watchOptions } = options;\n\tconst filteredCb = createFilterWrapper(eventFilter, cb);\n\tlet ignoreUpdates;\n\tlet ignorePrevAsyncUpdates;\n\tlet stop;\n\tif (watchOptions.flush === \"sync\") {\n\t\tlet ignore = false;\n\t\tignorePrevAsyncUpdates = () => {};\n\t\tignoreUpdates = (updater) => {\n\t\t\tignore = true;\n\t\t\tupdater();\n\t\t\tignore = false;\n\t\t};\n\t\tstop = watch(source, (...args) => {\n\t\t\tif (!ignore) filteredCb(...args);\n\t\t}, watchOptions);\n\t} else {\n\t\tconst disposables = [];\n\t\tlet ignoreCounter = 0;\n\t\tlet syncCounter = 0;\n\t\tignorePrevAsyncUpdates = () => {\n\t\t\tignoreCounter = syncCounter;\n\t\t};\n\t\tdisposables.push(watch(source, () => {\n\t\t\tsyncCounter++;\n\t\t}, {\n\t\t\t...watchOptions,\n\t\t\tflush: \"sync\"\n\t\t}));\n\t\tignoreUpdates = (updater) => {\n\t\t\tconst syncCounterPrev = syncCounter;\n\t\t\tupdater();\n\t\t\tignoreCounter += syncCounter - syncCounterPrev;\n\t\t};\n\t\tdisposables.push(watch(source, (...args) => {\n\t\t\tconst ignore = ignoreCounter > 0 && ignoreCounter === syncCounter;\n\t\t\tignoreCounter = 0;\n\t\t\tsyncCounter = 0;\n\t\t\tif (ignore) return;\n\t\t\tfilteredCb(...args);\n\t\t}, watchOptions));\n\t\tstop = () => {\n\t\t\tdisposables.forEach((fn) => fn());\n\t\t};\n\t}\n\treturn {\n\t\tstop,\n\t\tignoreUpdates,\n\t\tignorePrevAsyncUpdates\n\t};\n}\n/** @deprecated use `watchIgnorable` instead */\nconst ignorableWatch = watchIgnorable;\n\n//#endregion\n//#region watchImmediate/index.ts\n/**\n* Shorthand for watching value with {immediate: true}\n*\n* @see https://vueuse.org/watchImmediate\n*/\nfunction watchImmediate(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\timmediate: true\n\t});\n}\n\n//#endregion\n//#region watchOnce/index.ts\n/**\n* Shorthand for watching value with { once: true }\n*\n* @see https://vueuse.org/watchOnce\n*/\nfunction watchOnce(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tonce: true\n\t});\n}\n\n//#endregion\n//#region watchThrottled/index.ts\nfunction watchThrottled(source, cb, options = {}) {\n\tconst { throttle = 0, trailing = true, leading = true,...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: throttleFilter(throttle, trailing, leading)\n\t});\n}\n/** @deprecated use `watchThrottled` instead */\nconst throttledWatch = watchThrottled;\n\n//#endregion\n//#region watchTriggerable/index.ts\nfunction watchTriggerable(source, cb, options = {}) {\n\tlet cleanupFn;\n\tfunction onEffect() {\n\t\tif (!cleanupFn) return;\n\t\tconst fn = cleanupFn;\n\t\tcleanupFn = void 0;\n\t\tfn();\n\t}\n\t/** Register the function `cleanupFn` */\n\tfunction onCleanup(callback) {\n\t\tcleanupFn = callback;\n\t}\n\tconst _cb = (value, oldValue) => {\n\t\tonEffect();\n\t\treturn cb(value, oldValue, onCleanup);\n\t};\n\tconst res = watchIgnorable(source, _cb, options);\n\tconst { ignoreUpdates } = res;\n\tconst trigger = () => {\n\t\tlet res$1;\n\t\tignoreUpdates(() => {\n\t\t\tres$1 = _cb(getWatchSources(source), getOldValue(source));\n\t\t});\n\t\treturn res$1;\n\t};\n\treturn {\n\t\t...res,\n\t\ttrigger\n\t};\n}\nfunction getWatchSources(sources) {\n\tif (isReactive(sources)) return sources;\n\tif (Array.isArray(sources)) return sources.map((item) => toValue(item));\n\treturn toValue(sources);\n}\nfunction getOldValue(source) {\n\treturn Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\n//#endregion\n//#region whenever/index.ts\n/**\n* Shorthand for watching value to be truthy\n*\n* @see https://vueuse.org/whenever\n*/\nfunction whenever(source, cb, options) {\n\tconst stop = watch(source, (v, ov, onInvalidate) => {\n\t\tif (v) {\n\t\t\tif (options === null || options === void 0 ? void 0 : options.once) nextTick(() => stop());\n\t\t\tcb(v, ov, onInvalidate);\n\t\t}\n\t}, {\n\t\t...options,\n\t\tonce: false\n\t});\n\treturn stop;\n}\n\n//#endregion\nexport { assert, autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, debouncedRef, debouncedWatch, eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refManualReset, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, throttledRef, throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };","import { SmartAbortController } from '@delta-comic/request'\nimport { useGlobalVar } from '@delta-comic/utils'\nimport { until } from '@vueuse/core'\nimport { markRaw, shallowRef, type Raw, ref, type Ref, computed } from 'vue'\n\ntype RawGenerator<T> = (\n abortSignal: AbortSignal,\n that: Stream<T>\n) => IterableIterator<T[], void, Stream<T>> | AsyncIterableIterator<T[], void, Stream<T>>\nconst generatorMap = new Map<Stream<any>, RawGenerator<any>>()\n/**\n * _(网络)_ 数据流\n */\nexport type RStream<T> = Raw<Stream<T>>\n/**\n * 可迭代 _(网络)_ 数据流\n */\nexport class Stream<T> implements AsyncIterableIterator<T[], void> {\n /**\n * 使用`Stream.create`代替`new Stream`\n */\n private constructor(rawGenerator: RawGenerator<T>) {\n this.generator = rawGenerator(this.abortController.signal, this)\n generatorMap.set(this, rawGenerator)\n // console.trace('stream new', this)\n }\n private static _this\n static {\n this._this = useGlobalVar(this, 'data/Stream')\n }\n public static isStream(stream: any): stream is Stream<any> {\n return stream instanceof this._this\n }\n public static create<T>(generator: RawGenerator<T>): RStream<T> {\n const stream = new this._this<T>(generator)\n return markRaw(stream)\n }\n [x: symbol]: any\n private abortController = new SmartAbortController()\n private generator\n private _setupData = new Array<T>()\n /** 初始存在的数据(置顶) */\n public setupData(data: T[]) {\n this._setupData.push(...data)\n this.data.value.unshift(...data)\n return this\n }\n public async next(igRequesting = false): Promise<IteratorResult<T[], void>> {\n try {\n if (!igRequesting) {\n await until(this.isRequesting).toBe(false)\n this.isRequesting.value = true\n }\n if (this._isDone) {\n if (!igRequesting) this.isRequesting.value = false\n return { done: true, value: undefined }\n }\n if (igRequesting) console.log('igRequesting next')\n const { value, done } = await this.generator.next(this)\n this.isDone.value = done ?? false\n if (!igRequesting) this.isRequesting.value = false\n if (done) return { done: true, value: undefined }\n this.data.value.push(...value)\n return { value, done }\n } catch (error) {\n if (!igRequesting) this.isRequesting.value = false\n this.error.value = error as Error\n throw error\n }\n }\n public async return(): Promise<IteratorResult<T[], void>> {\n return (await this.generator.return?.()) ?? { value: undefined, done: true }\n }\n public async throw(e?: any): Promise<IteratorResult<T[], void>> {\n return (await this.generator.throw?.(e)) ?? { value: undefined, done: true }\n }\n /** 重置 */\n public reset() {\n const rawGenerator = generatorMap.get(this)!\n this.generator = rawGenerator(this.abortController.signal, this)\n this.total.value = NaN\n this.page.value = 0\n this.pageSize.value = NaN\n this.data.value = this._setupData\n this.isDone.value = false\n this.isRequesting.value = false\n this.error.value = undefined\n }\n /** 重试 */\n public async retry() {\n this.page.value--\n return this.next()\n }\n\n /** 一次性全部加载 */\n public async nextToDone() {\n if (isNaN(this._pages)) await this.next(true)\n const promises = []\n // e.g. p:1 ps:20 2->20\n for (let index = this._page + 1; index <= this._pages; index++) promises.push(this.next(true))\n await Promise.all(promises)\n return this._data\n }\n\n /** 停止正在进行的请求 */\n public stop() {\n this.abortController.abort()\n this.isRequesting.value = false\n }\n public [Symbol.asyncIterator]() {\n return this\n }\n\n /** 错误(如果有) */\n public error = shallowRef<void | Error>()\n\n /** 数据 */\n public data = ref<T[]>([]) as Ref<T[]>\n /** 数据 */\n public get _data() {\n return this.data.value\n }\n /** 当前页 */\n public page = shallowRef(0)\n /** 当前页 */\n public get _page() {\n return this.page.value\n }\n /** 总页数 */\n public pages = shallowRef(NaN)\n /** 总页数 */\n public get _pages() {\n return this.pages.value\n }\n /** 总条目数 */\n public total = shallowRef(NaN)\n /** 总条目数 */\n public get _total() {\n return this.total.value\n }\n /** 单页条目数 */\n public pageSize = shallowRef(NaN)\n /** 单页条目数 */\n public get _pageSize() {\n return this.pageSize.value\n }\n /** 数据当前总数 */\n public length = computed(() => this.data.value.length)\n /** 数据当前总数 */\n public get _length() {\n return this.data.value.length\n }\n /** 是否正在网络请求 */\n public isRequesting = shallowRef(false)\n /** 是否正在网络请求 */\n public get _isRequesting() {\n return this.isRequesting.value\n }\n /** 是否全部获取完成 */\n public isDone = shallowRef(false)\n /** 是否全部获取完成 */\n public get _isDone() {\n return this.isDone.value\n }\n /** 是否无结果 */\n public isNoData = computed(() => this.isDone.value && this.isEmpty.value)\n /** 是否无结果 */\n public get _isNoData() {\n return this.isNoData.value\n }\n /** 是否当前为空 */\n public isEmpty = computed(() => this.length.value === 0)\n /** 是否当前为空 */\n public get _isEmpty() {\n return this.isEmpty.value\n }\n}\nexport const callbackToPromise = <T = void>(\n fn: (resolve: (result: T | PromiseLike<T>) => void) => any\n) => {\n const { resolve, promise } = Promise.withResolvers<T>()\n fn(resolve)\n return promise\n}","/**\n * 可以结构化的数据,调用`toJSON`获取纯粹的json(没有get/set或method)\n */\nexport class Struct<TRaw extends object> {\n public toJSON() {\n return <TRaw>JSON.parse(JSON.stringify(this.$$raw))\n }\n /**\n * @param $$raw 一个纯粹json对象,不可以是高级对象\n */\n constructor(protected $$raw: TRaw) {}\n public static toRaw<T extends object, TRaw = T extends Struct<infer TR> ? TR : T>(item: T): TRaw {\n if (item instanceof Struct) return item.toJSON()\n return item as any\n }\n}","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import dayjs from 'dayjs'\nimport { type Component } from 'vue'\n\nimport type { ContentType } from './content'\nimport type { Item } from './item'\nimport type { User } from './user'\n\nimport { SourcedKeyMap, Struct, type MetaData, type RStream } from '../struct'\n\nexport interface RawComment {\n sender: User\n content: { type: 'string' | 'html'; text: string }\n time: number\n id: string\n childrenCount: number\n likeCount: number\n isLiked: boolean\n reported: boolean\n $$plugin: string\n $$meta?: MetaData\n isTop: boolean\n}\n\nexport type CommentRow = Component<{ comment: Comment; item: Item; parentComment?: Comment }>\n\nexport abstract class Comment extends Struct<RawComment> implements RawComment {\n public static commentRow = SourcedKeyMap.create<ContentType, CommentRow>()\n\n constructor(v: RawComment) {\n super(v)\n this.content = v.content\n this.time = v.time\n this.id = v.id\n this.childrenCount = v.childrenCount\n this.likeCount = v.likeCount\n this.isLiked = v.isLiked\n this.reported = v.reported\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n this.isTop = v.isTop\n }\n public abstract sender: User\n public content: { type: 'string' | 'html'; text: string }\n public time: number\n public get $time() {\n return dayjs(this.time)\n }\n public id: string\n public childrenCount: number\n public likeCount: number\n public isTop: boolean\n public isLiked: boolean\n public reported: boolean\n public $$plugin: string\n public $$meta?: MetaData\n public abstract like(signal?: AbortSignal): PromiseLike<boolean>\n public abstract report(signal?: AbortSignal): PromiseLike<any>\n public abstract sendComment(text: string, signal?: AbortSignal): PromiseLike<any>\n public abstract children: RStream<Comment>\n}","import { Struct, type MetaData } from '../struct'\nexport interface RawEp {\n name: string\n index: string\n $$plugin: string\n $$meta?: MetaData\n}\nexport class Ep extends Struct<RawEp> implements RawEp {\n public name: string\n public index: string\n public $$plugin: string\n public $$meta?: MetaData\n constructor(v: RawEp) {\n super(v)\n this.name = v.name\n this.index = v.index\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n }\n}","import { useGlobalVar } from '@delta-comic/utils'\nimport { isString } from 'es-toolkit/compat'\nimport { shallowReactive } from 'vue'\n\nimport { SourcedKeyMap, Struct, type MetaData } from '../struct'\n\nexport type ProcessInstance = (\n nowPath: string,\n resource: Resource\n) => Promise<[path: string, exit: boolean]>\nexport interface ProcessStep {\n referenceName: string\n ignoreExit?: boolean\n}\nexport type ProcessStep_ = ProcessStep | string\n\nexport interface ResourceType {\n type: string\n urls: string[]\n test: (url: string, signal: AbortSignal) => PromiseLike<void>\n}\nexport interface RawResource {\n $$plugin: string\n $$meta?: MetaData\n pathname: string\n type: string\n processSteps?: ProcessStep_[]\n}\nexport class Resource extends Struct<RawResource> implements RawResource {\n public static processInstances = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, referenceName: string], ProcessInstance>(),\n 'uni/resource/processInstances'\n )\n\n public static fork = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, type: string], ResourceType>(),\n 'uni/resource/fork'\n )\n public static precedenceFork = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, type: string], string>(),\n 'uni/resource/precedenceFork'\n )\n\n public static is(value: unknown): value is Resource {\n return value instanceof this\n }\n public static create(v: RawResource): Resource {\n return new this(v)\n }\n protected constructor(v: RawResource) {\n super(v)\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n this.pathname = v.pathname\n this.type = v.type\n this.processSteps = (v.processSteps ?? []).map<ProcessStep>(v =>\n isString(v) ? { referenceName: v, ignoreExit: false } : v\n )\n }\n public type: string\n public pathname: string\n public processSteps: ProcessStep[]\n public $$meta?: MetaData\n public $$plugin: string\n public async getUrl(): Promise<string> {\n let resultPath = this.pathname\n for (const option of this.processSteps) {\n // preflight\n const instance = Resource.processInstances.get([this.$$plugin, option.referenceName])\n if (!instance) {\n console.warn(\n `[Resource.getUrl] process not found, fullname: [${this.$$plugin}, ${option.referenceName}]`\n )\n continue\n }\n\n // call\n const result = await instance(resultPath, this)\n resultPath = result[0]\n if (option.ignoreExit || !result[1]) continue\n break\n }\n if (!URL.canParse(resultPath)) return `${this.getThisFork()}/${resultPath}`\n return resultPath\n }\n public omittedForks = shallowReactive(new Set<string>())\n public getThisFork() {\n const all = new Set(Resource.fork.get([this.$$plugin, this.type])?.urls ?? [])\n if (this.omittedForks.size == 0)\n var fork: string | undefined = Resource.precedenceFork.get([this.$$plugin, this.type])\n else {\n const diff = Array.from(all.difference(this.omittedForks).values())\n var fork: string | undefined = diff[0]\n }\n if (!fork)\n throw new Error(\n `[Resource.getThisFork] fork not found, type: [${this.$$plugin}, ${this.type}]`\n )\n return fork\n }\n public localChangeFork() {\n const all = new Set(Resource.fork.get([this.$$plugin, this.type])?.urls ?? [])\n this.omittedForks.add(this.getThisFork())\n const isEmptied = all.difference(this.omittedForks).size != 0\n if (isEmptied) this.omittedForks.clear()\n return isEmptied\n }\n}","import type { MetaData } from '../struct'\n\nimport { Resource, type RawResource, type ProcessStep_ } from './resource'\n\nexport interface RawImage {\n $$plugin: string\n $$meta?: MetaData\n path: string\n forkNamespace: string\n processSteps?: ProcessStep_[]\n}\n\nexport class Image extends Resource {\n public static override is(value: unknown): value is Image {\n return value instanceof this\n }\n public static override create(v: RawResource | RawImage, aspect?: ImageAspect): Image {\n return new this(v, aspect)\n }\n protected constructor(v: RawResource | RawImage, aspect?: ImageAspect) {\n if ('forkNamespace' in v)\n super({\n $$plugin: v.$$plugin,\n $$meta: { ...v.$$meta, ...aspect },\n pathname: v.path,\n type: v.forkNamespace,\n processSteps: v.processSteps\n })\n else super(v)\n }\n public get aspect() {\n return this.$$meta! as Partial<ImageAspect>\n }\n public set aspect(v) {\n this.$$meta ??= {}\n this.$$meta.width = v.width\n this.$$meta.height = v.height\n }\n}\nexport interface ImageAspect {\n width: number\n height: number\n}\nexport type Image_ = string | Image","import { useGlobalVar } from '@delta-comic/utils'\nimport dayjs from 'dayjs'\nimport { type Component } from 'vue'\n\nimport type { RawResource } from './resource'\n\nimport { SourcedKeyMap, Struct, type MetaData } from '../struct'\nimport { ContentPage, type ContentType, type ContentType_ } from './content'\nimport { Ep, type RawEp } from './ep'\nimport * as image from './image'\n\nexport interface Category {\n name: string\n group: string\n search: { keyword: string; source: string; sort: string }\n}\n\nexport interface Author {\n label: string\n icon: RawResource | image.RawImage | string\n description: string\n /**\n * 为空则不可订阅\n * 否则传入的为`defineConfig`中定义的`subscribe.type`\n */ subscribe?: string\n actions?: string[]\n $$meta?: MetaData\n $$plugin: string\n}\n\nexport interface RawItem {\n cover: RawResource | image.RawImage\n title: string\n id: string\n /** @alias tags */\n categories: Category[]\n author: Author[]\n viewNumber?: number\n likeNumber?: number\n commentNumber?: number\n isLiked?: boolean\n updateTime?: number\n customIsAI?: boolean\n contentType: ContentType_\n length: string\n epLength: string\n $$plugin: string\n $$meta: MetaData\n description?: Description\n thisEp: RawEp\n commentSendable: boolean\n customIsSafe?: boolean\n}\n\nexport type ItemCardComp = Component<\n {\n item: Item\n freeHeight?: boolean\n disabled?: boolean\n type?: 'default' | 'big' | 'small'\n class?: any\n style?: any\n },\n any,\n any,\n any,\n any,\n { click: [] },\n { default(): void; smallTopInfo(): void; cover(): void }\n>\n\nexport type ItemTranslator = (raw: RawItem) => Item\n\nexport type Description =\n | string\n | { type: 'html'; content: string }\n | { type: 'text'; content: string }\n\nexport abstract class Item extends Struct<RawItem> implements RawItem {\n public static itemTranslator = SourcedKeyMap.create<\n [plugin: string, name: string],\n ItemTranslator\n >()\n public static create(raw: RawItem) {\n const translator = this.itemTranslator.get(raw.contentType)\n if (!translator)\n throw new Error(\n `can not found itemTranslator contentType:\"${ContentPage.contentPage.toString(raw.contentType)}\"`\n )\n return translator(raw)\n }\n public static authorIcon = SourcedKeyMap.create<[plugin: string, name: string], Component>()\n\n public static itemCard = useGlobalVar(\n SourcedKeyMap.create<ContentType, ItemCardComp>(),\n 'uni/item/itemCard'\n )\n\n public abstract like(signal?: AbortSignal): PromiseLike<boolean>\n public abstract report(signal?: AbortSignal): PromiseLike<any>\n public abstract sendComment(text: string, signal?: AbortSignal): PromiseLike<any>\n\n public static is(value: unknown): value is Item {\n return value instanceof this\n }\n public cover: RawResource | image.RawImage\n public get $cover() {\n return image.Image.create(this.cover)\n }\n public title: string\n public id: string\n public categories: Category[]\n public author: Author[]\n public viewNumber?: number\n public likeNumber?: number\n public commentNumber?: number\n public isLiked?: boolean\n public description?: Description\n public updateTime?: number\n public get $updateTime() {\n return dayjs(this.updateTime)\n }\n public contentType: ContentType\n public length: string\n public epLength: string\n public $$plugin: string\n public $$meta\n public thisEp: RawEp\n public customIsSafe?: boolean\n public get $thisEp() {\n return new Ep(this.thisEp)\n }\n constructor(v: RawItem) {\n super(v)\n this.$$plugin = v.$$plugin\n this.$$meta = v.$$meta\n\n this.thisEp = v.thisEp\n this.updateTime = v.updateTime\n this.cover = v.cover\n this.title = v.title\n this.id = v.id\n this.categories = v.categories\n this.author = v.author\n this.viewNumber = v.viewNumber\n this.likeNumber = v.likeNumber\n this.commentNumber = v.commentNumber\n this.isLiked = v.isLiked\n this.customIsAI = v.customIsAI\n this.contentType = ContentPage.contentPage.toJSON(v.contentType)\n this.length = v.length\n this.epLength = v.epLength\n this.description = v.description\n this.commentSendable = v.commentSendable\n this.customIsSafe = v.customIsSafe\n }\n public commentSendable: boolean\n public customIsAI?: boolean\n public get $isAi() {\n const check = (str: string) => /(^|[\\((\\[\\s【])ai[】\\))\\]\\s]?/gi.test(str)\n return (\n this.customIsAI ||\n check(this.title) ||\n this.author.some(author => check(`${author.label}\\u1145${author.description}`))\n )\n }\n}","import { useGlobalVar } from '@delta-comic/utils'\nimport { computed, shallowRef, type Component } from 'vue'\n\nimport { PromiseContent, SourcedKeyMap, type RStream, type SourcedKeyType } from '../struct'\nimport * as comment from './comment'\nimport * as ep from './ep'\nimport * as item from './item'\n\nexport type PreloadValue = item.Item | undefined\nexport type ContentPageLike = new (preload: PreloadValue, id: string, ep: string) => ContentPage\n\nexport type ContentType_ = SourcedKeyType<typeof ContentPage.contentPage>\nexport type ContentType = Exclude<ContentType_, string>\n\nexport type ViewComp = Component<{ page: ContentPage; isFullScreen: boolean }>\n\nexport type ViewLayoutComp = Component<{ page: ContentPage }>\n\nexport abstract class ContentPage<T extends object = any> {\n public static viewLayout = useGlobalVar(\n SourcedKeyMap.create<ContentType, ViewLayoutComp>(),\n 'uni/contentPage/viewLayout'\n )\n public static contentPage = useGlobalVar(\n SourcedKeyMap.create<[plugin: string, name: string], ContentPageLike>(),\n 'uni/contentPage/contentPage'\n )\n\n constructor(\n preload: PreloadValue,\n public id: string,\n public ep: string\n ) {\n this.preload.value = preload\n }\n public abstract contentType: ContentType\n\n public pid = PromiseContent.withResolvers<string>()\n\n public preload = shallowRef<PreloadValue>(undefined)\n public detail = PromiseContent.withResolvers<item.Item>()\n public union = computed(() => this.detail.content.data.value ?? this.preload.value)\n\n public recommends = PromiseContent.withResolvers<item.Item[]>()\n\n public abstract comments: RStream<comment.Comment>\n\n public eps = PromiseContent.withResolvers<ep.Ep[]>()\n\n public abstract loadAll(signal?: AbortSignal): Promise<any>\n public abstract reloadAll(signal?: AbortSignal): Promise<any>\n\n public abstract plugin: string\n\n public abstract loadAllOffline(save: T): Promise<any>\n public abstract exportOffline(): Promise<T>\n\n public abstract ViewComp: ViewComp\n}","export abstract class Downloader {\n public abstract id: string\n public abstract name: string\n public abstract $$plugin: string\n\n public abstract begin: () => void\n public abstract resume: () => void\n public abstract pause: () => void\n}","import { shallowReactive, type Component } from 'vue'\n\nimport type { RawResource } from './resource'\n\nimport { Image } from './image'\n\nexport interface RawUser {\n avatar?: RawResource\n name: string\n id: string\n $$plugin: string\n}\n\nexport abstract class User {\n public static userBase = shallowReactive(new Map<string, User>())\n public static userEditorBase = shallowReactive(new Map<string, Component>())\n\n constructor(v: RawUser) {\n if (v.avatar) this.avatar = Image.create(v.avatar)\n this.name = v.name\n this.id = v.id\n this.$$plugin = v.$$plugin\n }\n public avatar?: Image\n public name: string\n public id: string\n public $$plugin: string\n public abstract customUser: object\n}\n\nexport type UserCardComp = Component<{ user: User; isSmall?: boolean }>","export * as comment from './comment'\nexport * as content from './content'\nexport * as download from './download'\nexport * as ep from './ep'\nexport * as image from './image'\nexport * as item from './item'\nexport * as resource from './resource'\nexport * as user from './user'"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,15,18],"mappings":"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"}
|