From b037c4a24e6e8c42ed40da597d08d6ceaca0e670 Mon Sep 17 00:00:00 2001 From: LUCASTUCIOUS Date: Mon, 8 Jan 2024 18:20:40 +0100 Subject: [PATCH] Update --- .yarn/install-state.gz | Bin 241803 -> 308394 bytes package.json | 3 +- src/.vuepress/.cache/deps/_metadata.json | 18 +- .../deps_temp_3208d082/@vue_devtools-api.js | 11 + .../@vue_devtools-api.js.map | 7 + .../deps_temp_3208d082/@vuepress_shared.js | 106 + .../@vuepress_shared.js.map | 7 + .../.cache/deps_temp_3208d082/@vueuse_core.js | 8965 +++++++++++++ .../deps_temp_3208d082/@vueuse_core.js.map | 7 + .../deps_temp_3208d082/chunk-F6L62Q4Q.js | 331 + .../deps_temp_3208d082/chunk-F6L62Q4Q.js.map | 7 + .../deps_temp_3208d082/chunk-J4VLYDXT.js | 163 + .../deps_temp_3208d082/chunk-J4VLYDXT.js.map | 7 + .../deps_temp_3208d082/chunk-V7NRH2B6.js | 11068 ++++++++++++++++ .../deps_temp_3208d082/chunk-V7NRH2B6.js.map | 7 + .../.cache/deps_temp_3208d082/package.json | 3 + .../.cache/deps_temp_3208d082/vue-router.js | 2667 ++++ .../deps_temp_3208d082/vue-router.js.map | 7 + .../.cache/deps_temp_3208d082/vue.js | 325 + .../.cache/deps_temp_3208d082/vue.js.map | 7 + .../deps_temp_a6c55f0e/@vue_devtools-api.js | 11 + .../@vue_devtools-api.js.map | 7 + .../deps_temp_a6c55f0e/@vuepress_shared.js | 106 + .../@vuepress_shared.js.map | 7 + .../.cache/deps_temp_a6c55f0e/@vueuse_core.js | 8965 +++++++++++++ .../deps_temp_a6c55f0e/@vueuse_core.js.map | 7 + .../deps_temp_a6c55f0e/chunk-F6L62Q4Q.js | 331 + .../deps_temp_a6c55f0e/chunk-F6L62Q4Q.js.map | 7 + .../deps_temp_a6c55f0e/chunk-J4VLYDXT.js | 163 + .../deps_temp_a6c55f0e/chunk-J4VLYDXT.js.map | 7 + .../deps_temp_a6c55f0e/chunk-V7NRH2B6.js | 11068 ++++++++++++++++ .../deps_temp_a6c55f0e/chunk-V7NRH2B6.js.map | 7 + .../.cache/deps_temp_a6c55f0e/package.json | 3 + .../.cache/deps_temp_a6c55f0e/vue-router.js | 2667 ++++ .../deps_temp_a6c55f0e/vue-router.js.map | 7 + .../.cache/deps_temp_a6c55f0e/vue.js | 325 + .../.cache/deps_temp_a6c55f0e/vue.js.map | 7 + src/.vuepress/.temp/internal/clientConfigs.js | 6 + .../.temp/internal/pagesComponents.js | 2 + src/.vuepress/.temp/internal/pagesData.js | 2 + src/.vuepress/.temp/internal/pagesRoutes.js | 1 + src/.vuepress/.temp/internal/searchIndex.js | 65 + src/.vuepress/.temp/internal/siteData.js | 2 +- src/.vuepress/.temp/internal/themeData.js | 2 +- src/.vuepress/.temp/md-enhance/config.js | 11 + .../.temp/pages/especes/drakeides.html.js | 14 + .../.temp/pages/especes/drakeides.html.vue | 8 + .../.temp/pages/especes/index.html.js | 2 +- .../.temp/pages/especes/index.html.vue | 11 +- .../.temp/sass-palette/hope-config.scss | 5 + .../.temp/sass-palette/hope-inject.scss | 13 + .../.temp/sass-palette/hope-palette.scss | 3 + src/.vuepress/.temp/sass-palette/load-hope.js | 2 + src/.vuepress/config.js | 69 +- src/especes/README.md | 16 +- src/especes/drakeides.md | 8 + yarn.lock | 4751 +++++-- 57 files changed, 51285 insertions(+), 1119 deletions(-) create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vue_devtools-api.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vue_devtools-api.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vuepress_shared.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vuepress_shared.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-V7NRH2B6.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/chunk-V7NRH2B6.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/package.json create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/vue-router.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/vue-router.js.map create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/vue.js create mode 100644 src/.vuepress/.cache/deps_temp_3208d082/vue.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vue_devtools-api.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vue_devtools-api.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vuepress_shared.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vuepress_shared.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vueuse_core.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/@vueuse_core.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-F6L62Q4Q.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-F6L62Q4Q.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-J4VLYDXT.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-J4VLYDXT.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-V7NRH2B6.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/chunk-V7NRH2B6.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/package.json create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/vue-router.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/vue-router.js.map create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/vue.js create mode 100644 src/.vuepress/.cache/deps_temp_a6c55f0e/vue.js.map create mode 100644 src/.vuepress/.temp/internal/searchIndex.js create mode 100644 src/.vuepress/.temp/md-enhance/config.js create mode 100644 src/.vuepress/.temp/pages/especes/drakeides.html.js create mode 100644 src/.vuepress/.temp/pages/especes/drakeides.html.vue create mode 100644 src/.vuepress/.temp/sass-palette/hope-config.scss create mode 100644 src/.vuepress/.temp/sass-palette/hope-inject.scss create mode 100644 src/.vuepress/.temp/sass-palette/hope-palette.scss create mode 100644 src/.vuepress/.temp/sass-palette/load-hope.js create mode 100644 src/especes/drakeides.md diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index af46793f3aff938796c710743e6696910ef47e86..1de73f81121896753fb4dead56efd099828083c9 100644 GIT binary patch delta 297585 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

  • x^g7tgczKi|%mZC{ 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 m+i6- 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 N{{x-Q>>iQ{4*;{#lsy0d delta 230486 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%0D`fxQx;Zbsg246-+;ayV<{{s>Qw*>}G9J5du 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

    6^df2Lk&@>) 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 aPNKghC5{olOS6=T7v^c(I26R+b?|M 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 nvp39?Knk5o80vT { + if (tag === "meta" && attrs.name) { + return `${tag}.${attrs.name}`; + } + if (["title", "base"].includes(tag)) { + return tag; + } + if (tag === "template" && attrs.id) { + return `${tag}.${attrs.id}`; + } + return JSON.stringify([tag, attrs, content]); +}; +var dedupeHead = (head) => { + const identifierSet = /* @__PURE__ */ new Set(); + const result = []; + head.forEach((item) => { + const identifier = resolveHeadIdentifier(item); + if (!identifierSet.has(identifier)) { + identifierSet.add(identifier); + result.push(item); + } + }); + return result; +}; +var ensureLeadingSlash = (str) => str[0] === "/" ? str : `/${str}`; +var ensureEndingSlash = (str) => str[str.length - 1] === "/" || str.endsWith(".html") ? str : `${str}/`; +var formatDateString = (str, defaultDateString = "") => { + const dateMatch = str.match(/\b(\d{4})-(\d{1,2})-(\d{1,2})\b/); + if (dateMatch === null) { + return defaultDateString; + } + const [, yearStr, monthStr, dayStr] = dateMatch; + return [yearStr, monthStr.padStart(2, "0"), dayStr.padStart(2, "0")].join("-"); +}; +var isLinkHttp = (link) => /^(https?:)?\/\//.test(link); +var markdownLinkRegexp = /.md((\?|#).*)?$/; +var isLinkExternal = (link, base = "/") => { + if (isLinkHttp(link)) { + return true; + } + if (link.startsWith("/") && !link.startsWith(base) && !markdownLinkRegexp.test(link)) { + return true; + } + return false; +}; +var isLinkWithProtocol = (link) => /^[a-z][a-z0-9+.-]*:/.test(link); +var isPlainObject = (val) => Object.prototype.toString.call(val) === "[object Object]"; +var omit = (obj, ...keys) => { + const result = { ...obj }; + for (const key of keys) { + delete result[key]; + } + return result; +}; +var removeEndingSlash = (str) => str[str.length - 1] === "/" ? str.slice(0, -1) : str; +var removeLeadingSlash = (str) => str[0] === "/" ? str.slice(1) : str; +var resolveLocalePath = (locales, routePath) => { + const localePaths = Object.keys(locales).sort((a, b) => { + const levelDelta = b.split("/").length - a.split("/").length; + if (levelDelta !== 0) { + return levelDelta; + } + return b.length - a.length; + }); + for (const localePath of localePaths) { + if (routePath.startsWith(localePath)) { + return localePath; + } + } + return "/"; +}; +var resolveRoutePathFromUrl = (url, base = "/") => { + const pathname = url.replace(/^(https?:)?\/\/[^/]*/, ""); + return pathname.startsWith(base) ? `/${pathname.slice(base.length)}` : pathname; +}; +export { + dedupeHead, + ensureEndingSlash, + ensureLeadingSlash, + formatDateString, + isArray, + isFunction, + isLinkExternal, + isLinkHttp, + isLinkWithProtocol, + isPlainObject, + isString, + omit, + removeEndingSlash, + removeLeadingSlash, + resolveHeadIdentifier, + resolveLocalePath, + resolveRoutePathFromUrl +}; +//# sourceMappingURL=@vuepress_shared.js.map diff --git a/src/.vuepress/.cache/deps_temp_3208d082/@vuepress_shared.js.map b/src/.vuepress/.cache/deps_temp_3208d082/@vuepress_shared.js.map new file mode 100644 index 0000000..2b5468a --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/@vuepress_shared.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@vuepress/shared/dist/index.js"], + "sourcesContent": ["// src/utils/index.ts\nimport { isArray, isFunction, isString } from \"@vue/shared\";\n\n// src/utils/resolveHeadIdentifier.ts\nvar resolveHeadIdentifier = ([\n tag,\n attrs,\n content\n]) => {\n if (tag === \"meta\" && attrs.name) {\n return `${tag}.${attrs.name}`;\n }\n if ([\"title\", \"base\"].includes(tag)) {\n return tag;\n }\n if (tag === \"template\" && attrs.id) {\n return `${tag}.${attrs.id}`;\n }\n return JSON.stringify([tag, attrs, content]);\n};\n\n// src/utils/dedupeHead.ts\nvar dedupeHead = (head) => {\n const identifierSet = /* @__PURE__ */ new Set();\n const result = [];\n head.forEach((item) => {\n const identifier = resolveHeadIdentifier(item);\n if (!identifierSet.has(identifier)) {\n identifierSet.add(identifier);\n result.push(item);\n }\n });\n return result;\n};\n\n// src/utils/ensureLeadingSlash.ts\nvar ensureLeadingSlash = (str) => str[0] === \"/\" ? str : `/${str}`;\n\n// src/utils/ensureEndingSlash.ts\nvar ensureEndingSlash = (str) => str[str.length - 1] === \"/\" || str.endsWith(\".html\") ? str : `${str}/`;\n\n// src/utils/formatDateString.ts\nvar formatDateString = (str, defaultDateString = \"\") => {\n const dateMatch = str.match(/\\b(\\d{4})-(\\d{1,2})-(\\d{1,2})\\b/);\n if (dateMatch === null) {\n return defaultDateString;\n }\n const [, yearStr, monthStr, dayStr] = dateMatch;\n return [yearStr, monthStr.padStart(2, \"0\"), dayStr.padStart(2, \"0\")].join(\"-\");\n};\n\n// src/utils/isLinkHttp.ts\nvar isLinkHttp = (link) => /^(https?:)?\\/\\//.test(link);\n\n// src/utils/isLinkExternal.ts\nvar markdownLinkRegexp = /.md((\\?|#).*)?$/;\nvar isLinkExternal = (link, base = \"/\") => {\n if (isLinkHttp(link)) {\n return true;\n }\n if (link.startsWith(\"/\") && !link.startsWith(base) && !markdownLinkRegexp.test(link)) {\n return true;\n }\n return false;\n};\n\n// src/utils/isLinkWithProtocol.ts\nvar isLinkWithProtocol = (link) => /^[a-z][a-z0-9+.-]*:/.test(link);\n\n// src/utils/isPlainObject.ts\nvar isPlainObject = (val) => Object.prototype.toString.call(val) === \"[object Object]\";\n\n// src/utils/omit.ts\nvar omit = (obj, ...keys) => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n};\n\n// src/utils/removeEndingSlash.ts\nvar removeEndingSlash = (str) => str[str.length - 1] === \"/\" ? str.slice(0, -1) : str;\n\n// src/utils/removeLeadingSlash.ts\nvar removeLeadingSlash = (str) => str[0] === \"/\" ? str.slice(1) : str;\n\n// src/utils/resolveLocalePath.ts\nvar resolveLocalePath = (locales, routePath) => {\n const localePaths = Object.keys(locales).sort((a, b) => {\n const levelDelta = b.split(\"/\").length - a.split(\"/\").length;\n if (levelDelta !== 0) {\n return levelDelta;\n }\n return b.length - a.length;\n });\n for (const localePath of localePaths) {\n if (routePath.startsWith(localePath)) {\n return localePath;\n }\n }\n return \"/\";\n};\n\n// src/utils/resolveRoutePathFromUrl.ts\nvar resolveRoutePathFromUrl = (url, base = \"/\") => {\n const pathname = url.replace(/^(https?:)?\\/\\/[^/]*/, \"\");\n return pathname.startsWith(base) ? `/${pathname.slice(base.length)}` : pathname;\n};\nexport {\n dedupeHead,\n ensureEndingSlash,\n ensureLeadingSlash,\n formatDateString,\n isArray,\n isFunction,\n isLinkExternal,\n isLinkHttp,\n isLinkWithProtocol,\n isPlainObject,\n isString,\n omit,\n removeEndingSlash,\n removeLeadingSlash,\n resolveHeadIdentifier,\n resolveLocalePath,\n resolveRoutePathFromUrl\n};\n"], + "mappings": "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", + "names": [] +} diff --git a/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js b/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js new file mode 100644 index 0000000..5383e7d --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js @@ -0,0 +1,8965 @@ +import { + Fragment, + TransitionGroup, + computed, + customRef, + defineComponent, + effectScope, + getCurrentInstance, + getCurrentScope, + h, + inject, + isReactive, + isReadonly, + isRef, + markRaw, + nextTick, + onBeforeMount, + onBeforeUnmount, + onBeforeUpdate, + onMounted, + onScopeDispose, + onUnmounted, + onUpdated, + provide, + reactive, + readonly, + ref, + shallowReactive, + shallowRef, + toRef, + toRefs, + unref, + version, + watch, + watchEffect +} from "./chunk-V7NRH2B6.js"; +import "./chunk-F6L62Q4Q.js"; + +// node_modules/vue-demi/lib/index.mjs +var isVue2 = false; +var isVue3 = true; +function set(target, key, val) { + if (Array.isArray(target)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val; + } + target[key] = val; + return val; +} +function del(target, key) { + if (Array.isArray(target)) { + target.splice(key, 1); + return; + } + delete target[key]; +} + +// node_modules/@vueuse/shared/index.mjs +function computedEager(fn, options) { + var _a; + const result = shallowRef(); + watchEffect(() => { + result.value = fn(); + }, { + ...options, + flush: (_a = options == null ? void 0 : options.flush) != null ? _a : "sync" + }); + return readonly(result); +} +function computedWithControl(source, fn) { + let v = void 0; + let track; + let trigger; + const dirty = ref(true); + const update = () => { + dirty.value = true; + trigger(); + }; + watch(source, update, { flush: "sync" }); + const get2 = typeof fn === "function" ? fn : fn.get; + const set3 = typeof fn === "function" ? void 0 : fn.set; + const result = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + if (dirty.value) { + v = get2(); + dirty.value = false; + } + track(); + return v; + }, + set(v2) { + set3 == null ? void 0 : set3(v2); + } + }; + }); + if (Object.isExtensible(result)) + result.trigger = update; + return result; +} +function tryOnScopeDispose(fn) { + if (getCurrentScope()) { + onScopeDispose(fn); + return true; + } + return false; +} +function createEventHook() { + const fns = /* @__PURE__ */ new Set(); + const off = (fn) => { + fns.delete(fn); + }; + const on = (fn) => { + fns.add(fn); + const offFn = () => off(fn); + tryOnScopeDispose(offFn); + return { + off: offFn + }; + }; + const trigger = (...args) => { + return Promise.all(Array.from(fns).map((fn) => fn(...args))); + }; + return { + on, + off, + trigger + }; +} +function createGlobalState(stateFactory) { + let initialized = false; + let state; + const scope = effectScope(true); + return (...args) => { + if (!initialized) { + state = scope.run(() => stateFactory(...args)); + initialized = true; + } + return state; + }; +} +var localProvidedStateMap = /* @__PURE__ */ new WeakMap(); +var provideLocal = (key, value) => { + var _a; + const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null) + throw new Error("provideLocal must be called in setup"); + if (!localProvidedStateMap.has(instance)) + localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null)); + const localProvidedState = localProvidedStateMap.get(instance); + localProvidedState[key] = value; + provide(key, value); +}; +var injectLocal = (...args) => { + var _a; + const key = args[0]; + const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy; + if (instance == null) + throw new Error("injectLocal must be called in setup"); + if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance)) + return localProvidedStateMap.get(instance)[key]; + return inject(...args); +}; +function createInjectionState(composable, options) { + const key = (options == null ? void 0 : options.injectionKey) || Symbol("InjectionState"); + const useProvidingState = (...args) => { + const state = composable(...args); + provideLocal(key, state); + return state; + }; + const useInjectedState = () => injectLocal(key); + return [useProvidingState, useInjectedState]; +} +function createSharedComposable(composable) { + let subscribers = 0; + let state; + let scope; + const dispose = () => { + subscribers -= 1; + if (scope && subscribers <= 0) { + scope.stop(); + state = void 0; + scope = void 0; + } + }; + return (...args) => { + subscribers += 1; + if (!state) { + scope = effectScope(true); + state = scope.run(() => composable(...args)); + } + tryOnScopeDispose(dispose); + return state; + }; +} +function extendRef(ref2, extend, { enumerable = false, unwrap = true } = {}) { + if (!isVue3 && !version.startsWith("2.7.")) { + if (true) + throw new Error("[VueUse] extendRef only works in Vue 2.7 or above."); + return; + } + for (const [key, value] of Object.entries(extend)) { + if (key === "value") + continue; + if (isRef(value) && unwrap) { + Object.defineProperty(ref2, key, { + get() { + return value.value; + }, + set(v) { + value.value = v; + }, + enumerable + }); + } else { + Object.defineProperty(ref2, key, { value, enumerable }); + } + } + return ref2; +} +function get(obj, key) { + if (key == null) + return unref(obj); + return unref(obj)[key]; +} +function isDefined(v) { + return unref(v) != null; +} +function makeDestructurable(obj, arr) { + if (typeof Symbol !== "undefined") { + const clone = { ...obj }; + Object.defineProperty(clone, Symbol.iterator, { + enumerable: false, + value() { + let index = 0; + return { + next: () => ({ + value: arr[index++], + done: index > arr.length + }) + }; + } + }); + return clone; + } else { + return Object.assign([...arr], obj); + } +} +function toValue(r) { + return typeof r === "function" ? r() : unref(r); +} +var resolveUnref = toValue; +function reactify(fn, options) { + const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue; + return function(...args) { + return computed(() => fn.apply(this, args.map((i) => unrefFn(i)))); + }; +} +function reactifyObject(obj, optionsOrKeys = {}) { + let keys2 = []; + let options; + if (Array.isArray(optionsOrKeys)) { + keys2 = optionsOrKeys; + } else { + options = optionsOrKeys; + const { includeOwnProperties = true } = optionsOrKeys; + keys2.push(...Object.keys(obj)); + if (includeOwnProperties) + keys2.push(...Object.getOwnPropertyNames(obj)); + } + return Object.fromEntries( + keys2.map((key) => { + const value = obj[key]; + return [ + key, + typeof value === "function" ? reactify(value.bind(obj), options) : value + ]; + }) + ); +} +function toReactive(objectRef) { + if (!isRef(objectRef)) + return reactive(objectRef); + const proxy = new Proxy({}, { + get(_, p, receiver) { + return unref(Reflect.get(objectRef.value, p, receiver)); + }, + set(_, p, value) { + if (isRef(objectRef.value[p]) && !isRef(value)) + objectRef.value[p].value = value; + else + objectRef.value[p] = value; + return true; + }, + deleteProperty(_, p) { + return Reflect.deleteProperty(objectRef.value, p); + }, + has(_, p) { + return Reflect.has(objectRef.value, p); + }, + ownKeys() { + return Object.keys(objectRef.value); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + } + }); + return reactive(proxy); +} +function reactiveComputed(fn) { + return toReactive(computed(fn)); +} +function reactiveOmit(obj, ...keys2) { + const flatKeys = keys2.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs(obj)).filter((e) => !flatKeys.includes(e[0])))); +} +var isClient = typeof window !== "undefined" && typeof document !== "undefined"; +var isWorker = typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; +var isDef = (val) => typeof val !== "undefined"; +var notNullish = (val) => val != null; +var assert = (condition, ...infos) => { + if (!condition) + console.warn(...infos); +}; +var toString = Object.prototype.toString; +var isObject = (val) => toString.call(val) === "[object Object]"; +var now = () => Date.now(); +var timestamp = () => +Date.now(); +var clamp = (n, min, max) => Math.min(max, Math.max(min, n)); +var noop = () => { +}; +var rand = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +}; +var hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key); +var isIOS = getIsIOS(); +function getIsIOS() { + var _a, _b; + return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent)); +} +function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject); + }); + } + return wrapper; +} +var bypassFilter = (invoke2) => { + return invoke2(); +}; +function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop; + const _clearTimeout = (timer2) => { + clearTimeout(timer2); + lastRejector(); + lastRejector = noop; + }; + const filter = (invoke2) => { + const duration = toValue(ms); + const maxDuration = toValue(options.maxWait); + if (timer) + _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = null; + } + return Promise.resolve(invoke2()); + } + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + if (maxDuration && !maxTimer) { + maxTimer = setTimeout(() => { + if (timer) + _clearTimeout(timer); + maxTimer = null; + resolve(invoke2()); + }, maxDuration); + } + timer = setTimeout(() => { + if (maxTimer) + _clearTimeout(maxTimer); + maxTimer = null; + resolve(invoke2()); + }, duration); + }); + }; + return filter; +} +function throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop; + let lastValue; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop; + } + }; + const filter = (_invoke) => { + const duration = toValue(ms); + const elapsed = Date.now() - lastExec; + const invoke2 = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke2(); + } + if (elapsed > duration && (leading || !isLeading)) { + lastExec = Date.now(); + invoke2(); + } else if (trailing) { + lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke2()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + } + if (!leading && !timer) + timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; +} +function pausableFilter(extendFilter = bypassFilter) { + const isActive = ref(true); + function pause() { + isActive.value = false; + } + function resume() { + isActive.value = true; + } + const eventFilter = (...args) => { + if (isActive.value) + extendFilter(...args); + }; + return { isActive: readonly(isActive), pause, resume, eventFilter }; +} +var directiveHooks = { + mounted: isVue3 ? "mounted" : "inserted", + updated: isVue3 ? "updated" : "componentUpdated", + unmounted: isVue3 ? "unmounted" : "unbind" +}; +function cacheStringFunction(fn) { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +} +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { + return new Promise((resolve, reject) => { + if (throwOnTimeout) + setTimeout(() => reject(reason), ms); + else + setTimeout(resolve, ms); + }); +} +function identity(arg) { + return arg; +} +function createSingletonPromise(fn) { + let _promise; + function wrapper() { + if (!_promise) + _promise = fn(); + return _promise; + } + wrapper.reset = async () => { + const _prev = _promise; + _promise = void 0; + if (_prev) + await _prev; + }; + return wrapper; +} +function invoke(fn) { + return fn(); +} +function containsProp(obj, ...props) { + return props.some((k) => k in obj); +} +function increaseWithUnit(target, delta) { + var _a; + if (typeof target === "number") + return target + delta; + const value = ((_a = target.match(/^-?[0-9]+\.?[0-9]*/)) == null ? void 0 : _a[0]) || ""; + const unit = target.slice(value.length); + const result = Number.parseFloat(value) + delta; + if (Number.isNaN(result)) + return target; + return result + unit; +} +function objectPick(obj, keys2, omitUndefined = false) { + return keys2.reduce((n, k) => { + if (k in obj) { + if (!omitUndefined || obj[k] !== void 0) + n[k] = obj[k]; + } + return n; + }, {}); +} +function objectOmit(obj, keys2, omitUndefined = false) { + return Object.fromEntries(Object.entries(obj).filter(([key, value]) => { + return (!omitUndefined || value !== void 0) && !keys2.includes(key); + })); +} +function objectEntries(obj) { + return Object.entries(obj); +} +function getLifeCycleTarget(target) { + return target || getCurrentInstance(); +} +function toRef2(...args) { + if (args.length !== 1) + return toRef(...args); + const r = args[0]; + return typeof r === "function" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r); +} +var resolveRef = toRef2; +function reactivePick(obj, ...keys2) { + const flatKeys = keys2.flat(); + const predicate = flatKeys[0]; + return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef2(obj, k)]))); +} +function refAutoReset(defaultValue, afterMs = 1e4) { + return customRef((track, trigger) => { + let value = toValue(defaultValue); + let timer; + const resetAfter = () => setTimeout(() => { + value = toValue(defaultValue); + trigger(); + }, toValue(afterMs)); + tryOnScopeDispose(() => { + clearTimeout(timer); + }); + return { + get() { + track(); + return value; + }, + set(newValue) { + value = newValue; + trigger(); + clearTimeout(timer); + timer = resetAfter(); + } + }; + }); +} +function useDebounceFn(fn, ms = 200, options = {}) { + return createFilterWrapper( + debounceFilter(ms, options), + fn + ); +} +function refDebounced(value, ms = 200, options = {}) { + const debounced = ref(value.value); + const updater = useDebounceFn(() => { + debounced.value = value.value; + }, ms, options); + watch(value, () => updater()); + return debounced; +} +function refDefault(source, defaultValue) { + return computed({ + get() { + var _a; + return (_a = source.value) != null ? _a : defaultValue; + }, + set(value) { + source.value = value; + } + }); +} +function useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { + return createFilterWrapper( + throttleFilter(ms, trailing, leading, rejectOnCancel), + fn + ); +} +function refThrottled(value, delay = 200, trailing = true, leading = true) { + if (delay <= 0) + return value; + const throttled = ref(value.value); + const updater = useThrottleFn(() => { + throttled.value = value.value; + }, delay, trailing, leading); + watch(value, () => updater()); + return throttled; +} +function refWithControl(initial, options = {}) { + let source = initial; + let track; + let trigger; + const ref2 = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + return get2(); + }, + set(v) { + set3(v); + } + }; + }); + function get2(tracking = true) { + if (tracking) + track(); + return source; + } + function set3(value, triggering = true) { + var _a, _b; + if (value === source) + return; + const old = source; + if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false) + return; + source = value; + (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old); + if (triggering) + trigger(); + } + const untrackedGet = () => get2(false); + const silentSet = (v) => set3(v, false); + const peek = () => get2(false); + const lay = (v) => set3(v, false); + return extendRef( + ref2, + { + get: get2, + set: set3, + untrackedGet, + silentSet, + peek, + lay + }, + { enumerable: true } + ); +} +var controlledRef = refWithControl; +function set2(...args) { + if (args.length === 2) { + const [ref2, value] = args; + ref2.value = value; + } + if (args.length === 3) { + if (isVue2) { + set(...args); + } else { + const [target, key, value] = args; + target[key] = value; + } + } +} +function watchWithFilter(source, cb, options = {}) { + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + return watch( + source, + createFilterWrapper( + eventFilter, + cb + ), + watchOptions + ); +} +function watchPausable(source, cb, options = {}) { + const { + eventFilter: filter, + ...watchOptions + } = options; + const { eventFilter, pause, resume, isActive } = pausableFilter(filter); + const stop = watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter + } + ); + return { stop, pause, resume, isActive }; +} +function syncRef(left, right, ...[options]) { + const { + flush = "sync", + deep = false, + immediate = true, + direction = "both", + transform = {} + } = options || {}; + const watchers = []; + const transformLTR = "ltr" in transform && transform.ltr || ((v) => v); + const transformRTL = "rtl" in transform && transform.rtl || ((v) => v); + if (direction === "both" || direction === "ltr") { + watchers.push(watchPausable( + left, + (newValue) => { + watchers.forEach((w) => w.pause()); + right.value = transformLTR(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); + } + if (direction === "both" || direction === "rtl") { + watchers.push(watchPausable( + right, + (newValue) => { + watchers.forEach((w) => w.pause()); + left.value = transformRTL(newValue); + watchers.forEach((w) => w.resume()); + }, + { flush, deep, immediate } + )); + } + const stop = () => { + watchers.forEach((w) => w.stop()); + }; + return stop; +} +function syncRefs(source, targets, options = {}) { + const { + flush = "sync", + deep = false, + immediate = true + } = options; + if (!Array.isArray(targets)) + targets = [targets]; + return watch( + source, + (newValue) => targets.forEach((target) => target.value = newValue), + { flush, deep, immediate } + ); +} +function toRefs2(objectRef, options = {}) { + if (!isRef(objectRef)) + return toRefs(objectRef); + const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {}; + for (const key in objectRef.value) { + result[key] = customRef(() => ({ + get() { + return objectRef.value[key]; + }, + set(v) { + var _a; + const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true; + if (replaceRef) { + if (Array.isArray(objectRef.value)) { + const copy = [...objectRef.value]; + copy[key] = v; + objectRef.value = copy; + } else { + const newObject = { ...objectRef.value, [key]: v }; + Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value)); + objectRef.value = newObject; + } + } else { + objectRef.value[key] = v; + } + } + })); + } + return result; +} +function tryOnBeforeMount(fn, sync = true, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onBeforeMount(fn, target); + else if (sync) + fn(); + else + nextTick(fn); +} +function tryOnBeforeUnmount(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onBeforeUnmount(fn, target); +} +function tryOnMounted(fn, sync = true, target) { + const instance = getLifeCycleTarget(); + if (instance) + onMounted(fn, target); + else if (sync) + fn(); + else + nextTick(fn); +} +function tryOnUnmounted(fn, target) { + const instance = getLifeCycleTarget(target); + if (instance) + onUnmounted(fn, target); +} +function createUntil(r, isNot = false) { + function toMatch(condition, { flush = "sync", deep = false, timeout, throwOnTimeout } = {}) { + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch( + r, + (v) => { + if (condition(v) !== isNot) { + stop == null ? void 0 : stop(); + resolve(v); + } + }, + { + flush, + deep, + immediate: true + } + ); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop()) + ); + } + return Promise.race(promises); + } + function toBe(value, options) { + if (!isRef(value)) + return toMatch((v) => v === value, options); + const { flush = "sync", deep = false, timeout, throwOnTimeout } = options != null ? options : {}; + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch( + [r, value], + ([v1, v2]) => { + if (isNot !== (v1 === v2)) { + stop == null ? void 0 : stop(); + resolve(v1); + } + }, + { + flush, + deep, + immediate: true + } + ); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push( + promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => { + stop == null ? void 0 : stop(); + return toValue(r); + }) + ); + } + return Promise.race(promises); + } + function toBeTruthy(options) { + return toMatch((v) => Boolean(v), options); + } + function toBeNull(options) { + return toBe(null, options); + } + function toBeUndefined(options) { + return toBe(void 0, options); + } + function toBeNaN(options) { + return toMatch(Number.isNaN, options); + } + function toContains(value, options) { + return toMatch((v) => { + const array = Array.from(v); + return array.includes(value) || array.includes(toValue(value)); + }, options); + } + function changed(options) { + return changedTimes(1, options); + } + function changedTimes(n = 1, options) { + let count = -1; + return toMatch(() => { + count += 1; + return count >= n; + }, options); + } + if (Array.isArray(toValue(r))) { + const instance = { + toMatch, + toContains, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } else { + const instance = { + toMatch, + toBe, + toBeTruthy, + toBeNull, + toBeNaN, + toBeUndefined, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } +} +function until(r) { + return createUntil(r); +} +function defaultComparator(value, othVal) { + return value === othVal; +} +function useArrayDifference(...args) { + var _a; + const list = args[0]; + const values = args[1]; + let compareFn = (_a = args[2]) != null ? _a : defaultComparator; + if (typeof compareFn === "string") { + const key = compareFn; + compareFn = (value, othVal) => value[key] === othVal[key]; + } + return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1)); +} +function useArrayEvery(list, fn) { + return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array))); +} +function useArrayFilter(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).filter(fn)); +} +function useArrayFind(list, fn) { + return computed(() => toValue( + toValue(list).find((element, index, array) => fn(toValue(element), index, array)) + )); +} +function useArrayFindIndex(list, fn) { + return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array))); +} +function findLast(arr, cb) { + let index = arr.length; + while (index-- > 0) { + if (cb(arr[index], index, arr)) + return arr[index]; + } + return void 0; +} +function useArrayFindLast(list, fn) { + return 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)) + )); +} +function isArrayIncludesOptions(obj) { + return isObject(obj) && containsProp(obj, "formIndex", "comparator"); +} +function useArrayIncludes(...args) { + var _a; + const list = args[0]; + const value = args[1]; + let comparator = args[2]; + let formIndex = 0; + if (isArrayIncludesOptions(comparator)) { + formIndex = (_a = comparator.fromIndex) != null ? _a : 0; + comparator = comparator.comparator; + } + if (typeof comparator === "string") { + const key = comparator; + comparator = (element, value2) => element[key] === toValue(value2); + } + comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2); + return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator( + toValue(element), + toValue(value), + index, + toValue(array) + ))); +} +function useArrayJoin(list, separator) { + return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator))); +} +function useArrayMap(list, fn) { + return computed(() => toValue(list).map((i) => toValue(i)).map(fn)); +} +function useArrayReduce(list, reducer, ...args) { + const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index); + return computed(() => { + const resolved = toValue(list); + return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback); + }); +} +function useArraySome(list, fn) { + return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array))); +} +function uniq(array) { + return Array.from(new Set(array)); +} +function uniqueElementsBy(array, fn) { + return array.reduce((acc, v) => { + if (!acc.some((x) => fn(v, x, array))) + acc.push(v); + return acc; + }, []); +} +function useArrayUnique(list, compareFn) { + return computed(() => { + const resolvedList = toValue(list).map((element) => toValue(element)); + return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList); + }); +} +function useCounter(initialValue = 0, options = {}) { + let _initialValue = unref(initialValue); + const count = ref(initialValue); + const { + max = Number.POSITIVE_INFINITY, + min = Number.NEGATIVE_INFINITY + } = options; + const inc = (delta = 1) => count.value = Math.min(max, count.value + delta); + const dec = (delta = 1) => count.value = Math.max(min, count.value - delta); + const get2 = () => count.value; + const set3 = (val) => count.value = Math.max(min, Math.min(max, val)); + const reset = (val = _initialValue) => { + _initialValue = val; + return set3(val); + }; + return { count, inc, dec, get: get2, set: set3, reset }; +} +var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; +var 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}|SSS/g; +function defaultMeridiem(hours, minutes, isLowercase, hasPeriod) { + let m = hours < 12 ? "AM" : "PM"; + if (hasPeriod) + m = m.split("").reduce((acc, curr) => acc += `${curr}.`, ""); + return isLowercase ? m.toLowerCase() : m; +} +function formatOrdinal(num) { + const suffixes = ["th", "st", "nd", "rd"]; + const v = num % 100; + return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]); +} +function formatDate(date, formatStr, options = {}) { + var _a; + const years = date.getFullYear(); + const month = date.getMonth(); + const days = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const day = date.getDay(); + const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem; + const matches = { + Yo: () => formatOrdinal(years), + YY: () => String(years).slice(-2), + YYYY: () => years, + M: () => month + 1, + Mo: () => formatOrdinal(month + 1), + MM: () => `${month + 1}`.padStart(2, "0"), + MMM: () => date.toLocaleDateString(options.locales, { month: "short" }), + MMMM: () => date.toLocaleDateString(options.locales, { month: "long" }), + D: () => String(days), + Do: () => formatOrdinal(days), + DD: () => `${days}`.padStart(2, "0"), + H: () => String(hours), + Ho: () => formatOrdinal(hours), + HH: () => `${hours}`.padStart(2, "0"), + h: () => `${hours % 12 || 12}`.padStart(1, "0"), + ho: () => formatOrdinal(hours % 12 || 12), + hh: () => `${hours % 12 || 12}`.padStart(2, "0"), + m: () => String(minutes), + mo: () => formatOrdinal(minutes), + mm: () => `${minutes}`.padStart(2, "0"), + s: () => String(seconds), + so: () => formatOrdinal(seconds), + ss: () => `${seconds}`.padStart(2, "0"), + SSS: () => `${milliseconds}`.padStart(3, "0"), + d: () => day, + dd: () => date.toLocaleDateString(options.locales, { weekday: "narrow" }), + ddd: () => date.toLocaleDateString(options.locales, { weekday: "short" }), + dddd: () => date.toLocaleDateString(options.locales, { weekday: "long" }), + A: () => meridiem(hours, minutes), + AA: () => meridiem(hours, minutes, false, true), + a: () => meridiem(hours, minutes, true), + aa: () => meridiem(hours, minutes, true, true) + }; + return formatStr.replace(REGEX_FORMAT, (match, $1) => { + var _a2, _b; + return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match; + }); +} +function normalizeDate(date) { + if (date === null) + return new Date(Number.NaN); + if (date === void 0) + return /* @__PURE__ */ new Date(); + if (date instanceof Date) + return new Date(date); + if (typeof date === "string" && !/Z$/i.test(date)) { + const d = date.match(REGEX_PARSE); + if (d) { + const m = d[2] - 1 || 0; + const ms = (d[7] || "0").substring(0, 3); + return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms); + } + } + return new Date(date); +} +function useDateFormat(date, formatStr = "HH:mm:ss", options = {}) { + return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options)); +} +function useIntervalFn(cb, interval = 1e3, options = {}) { + const { + immediate = true, + immediateCallback = false + } = options; + let timer = null; + const isActive = ref(false); + function clean() { + if (timer) { + clearInterval(timer); + timer = null; + } + } + function pause() { + isActive.value = false; + clean(); + } + function resume() { + const intervalValue = toValue(interval); + if (intervalValue <= 0) + return; + isActive.value = true; + if (immediateCallback) + cb(); + clean(); + timer = setInterval(cb, intervalValue); + } + if (immediate && isClient) + resume(); + if (isRef(interval) || typeof interval === "function") { + const stopWatch = watch(interval, () => { + if (isActive.value && isClient) + resume(); + }); + tryOnScopeDispose(stopWatch); + } + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} +function useInterval(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + immediate = true, + callback + } = options; + const counter = ref(0); + const update = () => counter.value += 1; + const reset = () => { + counter.value = 0; + }; + const controls = useIntervalFn( + callback ? () => { + update(); + callback(counter.value); + } : update, + interval, + { immediate } + ); + if (exposeControls) { + return { + counter, + reset, + ...controls + }; + } else { + return counter; + } +} +function useLastChanged(source, options = {}) { + var _a; + const ms = ref((_a = options.initialValue) != null ? _a : null); + watch( + source, + () => ms.value = timestamp(), + options + ); + return ms; +} +function useTimeoutFn(cb, interval, options = {}) { + const { + immediate = true + } = options; + const isPending = ref(false); + let timer = null; + function clear() { + if (timer) { + clearTimeout(timer); + timer = null; + } + } + function stop() { + isPending.value = false; + clear(); + } + function start(...args) { + clear(); + isPending.value = true; + timer = setTimeout(() => { + isPending.value = false; + timer = null; + cb(...args); + }, toValue(interval)); + } + if (immediate) { + isPending.value = true; + if (isClient) + start(); + } + tryOnScopeDispose(stop); + return { + isPending: readonly(isPending), + start, + stop + }; +} +function useTimeout(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + callback + } = options; + const controls = useTimeoutFn( + callback != null ? callback : noop, + interval, + options + ); + const ready = computed(() => !controls.isPending.value); + if (exposeControls) { + return { + ready, + ...controls + }; + } else { + return ready; + } +} +function useToNumber(value, options = {}) { + const { + method = "parseFloat", + radix, + nanToZero + } = options; + return computed(() => { + let resolved = toValue(value); + if (typeof resolved === "string") + resolved = Number[method](resolved, radix); + if (nanToZero && Number.isNaN(resolved)) + resolved = 0; + return resolved; + }); +} +function useToString(value) { + return computed(() => `${toValue(value)}`); +} +function useToggle(initialValue = false, options = {}) { + const { + truthyValue = true, + falsyValue = false + } = options; + const valueIsRef = isRef(initialValue); + const _value = ref(initialValue); + function toggle(value) { + if (arguments.length) { + _value.value = value; + return _value.value; + } else { + const truthy = toValue(truthyValue); + _value.value = _value.value === truthy ? toValue(falsyValue) : truthy; + return _value.value; + } + } + if (valueIsRef) + return toggle; + else + return [_value, toggle]; +} +function watchArray(source, cb, options) { + let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)]; + return watch(source, (newList, _, onCleanup) => { + const oldListRemains = Array.from({ length: oldList.length }); + const added = []; + for (const obj of newList) { + let found = false; + for (let i = 0; i < oldList.length; i++) { + if (!oldListRemains[i] && obj === oldList[i]) { + oldListRemains[i] = true; + found = true; + break; + } + } + if (!found) + added.push(obj); + } + const removed = oldList.filter((_2, i) => !oldListRemains[i]); + cb(newList, oldList, added, removed, onCleanup); + oldList = [...newList]; + }, options); +} +function watchAtMost(source, cb, options) { + const { + count, + ...watchOptions + } = options; + const current = ref(0); + const stop = watchWithFilter( + source, + (...args) => { + current.value += 1; + if (current.value >= toValue(count)) + nextTick(() => stop()); + cb(...args); + }, + watchOptions + ); + return { count: current, stop }; +} +function watchDebounced(source, cb, options = {}) { + const { + debounce = 0, + maxWait = void 0, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: debounceFilter(debounce, { maxWait }) + } + ); +} +function watchDeep(source, cb, options) { + return watch( + source, + cb, + { + ...options, + deep: true + } + ); +} +function watchIgnorable(source, cb, options = {}) { + const { + eventFilter = bypassFilter, + ...watchOptions + } = options; + const filteredCb = createFilterWrapper( + eventFilter, + cb + ); + let ignoreUpdates; + let ignorePrevAsyncUpdates; + let stop; + if (watchOptions.flush === "sync") { + const ignore = ref(false); + ignorePrevAsyncUpdates = () => { + }; + ignoreUpdates = (updater) => { + ignore.value = true; + updater(); + ignore.value = false; + }; + stop = watch( + source, + (...args) => { + if (!ignore.value) + filteredCb(...args); + }, + watchOptions + ); + } else { + const disposables = []; + const ignoreCounter = ref(0); + const syncCounter = ref(0); + ignorePrevAsyncUpdates = () => { + ignoreCounter.value = syncCounter.value; + }; + disposables.push( + watch( + source, + () => { + syncCounter.value++; + }, + { ...watchOptions, flush: "sync" } + ) + ); + ignoreUpdates = (updater) => { + const syncCounterPrev = syncCounter.value; + updater(); + ignoreCounter.value += syncCounter.value - syncCounterPrev; + }; + disposables.push( + watch( + source, + (...args) => { + const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value; + ignoreCounter.value = 0; + syncCounter.value = 0; + if (ignore) + return; + filteredCb(...args); + }, + watchOptions + ) + ); + stop = () => { + disposables.forEach((fn) => fn()); + }; + } + return { stop, ignoreUpdates, ignorePrevAsyncUpdates }; +} +function watchImmediate(source, cb, options) { + return watch( + source, + cb, + { + ...options, + immediate: true + } + ); +} +function watchOnce(source, cb, options) { + const stop = watch(source, (...args) => { + nextTick(() => stop()); + return cb(...args); + }, options); + return stop; +} +function watchThrottled(source, cb, options = {}) { + const { + throttle = 0, + trailing = true, + leading = true, + ...watchOptions + } = options; + return watchWithFilter( + source, + cb, + { + ...watchOptions, + eventFilter: throttleFilter(throttle, trailing, leading) + } + ); +} +function watchTriggerable(source, cb, options = {}) { + let cleanupFn; + function onEffect() { + if (!cleanupFn) + return; + const fn = cleanupFn; + cleanupFn = void 0; + fn(); + } + function onCleanup(callback) { + cleanupFn = callback; + } + const _cb = (value, oldValue) => { + onEffect(); + return cb(value, oldValue, onCleanup); + }; + const res = watchIgnorable(source, _cb, options); + const { ignoreUpdates } = res; + const trigger = () => { + let res2; + ignoreUpdates(() => { + res2 = _cb(getWatchSources(source), getOldValue(source)); + }); + return res2; + }; + return { + ...res, + trigger + }; +} +function getWatchSources(sources) { + if (isReactive(sources)) + return sources; + if (Array.isArray(sources)) + return sources.map((item) => toValue(item)); + return toValue(sources); +} +function getOldValue(source) { + return Array.isArray(source) ? source.map(() => void 0) : void 0; +} +function whenever(source, cb, options) { + return watch( + source, + (v, ov, onInvalidate) => { + if (v) + cb(v, ov, onInvalidate); + }, + options + ); +} + +// node_modules/@vueuse/core/index.mjs +function computedAsync(evaluationCallback, initialState, optionsOrRef) { + let options; + if (isRef(optionsOrRef)) { + options = { + evaluating: optionsOrRef + }; + } else { + options = optionsOrRef || {}; + } + const { + lazy = false, + evaluating = void 0, + shallow = true, + onError = noop + } = options; + const started = ref(!lazy); + const current = shallow ? shallowRef(initialState) : ref(initialState); + let counter = 0; + watchEffect(async (onInvalidate) => { + if (!started.value) + return; + counter++; + const counterAtBeginning = counter; + let hasFinished = false; + if (evaluating) { + Promise.resolve().then(() => { + evaluating.value = true; + }); + } + try { + const result = await evaluationCallback((cancelCallback) => { + onInvalidate(() => { + if (evaluating) + evaluating.value = false; + if (!hasFinished) + cancelCallback(); + }); + }); + if (counterAtBeginning === counter) + current.value = result; + } catch (e) { + onError(e); + } finally { + if (evaluating && counterAtBeginning === counter) + evaluating.value = false; + hasFinished = true; + } + }); + if (lazy) { + return computed(() => { + started.value = true; + return current.value; + }); + } else { + return current; + } +} +function computedInject(key, options, defaultSource, treatDefaultAsFactory) { + let source = inject(key); + if (defaultSource) + source = inject(key, defaultSource); + if (treatDefaultAsFactory) + source = inject(key, defaultSource, treatDefaultAsFactory); + if (typeof options === "function") { + return computed((ctx) => options(source, ctx)); + } else { + return computed({ + get: (ctx) => options.get(source, ctx), + set: options.set + }); + } +} +function createReusableTemplate(options = {}) { + if (!isVue3 && !version.startsWith("2.7.")) { + if (true) + throw new Error("[VueUse] createReusableTemplate only works in Vue 2.7 or above."); + return; + } + const { + inheritAttrs = true + } = options; + const render = shallowRef(); + const define = defineComponent({ + setup(_, { slots }) { + return () => { + render.value = slots.default; + }; + } + }); + const reuse = defineComponent({ + inheritAttrs, + setup(_, { attrs, slots }) { + return () => { + var _a; + if (!render.value && true) + throw new Error("[VueUse] Failed to find the definition of reusable template"); + const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots }); + return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode; + }; + } + }); + return makeDestructurable( + { define, reuse }, + [define, reuse] + ); +} +function keysToCamelKebabCase(obj) { + const newObj = {}; + for (const key in obj) + newObj[camelize(key)] = obj[key]; + return newObj; +} +function createTemplatePromise(options = {}) { + if (!isVue3) { + if (true) + throw new Error("[VueUse] createTemplatePromise only works in Vue 3 or above."); + return; + } + let index = 0; + const instances = ref([]); + function create(...args) { + const props = shallowReactive({ + key: index++, + args, + promise: void 0, + resolve: () => { + }, + reject: () => { + }, + isResolving: false, + options + }); + instances.value.push(props); + props.promise = new Promise((_resolve, _reject) => { + props.resolve = (v) => { + props.isResolving = true; + return _resolve(v); + }; + props.reject = _reject; + }).finally(() => { + props.promise = void 0; + const index2 = instances.value.indexOf(props); + if (index2 !== -1) + instances.value.splice(index2, 1); + }); + return props.promise; + } + function start(...args) { + if (options.singleton && instances.value.length > 0) + return instances.value[0].promise; + return create(...args); + } + const component = defineComponent((_, { slots }) => { + const renderList = () => instances.value.map((props) => { + var _a; + return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props)); + }); + if (options.transition) + return () => h(TransitionGroup, options.transition, renderList); + return renderList; + }); + component.start = start; + return component; +} +function createUnrefFn(fn) { + return function(...args) { + return fn.apply(this, args.map((i) => toValue(i))); + }; +} +function unrefElement(elRef) { + var _a; + const plain = toValue(elRef); + return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; +} +var defaultWindow = isClient ? window : void 0; +var defaultDocument = isClient ? window.document : void 0; +var defaultNavigator = isClient ? window.navigator : void 0; +var defaultLocation = isClient ? window.location : void 0; +function useEventListener(...args) { + let target; + let events2; + let listeners; + let options; + if (typeof args[0] === "string" || Array.isArray(args[0])) { + [events2, listeners, options] = args; + target = defaultWindow; + } else { + [target, events2, listeners, options] = args; + } + if (!target) + return noop; + if (!Array.isArray(events2)) + events2 = [events2]; + if (!Array.isArray(listeners)) + listeners = [listeners]; + const cleanups = []; + const cleanup = () => { + cleanups.forEach((fn) => fn()); + cleanups.length = 0; + }; + const register = (el, event, listener, options2) => { + el.addEventListener(event, listener, options2); + return () => el.removeEventListener(event, listener, options2); + }; + const stopWatch = watch( + () => [unrefElement(target), toValue(options)], + ([el, options2]) => { + cleanup(); + if (!el) + return; + const optionsClone = isObject(options2) ? { ...options2 } : options2; + cleanups.push( + ...events2.flatMap((event) => { + return listeners.map((listener) => register(el, event, listener, optionsClone)); + }) + ); + }, + { immediate: true, flush: "post" } + ); + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return stop; +} +var _iOSWorkaround = false; +function onClickOutside(target, handler, options = {}) { + const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; + if (!window2) + return noop; + if (isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + Array.from(window2.document.body.children).forEach((el) => el.addEventListener("click", noop)); + window2.document.documentElement.addEventListener("click", noop); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return ignore.some((target2) => { + if (typeof target2 === "string") { + return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); + } else { + const el = unrefElement(target2); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; + const listener = (event) => { + const el = unrefElement(target); + if (!el || el === event.target || event.composedPath().includes(el)) + return; + if (event.detail === 0) + shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; + return; + } + handler(event); + }; + const cleanup = [ + useEventListener(window2, "click", listener, { passive: true, capture }), + useEventListener(window2, "pointerdown", (e) => { + const el = unrefElement(target); + shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el)); + }, { passive: true }), + detectIframe && useEventListener(window2, "blur", (event) => { + setTimeout(() => { + var _a; + const el = unrefElement(target); + if (((_a = window2.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement))) + handler(event); + }, 0); + }) + ].filter(Boolean); + const stop = () => cleanup.forEach((fn) => fn()); + return stop; +} +function createKeyPredicate(keyFilter) { + if (typeof keyFilter === "function") + return keyFilter; + else if (typeof keyFilter === "string") + return (event) => event.key === keyFilter; + else if (Array.isArray(keyFilter)) + return (event) => keyFilter.includes(event.key); + return () => true; +} +function onKeyStroke(...args) { + let key; + let handler; + let options = {}; + if (args.length === 3) { + key = args[0]; + handler = args[1]; + options = args[2]; + } else if (args.length === 2) { + if (typeof args[1] === "object") { + key = true; + handler = args[0]; + options = args[1]; + } else { + key = args[0]; + handler = args[1]; + } + } else { + key = true; + handler = args[0]; + } + const { + target = defaultWindow, + eventName = "keydown", + passive = false, + dedupe = false + } = options; + const predicate = createKeyPredicate(key); + const listener = (e) => { + if (e.repeat && toValue(dedupe)) + return; + if (predicate(e)) + handler(e); + }; + return useEventListener(target, eventName, listener, passive); +} +function onKeyDown(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keydown" }); +} +function onKeyPressed(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keypress" }); +} +function onKeyUp(key, handler, options = {}) { + return onKeyStroke(key, handler, { ...options, eventName: "keyup" }); +} +var DEFAULT_DELAY = 500; +var DEFAULT_THRESHOLD = 10; +function onLongPress(target, handler, options) { + var _a, _b; + const elementRef = computed(() => unrefElement(target)); + let timeout; + let posStart; + function clear() { + if (timeout) { + clearTimeout(timeout); + timeout = void 0; + } + posStart = void 0; + } + function onDown(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + clear(); + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + posStart = { + x: ev.x, + y: ev.y + }; + timeout = setTimeout( + () => handler(ev), + (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY + ); + } + function onMove(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false) + return; + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + const dx = ev.x - posStart.x; + const dy = ev.y - posStart.y; + const distance = Math.sqrt(dx * dx + dy * dy); + if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD)) + clear(); + } + const listenerOptions = { + capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture, + once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once + }; + const cleanup = [ + useEventListener(elementRef, "pointerdown", onDown, listenerOptions), + useEventListener(elementRef, "pointermove", onMove, listenerOptions), + useEventListener(elementRef, ["pointerup", "pointerleave"], clear, listenerOptions) + ]; + const stop = () => cleanup.forEach((fn) => fn()); + return stop; +} +function isFocusedElementEditable() { + const { activeElement, body } = document; + if (!activeElement) + return false; + if (activeElement === body) + return false; + switch (activeElement.tagName) { + case "INPUT": + case "TEXTAREA": + return true; + } + return activeElement.hasAttribute("contenteditable"); +} +function isTypedCharValid({ + keyCode, + metaKey, + ctrlKey, + altKey +}) { + if (metaKey || ctrlKey || altKey) + return false; + if (keyCode >= 48 && keyCode <= 57) + return true; + if (keyCode >= 65 && keyCode <= 90) + return true; + if (keyCode >= 97 && keyCode <= 122) + return true; + return false; +} +function onStartTyping(callback, options = {}) { + const { document: document2 = defaultDocument } = options; + const keydown = (event) => { + !isFocusedElementEditable() && isTypedCharValid(event) && callback(event); + }; + if (document2) + useEventListener(document2, "keydown", keydown, { passive: true }); +} +function templateRef(key, initialValue = null) { + const instance = getCurrentInstance(); + let _trigger = () => { + }; + const element = customRef((track, trigger) => { + _trigger = trigger; + return { + get() { + var _a, _b; + track(); + return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue; + }, + set() { + } + }; + }); + tryOnMounted(_trigger); + onUpdated(_trigger); + return element; +} +function useActiveElement(options = {}) { + var _a; + const { + window: window2 = defaultWindow, + deep = true + } = options; + const document2 = (_a = options.document) != null ? _a : window2 == null ? void 0 : window2.document; + const getDeepActiveElement = () => { + var _a2; + let element = document2 == null ? void 0 : document2.activeElement; + if (deep) { + while (element == null ? void 0 : element.shadowRoot) + element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement; + } + return element; + }; + const activeElement = computedWithControl( + () => null, + () => getDeepActiveElement() + ); + if (window2) { + useEventListener(window2, "blur", (event) => { + if (event.relatedTarget !== null) + return; + activeElement.trigger(); + }, true); + useEventListener(window2, "focus", activeElement.trigger, true); + } + return activeElement; +} +function useMounted() { + const isMounted = ref(false); + if (getCurrentInstance()) { + onMounted(() => { + isMounted.value = true; + }); + } + return isMounted; +} +function useSupported(callback) { + const isMounted = useMounted(); + return computed(() => { + isMounted.value; + return Boolean(callback()); + }); +} +function useRafFn(fn, options = {}) { + const { + immediate = true, + fpsLimit = void 0, + window: window2 = defaultWindow + } = options; + const isActive = ref(false); + const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null; + let previousFrameTimestamp = 0; + let rafId = null; + function loop(timestamp2) { + if (!isActive.value || !window2) + return; + const delta = timestamp2 - (previousFrameTimestamp || timestamp2); + if (intervalLimit && delta < intervalLimit) { + rafId = window2.requestAnimationFrame(loop); + return; + } + fn({ delta, timestamp: timestamp2 }); + previousFrameTimestamp = timestamp2; + rafId = window2.requestAnimationFrame(loop); + } + function resume() { + if (!isActive.value && window2) { + isActive.value = true; + rafId = window2.requestAnimationFrame(loop); + } + } + function pause() { + isActive.value = false; + if (rafId != null && window2) { + window2.cancelAnimationFrame(rafId); + rafId = null; + } + } + if (immediate) + resume(); + tryOnScopeDispose(pause); + return { + isActive: readonly(isActive), + pause, + resume + }; +} +function useAnimate(target, keyframes, options) { + let config; + let animateOptions; + if (isObject(options)) { + config = options; + animateOptions = objectOmit(options, ["window", "immediate", "commitStyles", "persist", "onReady", "onError"]); + } else { + config = { duration: options }; + animateOptions = options; + } + const { + window: window2 = defaultWindow, + immediate = true, + commitStyles, + persist, + playbackRate: _playbackRate = 1, + onReady, + onError = (e) => { + console.error(e); + } + } = config; + const isSupported = useSupported(() => window2 && HTMLElement && "animate" in HTMLElement.prototype); + const animate = shallowRef(void 0); + const store = shallowReactive({ + startTime: null, + currentTime: null, + timeline: null, + playbackRate: _playbackRate, + pending: false, + playState: immediate ? "idle" : "paused", + replaceState: "active" + }); + const pending = computed(() => store.pending); + const playState = computed(() => store.playState); + const replaceState = computed(() => store.replaceState); + const startTime = computed({ + get() { + return store.startTime; + }, + set(value) { + store.startTime = value; + if (animate.value) + animate.value.startTime = value; + } + }); + const currentTime = computed({ + get() { + return store.currentTime; + }, + set(value) { + store.currentTime = value; + if (animate.value) { + animate.value.currentTime = value; + syncResume(); + } + } + }); + const timeline = computed({ + get() { + return store.timeline; + }, + set(value) { + store.timeline = value; + if (animate.value) + animate.value.timeline = value; + } + }); + const playbackRate = computed({ + get() { + return store.playbackRate; + }, + set(value) { + store.playbackRate = value; + if (animate.value) + animate.value.playbackRate = value; + } + }); + const play = () => { + if (animate.value) { + try { + animate.value.play(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + } else { + update(); + } + }; + const pause = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.pause(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const reverse = () => { + var _a; + !animate.value && update(); + try { + (_a = animate.value) == null ? void 0 : _a.reverse(); + syncResume(); + } catch (e) { + syncPause(); + onError(e); + } + }; + const finish = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.finish(); + syncPause(); + } catch (e) { + onError(e); + } + }; + const cancel = () => { + var _a; + try { + (_a = animate.value) == null ? void 0 : _a.cancel(); + syncPause(); + } catch (e) { + onError(e); + } + }; + watch(() => unrefElement(target), (el) => { + el && update(); + }); + watch(() => keyframes, (value) => { + !animate.value && update(); + if (!unrefElement(target) && animate.value) { + animate.value.effect = new KeyframeEffect( + unrefElement(target), + toValue(value), + animateOptions + ); + } + }, { deep: true }); + tryOnMounted(() => { + nextTick(() => update(true)); + }); + tryOnScopeDispose(cancel); + function update(init) { + const el = unrefElement(target); + if (!isSupported.value || !el) + return; + animate.value = el.animate(toValue(keyframes), animateOptions); + if (commitStyles) + animate.value.commitStyles(); + if (persist) + animate.value.persist(); + if (_playbackRate !== 1) + animate.value.playbackRate = _playbackRate; + if (init && !immediate) + animate.value.pause(); + else + syncResume(); + onReady == null ? void 0 : onReady(animate.value); + } + useEventListener(animate, ["cancel", "finish", "remove"], syncPause); + const { resume: resumeRef, pause: pauseRef } = useRafFn(() => { + if (!animate.value) + return; + store.pending = animate.value.pending; + store.playState = animate.value.playState; + store.replaceState = animate.value.replaceState; + store.startTime = animate.value.startTime; + store.currentTime = animate.value.currentTime; + store.timeline = animate.value.timeline; + store.playbackRate = animate.value.playbackRate; + }, { immediate: false }); + function syncResume() { + if (isSupported.value) + resumeRef(); + } + function syncPause() { + if (isSupported.value && window2) + window2.requestAnimationFrame(pauseRef); + } + return { + isSupported, + animate, + // actions + play, + pause, + reverse, + finish, + cancel, + // state + pending, + playState, + replaceState, + startTime, + currentTime, + timeline, + playbackRate + }; +} +function useAsyncQueue(tasks, options) { + const { + interrupt = true, + onError = noop, + onFinished = noop, + signal + } = options || {}; + const promiseState = { + aborted: "aborted", + fulfilled: "fulfilled", + pending: "pending", + rejected: "rejected" + }; + const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null })); + const result = reactive(initialResult); + const activeIndex = ref(-1); + if (!tasks || tasks.length === 0) { + onFinished(); + return { + activeIndex, + result + }; + } + function updateResult(state, res) { + activeIndex.value++; + result[activeIndex.value].data = res; + result[activeIndex.value].state = state; + } + tasks.reduce((prev, curr) => { + return prev.then((prevRes) => { + var _a; + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, new Error("aborted")); + return; + } + if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) { + onFinished(); + return; + } + const done = curr(prevRes).then((currentRes) => { + updateResult(promiseState.fulfilled, currentRes); + activeIndex.value === tasks.length - 1 && onFinished(); + return currentRes; + }); + if (!signal) + return done; + return Promise.race([done, whenAborted(signal)]); + }).catch((e) => { + if (signal == null ? void 0 : signal.aborted) { + updateResult(promiseState.aborted, e); + return e; + } + updateResult(promiseState.rejected, e); + onError(); + return e; + }); + }, Promise.resolve()); + return { + activeIndex, + result + }; +} +function whenAborted(signal) { + return new Promise((resolve, reject) => { + const error = new Error("aborted"); + if (signal.aborted) + reject(error); + else + signal.addEventListener("abort", () => reject(error), { once: true }); + }); +} +function useAsyncState(promise, initialState, options) { + const { + immediate = true, + delay = 0, + onError = noop, + onSuccess = noop, + resetOnExecute = true, + shallow = true, + throwError + } = options != null ? options : {}; + const state = shallow ? shallowRef(initialState) : ref(initialState); + const isReady = ref(false); + const isLoading = ref(false); + const error = shallowRef(void 0); + async function execute(delay2 = 0, ...args) { + if (resetOnExecute) + state.value = initialState; + error.value = void 0; + isReady.value = false; + isLoading.value = true; + if (delay2 > 0) + await promiseTimeout(delay2); + const _promise = typeof promise === "function" ? promise(...args) : promise; + try { + const data = await _promise; + state.value = data; + isReady.value = true; + onSuccess(data); + } catch (e) { + error.value = e; + onError(e); + if (throwError) + throw e; + } finally { + isLoading.value = false; + } + return state.value; + } + if (immediate) + execute(delay); + const shell = { + state, + isReady, + isLoading, + error, + execute + }; + function waitUntilIsLoaded() { + return new Promise((resolve, reject) => { + until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject); + }); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilIsLoaded().then(onFulfilled, onRejected); + } + }; +} +var defaults = { + array: (v) => JSON.stringify(v), + object: (v) => JSON.stringify(v), + set: (v) => JSON.stringify(Array.from(v)), + map: (v) => JSON.stringify(Object.fromEntries(v)), + null: () => "" +}; +function getDefaultSerialization(target) { + if (!target) + return defaults.null; + if (target instanceof Map) + return defaults.map; + else if (target instanceof Set) + return defaults.set; + else if (Array.isArray(target)) + return defaults.array; + else + return defaults.object; +} +function useBase64(target, options) { + const base64 = ref(""); + const promise = ref(); + function execute() { + if (!isClient) + return; + promise.value = new Promise((resolve, reject) => { + try { + const _target = toValue(target); + if (_target == null) { + resolve(""); + } else if (typeof _target === "string") { + resolve(blobToBase64(new Blob([_target], { type: "text/plain" }))); + } else if (_target instanceof Blob) { + resolve(blobToBase64(_target)); + } else if (_target instanceof ArrayBuffer) { + resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target)))); + } else if (_target instanceof HTMLCanvasElement) { + resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + } else if (_target instanceof HTMLImageElement) { + const img = _target.cloneNode(false); + img.crossOrigin = "Anonymous"; + imgLoaded(img).then(() => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + }).catch(reject); + } else if (typeof _target === "object") { + const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target); + const serialized = _serializeFn(_target); + return resolve(blobToBase64(new Blob([serialized], { type: "application/json" }))); + } else { + reject(new Error("target is unsupported types")); + } + } catch (error) { + reject(error); + } + }); + promise.value.then((res) => base64.value = res); + return promise.value; + } + if (isRef(target) || typeof target === "function") + watch(target, execute, { immediate: true }); + else + execute(); + return { + base64, + promise, + execute + }; +} +function imgLoaded(img) { + return new Promise((resolve, reject) => { + if (!img.complete) { + img.onload = () => { + resolve(); + }; + img.onerror = reject; + } else { + resolve(); + } + }); +} +function blobToBase64(blob) { + return new Promise((resolve, reject) => { + const fr = new FileReader(); + fr.onload = (e) => { + resolve(e.target.result); + }; + fr.onerror = reject; + fr.readAsDataURL(blob); + }); +} +function useBattery(options = {}) { + const { navigator = defaultNavigator } = options; + const events2 = ["chargingchange", "chargingtimechange", "dischargingtimechange", "levelchange"]; + const isSupported = useSupported(() => navigator && "getBattery" in navigator); + const charging = ref(false); + const chargingTime = ref(0); + const dischargingTime = ref(0); + const level = ref(1); + let battery; + function updateBatteryInfo() { + charging.value = this.charging; + chargingTime.value = this.chargingTime || 0; + dischargingTime.value = this.dischargingTime || 0; + level.value = this.level; + } + if (isSupported.value) { + navigator.getBattery().then((_battery) => { + battery = _battery; + updateBatteryInfo.call(battery); + useEventListener(battery, events2, updateBatteryInfo, { passive: true }); + }); + } + return { + isSupported, + charging, + chargingTime, + dischargingTime, + level + }; +} +function useBluetooth(options) { + let { + acceptAllDevices = false + } = options || {}; + const { + filters = void 0, + optionalServices = void 0, + navigator = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => navigator && "bluetooth" in navigator); + const device = shallowRef(void 0); + const error = shallowRef(null); + watch(device, () => { + connectToBluetoothGATTServer(); + }); + async function requestDevice() { + if (!isSupported.value) + return; + error.value = null; + if (filters && filters.length > 0) + acceptAllDevices = false; + try { + device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({ + acceptAllDevices, + filters, + optionalServices + })); + } catch (err) { + error.value = err; + } + } + const server = ref(); + const isConnected = computed(() => { + var _a; + return ((_a = server.value) == null ? void 0 : _a.connected) || false; + }); + async function connectToBluetoothGATTServer() { + error.value = null; + if (device.value && device.value.gatt) { + device.value.addEventListener("gattserverdisconnected", () => { + }); + try { + server.value = await device.value.gatt.connect(); + } catch (err) { + error.value = err; + } + } + } + tryOnMounted(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.connect(); + }); + tryOnScopeDispose(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.disconnect(); + }); + return { + isSupported, + isConnected, + // Device: + device, + requestDevice, + // Server: + server, + // Errors: + error + }; +} +function useMediaQuery(query, options = {}) { + const { window: window2 = defaultWindow } = options; + const isSupported = useSupported(() => window2 && "matchMedia" in window2 && typeof window2.matchMedia === "function"); + let mediaQuery; + const matches = ref(false); + const handler = (event) => { + matches.value = event.matches; + }; + const cleanup = () => { + if (!mediaQuery) + return; + if ("removeEventListener" in mediaQuery) + mediaQuery.removeEventListener("change", handler); + else + mediaQuery.removeListener(handler); + }; + const stopWatch = watchEffect(() => { + if (!isSupported.value) + return; + cleanup(); + mediaQuery = window2.matchMedia(toValue(query)); + if ("addEventListener" in mediaQuery) + mediaQuery.addEventListener("change", handler); + else + mediaQuery.addListener(handler); + matches.value = mediaQuery.matches; + }); + tryOnScopeDispose(() => { + stopWatch(); + cleanup(); + mediaQuery = void 0; + }); + return matches; +} +var breakpointsTailwind = { + "sm": 640, + "md": 768, + "lg": 1024, + "xl": 1280, + "2xl": 1536 +}; +var breakpointsBootstrapV5 = { + xs: 0, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1400 +}; +var breakpointsVuetify = { + xs: 600, + sm: 960, + md: 1264, + lg: 1904 +}; +var breakpointsAntDesign = { + xs: 480, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1600 +}; +var breakpointsQuasar = { + xs: 600, + sm: 1024, + md: 1440, + lg: 1920 +}; +var breakpointsSematic = { + mobileS: 320, + mobileM: 375, + mobileL: 425, + tablet: 768, + laptop: 1024, + laptopL: 1440, + desktop4K: 2560 +}; +var breakpointsMasterCss = { + "3xs": 360, + "2xs": 480, + "xs": 600, + "sm": 768, + "md": 1024, + "lg": 1280, + "xl": 1440, + "2xl": 1600, + "3xl": 1920, + "4xl": 2560 +}; +var breakpointsPrimeFlex = { + sm: 576, + md: 768, + lg: 992, + xl: 1200 +}; +function useBreakpoints(breakpoints, options = {}) { + function getValue2(k, delta) { + let v = toValue(breakpoints[k]); + if (delta != null) + v = increaseWithUnit(v, delta); + if (typeof v === "number") + v = `${v}px`; + return v; + } + const { window: window2 = defaultWindow } = options; + function match(query) { + if (!window2) + return false; + return window2.matchMedia(query).matches; + } + const greaterOrEqual = (k) => { + return useMediaQuery(() => `(min-width: ${getValue2(k)})`, options); + }; + const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { + Object.defineProperty(shortcuts, k, { + get: () => greaterOrEqual(k), + enumerable: true, + configurable: true + }); + return shortcuts; + }, {}); + return Object.assign(shortcutMethods, { + greater(k) { + return useMediaQuery(() => `(min-width: ${getValue2(k, 0.1)})`, options); + }, + greaterOrEqual, + smaller(k) { + return useMediaQuery(() => `(max-width: ${getValue2(k, -0.1)})`, options); + }, + smallerOrEqual(k) { + return useMediaQuery(() => `(max-width: ${getValue2(k)})`, options); + }, + between(a, b) { + return useMediaQuery(() => `(min-width: ${getValue2(a)}) and (max-width: ${getValue2(b, -0.1)})`, options); + }, + isGreater(k) { + return match(`(min-width: ${getValue2(k, 0.1)})`); + }, + isGreaterOrEqual(k) { + return match(`(min-width: ${getValue2(k)})`); + }, + isSmaller(k) { + return match(`(max-width: ${getValue2(k, -0.1)})`); + }, + isSmallerOrEqual(k) { + return match(`(max-width: ${getValue2(k)})`); + }, + isInBetween(a, b) { + return match(`(min-width: ${getValue2(a)}) and (max-width: ${getValue2(b, -0.1)})`); + }, + current() { + const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]); + return computed(() => points.filter(([, v]) => v.value).map(([k]) => k)); + } + }); +} +function useBroadcastChannel(options) { + const { + name, + window: window2 = defaultWindow + } = options; + const isSupported = useSupported(() => window2 && "BroadcastChannel" in window2); + const isClosed = ref(false); + const channel = ref(); + const data = ref(); + const error = shallowRef(null); + const post = (data2) => { + if (channel.value) + channel.value.postMessage(data2); + }; + const close = () => { + if (channel.value) + channel.value.close(); + isClosed.value = true; + }; + if (isSupported.value) { + tryOnMounted(() => { + error.value = null; + channel.value = new BroadcastChannel(name); + channel.value.addEventListener("message", (e) => { + data.value = e.data; + }, { passive: true }); + channel.value.addEventListener("messageerror", (e) => { + error.value = e; + }, { passive: true }); + channel.value.addEventListener("close", () => { + isClosed.value = true; + }); + }); + } + tryOnScopeDispose(() => { + close(); + }); + return { + isSupported, + channel, + data, + post, + close, + error, + isClosed + }; +} +var WRITABLE_PROPERTIES = [ + "hash", + "host", + "hostname", + "href", + "pathname", + "port", + "protocol", + "search" +]; +function useBrowserLocation(options = {}) { + const { window: window2 = defaultWindow } = options; + const refs = Object.fromEntries( + WRITABLE_PROPERTIES.map((key) => [key, ref()]) + ); + for (const [key, ref2] of objectEntries(refs)) { + watch(ref2, (value) => { + if (!(window2 == null ? void 0 : window2.location) || window2.location[key] === value) + return; + window2.location[key] = value; + }); + } + const buildState = (trigger) => { + var _a; + const { state: state2, length } = (window2 == null ? void 0 : window2.history) || {}; + const { origin } = (window2 == null ? void 0 : window2.location) || {}; + for (const key of WRITABLE_PROPERTIES) + refs[key].value = (_a = window2 == null ? void 0 : window2.location) == null ? void 0 : _a[key]; + return reactive({ + trigger, + state: state2, + length, + origin, + ...refs + }); + }; + const state = ref(buildState("load")); + if (window2) { + useEventListener(window2, "popstate", () => state.value = buildState("popstate"), { passive: true }); + useEventListener(window2, "hashchange", () => state.value = buildState("hashchange"), { passive: true }); + } + return state; +} +function useCached(refValue, comparator = (a, b) => a === b, watchOptions) { + const cachedValue = ref(refValue.value); + watch(() => refValue.value, (value) => { + if (!comparator(value, cachedValue.value)) + cachedValue.value = value; + }, watchOptions); + return cachedValue; +} +function usePermission(permissionDesc, options = {}) { + const { + controls = false, + navigator = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator && "permissions" in navigator); + let permissionStatus; + const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; + const state = ref(); + const onChange = () => { + if (permissionStatus) + state.value = permissionStatus.state; + }; + const query = createSingletonPromise(async () => { + if (!isSupported.value) + return; + if (!permissionStatus) { + try { + permissionStatus = await navigator.permissions.query(desc); + useEventListener(permissionStatus, "change", onChange); + onChange(); + } catch (e) { + state.value = "prompt"; + } + } + return permissionStatus; + }); + query(); + if (controls) { + return { + state, + isSupported, + query + }; + } else { + return state; + } +} +function useClipboard(options = {}) { + const { + navigator = defaultNavigator, + read = false, + source, + copiedDuring = 1500, + legacy = false + } = options; + const isClipboardApiSupported = useSupported(() => navigator && "clipboard" in navigator); + const permissionRead = usePermission("clipboard-read"); + const permissionWrite = usePermission("clipboard-write"); + const isSupported = computed(() => isClipboardApiSupported.value || legacy); + const text = ref(""); + const copied = ref(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring); + function updateText() { + if (isClipboardApiSupported.value && permissionRead.value !== "denied") { + navigator.clipboard.readText().then((value) => { + text.value = value; + }); + } else { + text.value = legacyRead(); + } + } + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateText); + async function copy(value = toValue(source)) { + if (isSupported.value && value != null) { + if (isClipboardApiSupported.value && permissionWrite.value !== "denied") + await navigator.clipboard.writeText(value); + else + legacyCopy(value); + text.value = value; + copied.value = true; + timeout.start(); + } + } + function legacyCopy(value) { + const ta = document.createElement("textarea"); + ta.value = value != null ? value : ""; + ta.style.position = "absolute"; + ta.style.opacity = "0"; + document.body.appendChild(ta); + ta.select(); + document.execCommand("copy"); + ta.remove(); + } + function legacyRead() { + var _a, _b, _c; + return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : ""; + } + return { + isSupported, + text, + copied, + copy + }; +} +function useClipboardItems(options = {}) { + const { + navigator = defaultNavigator, + read = false, + source, + copiedDuring = 1500 + } = options; + const isSupported = useSupported(() => navigator && "clipboard" in navigator); + const content = ref([]); + const copied = ref(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring); + function updateContent() { + if (isSupported.value) { + navigator.clipboard.read().then((items) => { + content.value = items; + }); + } + } + if (isSupported.value && read) + useEventListener(["copy", "cut"], updateContent); + async function copy(value = toValue(source)) { + if (isSupported.value && value != null) { + await navigator.clipboard.write(value); + content.value = value; + copied.value = true; + timeout.start(); + } + } + return { + isSupported, + content, + copied, + copy + }; +} +function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); +} +function useCloned(source, options = {}) { + const cloned = ref({}); + const { + manual, + clone = cloneFnJSON, + // watch options + deep = true, + immediate = true + } = options; + function sync() { + cloned.value = clone(toValue(source)); + } + if (!manual && (isRef(source) || typeof source === "function")) { + watch(source, sync, { + ...options, + deep, + immediate + }); + } else { + sync(); + } + return { cloned, sync }; +} +var _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +var globalKey = "__vueuse_ssr_handlers__"; +var handlers = getHandlers(); +function getHandlers() { + if (!(globalKey in _global)) + _global[globalKey] = _global[globalKey] || {}; + return _global[globalKey]; +} +function getSSRHandler(key, fallback) { + return handlers[key] || fallback; +} +function setSSRHandler(key, fn) { + handlers[key] = fn; +} +function guessSerializerType(rawInit) { + return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; +} +var StorageSerializers = { + boolean: { + read: (v) => v === "true", + write: (v) => String(v) + }, + object: { + read: (v) => JSON.parse(v), + write: (v) => JSON.stringify(v) + }, + number: { + read: (v) => Number.parseFloat(v), + write: (v) => String(v) + }, + any: { + read: (v) => v, + write: (v) => String(v) + }, + string: { + read: (v) => v, + write: (v) => String(v) + }, + map: { + read: (v) => new Map(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v.entries())) + }, + set: { + read: (v) => new Set(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v)) + }, + date: { + read: (v) => new Date(v), + write: (v) => v.toISOString() + } +}; +var customStorageEventName = "vueuse-storage"; +function useStorage(key, defaults2, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window: window2 = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + }, + initOnMounted + } = options; + const data = (shallow ? shallowRef : ref)(typeof defaults2 === "function" ? defaults2() : defaults2); + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorage", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + if (!storage) + return data; + const rawInit = toValue(defaults2); + const type = guessSerializerType(rawInit); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + const { pause: pauseWatch, resume: resumeWatch } = watchPausable( + data, + () => write(data.value), + { flush, deep, eventFilter } + ); + if (window2 && listenToStorageChanges) { + tryOnMounted(() => { + useEventListener(window2, "storage", update); + useEventListener(window2, customStorageEventName, updateFromCustomEvent); + if (initOnMounted) + update(); + }); + } + if (!initOnMounted) + update(); + return data; + function write(v) { + try { + if (v == null) { + storage.removeItem(key); + } else { + const serialized = serializer.write(v); + const oldValue = storage.getItem(key); + if (oldValue !== serialized) { + storage.setItem(key, serialized); + if (window2) { + window2.dispatchEvent(new CustomEvent(customStorageEventName, { + detail: { + key, + oldValue, + newValue: serialized, + storageArea: storage + } + })); + } + } + } + } catch (e) { + onError(e); + } + } + function read(event) { + const rawValue = event ? event.newValue : storage.getItem(key); + if (rawValue == null) { + if (writeDefaults && rawInit != null) + storage.setItem(key, serializer.write(rawInit)); + return rawInit; + } else if (!event && mergeDefaults) { + const value = serializer.read(rawValue); + if (typeof mergeDefaults === "function") + return mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + return { ...rawInit, ...value }; + return value; + } else if (typeof rawValue !== "string") { + return rawValue; + } else { + return serializer.read(rawValue); + } + } + function updateFromCustomEvent(event) { + update(event.detail); + } + function update(event) { + if (event && event.storageArea !== storage) + return; + if (event && event.key == null) { + data.value = rawInit; + return; + } + if (event && event.key !== key) + return; + pauseWatch(); + try { + if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value)) + data.value = read(event); + } catch (e) { + onError(e); + } finally { + if (event) + nextTick(resumeWatch); + else + resumeWatch(); + } + } +} +function usePreferredDark(options) { + return useMediaQuery("(prefers-color-scheme: dark)", options); +} +function useColorMode(options = {}) { + const { + selector = "html", + attribute = "class", + initialValue = "auto", + window: window2 = defaultWindow, + storage, + storageKey = "vueuse-color-scheme", + listenToStorageChanges = true, + storageRef, + emitAuto, + disableTransition = true + } = options; + const modes = { + auto: "", + light: "light", + dark: "dark", + ...options.modes || {} + }; + const preferredDark = usePreferredDark({ window: window2 }); + const system = computed(() => preferredDark.value ? "dark" : "light"); + const store = storageRef || (storageKey == null ? toRef2(initialValue) : useStorage(storageKey, initialValue, storage, { window: window2, listenToStorageChanges })); + const state = computed(() => store.value === "auto" ? system.value : store.value); + const updateHTMLAttrs = getSSRHandler( + "updateHTMLAttrs", + (selector2, attribute2, value) => { + const el = typeof selector2 === "string" ? window2 == null ? void 0 : window2.document.querySelector(selector2) : unrefElement(selector2); + if (!el) + return; + let style; + if (disableTransition) { + style = window2.document.createElement("style"); + const styleString = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}"; + style.appendChild(document.createTextNode(styleString)); + window2.document.head.appendChild(style); + } + if (attribute2 === "class") { + const current = value.split(/\s/g); + Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { + if (current.includes(v)) + el.classList.add(v); + else + el.classList.remove(v); + }); + } else { + el.setAttribute(attribute2, value); + } + if (disableTransition) { + window2.getComputedStyle(style).opacity; + document.head.removeChild(style); + } + } + ); + function defaultOnChanged(mode) { + var _a; + updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode); + } + function onChanged(mode) { + if (options.onChanged) + options.onChanged(mode, defaultOnChanged); + else + defaultOnChanged(mode); + } + watch(state, onChanged, { flush: "post", immediate: true }); + tryOnMounted(() => onChanged(state.value)); + const auto = computed({ + get() { + return emitAuto ? store.value : state.value; + }, + set(v) { + store.value = v; + } + }); + try { + return Object.assign(auto, { store, system, state }); + } catch (e) { + return auto; + } +} +function useConfirmDialog(revealed = ref(false)) { + const confirmHook = createEventHook(); + const cancelHook = createEventHook(); + const revealHook = createEventHook(); + let _resolve = noop; + const reveal = (data) => { + revealHook.trigger(data); + revealed.value = true; + return new Promise((resolve) => { + _resolve = resolve; + }); + }; + const confirm = (data) => { + revealed.value = false; + confirmHook.trigger(data); + _resolve({ data, isCanceled: false }); + }; + const cancel = (data) => { + revealed.value = false; + cancelHook.trigger(data); + _resolve({ data, isCanceled: true }); + }; + return { + isRevealed: computed(() => revealed.value), + reveal, + confirm, + cancel, + onReveal: revealHook.on, + onConfirm: confirmHook.on, + onCancel: cancelHook.on + }; +} +function useMutationObserver(target, callback, options = {}) { + const { window: window2 = defaultWindow, ...mutationOptions } = options; + let observer; + const isSupported = useSupported(() => window2 && "MutationObserver" in window2); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const stopWatch = watch( + () => unrefElement(target), + (el) => { + cleanup(); + if (isSupported.value && window2 && el) { + observer = new MutationObserver(callback); + observer.observe(el, mutationOptions); + } + }, + { immediate: true } + ); + const takeRecords = () => { + return observer == null ? void 0 : observer.takeRecords(); + }; + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop, + takeRecords + }; +} +function useCssVar(prop, target, options = {}) { + const { window: window2 = defaultWindow, initialValue = "", observe = false } = options; + const variable = ref(initialValue); + const elRef = computed(() => { + var _a; + return unrefElement(target) || ((_a = window2 == null ? void 0 : window2.document) == null ? void 0 : _a.documentElement); + }); + function updateCssVar() { + var _a; + const key = toValue(prop); + const el = toValue(elRef); + if (el && window2) { + const value = (_a = window2.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim(); + variable.value = value || initialValue; + } + } + if (observe) { + useMutationObserver(elRef, updateCssVar, { + attributeFilter: ["style", "class"], + window: window2 + }); + } + watch( + [elRef, () => toValue(prop)], + updateCssVar, + { immediate: true } + ); + watch( + variable, + (val) => { + var _a; + if ((_a = elRef.value) == null ? void 0 : _a.style) + elRef.value.style.setProperty(toValue(prop), val); + } + ); + return variable; +} +function useCurrentElement() { + const vm = getCurrentInstance(); + const currentElement = computedWithControl( + () => null, + () => vm.proxy.$el + ); + onUpdated(currentElement.trigger); + onMounted(currentElement.trigger); + return currentElement; +} +function useCycleList(list, options) { + const state = shallowRef(getInitialValue()); + const listRef = toRef2(list); + const index = computed({ + get() { + var _a; + const targetList = listRef.value; + let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value); + if (index2 < 0) + index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0; + return index2; + }, + set(v) { + set3(v); + } + }); + function set3(i) { + const targetList = listRef.value; + const length = targetList.length; + const index2 = (i % length + length) % length; + const value = targetList[index2]; + state.value = value; + return value; + } + function shift(delta = 1) { + return set3(index.value + delta); + } + function next(n = 1) { + return shift(n); + } + function prev(n = 1) { + return shift(-n); + } + function getInitialValue() { + var _a, _b; + return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0; + } + watch(listRef, () => set3(index.value)); + return { + state, + index, + next, + prev + }; +} +function useDark(options = {}) { + const { + valueDark = "dark", + valueLight = "", + window: window2 = defaultWindow + } = options; + const mode = useColorMode({ + ...options, + onChanged: (mode2, defaultHandler) => { + var _a; + if (options.onChanged) + (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === "dark", defaultHandler, mode2); + else + defaultHandler(mode2); + }, + modes: { + dark: valueDark, + light: valueLight + } + }); + const system = computed(() => { + if (mode.system) { + return mode.system.value; + } else { + const preferredDark = usePreferredDark({ window: window2 }); + return preferredDark.value ? "dark" : "light"; + } + }); + const isDark = computed({ + get() { + return mode.value === "dark"; + }, + set(v) { + const modeVal = v ? "dark" : "light"; + if (system.value === modeVal) + mode.value = "auto"; + else + mode.value = modeVal; + } + }); + return isDark; +} +function fnBypass(v) { + return v; +} +function fnSetSource(source, value) { + return source.value = value; +} +function defaultDump(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +function defaultParse(clone) { + return clone ? typeof clone === "function" ? clone : cloneFnJSON : fnBypass; +} +function useManualRefHistory(source, options = {}) { + const { + clone = false, + dump = defaultDump(clone), + parse = defaultParse(clone), + setSource = fnSetSource + } = options; + function _createHistoryRecord() { + return markRaw({ + snapshot: dump(source.value), + timestamp: timestamp() + }); + } + const last = ref(_createHistoryRecord()); + const undoStack = ref([]); + const redoStack = ref([]); + const _setSource = (record) => { + setSource(source, parse(record.snapshot)); + last.value = record; + }; + const commit = () => { + undoStack.value.unshift(last.value); + last.value = _createHistoryRecord(); + if (options.capacity && undoStack.value.length > options.capacity) + undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY); + if (redoStack.value.length) + redoStack.value.splice(0, redoStack.value.length); + }; + const clear = () => { + undoStack.value.splice(0, undoStack.value.length); + redoStack.value.splice(0, redoStack.value.length); + }; + const undo = () => { + const state = undoStack.value.shift(); + if (state) { + redoStack.value.unshift(last.value); + _setSource(state); + } + }; + const redo = () => { + const state = redoStack.value.shift(); + if (state) { + undoStack.value.unshift(last.value); + _setSource(state); + } + }; + const reset = () => { + _setSource(last.value); + }; + const history = computed(() => [last.value, ...undoStack.value]); + const canUndo = computed(() => undoStack.value.length > 0); + const canRedo = computed(() => redoStack.value.length > 0); + return { + source, + undoStack, + redoStack, + last, + history, + canUndo, + canRedo, + clear, + commit, + reset, + undo, + redo + }; +} +function useRefHistory(source, options = {}) { + const { + deep = false, + flush = "pre", + eventFilter + } = options; + const { + eventFilter: composedFilter, + pause, + resume: resumeTracking, + isActive: isTracking + } = pausableFilter(eventFilter); + const { + ignoreUpdates, + ignorePrevAsyncUpdates, + stop + } = watchIgnorable( + source, + commit, + { deep, flush, eventFilter: composedFilter } + ); + function setSource(source2, value) { + ignorePrevAsyncUpdates(); + ignoreUpdates(() => { + source2.value = value; + }); + } + const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource }); + const { clear, commit: manualCommit } = manualHistory; + function commit() { + ignorePrevAsyncUpdates(); + manualCommit(); + } + function resume(commitNow) { + resumeTracking(); + if (commitNow) + commit(); + } + function batch(fn) { + let canceled = false; + const cancel = () => canceled = true; + ignoreUpdates(() => { + fn(cancel); + }); + if (!canceled) + commit(); + } + function dispose() { + stop(); + clear(); + } + return { + ...manualHistory, + isTracking, + pause, + resume, + commit, + batch, + dispose + }; +} +function useDebouncedRefHistory(source, options = {}) { + const filter = options.debounce ? debounceFilter(options.debounce) : void 0; + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; +} +function useDeviceMotion(options = {}) { + const { + window: window2 = defaultWindow, + eventFilter = bypassFilter + } = options; + const acceleration = ref({ x: null, y: null, z: null }); + const rotationRate = ref({ alpha: null, beta: null, gamma: null }); + const interval = ref(0); + const accelerationIncludingGravity = ref({ + x: null, + y: null, + z: null + }); + if (window2) { + const onDeviceMotion = createFilterWrapper( + eventFilter, + (event) => { + acceleration.value = event.acceleration; + accelerationIncludingGravity.value = event.accelerationIncludingGravity; + rotationRate.value = event.rotationRate; + interval.value = event.interval; + } + ); + useEventListener(window2, "devicemotion", onDeviceMotion); + } + return { + acceleration, + accelerationIncludingGravity, + rotationRate, + interval + }; +} +function useDeviceOrientation(options = {}) { + const { window: window2 = defaultWindow } = options; + const isSupported = useSupported(() => window2 && "DeviceOrientationEvent" in window2); + const isAbsolute = ref(false); + const alpha = ref(null); + const beta = ref(null); + const gamma = ref(null); + if (window2 && isSupported.value) { + useEventListener(window2, "deviceorientation", (event) => { + isAbsolute.value = event.absolute; + alpha.value = event.alpha; + beta.value = event.beta; + gamma.value = event.gamma; + }); + } + return { + isSupported, + isAbsolute, + alpha, + beta, + gamma + }; +} +function useDevicePixelRatio(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const pixelRatio = ref(1); + if (window2) { + let observe2 = function() { + pixelRatio.value = window2.devicePixelRatio; + cleanup2(); + media = window2.matchMedia(`(resolution: ${pixelRatio.value}dppx)`); + media.addEventListener("change", observe2, { once: true }); + }, cleanup2 = function() { + media == null ? void 0 : media.removeEventListener("change", observe2); + }; + let media; + observe2(); + tryOnScopeDispose(cleanup2); + } + return { pixelRatio }; +} +function useDevicesList(options = {}) { + const { + navigator = defaultNavigator, + requestPermissions = false, + constraints = { audio: true, video: true }, + onUpdated: onUpdated2 + } = options; + const devices = ref([]); + const videoInputs = computed(() => devices.value.filter((i) => i.kind === "videoinput")); + const audioInputs = computed(() => devices.value.filter((i) => i.kind === "audioinput")); + const audioOutputs = computed(() => devices.value.filter((i) => i.kind === "audiooutput")); + const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices); + const permissionGranted = ref(false); + let stream; + async function update() { + if (!isSupported.value) + return; + devices.value = await navigator.mediaDevices.enumerateDevices(); + onUpdated2 == null ? void 0 : onUpdated2(devices.value); + if (stream) { + stream.getTracks().forEach((t) => t.stop()); + stream = null; + } + } + async function ensurePermissions() { + if (!isSupported.value) + return false; + if (permissionGranted.value) + return true; + const { state, query } = usePermission("camera", { controls: true }); + await query(); + if (state.value !== "granted") { + stream = await navigator.mediaDevices.getUserMedia(constraints); + update(); + permissionGranted.value = true; + } else { + permissionGranted.value = true; + } + return permissionGranted.value; + } + if (isSupported.value) { + if (requestPermissions) + ensurePermissions(); + useEventListener(navigator.mediaDevices, "devicechange", update); + update(); + } + return { + devices, + ensurePermissions, + permissionGranted, + videoInputs, + audioInputs, + audioOutputs, + isSupported + }; +} +function useDisplayMedia(options = {}) { + var _a; + const enabled = ref((_a = options.enabled) != null ? _a : false); + const video = options.video; + const audio = options.audio; + const { navigator = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia; + }); + const constraint = { audio, video }; + const stream = shallowRef(); + async function _start() { + if (!isSupported.value || stream.value) + return; + stream.value = await navigator.mediaDevices.getDisplayMedia(constraint); + return stream.value; + } + async function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + watch( + enabled, + (v) => { + if (v) + _start(); + else + _stop(); + }, + { immediate: true } + ); + return { + isSupported, + stream, + start, + stop, + enabled + }; +} +function useDocumentVisibility(options = {}) { + const { document: document2 = defaultDocument } = options; + if (!document2) + return ref("visible"); + const visibility = ref(document2.visibilityState); + useEventListener(document2, "visibilitychange", () => { + visibility.value = document2.visibilityState; + }); + return visibility; +} +function useDraggable(target, options = {}) { + var _a, _b; + const { + pointerTypes, + preventDefault: preventDefault2, + stopPropagation, + exact, + onMove, + onEnd, + onStart, + initialValue, + axis = "both", + draggingElement = defaultWindow, + containerElement, + handle: draggingHandle = target + } = options; + const position = ref( + (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 } + ); + const pressedDelta = ref(); + const filterEvent = (e) => { + if (pointerTypes) + return pointerTypes.includes(e.pointerType); + return true; + }; + const handleEvent = (e) => { + if (toValue(preventDefault2)) + e.preventDefault(); + if (toValue(stopPropagation)) + e.stopPropagation(); + }; + const start = (e) => { + var _a2; + if (!filterEvent(e)) + return; + if (toValue(exact) && e.target !== toValue(target)) + return; + const container = toValue(containerElement); + const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container); + const targetRect = toValue(target).getBoundingClientRect(); + const pos = { + x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left), + y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top) + }; + if ((onStart == null ? void 0 : onStart(pos, e)) === false) + return; + pressedDelta.value = pos; + handleEvent(e); + }; + const move = (e) => { + var _a2; + if (!filterEvent(e)) + return; + if (!pressedDelta.value) + return; + const container = toValue(containerElement); + const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container); + const targetRect = toValue(target).getBoundingClientRect(); + let { x, y } = position.value; + if (axis === "x" || axis === "both") { + x = e.clientX - pressedDelta.value.x; + if (container) + x = Math.min(Math.max(0, x), containerRect.width - targetRect.width); + } + if (axis === "y" || axis === "both") { + y = e.clientY - pressedDelta.value.y; + if (container) + y = Math.min(Math.max(0, y), containerRect.height - targetRect.height); + } + position.value = { + x, + y + }; + onMove == null ? void 0 : onMove(position.value, e); + handleEvent(e); + }; + const end = (e) => { + if (!filterEvent(e)) + return; + if (!pressedDelta.value) + return; + pressedDelta.value = void 0; + onEnd == null ? void 0 : onEnd(position.value, e); + handleEvent(e); + }; + if (isClient) { + const config = { capture: (_b = options.capture) != null ? _b : true }; + useEventListener(draggingHandle, "pointerdown", start, config); + useEventListener(draggingElement, "pointermove", move, config); + useEventListener(draggingElement, "pointerup", end, config); + } + return { + ...toRefs2(position), + position, + isDragging: computed(() => !!pressedDelta.value), + style: computed( + () => `left:${position.value.x}px;top:${position.value.y}px;` + ) + }; +} +function useDropZone(target, options = {}) { + const isOverDropZone = ref(false); + const files = shallowRef(null); + let counter = 0; + let isDataTypeIncluded = true; + if (isClient) { + const _options = typeof options === "function" ? { onDrop: options } : options; + const getFiles = (event) => { + var _a, _b; + const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []); + return files.value = list.length === 0 ? null : list; + }; + useEventListener(target, "dragenter", (event) => { + var _a, _b; + const types = Array.from(((_a = event == null ? void 0 : event.dataTransfer) == null ? void 0 : _a.items) || []).map((i) => i.kind === "file" ? i.type : null).filter(notNullish); + if (_options.dataTypes && event.dataTransfer) { + const dataTypes = unref(_options.dataTypes); + isDataTypeIncluded = typeof dataTypes === "function" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true; + if (!isDataTypeIncluded) + return; + } + event.preventDefault(); + counter += 1; + isOverDropZone.value = true; + (_b = _options.onEnter) == null ? void 0 : _b.call(_options, getFiles(event), event); + }); + useEventListener(target, "dragover", (event) => { + var _a; + if (!isDataTypeIncluded) + return; + event.preventDefault(); + (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event); + }); + useEventListener(target, "dragleave", (event) => { + var _a; + if (!isDataTypeIncluded) + return; + event.preventDefault(); + counter -= 1; + if (counter === 0) + isOverDropZone.value = false; + (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event); + }); + useEventListener(target, "drop", (event) => { + var _a; + event.preventDefault(); + counter = 0; + isOverDropZone.value = false; + (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event); + }); + } + return { + files, + isOverDropZone + }; +} +function useResizeObserver(target, callback, options = {}) { + const { window: window2 = defaultWindow, ...observerOptions } = options; + let observer; + const isSupported = useSupported(() => window2 && "ResizeObserver" in window2); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]); + const stopWatch = watch( + targets, + (els) => { + cleanup(); + if (isSupported.value && window2) { + observer = new ResizeObserver(callback); + for (const _el of els) + _el && observer.observe(_el, observerOptions); + } + }, + { immediate: true, flush: "post", deep: true } + ); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} +function useElementBounding(target, options = {}) { + const { + reset = true, + windowResize = true, + windowScroll = true, + immediate = true + } = options; + const height = ref(0); + const bottom = ref(0); + const left = ref(0); + const right = ref(0); + const top = ref(0); + const width = ref(0); + const x = ref(0); + const y = ref(0); + function update() { + const el = unrefElement(target); + if (!el) { + if (reset) { + height.value = 0; + bottom.value = 0; + left.value = 0; + right.value = 0; + top.value = 0; + width.value = 0; + x.value = 0; + y.value = 0; + } + return; + } + const rect = el.getBoundingClientRect(); + height.value = rect.height; + bottom.value = rect.bottom; + left.value = rect.left; + right.value = rect.right; + top.value = rect.top; + width.value = rect.width; + x.value = rect.x; + y.value = rect.y; + } + useResizeObserver(target, update); + watch(() => unrefElement(target), (ele) => !ele && update()); + useMutationObserver(target, update, { + attributeFilter: ["style", "class"] + }); + if (windowScroll) + useEventListener("scroll", update, { capture: true, passive: true }); + if (windowResize) + useEventListener("resize", update, { passive: true }); + tryOnMounted(() => { + if (immediate) + update(); + }); + return { + height, + bottom, + left, + right, + top, + width, + x, + y, + update + }; +} +function useElementByPoint(options) { + const { + x, + y, + document: document2 = defaultDocument, + multiple, + interval = "requestAnimationFrame", + immediate = true + } = options; + const isSupported = useSupported(() => { + if (toValue(multiple)) + return document2 && "elementsFromPoint" in document2; + return document2 && "elementFromPoint" in document2; + }); + const element = ref(null); + const cb = () => { + var _a, _b; + element.value = toValue(multiple) ? (_a = document2 == null ? void 0 : document2.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document2 == null ? void 0 : document2.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null; + }; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate }); + return { + isSupported, + element, + ...controls + }; +} +function useElementHover(el, options = {}) { + const { + delayEnter = 0, + delayLeave = 0, + window: window2 = defaultWindow + } = options; + const isHovered = ref(false); + let timer; + const toggle = (entering) => { + const delay = entering ? delayEnter : delayLeave; + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (delay) + timer = setTimeout(() => isHovered.value = entering, delay); + else + isHovered.value = entering; + }; + if (!window2) + return isHovered; + useEventListener(el, "mouseenter", () => toggle(true), { passive: true }); + useEventListener(el, "mouseleave", () => toggle(false), { passive: true }); + return isHovered; +} +function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) { + const { window: window2 = defaultWindow, box = "content-box" } = options; + const isSVG = computed(() => { + var _a, _b; + return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg"); + }); + const width = ref(initialSize.width); + const height = ref(initialSize.height); + const { stop: stop1 } = useResizeObserver( + target, + ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window2 && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const styles = window2.getComputedStyle($elem); + width.value = Number.parseFloat(styles.width); + height.value = Number.parseFloat(styles.height); + } + } else { + if (boxSize) { + const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize]; + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + } + }, + options + ); + tryOnMounted(() => { + const ele = unrefElement(target); + if (ele) { + width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width; + height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height; + } + }); + const stop2 = watch( + () => unrefElement(target), + (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + } + ); + function stop() { + stop1(); + stop2(); + } + return { + width, + height, + stop + }; +} +function useIntersectionObserver(target, callback, options = {}) { + const { + root, + rootMargin = "0px", + threshold = 0.1, + window: window2 = defaultWindow, + immediate = true + } = options; + const isSupported = useSupported(() => window2 && "IntersectionObserver" in window2); + const targets = computed(() => { + const _target = toValue(target); + return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish); + }); + let cleanup = noop; + const isActive = ref(immediate); + const stopWatch = isSupported.value ? watch( + () => [targets.value, unrefElement(root), isActive.value], + ([targets2, root2]) => { + cleanup(); + if (!isActive.value) + return; + if (!targets2.length) + return; + const observer = new IntersectionObserver( + callback, + { + root: unrefElement(root2), + rootMargin, + threshold + } + ); + targets2.forEach((el) => el && observer.observe(el)); + cleanup = () => { + observer.disconnect(); + cleanup = noop; + }; + }, + { immediate, flush: "post" } + ) : noop; + const stop = () => { + cleanup(); + stopWatch(); + isActive.value = false; + }; + tryOnScopeDispose(stop); + return { + isSupported, + isActive, + pause() { + cleanup(); + isActive.value = false; + }, + resume() { + isActive.value = true; + }, + stop + }; +} +function useElementVisibility(element, options = {}) { + const { window: window2 = defaultWindow, scrollTarget } = options; + const elementIsVisible = ref(false); + useIntersectionObserver( + element, + (intersectionObserverEntries) => { + let isIntersecting = elementIsVisible.value; + let latestTime = 0; + for (const entry of intersectionObserverEntries) { + if (entry.time >= latestTime) { + latestTime = entry.time; + isIntersecting = entry.isIntersecting; + } + } + elementIsVisible.value = isIntersecting; + }, + { + root: scrollTarget, + window: window2, + threshold: 0 + } + ); + return elementIsVisible; +} +var events = /* @__PURE__ */ new Map(); +function useEventBus(key) { + const scope = getCurrentScope(); + function on(listener) { + var _a; + const listeners = events.get(key) || /* @__PURE__ */ new Set(); + listeners.add(listener); + events.set(key, listeners); + const _off = () => off(listener); + (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off); + return _off; + } + function once(listener) { + function _listener(...args) { + off(_listener); + listener(...args); + } + return on(_listener); + } + function off(listener) { + const listeners = events.get(key); + if (!listeners) + return; + listeners.delete(listener); + if (!listeners.size) + reset(); + } + function reset() { + events.delete(key); + } + function emit(event, payload) { + var _a; + (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload)); + } + return { on, once, off, emit, reset }; +} +function useEventSource(url, events2 = [], options = {}) { + const event = ref(null); + const data = ref(null); + const status = ref("CONNECTING"); + const eventSource = ref(null); + const error = shallowRef(null); + const { + withCredentials = false + } = options; + const close = () => { + if (eventSource.value) { + eventSource.value.close(); + eventSource.value = null; + status.value = "CLOSED"; + } + }; + const es = new EventSource(url, { withCredentials }); + eventSource.value = es; + es.onopen = () => { + status.value = "OPEN"; + error.value = null; + }; + es.onerror = (e) => { + status.value = "CLOSED"; + error.value = e; + }; + es.onmessage = (e) => { + event.value = null; + data.value = e.data; + }; + for (const event_name of events2) { + useEventListener(es, event_name, (e) => { + event.value = event_name; + data.value = e.data || null; + }); + } + tryOnScopeDispose(() => { + close(); + }); + return { + eventSource, + event, + data, + status, + error, + close + }; +} +function useEyeDropper(options = {}) { + const { initialValue = "" } = options; + const isSupported = useSupported(() => typeof window !== "undefined" && "EyeDropper" in window); + const sRGBHex = ref(initialValue); + async function open(openOptions) { + if (!isSupported.value) + return; + const eyeDropper = new window.EyeDropper(); + const result = await eyeDropper.open(openOptions); + sRGBHex.value = result.sRGBHex; + return result; + } + return { isSupported, sRGBHex, open }; +} +function useFavicon(newIcon = null, options = {}) { + const { + baseUrl = "", + rel = "icon", + document: document2 = defaultDocument + } = options; + const favicon = toRef2(newIcon); + const applyIcon = (icon) => { + const elements = document2 == null ? void 0 : document2.head.querySelectorAll(`link[rel*="${rel}"]`); + if (!elements || elements.length === 0) { + const link = document2 == null ? void 0 : document2.createElement("link"); + if (link) { + link.rel = rel; + link.href = `${baseUrl}${icon}`; + link.type = `image/${icon.split(".").pop()}`; + document2 == null ? void 0 : document2.head.append(link); + } + return; + } + elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`); + }; + watch( + favicon, + (i, o) => { + if (typeof i === "string" && i !== o) + applyIcon(i); + }, + { immediate: true } + ); + return favicon; +} +var payloadMapping = { + json: "application/json", + text: "text/plain" +}; +function isFetchOptions(obj) { + return obj && containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch", "updateDataOnError"); +} +function isAbsoluteURL(url) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} +function headersToObject(headers) { + if (typeof Headers !== "undefined" && headers instanceof Headers) + return Object.fromEntries([...headers.entries()]); + return headers; +} +function combineCallbacks(combination, ...callbacks) { + if (combination === "overwrite") { + return async (ctx) => { + const callback = callbacks[callbacks.length - 1]; + if (callback) + return { ...ctx, ...await callback(ctx) }; + return ctx; + }; + } else { + return async (ctx) => { + for (const callback of callbacks) { + if (callback) + ctx = { ...ctx, ...await callback(ctx) }; + } + return ctx; + }; + } +} +function createFetch(config = {}) { + const _combination = config.combination || "chain"; + const _options = config.options || {}; + const _fetchOptions = config.fetchOptions || {}; + function useFactoryFetch(url, ...args) { + const computedUrl = computed(() => { + const baseUrl = toValue(config.baseUrl); + const targetUrl = toValue(url); + return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl; + }); + let options = _options; + let fetchOptions = _fetchOptions; + if (args.length > 0) { + if (isFetchOptions(args[0])) { + options = { + ...options, + ...args[0], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError) + }; + } else { + fetchOptions = { + ...fetchOptions, + ...args[0], + headers: { + ...headersToObject(fetchOptions.headers) || {}, + ...headersToObject(args[0].headers) || {} + } + }; + } + } + if (args.length > 1 && isFetchOptions(args[1])) { + options = { + ...options, + ...args[1], + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError) + }; + } + return useFetch(computedUrl, fetchOptions, options); + } + return useFactoryFetch; +} +function useFetch(url, ...args) { + var _a; + const supportsAbort = typeof AbortController === "function"; + let fetchOptions = {}; + let options = { + immediate: true, + refetch: false, + timeout: 0, + updateDataOnError: false + }; + const config = { + method: "GET", + type: "text", + payload: void 0 + }; + if (args.length > 0) { + if (isFetchOptions(args[0])) + options = { ...options, ...args[0] }; + else + fetchOptions = args[0]; + } + if (args.length > 1) { + if (isFetchOptions(args[1])) + options = { ...options, ...args[1] }; + } + const { + fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch, + initialData, + timeout + } = options; + const responseEvent = createEventHook(); + const errorEvent = createEventHook(); + const finallyEvent = createEventHook(); + const isFinished = ref(false); + const isFetching = ref(false); + const aborted = ref(false); + const statusCode = ref(null); + const response = shallowRef(null); + const error = shallowRef(null); + const data = shallowRef(initialData || null); + const canAbort = computed(() => supportsAbort && isFetching.value); + let controller; + let timer; + const abort = () => { + if (supportsAbort) { + controller == null ? void 0 : controller.abort(); + controller = new AbortController(); + controller.signal.onabort = () => aborted.value = true; + fetchOptions = { + ...fetchOptions, + signal: controller.signal + }; + } + }; + const loading = (isLoading) => { + isFetching.value = isLoading; + isFinished.value = !isLoading; + }; + if (timeout) + timer = useTimeoutFn(abort, timeout, { immediate: false }); + let executeCounter = 0; + const execute = async (throwOnFailed = false) => { + var _a2, _b; + abort(); + loading(true); + error.value = null; + statusCode.value = null; + aborted.value = false; + executeCounter += 1; + const currentExecuteCounter = executeCounter; + const defaultFetchOptions = { + method: config.method, + headers: {} + }; + if (config.payload) { + const headers = headersToObject(defaultFetchOptions.headers); + const payload = toValue(config.payload); + if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData)) + config.payloadType = "json"; + if (config.payloadType) + headers["Content-Type"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType; + defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(payload) : payload; + } + let isCanceled = false; + const context = { + url: toValue(url), + options: { + ...defaultFetchOptions, + ...fetchOptions + }, + cancel: () => { + isCanceled = true; + } + }; + if (options.beforeFetch) + Object.assign(context, await options.beforeFetch(context)); + if (isCanceled || !fetch) { + loading(false); + return Promise.resolve(null); + } + let responseData = null; + if (timer) + timer.start(); + return fetch( + context.url, + { + ...defaultFetchOptions, + ...context.options, + headers: { + ...headersToObject(defaultFetchOptions.headers), + ...headersToObject((_b = context.options) == null ? void 0 : _b.headers) + } + } + ).then(async (fetchResponse) => { + response.value = fetchResponse; + statusCode.value = fetchResponse.status; + responseData = await fetchResponse.clone()[config.type](); + if (!fetchResponse.ok) { + data.value = initialData || null; + throw new Error(fetchResponse.statusText); + } + if (options.afterFetch) { + ({ data: responseData } = await options.afterFetch({ + data: responseData, + response: fetchResponse + })); + } + data.value = responseData; + responseEvent.trigger(fetchResponse); + return fetchResponse; + }).catch(async (fetchError) => { + let errorData = fetchError.message || fetchError.name; + if (options.onFetchError) { + ({ error: errorData, data: responseData } = await options.onFetchError({ + data: responseData, + error: fetchError, + response: response.value + })); + } + error.value = errorData; + if (options.updateDataOnError) + data.value = responseData; + errorEvent.trigger(fetchError); + if (throwOnFailed) + throw fetchError; + return null; + }).finally(() => { + if (currentExecuteCounter === executeCounter) + loading(false); + if (timer) + timer.stop(); + finallyEvent.trigger(null); + }); + }; + const refetch = toRef2(options.refetch); + watch( + [ + refetch, + toRef2(url) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); + const shell = { + isFinished, + statusCode, + response, + error, + data, + isFetching, + canAbort, + aborted, + abort, + execute, + onFetchResponse: responseEvent.on, + onFetchError: errorEvent.on, + onFetchFinally: finallyEvent.on, + // method + get: setMethod("GET"), + put: setMethod("PUT"), + post: setMethod("POST"), + delete: setMethod("DELETE"), + patch: setMethod("PATCH"), + head: setMethod("HEAD"), + options: setMethod("OPTIONS"), + // type + json: setType("json"), + text: setType("text"), + blob: setType("blob"), + arrayBuffer: setType("arrayBuffer"), + formData: setType("formData") + }; + function setMethod(method) { + return (payload, payloadType) => { + if (!isFetching.value) { + config.method = method; + config.payload = payload; + config.payloadType = payloadType; + if (isRef(config.payload)) { + watch( + [ + refetch, + toRef2(config.payload) + ], + ([refetch2]) => refetch2 && execute(), + { deep: true } + ); + } + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + return void 0; + }; + } + function waitUntilFinished() { + return new Promise((resolve, reject) => { + until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2)); + }); + } + function setType(type) { + return () => { + if (!isFetching.value) { + config.type = type; + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; + } + return void 0; + }; + } + if (options.immediate) + Promise.resolve().then(() => execute()); + return { + ...shell, + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }; +} +function joinPaths(start, end) { + if (!start.endsWith("/") && !end.startsWith("/")) + return `${start}/${end}`; + return `${start}${end}`; +} +var DEFAULT_OPTIONS = { + multiple: true, + accept: "*", + reset: false, + directory: false +}; +function useFileDialog(options = {}) { + const { + document: document2 = defaultDocument + } = options; + const files = ref(null); + const { on: onChange, trigger } = createEventHook(); + let input; + if (document2) { + input = document2.createElement("input"); + input.type = "file"; + input.onchange = (event) => { + const result = event.target; + files.value = result.files; + trigger(files.value); + }; + } + const reset = () => { + files.value = null; + if (input) { + input.value = ""; + trigger(null); + } + }; + const open = (localOptions) => { + if (!input) + return; + const _options = { + ...DEFAULT_OPTIONS, + ...options, + ...localOptions + }; + input.multiple = _options.multiple; + input.accept = _options.accept; + input.webkitdirectory = _options.directory; + if (hasOwn(_options, "capture")) + input.capture = _options.capture; + if (_options.reset) + reset(); + input.click(); + }; + return { + files: readonly(files), + open, + reset, + onChange + }; +} +function useFileSystemAccess(options = {}) { + const { + window: _window = defaultWindow, + dataType = "Text" + } = options; + const window2 = _window; + const isSupported = useSupported(() => window2 && "showSaveFilePicker" in window2 && "showOpenFilePicker" in window2); + const fileHandle = ref(); + const data = ref(); + const file = ref(); + const fileName = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : ""; + }); + const fileMIME = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : ""; + }); + const fileSize = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0; + }); + const fileLastModified = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0; + }); + async function open(_options = {}) { + if (!isSupported.value) + return; + const [handle] = await window2.showOpenFilePicker({ ...toValue(options), ..._options }); + fileHandle.value = handle; + await updateFile(); + await updateData(); + } + async function create(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window2.showSaveFilePicker({ ...options, ..._options }); + data.value = void 0; + await updateFile(); + await updateData(); + } + async function save(_options = {}) { + if (!isSupported.value) + return; + if (!fileHandle.value) + return saveAs(_options); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function saveAs(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window2.showSaveFilePicker({ ...options, ..._options }); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function updateFile() { + var _a; + file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile()); + } + async function updateData() { + var _a, _b; + const type = toValue(dataType); + if (type === "Text") + data.value = await ((_a = file.value) == null ? void 0 : _a.text()); + else if (type === "ArrayBuffer") + data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer()); + else if (type === "Blob") + data.value = file.value; + } + watch(() => toValue(dataType), updateData); + return { + isSupported, + data, + file, + fileName, + fileMIME, + fileSize, + fileLastModified, + open, + create, + save, + saveAs, + updateData + }; +} +function useFocus(target, options = {}) { + const { initialValue = false, focusVisible = false } = options; + const innerFocused = ref(false); + const targetElement = computed(() => unrefElement(target)); + useEventListener(targetElement, "focus", (event) => { + var _a, _b; + if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, ":focus-visible"))) + innerFocused.value = true; + }); + useEventListener(targetElement, "blur", () => innerFocused.value = false); + const focused = computed({ + get: () => innerFocused.value, + set(value) { + var _a, _b; + if (!value && innerFocused.value) + (_a = targetElement.value) == null ? void 0 : _a.blur(); + else if (value && !innerFocused.value) + (_b = targetElement.value) == null ? void 0 : _b.focus(); + } + }); + watch( + targetElement, + () => { + focused.value = initialValue; + }, + { immediate: true, flush: "post" } + ); + return { focused }; +} +function useFocusWithin(target, options = {}) { + const activeElement = useActiveElement(options); + const targetElement = computed(() => unrefElement(target)); + const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false); + return { focused }; +} +function useFps(options) { + var _a; + const fps = ref(0); + if (typeof performance === "undefined") + return fps; + const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10; + let last = performance.now(); + let ticks = 0; + useRafFn(() => { + ticks += 1; + if (ticks >= every) { + const now2 = performance.now(); + const diff = now2 - last; + fps.value = Math.round(1e3 / (diff / ticks)); + last = now2; + ticks = 0; + } + }); + return fps; +} +var eventHandlers = [ + "fullscreenchange", + "webkitfullscreenchange", + "webkitendfullscreen", + "mozfullscreenchange", + "MSFullscreenChange" +]; +function useFullscreen(target, options = {}) { + const { + document: document2 = defaultDocument, + autoExit = false + } = options; + const targetRef = computed(() => { + var _a; + return (_a = unrefElement(target)) != null ? _a : document2 == null ? void 0 : document2.querySelector("html"); + }); + const isFullscreen = ref(false); + const requestMethod = computed(() => { + return [ + "requestFullscreen", + "webkitRequestFullscreen", + "webkitEnterFullscreen", + "webkitEnterFullScreen", + "webkitRequestFullScreen", + "mozRequestFullScreen", + "msRequestFullscreen" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const exitMethod = computed(() => { + return [ + "exitFullscreen", + "webkitExitFullscreen", + "webkitExitFullScreen", + "webkitCancelFullScreen", + "mozCancelFullScreen", + "msExitFullscreen" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const fullscreenEnabled = computed(() => { + return [ + "fullScreen", + "webkitIsFullScreen", + "webkitDisplayingFullscreen", + "mozFullScreen", + "msFullscreenElement" + ].find((m) => document2 && m in document2 || targetRef.value && m in targetRef.value); + }); + const fullscreenElementMethod = [ + "fullscreenElement", + "webkitFullscreenElement", + "mozFullScreenElement", + "msFullscreenElement" + ].find((m) => document2 && m in document2); + const isSupported = useSupported(() => targetRef.value && document2 && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0); + const isCurrentElementFullScreen = () => { + if (fullscreenElementMethod) + return (document2 == null ? void 0 : document2[fullscreenElementMethod]) === targetRef.value; + return false; + }; + const isElementFullScreen = () => { + if (fullscreenEnabled.value) { + if (document2 && document2[fullscreenEnabled.value] != null) { + return document2[fullscreenEnabled.value]; + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) { + return Boolean(target2[fullscreenEnabled.value]); + } + } + } + return false; + }; + async function exit() { + if (!isSupported.value || !isFullscreen.value) + return; + if (exitMethod.value) { + if ((document2 == null ? void 0 : document2[exitMethod.value]) != null) { + await document2[exitMethod.value](); + } else { + const target2 = targetRef.value; + if ((target2 == null ? void 0 : target2[exitMethod.value]) != null) + await target2[exitMethod.value](); + } + } + isFullscreen.value = false; + } + async function enter() { + if (!isSupported.value || isFullscreen.value) + return; + if (isElementFullScreen()) + await exit(); + const target2 = targetRef.value; + if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) { + await target2[requestMethod.value](); + isFullscreen.value = true; + } + } + async function toggle() { + await (isFullscreen.value ? exit() : enter()); + } + const handlerCallback = () => { + const isElementFullScreenValue = isElementFullScreen(); + if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) + isFullscreen.value = isElementFullScreenValue; + }; + useEventListener(document2, eventHandlers, handlerCallback, false); + useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false); + if (autoExit) + tryOnScopeDispose(exit); + return { + isSupported, + isFullscreen, + enter, + exit, + toggle + }; +} +function mapGamepadToXbox360Controller(gamepad) { + return computed(() => { + if (gamepad.value) { + return { + buttons: { + a: gamepad.value.buttons[0], + b: gamepad.value.buttons[1], + x: gamepad.value.buttons[2], + y: gamepad.value.buttons[3] + }, + bumper: { + left: gamepad.value.buttons[4], + right: gamepad.value.buttons[5] + }, + triggers: { + left: gamepad.value.buttons[6], + right: gamepad.value.buttons[7] + }, + stick: { + left: { + horizontal: gamepad.value.axes[0], + vertical: gamepad.value.axes[1], + button: gamepad.value.buttons[10] + }, + right: { + horizontal: gamepad.value.axes[2], + vertical: gamepad.value.axes[3], + button: gamepad.value.buttons[11] + } + }, + dpad: { + up: gamepad.value.buttons[12], + down: gamepad.value.buttons[13], + left: gamepad.value.buttons[14], + right: gamepad.value.buttons[15] + }, + back: gamepad.value.buttons[8], + start: gamepad.value.buttons[9] + }; + } + return null; + }); +} +function useGamepad(options = {}) { + const { + navigator = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator && "getGamepads" in navigator); + const gamepads = ref([]); + const onConnectedHook = createEventHook(); + const onDisconnectedHook = createEventHook(); + const stateFromGamepad = (gamepad) => { + const hapticActuators = []; + const vibrationActuator = "vibrationActuator" in gamepad ? gamepad.vibrationActuator : null; + if (vibrationActuator) + hapticActuators.push(vibrationActuator); + if (gamepad.hapticActuators) + hapticActuators.push(...gamepad.hapticActuators); + return { + ...gamepad, + id: gamepad.id, + hapticActuators, + axes: gamepad.axes.map((axes) => axes), + buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value })) + }; + }; + const updateGamepadState = () => { + const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; + for (let i = 0; i < _gamepads.length; ++i) { + const gamepad = _gamepads[i]; + if (gamepad) { + const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index); + if (index > -1) + gamepads.value[index] = stateFromGamepad(gamepad); + } + } + }; + const { isActive, pause, resume } = useRafFn(updateGamepadState); + const onGamepadConnected = (gamepad) => { + if (!gamepads.value.some(({ index }) => index === gamepad.index)) { + gamepads.value.push(stateFromGamepad(gamepad)); + onConnectedHook.trigger(gamepad.index); + } + resume(); + }; + const onGamepadDisconnected = (gamepad) => { + gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index); + onDisconnectedHook.trigger(gamepad.index); + }; + useEventListener("gamepadconnected", (e) => onGamepadConnected(e.gamepad)); + useEventListener("gamepaddisconnected", (e) => onGamepadDisconnected(e.gamepad)); + tryOnMounted(() => { + const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; + if (_gamepads) { + for (let i = 0; i < _gamepads.length; ++i) { + const gamepad = _gamepads[i]; + if (gamepad) + onGamepadConnected(gamepad); + } + } + }); + pause(); + return { + isSupported, + onConnected: onConnectedHook.on, + onDisconnected: onDisconnectedHook.on, + gamepads, + pause, + resume, + isActive + }; +} +function useGeolocation(options = {}) { + const { + enableHighAccuracy = true, + maximumAge = 3e4, + timeout = 27e3, + navigator = defaultNavigator, + immediate = true + } = options; + const isSupported = useSupported(() => navigator && "geolocation" in navigator); + const locatedAt = ref(null); + const error = shallowRef(null); + const coords = ref({ + accuracy: 0, + latitude: Number.POSITIVE_INFINITY, + longitude: Number.POSITIVE_INFINITY, + altitude: null, + altitudeAccuracy: null, + heading: null, + speed: null + }); + function updatePosition(position) { + locatedAt.value = position.timestamp; + coords.value = position.coords; + error.value = null; + } + let watcher; + function resume() { + if (isSupported.value) { + watcher = navigator.geolocation.watchPosition( + updatePosition, + (err) => error.value = err, + { + enableHighAccuracy, + maximumAge, + timeout + } + ); + } + } + if (immediate) + resume(); + function pause() { + if (watcher && navigator) + navigator.geolocation.clearWatch(watcher); + } + tryOnScopeDispose(() => { + pause(); + }); + return { + isSupported, + coords, + locatedAt, + error, + resume, + pause + }; +} +var defaultEvents$1 = ["mousemove", "mousedown", "resize", "keydown", "touchstart", "wheel"]; +var oneMinute = 6e4; +function useIdle(timeout = oneMinute, options = {}) { + const { + initialState = false, + listenForVisibilityChange = true, + events: events2 = defaultEvents$1, + window: window2 = defaultWindow, + eventFilter = throttleFilter(50) + } = options; + const idle = ref(initialState); + const lastActive = ref(timestamp()); + let timer; + const reset = () => { + idle.value = false; + clearTimeout(timer); + timer = setTimeout(() => idle.value = true, timeout); + }; + const onEvent = createFilterWrapper( + eventFilter, + () => { + lastActive.value = timestamp(); + reset(); + } + ); + if (window2) { + const document2 = window2.document; + for (const event of events2) + useEventListener(window2, event, onEvent, { passive: true }); + if (listenForVisibilityChange) { + useEventListener(document2, "visibilitychange", () => { + if (!document2.hidden) + onEvent(); + }); + } + reset(); + } + return { + idle, + lastActive, + reset + }; +} +async function loadImage(options) { + return new Promise((resolve, reject) => { + const img = new Image(); + const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options; + img.src = src; + if (srcset) + img.srcset = srcset; + if (sizes) + img.sizes = sizes; + if (clazz) + img.className = clazz; + if (loading) + img.loading = loading; + if (crossorigin) + img.crossOrigin = crossorigin; + if (referrerPolicy) + img.referrerPolicy = referrerPolicy; + img.onload = () => resolve(img); + img.onerror = reject; + }); +} +function useImage(options, asyncStateOptions = {}) { + const state = useAsyncState( + () => loadImage(toValue(options)), + void 0, + { + resetOnExecute: true, + ...asyncStateOptions + } + ); + watch( + () => toValue(options), + () => state.execute(asyncStateOptions.delay), + { deep: true } + ); + return state; +} +var ARRIVED_STATE_THRESHOLD_PIXELS = 1; +function useScroll(element, options = {}) { + const { + throttle = 0, + idle = 200, + onStop = noop, + onScroll = noop, + offset = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, + eventListenerOptions = { + capture: false, + passive: true + }, + behavior = "auto", + window: window2 = defaultWindow + } = options; + const internalX = ref(0); + const internalY = ref(0); + const x = computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo2(x2, void 0); + } + }); + const y = computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo2(void 0, y2); + } + }); + function scrollTo2(_x, _y) { + var _a, _b, _c; + if (!window2) + return; + const _element = toValue(element); + if (!_element) + return; + (_c = _element instanceof Document ? window2.document.body : _element) == null ? void 0 : _c.scrollTo({ + top: (_a = toValue(_y)) != null ? _a : y.value, + left: (_b = toValue(_x)) != null ? _b : x.value, + behavior: toValue(behavior) + }); + } + const isScrolling = ref(false); + const arrivedState = reactive({ + left: true, + right: false, + top: true, + bottom: false + }); + const directions = reactive({ + left: false, + right: false, + top: false, + bottom: false + }); + const onScrollEnd = (e) => { + if (!isScrolling.value) + return; + isScrolling.value = false; + directions.left = false; + directions.right = false; + directions.top = false; + directions.bottom = false; + onStop(e); + }; + const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle); + const setArrivedState = (target) => { + var _a; + if (!window2) + return; + const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target; + const { display, flexDirection } = getComputedStyle(el); + const scrollLeft = el.scrollLeft; + directions.left = scrollLeft < internalX.value; + directions.right = scrollLeft > internalX.value; + const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0); + const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "row-reverse") { + arrivedState.left = right; + arrivedState.right = left; + } else { + arrivedState.left = left; + arrivedState.right = right; + } + internalX.value = scrollLeft; + let scrollTop = el.scrollTop; + if (target === window2.document && !scrollTop) + scrollTop = window2.document.body.scrollTop; + directions.top = scrollTop < internalY.value; + directions.bottom = scrollTop > internalY.value; + const top = Math.abs(scrollTop) <= 0 + (offset.top || 0); + const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + if (display === "flex" && flexDirection === "column-reverse") { + arrivedState.top = bottom; + arrivedState.bottom = top; + } else { + arrivedState.top = top; + arrivedState.bottom = bottom; + } + internalY.value = scrollTop; + }; + const onScrollHandler = (e) => { + var _a; + if (!window2) + return; + const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target; + setArrivedState(eventTarget); + isScrolling.value = true; + onScrollEndDebounced(e); + onScroll(e); + }; + useEventListener( + element, + "scroll", + throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, + eventListenerOptions + ); + tryOnMounted(() => { + const _element = toValue(element); + if (!_element) + return; + setArrivedState(_element); + }); + useEventListener( + element, + "scrollend", + onScrollEnd, + eventListenerOptions + ); + return { + x, + y, + isScrolling, + arrivedState, + directions, + measure() { + const _element = toValue(element); + if (window2 && _element) + setArrivedState(_element); + } + }; +} +function resolveElement(el) { + if (typeof Window !== "undefined" && el instanceof Window) + return el.document.documentElement; + if (typeof Document !== "undefined" && el instanceof Document) + return el.documentElement; + return el; +} +function useInfiniteScroll(element, onLoadMore, options = {}) { + var _a; + const { + direction = "bottom", + interval = 100, + canLoadMore = () => true + } = options; + const state = reactive(useScroll( + element, + { + ...options, + offset: { + [direction]: (_a = options.distance) != null ? _a : 0, + ...options.offset + } + } + )); + const promise = ref(); + const isLoading = computed(() => !!promise.value); + const observedElement = computed(() => { + return resolveElement(toValue(element)); + }); + const isElementVisible = useElementVisibility(observedElement); + function checkAndLoad() { + state.measure(); + if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value)) + return; + const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value; + const isNarrower = direction === "bottom" || direction === "top" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth; + if (state.arrivedState[direction] || isNarrower) { + if (!promise.value) { + promise.value = Promise.all([ + onLoadMore(state), + new Promise((resolve) => setTimeout(resolve, interval)) + ]).finally(() => { + promise.value = null; + nextTick(() => checkAndLoad()); + }); + } + } + } + watch( + () => [state.arrivedState[direction], isElementVisible.value], + checkAndLoad, + { immediate: true } + ); + return { + isLoading + }; +} +var defaultEvents = ["mousedown", "mouseup", "keydown", "keyup"]; +function useKeyModifier(modifier, options = {}) { + const { + events: events2 = defaultEvents, + document: document2 = defaultDocument, + initial = null + } = options; + const state = ref(initial); + if (document2) { + events2.forEach((listenerEvent) => { + useEventListener(document2, listenerEvent, (evt) => { + if (typeof evt.getModifierState === "function") + state.value = evt.getModifierState(modifier); + }); + }); + } + return state; +} +function useLocalStorage(key, initialValue, options = {}) { + const { window: window2 = defaultWindow } = options; + return useStorage(key, initialValue, window2 == null ? void 0 : window2.localStorage, options); +} +var DefaultMagicKeysAliasMap = { + ctrl: "control", + command: "meta", + cmd: "meta", + option: "alt", + up: "arrowup", + down: "arrowdown", + left: "arrowleft", + right: "arrowright" +}; +function useMagicKeys(options = {}) { + const { + reactive: useReactive = false, + target = defaultWindow, + aliasMap = DefaultMagicKeysAliasMap, + passive = true, + onEventFired = noop + } = options; + const current = reactive(/* @__PURE__ */ new Set()); + const obj = { + toJSON() { + return {}; + }, + current + }; + const refs = useReactive ? reactive(obj) : obj; + const metaDeps = /* @__PURE__ */ new Set(); + const usedKeys = /* @__PURE__ */ new Set(); + function setRefs(key, value) { + if (key in refs) { + if (useReactive) + refs[key] = value; + else + refs[key].value = value; + } + } + function reset() { + current.clear(); + for (const key of usedKeys) + setRefs(key, false); + } + function updateRefs(e, value) { + var _a, _b; + const key = (_a = e.key) == null ? void 0 : _a.toLowerCase(); + const code = (_b = e.code) == null ? void 0 : _b.toLowerCase(); + const values = [code, key].filter(Boolean); + if (key) { + if (value) + current.add(key); + else + current.delete(key); + } + for (const key2 of values) { + usedKeys.add(key2); + setRefs(key2, value); + } + if (key === "meta" && !value) { + metaDeps.forEach((key2) => { + current.delete(key2); + setRefs(key2, false); + }); + metaDeps.clear(); + } else if (typeof e.getModifierState === "function" && e.getModifierState("Meta") && value) { + [...current, ...values].forEach((key2) => metaDeps.add(key2)); + } + } + useEventListener(target, "keydown", (e) => { + updateRefs(e, true); + return onEventFired(e); + }, { passive }); + useEventListener(target, "keyup", (e) => { + updateRefs(e, false); + return onEventFired(e); + }, { passive }); + useEventListener("blur", reset, { passive: true }); + useEventListener("focus", reset, { passive: true }); + const proxy = new Proxy( + refs, + { + get(target2, prop, rec) { + if (typeof prop !== "string") + return Reflect.get(target2, prop, rec); + prop = prop.toLowerCase(); + if (prop in aliasMap) + prop = aliasMap[prop]; + if (!(prop in refs)) { + if (/[+_-]/.test(prop)) { + const keys2 = prop.split(/[+_-]/g).map((i) => i.trim()); + refs[prop] = computed(() => keys2.every((key) => toValue(proxy[key]))); + } else { + refs[prop] = ref(false); + } + } + const r = Reflect.get(target2, prop, rec); + return useReactive ? toValue(r) : r; + } + } + ); + return proxy; +} +function usingElRef(source, cb) { + if (toValue(source)) + cb(toValue(source)); +} +function timeRangeToArray(timeRanges) { + let ranges = []; + for (let i = 0; i < timeRanges.length; ++i) + ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]]; + return ranges; +} +function tracksToArray(tracks) { + return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType })); +} +var defaultOptions = { + src: "", + tracks: [] +}; +function useMediaControls(target, options = {}) { + options = { + ...defaultOptions, + ...options + }; + const { + document: document2 = defaultDocument + } = options; + const currentTime = ref(0); + const duration = ref(0); + const seeking = ref(false); + const volume = ref(1); + const waiting = ref(false); + const ended = ref(false); + const playing = ref(false); + const rate = ref(1); + const stalled = ref(false); + const buffered = ref([]); + const tracks = ref([]); + const selectedTrack = ref(-1); + const isPictureInPicture = ref(false); + const muted = ref(false); + const supportsPictureInPicture = document2 && "pictureInPictureEnabled" in document2; + const sourceErrorEvent = createEventHook(); + const disableTrack = (track) => { + usingElRef(target, (el) => { + if (track) { + const id = typeof track === "number" ? track : track.id; + el.textTracks[id].mode = "disabled"; + } else { + for (let i = 0; i < el.textTracks.length; ++i) + el.textTracks[i].mode = "disabled"; + } + selectedTrack.value = -1; + }); + }; + const enableTrack = (track, disableTracks = true) => { + usingElRef(target, (el) => { + const id = typeof track === "number" ? track : track.id; + if (disableTracks) + disableTrack(); + el.textTracks[id].mode = "showing"; + selectedTrack.value = id; + }); + }; + const togglePictureInPicture = () => { + return new Promise((resolve, reject) => { + usingElRef(target, async (el) => { + if (supportsPictureInPicture) { + if (!isPictureInPicture.value) { + el.requestPictureInPicture().then(resolve).catch(reject); + } else { + document2.exitPictureInPicture().then(resolve).catch(reject); + } + } + }); + }); + }; + watchEffect(() => { + if (!document2) + return; + const el = toValue(target); + if (!el) + return; + const src = toValue(options.src); + let sources = []; + if (!src) + return; + if (typeof src === "string") + sources = [{ src }]; + else if (Array.isArray(src)) + sources = src; + else if (isObject(src)) + sources = [src]; + el.querySelectorAll("source").forEach((e) => { + e.removeEventListener("error", sourceErrorEvent.trigger); + e.remove(); + }); + sources.forEach(({ src: src2, type }) => { + const source = document2.createElement("source"); + source.setAttribute("src", src2); + source.setAttribute("type", type || ""); + source.addEventListener("error", sourceErrorEvent.trigger); + el.appendChild(source); + }); + el.load(); + }); + tryOnScopeDispose(() => { + const el = toValue(target); + if (!el) + return; + el.querySelectorAll("source").forEach((e) => e.removeEventListener("error", sourceErrorEvent.trigger)); + }); + watch([target, volume], () => { + const el = toValue(target); + if (!el) + return; + el.volume = volume.value; + }); + watch([target, muted], () => { + const el = toValue(target); + if (!el) + return; + el.muted = muted.value; + }); + watch([target, rate], () => { + const el = toValue(target); + if (!el) + return; + el.playbackRate = rate.value; + }); + watchEffect(() => { + if (!document2) + return; + const textTracks = toValue(options.tracks); + const el = toValue(target); + if (!textTracks || !textTracks.length || !el) + return; + el.querySelectorAll("track").forEach((e) => e.remove()); + textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => { + const track = document2.createElement("track"); + track.default = isDefault || false; + track.kind = kind; + track.label = label; + track.src = src; + track.srclang = srcLang; + if (track.default) + selectedTrack.value = i; + el.appendChild(track); + }); + }); + const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => { + const el = toValue(target); + if (!el) + return; + el.currentTime = time; + }); + const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => { + const el = toValue(target); + if (!el) + return; + isPlaying ? el.play() : el.pause(); + }); + useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime)); + useEventListener(target, "durationchange", () => duration.value = toValue(target).duration); + useEventListener(target, "progress", () => buffered.value = timeRangeToArray(toValue(target).buffered)); + useEventListener(target, "seeking", () => seeking.value = true); + useEventListener(target, "seeked", () => seeking.value = false); + useEventListener(target, ["waiting", "loadstart"], () => { + waiting.value = true; + ignorePlayingUpdates(() => playing.value = false); + }); + useEventListener(target, "loadeddata", () => waiting.value = false); + useEventListener(target, "playing", () => { + waiting.value = false; + ended.value = false; + ignorePlayingUpdates(() => playing.value = true); + }); + useEventListener(target, "ratechange", () => rate.value = toValue(target).playbackRate); + useEventListener(target, "stalled", () => stalled.value = true); + useEventListener(target, "ended", () => ended.value = true); + useEventListener(target, "pause", () => ignorePlayingUpdates(() => playing.value = false)); + useEventListener(target, "play", () => ignorePlayingUpdates(() => playing.value = true)); + useEventListener(target, "enterpictureinpicture", () => isPictureInPicture.value = true); + useEventListener(target, "leavepictureinpicture", () => isPictureInPicture.value = false); + useEventListener(target, "volumechange", () => { + const el = toValue(target); + if (!el) + return; + volume.value = el.volume; + muted.value = el.muted; + }); + const listeners = []; + const stop = watch([target], () => { + const el = toValue(target); + if (!el) + return; + stop(); + listeners[0] = useEventListener(el.textTracks, "addtrack", () => tracks.value = tracksToArray(el.textTracks)); + listeners[1] = useEventListener(el.textTracks, "removetrack", () => tracks.value = tracksToArray(el.textTracks)); + listeners[2] = useEventListener(el.textTracks, "change", () => tracks.value = tracksToArray(el.textTracks)); + }); + tryOnScopeDispose(() => listeners.forEach((listener) => listener())); + return { + currentTime, + duration, + waiting, + seeking, + ended, + stalled, + buffered, + playing, + rate, + // Volume + volume, + muted, + // Tracks + tracks, + selectedTrack, + enableTrack, + disableTrack, + // Picture in Picture + supportsPictureInPicture, + togglePictureInPicture, + isPictureInPicture, + // Events + onSourceError: sourceErrorEvent.on + }; +} +function getMapVue2Compat() { + const data = shallowReactive({}); + return { + get: (key) => data[key], + set: (key, value) => set(data, key, value), + has: (key) => hasOwn(data, key), + delete: (key) => del(data, key), + clear: () => { + Object.keys(data).forEach((key) => { + del(data, key); + }); + } + }; +} +function useMemoize(resolver, options) { + const initCache = () => { + if (options == null ? void 0 : options.cache) + return shallowReactive(options.cache); + if (isVue2) + return getMapVue2Compat(); + return shallowReactive(/* @__PURE__ */ new Map()); + }; + const cache = initCache(); + const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args); + const _loadData = (key, ...args) => { + cache.set(key, resolver(...args)); + return cache.get(key); + }; + const loadData = (...args) => _loadData(generateKey(...args), ...args); + const deleteData = (...args) => { + cache.delete(generateKey(...args)); + }; + const clearData = () => { + cache.clear(); + }; + const memoized = (...args) => { + const key = generateKey(...args); + if (cache.has(key)) + return cache.get(key); + return _loadData(key, ...args); + }; + memoized.load = loadData; + memoized.delete = deleteData; + memoized.clear = clearData; + memoized.generateKey = generateKey; + memoized.cache = cache; + return memoized; +} +function useMemory(options = {}) { + const memory = ref(); + const isSupported = useSupported(() => typeof performance !== "undefined" && "memory" in performance); + if (isSupported.value) { + const { interval = 1e3 } = options; + useIntervalFn(() => { + memory.value = performance.memory; + }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback }); + } + return { isSupported, memory }; +} +var UseMouseBuiltinExtractors = { + page: (event) => [event.pageX, event.pageY], + client: (event) => [event.clientX, event.clientY], + screen: (event) => [event.screenX, event.screenY], + movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY] +}; +function useMouse(options = {}) { + const { + type = "page", + touch = true, + resetOnTouchEnds = false, + initialValue = { x: 0, y: 0 }, + window: window2 = defaultWindow, + target = window2, + scroll = true, + eventFilter + } = options; + let _prevMouseEvent = null; + const x = ref(initialValue.x); + const y = ref(initialValue.y); + const sourceType = ref(null); + const extractor = typeof type === "function" ? type : UseMouseBuiltinExtractors[type]; + const mouseHandler = (event) => { + const result = extractor(event); + _prevMouseEvent = event; + if (result) { + [x.value, y.value] = result; + sourceType.value = "mouse"; + } + }; + const touchHandler = (event) => { + if (event.touches.length > 0) { + const result = extractor(event.touches[0]); + if (result) { + [x.value, y.value] = result; + sourceType.value = "touch"; + } + } + }; + const scrollHandler = () => { + if (!_prevMouseEvent || !window2) + return; + const pos = extractor(_prevMouseEvent); + if (_prevMouseEvent instanceof MouseEvent && pos) { + x.value = pos[0] + window2.scrollX; + y.value = pos[1] + window2.scrollY; + } + }; + const reset = () => { + x.value = initialValue.x; + y.value = initialValue.y; + }; + const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event); + const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event); + const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler(); + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["mousemove", "dragover"], mouseHandlerWrapper, listenerOptions); + if (touch && type !== "movement") { + useEventListener(target, ["touchstart", "touchmove"], touchHandlerWrapper, listenerOptions); + if (resetOnTouchEnds) + useEventListener(target, "touchend", reset, listenerOptions); + } + if (scroll && type === "page") + useEventListener(window2, "scroll", scrollHandlerWrapper, { passive: true }); + } + return { + x, + y, + sourceType + }; +} +function useMouseInElement(target, options = {}) { + const { + handleOutside = true, + window: window2 = defaultWindow + } = options; + const type = options.type || "page"; + const { x, y, sourceType } = useMouse(options); + const targetRef = ref(target != null ? target : window2 == null ? void 0 : window2.document.body); + const elementX = ref(0); + const elementY = ref(0); + const elementPositionX = ref(0); + const elementPositionY = ref(0); + const elementHeight = ref(0); + const elementWidth = ref(0); + const isOutside = ref(true); + let stop = () => { + }; + if (window2) { + stop = watch( + [targetRef, x, y], + () => { + const el = unrefElement(targetRef); + if (!el) + return; + const { + left, + top, + width, + height + } = el.getBoundingClientRect(); + elementPositionX.value = left + (type === "page" ? window2.pageXOffset : 0); + elementPositionY.value = top + (type === "page" ? window2.pageYOffset : 0); + elementHeight.value = height; + elementWidth.value = width; + const elX = x.value - elementPositionX.value; + const elY = y.value - elementPositionY.value; + isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; + if (handleOutside || !isOutside.value) { + elementX.value = elX; + elementY.value = elY; + } + }, + { immediate: true } + ); + useEventListener(document, "mouseleave", () => { + isOutside.value = true; + }); + } + return { + x, + y, + sourceType, + elementX, + elementY, + elementPositionX, + elementPositionY, + elementHeight, + elementWidth, + isOutside, + stop + }; +} +function useMousePressed(options = {}) { + const { + touch = true, + drag = true, + capture = false, + initialValue = false, + window: window2 = defaultWindow + } = options; + const pressed = ref(initialValue); + const sourceType = ref(null); + if (!window2) { + return { + pressed, + sourceType + }; + } + const onPressed = (srcType) => () => { + pressed.value = true; + sourceType.value = srcType; + }; + const onReleased = () => { + pressed.value = false; + sourceType.value = null; + }; + const target = computed(() => unrefElement(options.target) || window2); + useEventListener(target, "mousedown", onPressed("mouse"), { passive: true, capture }); + useEventListener(window2, "mouseleave", onReleased, { passive: true, capture }); + useEventListener(window2, "mouseup", onReleased, { passive: true, capture }); + if (drag) { + useEventListener(target, "dragstart", onPressed("mouse"), { passive: true, capture }); + useEventListener(window2, "drop", onReleased, { passive: true, capture }); + useEventListener(window2, "dragend", onReleased, { passive: true, capture }); + } + if (touch) { + useEventListener(target, "touchstart", onPressed("touch"), { passive: true, capture }); + useEventListener(window2, "touchend", onReleased, { passive: true, capture }); + useEventListener(window2, "touchcancel", onReleased, { passive: true, capture }); + } + return { + pressed, + sourceType + }; +} +function useNavigatorLanguage(options = {}) { + const { window: window2 = defaultWindow } = options; + const navigator = window2 == null ? void 0 : window2.navigator; + const isSupported = useSupported(() => navigator && "language" in navigator); + const language = ref(navigator == null ? void 0 : navigator.language); + useEventListener(window2, "languagechange", () => { + if (navigator) + language.value = navigator.language; + }); + return { + isSupported, + language + }; +} +function useNetwork(options = {}) { + const { window: window2 = defaultWindow } = options; + const navigator = window2 == null ? void 0 : window2.navigator; + const isSupported = useSupported(() => navigator && "connection" in navigator); + const isOnline = ref(true); + const saveData = ref(false); + const offlineAt = ref(void 0); + const onlineAt = ref(void 0); + const downlink = ref(void 0); + const downlinkMax = ref(void 0); + const rtt = ref(void 0); + const effectiveType = ref(void 0); + const type = ref("unknown"); + const connection = isSupported.value && navigator.connection; + function updateNetworkInformation() { + if (!navigator) + return; + isOnline.value = navigator.onLine; + offlineAt.value = isOnline.value ? void 0 : Date.now(); + onlineAt.value = isOnline.value ? Date.now() : void 0; + if (connection) { + downlink.value = connection.downlink; + downlinkMax.value = connection.downlinkMax; + effectiveType.value = connection.effectiveType; + rtt.value = connection.rtt; + saveData.value = connection.saveData; + type.value = connection.type; + } + } + if (window2) { + useEventListener(window2, "offline", () => { + isOnline.value = false; + offlineAt.value = Date.now(); + }); + useEventListener(window2, "online", () => { + isOnline.value = true; + onlineAt.value = Date.now(); + }); + } + if (connection) + useEventListener(connection, "change", updateNetworkInformation, false); + updateNetworkInformation(); + return { + isSupported, + isOnline, + saveData, + offlineAt, + onlineAt, + downlink, + downlinkMax, + effectiveType, + rtt, + type + }; +} +function useNow(options = {}) { + const { + controls: exposeControls = false, + interval = "requestAnimationFrame" + } = options; + const now2 = ref(/* @__PURE__ */ new Date()); + const update = () => now2.value = /* @__PURE__ */ new Date(); + const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true }); + if (exposeControls) { + return { + now: now2, + ...controls + }; + } else { + return now2; + } +} +function useObjectUrl(object) { + const url = ref(); + const release = () => { + if (url.value) + URL.revokeObjectURL(url.value); + url.value = void 0; + }; + watch( + () => toValue(object), + (newObject) => { + release(); + if (newObject) + url.value = URL.createObjectURL(newObject); + }, + { immediate: true } + ); + tryOnScopeDispose(release); + return readonly(url); +} +function useClamp(value, min, max) { + if (typeof value === "function" || isReadonly(value)) + return computed(() => clamp(toValue(value), toValue(min), toValue(max))); + const _value = ref(value); + return computed({ + get() { + return _value.value = clamp(_value.value, toValue(min), toValue(max)); + }, + set(value2) { + _value.value = clamp(value2, toValue(min), toValue(max)); + } + }); +} +function useOffsetPagination(options) { + const { + total = Number.POSITIVE_INFINITY, + pageSize = 10, + page = 1, + onPageChange = noop, + onPageSizeChange = noop, + onPageCountChange = noop + } = options; + const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY); + const pageCount = computed(() => Math.max( + 1, + Math.ceil(toValue(total) / toValue(currentPageSize)) + )); + const currentPage = useClamp(page, 1, pageCount); + const isFirstPage = computed(() => currentPage.value === 1); + const isLastPage = computed(() => currentPage.value === pageCount.value); + if (isRef(page)) { + syncRef(page, currentPage, { + direction: isReadonly(page) ? "ltr" : "both" + }); + } + if (isRef(pageSize)) { + syncRef(pageSize, currentPageSize, { + direction: isReadonly(pageSize) ? "ltr" : "both" + }); + } + function prev() { + currentPage.value--; + } + function next() { + currentPage.value++; + } + const returnValue = { + currentPage, + currentPageSize, + pageCount, + isFirstPage, + isLastPage, + prev, + next + }; + watch(currentPage, () => { + onPageChange(reactive(returnValue)); + }); + watch(currentPageSize, () => { + onPageSizeChange(reactive(returnValue)); + }); + watch(pageCount, () => { + onPageCountChange(reactive(returnValue)); + }); + return returnValue; +} +function useOnline(options = {}) { + const { isOnline } = useNetwork(options); + return isOnline; +} +function usePageLeave(options = {}) { + const { window: window2 = defaultWindow } = options; + const isLeft = ref(false); + const handler = (event) => { + if (!window2) + return; + event = event || window2.event; + const from = event.relatedTarget || event.toElement; + isLeft.value = !from; + }; + if (window2) { + useEventListener(window2, "mouseout", handler, { passive: true }); + useEventListener(window2.document, "mouseleave", handler, { passive: true }); + useEventListener(window2.document, "mouseenter", handler, { passive: true }); + } + return isLeft; +} +function useParallax(target, options = {}) { + const { + deviceOrientationTiltAdjust = (i) => i, + deviceOrientationRollAdjust = (i) => i, + mouseTiltAdjust = (i) => i, + mouseRollAdjust = (i) => i, + window: window2 = defaultWindow + } = options; + const orientation = reactive(useDeviceOrientation({ window: window2 })); + const { + elementX: x, + elementY: y, + elementWidth: width, + elementHeight: height + } = useMouseInElement(target, { handleOutside: false, window: window2 }); + const source = computed(() => { + if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) + return "deviceOrientation"; + return "mouse"; + }); + const roll = computed(() => { + if (source.value === "deviceOrientation") { + const value = -orientation.beta / 90; + return deviceOrientationRollAdjust(value); + } else { + const value = -(y.value - height.value / 2) / height.value; + return mouseRollAdjust(value); + } + }); + const tilt = computed(() => { + if (source.value === "deviceOrientation") { + const value = orientation.gamma / 90; + return deviceOrientationTiltAdjust(value); + } else { + const value = (x.value - width.value / 2) / width.value; + return mouseTiltAdjust(value); + } + }); + return { roll, tilt, source }; +} +function useParentElement(element = useCurrentElement()) { + const parentElement = shallowRef(); + const update = () => { + const el = unrefElement(element); + if (el) + parentElement.value = el.parentElement; + }; + tryOnMounted(update); + watch(() => toValue(element), update); + return parentElement; +} +function usePerformanceObserver(options, callback) { + const { + window: window2 = defaultWindow, + immediate = true, + ...performanceOptions + } = options; + const isSupported = useSupported(() => window2 && "PerformanceObserver" in window2); + let observer; + const stop = () => { + observer == null ? void 0 : observer.disconnect(); + }; + const start = () => { + if (isSupported.value) { + stop(); + observer = new PerformanceObserver(callback); + observer.observe(performanceOptions); + } + }; + tryOnScopeDispose(stop); + if (immediate) + start(); + return { + isSupported, + start, + stop + }; +} +var defaultState = { + x: 0, + y: 0, + pointerId: 0, + pressure: 0, + tiltX: 0, + tiltY: 0, + width: 0, + height: 0, + twist: 0, + pointerType: null +}; +var keys = Object.keys(defaultState); +function usePointer(options = {}) { + const { + target = defaultWindow + } = options; + const isInside = ref(false); + const state = ref(options.initialValue || {}); + Object.assign(state.value, defaultState, state.value); + const handler = (event) => { + isInside.value = true; + if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) + return; + state.value = objectPick(event, keys, false); + }; + if (target) { + const listenerOptions = { passive: true }; + useEventListener(target, ["pointerdown", "pointermove", "pointerup"], handler, listenerOptions); + useEventListener(target, "pointerleave", () => isInside.value = false, listenerOptions); + } + return { + ...toRefs2(state), + isInside + }; +} +function usePointerLock(target, options = {}) { + const { document: document2 = defaultDocument, pointerLockOptions } = options; + const isSupported = useSupported(() => document2 && "pointerLockElement" in document2); + const element = ref(); + const triggerElement = ref(); + let targetElement; + if (isSupported.value) { + useEventListener(document2, "pointerlockchange", () => { + var _a; + const currentElement = (_a = document2.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + element.value = document2.pointerLockElement; + if (!element.value) + targetElement = triggerElement.value = null; + } + }); + useEventListener(document2, "pointerlockerror", () => { + var _a; + const currentElement = (_a = document2.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + const action = document2.pointerLockElement ? "release" : "acquire"; + throw new Error(`Failed to ${action} pointer lock.`); + } + }); + } + async function lock(e, options2) { + var _a; + if (!isSupported.value) + throw new Error("Pointer Lock API is not supported by your browser."); + triggerElement.value = e instanceof Event ? e.currentTarget : null; + targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e); + if (!targetElement) + throw new Error("Target element undefined."); + targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions); + return await until(element).toBe(targetElement); + } + async function unlock() { + if (!element.value) + return false; + document2.exitPointerLock(); + await until(element).toBeNull(); + return true; + } + return { + isSupported, + element, + triggerElement, + lock, + unlock + }; +} +function usePointerSwipe(target, options = {}) { + const targetRef = toRef2(target); + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + disableTextSelect = false + } = options; + const posStart = reactive({ x: 0, y: 0 }); + const updatePosStart = (x, y) => { + posStart.x = x; + posStart.y = y; + }; + const posEnd = reactive({ x: 0, y: 0 }); + const updatePosEnd = (x, y) => { + posEnd.x = x; + posEnd.y = y; + }; + const distanceX = computed(() => posStart.x - posEnd.x); + const distanceY = computed(() => posStart.y - posEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold); + const isSwiping = ref(false); + const isPointerDown = ref(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return "none"; + if (abs(distanceX.value) > abs(distanceY.value)) { + return distanceX.value > 0 ? "left" : "right"; + } else { + return distanceY.value > 0 ? "up" : "down"; + } + }); + const eventIsAllowed = (e) => { + var _a, _b, _c; + const isReleasingButton = e.buttons === 0; + const isPrimaryButton = e.buttons === 1; + return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true; + }; + const stops = [ + useEventListener(target, "pointerdown", (e) => { + if (!eventIsAllowed(e)) + return; + isPointerDown.value = true; + const eventTarget = e.target; + eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId); + const { clientX: x, clientY: y } = e; + updatePosStart(x, y); + updatePosEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }), + useEventListener(target, "pointermove", (e) => { + if (!eventIsAllowed(e)) + return; + if (!isPointerDown.value) + return; + const { clientX: x, clientY: y } = e; + updatePosEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }), + useEventListener(target, "pointerup", (e) => { + if (!eventIsAllowed(e)) + return; + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isPointerDown.value = false; + isSwiping.value = false; + }) + ]; + tryOnMounted(() => { + var _a, _b, _c, _d, _e, _f, _g, _h; + (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none"); + if (disableTextSelect) { + (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty("-webkit-user-select", "none"); + (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty("-ms-user-select", "none"); + (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty("user-select", "none"); + } + }); + const stop = () => stops.forEach((s) => s()); + return { + isSwiping: readonly(isSwiping), + direction: readonly(direction), + posStart: readonly(posStart), + posEnd: readonly(posEnd), + distanceX, + distanceY, + stop + }; +} +function usePreferredColorScheme(options) { + const isLight = useMediaQuery("(prefers-color-scheme: light)", options); + const isDark = useMediaQuery("(prefers-color-scheme: dark)", options); + return computed(() => { + if (isDark.value) + return "dark"; + if (isLight.value) + return "light"; + return "no-preference"; + }); +} +function usePreferredContrast(options) { + const isMore = useMediaQuery("(prefers-contrast: more)", options); + const isLess = useMediaQuery("(prefers-contrast: less)", options); + const isCustom = useMediaQuery("(prefers-contrast: custom)", options); + return computed(() => { + if (isMore.value) + return "more"; + if (isLess.value) + return "less"; + if (isCustom.value) + return "custom"; + return "no-preference"; + }); +} +function usePreferredLanguages(options = {}) { + const { window: window2 = defaultWindow } = options; + if (!window2) + return ref(["en"]); + const navigator = window2.navigator; + const value = ref(navigator.languages); + useEventListener(window2, "languagechange", () => { + value.value = navigator.languages; + }); + return value; +} +function usePreferredReducedMotion(options) { + const isReduced = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return computed(() => { + if (isReduced.value) + return "reduce"; + return "no-preference"; + }); +} +function usePrevious(value, initialValue) { + const previous = shallowRef(initialValue); + watch( + toRef2(value), + (_, oldValue) => { + previous.value = oldValue; + }, + { flush: "sync" } + ); + return readonly(previous); +} +function useScreenOrientation(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const isSupported = useSupported(() => window2 && "screen" in window2 && "orientation" in window2.screen); + const screenOrientation = isSupported.value ? window2.screen.orientation : {}; + const orientation = ref(screenOrientation.type); + const angle = ref(screenOrientation.angle || 0); + if (isSupported.value) { + useEventListener(window2, "orientationchange", () => { + orientation.value = screenOrientation.type; + angle.value = screenOrientation.angle; + }); + } + const lockOrientation = (type) => { + if (isSupported.value && typeof screenOrientation.lock === "function") + return screenOrientation.lock(type); + return Promise.reject(new Error("Not supported")); + }; + const unlockOrientation = () => { + if (isSupported.value && typeof screenOrientation.unlock === "function") + screenOrientation.unlock(); + }; + return { + isSupported, + orientation, + angle, + lockOrientation, + unlockOrientation + }; +} +var topVarName = "--vueuse-safe-area-top"; +var rightVarName = "--vueuse-safe-area-right"; +var bottomVarName = "--vueuse-safe-area-bottom"; +var leftVarName = "--vueuse-safe-area-left"; +function useScreenSafeArea() { + const top = ref(""); + const right = ref(""); + const bottom = ref(""); + const left = ref(""); + if (isClient) { + const topCssVar = useCssVar(topVarName); + const rightCssVar = useCssVar(rightVarName); + const bottomCssVar = useCssVar(bottomVarName); + const leftCssVar = useCssVar(leftVarName); + topCssVar.value = "env(safe-area-inset-top, 0px)"; + rightCssVar.value = "env(safe-area-inset-right, 0px)"; + bottomCssVar.value = "env(safe-area-inset-bottom, 0px)"; + leftCssVar.value = "env(safe-area-inset-left, 0px)"; + update(); + useEventListener("resize", useDebounceFn(update)); + } + function update() { + top.value = getValue(topVarName); + right.value = getValue(rightVarName); + bottom.value = getValue(bottomVarName); + left.value = getValue(leftVarName); + } + return { + top, + right, + bottom, + left, + update + }; +} +function getValue(position) { + return getComputedStyle(document.documentElement).getPropertyValue(position); +} +function useScriptTag(src, onLoaded = noop, options = {}) { + const { + immediate = true, + manual = false, + type = "text/javascript", + async = true, + crossOrigin, + referrerPolicy, + noModule, + defer, + document: document2 = defaultDocument, + attrs = {} + } = options; + const scriptTag = ref(null); + let _promise = null; + const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => { + const resolveWithElement = (el2) => { + scriptTag.value = el2; + resolve(el2); + return el2; + }; + if (!document2) { + resolve(false); + return; + } + let shouldAppend = false; + let el = document2.querySelector(`script[src="${toValue(src)}"]`); + if (!el) { + el = document2.createElement("script"); + el.type = type; + el.async = async; + el.src = toValue(src); + if (defer) + el.defer = defer; + if (crossOrigin) + el.crossOrigin = crossOrigin; + if (noModule) + el.noModule = noModule; + if (referrerPolicy) + el.referrerPolicy = referrerPolicy; + Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value)); + shouldAppend = true; + } else if (el.hasAttribute("data-loaded")) { + resolveWithElement(el); + } + el.addEventListener("error", (event) => reject(event)); + el.addEventListener("abort", (event) => reject(event)); + el.addEventListener("load", () => { + el.setAttribute("data-loaded", "true"); + onLoaded(el); + resolveWithElement(el); + }); + if (shouldAppend) + el = document2.head.appendChild(el); + if (!waitForScriptLoad) + resolveWithElement(el); + }); + const load = (waitForScriptLoad = true) => { + if (!_promise) + _promise = loadScript(waitForScriptLoad); + return _promise; + }; + const unload = () => { + if (!document2) + return; + _promise = null; + if (scriptTag.value) + scriptTag.value = null; + const el = document2.querySelector(`script[src="${toValue(src)}"]`); + if (el) + document2.head.removeChild(el); + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnUnmounted(unload); + return { scriptTag, load, unload }; +} +function checkOverflowScroll(ele) { + const style = window.getComputedStyle(ele); + if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) { + return true; + } else { + const parent = ele.parentNode; + if (!parent || parent.tagName === "BODY") + return false; + return checkOverflowScroll(parent); + } +} +function preventDefault(rawEvent) { + const e = rawEvent || window.event; + const _target = e.target; + if (checkOverflowScroll(_target)) + return false; + if (e.touches.length > 1) + return true; + if (e.preventDefault) + e.preventDefault(); + return false; +} +var elInitialOverflow = /* @__PURE__ */ new WeakMap(); +function useScrollLock(element, initialState = false) { + const isLocked = ref(initialState); + let stopTouchMoveListener = null; + let initialOverflow; + watch(toRef2(element), (el) => { + const target = resolveElement(toValue(el)); + if (target) { + const ele = target; + if (!elInitialOverflow.get(ele)) + elInitialOverflow.set(ele, initialOverflow); + if (isLocked.value) + ele.style.overflow = "hidden"; + } + }, { + immediate: true + }); + const lock = () => { + const el = resolveElement(toValue(element)); + if (!el || isLocked.value) + return; + if (isIOS) { + stopTouchMoveListener = useEventListener( + el, + "touchmove", + (e) => { + preventDefault(e); + }, + { passive: false } + ); + } + el.style.overflow = "hidden"; + isLocked.value = true; + }; + const unlock = () => { + var _a; + const el = resolveElement(toValue(element)); + if (!el || !isLocked.value) + return; + isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener()); + el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : ""; + elInitialOverflow.delete(el); + isLocked.value = false; + }; + tryOnScopeDispose(unlock); + return computed({ + get() { + return isLocked.value; + }, + set(v) { + if (v) + lock(); + else + unlock(); + } + }); +} +function useSessionStorage(key, initialValue, options = {}) { + const { window: window2 = defaultWindow } = options; + return useStorage(key, initialValue, window2 == null ? void 0 : window2.sessionStorage, options); +} +function useShare(shareOptions = {}, options = {}) { + const { navigator = defaultNavigator } = options; + const _navigator = navigator; + const isSupported = useSupported(() => _navigator && "canShare" in _navigator); + const share = async (overrideOptions = {}) => { + if (isSupported.value) { + const data = { + ...toValue(shareOptions), + ...toValue(overrideOptions) + }; + let granted = true; + if (data.files && _navigator.canShare) + granted = _navigator.canShare({ files: data.files }); + if (granted) + return _navigator.share(data); + } + }; + return { + isSupported, + share + }; +} +var defaultSortFn = (source, compareFn) => source.sort(compareFn); +var defaultCompare = (a, b) => a - b; +function useSorted(...args) { + var _a, _b, _c, _d; + const [source] = args; + let compareFn = defaultCompare; + let options = {}; + if (args.length === 2) { + if (typeof args[1] === "object") { + options = args[1]; + compareFn = (_a = options.compareFn) != null ? _a : defaultCompare; + } else { + compareFn = (_b = args[1]) != null ? _b : defaultCompare; + } + } else if (args.length > 2) { + compareFn = (_c = args[1]) != null ? _c : defaultCompare; + options = (_d = args[2]) != null ? _d : {}; + } + const { + dirty = false, + sortFn = defaultSortFn + } = options; + if (!dirty) + return computed(() => sortFn([...toValue(source)], compareFn)); + watchEffect(() => { + const result = sortFn(toValue(source), compareFn); + if (isRef(source)) + source.value = result; + else + source.splice(0, source.length, ...result); + }); + return source; +} +function useSpeechRecognition(options = {}) { + const { + interimResults = true, + continuous = true, + window: window2 = defaultWindow + } = options; + const lang = toRef2(options.lang || "en-US"); + const isListening = ref(false); + const isFinal = ref(false); + const result = ref(""); + const error = shallowRef(void 0); + const toggle = (value = !isListening.value) => { + isListening.value = value; + }; + const start = () => { + isListening.value = true; + }; + const stop = () => { + isListening.value = false; + }; + const SpeechRecognition = window2 && (window2.SpeechRecognition || window2.webkitSpeechRecognition); + const isSupported = useSupported(() => SpeechRecognition); + let recognition; + if (isSupported.value) { + recognition = new SpeechRecognition(); + recognition.continuous = continuous; + recognition.interimResults = interimResults; + recognition.lang = toValue(lang); + recognition.onstart = () => { + isFinal.value = false; + }; + watch(lang, (lang2) => { + if (recognition && !isListening.value) + recognition.lang = lang2; + }); + recognition.onresult = (event) => { + const transcript = Array.from(event.results).map((result2) => { + isFinal.value = result2.isFinal; + return result2[0]; + }).map((result2) => result2.transcript).join(""); + result.value = transcript; + error.value = void 0; + }; + recognition.onerror = (event) => { + error.value = event; + }; + recognition.onend = () => { + isListening.value = false; + recognition.lang = toValue(lang); + }; + watch(isListening, () => { + if (isListening.value) + recognition.start(); + else + recognition.stop(); + }); + } + tryOnScopeDispose(() => { + isListening.value = false; + }); + return { + isSupported, + isListening, + isFinal, + recognition, + result, + error, + toggle, + start, + stop + }; +} +function useSpeechSynthesis(text, options = {}) { + const { + pitch = 1, + rate = 1, + volume = 1, + window: window2 = defaultWindow + } = options; + const synth = window2 && window2.speechSynthesis; + const isSupported = useSupported(() => synth); + const isPlaying = ref(false); + const status = ref("init"); + const spokenText = toRef2(text || ""); + const lang = toRef2(options.lang || "en-US"); + const error = shallowRef(void 0); + const toggle = (value = !isPlaying.value) => { + isPlaying.value = value; + }; + const bindEventsForUtterance = (utterance2) => { + utterance2.lang = toValue(lang); + utterance2.voice = toValue(options.voice) || null; + utterance2.pitch = toValue(pitch); + utterance2.rate = toValue(rate); + utterance2.volume = volume; + utterance2.onstart = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onpause = () => { + isPlaying.value = false; + status.value = "pause"; + }; + utterance2.onresume = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onend = () => { + isPlaying.value = false; + status.value = "end"; + }; + utterance2.onerror = (event) => { + error.value = event; + }; + }; + const utterance = computed(() => { + isPlaying.value = false; + status.value = "init"; + const newUtterance = new SpeechSynthesisUtterance(spokenText.value); + bindEventsForUtterance(newUtterance); + return newUtterance; + }); + const speak = () => { + synth.cancel(); + utterance && synth.speak(utterance.value); + }; + const stop = () => { + synth.cancel(); + isPlaying.value = false; + }; + if (isSupported.value) { + bindEventsForUtterance(utterance.value); + watch(lang, (lang2) => { + if (utterance.value && !isPlaying.value) + utterance.value.lang = lang2; + }); + if (options.voice) { + watch(options.voice, () => { + synth.cancel(); + }); + } + watch(isPlaying, () => { + if (isPlaying.value) + synth.resume(); + else + synth.pause(); + }); + } + tryOnScopeDispose(() => { + isPlaying.value = false; + }); + return { + isSupported, + isPlaying, + status, + utterance, + error, + stop, + toggle, + speak + }; +} +function useStepper(steps, initialStep) { + const stepsRef = ref(steps); + const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value)); + const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0])); + const current = computed(() => at(index.value)); + const isFirst = computed(() => index.value === 0); + const isLast = computed(() => index.value === stepNames.value.length - 1); + const next = computed(() => stepNames.value[index.value + 1]); + const previous = computed(() => stepNames.value[index.value - 1]); + function at(index2) { + if (Array.isArray(stepsRef.value)) + return stepsRef.value[index2]; + return stepsRef.value[stepNames.value[index2]]; + } + function get2(step) { + if (!stepNames.value.includes(step)) + return; + return at(stepNames.value.indexOf(step)); + } + function goTo(step) { + if (stepNames.value.includes(step)) + index.value = stepNames.value.indexOf(step); + } + function goToNext() { + if (isLast.value) + return; + index.value++; + } + function goToPrevious() { + if (isFirst.value) + return; + index.value--; + } + function goBackTo(step) { + if (isAfter(step)) + goTo(step); + } + function isNext(step) { + return stepNames.value.indexOf(step) === index.value + 1; + } + function isPrevious(step) { + return stepNames.value.indexOf(step) === index.value - 1; + } + function isCurrent(step) { + return stepNames.value.indexOf(step) === index.value; + } + function isBefore(step) { + return index.value < stepNames.value.indexOf(step); + } + function isAfter(step) { + return index.value > stepNames.value.indexOf(step); + } + return { + steps: stepsRef, + stepNames, + index, + current, + next, + previous, + isFirst, + isLast, + at, + get: get2, + goTo, + goToNext, + goToPrevious, + goBackTo, + isNext, + isPrevious, + isCurrent, + isBefore, + isAfter + }; +} +function useStorageAsync(key, initialValue, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window: window2 = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + } + } = options; + const rawInit = toValue(initialValue); + const type = guessSerializerType(rawInit); + const data = (shallow ? shallowRef : ref)(initialValue); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorage", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + async function read(event) { + if (!storage || event && event.key !== key) + return; + try { + const rawValue = event ? event.newValue : await storage.getItem(key); + if (rawValue == null) { + data.value = rawInit; + if (writeDefaults && rawInit !== null) + await storage.setItem(key, await serializer.write(rawInit)); + } else if (mergeDefaults) { + const value = await serializer.read(rawValue); + if (typeof mergeDefaults === "function") + data.value = mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + data.value = { ...rawInit, ...value }; + else + data.value = value; + } else { + data.value = await serializer.read(rawValue); + } + } catch (e) { + onError(e); + } + } + read(); + if (window2 && listenToStorageChanges) + useEventListener(window2, "storage", (e) => Promise.resolve().then(() => read(e))); + if (storage) { + watchWithFilter( + data, + async () => { + try { + if (data.value == null) + await storage.removeItem(key); + else + await storage.setItem(key, await serializer.write(data.value)); + } catch (e) { + onError(e); + } + }, + { + flush, + deep, + eventFilter + } + ); + } + return data; +} +var _id = 0; +function useStyleTag(css, options = {}) { + const isLoaded = ref(false); + const { + document: document2 = defaultDocument, + immediate = true, + manual = false, + id = `vueuse_styletag_${++_id}` + } = options; + const cssRef = ref(css); + let stop = () => { + }; + const load = () => { + if (!document2) + return; + const el = document2.getElementById(id) || document2.createElement("style"); + if (!el.isConnected) { + el.id = id; + if (options.media) + el.media = options.media; + document2.head.appendChild(el); + } + if (isLoaded.value) + return; + stop = watch( + cssRef, + (value) => { + el.textContent = value; + }, + { immediate: true } + ); + isLoaded.value = true; + }; + const unload = () => { + if (!document2 || !isLoaded.value) + return; + stop(); + document2.head.removeChild(document2.getElementById(id)); + isLoaded.value = false; + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnScopeDispose(unload); + return { + id, + css: cssRef, + unload, + load, + isLoaded: readonly(isLoaded) + }; +} +function useSwipe(target, options = {}) { + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + passive = true, + window: window2 = defaultWindow + } = options; + const coordsStart = reactive({ x: 0, y: 0 }); + const coordsEnd = reactive({ x: 0, y: 0 }); + const diffX = computed(() => coordsStart.x - coordsEnd.x); + const diffY = computed(() => coordsStart.y - coordsEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); + const isSwiping = ref(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return "none"; + if (abs(diffX.value) > abs(diffY.value)) { + return diffX.value > 0 ? "left" : "right"; + } else { + return diffY.value > 0 ? "up" : "down"; + } + }); + const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; + const updateCoordsStart = (x, y) => { + coordsStart.x = x; + coordsStart.y = y; + }; + const updateCoordsEnd = (x, y) => { + coordsEnd.x = x; + coordsEnd.y = y; + }; + let listenerOptions; + const isPassiveEventSupported = checkPassiveEventSupport(window2 == null ? void 0 : window2.document); + if (!passive) + listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }; + else + listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }; + const onTouchEnd = (e) => { + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isSwiping.value = false; + }; + const stops = [ + useEventListener(target, "touchstart", (e) => { + if (e.touches.length !== 1) + return; + if (listenerOptions.capture && !listenerOptions.passive) + e.preventDefault(); + const [x, y] = getTouchEventCoords(e); + updateCoordsStart(x, y); + updateCoordsEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "touchmove", (e) => { + if (e.touches.length !== 1) + return; + const [x, y] = getTouchEventCoords(e); + updateCoordsEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }, listenerOptions), + useEventListener(target, ["touchend", "touchcancel"], onTouchEnd, listenerOptions) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isPassiveEventSupported, + isSwiping, + direction, + coordsStart, + coordsEnd, + lengthX: diffX, + lengthY: diffY, + stop + }; +} +function checkPassiveEventSupport(document2) { + if (!document2) + return false; + let supportsPassive = false; + const optionsBlock = { + get passive() { + supportsPassive = true; + return false; + } + }; + document2.addEventListener("x", noop, optionsBlock); + document2.removeEventListener("x", noop); + return supportsPassive; +} +function useTemplateRefsList() { + const refs = ref([]); + refs.value.set = (el) => { + if (el) + refs.value.push(el); + }; + onBeforeUpdate(() => { + refs.value.length = 0; + }); + return refs; +} +function useTextDirection(options = {}) { + const { + document: document2 = defaultDocument, + selector = "html", + observe = false, + initialValue = "ltr" + } = options; + function getValue2() { + var _a, _b; + return (_b = (_a = document2 == null ? void 0 : document2.querySelector(selector)) == null ? void 0 : _a.getAttribute("dir")) != null ? _b : initialValue; + } + const dir = ref(getValue2()); + tryOnMounted(() => dir.value = getValue2()); + if (observe && document2) { + useMutationObserver( + document2.querySelector(selector), + () => dir.value = getValue2(), + { attributes: true } + ); + } + return computed({ + get() { + return dir.value; + }, + set(v) { + var _a, _b; + dir.value = v; + if (!document2) + return; + if (dir.value) + (_a = document2.querySelector(selector)) == null ? void 0 : _a.setAttribute("dir", dir.value); + else + (_b = document2.querySelector(selector)) == null ? void 0 : _b.removeAttribute("dir"); + } + }); +} +function getRangesFromSelection(selection) { + var _a; + const rangeCount = (_a = selection.rangeCount) != null ? _a : 0; + return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i)); +} +function useTextSelection(options = {}) { + const { + window: window2 = defaultWindow + } = options; + const selection = ref(null); + const text = computed(() => { + var _a, _b; + return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : ""; + }); + const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []); + const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect())); + function onSelectionChange() { + selection.value = null; + if (window2) + selection.value = window2.getSelection(); + } + if (window2) + useEventListener(window2.document, "selectionchange", onSelectionChange); + return { + text, + rects, + ranges, + selection + }; +} +function useTextareaAutosize(options) { + const textarea = ref(options == null ? void 0 : options.element); + const input = ref(options == null ? void 0 : options.input); + const textareaScrollHeight = ref(1); + function triggerResize() { + var _a, _b; + if (!textarea.value) + return; + let height = ""; + textarea.value.style.height = "1px"; + textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight; + if (options == null ? void 0 : options.styleTarget) + toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`; + else + height = `${textareaScrollHeight.value}px`; + textarea.value.style.height = height; + (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options); + } + watch([input, textarea], () => nextTick(triggerResize), { immediate: true }); + useResizeObserver(textarea, () => triggerResize()); + if (options == null ? void 0 : options.watch) + watch(options.watch, triggerResize, { immediate: true, deep: true }); + return { + textarea, + input, + triggerResize + }; +} +function useThrottledRefHistory(source, options = {}) { + const { throttle = 200, trailing = true } = options; + const filter = throttleFilter(throttle, trailing); + const history = useRefHistory(source, { ...options, eventFilter: filter }); + return { + ...history + }; +} +var DEFAULT_UNITS = [ + { max: 6e4, value: 1e3, name: "second" }, + { max: 276e4, value: 6e4, name: "minute" }, + { max: 72e6, value: 36e5, name: "hour" }, + { max: 5184e5, value: 864e5, name: "day" }, + { max: 24192e5, value: 6048e5, name: "week" }, + { max: 28512e6, value: 2592e6, name: "month" }, + { max: Number.POSITIVE_INFINITY, value: 31536e6, name: "year" } +]; +var DEFAULT_MESSAGES = { + justNow: "just now", + past: (n) => n.match(/\d/) ? `${n} ago` : n, + future: (n) => n.match(/\d/) ? `in ${n}` : n, + month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`, + year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`, + day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`, + week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`, + hour: (n) => `${n} hour${n > 1 ? "s" : ""}`, + minute: (n) => `${n} minute${n > 1 ? "s" : ""}`, + second: (n) => `${n} second${n > 1 ? "s" : ""}`, + invalid: "" +}; +function DEFAULT_FORMATTER(date) { + return date.toISOString().slice(0, 10); +} +function useTimeAgo(time, options = {}) { + const { + controls: exposeControls = false, + updateInterval = 3e4 + } = options; + const { now: now2, ...controls } = useNow({ interval: updateInterval, controls: true }); + const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now2))); + if (exposeControls) { + return { + timeAgo, + ...controls + }; + } else { + return timeAgo; + } +} +function formatTimeAgo(from, options = {}, now2 = Date.now()) { + var _a; + const { + max, + messages = DEFAULT_MESSAGES, + fullDateFormatter = DEFAULT_FORMATTER, + units = DEFAULT_UNITS, + showSecond = false, + rounding = "round" + } = options; + const roundFn = typeof rounding === "number" ? (n) => +n.toFixed(rounding) : Math[rounding]; + const diff = +now2 - +from; + const absDiff = Math.abs(diff); + function getValue2(diff2, unit) { + return roundFn(Math.abs(diff2) / unit.value); + } + function format(diff2, unit) { + const val = getValue2(diff2, unit); + const past = diff2 > 0; + const str = applyFormat(unit.name, val, past); + return applyFormat(past ? "past" : "future", str, past); + } + function applyFormat(name, val, isPast) { + const formatter = messages[name]; + if (typeof formatter === "function") + return formatter(val, isPast); + return formatter.replace("{0}", val.toString()); + } + if (absDiff < 6e4 && !showSecond) + return messages.justNow; + if (typeof max === "number" && absDiff > max) + return fullDateFormatter(new Date(from)); + if (typeof max === "string") { + const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max; + if (unitMax && absDiff > unitMax) + return fullDateFormatter(new Date(from)); + } + for (const [idx, unit] of units.entries()) { + const val = getValue2(diff, unit); + if (val <= 0 && units[idx - 1]) + return format(diff, units[idx - 1]); + if (absDiff < unit.max) + return format(diff, unit); + } + return messages.invalid; +} +function useTimeoutPoll(fn, interval, timeoutPollOptions) { + const { start } = useTimeoutFn(loop, interval, { immediate: false }); + const isActive = ref(false); + async function loop() { + if (!isActive.value) + return; + await fn(); + start(); + } + function resume() { + if (!isActive.value) { + isActive.value = true; + loop(); + } + } + function pause() { + isActive.value = false; + } + if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate) + resume(); + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} +function useTimestamp(options = {}) { + const { + controls: exposeControls = false, + offset = 0, + immediate = true, + interval = "requestAnimationFrame", + callback + } = options; + const ts = ref(timestamp() + offset); + const update = () => ts.value = timestamp() + offset; + const cb = callback ? () => { + update(); + callback(ts.value); + } : update; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate }); + if (exposeControls) { + return { + timestamp: ts, + ...controls + }; + } else { + return ts; + } +} +function useTitle(newTitle = null, options = {}) { + var _a, _b, _c; + const { + document: document2 = defaultDocument, + restoreOnUnmount = (t) => t + } = options; + const originalTitle = (_a = document2 == null ? void 0 : document2.title) != null ? _a : ""; + const title = toRef2((_b = newTitle != null ? newTitle : document2 == null ? void 0 : document2.title) != null ? _b : null); + const isReadonly2 = newTitle && typeof newTitle === "function"; + function format(t) { + if (!("titleTemplate" in options)) + return t; + const template = options.titleTemplate || "%s"; + return typeof template === "function" ? template(t) : toValue(template).replace(/%s/g, t); + } + watch( + title, + (t, o) => { + if (t !== o && document2) + document2.title = format(typeof t === "string" ? t : ""); + }, + { immediate: true } + ); + if (options.observe && !options.titleTemplate && document2 && !isReadonly2) { + useMutationObserver( + (_c = document2.head) == null ? void 0 : _c.querySelector("title"), + () => { + if (document2 && document2.title !== title.value) + title.value = format(document2.title); + }, + { childList: true } + ); + } + tryOnBeforeUnmount(() => { + if (restoreOnUnmount) { + const restoredTitle = restoreOnUnmount(originalTitle, title.value || ""); + if (restoredTitle != null && document2) + document2.title = restoredTitle; + } + }); + return title; +} +var _TransitionPresets = { + easeInSine: [0.12, 0, 0.39, 0], + easeOutSine: [0.61, 1, 0.88, 1], + easeInOutSine: [0.37, 0, 0.63, 1], + easeInQuad: [0.11, 0, 0.5, 0], + easeOutQuad: [0.5, 1, 0.89, 1], + easeInOutQuad: [0.45, 0, 0.55, 1], + easeInCubic: [0.32, 0, 0.67, 0], + easeOutCubic: [0.33, 1, 0.68, 1], + easeInOutCubic: [0.65, 0, 0.35, 1], + easeInQuart: [0.5, 0, 0.75, 0], + easeOutQuart: [0.25, 1, 0.5, 1], + easeInOutQuart: [0.76, 0, 0.24, 1], + easeInQuint: [0.64, 0, 0.78, 0], + easeOutQuint: [0.22, 1, 0.36, 1], + easeInOutQuint: [0.83, 0, 0.17, 1], + easeInExpo: [0.7, 0, 0.84, 0], + easeOutExpo: [0.16, 1, 0.3, 1], + easeInOutExpo: [0.87, 0, 0.13, 1], + easeInCirc: [0.55, 0, 1, 0.45], + easeOutCirc: [0, 0.55, 0.45, 1], + easeInOutCirc: [0.85, 0, 0.15, 1], + easeInBack: [0.36, 0, 0.66, -0.56], + easeOutBack: [0.34, 1.56, 0.64, 1], + easeInOutBack: [0.68, -0.6, 0.32, 1.6] +}; +var TransitionPresets = Object.assign({}, { linear: identity }, _TransitionPresets); +function createEasingFunction([p0, p1, p2, p3]) { + const a = (a1, a2) => 1 - 3 * a2 + 3 * a1; + const b = (a1, a2) => 3 * a2 - 6 * a1; + const c = (a1) => 3 * a1; + const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t; + const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1); + const getTforX = (x) => { + let aGuessT = x; + for (let i = 0; i < 4; ++i) { + const currentSlope = getSlope(aGuessT, p0, p2); + if (currentSlope === 0) + return aGuessT; + const currentX = calcBezier(aGuessT, p0, p2) - x; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + }; + return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3); +} +function lerp(a, b, alpha) { + return a + alpha * (b - a); +} +function toVec(t) { + return (typeof t === "number" ? [t] : t) || []; +} +function executeTransition(source, from, to, options = {}) { + var _a, _b; + const fromVal = toValue(from); + const toVal = toValue(to); + const v1 = toVec(fromVal); + const v2 = toVec(toVal); + const duration = (_a = toValue(options.duration)) != null ? _a : 1e3; + const startedAt = Date.now(); + const endAt = Date.now() + duration; + const trans = typeof options.transition === "function" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity; + const ease = typeof trans === "function" ? trans : createEasingFunction(trans); + return new Promise((resolve) => { + source.value = fromVal; + const tick = () => { + var _a2; + if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) { + resolve(); + return; + } + const now2 = Date.now(); + const alpha = ease((now2 - startedAt) / duration); + const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha)); + if (Array.isArray(source.value)) + source.value = arr.map((n, i) => { + var _a3, _b2; + return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha); + }); + else if (typeof source.value === "number") + source.value = arr[0]; + if (now2 < endAt) { + requestAnimationFrame(tick); + } else { + source.value = toVal; + resolve(); + } + }; + tick(); + }); +} +function useTransition(source, options = {}) { + let currentId = 0; + const sourceVal = () => { + const v = toValue(source); + return typeof v === "number" ? v : v.map(toValue); + }; + const outputRef = ref(sourceVal()); + watch(sourceVal, async (to) => { + var _a, _b; + if (toValue(options.disabled)) + return; + const id = ++currentId; + if (options.delay) + await promiseTimeout(toValue(options.delay)); + if (id !== currentId) + return; + const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to); + (_a = options.onStarted) == null ? void 0 : _a.call(options); + await executeTransition(outputRef, outputRef.value, toVal, { + ...options, + abort: () => { + var _a2; + return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options)); + } + }); + (_b = options.onFinished) == null ? void 0 : _b.call(options); + }, { deep: true }); + watch(() => toValue(options.disabled), (disabled) => { + if (disabled) { + currentId++; + outputRef.value = sourceVal(); + } + }); + tryOnScopeDispose(() => { + currentId++; + }); + return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value); +} +function useUrlSearchParams(mode = "history", options = {}) { + const { + initialValue = {}, + removeNullishValues = true, + removeFalsyValues = false, + write: enableWrite = true, + window: window2 = defaultWindow + } = options; + if (!window2) + return reactive(initialValue); + const state = reactive({}); + function getRawParams() { + if (mode === "history") { + return window2.location.search || ""; + } else if (mode === "hash") { + const hash = window2.location.hash || ""; + const index = hash.indexOf("?"); + return index > 0 ? hash.slice(index) : ""; + } else { + return (window2.location.hash || "").replace(/^#/, ""); + } + } + function constructQuery(params) { + const stringified = params.toString(); + if (mode === "history") + return `${stringified ? `?${stringified}` : ""}${window2.location.hash || ""}`; + if (mode === "hash-params") + return `${window2.location.search || ""}${stringified ? `#${stringified}` : ""}`; + const hash = window2.location.hash || "#"; + const index = hash.indexOf("?"); + if (index > 0) + return `${hash.slice(0, index)}${stringified ? `?${stringified}` : ""}`; + return `${hash}${stringified ? `?${stringified}` : ""}`; + } + function read() { + return new URLSearchParams(getRawParams()); + } + function updateState(params) { + const unusedKeys = new Set(Object.keys(state)); + for (const key of params.keys()) { + const paramsForKey = params.getAll(key); + state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || ""; + unusedKeys.delete(key); + } + Array.from(unusedKeys).forEach((key) => delete state[key]); + } + const { pause, resume } = watchPausable( + state, + () => { + const params = new URLSearchParams(""); + Object.keys(state).forEach((key) => { + const mapEntry = state[key]; + if (Array.isArray(mapEntry)) + mapEntry.forEach((value) => params.append(key, value)); + else if (removeNullishValues && mapEntry == null) + params.delete(key); + else if (removeFalsyValues && !mapEntry) + params.delete(key); + else + params.set(key, mapEntry); + }); + write(params); + }, + { deep: true } + ); + function write(params, shouldUpdate) { + pause(); + if (shouldUpdate) + updateState(params); + window2.history.replaceState( + window2.history.state, + window2.document.title, + window2.location.pathname + constructQuery(params) + ); + resume(); + } + function onChanged() { + if (!enableWrite) + return; + write(read(), true); + } + useEventListener(window2, "popstate", onChanged, false); + if (mode !== "history") + useEventListener(window2, "hashchange", onChanged, false); + const initial = read(); + if (initial.keys().next().value) + updateState(initial); + else + Object.assign(state, initialValue); + return state; +} +function useUserMedia(options = {}) { + var _a, _b; + const enabled = ref((_a = options.enabled) != null ? _a : false); + const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true); + const constraints = ref(options.constraints); + const { navigator = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia; + }); + const stream = shallowRef(); + function getDeviceOptions(type) { + switch (type) { + case "video": { + if (constraints.value) + return constraints.value.video || false; + break; + } + case "audio": { + if (constraints.value) + return constraints.value.audio || false; + break; + } + } + } + async function _start() { + if (!isSupported.value || stream.value) + return; + stream.value = await navigator.mediaDevices.getUserMedia({ + video: getDeviceOptions("video"), + audio: getDeviceOptions("audio") + }); + return stream.value; + } + function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + async function restart() { + _stop(); + return await start(); + } + watch( + enabled, + (v) => { + if (v) + _start(); + else + _stop(); + }, + { immediate: true } + ); + watch( + constraints, + () => { + if (autoSwitch.value && stream.value) + restart(); + }, + { immediate: true } + ); + return { + isSupported, + stream, + start, + stop, + restart, + constraints, + enabled, + autoSwitch + }; +} +function useVModel(props, key, emit, options = {}) { + var _a, _b, _c, _d, _e; + const { + clone = false, + passive = false, + eventName, + deep = false, + defaultValue, + shouldEmit + } = options; + const vm = getCurrentInstance(); + const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy)); + let event = eventName; + if (!key) { + if (isVue2) { + const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model; + key = (modelOptions == null ? void 0 : modelOptions.value) || "value"; + if (!eventName) + event = (modelOptions == null ? void 0 : modelOptions.event) || "input"; + } else { + key = "modelValue"; + } + } + event = event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : typeof clone === "function" ? clone(val) : cloneFnJSON(val); + const getValue2 = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + const triggerEmit = (value) => { + if (shouldEmit) { + if (shouldEmit(value)) + _emit(event, value); + } else { + _emit(event, value); + } + }; + if (passive) { + const initialValue = getValue2(); + const proxy = ref(initialValue); + let isUpdating = false; + watch( + () => props[key], + (v) => { + if (!isUpdating) { + isUpdating = true; + proxy.value = cloneFn(v); + nextTick(() => isUpdating = false); + } + } + ); + watch( + proxy, + (v) => { + if (!isUpdating && (v !== props[key] || deep)) + triggerEmit(v); + }, + { deep } + ); + return proxy; + } else { + return computed({ + get() { + return getValue2(); + }, + set(value) { + triggerEmit(value); + } + }); + } +} +function useVModels(props, emit, options = {}) { + const ret = {}; + for (const key in props) { + ret[key] = useVModel( + props, + key, + emit, + options + ); + } + return ret; +} +function useVibrate(options) { + const { + pattern = [], + interval = 0, + navigator = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => typeof navigator !== "undefined" && "vibrate" in navigator); + const patternRef = toRef2(pattern); + let intervalControls; + const vibrate = (pattern2 = patternRef.value) => { + if (isSupported.value) + navigator.vibrate(pattern2); + }; + const stop = () => { + if (isSupported.value) + navigator.vibrate(0); + intervalControls == null ? void 0 : intervalControls.pause(); + }; + if (interval > 0) { + intervalControls = useIntervalFn( + vibrate, + interval, + { + immediate: false, + immediateCallback: false + } + ); + } + return { + isSupported, + pattern, + intervalControls, + vibrate, + stop + }; +} +function useVirtualList(list, options) { + const { containerStyle, wrapperProps, scrollTo: scrollTo2, calculateRange, currentList, containerRef } = "itemHeight" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list); + return { + list: currentList, + scrollTo: scrollTo2, + containerProps: { + ref: containerRef, + onScroll: () => { + calculateRange(); + }, + style: containerStyle + }, + wrapperProps + }; +} +function useVirtualListResources(list) { + const containerRef = ref(null); + const size = useElementSize(containerRef); + const currentList = ref([]); + const source = shallowRef(list); + const state = ref({ start: 0, end: 10 }); + return { state, source, currentList, size, containerRef }; +} +function createGetViewCapacity(state, source, itemSize) { + return (containerSize) => { + if (typeof itemSize === "number") + return Math.ceil(containerSize / itemSize); + const { start = 0 } = state.value; + let sum = 0; + let capacity = 0; + for (let i = start; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + capacity = i; + if (sum > containerSize) + break; + } + return capacity - start; + }; +} +function createGetOffset(source, itemSize) { + return (scrollDirection) => { + if (typeof itemSize === "number") + return Math.floor(scrollDirection / itemSize) + 1; + let sum = 0; + let offset = 0; + for (let i = 0; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + if (sum >= scrollDirection) { + offset = i; + break; + } + } + return offset + 1; + }; +} +function createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) { + return () => { + const element = containerRef.value; + if (element) { + const offset = getOffset(type === "vertical" ? element.scrollTop : element.scrollLeft); + const viewCapacity = getViewCapacity(type === "vertical" ? element.clientHeight : element.clientWidth); + const from = offset - overscan; + const to = offset + viewCapacity + overscan; + state.value = { + start: from < 0 ? 0 : from, + end: to > source.value.length ? source.value.length : to + }; + currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({ + data: ele, + index: index + state.value.start + })); + } + }; +} +function createGetDistance(itemSize, source) { + return (index) => { + if (typeof itemSize === "number") { + const size2 = index * itemSize; + return size2; + } + const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0); + return size; + }; +} +function useWatchForSizes(size, list, calculateRange) { + watch([size.width, size.height, list], () => { + calculateRange(); + }); +} +function createComputedTotalSize(itemSize, source) { + return computed(() => { + if (typeof itemSize === "number") + return source.value.length * itemSize; + return source.value.reduce((sum, _, index) => sum + itemSize(index), 0); + }); +} +var scrollToDictionaryForElementScrollKey = { + horizontal: "scrollLeft", + vertical: "scrollTop" +}; +function createScrollTo(type, calculateRange, getDistance, containerRef) { + return (index) => { + if (containerRef.value) { + containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index); + calculateRange(); + } + }; +} +function useHorizontalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowX: "auto" }; + const { itemWidth, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemWidth); + const getOffset = createGetOffset(source, itemWidth); + const calculateRange = createCalculateRange("horizontal", overscan, getOffset, getViewCapacity, resources); + const getDistanceLeft = createGetDistance(itemWidth, source); + const offsetLeft = computed(() => getDistanceLeft(state.value.start)); + const totalWidth = createComputedTotalSize(itemWidth, source); + useWatchForSizes(size, list, calculateRange); + const scrollTo2 = createScrollTo("horizontal", calculateRange, getDistanceLeft, containerRef); + const wrapperProps = computed(() => { + return { + style: { + height: "100%", + width: `${totalWidth.value - offsetLeft.value}px`, + marginLeft: `${offsetLeft.value}px`, + display: "flex" + } + }; + }); + return { + scrollTo: scrollTo2, + calculateRange, + wrapperProps, + containerStyle, + currentList, + containerRef + }; +} +function useVerticalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowY: "auto" }; + const { itemHeight, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemHeight); + const getOffset = createGetOffset(source, itemHeight); + const calculateRange = createCalculateRange("vertical", overscan, getOffset, getViewCapacity, resources); + const getDistanceTop = createGetDistance(itemHeight, source); + const offsetTop = computed(() => getDistanceTop(state.value.start)); + const totalHeight = createComputedTotalSize(itemHeight, source); + useWatchForSizes(size, list, calculateRange); + const scrollTo2 = createScrollTo("vertical", calculateRange, getDistanceTop, containerRef); + const wrapperProps = computed(() => { + return { + style: { + width: "100%", + height: `${totalHeight.value - offsetTop.value}px`, + marginTop: `${offsetTop.value}px` + } + }; + }); + return { + calculateRange, + scrollTo: scrollTo2, + containerStyle, + wrapperProps, + currentList, + containerRef + }; +} +function useWakeLock(options = {}) { + const { + navigator = defaultNavigator, + document: document2 = defaultDocument + } = options; + let wakeLock; + const isSupported = useSupported(() => navigator && "wakeLock" in navigator); + const isActive = ref(false); + async function onVisibilityChange() { + if (!isSupported.value || !wakeLock) + return; + if (document2 && document2.visibilityState === "visible") + wakeLock = await navigator.wakeLock.request("screen"); + isActive.value = !wakeLock.released; + } + if (document2) + useEventListener(document2, "visibilitychange", onVisibilityChange, { passive: true }); + async function request(type) { + if (!isSupported.value) + return; + wakeLock = await navigator.wakeLock.request(type); + isActive.value = !wakeLock.released; + } + async function release() { + if (!isSupported.value || !wakeLock) + return; + await wakeLock.release(); + isActive.value = !wakeLock.released; + wakeLock = null; + } + return { + isSupported, + isActive, + request, + release + }; +} +function useWebNotification(options = {}) { + const { + window: window2 = defaultWindow, + requestPermissions: _requestForPermissions = true + } = options; + const defaultWebNotificationOptions = options; + const isSupported = useSupported(() => !!window2 && "Notification" in window2); + const permissionGranted = ref(isSupported.value && "permission" in Notification && Notification.permission === "granted"); + const notification = ref(null); + const ensurePermissions = async () => { + if (!isSupported.value) + return; + if (!permissionGranted.value && Notification.permission !== "denied") { + const result = await Notification.requestPermission(); + if (result === "granted") + permissionGranted.value = true; + } + return permissionGranted.value; + }; + const { on: onClick, trigger: clickTrigger } = createEventHook(); + const { on: onShow, trigger: showTrigger } = createEventHook(); + const { on: onError, trigger: errorTrigger } = createEventHook(); + const { on: onClose, trigger: closeTrigger } = createEventHook(); + const show = async (overrides) => { + if (!isSupported.value || !permissionGranted.value) + return; + const options2 = Object.assign({}, defaultWebNotificationOptions, overrides); + notification.value = new Notification(options2.title || "", options2); + notification.value.onclick = clickTrigger; + notification.value.onshow = showTrigger; + notification.value.onerror = errorTrigger; + notification.value.onclose = closeTrigger; + return notification.value; + }; + const close = () => { + if (notification.value) + notification.value.close(); + notification.value = null; + }; + if (_requestForPermissions) + tryOnMounted(ensurePermissions); + tryOnScopeDispose(close); + if (isSupported.value && window2) { + const document2 = window2.document; + useEventListener(document2, "visibilitychange", (e) => { + e.preventDefault(); + if (document2.visibilityState === "visible") { + close(); + } + }); + } + return { + isSupported, + notification, + ensurePermissions, + permissionGranted, + show, + close, + onClick, + onShow, + onError, + onClose + }; +} +var DEFAULT_PING_MESSAGE = "ping"; +function resolveNestedOptions(options) { + if (options === true) + return {}; + return options; +} +function useWebSocket(url, options = {}) { + const { + onConnected, + onDisconnected, + onError, + onMessage, + immediate = true, + autoClose = true, + protocols = [] + } = options; + const data = ref(null); + const status = ref("CLOSED"); + const wsRef = ref(); + const urlRef = toRef2(url); + let heartbeatPause; + let heartbeatResume; + let explicitlyClosed = false; + let retried = 0; + let bufferedData = []; + let pongTimeoutWait; + const _sendBuffer = () => { + if (bufferedData.length && wsRef.value && status.value === "OPEN") { + for (const buffer of bufferedData) + wsRef.value.send(buffer); + bufferedData = []; + } + }; + const resetHeartbeat = () => { + clearTimeout(pongTimeoutWait); + pongTimeoutWait = void 0; + }; + const close = (code = 1e3, reason) => { + if (!isClient || !wsRef.value) + return; + explicitlyClosed = true; + resetHeartbeat(); + heartbeatPause == null ? void 0 : heartbeatPause(); + wsRef.value.close(code, reason); + }; + const send = (data2, useBuffer = true) => { + if (!wsRef.value || status.value !== "OPEN") { + if (useBuffer) + bufferedData.push(data2); + return false; + } + _sendBuffer(); + wsRef.value.send(data2); + return true; + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const ws = new WebSocket(urlRef.value, protocols); + wsRef.value = ws; + status.value = "CONNECTING"; + ws.onopen = () => { + status.value = "OPEN"; + onConnected == null ? void 0 : onConnected(ws); + heartbeatResume == null ? void 0 : heartbeatResume(); + _sendBuffer(); + }; + ws.onclose = (ev) => { + status.value = "CLOSED"; + wsRef.value = void 0; + onDisconnected == null ? void 0 : onDisconnected(ws, ev); + if (!explicitlyClosed && options.autoReconnect) { + const { + retries = -1, + delay = 1e3, + onFailed + } = resolveNestedOptions(options.autoReconnect); + retried += 1; + if (typeof retries === "number" && (retries < 0 || retried < retries)) + setTimeout(_init, delay); + else if (typeof retries === "function" && retries()) + setTimeout(_init, delay); + else + onFailed == null ? void 0 : onFailed(); + } + }; + ws.onerror = (e) => { + onError == null ? void 0 : onError(ws, e); + }; + ws.onmessage = (e) => { + if (options.heartbeat) { + resetHeartbeat(); + const { + message = DEFAULT_PING_MESSAGE + } = resolveNestedOptions(options.heartbeat); + if (e.data === message) + return; + } + data.value = e.data; + onMessage == null ? void 0 : onMessage(ws, e); + }; + }; + if (options.heartbeat) { + const { + message = DEFAULT_PING_MESSAGE, + interval = 1e3, + pongTimeout = 1e3 + } = resolveNestedOptions(options.heartbeat); + const { pause, resume } = useIntervalFn( + () => { + send(message, false); + if (pongTimeoutWait != null) + return; + pongTimeoutWait = setTimeout(() => { + close(); + explicitlyClosed = false; + }, pongTimeout); + }, + interval, + { immediate: false } + ); + heartbeatPause = pause; + heartbeatResume = resume; + } + if (autoClose) { + if (isClient) + useEventListener("beforeunload", () => close()); + tryOnScopeDispose(close); + } + const open = () => { + if (!isClient && !isWorker) + return; + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) + watch(urlRef, open, { immediate: true }); + return { + data, + status, + close, + send, + open, + ws: wsRef + }; +} +function useWebWorker(arg0, workerOptions, options) { + const { + window: window2 = defaultWindow + } = options != null ? options : {}; + const data = ref(null); + const worker = shallowRef(); + const post = (...args) => { + if (!worker.value) + return; + worker.value.postMessage(...args); + }; + const terminate = function terminate2() { + if (!worker.value) + return; + worker.value.terminate(); + }; + if (window2) { + if (typeof arg0 === "string") + worker.value = new Worker(arg0, workerOptions); + else if (typeof arg0 === "function") + worker.value = arg0(); + else + worker.value = arg0; + worker.value.onmessage = (e) => { + data.value = e.data; + }; + tryOnScopeDispose(() => { + if (worker.value) + worker.value.terminate(); + }); + } + return { + data, + post, + terminate, + worker + }; +} +function jobRunner(userFunc) { + return (e) => { + const userFuncArgs = e.data[0]; + return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { + postMessage(["SUCCESS", result]); + }).catch((error) => { + postMessage(["ERROR", error]); + }); + }; +} +function depsParser(deps) { + if (deps.length === 0) + return ""; + const depsString = deps.map((dep) => `'${dep}'`).toString(); + return `importScripts(${depsString})`; +} +function createWorkerBlobUrl(fn, deps) { + const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`; + const blob = new Blob([blobCode], { type: "text/javascript" }); + const url = URL.createObjectURL(blob); + return url; +} +function useWebWorkerFn(fn, options = {}) { + const { + dependencies = [], + timeout, + window: window2 = defaultWindow + } = options; + const worker = ref(); + const workerStatus = ref("PENDING"); + const promise = ref({}); + const timeoutId = ref(); + const workerTerminate = (status = "PENDING") => { + if (worker.value && worker.value._url && window2) { + worker.value.terminate(); + URL.revokeObjectURL(worker.value._url); + promise.value = {}; + worker.value = void 0; + window2.clearTimeout(timeoutId.value); + workerStatus.value = status; + } + }; + workerTerminate(); + tryOnScopeDispose(workerTerminate); + const generateWorker = () => { + const blobUrl = createWorkerBlobUrl(fn, dependencies); + const newWorker = new Worker(blobUrl); + newWorker._url = blobUrl; + newWorker.onmessage = (e) => { + const { resolve = () => { + }, reject = () => { + } } = promise.value; + const [status, result] = e.data; + switch (status) { + case "SUCCESS": + resolve(result); + workerTerminate(status); + break; + default: + reject(result); + workerTerminate("ERROR"); + break; + } + }; + newWorker.onerror = (e) => { + const { reject = () => { + } } = promise.value; + e.preventDefault(); + reject(e); + workerTerminate("ERROR"); + }; + if (timeout) { + timeoutId.value = setTimeout( + () => workerTerminate("TIMEOUT_EXPIRED"), + timeout + ); + } + return newWorker; + }; + const callWorker = (...fnArgs) => new Promise((resolve, reject) => { + promise.value = { + resolve, + reject + }; + worker.value && worker.value.postMessage([[...fnArgs]]); + workerStatus.value = "RUNNING"; + }); + const workerFn = (...fnArgs) => { + if (workerStatus.value === "RUNNING") { + console.error( + "[useWebWorkerFn] You can only run one instance of the worker at a time." + ); + return Promise.reject(); + } + worker.value = generateWorker(); + return callWorker(...fnArgs); + }; + return { + workerFn, + workerStatus, + workerTerminate + }; +} +function useWindowFocus(options = {}) { + const { window: window2 = defaultWindow } = options; + if (!window2) + return ref(false); + const focused = ref(window2.document.hasFocus()); + useEventListener(window2, "blur", () => { + focused.value = false; + }); + useEventListener(window2, "focus", () => { + focused.value = true; + }); + return focused; +} +function useWindowScroll(options = {}) { + const { window: window2 = defaultWindow, behavior = "auto" } = options; + if (!window2) { + return { + x: ref(0), + y: ref(0) + }; + } + const internalX = ref(window2.scrollX); + const internalY = ref(window2.scrollY); + const x = computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo({ left: x2, behavior }); + } + }); + const y = computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo({ top: y2, behavior }); + } + }); + useEventListener( + window2, + "scroll", + () => { + internalX.value = window2.scrollX; + internalY.value = window2.scrollY; + }, + { + capture: false, + passive: true + } + ); + return { x, y }; +} +function useWindowSize(options = {}) { + const { + window: window2 = defaultWindow, + initialWidth = Number.POSITIVE_INFINITY, + initialHeight = Number.POSITIVE_INFINITY, + listenOrientation = true, + includeScrollbar = true + } = options; + const width = ref(initialWidth); + const height = ref(initialHeight); + const update = () => { + if (window2) { + if (includeScrollbar) { + width.value = window2.innerWidth; + height.value = window2.innerHeight; + } else { + width.value = window2.document.documentElement.clientWidth; + height.value = window2.document.documentElement.clientHeight; + } + } + }; + update(); + tryOnMounted(update); + useEventListener("resize", update, { passive: true }); + if (listenOrientation) { + const matches = useMediaQuery("(orientation: portrait)"); + watch(matches, () => update()); + } + return { width, height }; +} +export { + DefaultMagicKeysAliasMap, + StorageSerializers, + TransitionPresets, + assert, + computedAsync as asyncComputed, + refAutoReset as autoResetRef, + breakpointsAntDesign, + breakpointsBootstrapV5, + breakpointsMasterCss, + breakpointsPrimeFlex, + breakpointsQuasar, + breakpointsSematic, + breakpointsTailwind, + breakpointsVuetify, + bypassFilter, + camelize, + clamp, + cloneFnJSON, + computedAsync, + computedEager, + computedInject, + computedWithControl, + containsProp, + computedWithControl as controlledComputed, + controlledRef, + createEventHook, + createFetch, + createFilterWrapper, + createGlobalState, + createInjectionState, + reactify as createReactiveFn, + createReusableTemplate, + createSharedComposable, + createSingletonPromise, + createTemplatePromise, + createUnrefFn, + customStorageEventName, + debounceFilter, + refDebounced as debouncedRef, + watchDebounced as debouncedWatch, + defaultDocument, + defaultLocation, + defaultNavigator, + defaultWindow, + directiveHooks, + computedEager as eagerComputed, + executeTransition, + extendRef, + formatDate, + formatTimeAgo, + get, + getLifeCycleTarget, + getSSRHandler, + hasOwn, + hyphenate, + identity, + watchIgnorable as ignorableWatch, + increaseWithUnit, + injectLocal, + invoke, + isClient, + isDef, + isDefined, + isIOS, + isObject, + isWorker, + makeDestructurable, + mapGamepadToXbox360Controller, + noop, + normalizeDate, + notNullish, + now, + objectEntries, + objectOmit, + objectPick, + onClickOutside, + onKeyDown, + onKeyPressed, + onKeyStroke, + onKeyUp, + onLongPress, + onStartTyping, + pausableFilter, + watchPausable as pausableWatch, + promiseTimeout, + provideLocal, + rand, + reactify, + reactifyObject, + reactiveComputed, + reactiveOmit, + reactivePick, + refAutoReset, + refDebounced, + refDefault, + refThrottled, + refWithControl, + resolveRef, + resolveUnref, + set2 as set, + setSSRHandler, + syncRef, + syncRefs, + templateRef, + throttleFilter, + refThrottled as throttledRef, + watchThrottled as throttledWatch, + timestamp, + toReactive, + toRef2 as toRef, + toRefs2 as toRefs, + toValue, + tryOnBeforeMount, + tryOnBeforeUnmount, + tryOnMounted, + tryOnScopeDispose, + tryOnUnmounted, + unrefElement, + until, + useActiveElement, + useAnimate, + useArrayDifference, + useArrayEvery, + useArrayFilter, + useArrayFind, + useArrayFindIndex, + useArrayFindLast, + useArrayIncludes, + useArrayJoin, + useArrayMap, + useArrayReduce, + useArraySome, + useArrayUnique, + useAsyncQueue, + useAsyncState, + useBase64, + useBattery, + useBluetooth, + useBreakpoints, + useBroadcastChannel, + useBrowserLocation, + useCached, + useClipboard, + useClipboardItems, + useCloned, + useColorMode, + useConfirmDialog, + useCounter, + useCssVar, + useCurrentElement, + useCycleList, + useDark, + useDateFormat, + refDebounced as useDebounce, + useDebounceFn, + useDebouncedRefHistory, + useDeviceMotion, + useDeviceOrientation, + useDevicePixelRatio, + useDevicesList, + useDisplayMedia, + useDocumentVisibility, + useDraggable, + useDropZone, + useElementBounding, + useElementByPoint, + useElementHover, + useElementSize, + useElementVisibility, + useEventBus, + useEventListener, + useEventSource, + useEyeDropper, + useFavicon, + useFetch, + useFileDialog, + useFileSystemAccess, + useFocus, + useFocusWithin, + useFps, + useFullscreen, + useGamepad, + useGeolocation, + useIdle, + useImage, + useInfiniteScroll, + useIntersectionObserver, + useInterval, + useIntervalFn, + useKeyModifier, + useLastChanged, + useLocalStorage, + useMagicKeys, + useManualRefHistory, + useMediaControls, + useMediaQuery, + useMemoize, + useMemory, + useMounted, + useMouse, + useMouseInElement, + useMousePressed, + useMutationObserver, + useNavigatorLanguage, + useNetwork, + useNow, + useObjectUrl, + useOffsetPagination, + useOnline, + usePageLeave, + useParallax, + useParentElement, + usePerformanceObserver, + usePermission, + usePointer, + usePointerLock, + usePointerSwipe, + usePreferredColorScheme, + usePreferredContrast, + usePreferredDark, + usePreferredLanguages, + usePreferredReducedMotion, + usePrevious, + useRafFn, + useRefHistory, + useResizeObserver, + useScreenOrientation, + useScreenSafeArea, + useScriptTag, + useScroll, + useScrollLock, + useSessionStorage, + useShare, + useSorted, + useSpeechRecognition, + useSpeechSynthesis, + useStepper, + useStorage, + useStorageAsync, + useStyleTag, + useSupported, + useSwipe, + useTemplateRefsList, + useTextDirection, + useTextSelection, + useTextareaAutosize, + refThrottled as useThrottle, + useThrottleFn, + useThrottledRefHistory, + useTimeAgo, + useTimeout, + useTimeoutFn, + useTimeoutPoll, + useTimestamp, + useTitle, + useToNumber, + useToString, + useToggle, + useTransition, + useUrlSearchParams, + useUserMedia, + useVModel, + useVModels, + useVibrate, + useVirtualList, + useWakeLock, + useWebNotification, + useWebSocket, + useWebWorker, + useWebWorkerFn, + useWindowFocus, + useWindowScroll, + useWindowSize, + watchArray, + watchAtMost, + watchDebounced, + watchDeep, + watchIgnorable, + watchImmediate, + watchOnce, + watchPausable, + watchThrottled, + watchTriggerable, + watchWithFilter, + whenever +}; +//# sourceMappingURL=@vueuse_core.js.map diff --git a/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js.map b/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js.map new file mode 100644 index 0000000..10378e9 --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/@vueuse_core.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/vue-demi/lib/index.mjs", "../../../../node_modules/@vueuse/shared/index.mjs", "../../../../node_modules/@vueuse/core/index.mjs"], + "sourcesContent": ["import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n}\n", "import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"injectLocal must be called in setup\");\n if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return 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\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 if (!condition)\n 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 = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return 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 var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\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 return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return 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\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue(defaultValue);\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue(\n !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\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n toValue(element),\n toValue(value),\n index,\n toValue(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\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}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n", "import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, notNullish, useIntervalFn, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, tryOnBeforeUnmount, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = computedWithControl(\n () => null,\n () => getDeepActiveElement()\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - (previousFrameTimestamp || timestamp);\n if (intervalLimit && delta < intervalLimit) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n el && update();\n });\n watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => {\n nextTick(() => update(true));\n });\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[k]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => {\n if (mode.system) {\n return mode.system.value;\n } else {\n const preferredDark = usePreferredDark({ window });\n return preferredDark.value ? \"dark\" : \"light\";\n }\n });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = ref(1);\n if (window) {\n let observe2 = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup2();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe2, { once: true });\n }, cleanup2 = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n };\n let media;\n observe2();\n tryOnScopeDispose(cleanup2);\n }\n return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n const isOverDropZone = ref(false);\n const files = shallowRef(null);\n let counter = 0;\n let isDataTypeIncluded = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const getFiles = (event) => {\n var _a, _b;\n const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n return files.value = list.length === 0 ? null : list;\n };\n useEventListener(target, \"dragenter\", (event) => {\n var _a, _b;\n const types = Array.from(((_a = event == null ? void 0 : event.dataTransfer) == null ? void 0 : _a.items) || []).map((i) => i.kind === \"file\" ? i.type : null).filter(notNullish);\n if (_options.dataTypes && event.dataTransfer) {\n const dataTypes = unref(_options.dataTypes);\n isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true;\n if (!isDataTypeIncluded)\n return;\n }\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n (_b = _options.onEnter) == null ? void 0 : _b.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"dragover\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"dragleave\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener(target, \"drop\", (event) => {\n var _a;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold: 0\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input) {\n input.value = \"\";\n trigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n ...gamepad,\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = shallowReactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX;\n y.value = pos[1] + window.scrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n })\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, initialOverflow);\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n var _a;\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval, { immediate: false });\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnBeforeUnmount(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n if (!isClient || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, behavior = \"auto\" } = options;\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const internalX = ref(window.scrollX);\n const internalY = ref(window.scrollY);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo({ left: x2, behavior });\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo({ top: y2, behavior });\n }\n });\n useEventListener(\n window,\n \"scroll\",\n () => {\n internalX.value = window.scrollX;\n internalY.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n"], + "mappings": "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", + "names": ["get", "set", "ref", "keys", "invoke", "toRef", "toRefs", "events", "window", "document", "timestamp", "getValue", "defaults", "toRef", "set", "onUpdated", "preventDefault", "toRefs", "now", "scrollTo", "keys", "get", "isReadonly"] +} diff --git a/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js b/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js new file mode 100644 index 0000000..3795de1 --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js @@ -0,0 +1,331 @@ +// node_modules/@vue/shared/dist/shared.esm-bundler.js +function makeMap(str, expectsLowerCase) { + const set = new Set(str.split(",")); + return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val); +} +var EMPTY_OBJ = true ? Object.freeze({}) : {}; +var EMPTY_ARR = true ? Object.freeze([]) : []; +var NOOP = () => { +}; +var NO = () => false; +var isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +var isModelListener = (key) => key.startsWith("onUpdate:"); +var extend = Object.assign; +var remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = (val, key) => hasOwnProperty.call(val, key); +var isArray = Array.isArray; +var isMap = (val) => toTypeString(val) === "[object Map]"; +var isSet = (val) => toTypeString(val) === "[object Set]"; +var isDate = (val) => toTypeString(val) === "[object Date]"; +var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +var isFunction = (val) => typeof val === "function"; +var isString = (val) => typeof val === "string"; +var isSymbol = (val) => typeof val === "symbol"; +var isObject = (val) => val !== null && typeof val === "object"; +var isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +var objectToString = Object.prototype.toString; +var toTypeString = (value) => objectToString.call(value); +var toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +var isPlainObject = (val) => toTypeString(val) === "[object Object]"; +var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +var isReservedProp = makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +var isBuiltInDirective = makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +var cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +var capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +var toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +var hasChanged = (value, oldValue) => !Object.is(value, oldValue); +var invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +var def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +var looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +var toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +var _globalThis; +var getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +var GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"; +var isGloballyAllowed = makeMap(GLOBALS_ALLOWED); +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +var listDelimiterRE = /;(?![^(]*\))/g; +var propertyDelimiterRE = /:([^]+)/; +var styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + if (isString(value) || typeof value === "number") { + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} +var HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +var SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +var MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +var isHTMLTag = makeMap(HTML_TAGS); +var isSVGTag = makeMap(SVG_TAGS); +var isMathMLTag = makeMap(MATH_TAGS); +var isVoidTag = makeMap(VOID_TAGS); +var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +var isSpecialBooleanAttr = makeMap(specialBooleanAttrs); +var isBooleanAttr = makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +var isKnownHtmlAttr = makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +var isKnownSvgAttr = makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} +var toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +var replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +var stringifySymbol = (v, i = "") => { + var _a; + return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v; +}; + +export { + makeMap, + EMPTY_OBJ, + EMPTY_ARR, + NOOP, + NO, + isOn, + isModelListener, + extend, + remove, + hasOwn, + isArray, + isMap, + isSet, + isRegExp, + isFunction, + isString, + isSymbol, + isObject, + isPromise, + toRawType, + isPlainObject, + isIntegerKey, + isReservedProp, + isBuiltInDirective, + camelize, + hyphenate, + capitalize, + toHandlerKey, + hasChanged, + invokeArrayFns, + def, + looseToNumber, + toNumber, + getGlobalThis, + isGloballyAllowed, + normalizeStyle, + stringifyStyle, + normalizeClass, + normalizeProps, + isHTMLTag, + isSVGTag, + isMathMLTag, + isSpecialBooleanAttr, + isBooleanAttr, + includeBooleanAttr, + isKnownHtmlAttr, + isKnownSvgAttr, + looseEqual, + looseIndexOf, + toDisplayString +}; +//# sourceMappingURL=chunk-F6L62Q4Q.js.map diff --git a/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js.map b/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js.map new file mode 100644 index 0000000..9e190a5 --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/chunk-F6L62Q4Q.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@vue/shared/dist/shared.esm-bundler.js"], + "sourcesContent": ["function makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n"], + "mappings": "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", + "names": [] +} diff --git a/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js b/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js new file mode 100644 index 0000000..06cca49 --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js @@ -0,0 +1,163 @@ +// node_modules/@vue/devtools-api/lib/esm/env.js +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +function getTarget() { + return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}; +} +var isProxyAvailable = typeof Proxy === "function"; + +// node_modules/@vue/devtools-api/lib/esm/const.js +var HOOK_SETUP = "devtools-plugin:setup"; +var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; + +// node_modules/@vue/devtools-api/lib/esm/time.js +var supported; +var perf; +function isPerformanceSupported() { + var _a; + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else if (typeof global !== "undefined" && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = global.perf_hooks.performance; + } else { + supported = false; + } + return supported; +} +function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} + +// node_modules/@vue/devtools-api/lib/esm/proxy.js +var ApiProxy = class { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } catch (e) { + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } catch (e) { + } + currentSettings = value; + }, + now() { + return now(); + } + }; + if (hook) { + hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } else { + return (...args) => { + this.onQueue.push({ + method: prop, + args + }); + }; + } + } + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } else if (prop === "on") { + return this.proxiedOn; + } else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { + } + }); + return this.fallbacks[prop](...args); + }; + } else { + return (...args) => { + return new Promise((resolve) => { + this.targetQueue.push({ + method: prop, + args, + resolve + }); + }); + }; + } + } + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +}; + +// node_modules/@vue/devtools-api/lib/esm/index.js +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = getTarget(); + const hook = getDevtoolsGlobalHook(); + const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } else { + const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy + }); + if (proxy) + setupFn(proxy.proxiedTarget); + } +} + +export { + isPerformanceSupported, + now, + setupDevtoolsPlugin +}; +//# sourceMappingURL=chunk-J4VLYDXT.js.map diff --git a/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js.map b/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js.map new file mode 100644 index 0000000..7e0a995 --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/chunk-J4VLYDXT.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@vue/devtools-api/lib/esm/env.js", "../../../../node_modules/@vue/devtools-api/lib/esm/const.js", "../../../../node_modules/@vue/devtools-api/lib/esm/time.js", "../../../../node_modules/@vue/devtools-api/lib/esm/proxy.js", "../../../../node_modules/@vue/devtools-api/lib/esm/index.js"], + "sourcesContent": ["export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n", "export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n", "let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n", "import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n", "import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n"], + "mappings": "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", + "names": [] +} diff --git a/src/.vuepress/.cache/deps_temp_3208d082/chunk-V7NRH2B6.js b/src/.vuepress/.cache/deps_temp_3208d082/chunk-V7NRH2B6.js new file mode 100644 index 0000000..a8a63ce --- /dev/null +++ b/src/.vuepress/.cache/deps_temp_3208d082/chunk-V7NRH2B6.js @@ -0,0 +1,11068 @@ +import { + EMPTY_ARR, + EMPTY_OBJ, + NO, + NOOP, + camelize, + capitalize, + def, + extend, + getGlobalThis, + hasChanged, + hasOwn, + hyphenate, + includeBooleanAttr, + invokeArrayFns, + isArray, + isBooleanAttr, + isBuiltInDirective, + isFunction, + isGloballyAllowed, + isHTMLTag, + isIntegerKey, + isKnownHtmlAttr, + isKnownSvgAttr, + isMap, + isMathMLTag, + isModelListener, + isObject, + isOn, + isPlainObject, + isPromise, + isRegExp, + isReservedProp, + isSVGTag, + isSet, + isSpecialBooleanAttr, + isString, + isSymbol, + looseEqual, + looseIndexOf, + looseToNumber, + makeMap, + normalizeClass, + normalizeStyle, + remove, + stringifyStyle, + toHandlerKey, + toNumber, + toRawType +} from "./chunk-F6L62Q4Q.js"; + +// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} +var activeEffectScope; +var EffectScope = class { + constructor(detached = false) { + this.detached = detached; + this._active = true; + this.effects = []; + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else if (true) { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +}; +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect2, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect2); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (true) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} +var activeEffect; +var ReactiveEffect = class { + constructor(fn, trigger2, scheduler, scope) { + this.fn = fn; + this.trigger = trigger2; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this._dirtyLevel = 3; + this._trackId = 0; + this._runnings = 0; + this._queryings = 0; + this._depsLength = 0; + recordEffectScope(this, scope); + } + get dirty() { + if (this._dirtyLevel === 1) { + this._dirtyLevel = 0; + this._queryings++; + pauseTracking(); + for (const dep of this.deps) { + if (dep.computed) { + triggerComputed(dep.computed); + if (this._dirtyLevel >= 2) { + break; + } + } + } + resetTracking(); + this._queryings--; + } + return this._dirtyLevel >= 2; + } + set dirty(v) { + this._dirtyLevel = v ? 3 : 0; + } + run() { + this._dirtyLevel = 0; + if (!this.active) { + return this.fn(); + } + let lastShouldTrack = shouldTrack; + let lastEffect = activeEffect; + try { + shouldTrack = true; + activeEffect = this; + this._runnings++; + preCleanupEffect(this); + return this.fn(); + } finally { + postCleanupEffect(this); + this._runnings--; + activeEffect = lastEffect; + shouldTrack = lastShouldTrack; + } + } + stop() { + var _a; + if (this.active) { + preCleanupEffect(this); + postCleanupEffect(this); + (_a = this.onStop) == null ? void 0 : _a.call(this); + this.active = false; + } + } +}; +function triggerComputed(computed3) { + return computed3.value; +} +function preCleanupEffect(effect2) { + effect2._trackId++; + effect2._depsLength = 0; +} +function postCleanupEffect(effect2) { + if (effect2.deps && effect2.deps.length > effect2._depsLength) { + for (let i = effect2._depsLength; i < effect2.deps.length; i++) { + cleanupDepEffect(effect2.deps[i], effect2); + } + effect2.deps.length = effect2._depsLength; + } +} +function cleanupDepEffect(dep, effect2) { + const trackId = dep.get(effect2); + if (trackId !== void 0 && effect2._trackId !== trackId) { + dep.delete(effect2); + if (dep.size === 0) { + dep.cleanup(); + } + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn, NOOP, () => { + if (_effect.dirty) { + _effect.run(); + } + }); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +var shouldTrack = true; +var pauseScheduleStack = 0; +var trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function pauseScheduling() { + pauseScheduleStack++; +} +function resetScheduling() { + pauseScheduleStack--; + while (!pauseScheduleStack && queueEffectSchedulers.length) { + queueEffectSchedulers.shift()(); + } +} +function trackEffect(effect2, dep, debuggerEventExtraInfo) { + var _a; + if (dep.get(effect2) !== effect2._trackId) { + dep.set(effect2, effect2._trackId); + const oldDep = effect2.deps[effect2._depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, effect2); + } + effect2.deps[effect2._depsLength++] = dep; + } else { + effect2._depsLength++; + } + if (true) { + (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + } +} +var queueEffectSchedulers = []; +function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { + var _a; + pauseScheduling(); + for (const effect2 of dep.keys()) { + if (!effect2.allowRecurse && effect2._runnings) { + continue; + } + if (effect2._dirtyLevel < dirtyLevel && (!effect2._runnings || dirtyLevel !== 2)) { + const lastDirtyLevel = effect2._dirtyLevel; + effect2._dirtyLevel = dirtyLevel; + if (lastDirtyLevel === 0 && (!effect2._queryings || dirtyLevel !== 2)) { + if (true) { + (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + effect2.trigger(); + if (effect2.scheduler) { + queueEffectSchedulers.push(effect2.scheduler); + } + } + } + } + resetScheduling(); +} +var createDep = (cleanup, computed3) => { + const dep = /* @__PURE__ */ new Map(); + dep.cleanup = cleanup; + dep.computed = computed3; + return dep; +}; +var targetMap = /* @__PURE__ */ new WeakMap(); +var ITERATE_KEY = Symbol(true ? "iterate" : ""); +var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : ""); +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep(() => depsMap.delete(key))); + } + trackEffect( + activeEffect, + dep, + true ? { + target, + type, + key + } : void 0 + ); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + pauseScheduling(); + for (const dep of deps) { + if (dep) { + triggerEffects( + dep, + 3, + true ? { + target, + type, + key, + newValue, + oldValue, + oldTarget + } : void 0 + ); + } + } + resetScheduling(); +} +function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); +} +var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`); +var builtInSymbols = new Set( + Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +var arrayInstrumentations = createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + pauseScheduling(); + const res = toRaw(this)[key].apply(this, args); + resetScheduling(); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +var BaseReactiveHandler = class { + constructor(_isReadonly = false, _shallow = false) { + this._isReadonly = _isReadonly; + this._shallow = _shallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, shallow = this._shallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the reciever is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +}; +var MutableReactiveHandler = class extends BaseReactiveHandler { + constructor(shallow = false) { + super(false, shallow); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._shallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +}; +var ReadonlyReactiveHandler = class extends BaseReactiveHandler { + constructor(shallow = false) { + super(true, shallow); + } + set(target, key) { + if (true) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + if (true) { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +}; +var mutableHandlers = new MutableReactiveHandler(); +var readonlyHandlers = new ReadonlyReactiveHandler(); +var shallowReactiveHandlers = new MutableReactiveHandler( + true +); +var shallowReadonlyHandlers = new ReadonlyReactiveHandler(true); +var toShallow = (value) => value; +var getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly2 = false, isShallow3 = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly2 = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly2 = false) { + target = target["__v_raw"]; + !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly2, isShallow3) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly2, isShallow3) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + if (true) { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +var [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = createInstrumentations(); +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +var mutableCollectionHandlers = { + get: createInstrumentationGetter(false, false) +}; +var shallowCollectionHandlers = { + get: createInstrumentationGetter(false, true) +}; +var readonlyCollectionHandlers = { + get: createInstrumentationGetter(true, false) +}; +var shallowReadonlyCollectionHandlers = { + get: createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} +var reactiveMap = /* @__PURE__ */ new WeakMap(); +var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +var readonlyMap = /* @__PURE__ */ new WeakMap(); +var shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2; + default: + return 0; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + if (true) { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return isReactive(value) || isReadonly(value); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + def(value, "__v_skip", true); + return value; +} +var toReactive = (value) => isObject(value) ? reactive(value) : value; +var toReadonly = (value) => isObject(value) ? readonly(value) : value; +var ComputedRefImpl = class { + constructor(getter, _setter, isReadonly2, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue(this, 1) + ); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly2; + } + get value() { + const self = toRaw(this); + trackRefValue(self); + if (!self._cacheable || self.effect.dirty) { + if (hasChanged(self._value, self._value = self.effect.run())) { + triggerRefValue(self, 2); + } + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x + get _dirty() { + return this.effect.dirty; + } + set _dirty(v) { + this.effect.dirty = v; + } + // #endregion +}; +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = true ? () => { + console.warn("Write operation failed: computed value is readonly"); + } : NOOP; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} +function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + trackEffect( + activeEffect, + ref2.dep || (ref2.dep = createDep( + () => ref2.dep = void 0, + ref2 instanceof ComputedRefImpl ? ref2 : void 0 + )), + true ? { + target: ref2, + type: "get", + key: "value" + } : void 0 + ); + } +} +function triggerRefValue(ref2, dirtyLevel = 3, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + triggerEffects( + dep, + dirtyLevel, + true ? { + target: ref2, + type: "set", + key: "value", + newValue: newVal + } : void 0 + ); + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +var RefImpl = class { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, 3, newVal); + } + } +}; +function triggerRef(ref2) { + triggerRefValue(ref2, 3, true ? ref2.value : void 0); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +var shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +var CustomRefImpl = class { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get: get2, set: set2 } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get2; + this._set = set2; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +}; +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +var ObjectRefImpl = class { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +}; +var GetterRefImpl = class { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +}; +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} +var TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +var TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; + +// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +var stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn$1(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (false) + return; + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} +var ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER" +}; +var ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." +}; +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = true ? ErrorTypeStrings$1[type] : `https://vuejs.org/errors/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + if (true) { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else { + console.error(err); + } +} +var isFlushing = false; +var isFlushPending = false; +var queue = []; +var flushIndex = 0; +var pendingPostFlushCbs = []; +var activePostFlushCbs = null; +var postFlushIndex = 0; +var resolvedPromise = Promise.resolve(); +var currentFlushPromise = null; +var RECURSION_LIMIT = 100; +function nextTick(fn) { + const p2 = currentFlushPromise || resolvedPromise; + return fn ? p2.then(this ? fn.bind(this) : fn) : p2; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +var getId = (job) => job.id == null ? Infinity : job.id; +var comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = true ? (job) => checkRecursiveUpdates(seen, job) : NOOP; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} +var isHmrUpdating = false; +var hmrDirtyComponents = /* @__PURE__ */ new Set(); +if (true) { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +var map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.effect.dirty = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} +var devtools$1; +var buffer = []; +var devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version2) { + emit$1("app:init", app, version2, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount", app); +} +var devtoolsComponentAdded = createDevtoolsComponentHook( + "component:added" + /* COMPONENT_ADDED */ +); +var devtoolsComponentUpdated = createDevtoolsComponentHook( + "component:updated" + /* COMPONENT_UPDATED */ +); +var _devtoolsComponentRemoved = createDevtoolsComponentHook( + "component:removed" + /* COMPONENT_REMOVED */ +); +var devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +var devtoolsPerfStart = createDevtoolsPerformanceHook( + "perf:start" + /* PERFORMANCE_START */ +); +var devtoolsPerfEnd = createDevtoolsPerformanceHook( + "perf:end" + /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit", + component.appContext.app, + component, + event, + params + ); +} +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + if (true) { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener2 = event.startsWith("update:"); + const modelArg = isModelListener2 && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + if (true) { + devtoolsComponentEmit(instance, event, args); + } + if (true) { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener2) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (__VUE_OPTIONS_API__ && !isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} +var currentRenderingInstance = null; +var currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +var withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + if (true) { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} +var accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit: emit2, + render: render2, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + if (true) { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render2.call( + thisProxy, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render22 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render22.length > 1 ? render22( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit: emit2 + } : { attrs, slots, emit: emit2 } + ) : render22( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +var getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, void 0]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +var getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +var filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +var isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + if (!el) + return; + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} +var COMPONENTS = "components"; +var DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else if (true) { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} +var isSuspense = (type) => type.__isSuspense; +var suspenseId = 0; +var SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +var Suspense = SuspenseImpl; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +var hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove: remove2 } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + if (true) { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + if (true) { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) !== suspense.hiddenContainer) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + if (true) { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized + ); + if (placeholder) { + remove2(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (true) { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; +} +var ssrContextKey = Symbol.for("v-scx"); +var useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; +function watchEffect(effect2, options) { + return doWatch(effect2, null, options); +} +function watchPostEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "post" }) : { flush: "post" } + ); +} +function watchSyncEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "sync" }) : { flush: "sync" } + ); +} +var INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { + immediate, + deep, + flush, + once, + onTrack, + onTrigger +} = EMPTY_OBJ) { + if (cb && once) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + unwatch(); + }; + } + if (deep !== void 0 && typeof deep === "number") { + warn$1( + `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.` + ); + } + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn$1( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = currentInstance; + const reactiveGetter = (source2) => deep === true ? source2 : ( + // for deep: false, only traverse root-level properties + traverse(source2, deep === false ? 1 : void 0) + ); + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect2.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect2.onStop = void 0; + }; + }; + let ssrCleanup; + if (isInSSRComponentSetup) { + onCleanup = NOOP; + if (!cb) { + getter(); + } else if (immediate) { + callWithAsyncErrorHandling(cb, instance, 3, [ + getter(), + isMultiSource ? [] : void 0, + onCleanup + ]); + } + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else { + return NOOP; + } + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect2.active || !effect2.dirty) { + return; + } + if (cb) { + const newValue = effect2.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect2.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect2 = new ReactiveEffect(getter, NOOP, scheduler); + const scope = getCurrentScope(); + const unwatch = () => { + effect2.stop(); + if (scope) { + remove(scope.effects, effect2); + } + }; + if (true) { + effect2.onTrack = onTrack; + effect2.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect2.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect2.run.bind(effect2), + instance && instance.suspense + ); + } else { + effect2.run(); + } + if (ssrCleanup) + ssrCleanup.push(unwatch); + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, depth, currentDepth = 0, seen) { + if (!isObject(value) || value["__v_skip"]) { + return value; + } + if (depth && depth > 0) { + if (currentDepth >= depth) { + return value; + } + currentDepth++; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, depth, currentDepth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, currentDepth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, currentDepth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, currentDepth, seen); + } + } + return value; +} +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} +var leaveCbKey = Symbol("_leaveCb"); +var enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +var TransitionHookValidator = [Function, Array]; +var BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +var BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + if (false) + break; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.effect.dirty = true; + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +var BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook3 = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook3(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook3(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook3(cancelHook, [el]); + } else { + callHook3(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove2) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove2(); + } + callHook3(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove2(); + if (cancelled) { + callHook3(onLeaveCancelled, [el]); + } else { + callHook3(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? ( + // #7121 ensure get the child component subtree in case + // it's been replaced during HMR + vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0 + ) : vnode; +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} +var isAsyncWrapper = (i) => !!i.type.__asyncLoader; +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve2, reject) => { + const userRetry = () => resolve2(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} +var isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +var KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + if (true) { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + if (true) { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +var KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p2) => matches(p2, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else if (true) { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` + ); + } +} +var createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +var onBeforeMount = createHook("bm"); +var onMounted = createHook("m"); +var onBeforeUpdate = createHook("bu"); +var onUpdated = createHook("u"); +var onBeforeUnmount = createHook("bum"); +var onUnmounted = createHook("um"); +var onServerPrefetch = createHook("sp"); +var onRenderTriggered = createHook( + "rtg" +); +var onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} +var getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +var publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => true ? shallowReadonly(i.props) : i.props, + $attrs: (i) => true ? shallowReadonly(i.attrs) : i.attrs, + $slots: (i) => true ? shallowReadonly(i.slots) : i.slots, + $refs: (i) => true ? shallowReadonly(i.refs) : i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type, + $forceUpdate: (i) => i.f || (i.f = () => { + i.effect.dirty = true; + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP + }) +); +var isReservedPrefix = (key) => key === "_" || key === "$"; +var hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +var PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1: + return setupState[key]; + case 2: + return data[key]; + case 4: + return ctx[key]; + case 3: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { + accessCache[key] = 0; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance, "get", key); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate