@zh-keyboard/vue 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +189 -0
- package/dist/App.vue.d.ts +2 -0
- package/dist/components/CandidateBar.vue.d.ts +15 -0
- package/dist/components/CandidateList.vue.d.ts +9 -0
- package/dist/components/CandidateSelection.vue.d.ts +11 -0
- package/dist/components/HandwritingInput.vue.d.ts +11 -0
- package/dist/components/KeyboardBase.vue.d.ts +17 -0
- package/dist/components/NumericKeyboard.vue.d.ts +9 -0
- package/dist/components/SymbolKeyboard.vue.d.ts +9 -0
- package/dist/components/ZhKeyboard.vue.d.ts +34 -0
- package/dist/lib.d.ts +8 -0
- package/dist/main.d.ts +1 -0
- package/dist/style.css +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/utils/handwriting.d.ts +11 -0
- package/dist/utils/useHandwritingRecognizer.d.ts +3 -0
- package/dist/zh-keyboard-vue.js +4576 -0
- package/dist/zh-keyboard-vue.js.map +1 -0
- package/dist/zh-keyboard-vue.umd.cjs +4 -0
- package/dist/zh-keyboard-vue.umd.cjs.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-keyboard-vue.js","sources":["../../../node_modules/.pnpm/@vueuse+shared@13.1.0_vue@3.5.13_typescript@5.7.3_/node_modules/@vueuse/shared/index.mjs","../../../node_modules/.pnpm/@vueuse+core@13.1.0_vue@3.5.13_typescript@5.7.3_/node_modules/@vueuse/core/index.mjs","../../../node_modules/.pnpm/dexie@4.0.11/node_modules/dexie/dist/dexie.min.js","../../../node_modules/.pnpm/dexie@4.0.11/node_modules/dexie/import-wrapper-prod.mjs","../../core/dist/index.mjs","../src/utils/handwriting.ts","../src/utils/useHandwritingRecognizer.ts","../src/assets/icons/keyboard-backspace.svg","../src/assets/icons/keyboard-return.svg","../src/components/CandidateList.vue","../src/components/HandwritingInput.vue","../src/assets/icons/keyboard-caps.svg","../src/assets/icons/keyboard-space.svg","../src/assets/icons/chevron-right.svg","../src/components/CandidateSelection.vue","../src/components/CandidateBar.vue","../src/components/KeyboardBase.vue","../src/components/NumericKeyboard.vue","../src/assets/icons/lock-open-outline.svg","../src/assets/icons/lock-outline.svg","../src/components/SymbolKeyboard.vue","../src/components/ZhKeyboard.vue","../src/lib.ts"],"sourcesContent":["import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, shallowReadonly, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\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 = shallowRef(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(v);\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 clear = () => {\n fns.clear();\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 clear\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 injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nfunction 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 return provide(key, value);\n}\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\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 (!scope) {\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 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 reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\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$1(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 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$1(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$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(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 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 let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(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 lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\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(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\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$1(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, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\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\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(/^-?\\d+\\.?\\d*/)) == 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 pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\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 toArray(value) {\n return Array.isArray(value) ? value : [value];\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 getLifeCycleTarget(target) {\n return target || getCurrentInstance();\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(toValue$1(value));\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return shallowReadonly(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(toValue$1(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 const [target, key, value] = args;\n target[key] = value;\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 initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\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 const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.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$1(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\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\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(target);\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 if (stop)\n stop();\n else\n nextTick(() => 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$1(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 if (stop)\n stop();\n else\n nextTick(() => 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$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(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$1(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$1(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, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(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$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(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$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(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$1(list).map((element) => toValue$1(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 = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\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: shallowReadonly(count), inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n 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 stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\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(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(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(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(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 z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\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$1(date)), toValue$1(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 = shallowRef(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$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\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: shallowReadonly(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 = shallowRef(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: shallowReadonly(counter),\n reset,\n ...controls\n };\n } else {\n return shallowReadonly(counter);\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return shallowReadonly(ms);\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(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 if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: shallowReadonly(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$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else 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$1(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 = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(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) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(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 = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(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 = shallowRef(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 = shallowRef(0);\n const syncCounter = shallowRef(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$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, 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, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, 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, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\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 = shallowRef(!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 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 props: options.props,\n setup(props, { 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, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\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 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\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 unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(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 function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { 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 }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\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 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 targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\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 let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\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 options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\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 startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\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\"], onRelease, 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 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\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 triggerOnRemoval = false\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 = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\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 if (!animate.value)\n 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 if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\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 const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\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 = shallowRef(-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 if (activeIndex.value === tasks.length - 1)\n 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 = shallowRef(false);\n const isLoading = shallowRef(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 }\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 = shallowRef(\"\");\n const promise = shallowRef();\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) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\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 && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(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();\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 = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\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: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\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 breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\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: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 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};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(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, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, 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\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\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 = shallowRef(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 const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\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, ref] of objectEntries(refs)) {\n watch(ref, (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 const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\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 const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\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 = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\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 function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\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 = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\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, { passive: true });\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 isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\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, isModified, 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 usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\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 const keyComputed = computed(() => toValue(key));\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 watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, 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 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 !== keyComputed.value)\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 function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\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 const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\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 classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.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 return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(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 useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(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 && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.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 (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : 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 go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\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(() => mode.system.value);\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 requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(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 }, { passive: true });\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 = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\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 = shallowRef(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 const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\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, { passive: true });\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 = shallowRef((_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 var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\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 shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\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 buttons = [0]\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 (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !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 + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : 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 if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\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), container.scrollWidth - 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), container.scrollHeight - 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 (toValue(options.disabled) || !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 = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\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 var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\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(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\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 if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\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 updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\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 function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\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 = shallowRef(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 triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(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 if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\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 = shallowRef(initialSize.width);\n const height = shallowRef(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 rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(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,\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 toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(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 {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = 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 if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\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 resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\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 if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(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 es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\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 }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(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}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.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 let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\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 = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(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 const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(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 context,\n execute\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 context,\n execute\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: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\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(reject);\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 }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = 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 changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(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 onCancel,\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 = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\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 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 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 await updateFile();\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, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\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 }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\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({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(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.documentElement;\n });\n const isFullscreen = shallowRef(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 const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\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 id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\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 (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\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 const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\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 = shallowRef(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 = shallowRef(initialState);\n const lastActive = shallowRef(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 const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\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, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\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\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\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 onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(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, _d;\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 const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(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 = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + 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) <= (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 try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\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 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 const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\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 = shallowRef(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 }, { passive: true });\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 });\n useEventListener(\"focus\", reset, { passive });\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.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(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 target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = 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.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\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 if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\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), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\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 onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\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 MouseEvent ? [event.movementX, event.movementY] : null\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 let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(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 if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\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 - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\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, listenerOptions);\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 = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\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(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: 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 = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\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 = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\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 = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"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 const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(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 = shallowRef();\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 = shallowRef(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 const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\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 = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\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\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 screenOrientation = reactive(useScreenOrientation({ 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 }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\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 let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\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 = shallowRef(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 } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\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 }, listenerOptions);\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 }, listenerOptions);\n }\n async function lock(e) {\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();\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 = shallowRef(false);\n const isPointerDown = shallowRef(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 listenerOptions = { passive: true };\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 }, listenerOptions),\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 }, listenerOptions),\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 }, listenerOptions)\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 }, { passive: true });\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 usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: 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\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 = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\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), { passive: true });\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 = shallowRef(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 const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\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 = shallowRef(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, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return 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 const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\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 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 maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\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 currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\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, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\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 = shallowRef(false);\n const status = shallowRef(\"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 if (utterance)\n 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)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\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 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)), { passive: true });\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 = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(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 } = 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 = shallowRef(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 const listenerOptions = { passive, capture: !passive };\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 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 (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\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 isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\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, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\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, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(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 if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\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 = shallowRef(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 (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\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 tryOnScopeDispose(() => {\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 writeMode = \"replace\",\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 `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${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, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\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 = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_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 _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 tryOnScopeDispose(() => {\n stop();\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;\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 key = \"modelValue\";\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 = shallowRef(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, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\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, containerRef, 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, containerRef, 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 const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\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(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(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 autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"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 retryTimeout;\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 resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\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 retried = 0;\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 resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\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 responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\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(toValue(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(), { passive: true });\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 open();\n if (autoConnect)\n watch(urlRef, open);\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 depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\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 createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; 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 localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\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, localDependencies);\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 var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.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 shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\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 type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else 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 const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\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, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, 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, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, 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","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){\"use strict\";var s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};var _=function(){return(_=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function i(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||((r=r||Array.prototype.slice.call(t,0,i))[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var f=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:global,x=Object.keys,k=Array.isArray;function a(t,n){return\"object\"!=typeof n||x(n).forEach(function(e){t[e]=n[e]}),t}\"undefined\"==typeof Promise||f.Promise||(f.Promise=Promise);var c=Object.getPrototypeOf,n={}.hasOwnProperty;function m(e,t){return n.call(e,t)}function r(t,n){\"function\"==typeof n&&(n=n(c(t))),(\"undefined\"==typeof Reflect?x:Reflect.ownKeys)(n).forEach(function(e){l(t,e,n[e])})}var u=Object.defineProperty;function l(e,t,n,r){u(e,t,a(n&&m(n,\"get\")&&\"function\"==typeof n.get?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function o(t){return{from:function(e){return t.prototype=Object.create(e.prototype),l(t.prototype,\"constructor\",t),{extend:r.bind(null,t.prototype)}}}}var h=Object.getOwnPropertyDescriptor;var d=[].slice;function b(e,t,n){return d.call(e,t,n)}function p(e,t){return t(e)}function y(e){if(!e)throw new Error(\"Assertion Failed\")}function v(e){f.setImmediate?setImmediate(e):setTimeout(e,0)}function O(e,t){if(\"string\"==typeof t&&m(e,t))return e[t];if(!t)return e;if(\"string\"!=typeof t){for(var n=[],r=0,i=t.length;r<i;++r){var o=O(e,t[r]);n.push(o)}return n}var a=t.indexOf(\".\");if(-1!==a){var u=e[t.substr(0,a)];return null==u?void 0:O(u,t.substr(a+1))}}function P(e,t,n){if(e&&void 0!==t&&!(\"isFrozen\"in Object&&Object.isFrozen(e)))if(\"string\"!=typeof t&&\"length\"in t){y(\"string\"!=typeof n&&\"length\"in n);for(var r=0,i=t.length;r<i;++r)P(e,t[r],n[r])}else{var o,a,u=t.indexOf(\".\");-1!==u?(o=t.substr(0,u),\"\"===(a=t.substr(u+1))?void 0===n?k(e)&&!isNaN(parseInt(o))?e.splice(o,1):delete e[o]:e[o]=n:P(u=!(u=e[o])||!m(e,o)?e[o]={}:u,a,n)):void 0===n?k(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}function g(e){var t,n={};for(t in e)m(e,t)&&(n[t]=e[t]);return n}var t=[].concat;function w(e){return t.apply([],e)}var e=\"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\".split(\",\").concat(w([8,16,32,64].map(function(t){return[\"Int\",\"Uint\",\"Float\"].map(function(e){return e+t+\"Array\"})}))).filter(function(e){return f[e]}),K=new Set(e.map(function(e){return f[e]}));var E=null;function S(e){E=new WeakMap;e=function e(t){if(!t||\"object\"!=typeof t)return t;var n=E.get(t);if(n)return n;if(k(t)){n=[],E.set(t,n);for(var r=0,i=t.length;r<i;++r)n.push(e(t[r]))}else if(K.has(t.constructor))n=t;else{var o,a=c(t);for(o in n=a===Object.prototype?{}:Object.create(a),E.set(t,n),t)m(t,o)&&(n[o]=e(t[o]))}return n}(e);return E=null,e}var j={}.toString;function A(e){return j.call(e).slice(8,-1)}var C=\"undefined\"!=typeof Symbol?Symbol.iterator:\"@@iterator\",T=\"symbol\"==typeof C?function(e){var t;return null!=e&&(t=e[C])&&t.apply(e)}:function(){return null};function q(e,t){t=e.indexOf(t);return 0<=t&&e.splice(t,1),0<=t}var D={};function I(e){var t,n,r,i;if(1===arguments.length){if(k(e))return e.slice();if(this===D&&\"string\"==typeof e)return[e];if(i=T(e)){for(n=[];!(r=i.next()).done;)n.push(r.value);return n}if(null==e)return[e];if(\"number\"!=typeof(t=e.length))return[e];for(n=new Array(t);t--;)n[t]=e[t];return n}for(t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return n}var B=\"undefined\"!=typeof Symbol?function(e){return\"AsyncFunction\"===e[Symbol.toStringTag]}:function(){return!1},R=[\"Unknown\",\"Constraint\",\"Data\",\"TransactionInactive\",\"ReadOnly\",\"Version\",\"NotFound\",\"InvalidState\",\"InvalidAccess\",\"Abort\",\"Timeout\",\"QuotaExceeded\",\"Syntax\",\"DataClone\"],F=[\"Modify\",\"Bulk\",\"OpenFailed\",\"VersionChange\",\"Schema\",\"Upgrade\",\"InvalidTable\",\"MissingAPI\",\"NoSuchDatabase\",\"InvalidArgument\",\"SubTransaction\",\"Unsupported\",\"Internal\",\"DatabaseClosed\",\"PrematureCommit\",\"ForeignAwait\"].concat(R),M={VersionChanged:\"Database version changed by other database connection\",DatabaseClosed:\"Database has been closed\",Abort:\"Transaction aborted\",TransactionInactive:\"Transaction has already completed or failed\",MissingAPI:\"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"};function N(e,t){this.name=e,this.message=t}function L(e,t){return e+\". Errors: \"+Object.keys(t).map(function(e){return t[e].toString()}).filter(function(e,t,n){return n.indexOf(e)===t}).join(\"\\n\")}function U(e,t,n,r){this.failures=t,this.failedKeys=r,this.successCount=n,this.message=L(e,t)}function V(e,t){this.name=\"BulkError\",this.failures=Object.keys(t).map(function(e){return t[e]}),this.failuresByPos=t,this.message=L(e,this.failures)}o(N).from(Error).extend({toString:function(){return this.name+\": \"+this.message}}),o(U).from(N),o(V).from(N);var z=F.reduce(function(e,t){return e[t]=t+\"Error\",e},{}),W=N,Y=F.reduce(function(e,n){var r=n+\"Error\";function t(e,t){this.name=r,e?\"string\"==typeof e?(this.message=\"\".concat(e).concat(t?\"\\n \"+t:\"\"),this.inner=t||null):\"object\"==typeof e&&(this.message=\"\".concat(e.name,\" \").concat(e.message),this.inner=e):(this.message=M[n]||r,this.inner=null)}return o(t).from(W),e[n]=t,e},{});Y.Syntax=SyntaxError,Y.Type=TypeError,Y.Range=RangeError;var $=R.reduce(function(e,t){return e[t+\"Error\"]=Y[t],e},{});var Q=F.reduce(function(e,t){return-1===[\"Syntax\",\"Type\",\"Range\"].indexOf(t)&&(e[t+\"Error\"]=Y[t]),e},{});function G(){}function X(e){return e}function H(t,n){return null==t||t===X?n:function(e){return n(t(e))}}function J(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function Z(i,o){return i===G?o:function(){var e=i.apply(this,arguments);void 0!==e&&(arguments[0]=e);var t=this.onsuccess,n=this.onerror;this.onsuccess=null,this.onerror=null;var r=o.apply(this,arguments);return t&&(this.onsuccess=this.onsuccess?J(t,this.onsuccess):t),n&&(this.onerror=this.onerror?J(n,this.onerror):n),void 0!==r?r:e}}function ee(n,r){return n===G?r:function(){n.apply(this,arguments);var e=this.onsuccess,t=this.onerror;this.onsuccess=this.onerror=null,r.apply(this,arguments),e&&(this.onsuccess=this.onsuccess?J(e,this.onsuccess):e),t&&(this.onerror=this.onerror?J(t,this.onerror):t)}}function te(i,o){return i===G?o:function(e){var t=i.apply(this,arguments);a(e,t);var n=this.onsuccess,r=this.onerror;this.onsuccess=null,this.onerror=null;e=o.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?J(n,this.onsuccess):n),r&&(this.onerror=this.onerror?J(r,this.onerror):r),void 0===t?void 0===e?void 0:e:a(t,e)}}function ne(e,t){return e===G?t:function(){return!1!==t.apply(this,arguments)&&e.apply(this,arguments)}}function re(i,o){return i===G?o:function(){var e=i.apply(this,arguments);if(e&&\"function\"==typeof e.then){for(var t=this,n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];return e.then(function(){return o.apply(t,r)})}return o.apply(this,arguments)}}Q.ModifyError=U,Q.DexieError=N,Q.BulkError=V;var ie=\"undefined\"!=typeof location&&/^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);function oe(e){ie=e}var ae={},ue=100,e=\"undefined\"==typeof Promise?[]:function(){var e=Promise.resolve();if(\"undefined\"==typeof crypto||!crypto.subtle)return[e,c(e),e];var t=crypto.subtle.digest(\"SHA-512\",new Uint8Array([0]));return[t,c(t),e]}(),R=e[0],F=e[1],e=e[2],F=F&&F.then,se=R&&R.constructor,ce=!!e;var le=function(e,t){be.push([e,t]),he&&(queueMicrotask(Se),he=!1)},fe=!0,he=!0,de=[],pe=[],ye=X,ve={id:\"global\",global:!0,ref:0,unhandleds:[],onunhandled:G,pgp:!1,env:{},finalize:G},me=ve,be=[],ge=0,we=[];function _e(e){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");this._listeners=[],this._lib=!1;var t=this._PSD=me;if(\"function\"!=typeof e){if(e!==ae)throw new TypeError(\"Not a function\");return this._state=arguments[1],this._value=arguments[2],void(!1===this._state&&Oe(this,this._value))}this._state=null,this._value=null,++t.ref,function t(r,e){try{e(function(n){if(null===r._state){if(n===r)throw new TypeError(\"A promise cannot be resolved with itself.\");var e=r._lib&&je();n&&\"function\"==typeof n.then?t(r,function(e,t){n instanceof _e?n._then(e,t):n.then(e,t)}):(r._state=!0,r._value=n,Pe(r)),e&&Ae()}},Oe.bind(null,r))}catch(e){Oe(r,e)}}(this,e)}var xe={get:function(){var u=me,t=Fe;function e(n,r){var i=this,o=!u.global&&(u!==me||t!==Fe),a=o&&!Ue(),e=new _e(function(e,t){Ke(i,new ke(Qe(n,u,o,a),Qe(r,u,o,a),e,t,u))});return this._consoleTask&&(e._consoleTask=this._consoleTask),e}return e.prototype=ae,e},set:function(e){l(this,\"then\",e&&e.prototype===ae?xe:{get:function(){return e},set:xe.set})}};function ke(e,t,n,r,i){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.resolve=n,this.reject=r,this.psd=i}function Oe(e,t){var n,r;pe.push(t),null===e._state&&(n=e._lib&&je(),t=ye(t),e._state=!1,e._value=t,r=e,de.some(function(e){return e._value===r._value})||de.push(r),Pe(e),n&&Ae())}function Pe(e){var t=e._listeners;e._listeners=[];for(var n=0,r=t.length;n<r;++n)Ke(e,t[n]);var i=e._PSD;--i.ref||i.finalize(),0===ge&&(++ge,le(function(){0==--ge&&Ce()},[]))}function Ke(e,t){if(null!==e._state){var n=e._state?t.onFulfilled:t.onRejected;if(null===n)return(e._state?t.resolve:t.reject)(e._value);++t.psd.ref,++ge,le(Ee,[n,e,t])}else e._listeners.push(t)}function Ee(e,t,n){try{var r,i=t._value;!t._state&&pe.length&&(pe=[]),r=ie&&t._consoleTask?t._consoleTask.run(function(){return e(i)}):e(i),t._state||-1!==pe.indexOf(i)||function(e){var t=de.length;for(;t;)if(de[--t]._value===e._value)return de.splice(t,1)}(t),n.resolve(r)}catch(e){n.reject(e)}finally{0==--ge&&Ce(),--n.psd.ref||n.psd.finalize()}}function Se(){$e(ve,function(){je()&&Ae()})}function je(){var e=fe;return he=fe=!1,e}function Ae(){var e,t,n;do{for(;0<be.length;)for(e=be,be=[],n=e.length,t=0;t<n;++t){var r=e[t];r[0].apply(null,r[1])}}while(0<be.length);he=fe=!0}function Ce(){var e=de;de=[],e.forEach(function(e){e._PSD.onunhandled.call(null,e._value,e)});for(var t=we.slice(0),n=t.length;n;)t[--n]()}function Te(e){return new _e(ae,!1,e)}function qe(n,r){var i=me;return function(){var e=je(),t=me;try{return We(i,!0),n.apply(this,arguments)}catch(e){r&&r(e)}finally{We(t,!1),e&&Ae()}}}r(_e.prototype,{then:xe,_then:function(e,t){Ke(this,new ke(null,null,e,t,me))},catch:function(e){if(1===arguments.length)return this.then(null,e);var t=e,n=arguments[1];return\"function\"==typeof t?this.then(null,function(e){return(e instanceof t?n:Te)(e)}):this.then(null,function(e){return(e&&e.name===t?n:Te)(e)})},finally:function(t){return this.then(function(e){return _e.resolve(t()).then(function(){return e})},function(e){return _e.resolve(t()).then(function(){return Te(e)})})},timeout:function(r,i){var o=this;return r<1/0?new _e(function(e,t){var n=setTimeout(function(){return t(new Y.Timeout(i))},r);o.then(e,t).finally(clearTimeout.bind(null,n))}):this}}),\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&l(_e.prototype,Symbol.toStringTag,\"Dexie.Promise\"),ve.env=Ye(),r(_e,{all:function(){var o=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===o.length&&n([]);var i=o.length;o.forEach(function(e,t){return _e.resolve(e).then(function(e){o[t]=e,--i||n(o)},r)})})},resolve:function(n){return n instanceof _e?n:n&&\"function\"==typeof n.then?new _e(function(e,t){n.then(e,t)}):new _e(ae,!0,n)},reject:Te,race:function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(t,n){e.map(function(e){return _e.resolve(e).then(t,n)})})},PSD:{get:function(){return me},set:function(e){return me=e}},totalEchoes:{get:function(){return Fe}},newPSD:Ne,usePSD:$e,scheduler:{get:function(){return le},set:function(e){le=e}},rejectionMapper:{get:function(){return ye},set:function(e){ye=e}},follow:function(i,n){return new _e(function(e,t){return Ne(function(n,r){var e=me;e.unhandleds=[],e.onunhandled=r,e.finalize=J(function(){var t,e=this;t=function(){0===e.unhandleds.length?n():r(e.unhandleds[0])},we.push(function e(){t(),we.splice(we.indexOf(e),1)}),++ge,le(function(){0==--ge&&Ce()},[])},e.finalize),i()},n,e,t)})}}),se&&(se.allSettled&&l(_e,\"allSettled\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n){0===e.length&&n([]);var r=e.length,i=new Array(r);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return i[t]={status:\"fulfilled\",value:e}},function(e){return i[t]={status:\"rejected\",reason:e}}).then(function(){return--r||n(i)})})})}),se.any&&\"undefined\"!=typeof AggregateError&&l(_e,\"any\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===e.length&&r(new AggregateError([]));var i=e.length,o=new Array(i);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return n(e)},function(e){o[t]=e,--i||r(new AggregateError(o))})})})}),se.withResolvers&&(_e.withResolvers=se.withResolvers));var De={awaits:0,echoes:0,id:0},Ie=0,Be=[],Re=0,Fe=0,Me=0;function Ne(e,t,n,r){var i=me,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++Me,ve.env,o.env=ce?{Promise:_e,PromiseProp:{value:_e,configurable:!0,writable:!0},all:_e.all,race:_e.race,allSettled:_e.allSettled,any:_e.any,resolve:_e.resolve,reject:_e.reject}:{},t&&a(o,t),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};r=$e(o,e,n,r);return 0===o.ref&&o.finalize(),r}function Le(){return De.id||(De.id=++Ie),++De.awaits,De.echoes+=ue,De.id}function Ue(){return!!De.awaits&&(0==--De.awaits&&(De.id=0),De.echoes=De.awaits*ue,!0)}function Ve(e){return De.echoes&&e&&e.constructor===se?(Le(),e.then(function(e){return Ue(),e},function(e){return Ue(),Xe(e)})):e}function ze(){var e=Be[Be.length-1];Be.pop(),We(e,!1)}function We(e,t){var n,r=me;(t?!De.echoes||Re++&&e===me:!Re||--Re&&e===me)||queueMicrotask(t?function(e){++Fe,De.echoes&&0!=--De.echoes||(De.echoes=De.awaits=De.id=0),Be.push(me),We(e,!0)}.bind(null,e):ze),e!==me&&(me=e,r===ve&&(ve.env=Ye()),ce&&(n=ve.env.Promise,t=e.env,(r.global||e.global)&&(Object.defineProperty(f,\"Promise\",t.PromiseProp),n.all=t.all,n.race=t.race,n.resolve=t.resolve,n.reject=t.reject,t.allSettled&&(n.allSettled=t.allSettled),t.any&&(n.any=t.any))))}function Ye(){var e=f.Promise;return ce?{Promise:e,PromiseProp:Object.getOwnPropertyDescriptor(f,\"Promise\"),all:e.all,race:e.race,allSettled:e.allSettled,any:e.any,resolve:e.resolve,reject:e.reject}:{}}function $e(e,t,n,r,i){var o=me;try{return We(e,!0),t(n,r,i)}finally{We(o,!1)}}function Qe(t,n,r,i){return\"function\"!=typeof t?t:function(){var e=me;r&&Le(),We(n,!0);try{return t.apply(this,arguments)}finally{We(e,!1),i&&queueMicrotask(Ue)}}}function Ge(e){Promise===se&&0===De.echoes?0===Re?e():enqueueNativeMicroTask(e):setTimeout(e,0)}-1===(\"\"+F).indexOf(\"[native code]\")&&(Le=Ue=G);var Xe=_e.reject;var He=String.fromCharCode(65535),Je=\"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\",Ze=\"String expected.\",et=[],tt=\"__dbnames\",nt=\"readonly\",rt=\"readwrite\";function it(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var ot={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function at(t){return\"string\"!=typeof t||/\\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=S(e))[t],e}}function ut(){throw Y.Type()}function st(e,t){try{var n=ct(e),r=ct(t);if(n!==r)return\"Array\"===n?1:\"Array\"===r?-1:\"binary\"===n?1:\"binary\"===r?-1:\"string\"===n?1:\"string\"===r?-1:\"Date\"===n?1:\"Date\"!==r?NaN:-1;switch(n){case\"number\":case\"Date\":case\"string\":return t<e?1:e<t?-1:0;case\"binary\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o)if(e[o]!==t[o])return e[o]<t[o]?-1:1;return n===r?0:n<r?-1:1}(lt(e),lt(t));case\"Array\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o){var a=st(e[o],t[o]);if(0!==a)return a}return n===r?0:n<r?-1:1}(e,t)}}catch(e){}return NaN}function ct(e){var t=typeof e;if(\"object\"!=t)return t;if(ArrayBuffer.isView(e))return\"binary\";e=A(e);return\"ArrayBuffer\"===e?\"binary\":e}function lt(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}var ft=(ht.prototype._trans=function(e,r,t){var n=this._tx||me.trans,i=this.name,o=ie&&\"undefined\"!=typeof console&&console.createTask&&console.createTask(\"Dexie: \".concat(\"readonly\"===e?\"read\":\"write\",\" \").concat(this.name));function a(e,t,n){if(!n.schema[i])throw new Y.NotFound(\"Table \"+i+\" not part of transaction\");return r(n.idbtrans,n)}var u=je();try{var s=n&&n.db._novip===this.db._novip?n===me.trans?n._promise(e,a,t):Ne(function(){return n._promise(e,a,t)},{trans:n,transless:me.transless||me}):function t(n,r,i,o){if(n.idbdb&&(n._state.openComplete||me.letThrough||n._vip)){var a=n._createTransaction(r,i,n._dbSchema);try{a.create(),n._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&n.isOpen()&&0<--n._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),n.close({disableAutoOpen:!1}),n.open().then(function(){return t(n,r,i,o)})):Xe(e)}return a._promise(r,function(e,t){return Ne(function(){return me.trans=a,o(e,t,a)})}).then(function(e){if(\"readwrite\"===r)try{a.idbtrans.commit()}catch(e){}return\"readonly\"===r?e:a._completion.then(function(){return e})})}if(n._state.openComplete)return Xe(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return Xe(new Y.DatabaseClosed);n.open().catch(G)}return n._state.dbReadyPromise.then(function(){return t(n,r,i,o)})}(this.db,e,[this.name],a);return o&&(s._consoleTask=o,s=s.catch(function(e){return console.trace(e),Xe(e)})),s}finally{u&&Ae()}},ht.prototype.get=function(t,e){var n=this;return t&&t.constructor===Object?this.where(t).first(e):null==t?Xe(new Y.Type(\"Invalid argument to Table.get()\")):this._trans(\"readonly\",function(e){return n.core.get({trans:e,key:t}).then(function(e){return n.hook.reading.fire(e)})}).then(e)},ht.prototype.where=function(o){if(\"string\"==typeof o)return new this.db.WhereClause(this,o);if(k(o))return new this.db.WhereClause(this,\"[\".concat(o.join(\"+\"),\"]\"));var n=x(o);if(1===n.length)return this.where(n[0]).equals(o[n[0]]);var e=this.schema.indexes.concat(this.schema.primKey).filter(function(t){if(t.compound&&n.every(function(e){return 0<=t.keyPath.indexOf(e)})){for(var e=0;e<n.length;++e)if(-1===n.indexOf(t.keyPath[e]))return!1;return!0}return!1}).sort(function(e,t){return e.keyPath.length-t.keyPath.length})[0];if(e&&this.db._maxKey!==He){var t=e.keyPath.slice(0,n.length);return this.where(t).equals(t.map(function(e){return o[e]}))}!e&&ie&&console.warn(\"The query \".concat(JSON.stringify(o),\" on \").concat(this.name,\" would benefit from a \")+\"compound index [\".concat(n.join(\"+\"),\"]\"));var a=this.schema.idxByName;function u(e,t){return 0===st(e,t)}var r=n.reduce(function(e,t){var n=e[0],r=e[1],e=a[t],i=o[t];return[n||e,n||!e?it(r,e&&e.multi?function(e){e=O(e,t);return k(e)&&e.some(function(e){return u(i,e)})}:function(e){return u(i,O(e,t))}):r]},[null,null]),t=r[0],r=r[1];return t?this.where(t.name).equals(o[t.keyPath]).filter(r):e?this.filter(r):this.where(n).equals(\"\")},ht.prototype.filter=function(e){return this.toCollection().and(e)},ht.prototype.count=function(e){return this.toCollection().count(e)},ht.prototype.offset=function(e){return this.toCollection().offset(e)},ht.prototype.limit=function(e){return this.toCollection().limit(e)},ht.prototype.each=function(e){return this.toCollection().each(e)},ht.prototype.toArray=function(e){return this.toCollection().toArray(e)},ht.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},ht.prototype.orderBy=function(e){return new this.db.Collection(new this.db.WhereClause(this,k(e)?\"[\".concat(e.join(\"+\"),\"]\"):e))},ht.prototype.reverse=function(){return this.toCollection().reverse()},ht.prototype.mapToClass=function(r){var e,t=this.db,n=this.name;function i(){return null!==e&&e.apply(this,arguments)||this}(this.schema.mappedClass=r).prototype instanceof ut&&(function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(i,e=r),Object.defineProperty(i.prototype,\"db\",{get:function(){return t},enumerable:!1,configurable:!0}),i.prototype.table=function(){return n},r=i);for(var o=new Set,a=r.prototype;a;a=c(a))Object.getOwnPropertyNames(a).forEach(function(e){return o.add(e)});function u(e){if(!e)return e;var t,n=Object.create(r.prototype);for(t in e)if(!o.has(t))try{n[t]=e[t]}catch(e){}return n}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=u,this.hook(\"reading\",u),r},ht.prototype.defineClass=function(){return this.mapToClass(function(e){a(this,e)})},ht.prototype.add=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"add\",keys:null!=n?[n]:null,values:[a]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.update=function(e,t){if(\"object\"!=typeof e||k(e))return this.where(\":id\").equals(e).modify(t);e=O(e,this.schema.primKey.keyPath);return void 0===e?Xe(new Y.InvalidArgument(\"Given object does not contain its primary key\")):this.where(\":id\").equals(e).modify(t)},ht.prototype.put=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"put\",values:[a],keys:null!=n?[n]:null})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.delete=function(t){var n=this;return this._trans(\"readwrite\",function(e){return n.core.mutate({trans:e,type:\"delete\",keys:[t]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.clear=function(){var t=this;return this._trans(\"readwrite\",function(e){return t.core.mutate({trans:e,type:\"deleteRange\",range:ot})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.bulkGet=function(t){var n=this;return this._trans(\"readonly\",function(e){return n.core.getMany({keys:t,trans:e}).then(function(e){return e.map(function(e){return n.hook.reading.fire(e)})})})},ht.prototype.bulkAdd=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"add\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkAdd(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkPut=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"put\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkPut(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkUpdate=function(t){var h=this,n=this.core,r=t.map(function(e){return e.key}),i=t.map(function(e){return e.changes}),d=[];return this._trans(\"readwrite\",function(e){return n.getMany({trans:e,keys:r,cache:\"clone\"}).then(function(c){var l=[],f=[];t.forEach(function(e,t){var n=e.key,r=e.changes,i=c[t];if(i){for(var o=0,a=Object.keys(r);o<a.length;o++){var u=a[o],s=r[u];if(u===h.schema.primKey.keyPath){if(0!==st(s,n))throw new Y.Constraint(\"Cannot update primary key in bulkUpdate()\")}else P(i,u,s)}d.push(t),l.push(n),f.push(i)}});var s=l.length;return n.mutate({trans:e,type:\"put\",keys:l,values:f,updates:{keys:r,changeSpecs:i}}).then(function(e){var t=e.numFailures,n=e.failures;if(0===t)return s;for(var r=0,i=Object.keys(n);r<i.length;r++){var o,a=i[r],u=d[Number(a)];null!=u&&(o=n[a],delete n[a],n[u]=o)}throw new V(\"\".concat(h.name,\".bulkUpdate(): \").concat(t,\" of \").concat(s,\" operations failed\"),n)})})})},ht.prototype.bulkDelete=function(t){var r=this,i=t.length;return this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"delete\",keys:t})}).then(function(e){var t=e.numFailures,n=e.lastResult,e=e.failures;if(0===t)return n;throw new V(\"\".concat(r.name,\".bulkDelete(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})},ht);function ht(){}function dt(i){function t(e,t){if(t){for(var n=arguments.length,r=new Array(n-1);--n;)r[n-1]=arguments[n];return a[e].subscribe.apply(null,r),i}if(\"string\"==typeof e)return a[e]}var a={};t.addEventType=u;for(var e=1,n=arguments.length;e<n;++e)u(arguments[e]);return t;function u(e,n,r){if(\"object\"!=typeof e){var i;n=n||ne;var o={subscribers:[],fire:r=r||G,subscribe:function(e){-1===o.subscribers.indexOf(e)&&(o.subscribers.push(e),o.fire=n(o.fire,e))},unsubscribe:function(t){o.subscribers=o.subscribers.filter(function(e){return e!==t}),o.fire=o.subscribers.reduce(n,r)}};return a[e]=t[e]=o}x(i=e).forEach(function(e){var t=i[e];if(k(t))u(e,i[e][0],i[e][1]);else{if(\"asap\"!==t)throw new Y.InvalidArgument(\"Invalid event config\");var n=u(e,X,function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];n.subscribers.forEach(function(e){v(function(){e.apply(null,t)})})})}})}}function pt(e,t){return o(t).from({prototype:e}),t}function yt(e,t){return!(e.filter||e.algorithm||e.or)&&(t?e.justLimit:!e.replayFilter)}function vt(e,t){e.filter=it(e.filter,t)}function mt(e,t,n){var r=e.replayFilter;e.replayFilter=r?function(){return it(r(),t())}:t,e.justLimit=n&&!r}function bt(e,t){if(e.isPrimKey)return t.primaryKey;var n=t.getIndexByKeyPath(e.index);if(!n)throw new Y.Schema(\"KeyPath \"+e.index+\" on object store \"+t.name+\" is not indexed\");return n}function gt(e,t,n){var r=bt(e,t.schema);return t.openCursor({trans:n,values:!e.keysOnly,reverse:\"prev\"===e.dir,unique:!!e.unique,query:{index:r,range:e.range}})}function wt(e,o,t,n){var a=e.replayFilter?it(e.filter,e.replayFilter()):e.filter;if(e.or){var u={},r=function(e,t,n){var r,i;a&&!a(t,n,function(e){return t.stop(e)},function(e){return t.fail(e)})||(\"[object ArrayBuffer]\"===(i=\"\"+(r=t.primaryKey))&&(i=\"\"+new Uint8Array(r)),m(u,i)||(u[i]=!0,o(e,t,n)))};return Promise.all([e.or._iterate(r,t),_t(gt(e,n,t),e.algorithm,r,!e.keysOnly&&e.valueMapper)])}return _t(gt(e,n,t),it(e.algorithm,a),o,!e.keysOnly&&e.valueMapper)}function _t(e,r,i,o){var a=qe(o?function(e,t,n){return i(o(e),t,n)}:i);return e.then(function(n){if(n)return n.start(function(){var t=function(){return n.continue()};r&&!r(n,function(e){return t=e},function(e){n.stop(e),t=G},function(e){n.fail(e),t=G})||a(n.value,n,function(e){return t=e}),t()})})}var xt=(kt.prototype.execute=function(e){var t=this[\"@@propmod\"];if(void 0!==t.add){var n=t.add;if(k(n))return i(i([],k(e)?e:[],!0),n,!0).sort();if(\"number\"==typeof n)return(Number(e)||0)+n;if(\"bigint\"==typeof n)try{return BigInt(e)+n}catch(e){return BigInt(0)+n}throw new TypeError(\"Invalid term \".concat(n))}if(void 0!==t.remove){var r=t.remove;if(k(r))return k(e)?e.filter(function(e){return!r.includes(e)}).sort():[];if(\"number\"==typeof r)return Number(e)-r;if(\"bigint\"==typeof r)try{return BigInt(e)-r}catch(e){return BigInt(0)-r}throw new TypeError(\"Invalid subtrahend \".concat(r))}n=null===(n=t.replacePrefix)||void 0===n?void 0:n[0];return n&&\"string\"==typeof e&&e.startsWith(n)?t.replacePrefix[1]+e.substring(n.length):e},kt);function kt(e){this[\"@@propmod\"]=e}var Ot=(Pt.prototype._read=function(e,t){var n=this._ctx;return n.error?n.table._trans(null,Xe.bind(null,n.error)):n.table._trans(\"readonly\",e).then(t)},Pt.prototype._write=function(e){var t=this._ctx;return t.error?t.table._trans(null,Xe.bind(null,t.error)):t.table._trans(\"readwrite\",e,\"locked\")},Pt.prototype._addAlgorithm=function(e){var t=this._ctx;t.algorithm=it(t.algorithm,e)},Pt.prototype._iterate=function(e,t){return wt(this._ctx,e,t,this._ctx.table.core)},Pt.prototype.clone=function(e){var t=Object.create(this.constructor.prototype),n=Object.create(this._ctx);return e&&a(n,e),t._ctx=n,t},Pt.prototype.raw=function(){return this._ctx.valueMapper=null,this},Pt.prototype.each=function(t){var n=this._ctx;return this._read(function(e){return wt(n,t,e,n.table.core)})},Pt.prototype.count=function(e){var i=this;return this._read(function(e){var t=i._ctx,n=t.table.core;if(yt(t,!0))return n.count({trans:e,query:{index:bt(t,n.schema),range:t.range}}).then(function(e){return Math.min(e,t.limit)});var r=0;return wt(t,function(){return++r,!1},e,n).then(function(){return r})}).then(e)},Pt.prototype.sortBy=function(e,t){var n=e.split(\".\").reverse(),r=n[0],i=n.length-1;function o(e,t){return t?o(e[n[t]],t-1):e[r]}var a=\"next\"===this._ctx.dir?1:-1;function u(e,t){return st(o(e,i),o(t,i))*a}return this.toArray(function(e){return e.sort(u)}).then(t)},Pt.prototype.toArray=function(e){var o=this;return this._read(function(e){var t=o._ctx;if(\"next\"===t.dir&&yt(t,!0)&&0<t.limit){var n=t.valueMapper,r=bt(t,t.table.core.schema);return t.table.core.query({trans:e,limit:t.limit,values:!0,query:{index:r,range:t.range}}).then(function(e){e=e.result;return n?e.map(n):e})}var i=[];return wt(t,function(e){return i.push(e)},e,t.table.core).then(function(){return i})},e)},Pt.prototype.offset=function(t){var e=this._ctx;return t<=0||(e.offset+=t,yt(e)?mt(e,function(){var n=t;return function(e,t){return 0===n||(1===n?--n:t(function(){e.advance(n),n=0}),!1)}}):mt(e,function(){var e=t;return function(){return--e<0}})),this},Pt.prototype.limit=function(e){return this._ctx.limit=Math.min(this._ctx.limit,e),mt(this._ctx,function(){var r=e;return function(e,t,n){return--r<=0&&t(n),0<=r}},!0),this},Pt.prototype.until=function(r,i){return vt(this._ctx,function(e,t,n){return!r(e.value)||(t(n),i)}),this},Pt.prototype.first=function(e){return this.limit(1).toArray(function(e){return e[0]}).then(e)},Pt.prototype.last=function(e){return this.reverse().first(e)},Pt.prototype.filter=function(t){var e;return vt(this._ctx,function(e){return t(e.value)}),(e=this._ctx).isMatch=it(e.isMatch,t),this},Pt.prototype.and=function(e){return this.filter(e)},Pt.prototype.or=function(e){return new this.db.WhereClause(this._ctx.table,e,this)},Pt.prototype.reverse=function(){return this._ctx.dir=\"prev\"===this._ctx.dir?\"next\":\"prev\",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},Pt.prototype.desc=function(){return this.reverse()},Pt.prototype.eachKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.key,t)})},Pt.prototype.eachUniqueKey=function(e){return this._ctx.unique=\"unique\",this.eachKey(e)},Pt.prototype.eachPrimaryKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.primaryKey,t)})},Pt.prototype.keys=function(e){var t=this._ctx;t.keysOnly=!t.isMatch;var n=[];return this.each(function(e,t){n.push(t.key)}).then(function(){return n}).then(e)},Pt.prototype.primaryKeys=function(e){var n=this._ctx;if(\"next\"===n.dir&&yt(n,!0)&&0<n.limit)return this._read(function(e){var t=bt(n,n.table.core.schema);return n.table.core.query({trans:e,values:!1,limit:n.limit,query:{index:t,range:n.range}})}).then(function(e){return e.result}).then(e);n.keysOnly=!n.isMatch;var r=[];return this.each(function(e,t){r.push(t.primaryKey)}).then(function(){return r}).then(e)},Pt.prototype.uniqueKeys=function(e){return this._ctx.unique=\"unique\",this.keys(e)},Pt.prototype.firstKey=function(e){return this.limit(1).keys(function(e){return e[0]}).then(e)},Pt.prototype.lastKey=function(e){return this.reverse().firstKey(e)},Pt.prototype.distinct=function(){var e=this._ctx,e=e.index&&e.table.schema.idxByName[e.index];if(!e||!e.multi)return this;var n={};return vt(this._ctx,function(e){var t=e.primaryKey.toString(),e=m(n,t);return n[t]=!0,!e}),this},Pt.prototype.modify=function(w){var n=this,r=this._ctx;return this._write(function(d){var a,u,p;p=\"function\"==typeof w?w:(a=x(w),u=a.length,function(e){for(var t=!1,n=0;n<u;++n){var r=a[n],i=w[r],o=O(e,r);i instanceof xt?(P(e,r,i.execute(o)),t=!0):o!==i&&(P(e,r,i),t=!0)}return t});var y=r.table.core,e=y.schema.primaryKey,v=e.outbound,m=e.extractKey,b=200,e=n.db._options.modifyChunkSize;e&&(b=\"object\"==typeof e?e[y.name]||e[\"*\"]||200:e);function g(e,t){var n=t.failures,t=t.numFailures;c+=e-t;for(var r=0,i=x(n);r<i.length;r++){var o=i[r];s.push(n[o])}}var s=[],c=0,t=[];return n.clone().primaryKeys().then(function(l){function f(s){var c=Math.min(b,l.length-s);return y.getMany({trans:d,keys:l.slice(s,s+c),cache:\"immutable\"}).then(function(e){for(var n=[],t=[],r=v?[]:null,i=[],o=0;o<c;++o){var a=e[o],u={value:S(a),primKey:l[s+o]};!1!==p.call(u,u.value,u)&&(null==u.value?i.push(l[s+o]):v||0===st(m(a),m(u.value))?(t.push(u.value),v&&r.push(l[s+o])):(i.push(l[s+o]),n.push(u.value)))}return Promise.resolve(0<n.length&&y.mutate({trans:d,type:\"add\",values:n}).then(function(e){for(var t in e.failures)i.splice(parseInt(t),1);g(n.length,e)})).then(function(){return(0<t.length||h&&\"object\"==typeof w)&&y.mutate({trans:d,type:\"put\",keys:r,values:t,criteria:h,changeSpec:\"function\"!=typeof w&&w,isAdditionalChunk:0<s}).then(function(e){return g(t.length,e)})}).then(function(){return(0<i.length||h&&w===Kt)&&y.mutate({trans:d,type:\"delete\",keys:i,criteria:h,isAdditionalChunk:0<s}).then(function(e){return g(i.length,e)})}).then(function(){return l.length>s+c&&f(s+b)})})}var h=yt(r)&&r.limit===1/0&&(\"function\"!=typeof w||w===Kt)&&{index:r.index,range:r.range};return f(0).then(function(){if(0<s.length)throw new U(\"Error modifying one or more objects\",s,c,t);return l.length})})})},Pt.prototype.delete=function(){var i=this._ctx,n=i.range;return yt(i)&&(i.isPrimKey||3===n.type)?this._write(function(e){var t=i.table.core.schema.primaryKey,r=n;return i.table.core.count({trans:e,query:{index:t,range:r}}).then(function(n){return i.table.core.mutate({trans:e,type:\"deleteRange\",range:r}).then(function(e){var t=e.failures;e.lastResult,e.results;e=e.numFailures;if(e)throw new U(\"Could not delete some values\",Object.keys(t).map(function(e){return t[e]}),n-e);return n-e})})}):this.modify(Kt)},Pt);function Pt(){}var Kt=function(e,t){return t.value=null};function Et(e,t){return e<t?-1:e===t?0:1}function St(e,t){return t<e?-1:e===t?0:1}function jt(e,t,n){e=e instanceof Dt?new e.Collection(e):e;return e._ctx.error=new(n||TypeError)(t),e}function At(e){return new e.Collection(e,function(){return qt(\"\")}).limit(0)}function Ct(e,s,n,r){var i,c,l,f,h,d,p,y=n.length;if(!n.every(function(e){return\"string\"==typeof e}))return jt(e,Ze);function t(e){i=\"next\"===e?function(e){return e.toUpperCase()}:function(e){return e.toLowerCase()},c=\"next\"===e?function(e){return e.toLowerCase()}:function(e){return e.toUpperCase()},l=\"next\"===e?Et:St;var t=n.map(function(e){return{lower:c(e),upper:i(e)}}).sort(function(e,t){return l(e.lower,t.lower)});f=t.map(function(e){return e.upper}),h=t.map(function(e){return e.lower}),p=\"next\"===(d=e)?\"\":r}t(\"next\");e=new e.Collection(e,function(){return Tt(f[0],h[y-1]+r)});e._ondirectionchange=function(e){t(e)};var v=0;return e._addAlgorithm(function(e,t,n){var r=e.key;if(\"string\"!=typeof r)return!1;var i=c(r);if(s(i,h,v))return!0;for(var o=null,a=v;a<y;++a){var u=function(e,t,n,r,i,o){for(var a=Math.min(e.length,r.length),u=-1,s=0;s<a;++s){var c=t[s];if(c!==r[s])return i(e[s],n[s])<0?e.substr(0,s)+n[s]+n.substr(s+1):i(e[s],r[s])<0?e.substr(0,s)+r[s]+n.substr(s+1):0<=u?e.substr(0,u)+t[u]+n.substr(u+1):null;i(e[s],c)<0&&(u=s)}return a<r.length&&\"next\"===o?e+n.substr(e.length):a<e.length&&\"prev\"===o?e.substr(0,n.length):u<0?null:e.substr(0,u)+r[u]+n.substr(u+1)}(r,i,f[a],h[a],l,d);null===u&&null===o?v=a+1:(null===o||0<l(o,u))&&(o=u)}return t(null!==o?function(){e.continue(o+p)}:n),!1}),e}function Tt(e,t,n,r){return{type:2,lower:e,upper:t,lowerOpen:n,upperOpen:r}}function qt(e){return{type:1,lower:e,upper:e}}var Dt=(Object.defineProperty(It.prototype,\"Collection\",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),It.prototype.between=function(e,t,n,r){n=!1!==n,r=!0===r;try{return 0<this._cmp(e,t)||0===this._cmp(e,t)&&(n||r)&&(!n||!r)?At(this):new this.Collection(this,function(){return Tt(e,t,!n,!r)})}catch(e){return jt(this,Je)}},It.prototype.equals=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return qt(e)})},It.prototype.above=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!0)})},It.prototype.aboveOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!1)})},It.prototype.below=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e,!1,!0)})},It.prototype.belowOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e)})},It.prototype.startsWith=function(e){return\"string\"!=typeof e?jt(this,Ze):this.between(e,e+He,!0,!0)},It.prototype.startsWithIgnoreCase=function(e){return\"\"===e?this.startsWith(e):Ct(this,function(e,t){return 0===e.indexOf(t[0])},[e],He)},It.prototype.equalsIgnoreCase=function(e){return Ct(this,function(e,t){return e===t[0]},[e],\"\")},It.prototype.anyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(e,t){return-1!==t.indexOf(e)},e,\"\")},It.prototype.startsWithAnyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(t,e){return e.some(function(e){return 0===t.indexOf(e)})},e,He)},It.prototype.anyOf=function(){var t=this,i=I.apply(D,arguments),o=this._cmp;try{i.sort(o)}catch(e){return jt(this,Je)}if(0===i.length)return At(this);var e=new this.Collection(this,function(){return Tt(i[0],i[i.length-1])});e._ondirectionchange=function(e){o=\"next\"===e?t._ascending:t._descending,i.sort(o)};var a=0;return e._addAlgorithm(function(e,t,n){for(var r=e.key;0<o(r,i[a]);)if(++a===i.length)return t(n),!1;return 0===o(r,i[a])||(t(function(){e.continue(i[a])}),!1)}),e},It.prototype.notEqual=function(e){return this.inAnyRange([[-1/0,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},It.prototype.noneOf=function(){var e=I.apply(D,arguments);if(0===e.length)return new this.Collection(this);try{e.sort(this._ascending)}catch(e){return jt(this,Je)}var t=e.reduce(function(e,t){return e?e.concat([[e[e.length-1][1],t]]):[[-1/0,t]]},null);return t.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(t,{includeLowers:!1,includeUppers:!1})},It.prototype.inAnyRange=function(e,t){var o=this,a=this._cmp,u=this._ascending,n=this._descending,s=this._min,c=this._max;if(0===e.length)return At(this);if(!e.every(function(e){return void 0!==e[0]&&void 0!==e[1]&&u(e[0],e[1])<=0}))return jt(this,\"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\",Y.InvalidArgument);var r=!t||!1!==t.includeLowers,i=t&&!0===t.includeUppers;var l,f=u;function h(e,t){return f(e[0],t[0])}try{(l=e.reduce(function(e,t){for(var n=0,r=e.length;n<r;++n){var i=e[n];if(a(t[0],i[1])<0&&0<a(t[1],i[0])){i[0]=s(i[0],t[0]),i[1]=c(i[1],t[1]);break}}return n===r&&e.push(t),e},[])).sort(h)}catch(e){return jt(this,Je)}var d=0,p=i?function(e){return 0<u(e,l[d][1])}:function(e){return 0<=u(e,l[d][1])},y=r?function(e){return 0<n(e,l[d][0])}:function(e){return 0<=n(e,l[d][0])};var v=p,e=new this.Collection(this,function(){return Tt(l[0][0],l[l.length-1][1],!r,!i)});return e._ondirectionchange=function(e){f=\"next\"===e?(v=p,u):(v=y,n),l.sort(h)},e._addAlgorithm(function(e,t,n){for(var r,i=e.key;v(i);)if(++d===l.length)return t(n),!1;return!p(r=i)&&!y(r)||(0===o._cmp(i,l[d][1])||0===o._cmp(i,l[d][0])||t(function(){f===u?e.continue(l[d][0]):e.continue(l[d][1])}),!1)}),e},It.prototype.startsWithAnyOf=function(){var e=I.apply(D,arguments);return e.every(function(e){return\"string\"==typeof e})?0===e.length?At(this):this.inAnyRange(e.map(function(e){return[e,e+He]})):jt(this,\"startsWithAnyOf() only works with strings\")},It);function It(){}function Bt(t){return qe(function(e){return Rt(e),t(e.target.error),!1})}function Rt(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()}var Ft=\"storagemutated\",Mt=\"x-storagemutated-1\",Nt=dt(null,Ft),Lt=(Ut.prototype._lock=function(){return y(!me.global),++this._reculock,1!==this._reculock||me.global||(me.lockOwnerFor=this),this},Ut.prototype._unlock=function(){if(y(!me.global),0==--this._reculock)for(me.global||(me.lockOwnerFor=null);0<this._blockedFuncs.length&&!this._locked();){var e=this._blockedFuncs.shift();try{$e(e[1],e[0])}catch(e){}}return this},Ut.prototype._locked=function(){return this._reculock&&me.lockOwnerFor!==this},Ut.prototype.create=function(t){var n=this;if(!this.mode)return this;var e=this.db.idbdb,r=this.db._state.dbOpenError;if(y(!this.idbtrans),!t&&!e)switch(r&&r.name){case\"DatabaseClosedError\":throw new Y.DatabaseClosed(r);case\"MissingAPIError\":throw new Y.MissingAPI(r.message,r);default:throw new Y.OpenFailed(r)}if(!this.active)throw new Y.TransactionInactive;return y(null===this._completion._state),(t=this.idbtrans=t||(this.db.core||e).transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})).onerror=qe(function(e){Rt(e),n._reject(t.error)}),t.onabort=qe(function(e){Rt(e),n.active&&n._reject(new Y.Abort(t.error)),n.active=!1,n.on(\"abort\").fire(e)}),t.oncomplete=qe(function(){n.active=!1,n._resolve(),\"mutatedParts\"in t&&Nt.storagemutated.fire(t.mutatedParts)}),this},Ut.prototype._promise=function(n,r,i){var o=this;if(\"readwrite\"===n&&\"readwrite\"!==this.mode)return Xe(new Y.ReadOnly(\"Transaction is readonly\"));if(!this.active)return Xe(new Y.TransactionInactive);if(this._locked())return new _e(function(e,t){o._blockedFuncs.push([function(){o._promise(n,r,i).then(e,t)},me])});if(i)return Ne(function(){var e=new _e(function(e,t){o._lock();var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e.finally(function(){return o._unlock()}),e._lib=!0,e});var e=new _e(function(e,t){var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e._lib=!0,e},Ut.prototype._root=function(){return this.parent?this.parent._root():this},Ut.prototype.waitFor=function(e){var t,r=this._root(),i=_e.resolve(e);r._waitingFor?r._waitingFor=r._waitingFor.then(function(){return i}):(r._waitingFor=i,r._waitingQueue=[],t=r.idbtrans.objectStore(r.storeNames[0]),function e(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(t.get(-1/0).onsuccess=e)}());var o=r._waitingFor;return new _e(function(t,n){i.then(function(e){return r._waitingQueue.push(qe(t.bind(null,e)))},function(e){return r._waitingQueue.push(qe(n.bind(null,e)))}).finally(function(){r._waitingFor===o&&(r._waitingFor=null)})})},Ut.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new Y.Abort))},Ut.prototype.table=function(e){var t=this._memoizedTables||(this._memoizedTables={});if(m(t,e))return t[e];var n=this.schema[e];if(!n)throw new Y.NotFound(\"Table \"+e+\" not part of transaction\");n=new this.db.Table(e,n,this);return n.core=this.db.core.table(e),t[e]=n},Ut);function Ut(){}function Vt(e,t,n,r,i,o,a){return{name:e,keyPath:t,unique:n,multi:r,auto:i,compound:o,src:(n&&!a?\"&\":\"\")+(r?\"*\":\"\")+(i?\"++\":\"\")+zt(t)}}function zt(e){return\"string\"==typeof e?e:e?\"[\"+[].join.call(e,\"+\")+\"]\":\"\"}function Wt(e,t,n){return{name:e,primKey:t,indexes:n,mappedClass:null,idxByName:(r=function(e){return[e.name,e]},n.reduce(function(e,t,n){n=r(t,n);return n&&(e[n[0]]=n[1]),e},{}))};var r}var Yt=function(e){try{return e.only([[]]),Yt=function(){return[[]]},[[]]}catch(e){return Yt=function(){return He},He}};function $t(t){return null==t?function(){}:\"string\"==typeof t?1===(n=t).split(\".\").length?function(e){return e[n]}:function(e){return O(e,n)}:function(e){return O(e,t)};var n}function Qt(e){return[].slice.call(e)}var Gt=0;function Xt(e){return null==e?\":id\":\"string\"==typeof e?e:\"[\".concat(e.join(\"+\"),\"]\")}function Ht(e,i,t){function _(e){if(3===e.type)return null;if(4===e.type)throw new Error(\"Cannot convert never type to IDBKeyRange\");var t=e.lower,n=e.upper,r=e.lowerOpen,e=e.upperOpen;return void 0===t?void 0===n?null:i.upperBound(n,!!e):void 0===n?i.lowerBound(t,!!r):i.bound(t,n,!!r,!!e)}function n(e){var h,w=e.name;return{name:w,schema:e,mutate:function(e){var y=e.trans,v=e.type,m=e.keys,b=e.values,g=e.range;return new Promise(function(t,e){t=qe(t);var n=y.objectStore(w),r=null==n.keyPath,i=\"put\"===v||\"add\"===v;if(!i&&\"delete\"!==v&&\"deleteRange\"!==v)throw new Error(\"Invalid operation type: \"+v);var o,a=(m||b||{length:1}).length;if(m&&b&&m.length!==b.length)throw new Error(\"Given keys array must have same length as given values array.\");if(0===a)return t({numFailures:0,failures:{},results:[],lastResult:void 0});function u(e){++l,Rt(e)}var s=[],c=[],l=0;if(\"deleteRange\"===v){if(4===g.type)return t({numFailures:l,failures:c,results:[],lastResult:void 0});3===g.type?s.push(o=n.clear()):s.push(o=n.delete(_(g)))}else{var r=i?r?[b,m]:[b,null]:[m,null],f=r[0],h=r[1];if(i)for(var d=0;d<a;++d)s.push(o=h&&void 0!==h[d]?n[v](f[d],h[d]):n[v](f[d])),o.onerror=u;else for(d=0;d<a;++d)s.push(o=n[v](f[d])),o.onerror=u}function p(e){e=e.target.result,s.forEach(function(e,t){return null!=e.error&&(c[t]=e.error)}),t({numFailures:l,failures:c,results:\"delete\"===v?m:s.map(function(e){return e.result}),lastResult:e})}o.onerror=function(e){u(e),p(e)},o.onsuccess=p})},getMany:function(e){var f=e.trans,h=e.keys;return new Promise(function(t,e){t=qe(t);for(var n,r=f.objectStore(w),i=h.length,o=new Array(i),a=0,u=0,s=function(e){e=e.target;o[e._pos]=e.result,++u===a&&t(o)},c=Bt(e),l=0;l<i;++l)null!=h[l]&&((n=r.get(h[l]))._pos=l,n.onsuccess=s,n.onerror=c,++a);0===a&&t(o)})},get:function(e){var r=e.trans,i=e.key;return new Promise(function(t,e){t=qe(t);var n=r.objectStore(w).get(i);n.onsuccess=function(e){return t(e.target.result)},n.onerror=Bt(e)})},query:(h=s,function(f){return new Promise(function(n,e){n=qe(n);var r,i,o,t=f.trans,a=f.values,u=f.limit,s=f.query,c=u===1/0?void 0:u,l=s.index,s=s.range,t=t.objectStore(w),l=l.isPrimaryKey?t:t.index(l.name),s=_(s);if(0===u)return n({result:[]});h?((c=a?l.getAll(s,c):l.getAllKeys(s,c)).onsuccess=function(e){return n({result:e.target.result})},c.onerror=Bt(e)):(r=0,i=!a&&\"openKeyCursor\"in l?l.openKeyCursor(s):l.openCursor(s),o=[],i.onsuccess=function(e){var t=i.result;return t?(o.push(a?t.value:t.primaryKey),++r===u?n({result:o}):void t.continue()):n({result:o})},i.onerror=Bt(e))})}),openCursor:function(e){var c=e.trans,o=e.values,a=e.query,u=e.reverse,l=e.unique;return new Promise(function(t,n){t=qe(t);var e=a.index,r=a.range,i=c.objectStore(w),i=e.isPrimaryKey?i:i.index(e.name),e=u?l?\"prevunique\":\"prev\":l?\"nextunique\":\"next\",s=!o&&\"openKeyCursor\"in i?i.openKeyCursor(_(r),e):i.openCursor(_(r),e);s.onerror=Bt(n),s.onsuccess=qe(function(e){var r,i,o,a,u=s.result;u?(u.___id=++Gt,u.done=!1,r=u.continue.bind(u),i=(i=u.continuePrimaryKey)&&i.bind(u),o=u.advance.bind(u),a=function(){throw new Error(\"Cursor not stopped\")},u.trans=c,u.stop=u.continue=u.continuePrimaryKey=u.advance=function(){throw new Error(\"Cursor not started\")},u.fail=qe(n),u.next=function(){var e=this,t=1;return this.start(function(){return t--?e.continue():e.stop()}).then(function(){return e})},u.start=function(e){function t(){if(s.result)try{e()}catch(e){u.fail(e)}else u.done=!0,u.start=function(){throw new Error(\"Cursor behind last entry\")},u.stop()}var n=new Promise(function(t,e){t=qe(t),s.onerror=Bt(e),u.fail=e,u.stop=function(e){u.stop=u.continue=u.continuePrimaryKey=u.advance=a,t(e)}});return s.onsuccess=qe(function(e){s.onsuccess=t,t()}),u.continue=r,u.continuePrimaryKey=i,u.advance=o,t(),n},t(u)):t(null)},n)})},count:function(e){var t=e.query,i=e.trans,o=t.index,a=t.range;return new Promise(function(t,e){var n=i.objectStore(w),r=o.isPrimaryKey?n:n.index(o.name),n=_(a),r=n?r.count(n):r.count();r.onsuccess=qe(function(e){return t(e.target.result)}),r.onerror=Bt(e)})}}}var r,o,a,u=(o=t,a=Qt((r=e).objectStoreNames),{schema:{name:r.name,tables:a.map(function(e){return o.objectStore(e)}).map(function(t){var e=t.keyPath,n=t.autoIncrement,r=k(e),i={},n={name:t.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:null==e,compound:r,keyPath:e,autoIncrement:n,unique:!0,extractKey:$t(e)},indexes:Qt(t.indexNames).map(function(e){return t.index(e)}).map(function(e){var t=e.name,n=e.unique,r=e.multiEntry,e=e.keyPath,r={name:t,compound:k(e),keyPath:e,unique:n,multiEntry:r,extractKey:$t(e)};return i[Xt(e)]=r}),getIndexByKeyPath:function(e){return i[Xt(e)]}};return i[\":id\"]=n.primaryKey,null!=e&&(i[Xt(e)]=n.primaryKey),n})},hasGetAll:0<a.length&&\"getAll\"in o.objectStore(a[0])&&!(\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604)}),t=u.schema,s=u.hasGetAll,u=t.tables.map(n),c={};return u.forEach(function(e){return c[e.name]=e}),{stack:\"dbcore\",transaction:e.transaction.bind(e),table:function(e){if(!c[e])throw new Error(\"Table '\".concat(e,\"' not found\"));return c[e]},MIN_KEY:-1/0,MAX_KEY:Yt(i),schema:t}}function Jt(e,t,n,r){var i=n.IDBKeyRange;return n.indexedDB,{dbcore:(r=Ht(t,i,r),e.dbcore.reduce(function(e,t){t=t.create;return _(_({},e),t(e))},r))}}function Zt(n,e){var t=e.db,e=Jt(n._middlewares,t,n._deps,e);n.core=e.dbcore,n.tables.forEach(function(e){var t=e.name;n.core.schema.tables.some(function(e){return e.name===t})&&(e.core=n.core.table(t),n[t]instanceof n.Table&&(n[t].core=e.core))})}function en(i,e,t,o){t.forEach(function(n){var r=o[n];e.forEach(function(e){var t=function e(t,n){return h(t,n)||(t=c(t))&&e(t,n)}(e,n);(!t||\"value\"in t&&void 0===t.value)&&(e===i.Transaction.prototype||e instanceof i.Transaction?l(e,n,{get:function(){return this.table(n)},set:function(e){u(this,n,{value:e,writable:!0,configurable:!0,enumerable:!0})}}):e[n]=new i.Table(n,r))})})}function tn(n,e){e.forEach(function(e){for(var t in e)e[t]instanceof n.Table&&delete e[t]})}function nn(e,t){return e._cfg.version-t._cfg.version}function rn(n,r,i,e){var o=n._dbSchema;i.objectStoreNames.contains(\"$meta\")&&!o.$meta&&(o.$meta=Wt(\"$meta\",hn(\"\")[0],[]),n._storeNames.push(\"$meta\"));var a=n._createTransaction(\"readwrite\",n._storeNames,o);a.create(i),a._completion.catch(e);var u=a._reject.bind(a),s=me.transless||me;Ne(function(){return me.trans=a,me.transless=s,0!==r?(Zt(n,i),t=r,((e=a).storeNames.includes(\"$meta\")?e.table(\"$meta\").get(\"version\").then(function(e){return null!=e?e:t}):_e.resolve(t)).then(function(e){return c=e,l=a,f=i,t=[],e=(s=n)._versions,h=s._dbSchema=ln(0,s.idbdb,f),0!==(e=e.filter(function(e){return e._cfg.version>=c})).length?(e.forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;fn(s,t,f),fn(s,e,f),h=s._dbSchema=e;var n=an(t,e);n.add.forEach(function(e){un(f,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new Y.Upgrade(\"Not yet support for changing primary key\");var t=f.objectStore(e.name);e.add.forEach(function(e){return cn(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),cn(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>c){Zt(s,f),l._memoizedTables={};var i=g(e);n.del.forEach(function(e){i[e]=t[e]}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],x(i),i),l.schema=i;var o,a=B(r);a&&Le();n=_e.follow(function(){var e;(o=r(l))&&a&&(e=Ue.bind(null,null),o.then(e,e))});return o&&\"function\"==typeof o.then?_e.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r=u._cfg.dbschema;t=r,n=e,[].slice.call(n.db.objectStoreNames).forEach(function(e){return null==t[e]&&n.db.deleteObjectStore(e)}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],s._storeNames,s._dbSchema),l.schema=s._dbSchema}),t.push(function(e){s.idbdb.objectStoreNames.contains(\"$meta\")&&(Math.ceil(s.idbdb.version/10)===u._cfg.version?(s.idbdb.deleteObjectStore(\"$meta\"),delete s._dbSchema.$meta,s._storeNames=s._storeNames.filter(function(e){return\"$meta\"!==e})):e.objectStore(\"$meta\").put(u._cfg.version,\"version\"))})}),function e(){return t.length?_e.resolve(t.shift()(l.idbtrans)).then(e):_e.resolve()}().then(function(){sn(h,f)})):_e.resolve();var s,c,l,f,t,h}).catch(u)):(x(o).forEach(function(e){un(i,e,o[e].primKey,o[e].indexes)}),Zt(n,i),void _e.follow(function(){return n.on.populate.fire(a)}).catch(u));var e,t})}function on(e,r){sn(e._dbSchema,r),r.db.version%10!=0||r.objectStoreNames.contains(\"$meta\")||r.db.createObjectStore(\"$meta\").add(Math.ceil(r.db.version/10-1),\"version\");var t=ln(0,e.idbdb,r);fn(e,e._dbSchema,r);for(var n=0,i=an(t,e._dbSchema).change;n<i.length;n++){var o=function(t){if(t.change.length||t.recreate)return console.warn(\"Unable to patch indexes of table \".concat(t.name,\" because it has changes on the type of index or primary key.\")),{value:void 0};var n=r.objectStore(t.name);t.add.forEach(function(e){ie&&console.debug(\"Dexie upgrade patch: Creating missing index \".concat(t.name,\".\").concat(e.src)),cn(n,e)})}(i[n]);if(\"object\"==typeof o)return o.value}}function an(e,t){var n,r={del:[],add:[],change:[]};for(n in e)t[n]||r.del.push(n);for(n in t){var i=e[n],o=t[n];if(i){var a={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(\"\"+(i.primKey.keyPath||\"\")!=\"\"+(o.primKey.keyPath||\"\")||i.primKey.auto!==o.primKey.auto)a.recreate=!0,r.change.push(a);else{var u=i.idxByName,s=o.idxByName,c=void 0;for(c in u)s[c]||a.del.push(c);for(c in s){var l=u[c],f=s[c];l?l.src!==f.src&&a.change.push(f):a.add.push(f)}(0<a.del.length||0<a.add.length||0<a.change.length)&&r.change.push(a)}}else r.add.push([n,o])}return r}function un(e,t,n,r){var i=e.db.createObjectStore(t,n.keyPath?{keyPath:n.keyPath,autoIncrement:n.auto}:{autoIncrement:n.auto});return r.forEach(function(e){return cn(i,e)}),i}function sn(t,n){x(t).forEach(function(e){n.db.objectStoreNames.contains(e)||(ie&&console.debug(\"Dexie: Creating missing table\",e),un(n,e,t[e].primKey,t[e].indexes))})}function cn(e,t){e.createIndex(t.name,t.keyPath,{unique:t.unique,multiEntry:t.multi})}function ln(e,t,u){var s={};return b(t.objectStoreNames,0).forEach(function(e){for(var t=u.objectStore(e),n=Vt(zt(a=t.keyPath),a||\"\",!0,!1,!!t.autoIncrement,a&&\"string\"!=typeof a,!0),r=[],i=0;i<t.indexNames.length;++i){var o=t.index(t.indexNames[i]),a=o.keyPath,o=Vt(o.name,a,!!o.unique,!!o.multiEntry,!1,a&&\"string\"!=typeof a,!1);r.push(o)}s[e]=Wt(e,n,r)}),s}function fn(e,t,n){for(var r=n.db.objectStoreNames,i=0;i<r.length;++i){var o=r[i],a=n.objectStore(o);e._hasGetAll=\"getAll\"in a;for(var u=0;u<a.indexNames.length;++u){var s=a.indexNames[u],c=a.index(s).keyPath,l=\"string\"==typeof c?c:\"[\"+b(c).join(\"+\")+\"]\";!t[o]||(c=t[o].idxByName[l])&&(c.name=s,delete t[o].idxByName[l],t[o].idxByName[s]=c)}}\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&f.WorkerGlobalScope&&f instanceof f.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604&&(e._hasGetAll=!1)}function hn(e){return e.split(\",\").map(function(e,t){var n=(e=e.trim()).replace(/([&*]|\\+\\+)/g,\"\"),r=/^\\[/.test(n)?n.match(/^\\[(.*)\\]$/)[1].split(\"+\"):n;return Vt(n,r||null,/\\&/.test(e),/\\*/.test(e),/\\+\\+/.test(e),k(r),0===t)})}var dn=(pn.prototype._parseStoresSpec=function(r,i){x(r).forEach(function(e){if(null!==r[e]){var t=hn(r[e]),n=t.shift();if(n.unique=!0,n.multi)throw new Y.Schema(\"Primary key cannot be multi-valued\");t.forEach(function(e){if(e.auto)throw new Y.Schema(\"Only primary key can be marked as autoIncrement (++)\");if(!e.keyPath)throw new Y.Schema(\"Index must have a name and cannot be an empty string\")}),i[e]=Wt(e,n,t)}})},pn.prototype.stores=function(e){var t=this.db;this._cfg.storesSource=this._cfg.storesSource?a(this._cfg.storesSource,e):e;var e=t._versions,n={},r={};return e.forEach(function(e){a(n,e._cfg.storesSource),r=e._cfg.dbschema={},e._parseStoresSpec(n,r)}),t._dbSchema=r,tn(t,[t._allTables,t,t.Transaction.prototype]),en(t,[t._allTables,t,t.Transaction.prototype,this._cfg.tables],x(r),r),t._storeNames=x(r),this},pn.prototype.upgrade=function(e){return this._cfg.contentUpgrade=re(this._cfg.contentUpgrade||G,e),this},pn);function pn(){}function yn(e,t){var n=e._dbNamesDB;return n||(n=e._dbNamesDB=new er(tt,{addons:[],indexedDB:e,IDBKeyRange:t})).version(1).stores({dbnames:\"name\"}),n.table(\"dbnames\")}function vn(e){return e&&\"function\"==typeof e.databases}function mn(e){return Ne(function(){return me.letThrough=!0,e()})}function bn(e){return!(\"from\"in e)}var gn=function(e,t){if(!this){var n=new gn;return e&&\"d\"in e&&a(n,e),n}a(this,arguments.length?{d:1,from:e,to:1<arguments.length?t:e}:{d:0})};function wn(e,t,n){var r=st(t,n);if(!isNaN(r)){if(0<r)throw RangeError();if(bn(e))return a(e,{from:t,to:n,d:1});var i=e.l,r=e.r;if(st(n,e.from)<0)return i?wn(i,t,n):e.l={from:t,to:n,d:1,l:null,r:null},On(e);if(0<st(t,e.to))return r?wn(r,t,n):e.r={from:t,to:n,d:1,l:null,r:null},On(e);st(t,e.from)<0&&(e.from=t,e.l=null,e.d=r?r.d+1:1),0<st(n,e.to)&&(e.to=n,e.r=null,e.d=e.l?e.l.d+1:1);n=!e.r;i&&!e.l&&_n(e,i),r&&n&&_n(e,r)}}function _n(e,t){bn(t)||function e(t,n){var r=n.from,i=n.to,o=n.l,n=n.r;wn(t,r,i),o&&e(t,o),n&&e(t,n)}(e,t)}function xn(e,t){var n=kn(t),r=n.next();if(r.done)return!1;for(var i=r.value,o=kn(e),a=o.next(i.from),u=a.value;!r.done&&!a.done;){if(st(u.from,i.to)<=0&&0<=st(u.to,i.from))return!0;st(i.from,u.from)<0?i=(r=n.next(u.from)).value:u=(a=o.next(i.from)).value}return!1}function kn(e){var n=bn(e)?null:{s:0,n:e};return{next:function(e){for(var t=0<arguments.length;n;)switch(n.s){case 0:if(n.s=1,t)for(;n.n.l&&st(e,n.n.from)<0;)n={up:n,n:n.n.l,s:1};else for(;n.n.l;)n={up:n,n:n.n.l,s:1};case 1:if(n.s=2,!t||st(e,n.n.to)<=0)return{value:n.n,done:!1};case 2:if(n.n.r){n.s=3,n={up:n,n:n.n.r,s:0};continue}case 3:n=n.up}return{done:!0}}}}function On(e){var t,n,r=((null===(t=e.r)||void 0===t?void 0:t.d)||0)-((null===(n=e.l)||void 0===n?void 0:n.d)||0),i=1<r?\"r\":r<-1?\"l\":\"\";i&&(t=\"r\"==i?\"l\":\"r\",n=_({},e),r=e[i],e.from=r.from,e.to=r.to,e[i]=r[i],n[i]=r[t],(e[t]=n).d=Pn(n)),e.d=Pn(e)}function Pn(e){var t=e.r,e=e.l;return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}function Kn(t,n){return x(n).forEach(function(e){t[e]?_n(t[e],n[e]):t[e]=function e(t){var n,r,i={};for(n in t)m(t,n)&&(r=t[n],i[n]=!r||\"object\"!=typeof r||K.has(r.constructor)?r:e(r));return i}(n[e])}),t}function En(t,n){return t.all||n.all||Object.keys(t).some(function(e){return n[e]&&xn(n[e],t[e])})}r(gn.prototype,((F={add:function(e){return _n(this,e),this},addKey:function(e){return wn(this,e,e),this},addKeys:function(e){var t=this;return e.forEach(function(e){return wn(t,e,e)}),this},hasKey:function(e){var t=kn(this).next(e).value;return t&&st(t.from,e)<=0&&0<=st(t.to,e)}})[C]=function(){return kn(this)},F));var Sn={},jn={},An=!1;function Cn(e){Kn(jn,e),An||(An=!0,setTimeout(function(){An=!1,Tn(jn,!(jn={}))},0))}function Tn(e,t){void 0===t&&(t=!1);var n=new Set;if(e.all)for(var r=0,i=Object.values(Sn);r<i.length;r++)qn(a=i[r],e,n,t);else for(var o in e){var a,u=/^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(o);u&&(o=u[1],u=u[2],(a=Sn[\"idb://\".concat(o,\"/\").concat(u)])&&qn(a,e,n,t))}n.forEach(function(e){return e()})}function qn(e,t,n,r){for(var i=[],o=0,a=Object.entries(e.queries.query);o<a.length;o++){for(var u=a[o],s=u[0],c=[],l=0,f=u[1];l<f.length;l++){var h=f[l];En(t,h.obsSet)?h.subscribers.forEach(function(e){return n.add(e)}):r&&c.push(h)}r&&i.push([s,c])}if(r)for(var d=0,p=i;d<p.length;d++){var y=p[d],s=y[0],c=y[1];e.queries.query[s]=c}}function Dn(f){var h=f._state,r=f._deps.indexedDB;if(h.isBeingOpened||f.idbdb)return h.dbReadyPromise.then(function(){return h.dbOpenError?Xe(h.dbOpenError):f});h.isBeingOpened=!0,h.dbOpenError=null,h.openComplete=!1;var t=h.openCanceller,d=Math.round(10*f.verno),p=!1;function e(){if(h.openCanceller!==t)throw new Y.DatabaseClosed(\"db.open() was cancelled\")}function y(){return new _e(function(s,n){if(e(),!r)throw new Y.MissingAPI;var c=f.name,l=h.autoSchema||!d?r.open(c):r.open(c,d);if(!l)throw new Y.MissingAPI;l.onerror=Bt(n),l.onblocked=qe(f._fireOnBlocked),l.onupgradeneeded=qe(function(e){var t;v=l.transaction,h.autoSchema&&!f._options.allowEmptyDB?(l.onerror=Rt,v.abort(),l.result.close(),(t=r.deleteDatabase(c)).onsuccess=t.onerror=qe(function(){n(new Y.NoSuchDatabase(\"Database \".concat(c,\" doesnt exist\")))})):(v.onerror=Bt(n),e=e.oldVersion>Math.pow(2,62)?0:e.oldVersion,m=e<1,f.idbdb=l.result,p&&on(f,v),rn(f,e/10,v,n))},n),l.onsuccess=qe(function(){v=null;var e,t,n,r,i,o=f.idbdb=l.result,a=b(o.objectStoreNames);if(0<a.length)try{var u=o.transaction(1===(r=a).length?r[0]:r,\"readonly\");if(h.autoSchema)t=o,n=u,(e=f).verno=t.version/10,n=e._dbSchema=ln(0,t,n),e._storeNames=b(t.objectStoreNames,0),en(e,[e._allTables],x(n),n);else if(fn(f,f._dbSchema,u),((i=an(ln(0,(i=f).idbdb,u),i._dbSchema)).add.length||i.change.some(function(e){return e.add.length||e.change.length}))&&!p)return console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\"),o.close(),d=o.version+1,p=!0,s(y());Zt(f,u)}catch(e){}et.push(f),o.onversionchange=qe(function(e){h.vcFired=!0,f.on(\"versionchange\").fire(e)}),o.onclose=qe(function(e){f.on(\"close\").fire(e)}),m&&(i=f._deps,u=c,o=i.indexedDB,i=i.IDBKeyRange,vn(o)||u===tt||yn(o,i).put({name:u}).catch(G)),s()},n)}).catch(function(e){switch(null==e?void 0:e.name){case\"UnknownError\":if(0<h.PR1398_maxLoop)return h.PR1398_maxLoop--,console.warn(\"Dexie: Workaround for Chrome UnknownError on open()\"),y();break;case\"VersionError\":if(0<d)return d=0,y()}return _e.reject(e)})}var n,i=h.dbReadyResolve,v=null,m=!1;return _e.race([t,(\"undefined\"==typeof navigator?_e.resolve():!navigator.userAgentData&&/Safari\\//.test(navigator.userAgent)&&!/Chrom(e|ium)\\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(e){function t(){return indexedDB.databases().finally(e)}n=setInterval(t,100),t()}).finally(function(){return clearInterval(n)}):Promise.resolve()).then(y)]).then(function(){return e(),h.onReadyBeingFired=[],_e.resolve(mn(function(){return f.on.ready.fire(f.vip)})).then(function e(){if(0<h.onReadyBeingFired.length){var t=h.onReadyBeingFired.reduce(re,G);return h.onReadyBeingFired=[],_e.resolve(mn(function(){return t(f.vip)})).then(e)}})}).finally(function(){h.openCanceller===t&&(h.onReadyBeingFired=null,h.isBeingOpened=!1)}).catch(function(e){h.dbOpenError=e;try{v&&v.abort()}catch(e){}return t===h.openCanceller&&f._close(),Xe(e)}).finally(function(){h.openComplete=!0,i()}).then(function(){var n;return m&&(n={},f.tables.forEach(function(t){t.schema.indexes.forEach(function(e){e.name&&(n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\").concat(e.name)]=new gn(-1/0,[[[]]]))}),n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\")]=n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/:dels\")]=new gn(-1/0,[[[]]])}),Nt(Ft).fire(n),Tn(n,!0)),f})}function In(t){function e(e){return t.next(e)}var r=n(e),i=n(function(e){return t.throw(e)});function n(n){return function(e){var t=n(e),e=t.value;return t.done?e:e&&\"function\"==typeof e.then?e.then(r,i):k(e)?Promise.all(e).then(r,i):r(e)}}return n(e)()}function Bn(e,t,n){for(var r=k(e)?e.slice():[e],i=0;i<n;++i)r.push(t);return r}var Rn={stack:\"dbcore\",name:\"VirtualIndexMiddleware\",level:1,create:function(f){return _(_({},f),{table:function(e){var a=f.table(e),t=a.schema,u={},s=[];function c(e,t,n){var r=Xt(e),i=u[r]=u[r]||[],o=null==e?0:\"string\"==typeof e?1:e.length,a=0<t,a=_(_({},n),{name:a?\"\".concat(r,\"(virtual-from:\").concat(n.name,\")\"):n.name,lowLevelIndex:n,isVirtual:a,keyTail:t,keyLength:o,extractKey:$t(e),unique:!a&&n.unique});return i.push(a),a.isPrimaryKey||s.push(a),1<o&&c(2===o?e[0]:e.slice(0,o-1),t+1,n),i.sort(function(e,t){return e.keyTail-t.keyTail}),a}e=c(t.primaryKey.keyPath,0,t.primaryKey);u[\":id\"]=[e];for(var n=0,r=t.indexes;n<r.length;n++){var i=r[n];c(i.keyPath,0,i)}function l(e){var t,n=e.query.index;return n.isVirtual?_(_({},e),{query:{index:n.lowLevelIndex,range:(t=e.query.range,n=n.keyTail,{type:1===t.type?2:t.type,lower:Bn(t.lower,t.lowerOpen?f.MAX_KEY:f.MIN_KEY,n),lowerOpen:!0,upper:Bn(t.upper,t.upperOpen?f.MIN_KEY:f.MAX_KEY,n),upperOpen:!0})}}):e}return _(_({},a),{schema:_(_({},t),{primaryKey:e,indexes:s,getIndexByKeyPath:function(e){return(e=u[Xt(e)])&&e[0]}}),count:function(e){return a.count(l(e))},query:function(e){return a.query(l(e))},openCursor:function(t){var e=t.query.index,r=e.keyTail,n=e.isVirtual,i=e.keyLength;return n?a.openCursor(l(t)).then(function(e){return e&&o(e)}):a.openCursor(t);function o(n){return Object.create(n,{continue:{value:function(e){null!=e?n.continue(Bn(e,t.reverse?f.MAX_KEY:f.MIN_KEY,r)):t.unique?n.continue(n.key.slice(0,i).concat(t.reverse?f.MIN_KEY:f.MAX_KEY,r)):n.continue()}},continuePrimaryKey:{value:function(e,t){n.continuePrimaryKey(Bn(e,f.MAX_KEY,r),t)}},primaryKey:{get:function(){return n.primaryKey}},key:{get:function(){var e=n.key;return 1===i?e[0]:e.slice(0,i)}},value:{get:function(){return n.value}}})}}})}})}};function Fn(i,o,a,u){return a=a||{},u=u||\"\",x(i).forEach(function(e){var t,n,r;m(o,e)?(t=i[e],n=o[e],\"object\"==typeof t&&\"object\"==typeof n&&t&&n?(r=A(t))!==A(n)?a[u+e]=o[e]:\"Object\"===r?Fn(t,n,a,u+e+\".\"):t!==n&&(a[u+e]=o[e]):t!==n&&(a[u+e]=o[e])):a[u+e]=void 0}),x(o).forEach(function(e){m(i,e)||(a[u+e]=o[e])}),a}function Mn(e,t){return\"delete\"===t.type?t.keys:t.keys||t.values.map(e.extractKey)}var Nn={stack:\"dbcore\",name:\"HooksMiddleware\",level:2,create:function(e){return _(_({},e),{table:function(r){var y=e.table(r),v=y.schema.primaryKey;return _(_({},y),{mutate:function(e){var t=me.trans,n=t.table(r).hook,h=n.deleting,d=n.creating,p=n.updating;switch(e.type){case\"add\":if(d.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"put\":if(d.fire===G&&p.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"delete\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"deleteRange\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return function n(r,i,o){return y.query({trans:r,values:!1,query:{index:v,range:i},limit:o}).then(function(e){var t=e.result;return a({type:\"delete\",keys:t,trans:r}).then(function(e){return 0<e.numFailures?Promise.reject(e.failures[0]):t.length<o?{failures:[],numFailures:0,lastResult:void 0}:n(r,_(_({},i),{lower:t[t.length-1],lowerOpen:!0}),o)})})}(e.trans,e.range,1e4)},!0)}return y.mutate(e);function a(c){var e,t,n,l=me.trans,f=c.keys||Mn(v,c);if(!f)throw new Error(\"Keys missing\");return\"delete\"!==(c=\"add\"===c.type||\"put\"===c.type?_(_({},c),{keys:f}):_({},c)).type&&(c.values=i([],c.values,!0)),c.keys&&(c.keys=i([],c.keys,!0)),e=y,n=f,(\"add\"===(t=c).type?Promise.resolve([]):e.getMany({trans:t.trans,keys:n,cache:\"immutable\"})).then(function(u){var s=f.map(function(e,t){var n,r,i,o=u[t],a={onerror:null,onsuccess:null};return\"delete\"===c.type?h.fire.call(a,e,o,l):\"add\"===c.type||void 0===o?(n=d.fire.call(a,e,c.values[t],l),null==e&&null!=n&&(c.keys[t]=e=n,v.outbound||P(c.values[t],v.keyPath,e))):(n=Fn(o,c.values[t]),(r=p.fire.call(a,n,e,o,l))&&(i=c.values[t],Object.keys(r).forEach(function(e){m(i,e)?i[e]=r[e]:P(i,e,r[e])}))),a});return y.mutate(c).then(function(e){for(var t=e.failures,n=e.results,r=e.numFailures,e=e.lastResult,i=0;i<f.length;++i){var o=(n||f)[i],a=s[i];null==o?a.onerror&&a.onerror(t[i]):a.onsuccess&&a.onsuccess(\"put\"===c.type&&u[i]?c.values[i]:o)}return{failures:t,results:n,numFailures:r,lastResult:e}}).catch(function(t){return s.forEach(function(e){return e.onerror&&e.onerror(t)}),Promise.reject(t)})})}}})}})}};function Ln(e,t,n){try{if(!t)return null;if(t.keys.length<e.length)return null;for(var r=[],i=0,o=0;i<t.keys.length&&o<e.length;++i)0===st(t.keys[i],e[o])&&(r.push(n?S(t.values[i]):t.values[i]),++o);return r.length===e.length?r:null}catch(e){return null}}var Un={stack:\"dbcore\",level:-1,create:function(t){return{table:function(e){var n=t.table(e);return _(_({},n),{getMany:function(t){if(!t.cache)return n.getMany(t);var e=Ln(t.keys,t.trans._cache,\"clone\"===t.cache);return e?_e.resolve(e):n.getMany(t).then(function(e){return t.trans._cache={keys:t.keys,values:\"clone\"===t.cache?S(e):e},e})},mutate:function(e){return\"add\"!==e.type&&(e.trans._cache=null),n.mutate(e)}})}}}};function Vn(e,t){return\"readonly\"===e.trans.mode&&!!e.subscr&&!e.trans.explicit&&\"disabled\"!==e.trans.db._options.cache&&!t.schema.primaryKey.outbound}function zn(e,t){switch(e){case\"query\":return t.values&&!t.unique;case\"get\":case\"getMany\":case\"count\":case\"openCursor\":return!1}}var Wn={stack:\"dbcore\",level:0,name:\"Observability\",create:function(b){var g=b.schema.name,w=new gn(b.MIN_KEY,b.MAX_KEY);return _(_({},b),{transaction:function(e,t,n){if(me.subscr&&\"readonly\"!==t)throw new Y.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(me.querier));return b.transaction(e,t,n)},table:function(d){var p=b.table(d),y=p.schema,v=y.primaryKey,e=y.indexes,c=v.extractKey,l=v.outbound,m=v.autoIncrement&&e.filter(function(e){return e.compound&&e.keyPath.includes(v.keyPath)}),t=_(_({},p),{mutate:function(a){function u(e){return e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e),n[e]||(n[e]=new gn)}var e,o,s,t=a.trans,n=a.mutatedParts||(a.mutatedParts={}),r=u(\"\"),i=u(\":dels\"),c=a.type,l=\"deleteRange\"===a.type?[a.range]:\"delete\"===a.type?[a.keys]:a.values.length<50?[Mn(v,a).filter(function(e){return e}),a.values]:[],f=l[0],h=l[1],l=a.trans._cache;return k(f)?(r.addKeys(f),(l=\"delete\"===c||f.length===h.length?Ln(f,l):null)||i.addKeys(f),(l||h)&&(e=u,o=l,s=h,y.indexes.forEach(function(t){var n=e(t.name||\"\");function r(e){return null!=e?t.extractKey(e):null}function i(e){return t.multiEntry&&k(e)?e.forEach(function(e){return n.addKey(e)}):n.addKey(e)}(o||s).forEach(function(e,t){var n=o&&r(o[t]),t=s&&r(s[t]);0!==st(n,t)&&(null!=n&&i(n),null!=t&&i(t))})}))):f?(h={from:null!==(h=f.lower)&&void 0!==h?h:b.MIN_KEY,to:null!==(h=f.upper)&&void 0!==h?h:b.MAX_KEY},i.add(h),r.add(h)):(r.add(w),i.add(w),y.indexes.forEach(function(e){return u(e.name).add(w)})),p.mutate(a).then(function(o){return!f||\"add\"!==a.type&&\"put\"!==a.type||(r.addKeys(o.results),m&&m.forEach(function(t){for(var e=a.values.map(function(e){return t.extractKey(e)}),n=t.keyPath.findIndex(function(e){return e===v.keyPath}),r=0,i=o.results.length;r<i;++r)e[r][n]=o.results[r];u(t.name).addKeys(e)})),t.mutatedParts=Kn(t.mutatedParts||{},n),o})}}),e=function(e){var t=e.query,e=t.index,t=t.range;return[e,new gn(null!==(e=t.lower)&&void 0!==e?e:b.MIN_KEY,null!==(t=t.upper)&&void 0!==t?t:b.MAX_KEY)]},f={get:function(e){return[v,new gn(e.key)]},getMany:function(e){return[v,(new gn).addKeys(e.keys)]},count:e,query:e,openCursor:e};return x(f).forEach(function(s){t[s]=function(i){var e=me.subscr,t=!!e,n=Vn(me,p)&&zn(s,i)?i.obsSet={}:e;if(t){var r=function(e){e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e);return n[e]||(n[e]=new gn)},o=r(\"\"),a=r(\":dels\"),e=f[s](i),t=e[0],e=e[1];if((\"query\"===s&&t.isPrimaryKey&&!i.values?a:r(t.name||\"\")).add(e),!t.isPrimaryKey){if(\"count\"!==s){var u=\"query\"===s&&l&&i.values&&p.query(_(_({},i),{values:!1}));return p[s].apply(this,arguments).then(function(t){if(\"query\"===s){if(l&&i.values)return u.then(function(e){e=e.result;return o.addKeys(e),t});var e=i.values?t.result.map(c):t.result;(i.values?o:a).addKeys(e)}else if(\"openCursor\"===s){var n=t,r=i.values;return n&&Object.create(n,{key:{get:function(){return a.addKey(n.primaryKey),n.key}},primaryKey:{get:function(){var e=n.primaryKey;return a.addKey(e),e}},value:{get:function(){return r&&o.addKey(n.primaryKey),n.value}}})}return t})}a.add(w)}}return p[s].apply(this,arguments)}}),t}})}};function Yn(e,t,n){if(0===n.numFailures)return t;if(\"deleteRange\"===t.type)return null;var r=t.keys?t.keys.length:\"values\"in t&&t.values?t.values.length:1;if(n.numFailures===r)return null;t=_({},t);return k(t.keys)&&(t.keys=t.keys.filter(function(e,t){return!(t in n.failures)})),\"values\"in t&&k(t.values)&&(t.values=t.values.filter(function(e,t){return!(t in n.failures)})),t}function $n(e,t){return n=e,(void 0===(r=t).lower||(r.lowerOpen?0<st(n,r.lower):0<=st(n,r.lower)))&&(e=e,void 0===(t=t).upper||(t.upperOpen?st(e,t.upper)<0:st(e,t.upper)<=0));var n,r}function Qn(e,d,t,n,r,i){if(!t||0===t.length)return e;var o=d.query.index,p=o.multiEntry,y=d.query.range,v=n.schema.primaryKey.extractKey,m=o.extractKey,a=(o.lowLevelIndex||o).extractKey,t=t.reduce(function(e,t){var n=e,r=[];if(\"add\"===t.type||\"put\"===t.type)for(var i=new gn,o=t.values.length-1;0<=o;--o){var a,u=t.values[o],s=v(u);i.hasKey(s)||(a=m(u),(p&&k(a)?a.some(function(e){return $n(e,y)}):$n(a,y))&&(i.addKey(s),r.push(u)))}switch(t.type){case\"add\":var c=(new gn).addKeys(d.values?e.map(function(e){return v(e)}):e),n=e.concat(d.values?r.filter(function(e){e=v(e);return!c.hasKey(e)&&(c.addKey(e),!0)}):r.map(function(e){return v(e)}).filter(function(e){return!c.hasKey(e)&&(c.addKey(e),!0)}));break;case\"put\":var l=(new gn).addKeys(t.values.map(function(e){return v(e)}));n=e.filter(function(e){return!l.hasKey(d.values?v(e):e)}).concat(d.values?r:r.map(function(e){return v(e)}));break;case\"delete\":var f=(new gn).addKeys(t.keys);n=e.filter(function(e){return!f.hasKey(d.values?v(e):e)});break;case\"deleteRange\":var h=t.range;n=e.filter(function(e){return!$n(v(e),h)})}return n},e);return t===e?e:(t.sort(function(e,t){return st(a(e),a(t))||st(v(e),v(t))}),d.limit&&d.limit<1/0&&(t.length>d.limit?t.length=d.limit:e.length===d.limit&&t.length<d.limit&&(r.dirty=!0)),i?Object.freeze(t):t)}function Gn(e,t){return 0===st(e.lower,t.lower)&&0===st(e.upper,t.upper)&&!!e.lowerOpen==!!t.lowerOpen&&!!e.upperOpen==!!t.upperOpen}function Xn(e,t){return function(e,t,n,r){if(void 0===e)return void 0!==t?-1:0;if(void 0===t)return 1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return 1;if(r)return-1}return t}(e.lower,t.lower,e.lowerOpen,t.lowerOpen)<=0&&0<=function(e,t,n,r){if(void 0===e)return void 0!==t?1:0;if(void 0===t)return-1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return-1;if(r)return 1}return t}(e.upper,t.upper,e.upperOpen,t.upperOpen)}function Hn(n,r,i,e){n.subscribers.add(i),e.addEventListener(\"abort\",function(){var e,t;n.subscribers.delete(i),0===n.subscribers.size&&(e=n,t=r,setTimeout(function(){0===e.subscribers.size&&q(t,e)},3e3))})}var Jn={stack:\"dbcore\",level:0,name:\"Cache\",create:function(k){var O=k.schema.name;return _(_({},k),{transaction:function(g,w,e){var _,t,x=k.transaction(g,w,e);return\"readwrite\"===w&&(t=(_=new AbortController).signal,e=function(b){return function(){if(_.abort(),\"readwrite\"===w){for(var t=new Set,e=0,n=g;e<n.length;e++){var r=n[e],i=Sn[\"idb://\".concat(O,\"/\").concat(r)];if(i){var o=k.table(r),a=i.optimisticOps.filter(function(e){return e.trans===x});if(x._explicit&&b&&x.mutatedParts)for(var u=0,s=Object.values(i.queries.query);u<s.length;u++)for(var c=0,l=(d=s[u]).slice();c<l.length;c++)En((p=l[c]).obsSet,x.mutatedParts)&&(q(d,p),p.subscribers.forEach(function(e){return t.add(e)}));else if(0<a.length){i.optimisticOps=i.optimisticOps.filter(function(e){return e.trans!==x});for(var f=0,h=Object.values(i.queries.query);f<h.length;f++)for(var d,p,y,v=0,m=(d=h[f]).slice();v<m.length;v++)null!=(p=m[v]).res&&x.mutatedParts&&(b&&!p.dirty?(y=Object.isFrozen(p.res),y=Qn(p.res,p.req,a,o,p,y),p.dirty?(q(d,p),p.subscribers.forEach(function(e){return t.add(e)})):y!==p.res&&(p.res=y,p.promise=_e.resolve({result:y}))):(p.dirty&&q(d,p),p.subscribers.forEach(function(e){return t.add(e)})))}}}t.forEach(function(e){return e()})}}},x.addEventListener(\"abort\",e(!1),{signal:t}),x.addEventListener(\"error\",e(!1),{signal:t}),x.addEventListener(\"complete\",e(!0),{signal:t})),x},table:function(c){var l=k.table(c),i=l.schema.primaryKey;return _(_({},l),{mutate:function(t){var e=me.trans;if(i.outbound||\"disabled\"===e.db._options.cache||e.explicit||\"readwrite\"!==e.idbtrans.mode)return l.mutate(t);var n=Sn[\"idb://\".concat(O,\"/\").concat(c)];if(!n)return l.mutate(t);e=l.mutate(t);return\"add\"!==t.type&&\"put\"!==t.type||!(50<=t.values.length||Mn(i,t).some(function(e){return null==e}))?(n.optimisticOps.push(t),t.mutatedParts&&Cn(t.mutatedParts),e.then(function(e){0<e.numFailures&&(q(n.optimisticOps,t),(e=Yn(0,t,e))&&n.optimisticOps.push(e),t.mutatedParts&&Cn(t.mutatedParts))}),e.catch(function(){q(n.optimisticOps,t),t.mutatedParts&&Cn(t.mutatedParts)})):e.then(function(r){var e=Yn(0,_(_({},t),{values:t.values.map(function(e,t){var n;if(r.failures[t])return e;e=null!==(n=i.keyPath)&&void 0!==n&&n.includes(\".\")?S(e):_({},e);return P(e,i.keyPath,r.results[t]),e})}),r);n.optimisticOps.push(e),queueMicrotask(function(){return t.mutatedParts&&Cn(t.mutatedParts)})}),e},query:function(t){if(!Vn(me,l)||!zn(\"query\",t))return l.query(t);var i=\"immutable\"===(null===(o=me.trans)||void 0===o?void 0:o.db._options.cache),e=me,n=e.requery,r=e.signal,o=function(e,t,n,r){var i=Sn[\"idb://\".concat(e,\"/\").concat(t)];if(!i)return[];if(!(t=i.queries[n]))return[null,!1,i,null];var o=t[(r.query?r.query.index.name:null)||\"\"];if(!o)return[null,!1,i,null];switch(n){case\"query\":var a=o.find(function(e){return e.req.limit===r.limit&&e.req.values===r.values&&Gn(e.req.query.range,r.query.range)});return a?[a,!0,i,o]:[o.find(function(e){return(\"limit\"in e.req?e.req.limit:1/0)>=r.limit&&(!r.values||e.req.values)&&Xn(e.req.query.range,r.query.range)}),!1,i,o];case\"count\":a=o.find(function(e){return Gn(e.req.query.range,r.query.range)});return[a,!!a,i,o]}}(O,c,\"query\",t),a=o[0],e=o[1],u=o[2],s=o[3];return a&&e?a.obsSet=t.obsSet:(e=l.query(t).then(function(e){var t=e.result;if(a&&(a.res=t),i){for(var n=0,r=t.length;n<r;++n)Object.freeze(t[n]);Object.freeze(t)}else e.result=S(t);return e}).catch(function(e){return s&&a&&q(s,a),Promise.reject(e)}),a={obsSet:t.obsSet,promise:e,subscribers:new Set,type:\"query\",req:t,dirty:!1},s?s.push(a):(s=[a],(u=u||(Sn[\"idb://\".concat(O,\"/\").concat(c)]={queries:{query:{},count:{}},objs:new Map,optimisticOps:[],unsignaledParts:{}})).queries.query[t.query.index.name||\"\"]=s)),Hn(a,s,n,r),a.promise.then(function(e){return{result:Qn(e.result,t,null==u?void 0:u.optimisticOps,l,a,i)}})}})}})}};function Zn(e,r){return new Proxy(e,{get:function(e,t,n){return\"db\"===t?r:Reflect.get(e,t,n)}})}var er=(tr.prototype.version=function(t){if(isNaN(t)||t<.1)throw new Y.Type(\"Given version is not a positive number\");if(t=Math.round(10*t)/10,this.idbdb||this._state.isBeingOpened)throw new Y.Schema(\"Cannot add version when database is open\");this.verno=Math.max(this.verno,t);var e=this._versions,n=e.filter(function(e){return e._cfg.version===t})[0];return n||(n=new this.Version(t),e.push(n),e.sort(nn),n.stores({}),this._state.autoSchema=!1,n)},tr.prototype._whenReady=function(e){var n=this;return this.idbdb&&(this._state.openComplete||me.letThrough||this._vip)?e():new _e(function(e,t){if(n._state.openComplete)return t(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return void t(new Y.DatabaseClosed);n.open().catch(G)}n._state.dbReadyPromise.then(e,t)}).then(e)},tr.prototype.use=function(e){var t=e.stack,n=e.create,r=e.level,i=e.name;i&&this.unuse({stack:t,name:i});e=this._middlewares[t]||(this._middlewares[t]=[]);return e.push({stack:t,create:n,level:null==r?10:r,name:i}),e.sort(function(e,t){return e.level-t.level}),this},tr.prototype.unuse=function(e){var t=e.stack,n=e.name,r=e.create;return t&&this._middlewares[t]&&(this._middlewares[t]=this._middlewares[t].filter(function(e){return r?e.create!==r:!!n&&e.name!==n})),this},tr.prototype.open=function(){var e=this;return $e(ve,function(){return Dn(e)})},tr.prototype._close=function(){var n=this._state,e=et.indexOf(this);if(0<=e&&et.splice(e,1),this.idbdb){try{this.idbdb.close()}catch(e){}this.idbdb=null}n.isBeingOpened||(n.dbReadyPromise=new _e(function(e){n.dbReadyResolve=e}),n.openCanceller=new _e(function(e,t){n.cancelOpen=t}))},tr.prototype.close=function(e){var t=(void 0===e?{disableAutoOpen:!0}:e).disableAutoOpen,e=this._state;t?(e.isBeingOpened&&e.cancelOpen(new Y.DatabaseClosed),this._close(),e.autoOpen=!1,e.dbOpenError=new Y.DatabaseClosed):(this._close(),e.autoOpen=this._options.autoOpen||e.isBeingOpened,e.openComplete=!1,e.dbOpenError=null)},tr.prototype.delete=function(n){var i=this;void 0===n&&(n={disableAutoOpen:!0});var o=0<arguments.length&&\"object\"!=typeof arguments[0],a=this._state;return new _e(function(r,t){function e(){i.close(n);var e=i._deps.indexedDB.deleteDatabase(i.name);e.onsuccess=qe(function(){var e,t,n;e=i._deps,t=i.name,n=e.indexedDB,e=e.IDBKeyRange,vn(n)||t===tt||yn(n,e).delete(t).catch(G),r()}),e.onerror=Bt(t),e.onblocked=i._fireOnBlocked}if(o)throw new Y.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");a.isBeingOpened?a.dbReadyPromise.then(e):e()})},tr.prototype.backendDB=function(){return this.idbdb},tr.prototype.isOpen=function(){return null!==this.idbdb},tr.prototype.hasBeenClosed=function(){var e=this._state.dbOpenError;return e&&\"DatabaseClosed\"===e.name},tr.prototype.hasFailed=function(){return null!==this._state.dbOpenError},tr.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(tr.prototype,\"tables\",{get:function(){var t=this;return x(this._allTables).map(function(e){return t._allTables[e]})},enumerable:!1,configurable:!0}),tr.prototype.transaction=function(){var e=function(e,t,n){var r=arguments.length;if(r<2)throw new Y.InvalidArgument(\"Too few arguments\");for(var i=new Array(r-1);--r;)i[r-1]=arguments[r];return n=i.pop(),[e,w(i),n]}.apply(this,arguments);return this._transaction.apply(this,e)},tr.prototype._transaction=function(e,t,n){var r=this,i=me.trans;i&&i.db===this&&-1===e.indexOf(\"!\")||(i=null);var o,a,u=-1!==e.indexOf(\"?\");e=e.replace(\"!\",\"\").replace(\"?\",\"\");try{if(a=t.map(function(e){e=e instanceof r.Table?e.name:e;if(\"string\"!=typeof e)throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");return e}),\"r\"==e||e===nt)o=nt;else{if(\"rw\"!=e&&e!=rt)throw new Y.InvalidArgument(\"Invalid transaction mode: \"+e);o=rt}if(i){if(i.mode===nt&&o===rt){if(!u)throw new Y.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");i=null}i&&a.forEach(function(e){if(i&&-1===i.storeNames.indexOf(e)){if(!u)throw new Y.SubTransaction(\"Table \"+e+\" not included in parent transaction.\");i=null}}),u&&i&&!i.active&&(i=null)}}catch(n){return i?i._promise(null,function(e,t){t(n)}):Xe(n)}var s=function i(o,a,u,s,c){return _e.resolve().then(function(){var e=me.transless||me,t=o._createTransaction(a,u,o._dbSchema,s);if(t.explicit=!0,e={trans:t,transless:e},s)t.idbtrans=s.idbtrans;else try{t.create(),t.idbtrans._explicit=!0,o._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&o.isOpen()&&0<--o._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),o.close({disableAutoOpen:!1}),o.open().then(function(){return i(o,a,u,null,c)})):Xe(e)}var n,r=B(c);return r&&Le(),e=_e.follow(function(){var e;(n=c.call(t,t))&&(r?(e=Ue.bind(null,null),n.then(e,e)):\"function\"==typeof n.next&&\"function\"==typeof n.throw&&(n=In(n)))},e),(n&&\"function\"==typeof n.then?_e.resolve(n).then(function(e){return t.active?e:Xe(new Y.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\"))}):e.then(function(){return n})).then(function(e){return s&&t._resolve(),t._completion.then(function(){return e})}).catch(function(e){return t._reject(e),Xe(e)})})}.bind(null,this,o,a,i,n);return i?i._promise(o,s,\"lock\"):me.trans?$e(me.transless,function(){return r._whenReady(s)}):this._whenReady(s)},tr.prototype.table=function(e){if(!m(this._allTables,e))throw new Y.InvalidTable(\"Table \".concat(e,\" does not exist\"));return this._allTables[e]},tr);function tr(e,t){var o=this;this._middlewares={},this.verno=0;var n=tr.dependencies;this._options=t=_({addons:tr.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange,cache:\"cloned\"},t),this._deps={indexedDB:t.indexedDB,IDBKeyRange:t.IDBKeyRange};n=t.addons;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;var a,r,u,i,s,c={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:G,dbReadyPromise:null,cancelOpen:G,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3,autoOpen:t.autoOpen};c.dbReadyPromise=new _e(function(e){c.dbReadyResolve=e}),c.openCanceller=new _e(function(e,t){c.cancelOpen=t}),this._state=c,this.name=e,this.on=dt(this,\"populate\",\"blocked\",\"versionchange\",\"close\",{ready:[re,G]}),this.on.ready.subscribe=p(this.on.ready.subscribe,function(i){return function(n,r){tr.vip(function(){var t,e=o._state;e.openComplete?(e.dbOpenError||_e.resolve().then(n),r&&i(n)):e.onReadyBeingFired?(e.onReadyBeingFired.push(n),r&&i(n)):(i(n),t=o,r||i(function e(){t.on.ready.unsubscribe(n),t.on.ready.unsubscribe(e)}))})}}),this.Collection=(a=this,pt(Ot.prototype,function(e,t){this.db=a;var n=ot,r=null;if(t)try{n=t()}catch(e){r=e}var i=e._ctx,t=i.table,e=t.hook.reading.fire;this._ctx={table:t,index:i.index,isPrimKey:!i.index||t.schema.primKey.keyPath&&i.index===t.schema.primKey.name,range:n,keysOnly:!1,dir:\"next\",unique:\"\",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:r,or:i.or,valueMapper:e!==X?e:null}})),this.Table=(r=this,pt(ft.prototype,function(e,t,n){this.db=r,this._tx=n,this.name=e,this.schema=t,this.hook=r._allTables[e]?r._allTables[e].hook:dt(null,{creating:[Z,G],reading:[H,X],updating:[te,G],deleting:[ee,G]})})),this.Transaction=(u=this,pt(Lt.prototype,function(e,t,n,r,i){var o=this;this.db=u,this.mode=e,this.storeNames=t,this.schema=n,this.chromeTransactionDurability=r,this.idbtrans=null,this.on=dt(this,\"complete\",\"error\",\"abort\"),this.parent=i||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new _e(function(e,t){o._resolve=e,o._reject=t}),this._completion.then(function(){o.active=!1,o.on.complete.fire()},function(e){var t=o.active;return o.active=!1,o.on.error.fire(e),o.parent?o.parent._reject(e):t&&o.idbtrans&&o.idbtrans.abort(),Xe(e)})})),this.Version=(i=this,pt(dn.prototype,function(e){this.db=i,this._cfg={version:e,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})),this.WhereClause=(s=this,pt(Dt.prototype,function(e,t,n){if(this.db=s,this._ctx={table:e,index:\":id\"===t?null:t,or:n},this._cmp=this._ascending=st,this._descending=function(e,t){return st(t,e)},this._max=function(e,t){return 0<st(e,t)?e:t},this._min=function(e,t){return st(e,t)<0?e:t},this._IDBKeyRange=s._deps.IDBKeyRange,!this._IDBKeyRange)throw new Y.MissingAPI})),this.on(\"versionchange\",function(e){0<e.newVersion?console.warn(\"Another connection wants to upgrade database '\".concat(o.name,\"'. Closing db now to resume the upgrade.\")):console.warn(\"Another connection wants to delete database '\".concat(o.name,\"'. Closing db now to resume the delete request.\")),o.close({disableAutoOpen:!1})}),this.on(\"blocked\",function(e){!e.newVersion||e.newVersion<e.oldVersion?console.warn(\"Dexie.delete('\".concat(o.name,\"') was blocked\")):console.warn(\"Upgrade '\".concat(o.name,\"' blocked by other connection holding version \").concat(e.oldVersion/10))}),this._maxKey=Yt(t.IDBKeyRange),this._createTransaction=function(e,t,n,r){return new o.Transaction(e,t,n,o._options.chromeTransactionDurability,r)},this._fireOnBlocked=function(t){o.on(\"blocked\").fire(t),et.filter(function(e){return e.name===o.name&&e!==o&&!e._state.vcFired}).map(function(e){return e.on(\"versionchange\").fire(t)})},this.use(Un),this.use(Jn),this.use(Wn),this.use(Rn),this.use(Nn);var l=new Proxy(this,{get:function(e,t,n){if(\"_vip\"===t)return!0;if(\"table\"===t)return function(e){return Zn(o.table(e),l)};var r=Reflect.get(e,t,n);return r instanceof ft?Zn(r,l):\"tables\"===t?r.map(function(e){return Zn(e,l)}):\"_createTransaction\"===t?function(){return Zn(r.apply(this,arguments),l)}:r}});this.vip=l,n.forEach(function(e){return e(o)})}var nr,F=\"undefined\"!=typeof Symbol&&\"observable\"in Symbol?Symbol.observable:\"@@observable\",rr=(ir.prototype.subscribe=function(e,t,n){return this._subscribe(e&&\"function\"!=typeof e?e:{next:e,error:t,complete:n})},ir.prototype[F]=function(){return this},ir);function ir(e){this._subscribe=e}try{nr={indexedDB:f.indexedDB||f.mozIndexedDB||f.webkitIndexedDB||f.msIndexedDB,IDBKeyRange:f.IDBKeyRange||f.webkitIDBKeyRange}}catch(e){nr={indexedDB:null,IDBKeyRange:null}}function or(h){var d,p=!1,e=new rr(function(r){var i=B(h);var o,a=!1,u={},s={},e={get closed(){return a},unsubscribe:function(){a||(a=!0,o&&o.abort(),c&&Nt.storagemutated.unsubscribe(f))}};r.start&&r.start(e);var c=!1,l=function(){return Ge(t)};var f=function(e){Kn(u,e),En(s,u)&&l()},t=function(){var t,n,e;!a&&nr.indexedDB&&(u={},t={},o&&o.abort(),o=new AbortController,e=function(e){var t=je();try{i&&Le();var n=Ne(h,e);return n=i?n.finally(Ue):n}finally{t&&Ae()}}(n={subscr:t,signal:o.signal,requery:l,querier:h,trans:null}),Promise.resolve(e).then(function(e){p=!0,d=e,a||n.signal.aborted||(u={},function(e){for(var t in e)if(m(e,t))return;return 1}(s=t)||c||(Nt(Ft,f),c=!0),Ge(function(){return!a&&r.next&&r.next(e)}))},function(e){p=!1,[\"DatabaseClosedError\",\"AbortError\"].includes(null==e?void 0:e.name)||a||Ge(function(){a||r.error&&r.error(e)})}))};return setTimeout(l,0),e});return e.hasValue=function(){return p},e.getValue=function(){return d},e}var ar=er;function ur(e){var t=cr;try{cr=!0,Nt.storagemutated.fire(e),Tn(e,!0)}finally{cr=t}}r(ar,_(_({},Q),{delete:function(e){return new ar(e,{addons:[]}).delete()},exists:function(e){return new ar(e,{addons:[]}).open().then(function(e){return e.close(),!0}).catch(\"NoSuchDatabaseError\",function(){return!1})},getDatabaseNames:function(e){try{return t=ar.dependencies,n=t.indexedDB,t=t.IDBKeyRange,(vn(n)?Promise.resolve(n.databases()).then(function(e){return e.map(function(e){return e.name}).filter(function(e){return e!==tt})}):yn(n,t).toCollection().primaryKeys()).then(e)}catch(e){return Xe(new Y.MissingAPI)}var t,n},defineClass:function(){return function(e){a(this,e)}},ignoreTransaction:function(e){return me.trans?$e(me.transless,e):e()},vip:mn,async:function(t){return function(){try{var e=In(t.apply(this,arguments));return e&&\"function\"==typeof e.then?e:_e.resolve(e)}catch(e){return Xe(e)}}},spawn:function(e,t,n){try{var r=In(e.apply(n,t||[]));return r&&\"function\"==typeof r.then?r:_e.resolve(r)}catch(e){return Xe(e)}},currentTransaction:{get:function(){return me.trans||null}},waitFor:function(e,t){t=_e.resolve(\"function\"==typeof e?ar.ignoreTransaction(e):e).timeout(t||6e4);return me.trans?me.trans.waitFor(t):t},Promise:_e,debug:{get:function(){return ie},set:function(e){oe(e)}},derive:o,extend:a,props:r,override:p,Events:dt,on:Nt,liveQuery:or,extendObservabilitySet:Kn,getByKeyPath:O,setByKeyPath:P,delByKeyPath:function(t,e){\"string\"==typeof e?P(t,e,void 0):\"length\"in e&&[].map.call(e,function(e){P(t,e,void 0)})},shallowClone:g,deepClone:S,getObjectDiff:Fn,cmp:st,asap:v,minKey:-1/0,addons:[],connections:et,errnames:z,dependencies:nr,cache:Sn,semVer:\"4.0.11\",version:\"4.0.11\".split(\".\").map(function(e){return parseInt(e)}).reduce(function(e,t,n){return e+t/Math.pow(10,2*n)})})),ar.maxKey=Yt(ar.dependencies.IDBKeyRange),\"undefined\"!=typeof dispatchEvent&&\"undefined\"!=typeof addEventListener&&(Nt(Ft,function(e){cr||(e=new CustomEvent(Mt,{detail:e}),cr=!0,dispatchEvent(e),cr=!1)}),addEventListener(Mt,function(e){e=e.detail;cr||ur(e)}));var sr,cr=!1,lr=function(){};return\"undefined\"!=typeof BroadcastChannel&&((lr=function(){(sr=new BroadcastChannel(Mt)).onmessage=function(e){return e.data&&ur(e.data)}})(),\"function\"==typeof sr.unref&&sr.unref(),Nt(Ft,function(e){cr||sr.postMessage(e)})),\"undefined\"!=typeof addEventListener&&(addEventListener(\"pagehide\",function(e){if(!er.disableBfCache&&e.persisted){ie&&console.debug(\"Dexie: handling persisted pagehide\"),null!=sr&&sr.close();for(var t=0,n=et;t<n.length;t++)n[t].close({disableAutoOpen:!1})}}),addEventListener(\"pageshow\",function(e){!er.disableBfCache&&e.persisted&&(ie&&console.debug(\"Dexie: handling persisted pageshow\"),lr(),ur({all:new gn(-1/0,[[]])}))})),_e.rejectionMapper=function(e,t){return!e||e instanceof N||e instanceof TypeError||e instanceof SyntaxError||!e.name||!$[e.name]?e:(t=new $[e.name](t||e.message,e),\"stack\"in e&&l(t,\"stack\",{get:function(){return this.inner.stack}}),t)},oe(ie),_(er,Object.freeze({__proto__:null,Dexie:er,liveQuery:or,Entity:ut,cmp:st,PropModification:xt,replacePrefix:function(e,t){return new xt({replacePrefix:[e,t]})},add:function(e){return new xt({add:e})},remove:function(e){return new xt({remove:e})},default:er,RangeSet:gn,mergeRanges:_n,rangesOverlap:xn}),{default:er}),er});\n//# sourceMappingURL=dexie.min.js.map","// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.min.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst {\n liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Entity,\n PropModification, replacePrefix, add, remove } = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity,\n PropModification, replacePrefix, add, remove };\nexport default Dexie;\n","import Dexie from \"dexie\";\n\n//#region src/dict/pinyin_dict_notone.json\nvar a = \"阿啊呵腌嗄吖锕\";\nvar e = \"额阿俄恶鹅遏鄂厄饿峨扼娥鳄哦蛾噩愕讹锷垩婀鹗萼谔莪腭锇颚呃阏屙苊轭\";\nvar ai = \"爱埃艾碍癌哀挨矮隘蔼唉皑哎霭捱暧嫒嗳瑷嗌锿砹\";\nvar ei = \"诶\";\nvar xi = \"系西席息希习吸喜细析戏洗悉锡溪惜稀袭夕洒晰昔牺腊烯熙媳栖膝隙犀蹊硒兮熄曦禧嬉玺奚汐徙羲铣淅嘻歙熹矽蟋郗唏皙隰樨浠忾蜥檄郄翕阋鳃舾屣葸螅咭粞觋欷僖醯鼷裼穸饩舄禊诶菥蓰\";\nvar yi = \"一以已意议义益亿易医艺食依移衣异伊仪宜射遗疑毅谊亦疫役忆抑尾乙译翼蛇溢椅沂泄逸蚁夷邑怡绎彝裔姨熠贻矣屹颐倚诣胰奕翌疙弈轶蛾驿壹猗臆弋铱旖漪迤佚翊诒怿痍懿饴峄揖眙镒仡黟肄咿翳挹缢呓刈咦嶷羿钇殪荑薏蜴镱噫癔苡悒嗌瘗衤佾埸圯舣酏劓\";\nvar an = \"安案按岸暗鞍氨俺胺铵谙庵黯鹌桉埯犴揞厂广\";\nvar han = \"厂汉韩含旱寒汗涵函喊憾罕焊翰邯撼瀚憨捍酣悍鼾邗颔蚶晗菡旰顸犴焓撖\";\nvar ang = \"昂仰盎肮\";\nvar ao = \"奥澳傲熬凹鳌敖遨鏖袄坳翱嗷拗懊岙螯骜獒鏊艹媪廒聱\";\nvar wa = \"瓦挖娃洼袜蛙凹哇佤娲呙腽\";\nvar yu = \"于与育余预域予遇奥语誉玉鱼雨渔裕愈娱欲吁舆宇羽逾豫郁寓吾狱喻御浴愉禹俞邪榆愚渝尉淤虞屿峪粥驭瑜禺毓钰隅芋熨瘀迂煜昱汩於臾盂聿竽萸妪腴圄谕觎揄龉谀俣馀庾妤瘐鬻欤鹬阈嵛雩鹆圉蜮伛纡窬窳饫蓣狳肀舁蝓燠\";\nvar niu = \"牛纽扭钮拗妞忸狃\";\nvar o = \"哦噢喔\";\nvar ba = \"把八巴拔伯吧坝爸霸罢芭跋扒叭靶疤笆耙鲅粑岜灞钯捌菝魃茇\";\nvar pa = \"怕帕爬扒趴琶啪葩耙杷钯筢\";\nvar pi = \"被批副否皮坏辟啤匹披疲罢僻毗坯脾譬劈媲屁琵邳裨痞癖陂丕枇噼霹吡纰砒铍淠郫埤濞睥芘蚍圮鼙罴蜱疋貔仳庀擗甓陴\";\nvar bi = \"比必币笔毕秘避闭佛辟壁弊彼逼碧鼻臂蔽拂泌璧庇痹毙弼匕鄙陛裨贲敝蓖吡篦纰俾铋毖筚荸薜婢哔跸濞秕荜愎睥妣芘箅髀畀滗狴萆嬖襞舭\";\nvar bai = \"百白败摆伯拜柏佰掰呗擘捭稗\";\nvar bo = \"波博播勃拨薄佛伯玻搏柏泊舶剥渤卜驳簿脖膊簸菠礴箔铂亳钵帛擘饽跛钹趵檗啵鹁擗踣\";\nvar bei = \"北被备倍背杯勃贝辈悲碑臂卑悖惫蓓陂钡狈呗焙碚褙庳鞴孛鹎邶鐾\";\nvar ban = \"办版半班般板颁伴搬斑扮拌扳瓣坂阪绊钣瘢舨癍\";\nvar pan = \"判盘番潘攀盼拚畔胖叛拌蹒磐爿蟠泮袢襻丬\";\nvar bin = \"份宾频滨斌彬濒殡缤鬓槟摈膑玢镔豳髌傧\";\nvar bang = \"帮邦彭旁榜棒膀镑绑傍磅蚌谤梆浜蒡\";\nvar pang = \"旁庞乓磅螃彷滂逄耪\";\nvar beng = \"泵崩蚌蹦迸绷甭嘣甏堋\";\nvar bao = \"报保包宝暴胞薄爆炮饱抱堡剥鲍曝葆瀑豹刨褒雹孢苞煲褓趵鸨龅勹\";\nvar bu = \"不部步布补捕堡埔卜埠簿哺怖钚卟瓿逋晡醭钸\";\nvar pu = \"普暴铺浦朴堡葡谱埔扑仆蒲曝瀑溥莆圃璞濮菩蹼匍噗氆攵镨攴镤\";\nvar mian = \"面棉免绵缅勉眠冕娩腼渑湎沔黾宀眄\";\nvar po = \"破繁坡迫颇朴泊婆泼魄粕鄱珀陂叵笸泺皤钋钷\";\nvar fan = \"反范犯繁饭泛翻凡返番贩烦拚帆樊藩矾梵蕃钒幡畈蘩蹯燔\";\nvar fu = \"府服副负富复福夫妇幅付扶父符附腐赴佛浮覆辅傅伏抚赋辐腹弗肤阜袱缚甫氟斧孚敷俯拂俘咐腑孵芙涪釜脯茯馥宓绂讣呋罘麸蝠匐芾蜉跗凫滏蝮驸绋蚨砩桴赙菔呒趺苻拊阝鲋怫稃郛莩幞祓艴黻黼鳆\";\nvar ben = \"本体奔苯笨夯贲锛畚坌\";\nvar feng = \"风丰封峰奉凤锋冯逢缝蜂枫疯讽烽俸沣酆砜葑唪\";\nvar bian = \"变便边编遍辩鞭辨贬匾扁卞汴辫砭苄蝙鳊弁窆笾煸褊碥忭缏\";\nvar pian = \"便片篇偏骗翩扁骈胼蹁谝犏缏\";\nvar zhen = \"镇真针圳振震珍阵诊填侦臻贞枕桢赈祯帧甄斟缜箴疹砧榛鸩轸稹溱蓁胗椹朕畛浈\";\nvar biao = \"表标彪镖裱飚膘飙镳婊骠飑杓髟鳔灬瘭\";\nvar piao = \"票朴漂飘嫖瓢剽缥殍瞟骠嘌莩螵\";\nvar huo = \"和活或货获火伙惑霍祸豁嚯藿锪蠖钬耠镬夥灬劐攉\";\nvar bie = \"别鳖憋瘪蹩\";\nvar min = \"民敏闽闵皿泯岷悯珉抿黾缗玟愍苠鳘\";\nvar fen = \"分份纷奋粉氛芬愤粪坟汾焚酚吩忿棼玢鼢瀵偾鲼\";\nvar bing = \"并病兵冰屏饼炳秉丙摒柄槟禀枋邴冫\";\nvar geng = \"更耕颈庚耿梗埂羹哽赓绠鲠\";\nvar fang = \"方放房防访纺芳仿坊妨肪邡舫彷枋鲂匚钫\";\nvar xian = \"现先县见线限显险献鲜洗宪纤陷闲贤仙衔掀咸嫌掺羡弦腺痫娴舷馅酰铣冼涎暹籼锨苋蚬跹岘藓燹鹇氙莶霰跣猃彡祆筅\";\nvar fou = \"不否缶\";\nvar ca = \"拆擦嚓礤\";\nvar cha = \"查察差茶插叉刹茬楂岔诧碴嚓喳姹杈汊衩搽槎镲苴檫馇锸猹\";\nvar cai = \"才采财材菜彩裁蔡猜踩睬\";\nvar can = \"参残餐灿惨蚕掺璨惭粲孱骖黪\";\nvar shen = \"信深参身神什审申甚沈伸慎渗肾绅莘呻婶娠砷蜃哂椹葚吲糁渖诜谂矧胂\";\nvar cen = \"参岑涔\";\nvar san = \"三参散伞叁糁馓毵\";\nvar cang = \"藏仓苍沧舱臧伧\";\nvar zang = \"藏脏葬赃臧奘驵\";\nvar chen = \"称陈沈沉晨琛臣尘辰衬趁忱郴宸谌碜嗔抻榇伧谶龀肜\";\nvar cao = \"草操曹槽糙嘈漕螬艚屮\";\nvar ce = \"策测册侧厕栅恻\";\nvar ze = \"责则泽择侧咋啧仄箦赜笮舴昃迮帻\";\nvar zhai = \"债择齐宅寨侧摘窄斋祭翟砦瘵哜\";\nvar dao = \"到道导岛倒刀盗稻蹈悼捣叨祷焘氘纛刂帱忉\";\nvar ceng = \"层曾蹭噌\";\nvar zha = \"查扎炸诈闸渣咋乍榨楂札栅眨咤柞喳喋铡蚱吒怍砟揸痄哳齄\";\nvar chai = \"差拆柴钗豺侪虿瘥\";\nvar ci = \"次此差词辞刺瓷磁兹慈茨赐祠伺雌疵鹚糍呲粢\";\nvar zi = \"资自子字齐咨滋仔姿紫兹孜淄籽梓鲻渍姊吱秭恣甾孳訾滓锱辎趑龇赀眦缁呲笫谘嵫髭茈粢觜耔\";\nvar cuo = \"措错磋挫搓撮蹉锉厝嵯痤矬瘥脞鹾\";\nvar chan = \"产单阐崭缠掺禅颤铲蝉搀潺蟾馋忏婵孱觇廛谄谗澶骣羼躔蒇冁\";\nvar shan = \"山单善陕闪衫擅汕扇掺珊禅删膳缮赡鄯栅煽姗跚鳝嬗潸讪舢苫疝掸膻钐剡蟮芟埏彡骟\";\nvar zhan = \"展战占站崭粘湛沾瞻颤詹斩盏辗绽毡栈蘸旃谵搌\";\nvar xin = \"新心信辛欣薪馨鑫芯锌忻莘昕衅歆囟忄镡\";\nvar lian = \"联连练廉炼脸莲恋链帘怜涟敛琏镰濂楝鲢殓潋裢裣臁奁莶蠊蔹\";\nvar chang = \"场长厂常偿昌唱畅倡尝肠敞倘猖娼淌裳徜昶怅嫦菖鲳阊伥苌氅惝鬯\";\nvar zhang = \"长张章障涨掌帐胀彰丈仗漳樟账杖璋嶂仉瘴蟑獐幛鄣嫜\";\nvar chao = \"超朝潮炒钞抄巢吵剿绰嘲晁焯耖怊\";\nvar zhao = \"着照招找召朝赵兆昭肇罩钊沼嘲爪诏濯啁棹笊\";\nvar zhou = \"调州周洲舟骤轴昼宙粥皱肘咒帚胄绉纣妯啁诌繇碡籀酎荮\";\nvar che = \"车彻撤尺扯澈掣坼砗屮\";\nvar ju = \"车局据具举且居剧巨聚渠距句拒俱柜菊拘炬桔惧矩鞠驹锯踞咀瞿枸掬沮莒橘飓疽钜趄踽遽琚龃椐苣裾榘狙倨榉苴讵雎锔窭鞫犋屦醵\";\nvar cheng = \"成程城承称盛抢乘诚呈净惩撑澄秤橙骋逞瞠丞晟铛埕塍蛏柽铖酲裎枨\";\nvar rong = \"容荣融绒溶蓉熔戎榕茸冗嵘肜狨蝾\";\nvar sheng = \"生声升胜盛乘圣剩牲甸省绳笙甥嵊晟渑眚\";\nvar deng = \"等登邓灯澄凳瞪蹬噔磴嶝镫簦戥\";\nvar zhi = \"制之治质职只志至指织支值知识直致执置止植纸拓智殖秩旨址滞氏枝芝脂帜汁肢挚稚酯掷峙炙栉侄芷窒咫吱趾痔蜘郅桎雉祉郦陟痣蛭帙枳踯徵胝栀贽祗豸鸷摭轵卮轾彘觯絷跖埴夂黹忮骘膣踬\";\nvar zheng = \"政正证争整征郑丁症挣蒸睁铮筝拯峥怔诤狰徵钲\";\nvar tang = \"堂唐糖汤塘躺趟倘棠烫淌膛搪镗傥螳溏帑羰樘醣螗耥铴瑭\";\nvar chi = \"持吃池迟赤驰尺斥齿翅匙痴耻炽侈弛叱啻坻眙嗤墀哧茌豉敕笞饬踟蚩柢媸魑篪褫彳鸱螭瘛眵傺\";\nvar shi = \"是时实事市十使世施式势视识师史示石食始士失适试什泽室似诗饰殖释驶氏硕逝湿蚀狮誓拾尸匙仕柿矢峙侍噬嗜栅拭嘘屎恃轼虱耆舐莳铈谥炻豕鲥饣螫酾筮埘弑礻蓍鲺贳\";\nvar qi = \"企其起期气七器汽奇齐启旗棋妻弃揭枝歧欺骑契迄亟漆戚岂稽岐琦栖缉琪泣乞砌祁崎绮祺祈凄淇杞脐麒圻憩芪伎俟畦耆葺沏萋骐鳍綦讫蕲屺颀亓碛柒啐汔綮萁嘁蛴槭欹芑桤丌蜞\";\nvar chuai = \"揣踹啜搋膪\";\nvar tuo = \"托脱拓拖妥驼陀沱鸵驮唾椭坨佗砣跎庹柁橐乇铊沲酡鼍箨柝\";\nvar duo = \"多度夺朵躲铎隋咄堕舵垛惰哆踱跺掇剁柁缍沲裰哚隳\";\nvar xue = \"学血雪削薛穴靴谑噱鳕踅泶彐\";\nvar chong = \"重种充冲涌崇虫宠忡憧舂茺铳艟\";\nvar chou = \"筹抽绸酬愁丑臭仇畴稠瞅踌惆俦瘳雠帱\";\nvar qiu = \"求球秋丘邱仇酋裘龟囚遒鳅虬蚯泅楸湫犰逑巯艽俅蝤赇鼽糗\";\nvar xiu = \"修秀休宿袖绣臭朽锈羞嗅岫溴庥馐咻髹鸺貅\";\nvar chu = \"出处础初助除储畜触楚厨雏矗橱锄滁躇怵绌搐刍蜍黜杵蹰亍樗憷楮\";\nvar tuan = \"团揣湍疃抟彖\";\nvar zhui = \"追坠缀揣椎锥赘惴隹骓缒\";\nvar chuan = \"传川船穿串喘椽舛钏遄氚巛舡\";\nvar zhuan = \"专转传赚砖撰篆馔啭颛\";\nvar yuan = \"元员院原源远愿园援圆缘袁怨渊苑宛冤媛猿垣沅塬垸鸳辕鸢瑗圜爰芫鼋橼螈眢箢掾\";\nvar cuan = \"窜攒篡蹿撺爨汆镩\";\nvar chuang = \"创床窗闯幢疮怆\";\nvar zhuang = \"装状庄壮撞妆幢桩奘僮戆\";\nvar chui = \"吹垂锤炊椎陲槌捶棰\";\nvar chun = \"春纯醇淳唇椿蠢鹑朐莼肫蝽\";\nvar zhun = \"准屯淳谆肫窀\";\nvar cu = \"促趋趣粗簇醋卒蹴猝蹙蔟殂徂\";\nvar dun = \"吨顿盾敦蹲墩囤沌钝炖盹遁趸砘礅\";\nvar qu = \"区去取曲趋渠趣驱屈躯衢娶祛瞿岖龋觑朐蛐癯蛆苣阒诎劬蕖蘧氍黢蠼璩麴鸲磲\";\nvar xu = \"需许续须序徐休蓄畜虚吁绪叙旭邪恤墟栩絮圩婿戌胥嘘浒煦酗诩朐盱蓿溆洫顼勖糈砉醑\";\nvar chuo = \"辍绰戳淖啜龊踔辶\";\nvar zu = \"组族足祖租阻卒俎诅镞菹\";\nvar ji = \"济机其技基记计系期际及集级几给积极己纪即继击既激绩急奇吉季齐疾迹鸡剂辑籍寄挤圾冀亟寂暨脊跻肌稽忌饥祭缉棘矶汲畸姬藉瘠骥羁妓讥稷蓟悸嫉岌叽伎鲫诘楫荠戟箕霁嵇觊麂畿玑笈犄芨唧屐髻戢佶偈笄跽蒺乩咭赍嵴虮掎齑殛鲚剞洎丌墼蕺彐芰哜\";\nvar cong = \"从丛匆聪葱囱琮淙枞骢苁璁\";\nvar zong = \"总从综宗纵踪棕粽鬃偬枞腙\";\nvar cou = \"凑辏腠楱\";\nvar cui = \"衰催崔脆翠萃粹摧璀瘁悴淬啐隹毳榱\";\nvar wei = \"为位委未维卫围违威伟危味微唯谓伪慰尾魏韦胃畏帷喂巍萎蔚纬潍尉渭惟薇苇炜圩娓诿玮崴桅偎逶倭猥囗葳隗痿猬涠嵬韪煨艉隹帏闱洧沩隈鲔軎\";\nvar cun = \"村存寸忖皴\";\nvar zuo = \"作做座左坐昨佐琢撮祚柞唑嘬酢怍笮阼胙\";\nvar zuan = \"钻纂攥缵躜\";\nvar da = \"大达打答搭沓瘩惮嗒哒耷鞑靼褡笪怛妲\";\nvar dai = \"大代带待贷毒戴袋歹呆隶逮岱傣棣怠殆黛甙埭诒绐玳呔迨\";\nvar tai = \"大台太态泰抬胎汰钛苔薹肽跆邰鲐酞骀炱\";\nvar ta = \"他它她拓塔踏塌榻沓漯獭嗒挞蹋趿遢铊鳎溻闼\";\nvar dan = \"但单石担丹胆旦弹蛋淡诞氮郸耽殚惮儋眈疸澹掸膻啖箪聃萏瘅赕\";\nvar lu = \"路六陆录绿露鲁卢炉鹿禄赂芦庐碌麓颅泸卤潞鹭辘虏璐漉噜戮鲈掳橹轳逯渌蓼撸鸬栌氇胪镥簏舻辂垆\";\nvar tan = \"谈探坦摊弹炭坛滩贪叹谭潭碳毯瘫檀痰袒坍覃忐昙郯澹钽锬\";\nvar ren = \"人任认仁忍韧刃纫饪妊荏稔壬仞轫亻衽\";\nvar jie = \"家结解价界接节她届介阶街借杰洁截姐揭捷劫戒皆竭桔诫楷秸睫藉拮芥诘碣嗟颉蚧孑婕疖桀讦疥偈羯袷哜喈卩鲒骱\";\nvar yan = \"研严验演言眼烟沿延盐炎燕岩宴艳颜殷彦掩淹阎衍铅雁咽厌焰堰砚唁焉晏檐蜒奄俨腌妍谚兖筵焱偃闫嫣鄢湮赝胭琰滟阉魇酽郾恹崦芫剡鼹菸餍埏谳讠厣罨\";\nvar dang = \"当党档荡挡宕砀铛裆凼菪谠\";\nvar tao = \"套讨跳陶涛逃桃萄淘掏滔韬叨洮啕绦饕鼗\";\nvar tiao = \"条调挑跳迢眺苕窕笤佻啁粜髫铫祧龆蜩鲦\";\nvar te = \"特忑忒铽慝\";\nvar de = \"的地得德底锝\";\nvar dei = \"得\";\nvar di = \"的地第提低底抵弟迪递帝敌堤蒂缔滴涤翟娣笛棣荻谛狄邸嘀砥坻诋嫡镝碲骶氐柢籴羝睇觌\";\nvar ti = \"体提题弟替梯踢惕剔蹄棣啼屉剃涕锑倜悌逖嚏荑醍绨鹈缇裼\";\nvar tui = \"推退弟腿褪颓蜕忒煺\";\nvar you = \"有由又优游油友右邮尤忧幼犹诱悠幽佑釉柚铀鱿囿酉攸黝莠猷蝣疣呦蚴莸莜铕宥繇卣牖鼬尢蚰侑\";\nvar dian = \"电点店典奠甸碘淀殿垫颠滇癫巅惦掂癜玷佃踮靛钿簟坫阽\";\nvar tian = \"天田添填甜甸恬腆佃舔钿阗忝殄畋栝掭\";\nvar zhu = \"主术住注助属逐宁著筑驻朱珠祝猪诸柱竹铸株瞩嘱贮煮烛苎褚蛛拄铢洙竺蛀渚伫杼侏澍诛茱箸炷躅翥潴邾槠舳橥丶瘃麈疰\";\nvar nian = \"年念酿辗碾廿捻撵拈蔫鲶埝鲇辇黏\";\nvar diao = \"调掉雕吊钓刁貂凋碉鲷叼铫铞\";\nvar yao = \"要么约药邀摇耀腰遥姚窑瑶咬尧钥谣肴夭侥吆疟妖幺杳舀窕窈曜鹞爻繇徭轺铫鳐崾珧\";\nvar die = \"跌叠蝶迭碟爹谍牒耋佚喋堞瓞鲽垤揲蹀\";\nvar she = \"设社摄涉射折舍蛇拾舌奢慑赦赊佘麝歙畲厍猞揲滠\";\nvar ye = \"业也夜叶射野液冶喝页爷耶邪咽椰烨掖拽曳晔谒腋噎揶靥邺铘揲\";\nvar xie = \"些解协写血叶谢械鞋胁斜携懈契卸谐泄蟹邪歇泻屑挟燮榭蝎撷偕亵楔颉缬邂鲑瀣勰榍薤绁渫廨獬躞\";\nvar zhe = \"这者着著浙折哲蔗遮辙辄柘锗褶蜇蛰鹧谪赭摺乇磔螫\";\nvar ding = \"定订顶丁鼎盯钉锭叮仃铤町酊啶碇腚疔玎耵\";\nvar diu = \"丢铥\";\nvar ting = \"听庭停厅廷挺亭艇婷汀铤烃霆町蜓葶梃莛\";\nvar dong = \"动东董冬洞懂冻栋侗咚峒氡恫胴硐垌鸫岽胨\";\nvar tong = \"同通统童痛铜桶桐筒彤侗佟潼捅酮砼瞳恸峒仝嗵僮垌茼\";\nvar zhong = \"中重种众终钟忠仲衷肿踵冢盅蚣忪锺舯螽夂\";\nvar dou = \"都斗读豆抖兜陡逗窦渎蚪痘蔸钭篼\";\nvar du = \"度都独督读毒渡杜堵赌睹肚镀渎笃竺嘟犊妒牍蠹椟黩芏髑\";\nvar duan = \"断段短端锻缎煅椴簖\";\nvar dui = \"对队追敦兑堆碓镦怼憝\";\nvar rui = \"瑞兑锐睿芮蕊蕤蚋枘\";\nvar yue = \"月说约越乐跃兑阅岳粤悦曰钥栎钺樾瀹龠哕刖\";\nvar tun = \"吞屯囤褪豚臀饨暾氽\";\nvar hui = \"会回挥汇惠辉恢徽绘毁慧灰贿卉悔秽溃荟晖彗讳诲珲堕诙蕙晦睢麾烩茴喙桧蛔洄浍虺恚蟪咴隳缋哕\";\nvar wu = \"务物无五武午吴舞伍污乌误亡恶屋晤悟吾雾芜梧勿巫侮坞毋诬呜钨邬捂鹜兀婺妩於戊鹉浯蜈唔骛仵焐芴鋈庑鼯牾怃圬忤痦迕杌寤阢\";\nvar ya = \"亚压雅牙押鸭呀轧涯崖邪芽哑讶鸦娅衙丫蚜碣垭伢氩桠琊揠吖睚痖疋迓岈砑\";\nvar he = \"和合河何核盖贺喝赫荷盒鹤吓呵苛禾菏壑褐涸阂阖劾诃颌嗬貉曷翮纥盍\";\nvar wo = \"我握窝沃卧挝涡斡渥幄蜗喔倭莴龌肟硪\";\nvar en = \"恩摁蒽\";\nvar n = \"嗯唔\";\nvar er = \"而二尔儿耳迩饵洱贰铒珥佴鸸鲕\";\nvar fa = \"发法罚乏伐阀筏砝垡珐\";\nvar quan = \"全权券泉圈拳劝犬铨痊诠荃醛蜷颧绻犭筌鬈悛辁畎\";\nvar fei = \"费非飞肥废菲肺啡沸匪斐蜚妃诽扉翡霏吠绯腓痱芾淝悱狒榧砩鲱篚镄\";\nvar pei = \"配培坏赔佩陪沛裴胚妃霈淠旆帔呸醅辔锫\";\nvar ping = \"平评凭瓶冯屏萍苹乒坪枰娉俜鲆\";\nvar fo = \"佛\";\nvar hu = \"和护许户核湖互乎呼胡戏忽虎沪糊壶葫狐蝴弧瑚浒鹄琥扈唬滹惚祜囫斛笏芴醐猢怙唿戽槲觳煳鹕冱瓠虍岵鹱烀轷\";\nvar ga = \"夹咖嘎尬噶旮伽尕钆尜\";\nvar ge = \"个合各革格歌哥盖隔割阁戈葛鸽搁胳舸疙铬骼蛤咯圪镉颌仡硌嗝鬲膈纥袼搿塥哿虼\";\nvar ha = \"哈蛤铪\";\nvar xia = \"下夏峡厦辖霞夹虾狭吓侠暇遐瞎匣瑕唬呷黠硖罅狎瘕柙\";\nvar gai = \"改该盖概溉钙丐芥赅垓陔戤\";\nvar hai = \"海还害孩亥咳骸骇氦嗨胲醢\";\nvar gan = \"干感赶敢甘肝杆赣乾柑尴竿秆橄矸淦苷擀酐绀泔坩旰疳澉\";\nvar gang = \"港钢刚岗纲冈杠缸扛肛罡戆筻\";\nvar jiang = \"将强江港奖讲降疆蒋姜浆匠酱僵桨绛缰犟豇礓洚茳糨耩\";\nvar hang = \"行航杭巷夯吭桁沆绗颃\";\nvar gong = \"工公共供功红贡攻宫巩龚恭拱躬弓汞蚣珙觥肱廾\";\nvar hong = \"红宏洪轰虹鸿弘哄烘泓訇蕻闳讧荭黉薨\";\nvar guang = \"广光逛潢犷胱咣桄\";\nvar qiong = \"穷琼穹邛茕筇跫蛩銎\";\nvar gao = \"高告搞稿膏糕镐皋羔锆杲郜睾诰藁篙缟槁槔\";\nvar hao = \"好号毫豪耗浩郝皓昊皋蒿壕灏嚎濠蚝貉颢嗥薅嚆\";\nvar li = \"理力利立里李历例离励礼丽黎璃厉厘粒莉梨隶栗荔沥犁漓哩狸藜罹篱鲤砺吏澧俐骊溧砾莅锂笠蠡蛎痢雳俪傈醴栎郦俚枥喱逦娌鹂戾砬唳坜疠蜊黧猁鬲粝蓠呖跞疬缡鲡鳢嫠詈悝苈篥轹\";\nvar jia = \"家加价假佳架甲嘉贾驾嫁夹稼钾挟拮迦伽颊浃枷戛荚痂颉镓笳珈岬胛袈郏葭袷瘕铗跏蛱恝哿\";\nvar luo = \"落罗络洛逻螺锣骆萝裸漯烙摞骡咯箩珞捋荦硌雒椤镙跞瘰泺脶猡倮蠃\";\nvar ke = \"可科克客刻课颗渴壳柯棵呵坷恪苛咳磕珂稞瞌溘轲窠嗑疴蝌岢铪颏髁蚵缂氪骒钶锞\";\nvar qia = \"卡恰洽掐髂袷咭葜\";\nvar gei = \"给\";\nvar gen = \"根跟亘艮哏茛\";\nvar hen = \"很狠恨痕哏\";\nvar gou = \"构购够句沟狗钩拘勾苟垢枸篝佝媾诟岣彀缑笱鞲觏遘\";\nvar kou = \"口扣寇叩抠佝蔻芤眍筘\";\nvar gu = \"股古顾故固鼓骨估谷贾姑孤雇辜菇沽咕呱锢钴箍汩梏痼崮轱鸪牯蛊诂毂鹘菰罟嘏臌觚瞽蛄酤牿鲴\";\nvar pai = \"牌排派拍迫徘湃俳哌蒎\";\nvar gua = \"括挂瓜刮寡卦呱褂剐胍诖鸹栝呙\";\nvar tou = \"投头透偷愉骰亠\";\nvar guai = \"怪拐乖\";\nvar kuai = \"会快块筷脍蒯侩浍郐蒉狯哙\";\nvar guan = \"关管观馆官贯冠惯灌罐莞纶棺斡矜倌鹳鳏盥掼涫\";\nvar wan = \"万完晚湾玩碗顽挽弯蔓丸莞皖宛婉腕蜿惋烷琬畹豌剜纨绾脘菀芄箢\";\nvar ne = \"呢哪呐讷疒\";\nvar gui = \"规贵归轨桂柜圭鬼硅瑰跪龟匮闺诡癸鳜桧皈鲑刽晷傀眭妫炅庋簋刿宄匦\";\nvar jun = \"军均俊君峻菌竣钧骏龟浚隽郡筠皲麇捃\";\nvar jiong = \"窘炯迥炅冂扃\";\nvar jue = \"决绝角觉掘崛诀獗抉爵嚼倔厥蕨攫珏矍蹶谲镢鳜噱桷噘撅橛孓觖劂爝\";\nvar gun = \"滚棍辊衮磙鲧绲丨\";\nvar hun = \"婚混魂浑昏棍珲荤馄诨溷阍\";\nvar guo = \"国过果郭锅裹帼涡椁囗蝈虢聒埚掴猓崞蜾呙馘\";\nvar hei = \"黑嘿嗨\";\nvar kan = \"看刊勘堪坎砍侃嵌槛瞰阚龛戡凵莰\";\nvar heng = \"衡横恒亨哼珩桁蘅\";\nvar mo = \"万没么模末冒莫摩墨默磨摸漠脉膜魔沫陌抹寞蘑摹蓦馍茉嘿谟秣蟆貉嫫镆殁耱嬷麽瘼貊貘\";\nvar peng = \"鹏朋彭膨蓬碰苹棚捧亨烹篷澎抨硼怦砰嘭蟛堋\";\nvar hou = \"后候厚侯猴喉吼逅篌糇骺後鲎瘊堠\";\nvar hua = \"化华划话花画滑哗豁骅桦猾铧砉\";\nvar huai = \"怀坏淮徊槐踝\";\nvar huan = \"还环换欢患缓唤焕幻痪桓寰涣宦垸洹浣豢奂郇圜獾鲩鬟萑逭漶锾缳擐\";\nvar xun = \"讯训迅孙寻询循旬巡汛勋逊熏徇浚殉驯鲟薰荀浔洵峋埙巽郇醺恂荨窨蕈曛獯\";\nvar huang = \"黄荒煌皇凰慌晃潢谎惶簧璜恍幌湟蝗磺隍徨遑肓篁鳇蟥癀\";\nvar nai = \"能乃奶耐奈鼐萘氖柰佴艿\";\nvar luan = \"乱卵滦峦鸾栾銮挛孪脔娈\";\nvar qie = \"切且契窃茄砌锲怯伽惬妾趄挈郄箧慊\";\nvar jian = \"建间件见坚检健监减简艰践兼鉴键渐柬剑尖肩舰荐箭浅剪俭碱茧奸歼拣捡煎贱溅槛涧堑笺谏饯锏缄睑謇蹇腱菅翦戬毽笕犍硷鞯牮枧湔鲣囝裥踺搛缣鹣蒹谫僭戋趼楗\";\nvar nan = \"南难男楠喃囡赧腩囝蝻\";\nvar qian = \"前千钱签潜迁欠纤牵浅遣谦乾铅歉黔谴嵌倩钳茜虔堑钎骞阡掮钤扦芊犍荨仟芡悭缱佥愆褰凵肷岍搴箝慊椠\";\nvar qiang = \"强抢疆墙枪腔锵呛羌蔷襁羟跄樯戕嫱戗炝镪锖蜣\";\nvar xiang = \"向项相想乡象响香降像享箱羊祥湘详橡巷翔襄厢镶飨饷缃骧芗庠鲞葙蟓\";\nvar jiao = \"教交较校角觉叫脚缴胶轿郊焦骄浇椒礁佼蕉娇矫搅绞酵剿嚼饺窖跤蛟侥狡姣皎茭峤铰醮鲛湫徼鹪僬噍艽挢敫\";\nvar zhuo = \"着著缴桌卓捉琢灼浊酌拙茁涿镯淖啄濯焯倬擢斫棹诼浞禚\";\nvar qiao = \"桥乔侨巧悄敲俏壳雀瞧翘窍峭锹撬荞跷樵憔鞘橇峤诮谯愀鞒硗劁缲\";\nvar xiao = \"小效销消校晓笑肖削孝萧俏潇硝宵啸嚣霄淆哮筱逍姣箫骁枭哓绡蛸崤枵魈\";\nvar si = \"司四思斯食私死似丝饲寺肆撕泗伺嗣祀厮驷嘶锶俟巳蛳咝耜笥纟糸鸶缌澌姒汜厶兕\";\nvar kai = \"开凯慨岂楷恺揩锴铠忾垲剀锎蒈\";\nvar jin = \"进金今近仅紧尽津斤禁锦劲晋谨筋巾浸襟靳瑾烬缙钅矜觐堇馑荩噤廑妗槿赆衿卺\";\nvar qin = \"亲勤侵秦钦琴禽芹沁寝擒覃噙矜嗪揿溱芩衾廑锓吣檎螓\";\nvar jing = \"经京精境竞景警竟井惊径静劲敬净镜睛晶颈荆兢靖泾憬鲸茎腈菁胫阱旌粳靓痉箐儆迳婧肼刭弪獍\";\nvar ying = \"应营影英景迎映硬盈赢颖婴鹰荧莹樱瑛蝇萦莺颍膺缨瀛楹罂荥萤鹦滢蓥郢茔嘤璎嬴瘿媵撄潆\";\nvar jiu = \"就究九酒久救旧纠舅灸疚揪咎韭玖臼柩赳鸠鹫厩啾阄桕僦鬏\";\nvar zui = \"最罪嘴醉咀蕞觜\";\nvar juan = \"卷捐圈眷娟倦绢隽镌涓鹃鄄蠲狷锩桊\";\nvar suan = \"算酸蒜狻\";\nvar yun = \"员运云允孕蕴韵酝耘晕匀芸陨纭郧筠恽韫郓氲殒愠昀菀狁\";\nvar qun = \"群裙逡麇\";\nvar ka = \"卡喀咖咔咯佧胩\";\nvar kang = \"康抗扛慷炕亢糠伉钪闶\";\nvar keng = \"坑铿吭\";\nvar kao = \"考靠烤拷铐栲尻犒\";\nvar ken = \"肯垦恳啃龈裉\";\nvar yin = \"因引银印音饮阴隐姻殷淫尹荫吟瘾寅茵圻垠鄞湮蚓氤胤龈窨喑铟洇狺夤廴吲霪茚堙\";\nvar kong = \"空控孔恐倥崆箜\";\nvar ku = \"苦库哭酷裤枯窟挎骷堀绔刳喾\";\nvar kua = \"跨夸垮挎胯侉\";\nvar kui = \"亏奎愧魁馈溃匮葵窥盔逵睽馗聩喟夔篑岿喹揆隗傀暌跬蒉愦悝蝰\";\nvar kuan = \"款宽髋\";\nvar kuang = \"况矿框狂旷眶匡筐邝圹哐贶夼诳诓纩\";\nvar que = \"确却缺雀鹊阙瘸榷炔阕悫\";\nvar kun = \"困昆坤捆琨锟鲲醌髡悃阃\";\nvar kuo = \"扩括阔廓蛞\";\nvar la = \"拉落垃腊啦辣蜡喇剌旯砬邋瘌\";\nvar lai = \"来莱赖睐徕籁涞赉濑癞崃疠铼\";\nvar lan = \"兰览蓝篮栏岚烂滥缆揽澜拦懒榄斓婪阑褴罱啉谰镧漤\";\nvar lin = \"林临邻赁琳磷淋麟霖鳞凛拎遴蔺吝粼嶙躏廪檩啉辚膦瞵懔\";\nvar lang = \"浪朗郎廊狼琅榔螂阆锒莨啷蒗稂\";\nvar liang = \"量两粮良辆亮梁凉谅粱晾靓踉莨椋魉墚\";\nvar lao = \"老劳落络牢捞涝烙姥佬崂唠酪潦痨醪铑铹栳耢\";\nvar mu = \"目模木亩幕母牧莫穆姆墓慕牟牡募睦缪沐暮拇姥钼苜仫毪坶\";\nvar le = \"了乐勒肋叻鳓嘞仂泐\";\nvar lei = \"类累雷勒泪蕾垒磊擂镭肋羸耒儡嫘缧酹嘞诔檑\";\nvar sui = \"随岁虽碎尿隧遂髓穗绥隋邃睢祟濉燧谇眭荽\";\nvar lie = \"列烈劣裂猎冽咧趔洌鬣埒捩躐\";\nvar leng = \"冷愣棱楞塄\";\nvar ling = \"领令另零灵龄陵岭凌玲铃菱棱伶羚苓聆翎泠瓴囹绫呤棂蛉酃鲮柃\";\nvar lia = \"俩\";\nvar liao = \"了料疗辽廖聊寥缪僚燎缭撂撩嘹潦镣寮蓼獠钌尥鹩\";\nvar liu = \"流刘六留柳瘤硫溜碌浏榴琉馏遛鎏骝绺镏旒熘鹨锍\";\nvar lun = \"论轮伦仑纶沦抡囵\";\nvar lv = \"率律旅绿虑履吕铝屡氯缕滤侣驴榈闾偻褛捋膂稆\";\nvar lou = \"楼露漏陋娄搂篓喽镂偻瘘髅耧蝼嵝蒌\";\nvar mao = \"贸毛矛冒貌茂茅帽猫髦锚懋袤牦卯铆耄峁瑁蟊茆蝥旄泖昴瞀\";\nvar long = \"龙隆弄垄笼拢聋陇胧珑窿茏咙砻垅泷栊癃\";\nvar nong = \"农浓弄脓侬哝\";\nvar shuang = \"双爽霜孀泷\";\nvar shu = \"术书数属树输束述署朱熟殊蔬舒疏鼠淑叔暑枢墅俞曙抒竖蜀薯梳戍恕孰沭赎庶漱塾倏澍纾姝菽黍腧秫毹殳疋摅\";\nvar shuai = \"率衰帅摔甩蟀\";\nvar lve = \"略掠锊\";\nvar ma = \"么马吗摩麻码妈玛嘛骂抹蚂唛蟆犸杩\";\nvar me = \"么麽\";\nvar mai = \"买卖麦迈脉埋霾荬劢\";\nvar man = \"满慢曼漫埋蔓瞒蛮鳗馒幔谩螨熳缦镘颟墁鞔\";\nvar mi = \"米密秘迷弥蜜谜觅靡泌眯麋猕谧咪糜宓汨醚嘧弭脒冖幂祢縻蘼芈糸敉\";\nvar men = \"们门闷瞒汶扪焖懑鞔钔\";\nvar mang = \"忙盲茫芒氓莽蟒邙硭漭\";\nvar meng = \"蒙盟梦猛孟萌氓朦锰檬勐懵蟒蜢虻黾蠓艨甍艋瞢礞\";\nvar miao = \"苗秒妙描庙瞄缪渺淼藐缈邈鹋杪眇喵\";\nvar mou = \"某谋牟缪眸哞鍪蛑侔厶\";\nvar miu = \"缪谬\";\nvar mei = \"美没每煤梅媒枚妹眉魅霉昧媚玫酶镁湄寐莓袂楣糜嵋镅浼猸鹛\";\nvar wen = \"文问闻稳温纹吻蚊雯紊瘟汶韫刎璺玟阌\";\nvar mie = \"灭蔑篾乜咩蠛\";\nvar ming = \"明名命鸣铭冥茗溟酩瞑螟暝\";\nvar na = \"内南那纳拿哪娜钠呐捺衲镎肭\";\nvar nei = \"内那哪馁\";\nvar nuo = \"难诺挪娜糯懦傩喏搦锘\";\nvar ruo = \"若弱偌箬\";\nvar nang = \"囊馕囔曩攮\";\nvar nao = \"脑闹恼挠瑙淖孬垴铙桡呶硇猱蛲\";\nvar ni = \"你尼呢泥疑拟逆倪妮腻匿霓溺旎昵坭铌鲵伲怩睨猊\";\nvar nen = \"嫩恁\";\nvar neng = \"能\";\nvar nin = \"您恁\";\nvar niao = \"鸟尿溺袅脲茑嬲\";\nvar nie = \"摄聂捏涅镍孽捻蘖啮蹑嗫臬镊颞乜陧\";\nvar niang = \"娘酿\";\nvar ning = \"宁凝拧泞柠咛狞佞聍甯\";\nvar nu = \"努怒奴弩驽帑孥胬\";\nvar nv = \"女钕衄恧\";\nvar ru = \"入如女乳儒辱汝茹褥孺濡蠕嚅缛溽铷洳薷襦颥蓐\";\nvar nuan = \"暖\";\nvar nve = \"虐疟\";\nvar re = \"热若惹喏\";\nvar ou = \"区欧偶殴呕禺藕讴鸥瓯沤耦怄\";\nvar pao = \"跑炮泡抛刨袍咆疱庖狍匏脬\";\nvar pou = \"剖掊裒\";\nvar pen = \"喷盆湓\";\nvar pie = \"瞥撇苤氕丿\";\nvar pin = \"品贫聘频拼拚颦姘嫔榀牝\";\nvar se = \"色塞瑟涩啬穑铯槭\";\nvar qing = \"情青清请亲轻庆倾顷卿晴氢擎氰罄磬蜻箐鲭綮苘黥圊檠謦\";\nvar zan = \"赞暂攒堑昝簪糌瓒錾趱拶\";\nvar shao = \"少绍召烧稍邵哨韶捎勺梢鞘芍苕劭艄筲杓潲\";\nvar sao = \"扫骚嫂梢缫搔瘙臊埽缲鳋\";\nvar sha = \"沙厦杀纱砂啥莎刹杉傻煞鲨霎嗄痧裟挲铩唼歃\";\nvar xuan = \"县选宣券旋悬轩喧玄绚渲璇炫萱癣漩眩暄煊铉楦泫谖痃碹揎镟儇\";\nvar ran = \"然染燃冉苒髯蚺\";\nvar rang = \"让壤攘嚷瓤穰禳\";\nvar rao = \"绕扰饶娆桡荛\";\nvar reng = \"仍扔\";\nvar ri = \"日\";\nvar rou = \"肉柔揉糅鞣蹂\";\nvar ruan = \"软阮朊\";\nvar run = \"润闰\";\nvar sa = \"萨洒撒飒卅仨脎\";\nvar suo = \"所些索缩锁莎梭琐嗦唆唢娑蓑羧挲桫嗍睃\";\nvar sai = \"思赛塞腮噻鳃\";\nvar shui = \"说水税谁睡氵\";\nvar sang = \"桑丧嗓搡颡磉\";\nvar sen = \"森\";\nvar seng = \"僧\";\nvar shai = \"筛晒\";\nvar shang = \"上商尚伤赏汤裳墒晌垧觞殇熵绱\";\nvar xing = \"行省星腥猩惺兴刑型形邢饧醒幸杏性姓陉荇荥擤悻硎\";\nvar shou = \"收手受首售授守寿瘦兽狩绶艏扌\";\nvar shuo = \"说数硕烁朔铄妁槊蒴搠\";\nvar su = \"速素苏诉缩塑肃俗宿粟溯酥夙愫簌稣僳谡涑蔌嗉觫\";\nvar shua = \"刷耍唰\";\nvar shuan = \"栓拴涮闩\";\nvar shun = \"顺瞬舜吮\";\nvar song = \"送松宋讼颂耸诵嵩淞怂悚崧凇忪竦菘\";\nvar sou = \"艘搜擞嗽嗖叟馊薮飕嗾溲锼螋瞍\";\nvar sun = \"损孙笋荪榫隼狲飧\";\nvar teng = \"腾疼藤滕誊\";\nvar tie = \"铁贴帖餮萜\";\nvar tu = \"土突图途徒涂吐屠兔秃凸荼钍菟堍酴\";\nvar wai = \"外歪崴\";\nvar wang = \"王望往网忘亡旺汪枉妄惘罔辋魍\";\nvar weng = \"翁嗡瓮蓊蕹\";\nvar zhua = \"抓挝爪\";\nvar yang = \"样养央阳洋扬杨羊详氧仰秧痒漾疡泱殃恙鸯徉佯怏炀烊鞅蛘\";\nvar xiong = \"雄兄熊胸凶匈汹芎\";\nvar yo = \"哟唷\";\nvar yong = \"用永拥勇涌泳庸俑踊佣咏雍甬镛臃邕蛹恿慵壅痈鳙墉饔喁\";\nvar za = \"杂扎咱砸咋匝咂拶\";\nvar zai = \"在再灾载栽仔宰哉崽甾\";\nvar zao = \"造早遭枣噪灶燥糟凿躁藻皂澡蚤唣\";\nvar zei = \"贼\";\nvar zen = \"怎谮\";\nvar zeng = \"增曾综赠憎锃甑罾缯\";\nvar zhei = \"这\";\nvar zou = \"走邹奏揍诹驺陬楱鄹鲰\";\nvar zhuai = \"转拽\";\nvar zun = \"尊遵鳟樽撙\";\nvar dia = \"嗲\";\nvar nou = \"耨\";\nvar pinyin_dict_notone_default = {\n\ta,\n\te,\n\tai,\n\tei,\n\txi,\n\tyi,\n\tan,\n\than,\n\tang,\n\tao,\n\twa,\n\tyu,\n\tniu,\n\to,\n\tba,\n\tpa,\n\tpi,\n\tbi,\n\tbai,\n\tbo,\n\tbei,\n\tban,\n\tpan,\n\tbin,\n\tbang,\n\tpang,\n\tbeng,\n\tbao,\n\tbu,\n\tpu,\n\tmian,\n\tpo,\n\tfan,\n\tfu,\n\tben,\n\tfeng,\n\tbian,\n\tpian,\n\tzhen,\n\tbiao,\n\tpiao,\n\thuo,\n\tbie,\n\tmin,\n\tfen,\n\tbing,\n\tgeng,\n\tfang,\n\txian,\n\tfou,\n\tca,\n\tcha,\n\tcai,\n\tcan,\n\tshen,\n\tcen,\n\tsan,\n\tcang,\n\tzang,\n\tchen,\n\tcao,\n\tce,\n\tze,\n\tzhai,\n\tdao,\n\tceng,\n\tzha,\n\tchai,\n\tci,\n\tzi,\n\tcuo,\n\tchan,\n\tshan,\n\tzhan,\n\txin,\n\tlian,\n\tchang,\n\tzhang,\n\tchao,\n\tzhao,\n\tzhou,\n\tche,\n\tju,\n\tcheng,\n\trong,\n\tsheng,\n\tdeng,\n\tzhi,\n\tzheng,\n\ttang,\n\tchi,\n\tshi,\n\tqi,\n\tchuai,\n\ttuo,\n\tduo,\n\txue,\n\tchong,\n\tchou,\n\tqiu,\n\txiu,\n\tchu,\n\ttuan,\n\tzhui,\n\tchuan,\n\tzhuan,\n\tyuan,\n\tcuan,\n\tchuang,\n\tzhuang,\n\tchui,\n\tchun,\n\tzhun,\n\tcu,\n\tdun,\n\tqu,\n\txu,\n\tchuo,\n\tzu,\n\tji,\n\tcong,\n\tzong,\n\tcou,\n\tcui,\n\twei,\n\tcun,\n\tzuo,\n\tzuan,\n\tda,\n\tdai,\n\ttai,\n\tta,\n\tdan,\n\tlu,\n\ttan,\n\tren,\n\tjie,\n\tyan,\n\tdang,\n\ttao,\n\ttiao,\n\tte,\n\tde,\n\tdei,\n\tdi,\n\tti,\n\ttui,\n\tyou,\n\tdian,\n\ttian,\n\tzhu,\n\tnian,\n\tdiao,\n\tyao,\n\tdie,\n\tshe,\n\tye,\n\txie,\n\tzhe,\n\tding,\n\tdiu,\n\tting,\n\tdong,\n\ttong,\n\tzhong,\n\tdou,\n\tdu,\n\tduan,\n\tdui,\n\trui,\n\tyue,\n\ttun,\n\thui,\n\twu,\n\tya,\n\the,\n\two,\n\ten,\n\tn,\n\ter,\n\tfa,\n\tquan,\n\tfei,\n\tpei,\n\tping,\n\tfo,\n\thu,\n\tga,\n\tge,\n\tha,\n\txia,\n\tgai,\n\thai,\n\tgan,\n\tgang,\n\tjiang,\n\thang,\n\tgong,\n\thong,\n\tguang,\n\tqiong,\n\tgao,\n\thao,\n\tli,\n\tjia,\n\tluo,\n\tke,\n\tqia,\n\tgei,\n\tgen,\n\then,\n\tgou,\n\tkou,\n\tgu,\n\tpai,\n\tgua,\n\ttou,\n\tguai,\n\tkuai,\n\tguan,\n\twan,\n\tne,\n\tgui,\n\tjun,\n\tjiong,\n\tjue,\n\tgun,\n\thun,\n\tguo,\n\thei,\n\tkan,\n\theng,\n\tmo,\n\tpeng,\n\thou,\n\thua,\n\thuai,\n\thuan,\n\txun,\n\thuang,\n\tnai,\n\tluan,\n\tqie,\n\tjian,\n\tnan,\n\tqian,\n\tqiang,\n\txiang,\n\tjiao,\n\tzhuo,\n\tqiao,\n\txiao,\n\tsi,\n\tkai,\n\tjin,\n\tqin,\n\tjing,\n\tying,\n\tjiu,\n\tzui,\n\tjuan,\n\tsuan,\n\tyun,\n\tqun,\n\tka,\n\tkang,\n\tkeng,\n\tkao,\n\tken,\n\tyin,\n\tkong,\n\tku,\n\tkua,\n\tkui,\n\tkuan,\n\tkuang,\n\tque,\n\tkun,\n\tkuo,\n\tla,\n\tlai,\n\tlan,\n\tlin,\n\tlang,\n\tliang,\n\tlao,\n\tmu,\n\tle,\n\tlei,\n\tsui,\n\tlie,\n\tleng,\n\tling,\n\tlia,\n\tliao,\n\tliu,\n\tlun,\n\tlv,\n\tlou,\n\tmao,\n\tlong,\n\tnong,\n\tshuang,\n\tshu,\n\tshuai,\n\tlve,\n\tma,\n\tme,\n\tmai,\n\tman,\n\tmi,\n\tmen,\n\tmang,\n\tmeng,\n\tmiao,\n\tmou,\n\tmiu,\n\tmei,\n\twen,\n\tmie,\n\tming,\n\tna,\n\tnei,\n\tnuo,\n\truo,\n\tnang,\n\tnao,\n\tni,\n\tnen,\n\tneng,\n\tnin,\n\tniao,\n\tnie,\n\tniang,\n\tning,\n\tnu,\n\tnv,\n\tru,\n\tnuan,\n\tnve,\n\tre,\n\tou,\n\tpao,\n\tpou,\n\tpen,\n\tpie,\n\tpin,\n\tse,\n\tqing,\n\tzan,\n\tshao,\n\tsao,\n\tsha,\n\txuan,\n\tran,\n\trang,\n\trao,\n\treng,\n\tri,\n\trou,\n\truan,\n\trun,\n\tsa,\n\tsuo,\n\tsai,\n\tshui,\n\tsang,\n\tsen,\n\tseng,\n\tshai,\n\tshang,\n\txing,\n\tshou,\n\tshuo,\n\tsu,\n\tshua,\n\tshuan,\n\tshun,\n\tsong,\n\tsou,\n\tsun,\n\tteng,\n\ttie,\n\ttu,\n\twai,\n\twang,\n\tweng,\n\tzhua,\n\tyang,\n\txiong,\n\tyo,\n\tyong,\n\tza,\n\tzai,\n\tzao,\n\tzei,\n\tzen,\n\tzeng,\n\tzhei,\n\tzou,\n\tzhuai,\n\tzun,\n\tdia,\n\tnou\n};\n\n//#endregion\n//#region src/advanced-pinyin.ts\nconst MAX_WEIGHT = 5;\nvar AdvancedPinyinEngine = class {\n\tcurrentInput = \"\";\n\tcandidates = [];\n\tdb;\n\tpinyinDict = pinyin_dict_notone_default;\n\tpinyinCharTable;\n\tinitializationPromise;\n\tconstructor() {\n\t\tthis.db = new Dexie(\"PinyinCharDB\");\n\t\tthis.db.version(1).stores({ pinyinCharEntries: \"++id, &[pinyin+char], pinyin, char, weight\" });\n\t\tthis.pinyinCharTable = this.db.table(\"pinyinCharEntries\");\n\t\tthis.initializationPromise = this.initializeDatabase();\n\t}\n\tasync initializeDatabase() {\n\t\ttry {\n\t\t\tconst count = await this.pinyinCharTable.count();\n\t\t\tif (count === 0) {\n\t\t\t\tconst entries = [];\n\t\t\t\tfor (const [pinyin, charsStr] of Object.entries(this.pinyinDict)) for (const char of charsStr.split(\"\")) entries.push({\n\t\t\t\t\tpinyin,\n\t\t\t\t\tchar,\n\t\t\t\t\tweight: 1\n\t\t\t\t});\n\t\t\t\tawait this.pinyinCharTable.bulkAdd(entries);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"初始化 PinyinCharDB 失败:\", error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync processInput(input) {\n\t\tawait this.initializationPromise;\n\t\tthis.currentInput = input.toLowerCase();\n\t\tthis.candidates = [];\n\t\tif (!this.currentInput) return [];\n\t\tconst matchedEntriesList = await this.pinyinCharTable.where(\"pinyin\").startsWith(this.currentInput).toArray();\n\t\tconst getSortPriority = (entry, currentPinyin) => {\n\t\t\tconst isExactMatch = entry.pinyin === currentPinyin;\n\t\t\tconst hasCustomWeight = entry.weight > 1;\n\t\t\tif (isExactMatch && hasCustomWeight) return 1;\n\t\t\tif (!isExactMatch && hasCustomWeight) return 2;\n\t\t\tif (isExactMatch && !hasCustomWeight) return 3;\n\t\t\tif (!isExactMatch && !hasCustomWeight) return 4;\n\t\t\treturn 5;\n\t\t};\n\t\tmatchedEntriesList.sort((a$1, b) => {\n\t\t\tconst priorityA = getSortPriority(a$1, this.currentInput);\n\t\t\tconst priorityB = getSortPriority(b, this.currentInput);\n\t\t\tif (priorityA !== priorityB) return priorityA - priorityB;\n\t\t\tif (b.weight !== a$1.weight) return b.weight - a$1.weight;\n\t\t\treturn a$1.id - b.id;\n\t\t});\n\t\tthis.candidates = matchedEntriesList.map((entry) => entry.char);\n\t\tthis.candidates = [...new Set(this.candidates)];\n\t\treturn this.candidates;\n\t}\n\tasync selectCandidate(selectedChar) {\n\t\tawait this.initializationPromise;\n\t\tif (!this.currentInput) return;\n\t\tlet bestPinyinMatch = this.currentInput;\n\t\tfor (const pinyinKey of Object.keys(this.pinyinDict)) if (pinyinKey.startsWith(this.currentInput) && this.pinyinDict[pinyinKey].includes(selectedChar)) {\n\t\t\tif (pinyinKey.length > bestPinyinMatch.length || pinyinKey === this.currentInput) {\n\t\t\t\tbestPinyinMatch = pinyinKey;\n\t\t\t\tif (this.pinyinDict[this.currentInput]?.includes(selectedChar) && this.currentInput === pinyinKey) break;\n\t\t\t} else if (bestPinyinMatch === this.currentInput && this.pinyinDict[pinyinKey]?.includes(selectedChar)) bestPinyinMatch = pinyinKey;\n\t\t}\n\t\tif (!this.pinyinDict[bestPinyinMatch]?.includes(selectedChar)) {\n\t\t\tfor (const pinyinKey of Object.keys(this.pinyinDict)) if (this.pinyinDict[pinyinKey].includes(selectedChar)) {\n\t\t\t\tif (pinyinKey.startsWith(this.currentInput)) {\n\t\t\t\t\tbestPinyinMatch = pinyinKey;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (bestPinyinMatch === this.currentInput) bestPinyinMatch = pinyinKey;\n\t\t\t}\n\t\t}\n\t\tconst existingEntry = await this.pinyinCharTable.where({\n\t\t\tpinyin: bestPinyinMatch,\n\t\t\tchar: selectedChar\n\t\t}).first();\n\t\tif (existingEntry && existingEntry.id !== void 0) {\n\t\t\tconst newWeight = Math.min((existingEntry.weight || 0) + 1, MAX_WEIGHT);\n\t\t\tawait this.pinyinCharTable.update(existingEntry.id, { weight: newWeight });\n\t\t} else if (this.pinyinDict[bestPinyinMatch]) await this.pinyinCharTable.add({\n\t\t\tpinyin: bestPinyinMatch,\n\t\t\tchar: selectedChar,\n\t\t\tweight: 1\n\t\t});\n\t\telse console.warn(`无法为 ${selectedChar} 添加条目,拼音 ${bestPinyinMatch} 不在字典中。`);\n\t\tthis.clear();\n\t}\n\tclear() {\n\t\tthis.currentInput = \"\";\n\t\tthis.candidates = [];\n\t}\n\tgetCurrentInput() {\n\t\treturn this.currentInput;\n\t}\n\tgetCandidates() {\n\t\treturn this.candidates;\n\t}\n};\n\n//#endregion\n//#region src/canvas.ts\nvar CanvasDrawer = class {\n\tcanvas;\n\tctx;\n\tlastX = 0;\n\tlastY = 0;\n\tstrokeData = [];\n\tclearTimerId = null;\n\tisDrawing = false;\n\toptions;\n\tconstructor(canvas, options = {}) {\n\t\tthis.canvas = canvas;\n\t\tthis.options = {\n\t\t\tclearDelay: 1e3,\n\t\t\t...options\n\t\t};\n\t\tconst context = this.canvas.getContext(\"2d\");\n\t\tif (!context) throw new Error(\"Failed to get 2D rendering context\");\n\t\tthis.ctx = context;\n\t\tthis.setupCanvas();\n\t\tthis.attachEvents();\n\t}\n\tsetupCanvas() {\n\t\tthis.ctx.lineJoin = \"round\";\n\t\tthis.ctx.lineCap = \"round\";\n\t\tthis.ctx.lineWidth = 3;\n\t\tthis.ctx.strokeStyle = \"#000\";\n\t\tthis.clearCanvas();\n\t\tthis.drawGrid();\n\t}\n\tdrawGrid() {\n\t\tconst width = this.canvas.width;\n\t\tconst height = this.canvas.height;\n\t\tthis.ctx.save();\n\t\tthis.ctx.strokeStyle = \"#ddd\";\n\t\tthis.ctx.lineWidth = 1;\n\t\tthis.ctx.setLineDash([3, 3]);\n\t\tthis.ctx.beginPath();\n\t\tthis.ctx.moveTo(0, height / 2);\n\t\tthis.ctx.lineTo(width, height / 2);\n\t\tthis.ctx.moveTo(width / 2, 0);\n\t\tthis.ctx.lineTo(width / 2, height);\n\t\tthis.ctx.stroke();\n\t\tthis.ctx.setLineDash([]);\n\t\tthis.ctx.beginPath();\n\t\tthis.ctx.rect(0, 0, width, height);\n\t\tthis.ctx.stroke();\n\t\tthis.ctx.restore();\n\t}\n\tclearCanvas() {\n\t\tthis.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\t\tthis.drawGrid();\n\t\tthis.strokeData = [];\n\t\tthis.resetClearTimer();\n\t}\n\tstartDrawing(offsetX, offsetY) {\n\t\tthis.lastX = offsetX;\n\t\tthis.lastY = offsetY;\n\t\tthis.ctx.strokeStyle = \"#000\";\n\t\tthis.ctx.lineWidth = 3;\n\t\tthis.ctx.setLineDash([]);\n\t\tthis.strokeData.push(offsetX, offsetY, 0);\n\t}\n\tdraw(offsetX, offsetY) {\n\t\tthis.ctx.beginPath();\n\t\tthis.ctx.moveTo(this.lastX, this.lastY);\n\t\tthis.ctx.lineTo(offsetX, offsetY);\n\t\tthis.ctx.stroke();\n\t\tthis.lastX = offsetX;\n\t\tthis.lastY = offsetY;\n\t\tthis.strokeData.push(offsetX, offsetY, 0);\n\t}\n\tendStroke() {\n\t\tif (this.strokeData.length >= 3) this.strokeData[this.strokeData.length - 1] = 1;\n\t}\n\tgetStrokeData() {\n\t\treturn this.strokeData;\n\t}\n\tresetClearTimer() {\n\t\tif (this.clearTimerId) {\n\t\t\twindow.clearTimeout(this.clearTimerId);\n\t\t\tthis.clearTimerId = null;\n\t\t}\n\t}\n\tstartClearTimer() {\n\t\tthis.resetClearTimer();\n\t\tthis.clearTimerId = window.setTimeout(() => {\n\t\t\tthis.clearCanvas();\n\t\t\tthis.clearTimerId = null;\n\t\t}, this.options.clearDelay);\n\t}\n\tgetEventCoordinates(e$1) {\n\t\tif (e$1 instanceof MouseEvent) return {\n\t\t\toffsetX: e$1.offsetX,\n\t\t\toffsetY: e$1.offsetY\n\t\t};\n\t\telse {\n\t\t\tconst touch = e$1.touches[0] || e$1.changedTouches[0];\n\t\t\tconst rect = e$1.target.getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\toffsetX: touch.clientX - rect.left,\n\t\t\t\toffsetY: touch.clientY - rect.top\n\t\t\t};\n\t\t}\n\t}\n\thandleStart = (e$1) => {\n\t\te$1.preventDefault();\n\t\tthis.isDrawing = true;\n\t\tconst { offsetX, offsetY } = this.getEventCoordinates(e$1);\n\t\tthis.startDrawing(offsetX, offsetY);\n\t\tthis.resetClearTimer();\n\t};\n\thandleMove = (e$1) => {\n\t\tif (!this.isDrawing) return;\n\t\te$1.preventDefault();\n\t\tconst { offsetX, offsetY } = this.getEventCoordinates(e$1);\n\t\tthis.draw(offsetX, offsetY);\n\t\tthis.resetClearTimer();\n\t};\n\thandleEnd = (e$1) => {\n\t\tif (!this.isDrawing) return;\n\t\te$1.preventDefault();\n\t\tthis.isDrawing = false;\n\t\tthis.endStroke();\n\t\tthis.startClearTimer();\n\t\tif (this.options.onDrawEnd) this.options.onDrawEnd();\n\t};\n\tattachEvents() {\n\t\tthis.canvas.addEventListener(\"mousedown\", this.handleStart);\n\t\tthis.canvas.addEventListener(\"mousemove\", this.handleMove);\n\t\tthis.canvas.addEventListener(\"mouseup\", this.handleEnd);\n\t\tthis.canvas.addEventListener(\"mouseleave\", this.handleEnd);\n\t\tthis.canvas.addEventListener(\"touchstart\", this.handleStart, { passive: false });\n\t\tthis.canvas.addEventListener(\"touchmove\", this.handleMove, { passive: false });\n\t\tthis.canvas.addEventListener(\"touchend\", this.handleEnd);\n\t\tthis.canvas.addEventListener(\"touchcancel\", this.handleEnd);\n\t}\n\tdetachEvents() {\n\t\tthis.canvas.removeEventListener(\"mousedown\", this.handleStart);\n\t\tthis.canvas.removeEventListener(\"mousemove\", this.handleMove);\n\t\tthis.canvas.removeEventListener(\"mouseup\", this.handleEnd);\n\t\tthis.canvas.removeEventListener(\"mouseleave\", this.handleEnd);\n\t\tthis.canvas.removeEventListener(\"touchstart\", this.handleStart);\n\t\tthis.canvas.removeEventListener(\"touchmove\", this.handleMove);\n\t\tthis.canvas.removeEventListener(\"touchend\", this.handleEnd);\n\t\tthis.canvas.removeEventListener(\"touchcancel\", this.handleEnd);\n\t}\n\tdestroy() {\n\t\tthis.detachEvents();\n\t\tthis.resetClearTimer();\n\t}\n\tgetCanvas() {\n\t\treturn this.canvas;\n\t}\n\tgetContext() {\n\t\treturn this.ctx;\n\t}\n};\n\n//#endregion\n//#region src/dom.ts\n/**\n\n* 计算键盘的显示位置\n\n* @param inputElement 输入框元素\n\n* @param keyboardElement 键盘元素\n\n* @param positionMode 位置模式:'static'(静态,不计算位置)、'float'(浮动,根据输入框位置计算)、'bottom'(固定在底部)\n\n* @returns 返回键盘的 top 和 left 位置,如果不需要计算则返回 null\n\n*/\nfunction calculateKeyboardPosition(inputElement, keyboardElement, positionMode) {\n\tif (!inputElement || !keyboardElement || positionMode === \"static\") return null;\n\tlet top, left;\n\tif (positionMode === \"bottom\") {\n\t\ttop = window.innerHeight - keyboardElement.offsetHeight;\n\t\tleft = 0;\n\t} else {\n\t\tconst inputRect = inputElement.getBoundingClientRect();\n\t\tconst keyboardWidth = keyboardElement.offsetWidth;\n\t\ttop = inputRect.bottom + window.scrollY;\n\t\tleft = inputRect.left + window.scrollX + inputRect.width / 2 - keyboardWidth / 2;\n\t\tconst viewportWidth = window.innerWidth;\n\t\tif (left + keyboardWidth > viewportWidth) left = viewportWidth - keyboardWidth - 10;\n\t\tif (left < 10) left = 10;\n\t}\n\treturn {\n\t\ttop: `${top}px`,\n\t\tleft: `${left}px`\n\t};\n}\n\n//#endregion\n//#region src/input.ts\n/**\n\n* 判断元素是否为可输入元素(支持文本输入的 input 或 textarea)\n\n* @param el 要检测的元素\n\n* @returns 如果是可输入元素则返回 true\n\n*/\nfunction isInputElement(el) {\n\tif (!el) return false;\n\tif (el.tagName === \"TEXTAREA\") return true;\n\tif (el.tagName === \"INPUT\") {\n\t\tconst inputElement = el;\n\t\tconst inputType = (inputElement.type || \"text\").toLowerCase();\n\t\tconst nonTextInputTypes = [\n\t\t\t\"checkbox\",\n\t\t\t\"radio\",\n\t\t\t\"button\",\n\t\t\t\"submit\",\n\t\t\t\"reset\",\n\t\t\t\"file\",\n\t\t\t\"image\",\n\t\t\t\"range\",\n\t\t\t\"color\",\n\t\t\t\"hidden\",\n\t\t\t\"date\",\n\t\t\t\"datetime-local\",\n\t\t\t\"month\",\n\t\t\t\"week\",\n\t\t\t\"time\"\n\t\t];\n\t\treturn !nonTextInputTypes.includes(inputType);\n\t}\n\treturn false;\n}\n/**\n\n* 获取当前激活的输入元素\n\n* @throws {Error} 如果当前没有激活的输入框\n\n*/\nfunction getInputElement() {\n\tif (document.activeElement && isInputElement(document.activeElement)) return document.activeElement;\n\telse throw new Error(\"输入框没有被激活\");\n}\n/**\n\n* 更新输入框值并设置光标,触发 input 事件\n\n*/\nfunction applyEdit(inputElement, value, cursor) {\n\tinputElement.value = value;\n\tmoveCursor(inputElement, cursor);\n\tinputElement.dispatchEvent(new Event(\"input\", { bubbles: true }));\n}\n/**\n\n* 通用字符串编辑:从 start 位置删除 deleteCount 个字符,并插入 insertText\n\n*/\nfunction editString(text, start, deleteCount, insertText = \"\") {\n\treturn text.slice(0, start) + insertText + text.slice(start + deleteCount);\n}\n/**\n\n* 通用输入框编辑:插入文本或删除字符\n\n*/\nfunction processInputElement(inputElement, insertText = \"\") {\n\tconst maxlength = Number(inputElement.getAttribute(\"maxlength\"));\n\tlet start = inputElement.selectionStart ?? 0;\n\tconst end = inputElement.selectionEnd ?? start;\n\tlet deleteCount;\n\tif (insertText.length > 0) deleteCount = end - start;\n\telse {\n\t\tconst selLen = end - start;\n\t\tif (selLen > 0) deleteCount = selLen;\n\t\telse if (start > 0) {\n\t\t\tdeleteCount = 1;\n\t\t\tstart--;\n\t\t} else return;\n\t}\n\tif (insertText.length > 0 && maxlength && inputElement.value.length - deleteCount + insertText.length > maxlength) return;\n\tconst newValue = editString(inputElement.value, start, deleteCount, insertText);\n\tconst newCursor = start + insertText.length;\n\tapplyEdit(inputElement, newValue, newCursor);\n}\n/**\n\n* 向输入框插入文本\n\n* @param inputElement 输入框元素\n\n* @param text 要插入的文本\n\n*/\nfunction writeToInputElement(inputElement, text) {\n\tprocessInputElement(inputElement, text);\n}\n/**\n\n* 向输入框删除文本\n\n* @param inputElement 输入框元素\n\n*/\nfunction delToInputElement(inputElement) {\n\tprocessInputElement(inputElement);\n}\n/**\n\n* 设置输入框光标位置\n\n* @param inputElement 输入框元素\n\n* @param index 光标位置索引\n\n*/\nfunction moveCursor(inputElement, index) {\n\tinputElement.selectionStart = index;\n\tinputElement.selectionEnd = index;\n}\n\n//#endregion\n//#region src/pinyin.ts\n/**\n\n* 简单拼音输入法引擎\n\n*/\nvar SimplePinyinEngine = class {\n\tcurrentInput = \"\";\n\tcandidates = [];\n\tpinyinMap = pinyin_dict_notone_default;\n\t/**\n\t\n\t* 处理拼音输入\n\t\n\t* @param input 用户输入的拼音\n\t\n\t* @returns 候选词列表\n\t\n\t*/\n\tprocessInput(input) {\n\t\tthis.currentInput = input.toLowerCase();\n\t\tthis.candidates = [];\n\t\tif (this.currentInput) {\n\t\t\tlet exactMatch = \"\";\n\t\t\tlet prefixMatch = \"\";\n\t\t\tfor (const [pinyin, chars] of Object.entries(this.pinyinMap)) if (pinyin === this.currentInput) exactMatch += chars;\n\t\t\telse if (pinyin.startsWith(this.currentInput)) prefixMatch += chars;\n\t\t\tthis.candidates = [...new Set([...exactMatch.split(\"\"), ...prefixMatch.split(\"\")])];\n\t\t}\n\t\treturn this.candidates;\n\t}\n\t/**\n\t\n\t* 清空当前输入\n\t\n\t*/\n\tclear() {\n\t\tthis.currentInput = \"\";\n\t\tthis.candidates = [];\n\t}\n\t/**\n\t\n\t* 获取当前输入码\n\t\n\t*/\n\tgetCurrentInput() {\n\t\treturn this.currentInput;\n\t}\n\t/**\n\t\n\t* 获取当前候选词列表\n\t\n\t*/\n\tgetCandidates() {\n\t\treturn this.candidates;\n\t}\n\t/**\n\t\n\t* 选择候选词\n\t\n\t* @param index 候选词索引\n\t\n\t* @returns 选中的候选词\n\t\n\t*/\n\tselectCandidate(index) {\n\t\tif (index >= 0 && index < this.candidates.length) {\n\t\t\tconst selected = this.candidates[index];\n\t\t\tthis.clear();\n\t\t\treturn selected;\n\t\t}\n\t\treturn null;\n\t}\n};\n\n//#endregion\nexport { AdvancedPinyinEngine, CanvasDrawer, SimplePinyinEngine, calculateKeyboardPosition, delToInputElement, getInputElement, isInputElement, moveCursor, writeToInputElement };\n//# sourceMappingURL=index.mjs.map","import type { HandwritingRecognizer } from '@zh-keyboard/core'\r\n\r\n// 全局变量用于存储手写识别服务实例\r\nlet handwritingRecognizerInstance: HandwritingRecognizer | null = null\r\n\r\n/**\r\n * 注册手写识别服务\r\n * @param recognizer 手写识别服务实现\r\n */\r\nexport function registerHandwritingRecognizer(recognizer: HandwritingRecognizer): void {\r\n handwritingRecognizerInstance = recognizer\r\n}\r\n\r\n/**\r\n * 获取手写识别服务实例\r\n * @returns 手写识别服务实例\r\n */\r\nexport function getHandwritingRecognizer(): HandwritingRecognizer | null {\r\n return handwritingRecognizerInstance\r\n}\r\n","import { onMounted, onUnmounted, ref } from 'vue'\r\nimport { getHandwritingRecognizer } from '../utils/handwriting'\r\n\r\nexport function useHandwritingRecognizer(enableHandwriting = false) {\r\n // 是否初始化了手写识别服务\r\n const recognizerInitialized = ref(false)\r\n\r\n /**\r\n * 初始化手写识别服务\r\n */\r\n async function initializeRecognizer() {\r\n const recognizer = getHandwritingRecognizer()\r\n if (recognizer) {\r\n try {\r\n recognizerInitialized.value = await recognizer.initialize()\r\n } catch (error) {\r\n console.error('初始化手写识别服务失败:', error)\r\n recognizerInitialized.value = false\r\n }\r\n } else {\r\n console.warn('未注册手写识别服务')\r\n recognizerInitialized.value = false\r\n }\r\n }\r\n\r\n /**\r\n * 关闭手写识别服务\r\n */\r\n async function closeRecognizer() {\r\n const recognizer = getHandwritingRecognizer()\r\n if (recognizer && recognizerInitialized.value) {\r\n try {\r\n await recognizer.close()\r\n recognizerInitialized.value = false\r\n } catch (error) {\r\n console.error('关闭手写识别服务失败:', error)\r\n }\r\n }\r\n }\r\n\r\n // 封装生命周期钩子\r\n onMounted(() => {\r\n if (enableHandwriting) {\r\n initializeRecognizer()\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n closeRecognizer()\r\n })\r\n\r\n return {\r\n recognizerInitialized,\r\n }\r\n}\r\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z'%20/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z'%20/%3e%3c/svg%3e\"","<script setup lang=\"ts\">\r\nimport '../styles/CandidateList.scss'\r\n\r\ndefineProps<{\r\n candidates: string[]\r\n}>()\r\n\r\nconst emit = defineEmits<{\r\n (e: 'select', candidate: string): void\r\n}>()\r\n\r\nfunction handleSelect(candidate: string) {\r\n emit('select', candidate)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"zhk-candidate-list\">\r\n <button\r\n v-for=\"(candidate, index) in candidates\"\r\n :key=\"`candidate-${index}`\"\r\n class=\"zhk-candidate-list__item\"\r\n @click=\"handleSelect(candidate)\"\r\n >\r\n {{ candidate }}\r\n </button>\r\n </div>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport type { KeyEvent } from '../types'\r\nimport { useElementSize } from '@vueuse/core'\r\nimport { CanvasDrawer } from '@zh-keyboard/core'\r\nimport { nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\r\nimport { getHandwritingRecognizer } from '../utils/handwriting'\r\nimport CandidateList from './CandidateList.vue'\r\nimport '../styles/HandwritingInput.scss'\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n (e: 'exit', payload: void): void\r\n}>()\r\n\r\nconst canvasRef = ref<HTMLCanvasElement | null>(null)\r\nconst containerRef = ref<HTMLDivElement | null>(null)\r\nlet canvasDrawer: CanvasDrawer | null = null\r\n// 是否正在识别中\r\nconst isRecognizing = ref(false)\r\n\r\n// 使用useElementSize获取容器尺寸\r\nconst { height: canvasSize } = useElementSize(containerRef)\r\n\r\nfunction clearCanvas() {\r\n if (!canvasDrawer)\r\n return\r\n canvasDrawer.clearCanvas()\r\n}\r\n\r\nfunction setupCanvas() {\r\n if (!canvasRef.value)\r\n return\r\n\r\n // 如果已存在画布处理器,先销毁它\r\n if (canvasDrawer) {\r\n canvasDrawer.destroy()\r\n }\r\n\r\n canvasDrawer = new CanvasDrawer(canvasRef.value, {\r\n onDrawEnd: recognizeStroke,\r\n })\r\n}\r\n\r\nconst candidates = ref<string[]>([])\r\n\r\n// 识别当前笔迹\r\nasync function recognizeStroke() {\r\n if (!canvasDrawer || canvasDrawer.getStrokeData().length === 0 || isRecognizing.value)\r\n return\r\n\r\n const recognizer = getHandwritingRecognizer()\r\n if (recognizer) {\r\n isRecognizing.value = true\r\n\r\n try {\r\n // 将 readonly array 转换为 mutable array\r\n const strokeData = [...canvasDrawer.getStrokeData()]\r\n const results = await recognizer.recognize(strokeData)\r\n\r\n candidates.value = results\r\n } catch (error) {\r\n console.error('识别笔迹失败:', error)\r\n } finally {\r\n isRecognizing.value = false\r\n }\r\n } else {\r\n console.warn('手写识别服务不可用')\r\n }\r\n}\r\n\r\n// 组件卸载时清理识别器和计时器\r\nonUnmounted(() => {\r\n if (canvasDrawer) {\r\n canvasDrawer.destroy()\r\n }\r\n})\r\n\r\n// 监听canvasSize变化,在尺寸变化时重新设置画布\r\nwatch(canvasSize, () => {\r\n if (canvasRef.value) {\r\n nextTick(() => {\r\n setupCanvas()\r\n })\r\n }\r\n})\r\n\r\n// 挂载时设置画布和初始化识别器\r\nonMounted(() => {\r\n setupCanvas()\r\n})\r\n\r\nfunction handleSelection(candidate: string) {\r\n emit('key', { key: candidate })\r\n candidates.value = []\r\n clearCanvas()\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"handwriting-input\">\r\n <CandidateList\r\n :candidates\r\n @select=\"handleSelection\"\r\n />\r\n <div ref=\"containerRef\" class=\"handwriting-content\">\r\n <div class=\"handwriting-buttons\">\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: '。' })\">\r\n 。\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: '?' })\">\r\n ?\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: '!' })\">\r\n !\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: '、' })\">\r\n 、\r\n </button>\r\n </div>\r\n <div class=\"handwriting-canvas-container\">\r\n <canvas\r\n ref=\"canvasRef\"\r\n class=\"handwriting-canvas\"\r\n :width=\"canvasSize\"\r\n :height=\"canvasSize\"\r\n ></canvas>\r\n </div>\r\n <div class=\"handwriting-buttons\">\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: 'delete', isControl: true })\">\r\n <img src=\"../assets/icons/keyboard-backspace.svg\" alt=\"删除\" />\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('exit')\">\r\n 返回\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: ',' })\">\r\n ,\r\n </button>\r\n <button class=\"handwriting-btn handwriting-btn--function\" @click=\"emit('key', { key: 'enter', isControl: true })\">\r\n <img src=\"../assets/icons/keyboard-return.svg\" alt=\"回车\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z'%20/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M3%2015H5V19H19V15H21V19C21%2020.1%2020.1%2021%2019%2021H5C3.9%2021%203%2020.1%203%2019V15Z'%20/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z'%20/%3e%3c/svg%3e\"","<script setup lang=\"ts\">\r\nimport '../styles/CandidateSelection.scss'\r\n\r\ndefineProps<{ candidates: string[] }>()\r\nconst emit = defineEmits<{\r\n (e: 'select', candidate: string): void\r\n (e: 'close'): void\r\n}>()\r\n\r\nfunction selectCandidate(candidate: string) {\r\n emit('select', candidate)\r\n}\r\n\r\nfunction closeModal() {\r\n emit('close')\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"zhk-selection\">\r\n <div class=\"zhk-selection__list\">\r\n <div v-for=\"(candidate, index) in candidates\" :key=\"index\" class=\"zhk-selection__text\" @click=\"selectCandidate(candidate)\">\r\n {{ candidate }}\r\n </div>\r\n </div>\r\n <div class=\"zhk-selection__func\">\r\n <button class=\"zhk-selection__func-btn\" @click=\"closeModal\">\r\n 返回\r\n </button>\r\n </div>\r\n </div>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport type { KeyEvent } from '../types'\r\nimport { AdvancedPinyinEngine } from '@zh-keyboard/core'\r\nimport { computed, ref, watchEffect } from 'vue'\r\nimport CandidateList from './CandidateList.vue'\r\nimport CandidateSelection from './CandidateSelection.vue'\r\nimport '../styles/CandidateBar.scss'\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n (e: 'input', text: string): void\r\n}>()\r\n\r\nconst currentPinyin = defineModel<string>({\r\n required: true,\r\n})\r\n\r\n// 拼音输入法引擎\r\nconst inputEngine = new AdvancedPinyinEngine()\r\n\r\n// 候选词列表\r\nconst candidates = ref<string[]>([])\r\n\r\nwatchEffect(async () => {\r\n candidates.value = await inputEngine.processInput(currentPinyin.value)\r\n})\r\n\r\nconst visibleCandidates = computed(() => candidates.value.slice(0, 30))\r\n\r\nconst isSelectionOpen = ref(false)\r\n\r\n// 选择候选词\r\nfunction handleSelection(selected: string) {\r\n inputEngine.selectCandidate(selected)\r\n emit('input', selected)\r\n currentPinyin.value = ''\r\n isSelectionOpen.value = false\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"zhk-candidate\">\r\n <div class=\"zhk-candidate__container\">\r\n <!-- 输入拼音显示 -->\r\n <div v-if=\"currentPinyin\" class=\"zhk-candidate__pinyin\">\r\n {{ currentPinyin }}\r\n </div>\r\n\r\n <div class=\"zhk-candidate__bottom-container\">\r\n <!-- 候选词列表 -->\r\n <CandidateList\r\n v-if=\"candidates.length > 0\"\r\n :candidates=\"visibleCandidates\"\r\n @select=\"handleSelection\"\r\n />\r\n <button\r\n v-if=\"candidates.length > 0\"\r\n class=\"zhk-candidate__more\"\r\n @click=\"isSelectionOpen = true\"\r\n >\r\n <img src=\"../assets/icons/chevron-right.svg\" alt=\"更多\" />\r\n </button>\r\n </div>\r\n </div>\r\n <CandidateSelection\r\n v-show=\"isSelectionOpen\"\r\n :candidates=\"candidates\"\r\n @select=\"handleSelection\"\r\n @close=\"isSelectionOpen = false\"\r\n />\r\n </div>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport type { KeyEvent } from '../types'\r\nimport { computed, ref } from 'vue'\r\nimport CandidateBar from './CandidateBar.vue'\r\nimport '../styles/KeyboardBase.scss'\r\n\r\nconst props = defineProps<{\r\n recognizerInitialized?: boolean\r\n enableHandwriting?: boolean\r\n}>()\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n}>()\r\n\r\nconst mode = defineModel<string>({\r\n default: 'en',\r\n})\r\n\r\nconst isUpperCase = ref(false)\r\n\r\nconst isChineseMode = computed(() => mode.value === 'zh')\r\n\r\nconst showUpperCase = computed(() => {\r\n return isChineseMode.value ? true : isUpperCase.value\r\n})\r\n\r\nfunction handleSpecialKey(key: string, isControl = false) {\r\n emit('key', { key, isControl })\r\n}\r\n\r\nfunction handleShift() {\r\n if (isChineseMode.value) {\r\n // 在中文模式下,切换到手写输入\r\n mode.value = 'hand'\r\n } else {\r\n // 在英文模式下,切换大小写\r\n isUpperCase.value = !isUpperCase.value\r\n }\r\n}\r\n\r\nfunction handleSwitchToNum() {\r\n // 切换到数字键盘\r\n mode.value = 'num'\r\n}\r\n\r\nfunction handleSwitchToSymbol() {\r\n // 切换到符号键盘\r\n mode.value = 'symbol'\r\n}\r\n\r\nconst numbersRow = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']\r\n\r\nconst keyboardRows = [\r\n ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],\r\n ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],\r\n ['z', 'x', 'c', 'v', 'b', 'n', 'm'],\r\n]\r\n\r\nconst pinyin = ref('')\r\n\r\nfunction handleDelete() {\r\n if (mode.value === 'zh' && pinyin.value) {\r\n // 在中文模式下,删除拼音\r\n pinyin.value = pinyin.value.slice(0, -1)\r\n return\r\n }\r\n handleSpecialKey('delete', true)\r\n}\r\n\r\nfunction handleKeyPress(key: string) {\r\n if (mode.value === 'zh') {\r\n // 在中文模式下,输入拼音\r\n pinyin.value += key\r\n return\r\n }\r\n const outputKey = isUpperCase.value ? key.toUpperCase() : key\r\n handleSpecialKey(outputKey)\r\n}\r\n\r\nfunction handleToggleLang() {\r\n mode.value = mode.value === 'zh' ? 'en' : 'zh'\r\n}\r\n\r\n// 计算手写按钮显示的文本\r\nconst handwritingButtonText = computed(() => {\r\n if (!props.enableHandwriting) {\r\n return '-'\r\n }\r\n if (!props.recognizerInitialized) {\r\n return '...'\r\n }\r\n return '手写'\r\n})\r\n\r\n// 计算手写按钮是否可点击\r\nconst isHandwritingButtonDisabled = computed(() => {\r\n return !props.enableHandwriting || !props.recognizerInitialized\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"zhk-base\">\r\n <div class=\"zhk-base__row\">\r\n <CandidateBar\r\n v-if=\"mode === 'zh'\"\r\n v-model=\"pinyin\"\r\n @input=\"e => handleSpecialKey(e, false)\"\r\n />\r\n <template v-else>\r\n <button\r\n v-for=\"(key, keyIndex) in numbersRow\"\r\n\r\n :key=\"`number-${keyIndex}`\"\r\n class=\"zhk-base__key zhk-base__key--letter\"\r\n @click=\"handleKeyPress(key)\"\r\n >\r\n {{ key }}\r\n </button>\r\n </template>\r\n </div>\r\n\r\n <div v-for=\"(row, rowIndex) in keyboardRows\" :key=\"`row-${rowIndex}`\" class=\"zhk-base__row\">\r\n <button\r\n v-if=\"rowIndex === 2\"\r\n class=\"zhk-base__key zhk-base__key--function zhk-base__key--shift\"\r\n :class=\"{\r\n 'zhk-base__key--active': !isChineseMode && isUpperCase,\r\n 'zhk-base__key--disabled': isChineseMode && isHandwritingButtonDisabled,\r\n }\"\r\n :disabled=\"isChineseMode && isHandwritingButtonDisabled\"\r\n @click=\"handleShift\"\r\n >\r\n <template v-if=\"isChineseMode\">\r\n {{ handwritingButtonText }}\r\n </template>\r\n <template v-else>\r\n <img src=\"../assets/icons/keyboard-caps.svg\" class=\"zhk-base__key-icon\" alt=\"Shift\" />\r\n </template>\r\n </button>\r\n\r\n <button\r\n v-for=\"(key, keyIndex) in row\"\r\n :key=\"`key-${rowIndex}-${keyIndex}`\"\r\n class=\"zhk-base__key zhk-base__key--letter\"\r\n @click=\"handleKeyPress(key)\"\r\n >\r\n {{ showUpperCase ? key.toUpperCase() : key }}\r\n </button>\r\n\r\n <button\r\n v-if=\"rowIndex === 2\"\r\n class=\"zhk-base__key zhk-base__key--function zhk-base__key--delete\"\r\n @click=\"() => handleDelete()\"\r\n >\r\n <img src=\"../assets/icons/keyboard-backspace.svg\" class=\"zhk-base__key-icon\" alt=\"Delete\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"zhk-base__row\">\r\n <button class=\"zhk-base__key zhk-base__key--function\" @click=\"handleSwitchToSymbol\">\r\n 符\r\n </button>\r\n <button class=\"zhk-base__key zhk-base__key--function\" @click=\"handleSwitchToNum\">\r\n 123\r\n </button>\r\n <button class=\"zhk-base__key\" @click=\"() => handleSpecialKey(',')\">\r\n ,\r\n </button>\r\n <button class=\"zhk-base__key zhk-base__key--space\" @click=\"() => handleSpecialKey(' ')\">\r\n <img src=\"../assets/icons/keyboard-space.svg\" class=\"zhk-base__key-icon\" alt=\"Space\" />\r\n </button>\r\n <button class=\"zhk-base__key\" @click=\"() => handleSpecialKey('。')\">\r\n 。\r\n </button>\r\n <button class=\"zhk-base__key zhk-base__key--function\" @click=\"handleToggleLang\">\r\n <span class=\"zhk-base__toggle-main\">{{ mode === 'zh' ? '中' : '英' }}</span>\r\n <span class=\"zhk-base__toggle-sub\">/{{ mode === 'zh' ? '英' : '中' }}</span>\r\n </button>\r\n <button class=\"zhk-base__key zhk-base__key--function\" @click=\"() => handleSpecialKey('enter', true)\">\r\n <img src=\"../assets/icons/keyboard-return.svg\" class=\"zhk-base__key-icon\" alt=\"Enter\" />\r\n </button>\r\n </div>\r\n </div>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport type { KeyEvent } from '../types'\r\nimport backspaceIcon from '../assets/icons/keyboard-backspace.svg'\r\nimport returnIcon from '../assets/icons/keyboard-return.svg'\r\nimport '../styles/NumericKeyboard.scss'\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n (e: 'exit'): void\r\n}>()\r\n\r\nconst keyboardRows = [\r\n ['1', '2', '3'],\r\n ['4', '5', '6'],\r\n ['7', '8', '9'],\r\n ['back', '0', 'space'],\r\n]\r\n\r\nconst functionKeys = [\r\n { key: 'delete', icon: backspaceIcon, text: '', alt: 'Delete' },\r\n { key: '.', icon: '', text: '.', alt: '.' },\r\n { key: '@', icon: '', text: '@', alt: '@' },\r\n { key: 'enter', icon: returnIcon, text: '', alt: 'Enter' },\r\n]\r\n\r\nfunction handleKeyPress(key: string) {\r\n emit('key', { key })\r\n}\r\n\r\nfunction handleSpecialKey(key: string, isControl = true) {\r\n emit('key', { key, isControl })\r\n}\r\n\r\nfunction goBack() {\r\n emit('exit')\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"num-keyboard\">\r\n <div class=\"num-keyboard__container\">\r\n <div class=\"num-keyboard__left\">\r\n <div class=\"num-keyboard__rows\">\r\n <div v-for=\"(row, rowIndex) in keyboardRows\" :key=\"`row-${rowIndex}`\" class=\"num-keyboard__row\">\r\n <button\r\n v-for=\"(key, keyIndex) in row\"\r\n :key=\"`key-${rowIndex}-${keyIndex}`\"\r\n class=\"num-keyboard__key\"\r\n :class=\"{\r\n 'num-keyboard__key--back': key === 'back',\r\n 'num-keyboard__key--space': key === 'space',\r\n }\"\r\n @click=\"key === 'back' ? goBack() : (key === 'space' ? handleKeyPress(' ') : handleKeyPress(key))\"\r\n >\r\n <template v-if=\"key === 'back'\">\r\n 返回\r\n </template>\r\n <template v-else-if=\"key === 'space'\">\r\n <img src=\"../assets/icons/keyboard-space.svg\" class=\"zhk-base__key-icon\" alt=\"Space\" />\r\n </template>\r\n <template v-else>\r\n {{ key }}\r\n </template>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"num-keyboard__right\">\r\n <button\r\n v-for=\"(fKey, index) in functionKeys\"\r\n :key=\"`func-${index}`\"\r\n class=\"num-keyboard__key num-keyboard__key--function\"\r\n @click=\"fKey.key === '.' || fKey.key === '@' ? handleKeyPress(fKey.key) : handleSpecialKey(fKey.key)\"\r\n >\r\n <img v-if=\"fKey.icon\" :src=\"fKey.icon\" class=\"num-keyboard__key-icon\" :alt=\"fKey.alt\" />\r\n <span v-else>{{ fKey.text }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M18,20V10H6V20H18M18,8A2,2%200%200,1%2020,10V20A2,2%200%200,1%2018,22H6C4.89,22%204,21.1%204,20V10A2,2%200%200,1%206,8H15V6A3,3%200%200,0%2012,3A3,3%200%200,0%209,6H7A5,5%200%200,1%2012,1A5,5%200%200,1%2017,6V8H18M12,17A2,2%200%200,1%2010,15A2,2%200%200,1%2012,13A2,2%200%200,1%2014,15A2,2%200%200,1%2012,17Z'%20/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M12,17C10.89,17%2010,16.1%2010,15C10,13.89%2010.89,13%2012,13A2,2%200%200,1%2014,15A2,2%200%200,1%2012,17M18,20V10H6V20H18M18,8A2,2%200%200,1%2020,10V20A2,2%200%200,1%2018,22H6C4.89,22%204,21.1%204,20V10C4,8.89%204.89,8%206,8H7V6A5,5%200%200,1%2012,1A5,5%200%200,1%2017,6V8H18M12,3A3,3%200%200,0%209,6V8H15V6A3,3%200%200,0%2012,3Z'%20/%3e%3c/svg%3e\"","<script setup lang=\"ts\">\r\nimport type { KeyEvent } from '../types'\r\nimport { computed, ref } from 'vue'\r\nimport lockOpenIconUrl from '../assets/icons/lock-open-outline.svg'\r\nimport lockClosedIconUrl from '../assets/icons/lock-outline.svg'\r\nimport '../styles/SymbolKeyboard.scss'\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n (e: 'exit'): void\r\n}>()\r\n\r\nconst enSymbolStr = '!@#$%^&*(){}[]<>/\\\\|:;\"\\',.,?+-=_~`€£¥₹©®™°'\r\nconst zhSymbolStr = '!@#¥%…&*(){}[]<>/\|:;"',。?+-=_~·€£¥₹©®™°'\r\nconst symbolType = ref('en')\r\nconst currentSymbolStr = computed(() => symbolType.value === 'zh' ? zhSymbolStr : enSymbolStr)\r\nconst isLocked = ref(false)\r\n\r\nfunction handleKeyPress(key: string) {\r\n emit('key', { key })\r\n if (!isLocked.value) {\r\n emit('exit')\r\n }\r\n}\r\n\r\nfunction goBack() {\r\n emit('exit')\r\n}\r\n\r\nfunction setSymbolType(type: 'zh' | 'en') {\r\n symbolType.value = type\r\n}\r\n\r\nfunction toggleLock() {\r\n isLocked.value = !isLocked.value\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"symbol-keyboard\">\r\n <div class=\"symbol-keyboard__content\">\r\n <div class=\"symbol-keyboard__functions\">\r\n <div class=\"symbol-keyboard__lang-selector\">\r\n <button\r\n class=\"symbol-keyboard__lang-btn\"\r\n :class=\"{ 'symbol-keyboard__lang-btn--active': symbolType === 'zh' }\"\r\n @click=\"setSymbolType('zh')\"\r\n >\r\n 中文\r\n </button>\r\n <button\r\n class=\"symbol-keyboard__lang-btn\"\r\n :class=\"{ 'symbol-keyboard__lang-btn--active': symbolType === 'en' }\"\r\n @click=\"setSymbolType('en')\"\r\n >\r\n 英文\r\n </button>\r\n </div>\r\n <div class=\"symbol-keyboard__control-group\">\r\n <button\r\n class=\"symbol-keyboard__key symbol-keyboard__key--function symbol-keyboard__key--lock\"\r\n :class=\"{ 'symbol-keyboard__key--locked': isLocked }\"\r\n @click=\"toggleLock\"\r\n >\r\n <img v-if=\"!isLocked\" :src=\"lockOpenIconUrl\" alt=\"Lock open\" />\r\n <img v-else :src=\"lockClosedIconUrl\" alt=\"Lock closed\" />\r\n </button>\r\n <button\r\n class=\"symbol-keyboard__key symbol-keyboard__key--function symbol-keyboard__key--back\"\r\n @click=\"goBack\"\r\n >\r\n 返回\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"symbol-keyboard__symbols-container\">\r\n <div class=\"symbol-keyboard__symbols-grid\">\r\n <button\r\n v-for=\"(char, index) in currentSymbolStr\"\r\n :key=\"`key-${index}`\"\r\n class=\"symbol-keyboard__key\"\r\n @click=\"handleKeyPress(char)\"\r\n >\r\n {{ char }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport type { KeyboardPosition } from '@zh-keyboard/core'\r\nimport type { KeyBoardMode, KeyEvent } from '../types'\r\nimport { useActiveElement, useElementSize, useEventListener } from '@vueuse/core'\r\nimport { calculateKeyboardPosition, delToInputElement, isInputElement, writeToInputElement } from '@zh-keyboard/core'\r\nimport { computed, nextTick, ref, watch, watchEffect } from 'vue'\r\nimport { useHandwritingRecognizer } from '../utils/useHandwritingRecognizer'\r\nimport HandwritingInput from './HandwritingInput.vue'\r\nimport KeyboardBase from './KeyboardBase.vue'\r\nimport NumericKeyboard from './NumericKeyboard.vue'\r\nimport SymbolKeyboard from './SymbolKeyboard.vue'\r\nimport '../styles/ZhKeyboard.scss'\r\n\r\nconst props = withDefaults(defineProps<{\r\n /**\r\n * 默认的键盘模式\r\n */\r\n defaultMode?: KeyBoardMode\r\n /**\r\n * 是否启用手写输入\r\n */\r\n enableHandwriting?: boolean\r\n /**\r\n * 键盘定位模式\r\n * @default 'static'\r\n */\r\n position?: 'static' | 'float' | 'bottom'\r\n /**\r\n * 当没有input获得焦点时是否禁用键盘\r\n * @default true\r\n */\r\n disableWhenNoFocus?: boolean\r\n}>(), {\r\n defaultMode: 'en',\r\n enableHandwriting: false,\r\n position: 'static',\r\n disableWhenNoFocus: true,\r\n})\r\n\r\nconst emit = defineEmits<{\r\n (e: 'key', payload: KeyEvent): void\r\n}>()\r\n\r\nconst mode = ref<KeyBoardMode>(props.defaultMode || 'en')\r\nconst previousMode = ref<KeyBoardMode>(props.defaultMode || 'en')\r\n\r\nconst candidates = ref<string[]>([])\r\nconst isSelectionOpen = ref(false)\r\nconst keyboardPosition = ref<KeyboardPosition | null>(null)\r\nconst keyboardRef = ref<HTMLElement | null>(null)\r\n\r\n// 使用手写识别服务,自动处理生命周期\r\nconst { recognizerInitialized } = useHandwritingRecognizer(props.enableHandwriting)\r\n\r\n// 监听mode变化,保存上一次的值\r\nwatch(mode, (newMode, oldMode) => {\r\n if (newMode !== oldMode) {\r\n previousMode.value = oldMode\r\n }\r\n})\r\n\r\nconst activeElement = useActiveElement<HTMLInputElement>()\r\n\r\nconst inputElement = computed(() => {\r\n if (activeElement.value && isInputElement(activeElement.value)) {\r\n return activeElement.value\r\n }\r\n return null\r\n})\r\n\r\nconst showKeyboard = computed(() => {\r\n return props.position === 'static' || !!(activeElement.value && isInputElement(activeElement.value))\r\n})\r\n\r\nconst { height: keyboardHeight } = useElementSize(keyboardRef)\r\n\r\n// 监听 inputElement 的变化\r\nwatchEffect(() => {\r\n if (inputElement.value) {\r\n const inputmode = inputElement.value.dataset.inputmode as KeyBoardMode | undefined\r\n if (inputmode) {\r\n mode.value = inputmode\r\n }\r\n }\r\n})\r\n\r\nwatch([showKeyboard, keyboardHeight, inputElement], () => {\r\n if (showKeyboard.value && keyboardHeight.value) {\r\n nextTick(() => {\r\n updateKeyboardPosition()\r\n })\r\n }\r\n})\r\n\r\n// 判断键盘是否被禁用(当前没有可输入的元素时禁用)\r\nconst isKeyboardDisabled = computed(() => {\r\n if (props.disableWhenNoFocus === false)\r\n return false\r\n\r\n return !inputElement.value\r\n})\r\n\r\n// 计算键盘位置\r\nfunction updateKeyboardPosition() {\r\n if (!keyboardHeight.value)\r\n return\r\n const newPosition = calculateKeyboardPosition(\r\n inputElement.value,\r\n keyboardRef.value,\r\n props.position,\r\n )\r\n keyboardPosition.value = newPosition\r\n}\r\n\r\n// 页面滚动或窗口大小变化时更新键盘位置\r\nuseEventListener(window, 'scroll', updateKeyboardPosition, { passive: true })\r\nuseEventListener(window, 'resize', updateKeyboardPosition, { passive: true })\r\n\r\nfunction handleKeyEvent(payload: KeyEvent) {\r\n if (payload.isControl) {\r\n switch (payload.key) {\r\n case 'delete':\r\n delToInputElement(inputElement.value!)\r\n break\r\n case 'more':\r\n isSelectionOpen.value = true\r\n break\r\n default:\r\n break\r\n }\r\n return\r\n } else {\r\n inputText(payload.key)\r\n }\r\n emit('key', payload)\r\n}\r\n\r\nfunction inputText(text: string) {\r\n writeToInputElement(inputElement.value!, text)\r\n}\r\n\r\nfunction goBack() {\r\n mode.value = previousMode.value\r\n}\r\n\r\nfunction handleRecognize(results: string[]) {\r\n candidates.value = results\r\n}\r\n</script>\r\n\r\n<template>\r\n <Teleport to=\"body\" :disabled=\"position === 'static'\">\r\n <div\r\n v-show=\"showKeyboard\"\r\n v-bind=\"$attrs\"\r\n ref=\"keyboardRef\"\r\n class=\"zhk\"\r\n :class=\"{\r\n 'zhk--floating': position === 'float',\r\n 'zhk--bottom': position === 'bottom',\r\n 'zhk--disabled': isKeyboardDisabled,\r\n }\"\r\n :style=\"{\r\n '--keyboard-height': `${keyboardHeight}px`,\r\n ...keyboardPosition,\r\n }\"\r\n @mousedown.prevent\r\n >\r\n <div v-if=\"isKeyboardDisabled || !showKeyboard || !keyboardHeight\" class=\"zhk__disabled-overlay\">\r\n <span>请选择输入框以启用键盘</span>\r\n </div>\r\n <template v-else>\r\n <HandwritingInput\r\n v-if=\"mode === 'hand'\"\r\n @key=\"handleKeyEvent\" @exit=\"goBack\"\r\n @recognize=\"handleRecognize\"\r\n />\r\n <NumericKeyboard\r\n v-else-if=\"mode === 'num'\"\r\n @key=\"handleKeyEvent\"\r\n @exit=\"goBack\"\r\n />\r\n <SymbolKeyboard\r\n v-else-if=\"mode === 'symbol'\"\r\n @key=\"handleKeyEvent\"\r\n @exit=\"goBack\"\r\n />\r\n <KeyboardBase\r\n v-else-if=\"mode === 'en' || mode === 'zh'\"\r\n v-model=\"mode\"\r\n :recognizer-initialized=\"recognizerInitialized\"\r\n :enable-handwriting=\"enableHandwriting\"\r\n @key=\"handleKeyEvent\"\r\n />\r\n </template>\r\n </div>\r\n </Teleport>\r\n</template>\r\n","import type { App } from 'vue'\r\nimport ZhKeyboard from './components/ZhKeyboard.vue'\r\n\r\nexport * from './utils/handwriting'\r\n\r\nexport { ZhKeyboard }\r\n\r\nexport default {\r\n install: (app: App) => {\r\n app.component('ZhKeyboard', ZhKeyboard)\r\n },\r\n}\r\n"],"names":["tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","isClient","notNullish","val","toString","isObject","noop","toArray","value","getLifeCycleTarget","target","getCurrentInstance","tryOnMounted","sync","onMounted","nextTick","watchImmediate","source","cb","options","watch","defaultWindow","unrefElement","elRef","_a","plain","toValue","useEventListener","args","cleanups","cleanup","register","el","event","listener","firstParamTargets","computed","test","e","stopWatch","_b","unref","raw_targets","raw_events","raw_listeners","raw_options","optionsClone","stop","useMounted","isMounted","shallowRef","instance","useSupported","callback","useMutationObserver","window","mutationOptions","observer","isSupported","targets","items","targets2","takeRecords","onElementRemoval","document","flush","stopFn","cleanupAndUpdate","watchEffect","mutationsList","mutation","node","stopHandle","useActiveElement","deep","triggerOnRemoval","getDeepActiveElement","_a2","element","activeElement","trigger","listenerOptions","useResizeObserver","observerOptions","_targets","els","_el","useElementSize","initialSize","box","isSVG","width","height","stop1","entry","boxSize","$elem","rect","formatBoxSize","acc","inlineSize","blockSize","ele","stop2","t","module","this","s","n","_","i","o","f","global","x","k","a","c","m","r","l","u","h","d","b","p","y","v","O","P","g","w","K","E","S","j","A","C","T","q","D","I","B","R","F","M","N","L","U","V","z","W","Y","$","Q","G","X","H","J","Z","ee","te","ne","re","ie","oe","ae","ue","se","ce","le","be","he","Se","fe","de","pe","ye","ve","me","ge","we","_e","Oe","je","Pe","Ae","xe","Fe","Ue","Ke","ke","Qe","Ce","Ee","$e","Te","qe","We","Ye","Ve","Ne","De","Ie","Be","Re","Me","Le","Xe","ze","Ge","He","Je","Ze","et","tt","nt","rt","it","ot","at","ut","st","ct","lt","ft","ht","dt","pt","yt","vt","mt","bt","gt","wt","_t","xt","kt","Ot","Pt","Kt","Et","St","jt","Dt","At","qt","Ct","Tt","It","Bt","Rt","Ft","Mt","Nt","Lt","Ut","Vt","zt","Wt","Yt","$t","Qt","Gt","Xt","Ht","Jt","Zt","tn","nn","rn","hn","ln","an","un","cn","sn","on","dn","pn","yn","er","vn","mn","bn","gn","wn","On","_n","xn","kn","Pn","Kn","En","Sn","jn","An","Cn","Tn","qn","Dn","In","Bn","Rn","Fn","Mn","Nn","Ln","Un","Vn","zn","Wn","Yn","$n","Qn","Gn","Xn","Hn","Jn","Zn","tr","nr","rr","or","ar","ur","cr","sr","lr","DexieSymbol","Dexie","_Dexie","liveQuery","mergeRanges","rangesOverlap","RangeSet","cmp","Entity","PropModification","replacePrefix","add","remove","ai","ei","xi","yi","han","ang","ao","wa","yu","niu","ba","pa","pi","bi","bai","bo","bei","ban","pan","bin","bang","pang","beng","bao","bu","pu","mian","po","fan","fu","ben","feng","bian","pian","zhen","biao","piao","huo","bie","min","fen","bing","geng","fang","xian","fou","ca","cha","cai","can","shen","cen","san","cang","zang","chen","cao","zhai","dao","ceng","zha","chai","ci","zi","cuo","chan","shan","zhan","xin","lian","chang","zhang","chao","zhao","zhou","che","ju","cheng","rong","sheng","deng","zhi","zheng","tang","chi","shi","qi","chuai","tuo","duo","xue","chong","chou","qiu","xiu","chu","tuan","zhui","chuan","zhuan","yuan","cuan","chuang","zhuang","chui","chun","zhun","cu","dun","qu","xu","chuo","zu","ji","cong","zong","cou","cui","wei","cun","zuo","zuan","da","dai","tai","ta","dan","lu","tan","ren","jie","yan","dang","tao","tiao","dei","di","ti","tui","you","dian","tian","zhu","nian","diao","yao","die","she","xie","zhe","ding","diu","ting","dong","tong","zhong","dou","du","duan","dui","rui","yue","tun","hui","wu","ya","wo","en","fa","quan","fei","pei","ping","fo","hu","ga","ha","xia","gai","hai","gan","gang","jiang","hang","gong","hong","guang","qiong","gao","hao","li","jia","luo","qia","gei","gen","hen","gou","kou","gu","pai","gua","tou","guai","kuai","guan","wan","gui","jun","jiong","jue","gun","hun","guo","hei","kan","heng","mo","peng","hou","hua","huai","huan","xun","huang","nai","luan","qie","jian","nan","qian","qiang","xiang","jiao","zhuo","qiao","xiao","si","kai","jin","qin","jing","ying","jiu","zui","juan","suan","yun","qun","ka","kang","keng","kao","ken","yin","kong","ku","kua","kui","kuan","kuang","que","kun","kuo","la","lai","lan","lin","lang","liang","lao","mu","lei","sui","lie","leng","ling","lia","liao","liu","lun","lv","lou","mao","long","nong","shuang","shu","shuai","lve","ma","mai","man","mi","men","mang","meng","miao","mou","miu","mei","wen","mie","ming","na","nei","nuo","ruo","nang","nao","ni","nen","neng","nin","niao","nie","niang","ning","nu","nv","ru","nuan","nve","ou","pao","pou","pen","pie","pin","qing","zan","shao","sao","sha","xuan","ran","rang","rao","reng","ri","rou","ruan","run","sa","suo","sai","shui","sang","sen","seng","shai","shang","xing","shou","shuo","su","shua","shuan","shun","song","sou","sun","teng","tie","tu","wai","wang","weng","zhua","yang","xiong","yo","yong","za","zai","zao","zei","zen","zeng","zhei","zou","zhuai","zun","dia","nou","pinyin_dict_notone_default","MAX_WEIGHT","AdvancedPinyinEngine","__publicField","entries","pinyin","charsStr","char","error","input","matchedEntriesList","getSortPriority","currentPinyin","isExactMatch","hasCustomWeight","a$1","priorityA","priorityB","selectedChar","bestPinyinMatch","pinyinKey","_c","existingEntry","newWeight","CanvasDrawer","canvas","e$1","offsetX","offsetY","context","touch","calculateKeyboardPosition","inputElement","keyboardElement","positionMode","top","left","inputRect","keyboardWidth","viewportWidth","isInputElement","inputType","applyEdit","cursor","moveCursor","editString","text","start","deleteCount","insertText","processInputElement","maxlength","end","selLen","newValue","newCursor","writeToInputElement","delToInputElement","index","handwritingRecognizerInstance","registerHandwritingRecognizer","recognizer","getHandwritingRecognizer","useHandwritingRecognizer","enableHandwriting","recognizerInitialized","ref","initializeRecognizer","closeRecognizer","onUnmounted","backspaceIcon","returnIcon","emit","__emit","handleSelect","candidate","canvasRef","containerRef","canvasDrawer","isRecognizing","canvasSize","clearCanvas","setupCanvas","recognizeStroke","candidates","strokeData","results","handleSelection","_imports_0$2","_imports_0$1","_imports_0","selectCandidate","closeModal","_useModel","inputEngine","visibleCandidates","isSelectionOpen","selected","props","__props","mode","isUpperCase","isChineseMode","showUpperCase","handleSpecialKey","key","isControl","handleShift","handleSwitchToNum","handleSwitchToSymbol","numbersRow","keyboardRows","handleDelete","handleKeyPress","outputKey","handleToggleLang","handwritingButtonText","isHandwritingButtonDisabled","functionKeys","goBack","lockOpenIconUrl","lockClosedIconUrl","enSymbolStr","zhSymbolStr","symbolType","currentSymbolStr","isLocked","setSymbolType","type","toggleLock","previousMode","keyboardPosition","keyboardRef","newMode","oldMode","showKeyboard","keyboardHeight","inputmode","updateKeyboardPosition","isKeyboardDisabled","newPosition","handleKeyEvent","payload","inputText","handleRecognize","lib","app","ZhKeyboard"],"mappings":"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;AAAA,EACA,MAAAC;AAAA,EACA,IAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,IAAAC;AAAA,EACA,IAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAAC;AAAA,EACA,IAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAA3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","x_google_ignoreList":[0,1,2,3]}
|