@inpageedit/core 0.1.1 → 0.3.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 +20 -20
- package/README.md +55 -55
- package/dist/ActionButton-ByMKIthQ.js +24 -0
- package/dist/ActionButton-ByMKIthQ.js.map +1 -0
- package/dist/InPageEdit.d.ts +7 -2
- package/dist/{CheckBox-ROZZIK-t.js → InputBox-FIzJ-rPN.js} +11 -11
- package/dist/InputBox-FIzJ-rPN.js.map +1 -0
- package/dist/Preferences-Bg3J5Ur9.js.map +1 -1
- package/dist/{RadioBox-Bt5tAniV.js → RadioBox-BZFhTEo5.js} +2 -2
- package/dist/RadioBox-BZFhTEo5.js.map +1 -0
- package/dist/components/ActionButton.d.ts +6 -9
- package/dist/components/SchemaForm/index.d.ts +142 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.js +79 -0
- package/dist/components/index.js.map +1 -0
- package/dist/{index-M4USLRId.js → index-BByzm2Fz.js} +169 -167
- package/dist/index-BByzm2Fz.js.map +1 -0
- package/dist/{index-BI0z4WfP.js → index-BPsDFq9U.js} +2 -2
- package/dist/index-BPsDFq9U.js.map +1 -0
- package/dist/{index-Bz9ciRCe.js → index-BsYzf3Yw.js} +9 -8
- package/dist/index-BsYzf3Yw.js.map +1 -0
- package/dist/{index-DIovbA02.js → index-CMqk2ovP.js} +14 -14
- package/dist/index-CMqk2ovP.js.map +1 -0
- package/dist/{index-DPXRKwGM.js → index-Ch5DJDZZ.js} +20 -19
- package/dist/index-Ch5DJDZZ.js.map +1 -0
- package/dist/index-Cq1Q9Xau.js +4635 -0
- package/dist/index-Cq1Q9Xau.js.map +1 -0
- package/dist/{index-01GVXg9H.js → index-Cq9xxVsu.js} +20 -30
- package/dist/index-Cq9xxVsu.js.map +1 -0
- package/dist/index-CvhkVj_L.js +361 -0
- package/dist/index-CvhkVj_L.js.map +1 -0
- package/dist/{index-jJ3Ut97G.js → index-HyxA2rYz.js} +20 -19
- package/dist/index-HyxA2rYz.js.map +1 -0
- package/dist/{index-BY3hO6sZ.js → index-X1X416tZ.js} +36 -34
- package/dist/index-X1X416tZ.js.map +1 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.js +5187 -5
- package/dist/index.js.map +1 -1
- package/dist/plugins/BasePlugin.d.ts +2 -2
- package/dist/plugins/preferences/{PluginPreferencesUI.d.ts → ui/index.d.ts} +3 -2
- package/dist/sleep-DpyIipK-.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/{plugins/preferences/components/hooks.d.ts → utils/vueHooks.d.ts} +1 -1
- package/lib/index.umd.js +57 -2620
- package/lib/index.umd.js.map +1 -0
- package/lib/style.css +1 -1
- package/package.json +42 -4
- package/dist/ActionButton-B9JniHy6.js +0 -33
- package/dist/ActionButton-B9JniHy6.js.map +0 -1
- package/dist/CheckBox-ROZZIK-t.js.map +0 -1
- package/dist/PluginPreferencesUI-7u9JClgy.js +0 -33921
- package/dist/PluginPreferencesUI-7u9JClgy.js.map +0 -1
- package/dist/RadioBox-Bt5tAniV.js.map +0 -1
- package/dist/i18n/languages.json +0 -1527
- package/dist/index-01GVXg9H.js.map +0 -1
- package/dist/index-BI0z4WfP.js.map +0 -1
- package/dist/index-BY3hO6sZ.js.map +0 -1
- package/dist/index-Bz9ciRCe.js.map +0 -1
- package/dist/index-CGg-JS5d.js +0 -5466
- package/dist/index-CGg-JS5d.js.map +0 -1
- package/dist/index-DIovbA02.js.map +0 -1
- package/dist/index-DPXRKwGM.js.map +0 -1
- package/dist/index-M4USLRId.js.map +0 -1
- package/dist/index-jJ3Ut97G.js.map +0 -1
- package/dist/utils/schemaValidator.d.ts +0 -12
- package/lib/i18n/languages.json +0 -1527
- /package/dist/components/TabView/{TabView.d.ts → index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/polyfills/Promise.withResolvers.ts","../../../node_modules/.pnpm/cosmokit@1.8.0/node_modules/cosmokit/lib/index.mjs","../../../node_modules/.pnpm/@cordisjs+core@3.18.1/node_modules/@cordisjs/core/lib/index.mjs","../../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/browser.js","../__vite-browser-external","../../../node_modules/.pnpm/object-inspect@1.13.4/node_modules/object-inspect/index.js","../../../node_modules/.pnpm/reggol@1.7.1/node_modules/reggol/lib/browser.mjs","../../../node_modules/.pnpm/@cordisjs+logger@0.3.3_@cordisjs+core@3.18.1/node_modules/@cordisjs/logger/lib/index.mjs","../../../node_modules/.pnpm/schemastery@3.17.0/node_modules/schemastery/lib/index.mjs","../../../node_modules/.pnpm/@cordisjs+schema@0.1.1_@cordisjs+core@3.18.1/node_modules/@cordisjs/schema/lib/index.mjs","../../../node_modules/.pnpm/@cordisjs+timer@0.3.2_@cordisjs+core@3.18.1/node_modules/@cordisjs/timer/lib/index.mjs","../../../node_modules/.pnpm/cordis@3.18.1/node_modules/cordis/lib/index.mjs","../../../node_modules/.pnpm/wiki-saikou@5.0.0/node_modules/wiki-saikou/dist/browser.js","../src/services/ApiService.ts","../src/services/ResourceLoaderService.ts","../../../node_modules/.pnpm/jsx-dom@8.1.6/node_modules/jsx-dom/index.js","../src/constants/endpoints.ts","../src/components/ProgressBar/index.tsx","../src/services/SsiModalService.tsx","../../../node_modules/.pnpm/localforage@1.10.0/node_modules/localforage/dist/localforage.js","../src/services/StorageService.ts","../src/services/SiteMetadataService.ts","../src/models/WikiPage/index.ts","../src/services/WikiPageService.ts","../src/InPageEdit.ts","../src/utils/string.ts","../src/plugins/BasePlugin.ts","../src/index.ts","../src/components/ActionButton.tsx","../src/plugins/preferences/index.tsx","../src/models/WikiPage/types/WatchlistAction.ts","../src/decorators/Preferences.ts","../src/plugins/quick-edit/PluginQuickEditInArticleLinks.tsx","../src/components/MBox/index.tsx","../src/components/InputBox.tsx","../src/components/RadioBox.tsx","../src/components/CheckBox.tsx","../src/utils/noop.ts","../src/utils/sleep.ts","../src/plugins/quick-edit/index.tsx","../src/components/TwinSwapInput/index.tsx","../src/plugins/quick-move/index.tsx","../src/plugins/quick-preview/index.tsx","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/base.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/character.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/util/string.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/word.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/util/params.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/line.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/sentence.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/css.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/json.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/diff/array.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/line-endings.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/parse.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/util/distance-iterator.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/apply.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/reverse.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/patch/create.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/dmp.js","../../../node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/convert/xml.js","../src/plugins/quick-diff/JsDiffService.ts","../src/components/MwUserLinks.tsx","../src/plugins/quick-diff/components/DiffTable.tsx","../src/components/utils.tsx","../src/plugins/quick-diff/PluginQuickDiffCore.tsx","../src/plugins/quick-diff/index.tsx","../src/plugins/quick-redirect/index.tsx","../src/plugins/toolbox/index.tsx","../../../node_modules/.pnpm/@vue+shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../node_modules/.pnpm/@vue+reactivity@3.5.21/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../node_modules/.pnpm/@vue+runtime-core@3.5.21/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../node_modules/.pnpm/@vue+runtime-dom@3.5.21/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../src/utils/vueHooks.ts","../src/components/SchemaForm/index.tsx","../src/components/SchemaForm/SchemaFormVue.vue","../src/utils/vueReactivity.ts","../src/plugins/preferences/ui/PreferencesForm.vue","../src/plugins/preferences/ui/index.tsx"],"sourcesContent":["export const promiseWithResolvers = <T extends unknown = any>() => {\r\n let resolve!: (value: T | PromiseLike<T>) => void\r\n let reject!: (reason?: any) => void\r\n const promise = new Promise<T>((res, rej) => {\r\n resolve = res\r\n reject = rej\r\n })\r\n return { promise, resolve, reject }\r\n}\r\n\r\nif (!Promise.withResolvers) {\r\n Promise.withResolvers = promiseWithResolvers\r\n}\r\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/misc.ts\nfunction noop() {\n}\n__name(noop, \"noop\");\nfunction isNullable(value) {\n return value === null || value === void 0;\n}\n__name(isNullable, \"isNullable\");\nfunction isNonNullable(value) {\n return !isNullable(value);\n}\n__name(isNonNullable, \"isNonNullable\");\nfunction isPlainObject(data) {\n return data && typeof data === \"object\" && !Array.isArray(data);\n}\n__name(isPlainObject, \"isPlainObject\");\nfunction filterKeys(object, filter) {\n return Object.fromEntries(Object.entries(object).filter(([key, value]) => filter(key, value)));\n}\n__name(filterKeys, \"filterKeys\");\nfunction mapValues(object, transform) {\n return Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transform(value, key)]));\n}\n__name(mapValues, \"mapValues\");\nfunction pick(source, keys, forced) {\n if (!keys) return { ...source };\n const result = {};\n for (const key of keys) {\n if (forced || source[key] !== void 0) result[key] = source[key];\n }\n return result;\n}\n__name(pick, \"pick\");\nfunction omit(source, keys) {\n if (!keys) return { ...source };\n const result = { ...source };\n for (const key of keys) {\n Reflect.deleteProperty(result, key);\n }\n return result;\n}\n__name(omit, \"omit\");\nfunction defineProperty(object, key, value) {\n return Object.defineProperty(object, key, { writable: true, value, enumerable: false });\n}\n__name(defineProperty, \"defineProperty\");\n\n// src/array.ts\nfunction contain(array1, array2) {\n return array2.every((item) => array1.includes(item));\n}\n__name(contain, \"contain\");\nfunction intersection(array1, array2) {\n return array1.filter((item) => array2.includes(item));\n}\n__name(intersection, \"intersection\");\nfunction difference(array1, array2) {\n return array1.filter((item) => !array2.includes(item));\n}\n__name(difference, \"difference\");\nfunction union(array1, array2) {\n return Array.from(/* @__PURE__ */ new Set([...array1, ...array2]));\n}\n__name(union, \"union\");\nfunction deduplicate(array) {\n return [...new Set(array)];\n}\n__name(deduplicate, \"deduplicate\");\nfunction remove(list, item) {\n const index = list?.indexOf(item);\n if (index >= 0) {\n list.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n__name(remove, \"remove\");\nfunction makeArray(source) {\n return Array.isArray(source) ? source : isNullable(source) ? [] : [source];\n}\n__name(makeArray, \"makeArray\");\n\n// src/types.ts\nfunction is(type, value) {\n if (arguments.length === 1) return (value2) => is(type, value2);\n return type in globalThis && value instanceof globalThis[type] || Object.prototype.toString.call(value).slice(8, -1) === type;\n}\n__name(is, \"is\");\nfunction isArrayBufferLike(value) {\n return is(\"ArrayBuffer\", value) || is(\"SharedArrayBuffer\", value);\n}\n__name(isArrayBufferLike, \"isArrayBufferLike\");\nfunction isArrayBufferSource(value) {\n return isArrayBufferLike(value) || ArrayBuffer.isView(value);\n}\n__name(isArrayBufferSource, \"isArrayBufferSource\");\nvar Binary;\n((Binary2) => {\n Binary2.is = isArrayBufferLike;\n Binary2.isSource = isArrayBufferSource;\n function fromSource(source) {\n if (ArrayBuffer.isView(source)) {\n return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n } else {\n return source;\n }\n }\n Binary2.fromSource = fromSource;\n __name(fromSource, \"fromSource\");\n function toBase64(source) {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(source).toString(\"base64\");\n }\n let binary = \"\";\n const bytes = new Uint8Array(source);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n Binary2.toBase64 = toBase64;\n __name(toBase64, \"toBase64\");\n function fromBase64(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"base64\"));\n return Uint8Array.from(atob(source), (c) => c.charCodeAt(0));\n }\n Binary2.fromBase64 = fromBase64;\n __name(fromBase64, \"fromBase64\");\n function toHex(source) {\n if (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"hex\");\n return Array.from(new Uint8Array(source), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n }\n Binary2.toHex = toHex;\n __name(toHex, \"toHex\");\n function fromHex(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"hex\"));\n const hex = source.length % 2 === 0 ? source : source.slice(0, source.length - 1);\n const buffer = [];\n for (let i = 0; i < hex.length; i += 2) {\n buffer.push(parseInt(`${hex[i]}${hex[i + 1]}`, 16));\n }\n return Uint8Array.from(buffer).buffer;\n }\n Binary2.fromHex = fromHex;\n __name(fromHex, \"fromHex\");\n})(Binary || (Binary = {}));\nvar base64ToArrayBuffer = Binary.fromBase64;\nvar arrayBufferToBase64 = Binary.toBase64;\nvar hexToArrayBuffer = Binary.fromHex;\nvar arrayBufferToHex = Binary.toHex;\nfunction clone(source, refs = /* @__PURE__ */ new Map()) {\n if (!source || typeof source !== \"object\") return source;\n if (is(\"Date\", source)) return new Date(source.valueOf());\n if (is(\"RegExp\", source)) return new RegExp(source.source, source.flags);\n if (isArrayBufferLike(source)) return source.slice(0);\n if (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n const cached = refs.get(source);\n if (cached) return cached;\n if (Array.isArray(source)) {\n const result2 = [];\n refs.set(source, result2);\n source.forEach((value, index) => {\n result2[index] = Reflect.apply(clone, null, [value, refs]);\n });\n return result2;\n }\n const result = Object.create(Object.getPrototypeOf(source));\n refs.set(source, result);\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = { ...Reflect.getOwnPropertyDescriptor(source, key) };\n if (\"value\" in descriptor) {\n descriptor.value = Reflect.apply(clone, null, [descriptor.value, refs]);\n }\n Reflect.defineProperty(result, key, descriptor);\n }\n return result;\n}\n__name(clone, \"clone\");\nfunction deepEqual(a, b, strict) {\n if (a === b) return true;\n if (!strict && isNullable(a) && isNullable(b)) return true;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n if (!a || !b) return false;\n function check(test, then) {\n return test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n }\n __name(check, \"check\");\n return check(Array.isArray, (a2, b2) => a2.length === b2.length && a2.every((item, index) => deepEqual(item, b2[index]))) ?? check(is(\"Date\"), (a2, b2) => a2.valueOf() === b2.valueOf()) ?? check(is(\"RegExp\"), (a2, b2) => a2.source === b2.source && a2.flags === b2.flags) ?? check(isArrayBufferLike, (a2, b2) => {\n if (a2.byteLength !== b2.byteLength) return false;\n const viewA = new Uint8Array(a2);\n const viewB = new Uint8Array(b2);\n for (let i = 0; i < viewA.length; i++) {\n if (viewA[i] !== viewB[i]) return false;\n }\n return true;\n }) ?? Object.keys({ ...a, ...b }).every((key) => deepEqual(a[key], b[key], strict));\n}\n__name(deepEqual, \"deepEqual\");\n\n// src/string.ts\nfunction capitalize(source) {\n return source.charAt(0).toUpperCase() + source.slice(1);\n}\n__name(capitalize, \"capitalize\");\nfunction uncapitalize(source) {\n return source.charAt(0).toLowerCase() + source.slice(1);\n}\n__name(uncapitalize, \"uncapitalize\");\nfunction camelCase(source) {\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase());\n}\n__name(camelCase, \"camelCase\");\nfunction tokenize(source, delimiters, delimiter) {\n const output = [];\n let state = 0 /* DELIM */;\n for (let i = 0; i < source.length; i++) {\n const code = source.charCodeAt(i);\n if (code >= 65 && code <= 90) {\n if (state === 1 /* UPPER */) {\n const next = source.charCodeAt(i + 1);\n if (next >= 97 && next <= 122) {\n output.push(delimiter);\n }\n output.push(code + 32);\n } else {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n output.push(code + 32);\n }\n state = 1 /* UPPER */;\n } else if (code >= 97 && code <= 122) {\n output.push(code);\n state = 2 /* LOWER */;\n } else if (delimiters.includes(code)) {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n state = 0 /* DELIM */;\n } else {\n output.push(code);\n }\n }\n return String.fromCharCode(...output);\n}\n__name(tokenize, \"tokenize\");\nfunction paramCase(source) {\n return tokenize(source, [45, 95], 45);\n}\n__name(paramCase, \"paramCase\");\nfunction snakeCase(source) {\n return tokenize(source, [45, 95], 95);\n}\n__name(snakeCase, \"snakeCase\");\nvar camelize = camelCase;\nvar hyphenate = paramCase;\nfunction formatProperty(key) {\n if (typeof key !== \"string\") return `[${key.toString()}]`;\n return /^[a-z_$][\\w$]*$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n__name(formatProperty, \"formatProperty\");\nfunction trimSlash(source) {\n return source.replace(/\\/$/, \"\");\n}\n__name(trimSlash, \"trimSlash\");\nfunction sanitize(source) {\n if (!source.startsWith(\"/\")) source = \"/\" + source;\n return trimSlash(source);\n}\n__name(sanitize, \"sanitize\");\n\n// src/time.ts\nvar Time;\n((Time2) => {\n Time2.millisecond = 1;\n Time2.second = 1e3;\n Time2.minute = Time2.second * 60;\n Time2.hour = Time2.minute * 60;\n Time2.day = Time2.hour * 24;\n Time2.week = Time2.day * 7;\n let timezoneOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n function setTimezoneOffset(offset) {\n timezoneOffset = offset;\n }\n Time2.setTimezoneOffset = setTimezoneOffset;\n __name(setTimezoneOffset, \"setTimezoneOffset\");\n function getTimezoneOffset() {\n return timezoneOffset;\n }\n Time2.getTimezoneOffset = getTimezoneOffset;\n __name(getTimezoneOffset, \"getTimezoneOffset\");\n function getDateNumber(date = /* @__PURE__ */ new Date(), offset) {\n if (typeof date === \"number\") date = new Date(date);\n if (offset === void 0) offset = timezoneOffset;\n return Math.floor((date.valueOf() / Time2.minute - offset) / 1440);\n }\n Time2.getDateNumber = getDateNumber;\n __name(getDateNumber, \"getDateNumber\");\n function fromDateNumber(value, offset) {\n const date = new Date(value * Time2.day);\n if (offset === void 0) offset = timezoneOffset;\n return new Date(+date + offset * Time2.minute);\n }\n Time2.fromDateNumber = fromDateNumber;\n __name(fromDateNumber, \"fromDateNumber\");\n const numeric = /\\d+(?:\\.\\d+)?/.source;\n const timeRegExp = new RegExp(`^${[\n \"w(?:eek(?:s)?)?\",\n \"d(?:ay(?:s)?)?\",\n \"h(?:our(?:s)?)?\",\n \"m(?:in(?:ute)?(?:s)?)?\",\n \"s(?:ec(?:ond)?(?:s)?)?\"\n ].map((unit) => `(${numeric}${unit})?`).join(\"\")}$`);\n function parseTime(source) {\n const capture = timeRegExp.exec(source);\n if (!capture) return 0;\n return (parseFloat(capture[1]) * Time2.week || 0) + (parseFloat(capture[2]) * Time2.day || 0) + (parseFloat(capture[3]) * Time2.hour || 0) + (parseFloat(capture[4]) * Time2.minute || 0) + (parseFloat(capture[5]) * Time2.second || 0);\n }\n Time2.parseTime = parseTime;\n __name(parseTime, \"parseTime\");\n function parseDate(date) {\n const parsed = parseTime(date);\n if (parsed) {\n date = Date.now() + parsed;\n } else if (/^\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).toLocaleDateString()}-${date}`;\n } else if (/^\\d{1,2}-\\d{1,2}-\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).getFullYear()}-${date}`;\n }\n return date ? new Date(date) : /* @__PURE__ */ new Date();\n }\n Time2.parseDate = parseDate;\n __name(parseDate, \"parseDate\");\n function format(ms) {\n const abs = Math.abs(ms);\n if (abs >= Time2.day - Time2.hour / 2) {\n return Math.round(ms / Time2.day) + \"d\";\n } else if (abs >= Time2.hour - Time2.minute / 2) {\n return Math.round(ms / Time2.hour) + \"h\";\n } else if (abs >= Time2.minute - Time2.second / 2) {\n return Math.round(ms / Time2.minute) + \"m\";\n } else if (abs >= Time2.second) {\n return Math.round(ms / Time2.second) + \"s\";\n }\n return ms + \"ms\";\n }\n Time2.format = format;\n __name(format, \"format\");\n function toDigits(source, length = 2) {\n return source.toString().padStart(length, \"0\");\n }\n Time2.toDigits = toDigits;\n __name(toDigits, \"toDigits\");\n function template(template2, time = /* @__PURE__ */ new Date()) {\n return template2.replace(\"yyyy\", time.getFullYear().toString()).replace(\"yy\", time.getFullYear().toString().slice(2)).replace(\"MM\", toDigits(time.getMonth() + 1)).replace(\"dd\", toDigits(time.getDate())).replace(\"hh\", toDigits(time.getHours())).replace(\"mm\", toDigits(time.getMinutes())).replace(\"ss\", toDigits(time.getSeconds())).replace(\"SSS\", toDigits(time.getMilliseconds(), 3));\n }\n Time2.template = template;\n __name(template, \"template\");\n})(Time || (Time = {}));\nexport {\n Binary,\n Time,\n arrayBufferToBase64,\n arrayBufferToHex,\n base64ToArrayBuffer,\n camelCase,\n camelize,\n capitalize,\n clone,\n contain,\n deduplicate,\n deepEqual,\n defineProperty,\n difference,\n filterKeys,\n formatProperty,\n hexToArrayBuffer,\n hyphenate,\n intersection,\n is,\n isNonNullable,\n isNullable,\n isPlainObject,\n makeArray,\n mapValues,\n noop,\n omit,\n paramCase,\n pick,\n remove,\n sanitize,\n snakeCase,\n trimSlash,\n uncapitalize,\n union,\n mapValues as valueMap\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/context.ts\nimport { defineProperty as defineProperty6 } from \"cosmokit\";\n\n// src/events.ts\nimport { defineProperty as defineProperty3, remove } from \"cosmokit\";\n\n// src/reflect.ts\nimport { defineProperty as defineProperty2, isNullable } from \"cosmokit\";\n\n// src/utils.ts\nimport { defineProperty } from \"cosmokit\";\nvar symbols = {\n // internal symbols\n shadow: Symbol.for(\"cordis.shadow\"),\n receiver: Symbol.for(\"cordis.receiver\"),\n original: Symbol.for(\"cordis.original\"),\n // context symbols\n store: Symbol.for(\"cordis.store\"),\n events: Symbol.for(\"cordis.events\"),\n static: Symbol.for(\"cordis.static\"),\n filter: Symbol.for(\"cordis.filter\"),\n expose: Symbol.for(\"cordis.expose\"),\n isolate: Symbol.for(\"cordis.isolate\"),\n internal: Symbol.for(\"cordis.internal\"),\n intercept: Symbol.for(\"cordis.intercept\"),\n // service symbols\n setup: Symbol.for(\"cordis.setup\"),\n invoke: Symbol.for(\"cordis.invoke\"),\n extend: Symbol.for(\"cordis.extend\"),\n tracker: Symbol.for(\"cordis.tracker\"),\n provide: Symbol.for(\"cordis.provide\"),\n immediate: Symbol.for(\"cordis.immediate\")\n};\nvar GeneratorFunction = function* () {\n}.constructor;\nvar AsyncGeneratorFunction = async function* () {\n}.constructor;\nfunction isConstructor(func) {\n if (!func.prototype) return false;\n if (func instanceof GeneratorFunction) return false;\n if (AsyncGeneratorFunction !== Function && func instanceof AsyncGeneratorFunction) return false;\n return true;\n}\n__name(isConstructor, \"isConstructor\");\nfunction resolveConfig(plugin, config) {\n const schema = plugin[\"Config\"] || plugin[\"schema\"];\n if (schema && plugin[\"schema\"] !== false) config = schema(config);\n return config ?? {};\n}\n__name(resolveConfig, \"resolveConfig\");\nfunction isUnproxyable(value) {\n return [Map, Set, Date, Promise].some((constructor) => value instanceof constructor);\n}\n__name(isUnproxyable, \"isUnproxyable\");\nfunction joinPrototype(proto1, proto2) {\n if (proto1 === Object.prototype) return proto2;\n const result = Object.create(joinPrototype(Object.getPrototypeOf(proto1), proto2));\n for (const key of Reflect.ownKeys(proto1)) {\n Object.defineProperty(result, key, Object.getOwnPropertyDescriptor(proto1, key));\n }\n return result;\n}\n__name(joinPrototype, \"joinPrototype\");\nfunction isObject(value) {\n return value && (typeof value === \"object\" || typeof value === \"function\");\n}\n__name(isObject, \"isObject\");\nfunction getTraceable(ctx, value, noTrap) {\n if (!isObject(value)) return value;\n if (Object.hasOwn(value, symbols.shadow)) {\n return Object.getPrototypeOf(value);\n }\n const tracker = value[symbols.tracker];\n if (!tracker) return value;\n return createTraceable(ctx, value, tracker, noTrap);\n}\n__name(getTraceable, \"getTraceable\");\nfunction withProps(target, props) {\n if (!props) return target;\n return new Proxy(target, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.get(props, prop, receiver);\n return Reflect.get(target2, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target2, prop, value, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.set(props, prop, value, receiver);\n return Reflect.set(target2, prop, value, receiver);\n }, \"set\")\n });\n}\n__name(withProps, \"withProps\");\nfunction withProp(target, prop, value) {\n return withProps(target, Object.defineProperty(/* @__PURE__ */ Object.create(null), prop, {\n value,\n writable: false\n }));\n}\n__name(withProp, \"withProp\");\nfunction createShadow(ctx, target, property, receiver) {\n if (!property) return receiver;\n const origin = Reflect.getOwnPropertyDescriptor(target, property)?.value;\n if (!origin) return receiver;\n return withProp(receiver, property, ctx.extend({ [symbols.shadow]: origin }));\n}\n__name(createShadow, \"createShadow\");\nfunction createShadowMethod(ctx, value, outer, shadow) {\n return new Proxy(value, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n if (thisArg === outer) thisArg = shadow;\n args = args.map((arg) => {\n if (typeof arg !== \"function\" || arg[symbols.original]) return arg;\n return new Proxy(arg, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop === symbols.original) return target2;\n const value2 = Reflect.get(target2, prop, receiver);\n if (prop === \"toString\" && value2 === Function.prototype.toString) {\n return function(...args2) {\n return Reflect.apply(value2, this === receiver ? target2 : this, args2);\n };\n }\n return value2;\n }, \"get\"),\n apply: /* @__PURE__ */ __name((target2, thisArg2, args2) => {\n return Reflect.apply(target2, getTraceable(ctx, thisArg2), args2.map((arg2) => getTraceable(ctx, arg2)));\n }, \"apply\"),\n construct: /* @__PURE__ */ __name((target2, args2, newTarget) => {\n return Reflect.construct(target2, args2.map((arg2) => getTraceable(ctx, arg2)), newTarget);\n }, \"construct\")\n });\n });\n return getTraceable(ctx, Reflect.apply(target, thisArg, args));\n }, \"apply\")\n });\n}\n__name(createShadowMethod, \"createShadowMethod\");\nfunction createTraceable(ctx, value, tracker, noTrap) {\n if (ctx[symbols.shadow]) {\n ctx = Object.getPrototypeOf(ctx);\n }\n const proxy = new Proxy(value, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n if (prop === symbols.original) return target;\n if (prop === tracker.property) return ctx;\n if (typeof prop === \"symbol\") {\n return Reflect.get(target, prop, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.get(ctx, `${tracker.associate}.${prop}`, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n const innerValue = Reflect.get(target, prop, shadow);\n const innerTracker = innerValue?.[symbols.tracker];\n if (innerTracker) {\n return createTraceable(ctx, innerValue, innerTracker);\n } else if (!noTrap && typeof innerValue === \"function\") {\n return createShadowMethod(ctx, innerValue, receiver, shadow);\n } else {\n return innerValue;\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value2, receiver) => {\n if (prop === symbols.original) return false;\n if (prop === tracker.property) return false;\n if (typeof prop === \"symbol\") {\n return Reflect.set(target, prop, value2, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.set(ctx, `${tracker.associate}.${prop}`, value2, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n return Reflect.set(target, prop, value2, shadow);\n }, \"set\"),\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return applyTraceable(proxy, target, thisArg, args);\n }, \"apply\")\n });\n return proxy;\n}\n__name(createTraceable, \"createTraceable\");\nfunction applyTraceable(proxy, value, thisArg, args) {\n if (!value[symbols.invoke]) return Reflect.apply(value, thisArg, args);\n return value[symbols.invoke].apply(proxy, args);\n}\n__name(applyTraceable, \"applyTraceable\");\nfunction createCallable(name, proto, tracker) {\n const self = /* @__PURE__ */ __name(function(...args) {\n const proxy = createTraceable(self[\"ctx\"], self, tracker);\n return applyTraceable(proxy, self, this, args);\n }, \"self\");\n defineProperty(self, \"name\", name);\n return Object.setPrototypeOf(self, proto);\n}\n__name(createCallable, \"createCallable\");\n\n// src/reflect.ts\nvar ReflectService = class _ReflectService {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty2(this, symbols.tracker, {\n associate: \"reflect\",\n property: \"ctx\"\n });\n this._mixin(\"reflect\", [\"get\", \"set\", \"provide\", \"accessor\", \"mixin\", \"alias\"]);\n this._mixin(\"scope\", [\"config\", \"runtime\", \"effect\", \"collect\", \"accept\", \"decline\"]);\n this._mixin(\"registry\", [\"using\", \"inject\", \"plugin\"]);\n this._mixin(\"lifecycle\", [\"on\", \"once\", \"parallel\", \"emit\", \"serial\", \"bail\", \"start\", \"stop\"]);\n }\n static {\n __name(this, \"ReflectService\");\n }\n static resolveInject(ctx, name) {\n let internal = ctx[symbols.internal][name];\n while (internal?.type === \"alias\") {\n name = internal.name;\n internal = ctx[symbols.internal][name];\n }\n return [name, internal];\n }\n static checkInject(ctx, name, error) {\n ctx = ctx[symbols.shadow] ?? ctx;\n if ([\"prototype\", \"then\", \"registry\", \"lifecycle\"].includes(name)) return;\n if (name[0] === \"$\" || name[0] === \"_\") return;\n if (!ctx.runtime.plugin) return;\n if (ctx.bail(ctx, \"internal/inject\", name)) return;\n const lines = error.stack.split(\"\\n\");\n lines.splice(1, 1);\n error.stack = lines.join(\"\\n\");\n ctx.emit(ctx, \"internal/warning\", error);\n }\n static handler = {\n get: /* @__PURE__ */ __name((target, prop, ctx) => {\n if (typeof prop !== \"string\") return Reflect.get(target, prop, ctx);\n if (Reflect.has(target, prop)) {\n return getTraceable(ctx, Reflect.get(target, prop, ctx), true);\n }\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n const error = new Error(`property ${name} is not registered, declare it as \\`inject\\` to suppress this warning`);\n if (!internal) {\n _ReflectService.checkInject(ctx, name, error);\n return Reflect.get(target, name, ctx);\n } else if (internal.type === \"accessor\") {\n return internal.get.call(ctx, ctx[symbols.receiver]);\n } else {\n if (!internal.builtin) _ReflectService.checkInject(ctx, name, error);\n return ctx.reflect.get(name);\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value, ctx) => {\n if (typeof prop !== \"string\") return Reflect.set(target, prop, value, ctx);\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n if (!internal) {\n return Reflect.set(target, name, value, ctx);\n }\n if (internal.type === \"accessor\") {\n if (!internal.set) return false;\n return internal.set.call(ctx, value, ctx[symbols.receiver]);\n } else {\n ctx.reflect.set(name, value);\n return true;\n }\n }, \"set\"),\n has: /* @__PURE__ */ __name((target, prop) => {\n if (typeof prop !== \"string\") return Reflect.has(target, prop);\n if (Reflect.has(target, prop)) return true;\n const [, internal] = _ReflectService.resolveInject(target, prop);\n return !!internal;\n }, \"has\")\n };\n get(name) {\n const internal = this.ctx[symbols.internal][name];\n if (internal?.type !== \"service\") return;\n const key = this.ctx[symbols.isolate][name];\n const value = this.ctx[symbols.store][key]?.value;\n return getTraceable(this.ctx, value);\n }\n set(name, value) {\n this.provide(name);\n const key = this.ctx[symbols.isolate][name];\n const oldValue = this.ctx[symbols.store][key]?.value;\n value ??= void 0;\n let dispose = /* @__PURE__ */ __name(() => {\n }, \"dispose\");\n if (oldValue === value) return dispose;\n if (!isNullable(value) && !isNullable(oldValue)) {\n throw new Error(`service ${name} has been registered`);\n }\n const ctx = this.ctx;\n if (!isNullable(value)) {\n dispose = ctx.effect(() => () => {\n ctx.set(name, void 0);\n });\n }\n if (isUnproxyable(value)) {\n ctx.emit(ctx, \"internal/warning\", new Error(`service ${name} is an unproxyable object, which may lead to unexpected behavior`));\n }\n const self = Object.create(ctx);\n self[symbols.filter] = (ctx2) => {\n return ctx[symbols.isolate][name] === ctx2[symbols.isolate][name];\n };\n ctx.emit(self, \"internal/before-service\", name, value);\n ctx[symbols.store][key] = { value, source: ctx };\n ctx.emit(self, \"internal/service\", name, oldValue);\n return dispose;\n }\n provide(name, value, builtin) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n const key = Symbol(name);\n internal[name] = { type: \"service\", builtin };\n this.ctx.root[symbols.isolate][name] = key;\n if (!isObject(value)) return;\n this.ctx[symbols.store][key] = { value, source: null };\n defineProperty2(value, symbols.tracker, {\n associate: name,\n property: \"ctx\"\n });\n }\n _accessor(name, options) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return () => {\n };\n internal[name] = { type: \"accessor\", ...options };\n return () => delete this.ctx.root[symbols.isolate][name];\n }\n accessor(name, options) {\n this.ctx.scope.effect(() => {\n return this._accessor(name, options);\n });\n }\n alias(name, aliases) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n for (const key of aliases) {\n internal[key] ||= { type: \"alias\", name };\n }\n }\n _mixin(source, mixins) {\n const entries = Array.isArray(mixins) ? mixins.map((key) => [key, key]) : Object.entries(mixins);\n const getTarget = typeof source === \"string\" ? (ctx) => ctx[source] : () => source;\n const disposables = entries.map(([key, value]) => {\n return this._accessor(value, {\n get(receiver) {\n const service = getTarget(this);\n if (isNullable(service)) return service;\n const mixin = receiver ? withProps(receiver, service) : service;\n const value2 = Reflect.get(service, key, mixin);\n if (typeof value2 !== \"function\") return value2;\n return value2.bind(mixin ?? service);\n },\n set(value2, receiver) {\n const service = getTarget(this);\n const mixin = receiver ? withProps(receiver, service) : service;\n return Reflect.set(service, key, value2, mixin);\n }\n });\n });\n return () => disposables.forEach((dispose) => dispose());\n }\n mixin(source, mixins) {\n this.ctx.scope.effect(() => {\n return this._mixin(source, mixins);\n });\n }\n trace(value) {\n return getTraceable(this.ctx, value);\n }\n bind(callback) {\n return new Proxy(callback, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return target.apply(this.trace(thisArg), args.map((arg) => this.trace(arg)));\n }, \"apply\")\n });\n }\n};\nvar reflect_default = ReflectService;\n\n// src/events.ts\nfunction isBailed(value) {\n return value !== null && value !== false && value !== void 0;\n}\n__name(isBailed, \"isBailed\");\nvar Lifecycle = class {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty3(this, symbols.tracker, {\n associate: \"lifecycle\",\n property: \"ctx\"\n });\n defineProperty3(this.on(\"internal/listener\", function(name, listener, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n if (name === \"ready\") {\n if (!this.lifecycle.isActive) return;\n this.scope.ensure(async () => listener());\n return () => false;\n } else if (name === \"dispose\") {\n this.scope.disposables[method](listener);\n defineProperty3(listener, \"name\", \"event <dispose>\");\n return () => remove(this.scope.disposables, listener);\n } else if (name === \"fork\") {\n this.scope.runtime.forkables[method](listener);\n return this.scope.collect(\"event <fork>\", () => remove(this.scope.runtime.forkables, listener));\n }\n }), Context.static, ctx.scope);\n for (const level of [\"info\", \"error\", \"warning\"]) {\n defineProperty3(this.on(`internal/${level}`, (format, ...param) => {\n if (this._hooks[`internal/${level}`].length > 1) return;\n console.info(format, ...param);\n }), Context.static, ctx.scope);\n }\n defineProperty3(this.on(\"internal/before-service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.updateStatus();\n scope.reset();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n defineProperty3(this.on(\"internal/service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.start();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n const checkInject = /* @__PURE__ */ __name((scope, name) => {\n if (!scope.runtime.plugin) return false;\n for (const key in scope.runtime.inject) {\n if (name === reflect_default.resolveInject(scope.ctx, key)[0]) return true;\n }\n return checkInject(scope.parent.scope, name);\n }, \"checkInject\");\n defineProperty3(this.on(\"internal/inject\", function(name) {\n return checkInject(this.scope, name);\n }, { global: true }), Context.static, ctx.scope);\n }\n static {\n __name(this, \"Lifecycle\");\n }\n isActive = false;\n _tasks = /* @__PURE__ */ new Set();\n _hooks = {};\n async flush() {\n while (this._tasks.size) {\n await Promise.all(Array.from(this._tasks));\n }\n }\n filterHooks(hooks, thisArg) {\n thisArg = getTraceable(this.ctx, thisArg);\n return hooks.slice().filter((hook) => {\n const filter = thisArg?.[Context.filter];\n return hook.global || !filter || filter.call(thisArg, hook.ctx);\n });\n }\n *dispatch(type, args) {\n const thisArg = typeof args[0] === \"object\" || typeof args[0] === \"function\" ? args.shift() : null;\n const name = args.shift();\n if (name !== \"internal/event\") {\n this.emit(\"internal/event\", type, name, args, thisArg);\n }\n for (const hook of this.filterHooks(this._hooks[name] || [], thisArg)) {\n yield hook.callback.apply(thisArg, args);\n }\n }\n async parallel(...args) {\n await Promise.all(this.dispatch(\"emit\", args));\n }\n emit(...args) {\n Array.from(this.dispatch(\"emit\", args));\n }\n async serial(...args) {\n for await (const result of this.dispatch(\"serial\", args)) {\n if (isBailed(result)) return result;\n }\n }\n bail(...args) {\n for (const result of this.dispatch(\"bail\", args)) {\n if (isBailed(result)) return result;\n }\n }\n register(label, hooks, callback, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n hooks[method]({ ctx: this.ctx, callback, ...options });\n return this.ctx.state.collect(label, () => this.unregister(hooks, callback));\n }\n unregister(hooks, callback) {\n const index = hooks.findIndex((hook) => hook.callback === callback);\n if (index >= 0) {\n hooks.splice(index, 1);\n return true;\n }\n }\n on(name, listener, options) {\n if (typeof options !== \"object\") {\n options = { prepend: options };\n }\n this.ctx.scope.assertActive();\n listener = this.ctx.reflect.bind(listener);\n const result = this.bail(this.ctx, \"internal/listener\", name, listener, options);\n if (result) return result;\n const hooks = this._hooks[name] ||= [];\n const label = typeof name === \"string\" ? `event <${name}>` : \"event (Symbol)\";\n return this.register(label, hooks, listener, options);\n }\n once(name, listener, options) {\n const dispose = this.on(name, function(...args) {\n dispose();\n return listener.apply(this, args);\n }, options);\n return dispose;\n }\n async start() {\n this.isActive = true;\n const hooks = this._hooks.ready || [];\n while (hooks.length) {\n const { ctx, callback } = hooks.shift();\n ctx.scope.ensure(async () => callback());\n }\n await this.flush();\n }\n async stop() {\n this.isActive = false;\n this.ctx.scope.reset();\n }\n};\nvar events_default = Lifecycle;\n\n// src/registry.ts\nimport { defineProperty as defineProperty5 } from \"cosmokit\";\n\n// src/scope.ts\nimport { deepEqual, defineProperty as defineProperty4, isNullable as isNullable2, remove as remove2 } from \"cosmokit\";\nvar ScopeStatus = /* @__PURE__ */ ((ScopeStatus2) => {\n ScopeStatus2[ScopeStatus2[\"PENDING\"] = 0] = \"PENDING\";\n ScopeStatus2[ScopeStatus2[\"LOADING\"] = 1] = \"LOADING\";\n ScopeStatus2[ScopeStatus2[\"ACTIVE\"] = 2] = \"ACTIVE\";\n ScopeStatus2[ScopeStatus2[\"FAILED\"] = 3] = \"FAILED\";\n ScopeStatus2[ScopeStatus2[\"DISPOSED\"] = 4] = \"DISPOSED\";\n return ScopeStatus2;\n})(ScopeStatus || {});\nvar CordisError = class _CordisError extends Error {\n constructor(code, message) {\n super(message ?? _CordisError.Code[code]);\n this.code = code;\n }\n static {\n __name(this, \"CordisError\");\n }\n};\n((CordisError2) => {\n CordisError2.Code = {\n INACTIVE_EFFECT: \"cannot create effect on inactive context\"\n };\n})(CordisError || (CordisError = {}));\nvar EffectScope = class {\n constructor(parent, config) {\n this.parent = parent;\n this.config = config;\n this.uid = parent.registry ? parent.registry.counter : 0;\n this.ctx = this.context = parent.extend({ scope: this });\n this.proxy = new Proxy({}, {\n get: /* @__PURE__ */ __name((target, key) => Reflect.get(this.config, key), \"get\")\n });\n }\n static {\n __name(this, \"EffectScope\");\n }\n uid;\n ctx;\n disposables = [];\n error;\n status = 0 /* PENDING */;\n isActive = false;\n // Same as `this.ctx`, but with a more specific type.\n context;\n proxy;\n acceptors = [];\n tasks = /* @__PURE__ */ new Set();\n hasError = false;\n get _config() {\n return this.runtime.isReactive ? this.proxy : this.config;\n }\n assertActive() {\n if (this.uid !== null || this.isActive) return;\n throw new CordisError(\"INACTIVE_EFFECT\");\n }\n effect(callback, config) {\n this.assertActive();\n const result = isConstructor(callback) ? new callback(this.ctx, config) : callback(this.ctx, config);\n let disposed = false;\n const original = typeof result === \"function\" ? result : result.dispose.bind(result);\n const wrapped = /* @__PURE__ */ __name((...args) => {\n if (disposed) return;\n disposed = true;\n remove2(this.disposables, wrapped);\n return original(...args);\n }, \"wrapped\");\n this.disposables.push(wrapped);\n if (typeof result === \"function\") return wrapped;\n result.dispose = wrapped;\n return result;\n }\n collect(label, callback) {\n const dispose = defineProperty4(() => {\n remove2(this.disposables, dispose);\n return callback();\n }, \"name\", label);\n this.disposables.push(dispose);\n return dispose;\n }\n restart() {\n this.reset();\n this.error = null;\n this.hasError = false;\n this.status = 0 /* PENDING */;\n this.start();\n }\n _getStatus() {\n if (this.uid === null) return 4 /* DISPOSED */;\n if (this.hasError) return 3 /* FAILED */;\n if (this.tasks.size) return 1 /* LOADING */;\n if (this.ready) return 2 /* ACTIVE */;\n return 0 /* PENDING */;\n }\n updateStatus(callback) {\n const oldValue = this.status;\n callback?.();\n this.status = this._getStatus();\n if (oldValue !== this.status) {\n this.context.emit(\"internal/status\", this, oldValue);\n }\n }\n ensure(callback) {\n const task = callback().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n this.cancel(reason);\n }).finally(() => {\n this.updateStatus(() => this.tasks.delete(task));\n this.context.events._tasks.delete(task);\n });\n this.updateStatus(() => this.tasks.add(task));\n this.context.events._tasks.add(task);\n }\n cancel(reason) {\n this.error = reason;\n this.updateStatus(() => this.hasError = true);\n this.reset();\n }\n get ready() {\n return Object.entries(this.runtime.inject).every(([name, inject]) => {\n return !inject.required || !isNullable2(this.ctx.get(name));\n });\n }\n reset() {\n this.isActive = false;\n this.disposables = this.disposables.splice(0).filter((dispose) => {\n if (this.uid !== null && dispose[Context.static] === this) return true;\n (async () => dispose())().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n });\n });\n }\n init(error) {\n if (!this.config) {\n this.cancel(error);\n } else {\n this.start();\n }\n }\n start() {\n if (!this.ready || this.isActive || this.uid === null) return true;\n this.isActive = true;\n this.updateStatus(() => this.hasError = false);\n }\n accept(...args) {\n const keys = Array.isArray(args[0]) ? args.shift() : null;\n const acceptor = { keys, callback: args[0], ...args[1] };\n return this.effect(() => {\n this.acceptors.push(acceptor);\n if (acceptor.immediate) acceptor.callback?.(this.config);\n return () => remove2(this.acceptors, acceptor);\n });\n }\n decline(keys) {\n return this.accept(keys, () => true);\n }\n checkUpdate(resolved, forced) {\n if (forced || !this.config) return [true, true];\n if (forced === false) return [false, false];\n const modified = /* @__PURE__ */ Object.create(null);\n const checkPropertyUpdate = /* @__PURE__ */ __name((key) => {\n const result = modified[key] ??= !deepEqual(this.config[key], resolved[key]);\n hasUpdate ||= result;\n return result;\n }, \"checkPropertyUpdate\");\n const ignored = /* @__PURE__ */ new Set();\n let hasUpdate = false, shouldRestart = false;\n let fallback = this.runtime.isReactive || null;\n for (const { keys, callback, passive } of this.acceptors) {\n if (!keys) {\n fallback ||= !passive;\n } else if (passive) {\n keys?.forEach((key) => ignored.add(key));\n } else {\n let hasUpdate2 = false;\n for (const key of keys) {\n hasUpdate2 ||= checkPropertyUpdate(key);\n }\n if (!hasUpdate2) continue;\n }\n const result = callback?.(resolved);\n if (result) shouldRestart = true;\n }\n for (const key in { ...this.config, ...resolved }) {\n if (fallback === false) continue;\n if (!(key in modified) && !ignored.has(key)) {\n const hasUpdate2 = checkPropertyUpdate(key);\n if (fallback === null) shouldRestart ||= hasUpdate2;\n }\n }\n return [hasUpdate, shouldRestart];\n }\n};\nvar ForkScope = class extends EffectScope {\n constructor(parent, runtime, config, error) {\n super(parent, config);\n this.runtime = runtime;\n this.dispose = defineProperty4(parent.scope.collect(`fork <${parent.runtime.name}>`, () => {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/fork\", this);\n const result = remove2(runtime.disposables, this.dispose);\n if (remove2(runtime.children, this) && !runtime.children.length) {\n parent.registry.delete(runtime.plugin);\n }\n return result;\n }), Context.static, runtime);\n runtime.children.push(this);\n runtime.disposables.push(this.dispose);\n this.context.emit(\"internal/fork\", this);\n this.init(error);\n }\n static {\n __name(this, \"ForkScope\");\n }\n dispose;\n start() {\n if (super.start()) return true;\n for (const fork of this.runtime.forkables) {\n this.ensure(async () => fork(this.context, this._config));\n }\n }\n update(config, forced) {\n const oldConfig = this.config;\n const state = this.runtime.isForkable ? this : this.runtime;\n if (state.config !== oldConfig) return;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = state.checkUpdate(resolved, forced);\n this.context.emit(\"internal/before-update\", this, config);\n this.config = resolved;\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", this, oldConfig);\n }\n if (shouldRestart) state.restart();\n }\n};\nvar MainScope = class extends EffectScope {\n constructor(ctx, plugin, config, error) {\n super(ctx, config);\n this.plugin = plugin;\n if (!plugin) {\n this.name = \"root\";\n this.isActive = true;\n } else {\n this.setup();\n this.init(error);\n }\n }\n static {\n __name(this, \"MainScope\");\n }\n value;\n runtime = this;\n schema;\n name;\n inject = /* @__PURE__ */ Object.create(null);\n forkables = [];\n children = [];\n isReusable = false;\n isReactive = false;\n get isForkable() {\n return this.forkables.length > 0;\n }\n fork(parent, config, error) {\n return new ForkScope(parent, this, config, error);\n }\n dispose() {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/runtime\", this);\n return true;\n }\n setup() {\n const { name } = this.plugin;\n if (name && name !== \"apply\") this.name = name;\n this.schema = this.plugin[\"Config\"] || this.plugin[\"schema\"];\n this.inject = Inject.resolve(this.plugin[\"using\"] || this.plugin[\"inject\"]);\n this.isReusable = this.plugin[\"reusable\"];\n this.isReactive = this.plugin[\"reactive\"];\n this.context.emit(\"internal/runtime\", this);\n if (this.isReusable) {\n this.forkables.push(this.apply);\n }\n }\n apply = /* @__PURE__ */ __name((context, config) => {\n if (typeof this.plugin !== \"function\") {\n return this.plugin.apply(context, config);\n } else if (isConstructor(this.plugin)) {\n const instance = new this.plugin(context, config);\n const name = instance[Context.expose];\n if (name) {\n context.set(name, instance);\n }\n if (instance[\"fork\"]) {\n this.forkables.push(instance[\"fork\"].bind(instance));\n }\n return instance;\n } else {\n return this.plugin(context, config);\n }\n }, \"apply\");\n reset() {\n super.reset();\n for (const fork of this.children) {\n fork.reset();\n }\n }\n start() {\n if (super.start()) return true;\n if (!this.isReusable && this.plugin) {\n this.ensure(async () => this.value = this.apply(this.ctx, this._config));\n }\n for (const fork of this.children) {\n fork.start();\n }\n }\n update(config, forced) {\n if (this.isForkable) {\n const warning = new Error(`attempting to update forkable plugin \"${this.plugin.name}\", which may lead to unexpected behavior`);\n this.context.emit(this.ctx, \"internal/warning\", warning);\n }\n const oldConfig = this.config;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin || this.context.constructor, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = this.checkUpdate(resolved, forced);\n const state = this.children.find((fork) => fork.config === oldConfig);\n this.config = resolved;\n if (state) {\n this.context.emit(\"internal/before-update\", state, config);\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", state, oldConfig);\n }\n }\n if (shouldRestart) this.restart();\n }\n};\n\n// src/registry.ts\nfunction isApplicable(object) {\n return object && typeof object === \"object\" && typeof object.apply === \"function\";\n}\n__name(isApplicable, \"isApplicable\");\nfunction Inject(inject) {\n return function(value, ctx) {\n if (ctx.kind === \"class\") {\n value.inject = inject;\n } else if (ctx.kind === \"method\") {\n ctx.addInitializer(function() {\n const property = this[symbols.tracker]?.property;\n if (!property) throw new Error(\"missing context tracker\");\n this[property].inject(inject, (ctx2) => {\n value.call(withProps(this, { [property]: ctx2 }));\n });\n });\n } else {\n throw new Error(\"@Inject can only be used on class or class methods\");\n }\n };\n}\n__name(Inject, \"Inject\");\n((Inject2) => {\n function resolve(inject) {\n if (!inject) return {};\n if (Array.isArray(inject)) {\n return Object.fromEntries(inject.map((name) => [name, { required: true }]));\n }\n const { required, optional, ...rest } = inject;\n if (Array.isArray(required)) {\n Object.assign(rest, Object.fromEntries(required.map((name) => [name, { required: true }])));\n }\n if (Array.isArray(optional)) {\n Object.assign(rest, Object.fromEntries(optional.map((name) => [name, { required: false }])));\n }\n return rest;\n }\n Inject2.resolve = resolve;\n __name(resolve, \"resolve\");\n})(Inject || (Inject = {}));\nvar Registry = class {\n constructor(ctx, config) {\n this.ctx = ctx;\n defineProperty5(this, symbols.tracker, {\n associate: \"registry\",\n property: \"ctx\"\n });\n this.context = ctx;\n const runtime = new MainScope(ctx, null, config);\n ctx.scope = runtime;\n runtime.ctx = ctx;\n this.set(null, runtime);\n }\n static {\n __name(this, \"Registry\");\n }\n _counter = 0;\n _internal = /* @__PURE__ */ new Map();\n context;\n get counter() {\n return ++this._counter;\n }\n get size() {\n return this._internal.size;\n }\n resolve(plugin, assert = false) {\n if (plugin === null) return plugin;\n if (typeof plugin === \"function\") return plugin;\n if (isApplicable(plugin)) return plugin.apply;\n if (assert) throw new Error('invalid plugin, expect function or object with an \"apply\" method, received ' + typeof plugin);\n }\n get(plugin) {\n const key = this.resolve(plugin);\n return key && this._internal.get(key);\n }\n has(plugin) {\n const key = this.resolve(plugin);\n return !!key && this._internal.has(key);\n }\n set(plugin, state) {\n const key = this.resolve(plugin);\n this._internal.set(key, state);\n }\n delete(plugin) {\n const key = this.resolve(plugin);\n const runtime = key && this._internal.get(key);\n if (!runtime) return;\n this._internal.delete(key);\n runtime.dispose();\n return runtime;\n }\n keys() {\n return this._internal.keys();\n }\n values() {\n return this._internal.values();\n }\n entries() {\n return this._internal.entries();\n }\n forEach(callback) {\n return this._internal.forEach(callback);\n }\n using(inject, callback) {\n return this.inject(inject, callback);\n }\n inject(inject, callback) {\n return this.plugin({ inject, apply: callback, name: callback.name });\n }\n plugin(plugin, config, error) {\n this.resolve(plugin, true);\n this.ctx.scope.assertActive();\n if (!error) {\n try {\n config = resolveConfig(plugin, config);\n } catch (reason) {\n this.context.emit(this.ctx, \"internal/error\", reason);\n error = reason;\n config = null;\n }\n }\n let runtime = this.get(plugin);\n if (runtime) {\n if (!runtime.isForkable) {\n this.context.emit(this.ctx, \"internal/warning\", new Error(`duplicate plugin detected: ${plugin.name}`));\n }\n return runtime.fork(this.ctx, config, error);\n }\n runtime = new MainScope(this.ctx, plugin, config, error);\n this.set(plugin, runtime);\n return runtime.fork(this.ctx, config, error);\n }\n};\nvar registry_default = Registry;\n\n// src/context.ts\nvar Context = class _Context {\n static {\n __name(this, \"Context\");\n }\n static store = symbols.store;\n static events = symbols.events;\n static static = symbols.static;\n static filter = symbols.filter;\n static expose = symbols.expose;\n static isolate = symbols.isolate;\n static internal = symbols.internal;\n static intercept = symbols.intercept;\n static origin = \"ctx\";\n static current = \"ctx\";\n static is(value) {\n return !!value?.[_Context.is];\n }\n static {\n _Context.is[Symbol.toPrimitive] = () => Symbol.for(\"cordis.is\");\n _Context.prototype[_Context.is] = true;\n }\n /** @deprecated use `Service.traceable` instead */\n static associate(object, name) {\n return object;\n }\n constructor(config) {\n config = resolveConfig(this.constructor, config);\n this[symbols.store] = /* @__PURE__ */ Object.create(null);\n this[symbols.isolate] = /* @__PURE__ */ Object.create(null);\n this[symbols.internal] = /* @__PURE__ */ Object.create(null);\n this[symbols.intercept] = /* @__PURE__ */ Object.create(null);\n const self = new Proxy(this, reflect_default.handler);\n self.root = self;\n self.reflect = new reflect_default(self);\n self.registry = new registry_default(self, config);\n self.lifecycle = new events_default(self);\n const attach = /* @__PURE__ */ __name((internal) => {\n if (!internal) return;\n attach(Object.getPrototypeOf(internal));\n for (const key of Object.getOwnPropertyNames(internal)) {\n const constructor = internal[key][\"prototype\"]?.constructor;\n if (!constructor) continue;\n self[internal[key][\"key\"]] = new constructor(self, config);\n defineProperty6(self[internal[key][\"key\"]], \"ctx\", self);\n }\n }, \"attach\");\n attach(this[symbols.internal]);\n return self;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return `Context <${this.name}>`;\n }\n get name() {\n let runtime = this.runtime;\n while (runtime && !runtime.name) {\n runtime = runtime.parent.runtime;\n }\n return runtime?.name;\n }\n get events() {\n return this.lifecycle;\n }\n /** @deprecated */\n get state() {\n return this.scope;\n }\n extend(meta = {}) {\n const source = Reflect.getOwnPropertyDescriptor(this, symbols.shadow)?.value;\n const self = Object.assign(Object.create(getTraceable(this, this)), meta);\n if (!source) return self;\n return Object.assign(Object.create(self), { [symbols.shadow]: source });\n }\n isolate(name, label) {\n const shadow = Object.create(this[symbols.isolate]);\n shadow[name] = label ?? Symbol(name);\n return this.extend({ [symbols.isolate]: shadow });\n }\n intercept(name, config) {\n const intercept = Object.create(this[symbols.intercept]);\n intercept[name] = config;\n return this.extend({ [symbols.intercept]: intercept });\n }\n};\nContext.prototype[Context.internal] = /* @__PURE__ */ Object.create(null);\n\n// src/service.ts\nimport { defineProperty as defineProperty7 } from \"cosmokit\";\nvar Service = class _Service {\n static {\n __name(this, \"Service\");\n }\n static setup = symbols.setup;\n static invoke = symbols.invoke;\n static extend = symbols.extend;\n static tracker = symbols.tracker;\n static provide = symbols.provide;\n static immediate = symbols.immediate;\n start() {\n }\n stop() {\n }\n ctx;\n name;\n config;\n constructor(...args) {\n let _ctx, name, immediate, config;\n if (Context.is(args[0])) {\n _ctx = args[0];\n if (typeof args[1] === \"string\") {\n name = args[1];\n immediate = args[2];\n } else {\n config = args[1];\n }\n } else {\n config = args[0];\n }\n name ??= this.constructor[symbols.provide];\n immediate ??= this.constructor[symbols.immediate];\n let self = this;\n const tracker = {\n associate: name,\n property: \"ctx\"\n };\n if (self[symbols.invoke]) {\n self = createCallable(name, joinPrototype(Object.getPrototypeOf(this), Function.prototype), tracker);\n }\n if (_ctx) {\n self.ctx = _ctx;\n } else {\n self[symbols.setup]();\n }\n self.name = name;\n self.config = config;\n defineProperty7(self, symbols.tracker, tracker);\n self.ctx.provide(name);\n self.ctx.runtime.name = name;\n if (immediate) {\n if (_ctx) self[symbols.expose] = name;\n else self.ctx.set(name, self);\n }\n self.ctx.on(\"ready\", async () => {\n await Promise.resolve();\n await self.start();\n if (!immediate) self.ctx.set(name, self);\n });\n self.ctx.on(\"dispose\", () => self.stop());\n return self;\n }\n [symbols.filter](ctx) {\n return ctx[symbols.isolate][this.name] === this.ctx[symbols.isolate][this.name];\n }\n [symbols.setup]() {\n this.ctx = new Context();\n }\n [symbols.extend](props) {\n let self;\n if (this[_Service.invoke]) {\n self = createCallable(this.name, this, this[symbols.tracker]);\n } else {\n self = Object.create(this);\n }\n return Object.assign(self, props);\n }\n static [Symbol.hasInstance](instance) {\n let constructor = instance.constructor;\n while (constructor) {\n constructor = constructor.prototype?.constructor;\n if (constructor === this) return true;\n constructor = Object.getPrototypeOf(constructor);\n }\n return false;\n }\n};\nexport {\n Context,\n CordisError,\n EffectScope,\n ForkScope,\n Inject,\n events_default as Lifecycle,\n MainScope,\n reflect_default as ReflectService,\n registry_default as Registry,\n ScopeStatus,\n Service,\n createCallable,\n getTraceable,\n isBailed,\n isConstructor,\n isObject,\n isUnproxyable,\n joinPrototype,\n resolveConfig,\n symbols,\n withProps\n};\n//# sourceMappingURL=index.mjs.map\n","/* eslint-env browser */\n'use strict';\n\nfunction getChromeVersion() {\n\tconst matches = /(Chrome|Chromium)\\/(?<chromeVersion>\\d+)\\./.exec(navigator.userAgent);\n\n\tif (!matches) {\n\t\treturn;\n\t}\n\n\treturn Number.parseInt(matches.groups.chromeVersion, 10);\n}\n\nconst colorSupport = getChromeVersion() >= 69 ? {\n\tlevel: 1,\n\thasBasic: true,\n\thas256: false,\n\thas16m: false\n} : false;\n\nmodule.exports = {\n\tstdout: colorSupport,\n\tstderr: colorSupport\n};\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// src/shared.ts\nimport { stdout } from \"supports-color\";\nimport { Time } from \"cosmokit\";\nvar require_shared = __commonJS({\n \"src/shared.ts\"(exports, module) {\n \"use strict\";\n var c16 = [6, 2, 3, 4, 5, 1];\n var c256 = [\n 20,\n 21,\n 26,\n 27,\n 32,\n 33,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 56,\n 57,\n 62,\n 63,\n 68,\n 69,\n 74,\n 75,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 92,\n 93,\n 98,\n 99,\n 112,\n 113,\n 129,\n 134,\n 135,\n 148,\n 149,\n 160,\n 161,\n 162,\n 163,\n 164,\n 165,\n 166,\n 167,\n 168,\n 169,\n 170,\n 171,\n 172,\n 173,\n 178,\n 179,\n 184,\n 185,\n 196,\n 197,\n 198,\n 199,\n 200,\n 201,\n 202,\n 203,\n 204,\n 205,\n 206,\n 207,\n 208,\n 209,\n 214,\n 215,\n 220,\n 221\n ];\n function isAggregateError(error) {\n return error instanceof Error && Array.isArray(error[\"errors\"]);\n }\n __name(isAggregateError, \"isAggregateError\");\n var Logger = class _Logger {\n constructor(name, meta) {\n this.name = name;\n this.meta = meta;\n this.createMethod(\"success\", _Logger.SUCCESS);\n this.createMethod(\"error\", _Logger.ERROR);\n this.createMethod(\"info\", _Logger.INFO);\n this.createMethod(\"warn\", _Logger.WARN);\n this.createMethod(\"debug\", _Logger.DEBUG);\n }\n static {\n __name(this, \"Logger\");\n }\n // log levels\n static SILENT = 0;\n static SUCCESS = 1;\n static ERROR = 1;\n static INFO = 2;\n static WARN = 2;\n static DEBUG = 3;\n // global config\n static id = 0;\n static targets = [{\n colors: stdout && stdout.level,\n print(text) {\n console.log(text);\n }\n }];\n // global registry\n static formatters = /* @__PURE__ */ Object.create(null);\n static format(name, formatter) {\n this.formatters[name] = formatter;\n }\n static levels = {\n base: 2\n };\n static color(target, code, value, decoration = \"\") {\n if (!target.colors) return \"\" + value;\n return `\\x1B[3${code < 8 ? code : \"8;5;\" + code}${target.colors >= 2 ? decoration : \"\"}m${value}\\x1B[0m`;\n }\n static code(name, target) {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (hash << 3) - hash + name.charCodeAt(i) + 13;\n hash |= 0;\n }\n const colors = !target.colors ? [] : target.colors >= 2 ? c256 : c16;\n return colors[Math.abs(hash) % colors.length];\n }\n static render(target, record) {\n const prefix = `[${record.type[0].toUpperCase()}]`;\n const space = \" \".repeat(target.label?.margin ?? 1);\n let indent = 3 + space.length, output = \"\";\n if (target.showTime) {\n indent += target.showTime.length + space.length;\n output += _Logger.color(target, 8, Time.template(target.showTime)) + space;\n }\n const code = _Logger.code(record.name, target);\n const label = _Logger.color(target, code, record.name, \";1\");\n const padLength = (target.label?.width ?? 0) + label.length - record.name.length;\n if (target.label?.align === \"right\") {\n output += label.padStart(padLength) + space + prefix + space;\n indent += (target.label.width ?? 0) + space.length;\n } else {\n output += prefix + space + label.padEnd(padLength) + space;\n }\n output += record.content.replace(/\\n/g, \"\\n\" + \" \".repeat(indent));\n if (target.showDiff && target.timestamp) {\n const diff = record.timestamp - target.timestamp;\n output += _Logger.color(target, code, \" +\" + Time.format(diff));\n }\n return output;\n }\n extend = /* @__PURE__ */ __name((namespace) => {\n return new _Logger(`${this.name}:${namespace}`, this.meta);\n }, \"extend\");\n warning = /* @__PURE__ */ __name((format, ...args) => {\n this.warn(format, ...args);\n }, \"warning\");\n createMethod(type, level) {\n this[type] = (...args) => {\n if (args.length === 1 && args[0] instanceof Error) {\n if (args[0].cause) {\n this[type](args[0].cause);\n } else if (isAggregateError(args[0])) {\n args[0].errors.forEach((error) => this[type](error));\n return;\n }\n }\n const id = ++_Logger.id;\n const timestamp = Date.now();\n for (const target of _Logger.targets) {\n if (this.getLevel(target) < level) continue;\n const content = this.format(target, ...args);\n const record = { id, type, level, name: this.name, meta: this.meta, content, timestamp };\n if (target.record) {\n target.record(record);\n } else {\n const { print = console.log } = target;\n print(_Logger.render(target, record));\n }\n target.timestamp = timestamp;\n }\n };\n }\n format(target, ...args) {\n if (args[0] instanceof Error) {\n args[0] = args[0].stack || args[0].message;\n args.unshift(\"%s\");\n } else if (typeof args[0] !== \"string\") {\n args.unshift(\"%o\");\n }\n let format = args.shift();\n format = format.replace(/%([a-zA-Z%])/g, (match, char) => {\n if (match === \"%%\") return \"%\";\n const formatter = _Logger.formatters[char];\n if (typeof formatter === \"function\") {\n const value = args.shift();\n return formatter(value, target, this);\n }\n return match;\n });\n for (let arg of args) {\n if (typeof arg === \"object\" && arg) {\n arg = _Logger.formatters[\"o\"](arg, target, this);\n }\n format += \" \" + arg;\n }\n const { maxLength = 10240 } = target;\n return format.split(/\\r?\\n/g).map((line) => {\n return line.slice(0, maxLength) + (line.length > maxLength ? \"...\" : \"\");\n }).join(\"\\n\");\n }\n getLevel(target) {\n const paths = this.name.split(\":\");\n let config = target?.levels || _Logger.levels;\n do {\n config = config[paths.shift()] ?? config[\"base\"];\n } while (paths.length && typeof config === \"object\");\n return config;\n }\n get level() {\n return this.getLevel();\n }\n set level(value) {\n const paths = this.name.split(\":\");\n let config = _Logger.levels;\n while (paths.length > 1) {\n const name = paths.shift();\n const value2 = config[name];\n if (typeof value2 === \"object\") {\n config = value2;\n } else {\n config = config[name] = { base: value2 ?? config.base };\n }\n }\n config[paths[0]] = value;\n }\n };\n Logger.format(\"s\", (value) => value);\n Logger.format(\"d\", (value) => +value);\n Logger.format(\"j\", (value) => JSON.stringify(value));\n Logger.format(\"c\", (value, target, logger) => {\n return Logger.color(target, Logger.code(logger.name, target), value);\n });\n Logger.format(\"C\", (value, target) => {\n return Logger.color(target, 15, value, \";1\");\n });\n module.exports = Logger;\n }\n});\n\n// src/browser.ts\nimport inspect from \"object-inspect\";\nvar require_browser = __commonJS({\n \"src/browser.ts\"(exports, module) {\n var import_shared = __toESM(require_shared());\n import_shared.default.format(\"o\", (value, target) => {\n return inspect(value, { depth: Infinity }).replace(/\\s*\\n\\s*/g, \" \");\n });\n module.exports = import_shared.default;\n }\n});\nexport default require_browser();\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/index.ts\nimport { Service } from \"@cordisjs/core\";\nimport { defineProperty } from \"cosmokit\";\nimport Logger from \"reggol\";\nvar LoggerService = class _LoggerService extends Service {\n static {\n __name(this, \"LoggerService\");\n }\n constructor(ctx) {\n super(ctx, \"logger\", true);\n ctx.on(\"internal/info\", function(format, ...args) {\n this.logger(\"app\").info(format, ...args);\n });\n ctx.on(\"internal/error\", function(format, ...args) {\n this.logger(\"app\").error(format, ...args);\n });\n ctx.on(\"internal/warning\", function(format, ...args) {\n this.logger(\"app\").warn(format, ...args);\n });\n }\n [Service.invoke](name) {\n return new Logger(name, defineProperty({}, \"ctx\", this.ctx));\n }\n static {\n for (const type of [\"success\", \"error\", \"info\", \"warn\", \"debug\", \"extend\"]) {\n _LoggerService.prototype[type] = function(...args) {\n return this(this.ctx.name)[type](...args);\n };\n }\n }\n};\nvar src_default = LoggerService;\nexport {\n Logger,\n LoggerService,\n src_default as default\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\n\n// src/index.ts\nimport { Binary, clone, deepEqual, filterKeys, isNullable, isPlainObject, pick, valueMap } from \"cosmokit\";\nvar require_index = __commonJS({\n \"src/index.ts\"(exports, module) {\n var kSchema = Symbol.for(\"schemastery\");\n var kValidationError = Symbol.for(\"ValidationError\");\n globalThis.__schemastery_index__ ??= 0;\n var ValidationError = class extends TypeError {\n constructor(message, options) {\n let prefix = \"$\";\n for (const segment of options.path || []) {\n if (typeof segment === \"string\") {\n prefix += \".\" + segment;\n } else if (typeof segment === \"number\") {\n prefix += \"[\" + segment + \"]\";\n } else if (typeof segment === \"symbol\") {\n prefix += `[Symbol(${segment.toString()})]`;\n }\n }\n if (prefix.startsWith(\".\")) prefix = prefix.slice(1);\n super((prefix === \"$\" ? \"\" : `${prefix} `) + message);\n this.options = options;\n }\n static {\n __name(this, \"ValidationError\");\n }\n name = \"ValidationError\";\n static is(error) {\n return !!error?.[kValidationError];\n }\n };\n Object.defineProperty(ValidationError.prototype, kValidationError, {\n value: true\n });\n var Schema = /* @__PURE__ */ __name(function(options) {\n const schema = /* @__PURE__ */ __name(function(data, options2 = {}) {\n return Schema.resolve(data, schema, options2)[0];\n }, \"schema\");\n if (options.refs) {\n const refs2 = valueMap(options.refs, (options2) => new Schema(options2));\n const getRef = /* @__PURE__ */ __name((uid) => refs2[uid], \"getRef\");\n for (const key in refs2) {\n const options2 = refs2[key];\n options2.sKey = getRef(options2.sKey);\n options2.inner = getRef(options2.inner);\n options2.list = options2.list && options2.list.map(getRef);\n options2.dict = options2.dict && valueMap(options2.dict, getRef);\n }\n return refs2[options.uid];\n }\n Object.assign(schema, options);\n if (typeof schema.callback === \"string\") {\n try {\n schema.callback = new Function(\"return \" + schema.callback)();\n } catch {\n }\n }\n Object.defineProperty(schema, \"uid\", { value: globalThis.__schemastery_index__++ });\n Object.setPrototypeOf(schema, Schema.prototype);\n schema.meta ||= {};\n schema.toString = schema.toString.bind(schema);\n return schema;\n }, \"Schema\");\n Schema.prototype = Object.create(Function.prototype);\n Schema.prototype[kSchema] = true;\n Schema.ValidationError = ValidationError;\n var refs;\n Schema.prototype.toJSON = /* @__PURE__ */ __name(function toJSON() {\n if (refs) {\n refs[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n return this.uid;\n }\n refs = { [this.uid]: { ...this } };\n refs[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n const result = { uid: this.uid, refs };\n refs = void 0;\n return result;\n }, \"toJSON\");\n Schema.prototype.set = /* @__PURE__ */ __name(function set(key, value) {\n this.dict[key] = value;\n return this;\n }, \"set\");\n Schema.prototype.push = /* @__PURE__ */ __name(function push(value) {\n this.list.push(value);\n return this;\n }, \"push\");\n function mergeDesc(original, messages) {\n const result = typeof original === \"string\" ? { \"\": original } : { ...original };\n for (const locale in messages) {\n const value = messages[locale];\n if (value?.$description || value?.$desc) {\n result[locale] = value.$description || value.$desc;\n } else if (typeof value === \"string\") {\n result[locale] = value;\n }\n }\n return result;\n }\n __name(mergeDesc, \"mergeDesc\");\n function getInner(value) {\n return value?.$value ?? value?.$inner;\n }\n __name(getInner, \"getInner\");\n function extractKeys(data) {\n return filterKeys(data ?? {}, (key) => !key.startsWith(\"$\"));\n }\n __name(extractKeys, \"extractKeys\");\n Schema.prototype.i18n = /* @__PURE__ */ __name(function i18n(messages) {\n const schema = Schema(this);\n const desc = mergeDesc(schema.meta.description, messages);\n if (Object.keys(desc).length) schema.meta.description = desc;\n if (schema.dict) {\n schema.dict = valueMap(schema.dict, (inner, key) => {\n return inner.i18n(valueMap(messages, (data) => getInner(data)?.[key] ?? data?.[key]));\n });\n }\n if (schema.list) {\n schema.list = schema.list.map((inner, index) => {\n return inner.i18n(valueMap(messages, (data = {}) => {\n if (Array.isArray(getInner(data))) return getInner(data)[index];\n if (Array.isArray(data)) return data[index];\n return extractKeys(data);\n }));\n });\n }\n if (schema.inner) {\n schema.inner = schema.inner.i18n(valueMap(messages, (data) => {\n if (getInner(data)) return getInner(data);\n return extractKeys(data);\n }));\n }\n if (schema.sKey) {\n schema.sKey = schema.sKey.i18n(valueMap(messages, (data) => data?.$key));\n }\n return schema;\n }, \"i18n\");\n Schema.prototype.extra = /* @__PURE__ */ __name(function extra(key, value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }, \"extra\");\n for (const key of [\"required\", \"disabled\", \"collapse\", \"hidden\", \"loose\"]) {\n Object.assign(Schema.prototype, {\n [key](value = true) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n Schema.prototype.deprecated = /* @__PURE__ */ __name(function deprecated() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"deprecated\", type: \"danger\" });\n return schema;\n }, \"deprecated\");\n Schema.prototype.experimental = /* @__PURE__ */ __name(function experimental() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"experimental\", type: \"warning\" });\n return schema;\n }, \"experimental\");\n Schema.prototype.pattern = /* @__PURE__ */ __name(function pattern(regexp) {\n const schema = Schema(this);\n const pattern2 = pick(regexp, [\"source\", \"flags\"]);\n schema.meta = { ...schema.meta, pattern: pattern2 };\n return schema;\n }, \"pattern\");\n Schema.prototype.simplify = /* @__PURE__ */ __name(function simplify(value) {\n if (deepEqual(value, this.meta.default, this.type === \"dict\")) return null;\n if (isNullable(value)) return value;\n if (this.type === \"object\" || this.type === \"dict\") {\n const result = {};\n for (const key in value) {\n const schema = this.type === \"object\" ? this.dict[key] : this.inner;\n const item = schema?.simplify(value[key]);\n if (this.type === \"dict\" || !isNullable(item)) result[key] = item;\n }\n if (deepEqual(result, this.meta.default, this.type === \"dict\")) return null;\n return result;\n } else if (this.type === \"array\" || this.type === \"tuple\") {\n const result = [];\n value.forEach((value2, index) => {\n const schema = this.type === \"array\" ? this.inner : this.list[index];\n const item = schema ? schema.simplify(value2) : value2;\n result.push(item);\n });\n return result;\n } else if (this.type === \"intersect\") {\n const result = {};\n for (const item of this.list) {\n Object.assign(result, item.simplify(value));\n }\n return result;\n } else if (this.type === \"union\") {\n for (const schema of this.list) {\n try {\n Schema.resolve(value, schema, {});\n return schema.simplify(value);\n } catch {\n }\n }\n }\n return value;\n }, \"simplify\");\n Schema.prototype.toString = /* @__PURE__ */ __name(function toString(inline) {\n return formatters[this.type]?.(this, inline) ?? `Schema<${this.type}>`;\n }, \"toString\");\n Schema.prototype.role = /* @__PURE__ */ __name(function role(role, extra) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, role, extra };\n return schema;\n }, \"role\");\n for (const key of [\"default\", \"link\", \"comment\", \"description\", \"max\", \"min\", \"step\"]) {\n Object.assign(Schema.prototype, {\n [key](value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n var resolvers = {};\n Schema.extend = /* @__PURE__ */ __name(function extend(type, resolve) {\n resolvers[type] = resolve;\n }, \"extend\");\n Schema.resolve = /* @__PURE__ */ __name(function resolve(data, schema, options = {}, strict = false) {\n if (!schema) return [data];\n if (options.ignore?.(data, schema)) return [data];\n if (isNullable(data) && schema.type !== \"lazy\") {\n if (schema.meta.required) throw new ValidationError(`missing required value`, options);\n let current = schema;\n let fallback = schema.meta.default;\n while (current?.type === \"intersect\" && isNullable(fallback)) {\n current = current.list[0];\n fallback = current?.meta.default;\n }\n if (isNullable(fallback)) return [data];\n data = clone(fallback);\n }\n const callback = resolvers[schema.type];\n if (!callback) throw new ValidationError(`unsupported type \"${schema.type}\"`, options);\n try {\n return callback(data, schema, options, strict);\n } catch (error) {\n if (!schema.meta.loose) throw error;\n return [schema.meta.default];\n }\n }, \"resolve\");\n Schema.from = /* @__PURE__ */ __name(function from(source) {\n if (isNullable(source)) {\n return Schema.any();\n } else if ([\"string\", \"number\", \"boolean\"].includes(typeof source)) {\n return Schema.const(source).required();\n } else if (source[kSchema]) {\n return source;\n } else if (typeof source === \"function\") {\n switch (source) {\n case String:\n return Schema.string().required();\n case Number:\n return Schema.number().required();\n case Boolean:\n return Schema.boolean().required();\n case Function:\n return Schema.function().required();\n default:\n return Schema.is(source).required();\n }\n } else {\n throw new TypeError(`cannot infer schema from ${source}`);\n }\n }, \"from\");\n Schema.lazy = /* @__PURE__ */ __name(function lazy(builder) {\n const toJSON = /* @__PURE__ */ __name(() => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return schema.inner.toJSON();\n }, \"toJSON\");\n const schema = new Schema({ type: \"lazy\", builder, inner: { toJSON } });\n return schema;\n }, \"lazy\");\n Schema.natural = /* @__PURE__ */ __name(function natural() {\n return Schema.number().step(1).min(0);\n }, \"natural\");\n Schema.percent = /* @__PURE__ */ __name(function percent() {\n return Schema.number().step(0.01).min(0).max(1).role(\"slider\");\n }, \"percent\");\n Schema.date = /* @__PURE__ */ __name(function date() {\n return Schema.union([\n Schema.is(Date),\n Schema.transform(Schema.string().role(\"datetime\"), (value, options) => {\n const date2 = new Date(value);\n if (isNaN(+date2)) throw new ValidationError(`invalid date \"${value}\"`, options);\n return date2;\n }, true)\n ]);\n }, \"date\");\n Schema.regExp = /* @__PURE__ */ __name(function regExp(flag = \"\") {\n return Schema.union([\n Schema.is(RegExp),\n Schema.transform(Schema.string().role(\"regexp\", { flag }), (value, options) => {\n try {\n return new RegExp(value, flag);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)\n ]);\n }, \"regExp\");\n Schema.arrayBuffer = /* @__PURE__ */ __name(function arrayBuffer(encoding) {\n return Schema.union([\n Schema.is(ArrayBuffer),\n Schema.is(SharedArrayBuffer),\n Schema.transform(Schema.any(), (value, options) => {\n if (Binary.isSource(value)) return Binary.fromSource(value);\n throw new ValidationError(`expected ArrayBufferSource but got ${value}`, options);\n }, true),\n ...encoding ? [Schema.transform(Schema.string(), (value, options) => {\n try {\n return encoding === \"base64\" ? Binary.fromBase64(value) : Binary.fromHex(value);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)] : []\n ]);\n }, \"arrayBuffer\");\n Schema.extend(\"lazy\", (data, schema, options, strict) => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return Schema.resolve(data, schema.inner, options, strict);\n });\n Schema.extend(\"any\", (data) => {\n return [data];\n });\n Schema.extend(\"never\", (data, _, options) => {\n throw new ValidationError(`expected nullable but got ${data}`, options);\n });\n Schema.extend(\"const\", (data, { value }, options) => {\n if (deepEqual(data, value)) return [value];\n throw new ValidationError(`expected ${value} but got ${data}`, options);\n });\n function checkWithinRange(data, meta, description, options, skipMin = false) {\n const { max = Infinity, min = -Infinity } = meta;\n if (data > max) throw new ValidationError(`expected ${description} <= ${max} but got ${data}`, options);\n if (data < min && !skipMin) throw new ValidationError(`expected ${description} >= ${min} but got ${data}`, options);\n }\n __name(checkWithinRange, \"checkWithinRange\");\n Schema.extend(\"string\", (data, { meta }, options) => {\n if (typeof data !== \"string\") throw new ValidationError(`expected string but got ${data}`, options);\n if (meta.pattern) {\n const regexp = new RegExp(meta.pattern.source, meta.pattern.flags);\n if (!regexp.test(data)) throw new ValidationError(`expect string to match regexp ${regexp}`, options);\n }\n checkWithinRange(data.length, meta, \"string length\", options);\n return [data];\n });\n function decimalShift(data, digits) {\n const str = data.toString();\n if (str.includes(\"e\")) return data * Math.pow(10, digits);\n const index = str.indexOf(\".\");\n if (index === -1) return data * Math.pow(10, digits);\n const frac = str.slice(index + 1);\n const integer = str.slice(0, index);\n if (frac.length <= digits) return +(integer + frac.padEnd(digits, \"0\"));\n return +(integer + frac.slice(0, digits) + \".\" + frac.slice(digits));\n }\n __name(decimalShift, \"decimalShift\");\n function isMultipleOf(data, min, step) {\n step = Math.abs(step);\n if (!/^\\d+\\.\\d+$/.test(step.toString())) {\n return (data - min) % step === 0;\n }\n const index = step.toString().indexOf(\".\");\n const digits = step.toString().slice(index + 1).length;\n return Math.abs(decimalShift(data, digits) - decimalShift(min, digits)) % decimalShift(step, digits) === 0;\n }\n __name(isMultipleOf, \"isMultipleOf\");\n Schema.extend(\"number\", (data, { meta }, options) => {\n if (typeof data !== \"number\") throw new ValidationError(`expected number but got ${data}`, options);\n checkWithinRange(data, meta, \"number\", options);\n const { step } = meta;\n if (step && !isMultipleOf(data, meta.min ?? 0, step)) {\n throw new ValidationError(`expected number multiple of ${step} but got ${data}`, options);\n }\n return [data];\n });\n Schema.extend(\"boolean\", (data, _, options) => {\n if (typeof data === \"boolean\") return [data];\n throw new ValidationError(`expected boolean but got ${data}`, options);\n });\n Schema.extend(\"bitset\", (data, { bits, meta }, options) => {\n let value = 0, keys = [];\n if (typeof data === \"number\") {\n value = data;\n for (const key in bits) {\n if (data & bits[key]) {\n keys.push(key);\n }\n }\n } else if (Array.isArray(data)) {\n keys = data;\n for (const key of keys) {\n if (typeof key !== \"string\") throw new ValidationError(`expected string but got ${key}`, options);\n if (key in bits) value |= bits[key];\n }\n } else {\n throw new ValidationError(`expected number or array but got ${data}`, options);\n }\n if (value === meta.default) return [value];\n return [value, keys];\n });\n Schema.extend(\"function\", (data, _, options) => {\n if (typeof data === \"function\") return [data];\n throw new ValidationError(`expected function but got ${data}`, options);\n });\n Schema.extend(\"is\", (data, { constructor }, options) => {\n if (typeof constructor === \"function\") {\n if (data instanceof constructor) return [data];\n throw new ValidationError(`expected ${constructor.name} but got ${data}`, options);\n } else {\n if (isNullable(data)) {\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n let prototype = Object.getPrototypeOf(data);\n while (prototype) {\n if (prototype.constructor?.name === constructor) return [data];\n prototype = Object.getPrototypeOf(prototype);\n }\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n });\n function property(data, key, schema, options) {\n try {\n const [value, adapted] = Schema.resolve(data[key], schema, {\n ...options,\n path: [...options.path || [], key]\n });\n if (adapted !== void 0) data[key] = adapted;\n return value;\n } catch (e) {\n if (!options?.autofix) throw e;\n delete data[key];\n return schema.meta.default;\n }\n }\n __name(property, \"property\");\n Schema.extend(\"array\", (data, { inner, meta }, options) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n checkWithinRange(data.length, meta, \"array length\", options, !isNullable(inner.meta.default));\n return [data.map((_, index) => property(data, index, inner, options))];\n });\n Schema.extend(\"dict\", (data, { inner, sKey }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in data) {\n let rKey;\n try {\n rKey = Schema.resolve(key, sKey, options)[0];\n } catch (error) {\n if (strict) continue;\n throw error;\n }\n result[rKey] = property(data, key, inner, options);\n data[rKey] = data[key];\n if (key !== rKey) delete data[key];\n }\n return [result];\n });\n Schema.extend(\"tuple\", (data, { list }, options, strict) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n const result = list.map((inner, index) => property(data, index, inner, options));\n if (strict) return [result];\n result.push(...data.slice(list.length));\n return [result];\n });\n function merge(result, data) {\n for (const key in data) {\n if (key in result) continue;\n result[key] = data[key];\n }\n }\n __name(merge, \"merge\");\n Schema.extend(\"object\", (data, { dict }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in dict) {\n const value = property(data, key, dict[key], options);\n if (!isNullable(value) || key in data) {\n result[key] = value;\n }\n }\n if (!strict) merge(result, data);\n return [result];\n });\n Schema.extend(\"union\", (data, { list, toString }, options, strict) => {\n const messages = [];\n for (const inner of list) {\n try {\n return Schema.resolve(data, inner, options, strict);\n } catch (error) {\n messages.push(error);\n }\n }\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n });\n Schema.extend(\"intersect\", (data, { list, toString }, options, strict) => {\n let result;\n for (const inner of list) {\n const value = Schema.resolve(data, inner, options, true)[0];\n if (isNullable(value)) continue;\n if (isNullable(result)) {\n result = value;\n } else if (typeof result !== typeof value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n } else if (typeof value === \"object\") {\n merge(result ??= {}, value);\n } else if (result !== value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n }\n }\n if (!strict && isPlainObject(data)) merge(result, data);\n return [result];\n });\n Schema.extend(\"transform\", (data, { inner, callback, preserve }, options) => {\n const [result, adapted = data] = Schema.resolve(data, inner, options, true);\n if (preserve) {\n return [callback(result)];\n } else {\n return [callback(result), callback(adapted)];\n }\n });\n var formatters = {};\n function defineMethod(name, keys, format) {\n formatters[name] = format;\n Object.assign(Schema, {\n [name](...args) {\n const schema = new Schema({ type: name });\n keys.forEach((key, index) => {\n switch (key) {\n case \"sKey\":\n schema.sKey = args[index] ?? Schema.string();\n break;\n case \"inner\":\n schema.inner = Schema.from(args[index]);\n break;\n case \"list\":\n schema.list = args[index].map(Schema.from);\n break;\n case \"dict\":\n schema.dict = valueMap(args[index], Schema.from);\n break;\n case \"bits\": {\n schema.bits = {};\n for (const key2 in args[index]) {\n if (typeof args[index][key2] !== \"number\") continue;\n schema.bits[key2] = args[index][key2];\n }\n break;\n }\n case \"callback\": {\n const callback = schema.callback = args[index];\n callback[\"toJSON\"] ||= () => callback.toString();\n break;\n }\n case \"constructor\": {\n const constructor = schema.constructor = args[index];\n if (typeof constructor === \"function\") {\n ;\n constructor[\"toJSON\"] ||= () => constructor[\"name\"];\n }\n break;\n }\n default:\n schema[key] = args[index];\n }\n });\n if (name === \"object\" || name === \"dict\") {\n schema.meta.default = {};\n } else if (name === \"array\" || name === \"tuple\") {\n schema.meta.default = [];\n } else if (name === \"bitset\") {\n schema.meta.default = 0;\n }\n return schema;\n }\n });\n }\n __name(defineMethod, \"defineMethod\");\n defineMethod(\"is\", [\"constructor\"], ({ constructor }) => {\n if (typeof constructor === \"function\") {\n return constructor.name;\n } else {\n return constructor;\n }\n });\n defineMethod(\"any\", [], () => \"any\");\n defineMethod(\"never\", [], () => \"never\");\n defineMethod(\"const\", [\"value\"], ({ value }) => typeof value === \"string\" ? JSON.stringify(value) : value);\n defineMethod(\"string\", [], () => \"string\");\n defineMethod(\"number\", [], () => \"number\");\n defineMethod(\"boolean\", [], () => \"boolean\");\n defineMethod(\"bitset\", [\"bits\"], () => \"bitset\");\n defineMethod(\"function\", [], () => \"function\");\n defineMethod(\"array\", [\"inner\"], ({ inner }) => `${inner.toString(true)}[]`);\n defineMethod(\"dict\", [\"inner\", \"sKey\"], ({ inner, sKey }) => `{ [key: ${sKey.toString()}]: ${inner.toString()} }`);\n defineMethod(\"tuple\", [\"list\"], ({ list }) => `[${list.map((inner) => inner.toString()).join(\", \")}]`);\n defineMethod(\"object\", [\"dict\"], ({ dict }) => {\n if (Object.keys(dict).length === 0) return \"{}\";\n return `{ ${Object.entries(dict).map(([key, inner]) => {\n return `${key}${inner.meta.required ? \"\" : \"?\"}: ${inner.toString()}`;\n }).join(\", \")} }`;\n });\n defineMethod(\"union\", [\"list\"], ({ list }, inline) => {\n const result = list.map(({ toString: format }) => format()).join(\" | \");\n return inline ? `(${result})` : result;\n });\n defineMethod(\"intersect\", [\"list\"], ({ list }) => {\n return `${list.map((inner) => inner.toString(true)).join(\" & \")}`;\n });\n defineMethod(\"transform\", [\"inner\", \"callback\", \"preserve\"], ({ inner }, isInner) => inner.toString(isInner));\n module.exports = Schema;\n }\n});\nexport default require_index();\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/index.ts\nimport { defineProperty, remove } from \"cosmokit\";\nimport { Service } from \"@cordisjs/core\";\nimport Schema from \"schemastery\";\nimport { default as default2, default as default3 } from \"schemastery\";\nvar kSchemaOrder = Symbol(\"cordis.schema.order\");\nvar SchemaService = class {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty(this, Service.tracker, {\n property: \"ctx\"\n });\n }\n static {\n __name(this, \"SchemaService\");\n }\n _data = Schema.intersect([]);\n extend(schema, order = 0) {\n const index = this._data.list.findIndex((a) => a[kSchemaOrder] < order);\n schema[kSchemaOrder] = order;\n return this.ctx.effect(() => {\n if (index >= 0) {\n this._data.list.splice(index, 0, schema);\n } else {\n this._data.list.push(schema);\n }\n this.ctx.emit(\"internal/service-schema\");\n return () => {\n remove(this._data.list, schema);\n this.ctx.emit(\"internal/service-schema\");\n };\n });\n }\n toJSON() {\n return this._data.toJSON();\n }\n};\nvar src_default = SchemaService;\nexport {\n default2 as Schema,\n SchemaService,\n src_default as default,\n default3 as z\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/index.ts\nimport { Context, Service } from \"@cordisjs/core\";\nimport { remove } from \"cosmokit\";\nvar TimerService = class extends Service {\n static {\n __name(this, \"TimerService\");\n }\n constructor(ctx) {\n super(ctx, \"timer\", true);\n ctx.mixin(\"timer\", [\"setTimeout\", \"setInterval\", \"sleep\", \"throttle\", \"debounce\"]);\n }\n setTimeout(callback, delay) {\n const dispose = this[Context.current].effect(() => {\n const timer = setTimeout(() => {\n dispose();\n callback();\n }, delay);\n return () => clearTimeout(timer);\n });\n return dispose;\n }\n setInterval(callback, delay) {\n return this[Context.current].effect(() => {\n const timer = setInterval(callback, delay);\n return () => clearInterval(timer);\n });\n }\n sleep(delay) {\n const caller = this[Context.current];\n return new Promise((resolve, reject) => {\n const dispose1 = this.setTimeout(() => {\n dispose1();\n dispose2();\n resolve();\n }, delay);\n const dispose2 = caller.on(\"dispose\", () => {\n dispose1();\n dispose2();\n reject(new Error(\"Context has been disposed\"));\n });\n });\n }\n createWrapper(callback, isDisposed = false) {\n const caller = this[Context.current];\n caller.scope.assertActive();\n let timer;\n const dispose = /* @__PURE__ */ __name(() => {\n isDisposed = true;\n remove(caller.scope.disposables, dispose);\n clearTimeout(timer);\n }, \"dispose\");\n const wrapper = /* @__PURE__ */ __name((...args) => {\n clearTimeout(timer);\n timer = callback(args, () => !isDisposed && caller.scope.isActive);\n }, \"wrapper\");\n wrapper.dispose = dispose;\n caller.scope.disposables.push(dispose);\n return wrapper;\n }\n throttle(callback, delay, noTrailing) {\n let lastCall = -Infinity;\n const execute = /* @__PURE__ */ __name((...args) => {\n lastCall = Date.now();\n callback(...args);\n }, \"execute\");\n return this.createWrapper((args, isActive) => {\n const now = Date.now();\n const remaining = delay - (now - lastCall);\n if (remaining <= 0) {\n execute(...args);\n } else if (isActive()) {\n return setTimeout(execute, remaining, ...args);\n }\n }, noTrailing);\n }\n debounce(callback, delay) {\n return this.createWrapper((args, isActive) => {\n if (!isActive())\n return;\n return setTimeout(callback, delay, ...args);\n });\n }\n};\nvar src_default = TimerService;\nexport {\n TimerService,\n src_default as default\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/index.ts\nimport * as core from \"@cordisjs/core\";\nimport { LoggerService } from \"@cordisjs/logger\";\nimport { SchemaService } from \"@cordisjs/schema\";\nimport { TimerService } from \"@cordisjs/timer\";\nexport * from \"@cordisjs/core\";\nimport { Schema, z } from \"@cordisjs/schema\";\nimport { Logger as Logger2 } from \"@cordisjs/logger\";\nimport { TimerService as TimerService2 } from \"@cordisjs/timer\";\nvar Context2 = class extends core.Context {\n static {\n __name(this, \"Context\");\n }\n baseDir;\n constructor(config) {\n super(config);\n this.baseDir = globalThis.process?.cwd?.() || \"\";\n this.provide(\"logger\", void 0, true);\n this.provide(\"timer\", void 0, true);\n this.plugin(LoggerService);\n this.plugin(TimerService);\n }\n};\nvar Service2 = class extends core.Service {\n static {\n __name(this, \"Service\");\n }\n /** @deprecated use `this.ctx.logger` instead */\n logger;\n schema;\n constructor(...args) {\n super(...args);\n this.logger = this.ctx.logger(this.name);\n this.schema = new SchemaService(this.ctx);\n }\n [core.Service.setup]() {\n this.ctx = new Context2();\n }\n};\nfunction src_default() {\n}\n__name(src_default, \"default\");\nexport {\n Context2 as Context,\n Logger2 as Logger,\n Schema,\n Service2 as Service,\n TimerService2 as TimerService,\n src_default as default,\n z\n};\n//# sourceMappingURL=index.mjs.map\n","var y = /* @__PURE__ */ ((s) => (s.BODY_USED = \"BODY_USED\", s.NO_BODY_READER = \"NO_BODY_READER\", s.TIMEOUT = \"TIMEOUT\", s.NETWORK_ERROR = \"NETWORK_ERROR\", s.BODY_NOT_ALLOWED = \"BODY_NOT_ALLOWED\", s.HOOK_CONTEXT_CHANGED = \"HOOK_CONTEXT_CHANGED\", s.ABORTED_BY_HOOK = \"ABORTED_BY_HOOK\", s.INVALID_HOOK_CALLBACK = \"INVALID_HOOK_CALLBACK\", s.UNEXPECTED_HOOK_RETURN = \"UNEXPECTED_HOOK_RETURN\", s))(y || {});\nclass d extends Error {\n constructor(e, t, r, o) {\n super(t, o), this.code = e, this.context = r, this.name = \"FexiosError\";\n }\n}\nclass U extends d {\n constructor(e, t, r) {\n super(t.statusText, e, void 0, r), this.response = t, this.name = \"FexiosResponseError\";\n }\n}\nfunction C(s, e = 2048) {\n if (!(s instanceof Uint8Array))\n throw new TypeError(\"Input must be a Uint8Array\");\n if (s.length === 0)\n return !0;\n const t = Math.min(\n Math.max(s.length, 256),\n e\n ), r = s.slice(0, t);\n if (W(r))\n return !1;\n const o = j(r);\n if (o.nullByteRatio > 0.05 || o.highByteRatio > 0.95)\n return !1;\n const a = [\"utf-8\", \"utf-16le\", \"utf-16be\", \"iso-8859-1\"];\n let i = -1, n = !1;\n for (const h of a)\n try {\n const u = new TextDecoder(h, { fatal: !0 }).decode(r), c = H(u);\n c > i && (i = c, n = c > 0.7);\n } catch {\n continue;\n }\n return n;\n}\nfunction W(s) {\n if (s.length < 4) return !1;\n const e = [\n [137, 80, 78, 71],\n // PNG\n [255, 216, 255],\n // JPEG\n [71, 73, 70],\n // GIF\n [37, 80, 68, 70],\n // PDF\n [80, 75, 3, 4],\n // ZIP/Office documents\n [80, 75, 5, 6],\n // ZIP empty archive\n [80, 75, 7, 8],\n // ZIP spanned archive\n [127, 69, 76, 70],\n // ELF executable\n [77, 90],\n // Windows executable\n [202, 254, 186, 190],\n // Java class file\n [0, 0, 1, 0],\n // ICO\n [82, 73, 70, 70]\n // RIFF (AVI, WAV, etc.)\n ];\n for (const t of e)\n if (s.length >= t.length) {\n let r = !0;\n for (let o = 0; o < t.length; o++)\n if (s[o] !== t[o]) {\n r = !1;\n break;\n }\n if (r) return !0;\n }\n return !1;\n}\nfunction j(s) {\n let e = 0, t = 0, r = 0;\n for (const o of s)\n o === 0 && e++, o > 127 && t++, (o < 32 && o !== 9 && o !== 10 && o !== 13 || o === 127) && r++;\n return {\n nullByteRatio: e / s.length,\n highByteRatio: t / s.length,\n controlCharRatio: r / s.length\n };\n}\nfunction H(s) {\n if (s.length === 0) return 1;\n let e = 1, t = 0;\n for (let o = 0; o < s.length; o++) {\n const a = s[o].charCodeAt(0);\n a >= 32 && a <= 126 || a === 9 || a === 10 || a === 13 || a === 32 ? t++ : a > 127 && a < 65534 ? !B(a) && !M(a) && t++ : e -= 0.1;\n }\n const r = t / s.length;\n return e *= r, K(s) && (e *= 1.1), Math.max(0, Math.min(1, e));\n}\nfunction B(s) {\n return s >= 0 && s <= 31 || s >= 127 && s <= 159;\n}\nfunction M(s) {\n return s >= 57344 && s <= 63743 || s >= 983040 && s <= 1048573 || s >= 1048576 && s <= 1114109;\n}\nfunction K(s) {\n return [\n /\\b\\w+\\b/,\n // Words\n /[.!?]+\\s/,\n // Sentence endings\n /\\s+/,\n // Whitespace\n /[a-zA-Z]{3,}/,\n // English words\n /[\\u4e00-\\u9fa5]+/,\n // Chinese characters\n /\\d+/\n // Numbers\n ].some((e) => e.test(s));\n}\nfunction P(s) {\n if (typeof s != \"object\" || s === null || Object.prototype.toString.call(s) !== \"[object Object]\")\n return !1;\n const e = Object.getPrototypeOf(s);\n return e === Object.prototype || e === null;\n}\nfunction q(s, e = {}) {\n const t = {};\n return Object.entries(s).forEach(([r, o]) => {\n o != null && (e.dropEmptyString && o === \"\" || (t[r] = o));\n }), t;\n}\nclass _ {\n constructor(e, t, r) {\n this.rawResponse = e, this.data = t, this.ok = e.ok, this.status = e.status, this.statusText = e.statusText, this.headers = e.headers, Object.entries(r || {}).forEach(([o, a]) => {\n this[o] = a;\n });\n }\n}\nasync function F(s, e, t) {\n var r;\n if (s.bodyUsed)\n throw new d(\n y.BODY_USED,\n \"Response body has already been used or locked\"\n );\n const o = s.headers.get(\"content-type\") || \"\", a = Number(s.headers.get(\"content-length\")) || 0, i = (h, u) => u === \"json\" || h.startsWith(\"application/json\"), n = (h, u, c) => c === \"blob\" || h.startsWith(\"image/\") && !h.startsWith(\"image/svg\") || h.startsWith(\"video/\") || h.startsWith(\"audio/\") || !C(u);\n if ((s.status === 101 || s.status === 426 || s.headers.get(\"upgrade\")) && typeof globalThis.WebSocket < \"u\") {\n const h = new WebSocket(s.url);\n return await new Promise((u, c) => {\n h.onopen = u, h.onerror = c;\n }), new _(s, h, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n });\n } else if (o.startsWith(\"text/event-stream\") && ![\"text\", \"json\"].includes(e || \"\") && typeof globalThis.EventSource < \"u\") {\n const h = new EventSource(s.url);\n return await new Promise((u, c) => {\n h.onopen = u, h.onerror = c;\n }), new _(s, h);\n } else {\n if (e === \"stream\")\n return new _(\n s,\n s.body\n );\n {\n const h = (r = s.clone().body) == null ? void 0 : r.getReader();\n if (!h)\n throw new d(\n y.NO_BODY_READER,\n \"Failed to get ReadableStream from response body\"\n );\n let u = new Uint8Array();\n for (; ; ) {\n const { done: b, value: m } = await h.read();\n if (b) break;\n if (m && (u = new Uint8Array([...u, ...m]), t && a > 0)) {\n const l = Math.min(u.length / a, 1);\n t(l, u);\n }\n }\n const c = new _(s, void 0);\n if (e === \"arrayBuffer\")\n return c.data = u.buffer, c;\n if (i(o, e))\n try {\n const b = new TextDecoder().decode(u);\n c.data = JSON.parse(b);\n } catch {\n }\n if (typeof c.data != \"string\" && n(o, u, e) ? c.data = new Blob([u], {\n type: s.headers.get(\"content-type\") || void 0\n }) : c.data = new TextDecoder().decode(u), typeof c.data == \"string\" && e !== \"text\") {\n const b = c.data.trim(), m = b[0], l = b[b.length - 1];\n if (m === \"{\" && l === \"}\" || m === \"[\" && l === \"]\")\n try {\n c.data = JSON.parse(c.data);\n } catch {\n }\n }\n if (typeof c.data > \"u\" && (c.data = u.length > 0 ? u : void 0), c.ok)\n return c;\n throw new U(\n `Request failed with status code ${s.status}`,\n c\n );\n }\n }\n}\nclass Y {\n /**\n * Build URLSearchParams from a record object with proper array handling\n * @param query - The query object containing key-value pairs\n * @returns URLSearchParams instance\n */\n static makeSearchParams(e) {\n const t = new URLSearchParams();\n return Object.entries(e).forEach(([r, o]) => {\n Array.isArray(o) ? o.forEach((a) => t.append(r, String(a))) : t.set(r, String(o));\n }), t;\n }\n /**\n * Build query string from a record object with proper array handling\n * @param query - The query object containing key-value pairs\n * @returns URL-encoded query string\n */\n static makeQueryString(e) {\n return this.makeSearchParams(e).toString();\n }\n}\nfunction $(s) {\n return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nvar A, I;\nfunction x() {\n if (I) return A;\n I = 1;\n function s(e) {\n var t = this.constructor.prototype[e], r = function() {\n return t.apply(r, arguments);\n };\n return Object.setPrototypeOf(r, this.constructor.prototype), Object.getOwnPropertyNames(t).forEach(function(o) {\n Object.defineProperty(r, o, Object.getOwnPropertyDescriptor(t, o));\n }), r;\n }\n return s.prototype = Object.create(Function.prototype), A = s, A;\n}\nvar G = x();\nconst X = /* @__PURE__ */ $(G);\nclass T extends X {\n constructor(e = {}) {\n super(\"request\"), this.baseConfigs = e, this.hooks = [], this.DEFAULT_CONFIGS = {\n baseURL: \"\",\n timeout: 60 * 1e3,\n credentials: \"same-origin\",\n headers: {},\n query: {},\n responseType: void 0\n }, this.ALL_METHODS = [\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"head\",\n \"options\",\n \"trace\"\n ], this.METHODS_WITHOUT_BODY = [\n \"get\",\n \"head\",\n \"options\",\n \"trace\"\n ], this.interceptors = {\n request: this.createInterceptor(\"beforeRequest\"),\n response: this.createInterceptor(\"afterResponse\")\n }, this.create = T.create, this.dropUndefinedAndNull = q, this.checkIsPlainObject = P, this.ALL_METHODS.forEach(this.createMethodShortcut.bind(this));\n }\n async request(e, t) {\n var r, o, a, i;\n let n = t = t || {};\n typeof e == \"string\" || e instanceof URL ? n.url = e.toString() : typeof e == \"object\" && (n = { ...e, ...n }), n = await this.emit(\"beforeInit\", n);\n const h = t.baseURL || this.baseConfigs.baseURL || ((r = globalThis.location) == null ? void 0 : r.href), u = h ? new URL(h, (o = globalThis.location) == null ? void 0 : o.href) : void 0, c = new URL(n.url.toString(), u);\n n.url = c.href, n.baseURL = u ? u.href : c.origin, n.headers = this.mergeHeaders(\n this.baseConfigs.headers,\n t.headers\n );\n const b = u?.searchParams, m = new URLSearchParams(c.searchParams);\n if (c.search = \"\", n.url = c.href, n.query = this.mergeQuery(\n b,\n // baseURL query (lowest priority)\n this.baseConfigs.query,\n // defaultOptions (baseOptions)\n m,\n // requestURL query (urlParams)\n t.query\n // requestOptions (highest priority)\n ), c.search = Y.makeQueryString(n.query), n.url = c.toString(), this.METHODS_WITHOUT_BODY.includes(\n (a = n.method) == null ? void 0 : a.toLocaleLowerCase()\n ) && n.body)\n throw new d(\n y.BODY_NOT_ALLOWED,\n `Request method \"${n.method}\" does not allow body`\n );\n n = await this.emit(\"beforeRequest\", n);\n let l;\n typeof n.body < \"u\" && n.body !== null && (n.body instanceof Blob || n.body instanceof FormData || n.body instanceof URLSearchParams ? l = n.body : typeof n.body == \"object\" && n.body !== null ? (l = JSON.stringify(n.body), n.headers[\"content-type\"] = \"application/json\") : l = n.body), !((i = t.headers) != null && i[\"content-type\"]) && l && (l instanceof FormData || l instanceof URLSearchParams ? delete n.headers[\"content-type\"] : typeof l == \"string\" && typeof n.body == \"object\" ? n.headers[\"content-type\"] = \"application/json\" : l instanceof Blob && (n.headers[\"content-type\"] = l.type)), n.body = l, n = await this.emit(\"afterBodyTransformed\", n);\n const w = n.abortController || globalThis.AbortController ? new AbortController() : void 0, v = new Request(n.url, {\n method: n.method || \"GET\",\n credentials: n.credentials,\n cache: n.cache,\n mode: n.mode,\n headers: n.headers,\n body: n.body,\n signal: w?.signal\n });\n n.rawRequest = v, n = await this.emit(\"beforeActualFetch\", n);\n const D = n.timeout || this.baseConfigs.timeout || 60 * 1e3;\n if (n.url.startsWith(\"ws\"))\n try {\n const f = new WebSocket(n.url);\n return await new Promise((R, k) => {\n const E = setTimeout(() => {\n k(\n new d(\n y.TIMEOUT,\n `WebSocket connection timed out after ${D}ms`,\n n\n )\n );\n }, D);\n f.onopen = () => {\n clearTimeout(E), R();\n }, f.onerror = (S) => {\n clearTimeout(E), k(\n new d(\n y.NETWORK_ERROR,\n \"WebSocket connection failed\",\n n\n )\n );\n }, f.onclose = (S) => {\n S.code !== 1e3 && (clearTimeout(E), k(\n new d(\n y.NETWORK_ERROR,\n `WebSocket closed with code ${S.code}`,\n n\n )\n ));\n };\n }), n.rawResponse = new Response(), n.response = new _(n.rawResponse, f, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n }), n.data = f, n.headers = new Headers(), this.emit(\"afterResponse\", n);\n } catch (f) {\n throw f instanceof d ? f : new d(\n y.NETWORK_ERROR,\n `WebSocket creation failed: ${f}`,\n n\n );\n }\n let p;\n try {\n w && (p = setTimeout(() => {\n w.abort();\n }, D));\n const f = await fetch(n.rawRequest).catch((R) => {\n throw p && clearTimeout(p), w != null && w.signal.aborted ? new d(\n y.TIMEOUT,\n `Request timed out after ${D}ms`,\n n\n ) : new d(y.NETWORK_ERROR, R.message, n);\n });\n return p && clearTimeout(p), n.rawResponse = f, n.response = await F(\n f,\n n.responseType,\n (R, k) => {\n var E;\n (E = t?.onProgress) == null || E.call(t, R, k);\n }\n ), n.data = n.response.data, n.headers = n.response.headers, this.emit(\"afterResponse\", n);\n } catch (f) {\n throw p && clearTimeout(p), f;\n }\n }\n mergeQuery(e, ...t) {\n const r = {}, o = (a) => {\n a && (P(a) ? Object.entries(a).forEach(([i, n]) => {\n n == null ? delete r[i] : Array.isArray(n) ? (i.endsWith(\"[]\"), r[i] = n.map(String)) : r[i] = String(n);\n }) : new URLSearchParams(a).forEach((i, n) => {\n r[n] = i;\n }));\n };\n return o(e), t.forEach(o), r;\n }\n mergeHeaders(e, ...t) {\n const r = {}, o = new Headers(e);\n for (const a of t)\n if (a != null)\n if (P(a)) {\n const i = q(a);\n if (Object.keys(i).length === 0) continue;\n new Headers(i).forEach((n, h) => {\n o.set(h, n);\n });\n } else\n new Headers(a).forEach((i, n) => {\n o.set(n, i);\n });\n return o.forEach((a, i) => {\n r[i] = a;\n }), r;\n }\n async emit(e, t) {\n const r = this.hooks.filter((o) => o.event === e);\n try {\n let o = 0;\n for (const a of r) {\n const i = `${e}#${a.action.name || `anonymous#${o}`}`, n = Symbol(\"FexiosHookContext\");\n t[n] = n;\n const h = await a.action.call(this, t);\n if (h === !1)\n throw new d(\n y.ABORTED_BY_HOOK,\n `Request aborted by hook \"${i}\"`,\n t\n );\n if (typeof h == \"object\" && h[n] === n)\n t = h;\n else {\n const u = globalThis[\"\".concat(\"console\")];\n try {\n throw new d(\n y.HOOK_CONTEXT_CHANGED,\n `Hook \"${i}\" should return the original FexiosContext or return false to abort the request, but got \"${h}\".`\n );\n } catch (c) {\n u.warn(c.stack || c);\n }\n }\n delete t[n], o++;\n }\n } catch (o) {\n return Promise.reject(o);\n }\n return t;\n }\n on(e, t, r = !1) {\n if (typeof t != \"function\")\n throw new d(\n y.INVALID_HOOK_CALLBACK,\n `Hook should be a function, but got \"${typeof t}\"`\n );\n return this.hooks[r ? \"unshift\" : \"push\"]({\n event: e,\n action: t\n }), this;\n }\n off(e, t) {\n return e === \"*\" || !e ? this.hooks = this.hooks.filter((r) => r.action !== t) : this.hooks = this.hooks.filter(\n (r) => r.event !== e || r.action !== t\n ), this;\n }\n createInterceptor(e) {\n return {\n handlers: () => this.hooks.filter((t) => t.event === e).map((t) => t.action),\n use: (t, r = !1) => this.on(e, t, r),\n clear: () => {\n this.hooks = this.hooks.filter((t) => t.event !== e);\n }\n };\n }\n createMethodShortcut(e) {\n return Object.defineProperty(this, e, {\n value: (t, r, o) => (this.METHODS_WITHOUT_BODY.includes(\n e.toLocaleLowerCase()\n ) ? o = r : (o = o || {}, o.body = r), this.request(t, {\n ...o,\n method: e\n }))\n }), this;\n }\n extends(e) {\n const t = new T({ ...this.baseConfigs, ...e });\n return t.hooks = [...this.hooks], t;\n }\n static create(e) {\n return new T(e);\n }\n}\n/**\n * Fexios\n * @desc Fetch based HTTP client with similar API to axios for browser and Node.js\n *\n * @license MIT\n * @author dragon-fish <dragon-fish@qq.com>\n */\nconst V = T.create, N = V();\ntypeof globalThis < \"u\" ? globalThis.fexios = N : typeof window < \"u\" && (window.fexios = N);\n/**\n * MediaWiki Api\n * Provides the API call methods similar to `mw.Api` at non-mw environments\n *\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nconst g = class g {\n constructor(e, t, r) {\n if (this.baseURL = e, this.version = \"5.0.0\", !e && typeof window == \"object\" && window.mediaWiki) {\n const { wgServer: o, wgScriptPath: a } = window.mediaWiki?.config?.get([\"wgServer\", \"wgScriptPath\"]) || {};\n typeof o == \"string\" && typeof a == \"string\" && (e = `${o}${a}/api.php`);\n }\n if (typeof e != \"string\")\n throw new Error(\"baseURL is undefined\");\n this.baseURL = e, this.tokens = {}, this.defaultParams = {\n ...g.INIT_DEFAULT_PARAMS,\n ...r\n }, this.defaultOptions = {\n responseType: \"json\",\n ...t\n }, this.request = g.createRequestHandler(this.baseURL);\n }\n setBaseURL(e) {\n return this.request.baseConfigs.baseURL = e, this;\n }\n static normalizeParamValue(e) {\n return Array.isArray(e) ? e.join(\"|\") : typeof e == \"boolean\" ? e ? \"1\" : void 0 : typeof e == \"number\" ? \"\" + e : e;\n }\n static createRequestHandler(e) {\n const t = new T({\n baseURL: e,\n responseType: \"json\"\n });\n return t.on(\"beforeInit\", (r) => {\n if (r.method?.toLowerCase() !== \"post\")\n return r;\n if (typeof r.body == \"object\" && r.body !== null && !(r.body instanceof URLSearchParams) && !(r.body instanceof FormData)) {\n const o = r.body;\n Object.keys(o).forEach((a) => {\n const i = g.normalizeParamValue(o[a]);\n typeof i > \"u\" || i === null ? delete o[a] : i !== o[a] && (o[a] = i);\n }), r.body = new URLSearchParams(r.body);\n }\n if (globalThis.FormData && r.body instanceof FormData || r.body instanceof URLSearchParams) {\n const o = r.body;\n o.forEach((i, n) => {\n const h = g.normalizeParamValue(i);\n typeof h > \"u\" || h === null ? o.delete(n) : h !== i && o.set(n, h);\n });\n const a = new URLSearchParams(r.query);\n !a.has(\"format\") && a.set(\"format\", \"\" + (o.get(\"format\") || \"json\")), !a.has(\"formatversion\") && a.set(\n \"formatversion\",\n \"\" + (o.get(\"formatversion\") || \"2\")\n ), o.has(\"origin\") && a.set(\"origin\", \"\" + o.get(\"origin\")), r.query = Object.fromEntries(a.entries()), o.has(\"action\") && (r.query.action = \"\" + o.get(\"action\"));\n }\n return r;\n }), t.on(\"beforeInit\", (r) => {\n r.query = r.query;\n for (const o in r.query) {\n const a = g.normalizeParamValue(r.query[o]);\n typeof a > \"u\" || a === null ? delete r.query[o] : a !== r.query[o] && (r.query[o] = \"\" + a);\n }\n return r;\n }), t.on(\"beforeRequest\", (r) => {\n const o = new URL(r.url), a = o.searchParams;\n if (globalThis.location && (!a.has(\"origin\") && location.origin !== new URL(e).origin ? (a.set(\"origin\", location.origin), t.baseConfigs.credentials = \"include\", t.baseConfigs.mode = \"cors\") : location.origin === new URL(e).origin && (a.delete(\"origin\"), t.baseConfigs.credentials = void 0, t.baseConfigs.mode = void 0)), o.searchParams.has(\"origin\")) {\n const i = encodeURIComponent(\n o.searchParams.get(\"origin\") || \"\"\n ).replace(/\\./g, \"%2E\");\n r.query = {}, o.searchParams.delete(\"origin\"), r.url = `${o}${o.search ? \"&\" : \"?\"}origin=${i}`;\n }\n return r;\n }), t;\n }\n /** Base methods encapsulation */\n get(e, t) {\n return this.request.get(\"\", {\n ...this.defaultOptions,\n query: {\n ...this.defaultParams,\n ...this.defaultOptions.query,\n ...e\n },\n ...t\n });\n }\n post(e, t) {\n return this.request.post(\"\", e, {\n ...this.defaultOptions,\n query: { ...this.defaultParams, ...this.defaultOptions.query },\n ...t\n });\n }\n async login(e, t, r, o) {\n if (this.defaultOptions.credentials = \"include\", o = o || {}, o.retry ??= 3, o.retry < 1)\n throw new O(\n \"LOGIN_RETRY_LIMIT_EXCEEDED\",\n \"The limit of the number of times to automatically re-login has been exceeded\"\n );\n let a;\n try {\n const i = await this.postWithToken(\n \"login\",\n {\n action: \"login\",\n lgname: e,\n lgpassword: t,\n ...r\n },\n { tokenName: \"lgtoken\", ...o }\n );\n if (i?.data?.login)\n a = i.data;\n else\n throw i;\n } catch (i) {\n if (i instanceof O)\n throw i;\n if (i?.ok === !1)\n return this.login(e, t, r, {\n ...o,\n noCache: !0,\n retry: o.retry - 1\n });\n throw new O(\n \"HTTP_ERROR\",\n \"The server returns an error, but it doesn't seem to be caused by MediaWiki\",\n i\n );\n }\n if (a?.login?.result !== \"Success\")\n throw new O(\n \"LOGIN_FAILED\",\n a?.login?.reason?.text || a?.login?.result || \"Login failed with unknown reason\",\n a\n );\n return a.login;\n }\n async getUserInfo() {\n const { data: e } = await this.get({\n action: \"query\",\n meta: \"userinfo\",\n uiprop: [\"groups\", \"rights\", \"blockinfo\"]\n });\n return e?.query?.userinfo;\n }\n /** Token Handler */\n async getTokens(e = [\"csrf\"]) {\n this.defaultOptions.credentials = \"include\";\n const { data: t } = await this.get({\n action: \"query\",\n meta: \"tokens\",\n type: e\n });\n return this.tokens = { ...this.tokens, ...t.query.tokens }, this.tokens;\n }\n async token(e = \"csrf\", t = !1) {\n return (!this.tokens[`${e}token`] || t) && (delete this.tokens[`${e}token`], await this.getTokens([e])), this.tokens[`${e}token`];\n }\n async postWithToken(e, t, r) {\n const { tokenName: o = \"token\", retry: a = 3, noCache: i = !1 } = r || {};\n if (a < 1)\n throw new O(\n \"TOKEN_RETRY_LIMIT_EXCEEDED\",\n \"The limit of the number of times to automatically re-acquire the token has been exceeded\"\n );\n const n = await this.token(e, i), h = () => this.postWithToken(e, t, {\n tokenName: o,\n retry: a - 1,\n noCache: !0\n });\n return this.post({\n [o]: n,\n ...t\n }).then((u) => {\n const c = u.data;\n return g.isBadTokenError(c) ? h() : u;\n }).catch((u) => {\n const c = u.data;\n if (g.isBadTokenError(c) || u?.ok === !1)\n return h();\n if (typeof c == \"object\" && c !== null)\n return Promise.reject(c);\n throw new O(\n \"HTTP_ERROR\",\n \"The server returns an error, but it doesn’t seem to be caused by MediaWiki\",\n u\n );\n });\n }\n postWithEditToken(e) {\n return this.postWithToken(\"csrf\", e);\n }\n static isBadTokenError(e) {\n return e?.error?.code === \"badtoken\" || e?.errors?.some((t) => t.code === \"badtoken\") || [\"NeedToken\", \"WrongToken\"].includes(e?.login?.result);\n }\n async getMessages(e, t = \"zh\", r) {\n const { data: o } = await this.get({\n action: \"query\",\n meta: \"allmessages\",\n ammessages: e,\n amlang: t,\n ...r\n }), a = {};\n return o.query.allmessages.forEach(function(i) {\n i.missing || (a[i.name] = i.content);\n }), a;\n }\n async parseWikitext(e, t, r, o) {\n const { data: a } = await this.post(\n {\n action: \"parse\",\n title: t,\n text: e,\n ...r\n },\n o\n );\n return a.parse.text;\n }\n};\ng.INIT_DEFAULT_PARAMS = {\n action: \"query\",\n errorformat: \"plaintext\",\n format: \"json\",\n formatversion: 2\n};\nlet L = g;\nvar z = /* @__PURE__ */ ((s) => (s.HTTP_ERROR = \"HTTP_ERROR\", s.LOGIN_FAILED = \"LOGIN_FAILED\", s.LOGIN_RETRY_LIMIT_EXCEEDED = \"LOGIN_RETRY_LIMIT_EXCEEDED\", s.TOKEN_RETRY_LIMIT_EXCEEDED = \"TOKEN_RETRY_LIMIT_EXCEEDED\", s))(z || {});\nclass O extends Error {\n constructor(e, t = \"\", r) {\n super(), this.code = e, this.message = t, this.cause = r, this.name = \"WikiSaikouError\";\n }\n}\n/**\n * MediaWiki Api\n * Provides the API call methods similar to `mw.Api` at non-mw environments\n *\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass Q extends L {\n}\n/**\n * MediaWiki Foreign Api\n * Provides the API call methods similar to `mw.ForeignApi` at non-mw environments\n *\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass J extends L {\n constructor(e, t, r) {\n super(\n e,\n {\n credentials: \"include\",\n mode: \"cors\",\n ...t\n },\n {\n origin: location.origin,\n ...r\n }\n );\n }\n}\nexport {\n J as ForeignApi,\n Q as MediaWikiApi,\n J as MediaWikiForeignApi,\n Q as MwApi,\n L as MwApiBase,\n O as WikiSaikouError,\n z as WikiSaikouErrorCode\n};\n//# sourceMappingURL=browser.js.map\n","import { InPageEdit } from '@/InPageEdit'\r\nimport { MwApi } from 'wiki-saikou/browser'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n api: MwApi\r\n }\r\n}\r\n\r\nexport interface ApiServiceOptions {\r\n baseURL: string | URL\r\n}\r\n\r\nexport class ApiService {\r\n constructor(\r\n public ctx: InPageEdit,\r\n options?: Partial<ApiServiceOptions>\r\n ) {\r\n let baseURL =\r\n typeof options?.baseURL === 'string' ? options.baseURL : options?.baseURL?.toString()\r\n if (baseURL?.startsWith('/')) {\r\n baseURL = new URL(baseURL, location.origin).href\r\n }\r\n const api = new MwApi(baseURL, {\r\n headers: {\r\n 'x-api-user-agent': `InPageEdit-NEXT ${ctx.version}`,\r\n },\r\n })\r\n ctx.set('api', api)\r\n }\r\n}\r\n","import { InPageEdit, Service } from '@/InPageEdit'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n resourceLoader: ResourceLoaderService\r\n }\r\n}\r\n\r\nexport class ResourceLoaderService extends Service {\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'resourceLoader', true)\r\n }\r\n protected stop(): void | Promise<void> {\r\n // document.querySelectorAll('[data-ipe]').forEach((el) => {\r\n // el.remove()\r\n // })\r\n }\r\n\r\n loadScript(src: string, attrs?: Record<string, any>): Promise<HTMLScriptElement | null> {\r\n if (!src) {\r\n return Promise.resolve(null)\r\n }\r\n const key = `script:${src}`\r\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\r\n if (existed) {\r\n return Promise.resolve(existed as HTMLScriptElement)\r\n }\r\n const promise = new Promise<HTMLScriptElement>((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.dataset.ipe = key\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === false || value === null) {\r\n script.removeAttribute(key)\r\n } else {\r\n script.setAttribute(key, value)\r\n }\r\n })\r\n }\r\n document.body.appendChild(script)\r\n script.onload = () => resolve(script)\r\n script.onerror = (e) => reject(e)\r\n })\r\n return promise\r\n }\r\n\r\n loadStyle(href: string, attrs?: Record<string, any>): Promise<HTMLLinkElement | null> {\r\n if (!href) {\r\n return Promise.resolve(null)\r\n }\r\n const key = `style:${href}`\r\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\r\n if (existed) {\r\n return Promise.resolve(existed as HTMLLinkElement)\r\n }\r\n const promise = new Promise<HTMLLinkElement>((resolve, reject) => {\r\n const link = document.createElement('link')\r\n link.rel = 'stylesheet'\r\n link.href = href\r\n link.dataset.ipe = key\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === false || value === null) {\r\n link.removeAttribute(key)\r\n } else {\r\n link.setAttribute(key, value)\r\n }\r\n })\r\n }\r\n const meta =\r\n document.querySelector('meta[name=\"ipe-styles\"]') ||\r\n (() => {\r\n const meta = document.createElement('meta')\r\n meta.id = 'ipe-styles'\r\n meta.name = 'ipe-styles'\r\n document.head.insertAdjacentElement('afterbegin', meta)\r\n return meta\r\n })()\r\n meta.before(link)\r\n link.onload = () => resolve(link)\r\n link.onerror = (e) => reject(e)\r\n })\r\n return promise\r\n }\r\n\r\n resolveImportPath(path: string) {\r\n if (path.startsWith('http') || path.startsWith('//')) {\r\n return path\r\n }\r\n if (import.meta.env.VITE_BUILD_FORMAT === 'import') {\r\n return import.meta.resolve(path)\r\n }\r\n const src = (document.currentScript as HTMLScriptElement)?.src\r\n if (!src) {\r\n return `https://unpkg.com/mediawiki-inpageedit@latest/dist/${path}`\r\n }\r\n const url = new URL(src)\r\n if (!url.pathname.endsWith('.js')) {\r\n url.pathname = url.pathname + '/'\r\n }\r\n return new URL(path, url.toString()).toString()\r\n }\r\n}\r\n","/* eslint-disable */\nconst keys = Object.keys;\nfunction identity(value) {\n return value;\n}\nfunction isBoolean(val) {\n return typeof val === \"boolean\";\n}\nfunction isElement(val) {\n return val && typeof val.nodeType === \"number\";\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" ? val !== null : isFunction(val);\n}\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\nfunction isComponentClass(Component) {\n return !!(Component && Component.isComponent);\n}\nfunction isArrayLike(obj) {\n return (\n isObject(obj) &&\n typeof obj.length === \"number\" &&\n typeof obj.nodeType !== \"number\"\n );\n}\nfunction forEach(value, fn) {\n if (!value) return;\n for (const key of keys(value)) {\n fn(value[key], key);\n }\n}\n\nfunction createRef() {\n return Object.seal({\n current: null,\n });\n}\nfunction isRef(maybeRef) {\n return isObject(maybeRef) && \"current\" in maybeRef;\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found on\n * https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/LICENSE\n */\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nconst isUnitlessNumber = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0,\n};\n\n/**\n * @param prefix vendor-specific prefix, eg: Webkit\n * @param key style name, eg: transitionDuration\n * @return style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nconst prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nkeys(isUnitlessNumber).forEach((prop) => {\n prefixes.forEach((prefix) => {\n isUnitlessNumber[prefixKey(prefix, prop)] = 0; // isUnitlessNumber[prop]\n });\n});\n\nconst jsxDomType = Symbol.for(\"jsx-dom:type\");\nvar JsxDomType = /*#__PURE__*/ (function (JsxDomType) {\n JsxDomType[\"ShadowRoot\"] = \"ShadowRoot\";\n return JsxDomType;\n})(JsxDomType || {});\nfunction ShadowRoot(_ref) {\n let { children, ref, ...attr } = _ref;\n return {\n [jsxDomType]: JsxDomType.ShadowRoot,\n ref,\n attr,\n children,\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxDomType] === JsxDomType.ShadowRoot;\n}\n\nconst SVGNamespace = \"http://www.w3.org/2000/svg\";\nconst XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nconst XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\n\n// https://facebook.github.io/react/docs/jsx-in-depth.html#booleans-null-and-undefined-are-ignored\n// Emulate JSX Expression logic to ignore certain type of children or className.\nfunction isVisibleChild(value) {\n return !isBoolean(value) && value != null;\n}\n\n/**\n * Convert a `value` to a className string.\n * `value` can be a string, an array or a `Dictionary<boolean>`.\n */\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return keys(value)\n .filter((k) => value[k])\n .join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\nconst svg = {\n animate: 0,\n circle: 0,\n clipPath: 0,\n defs: 0,\n desc: 0,\n ellipse: 0,\n feBlend: 0,\n feColorMatrix: 0,\n feComponentTransfer: 0,\n feComposite: 0,\n feConvolveMatrix: 0,\n feDiffuseLighting: 0,\n feDisplacementMap: 0,\n feDistantLight: 0,\n feFlood: 0,\n feFuncA: 0,\n feFuncB: 0,\n feFuncG: 0,\n feFuncR: 0,\n feGaussianBlur: 0,\n feImage: 0,\n feMerge: 0,\n feMergeNode: 0,\n feMorphology: 0,\n feOffset: 0,\n fePointLight: 0,\n feSpecularLighting: 0,\n feSpotLight: 0,\n feTile: 0,\n feTurbulence: 0,\n filter: 0,\n foreignObject: 0,\n g: 0,\n image: 0,\n line: 0,\n linearGradient: 0,\n marker: 0,\n mask: 0,\n metadata: 0,\n path: 0,\n pattern: 0,\n polygon: 0,\n polyline: 0,\n radialGradient: 0,\n rect: 0,\n stop: 0,\n svg: 0,\n switch: 0,\n symbol: 0,\n text: 0,\n textPath: 0,\n tspan: 0,\n use: 0,\n view: 0,\n};\nconst nonPresentationSVGAttributes =\n /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nfunction createFactory(tag) {\n return createElement.bind(null, tag);\n}\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChild(attr.children, fragment);\n return fragment;\n}\nclass Component {\n static isComponent = true;\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n}\nfunction initComponentClass(Class, attr, children) {\n attr = {\n ...attr,\n children,\n };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n attachRef(attr.ref, instance);\n }\n return node;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction jsx(tag, _ref) {\n let { children, ...attr } = _ref;\n if (!attr.namespaceURI && svg[tag] === 0) {\n attr = {\n ...attr,\n namespaceURI: SVGNamespace,\n };\n }\n let node;\n if (isString(tag)) {\n node = attr.namespaceURI\n ? document.createElementNS(attr.namespaceURI, tag)\n : document.createElement(tag);\n attributes(attr, node);\n appendChild(children, node);\n\n // Select `option` elements in `select`\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node\n .querySelectorAll(\"option\")\n .forEach(\n (option) => (option.selected = values.includes(option.value)),\n );\n } else {\n node.value = attr.value;\n }\n }\n attachRef(attr.ref, node);\n } else if (isFunction(tag)) {\n // Custom elements.\n if (isObject(tag.defaultProps)) {\n attr = {\n ...tag.defaultProps,\n ...attr,\n };\n }\n node = isComponentClass(tag)\n ? initComponentClass(tag, attr, children)\n : tag({\n ...attr,\n children,\n });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\nfunction createElement(tag, attr) {\n for (\n var _len = arguments.length,\n children = new Array(_len > 2 ? _len - 2 : 0),\n _key2 = 2;\n _key2 < _len;\n _key2++\n ) {\n children[_key2 - 2] = arguments[_key2];\n }\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(\n tag,\n {\n ...attr,\n children,\n },\n attr.key,\n );\n}\nfunction attachRef(ref, node) {\n if (isRef(ref)) {\n ref.current = node;\n } else if (isFunction(ref)) {\n ref(node);\n }\n}\nfunction appendChild(child, node) {\n if (isArrayLike(child)) {\n appendChildren(child, node);\n } else if (isString(child) || isNumber(child)) {\n appendChildToNode(document.createTextNode(child), node);\n } else if (child === null) {\n appendChildToNode(document.createComment(\"\"), node);\n } else if (isElement(child)) {\n appendChildToNode(child, node);\n } else if (isShadowRoot(child)) {\n const shadowRoot = node.attachShadow(child.attr);\n appendChild(child.children, shadowRoot);\n attachRef(child.ref, shadowRoot);\n }\n}\nfunction appendChildren(children, node) {\n for (const child of [...children]) {\n appendChild(child, node);\n }\n return node;\n}\nfunction appendChildToNode(child, node) {\n if (node instanceof window.HTMLTemplateElement) {\n node.content.appendChild(child);\n } else {\n node.appendChild(child);\n }\n}\nfunction normalizeAttribute(s, separator) {\n return s.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nfunction style(node, value) {\n if (value == null || value === false);\n else if (Array.isArray(value)) {\n value.forEach((v) => style(node, v));\n } else if (isString(value)) {\n node.setAttribute(\"style\", value);\n } else if (isObject(value)) {\n forEach(value, (val, key) => {\n if (key.indexOf(\"-\") === 0) {\n // CSS custom properties (variables) start with `-` (e.g. `--my-variable`)\n // and must be assigned via `setProperty`.\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n });\n }\n}\nfunction attribute(key, value, node) {\n switch (key) {\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n attrNS(node, XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n attr(node, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n attrNS(node, XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n switch (key) {\n case \"htmlFor\":\n attr(node, \"for\", value);\n return;\n case \"dataset\":\n forEach(value, (dataValue, dataKey) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"innerHTML\":\n case \"innerText\":\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n }\n return;\n case \"value\":\n if (value == null || node instanceof window.HTMLSelectElement) {\n // skip nullish values\n // for `<select>` apply value after appending `<option>` elements\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n // use attribute for other elements\n break;\n case \"spellCheck\":\n node.spellcheck = value;\n return;\n case \"class\":\n case \"className\":\n if (isFunction(value)) {\n value(node);\n } else {\n attr(node, \"class\", className(value));\n }\n return;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n style(node, value);\n return;\n case \"on\":\n case \"onCapture\":\n forEach(value, (eventHandler, eventName) => {\n node.addEventListener(eventName, eventHandler, key === \"onCapture\");\n });\n return;\n // fallthrough\n }\n if (isFunction(value)) {\n if (key[0] === \"o\" && key[1] === \"n\") {\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n if (attribute === \"ondoubleclick\") {\n attribute = \"ondblclick\";\n } else if (useCapture && attribute === \"ondoubleclickcapture\") {\n attribute = \"ondblclickcapture\";\n }\n if (!useCapture && node[attribute] === null) {\n // use property when possible PR #17\n node[attribute] = value;\n } else if (useCapture) {\n node.addEventListener(\n attribute.substring(2, attribute.length - 7),\n value,\n true,\n );\n } else {\n let eventName;\n if (attribute in window) {\n // standard event\n // the JSX attribute could have been \"onMouseOver\" and the\n // member name \"onmouseover\" is on the window's prototype\n // so let's add the listener \"mouseover\", which is all lowercased\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n // custom event\n // the JSX attribute could have been \"onMyCustomEvent\"\n // so let's trim off the \"on\" prefix and lowercase the first character\n // and add the listener \"myCustomEvent\"\n // except for the first character, we keep the event name case\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n node.addEventListener(eventName, value);\n }\n }\n } else if (isObject(value)) {\n node[key] = value;\n } else if (value === true) {\n attr(node, key, \"\");\n } else if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n attr(node, normalizeAttribute(key, \"-\"), value);\n } else {\n attr(node, key, value);\n }\n }\n}\nfunction attr(node, key, value) {\n node.setAttribute(key, value);\n}\nfunction attrNS(node, namespace, key, value) {\n node.setAttributeNS(namespace, key, value);\n}\nfunction attributes(attr, node) {\n for (const key of keys(attr)) {\n attribute(key, attr[key], node);\n }\n return node;\n}\n\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n },\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\nfunction useClassList(initialValue) {\n const div = document.createElement(\"div\");\n if (initialValue != null) {\n div.className = className(initialValue);\n }\n let list = div.classList;\n function ClassList(value) {\n value.setAttribute(\"class\", list.value);\n list = value.classList;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add() {\n list.add(...arguments);\n },\n remove() {\n list.remove(...arguments);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n },\n }),\n );\n return ClassList;\n}\n\nfunction useMemo(factory) {\n return factory();\n}\nfunction forwardRef(render) {\n return (_ref) => {\n let { ref, ...props } = _ref;\n return render(props, ref ?? createRef());\n };\n}\nfunction useImperativeHandle(ref, init) {\n attachRef(ref, init());\n}\n\nconst cache = /* @__PURE__ */ new Map();\nconst createStyledComponent = (name) =>\n function (list) {\n for (\n var _len = arguments.length,\n interpolations = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n interpolations[_key - 1] = arguments[_key];\n }\n return (_ref) => {\n let { style, ...props } = _ref;\n const lastIndex = list.length - 1;\n const css =\n list.slice(0, lastIndex).reduce((p, s, i) => {\n const interpolation = interpolations[i];\n const current =\n typeof interpolation === \"function\"\n ? interpolation(props)\n : interpolation;\n return p + s + current;\n }, \"\") + list[lastIndex];\n return createElement(name, {\n style: [css, style],\n ...props,\n });\n };\n };\nconst baseStyled = (customComponent) => createStyledComponent(customComponent);\nconst styled = /* @__PURE__ */ new Proxy(baseStyled, {\n get(_, name) {\n return setIfAbsent(cache, name, () => createStyledComponent(name));\n },\n});\nfunction setIfAbsent(map, key, getValue) {\n if (map.has(key)) {\n return map.get(key);\n } else {\n const value = getValue(key);\n map.set(key, value);\n return value;\n }\n}\n\nvar index = {\n Component,\n PureComponent: Component,\n createElement,\n Fragment,\n ShadowRoot,\n};\nfunction preventDefault(event) {\n event.preventDefault();\n return event;\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n return event;\n}\n\nexport {\n Component,\n Fragment,\n Component as PureComponent,\n SVGNamespace,\n ShadowRoot,\n Fragment as StrictMode,\n className,\n createElement,\n createFactory,\n createRef,\n index as default,\n forwardRef,\n createElement as h,\n isRef,\n jsx,\n jsx as jsxs,\n identity as memo,\n preventDefault,\n stopPropagation,\n styled,\n identity as useCallback,\n useClassList,\n useImperativeHandle,\n useMemo,\n createRef as useRef,\n useText,\n};\n","export enum Endpoints {\r\n ANALYTICS_API_BASE = 'https://analytics.ipe.wiki/api',\r\n ANALYTICS_DASH_URL = 'https://analytics.ipe.wiki',\r\n GITHUB_URL = 'https://github.com/inpageedit/inpageedit-v2',\r\n HOME_URL = 'https://www.ipe.wiki/',\r\n PLUGIN_CDN_BASE = 'https://ipe-plugins.js.org',\r\n PLUGIN_HOME_URL = 'https://github.com/inpageedit/Plugins',\r\n SPECIAL_NOTICE_JSON = 'https://ipe-plugins.js.org/specialNotice.json',\r\n UPDATE_LOGS_URL = 'https://www.ipe.wiki/update/',\r\n}\r\n","import { JSX } from 'vue/jsx-runtime'\r\nimport styles from './styles.module.sass'\r\n\r\nexport const ProgressBar = (\r\n attrs: JSX.IntrinsicElements['div'] & { indeterminate?: boolean; progress?: number }\r\n) => {\r\n const indeterminate = attrs.indeterminate ?? true\r\n const bar = (\r\n <div\r\n class={`${styles.ipe_progress}`}\r\n data-indeterminate={`${indeterminate}`}\r\n // @ts-ignore\r\n style={{ width: '100%', '--progress': attrs.progress ? `${attrs.progress}%` : '0%' }}\r\n {...attrs}\r\n ></div>\r\n ) as HTMLElement & { setProgress: (progress: number) => void }\r\n bar.setProgress = (progress: number | undefined) => {\r\n if (typeof progress === 'number') {\r\n bar.dataset.indeterminate = 'false'\r\n bar.style.setProperty('--progress', `${progress}%`)\r\n } else {\r\n bar.dataset.indeterminate = 'true'\r\n bar.style.setProperty('--progress', '0%')\r\n }\r\n }\r\n return bar\r\n}\r\n","import { InPageEdit } from '@/InPageEdit'\r\n\r\ntype LibSsiModal = typeof ssi_modal\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n modal: LibSsiModal\r\n }\r\n interface Events {\r\n 'modal/show'(payload: { modal: SsiModal }): void\r\n 'modal/close'(payload: { modal: SsiModal }): void\r\n }\r\n}\r\n\r\ndeclare global {\r\n namespace SsiModal {\r\n interface SsiModal {\r\n /**\r\n * Toggle a visual loading overlay & disable buttons inside the modal\r\n */\r\n setLoadingState(state: boolean): void\r\n }\r\n }\r\n}\r\n\r\nexport class SsiModalService {\r\n static readonly inject = ['resourceLoader']\r\n private modal?: typeof ssi_modal\r\n\r\n constructor(public ctx: InPageEdit) {\r\n this.start()\r\n this.ctx.on('dispose', () => {\r\n this.stop()\r\n })\r\n }\r\n\r\n protected start(): void | Promise<void> {\r\n const { promise, resolve } = Promise.withResolvers<LibSsiModal>()\r\n\r\n if (window.ssi_modal && typeof window.ssi_modal.show === 'function') {\r\n resolve(window.ssi_modal)\r\n } else {\r\n this.ctx.resourceLoader.loadStyle(`${Endpoints.PLUGIN_CDN_BASE}/lib/ssi-modal/ssi-modal.css`)\r\n this.ctx.resourceLoader\r\n .loadScript(`${Endpoints.PLUGIN_CDN_BASE}/lib/ssi-modal/ssi-modal.js`, {\r\n async: '',\r\n })\r\n .then(() => {\r\n resolve(window.ssi_modal)\r\n })\r\n }\r\n\r\n return promise.then((module) => {\r\n this.hackSsiModal(module)\r\n this.ctx.set('modal', module)\r\n this.modal = module\r\n })\r\n }\r\n\r\n protected stop(): void | Promise<void> {\r\n this.modal?.closeAll()\r\n }\r\n\r\n hackSsiModal(ssiModalLib: LibSsiModal) {\r\n const that = this\r\n\r\n const init = ssiModalLib.proto.init\r\n ssiModalLib.proto.init = function () {\r\n console.log('init', this)\r\n this.options.className ||= ''\r\n this.options.className += ' in-page-edit theme-ipe'\r\n return init.call(this)\r\n }\r\n\r\n const show = ssiModalLib.proto.show\r\n ssiModalLib.proto.show = function () {\r\n that.ctx.emit('modal/show', { modal: this })\r\n return show.call(this)\r\n }\r\n\r\n const close = ssiModalLib.proto.close\r\n ssiModalLib.proto.close = function () {\r\n that.ctx.emit('modal/close', { modal: this })\r\n return close.call(this)\r\n }\r\n ssiModalLib.proto.setLoadingState = function (this: SsiModal, state: boolean) {\r\n this.get$window().toggleClass('loading', state)\r\n\r\n // start loading\r\n if (state) {\r\n const inputsAndButtons = this.get$window().find('input:not([disabled]),button:not([disabled])')\r\n this.get$modal().data('inputsAndButtons', inputsAndButtons)\r\n inputsAndButtons.prop('disabled', true)\r\n this.get$window().append(\r\n <div\r\n id=\"ssi-modalLoadingWrapper\"\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n zIndex: 2000,\r\n }}\r\n >\r\n <ProgressBar style={{ width: '80%', maxWidth: '800px' }} />\r\n </div>\r\n )\r\n } else {\r\n // stop loading\r\n this.get$window().find('#ssi-modalLoadingWrapper').remove()\r\n const inputsAndButtons = this.get$modal().data('inputsAndButtons')\r\n if (inputsAndButtons) {\r\n inputsAndButtons.prop('disabled', false)\r\n }\r\n }\r\n }\r\n\r\n return ssiModalLib\r\n }\r\n}\r\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","import { InPageEdit, Service } from '@/InPageEdit'\r\nimport localforage from 'localforage'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n storage: StorageService\r\n localforage: typeof localforage\r\n }\r\n}\r\n\r\nexport class StorageService extends Service {\r\n constructor(ctx: InPageEdit) {\r\n super(ctx, 'storage', false)\r\n ctx.set('localforage', localforage)\r\n }\r\n get StorageManager() {\r\n return IPEStorageManager\r\n }\r\n\r\n createDatabse<T = any>(storeName: string, ttl?: number, version?: number) {\r\n return new IPEStorageManager<T>('InPageEdit', storeName, ttl, version)\r\n }\r\n}\r\n\r\nexport interface IPEStorageItem<T = any> {\r\n /** last update time */\r\n time: number\r\n /** stored value */\r\n value: T\r\n /** version */\r\n version?: number\r\n}\r\n\r\nexport class IPEStorageManager<T = any> {\r\n static DEFAULT_TTL = Infinity\r\n static readonly _cached_db_instances: Map<string, LocalForage> = new Map()\r\n\r\n readonly db: LocalForage\r\n keys: (typeof localforage)['keys']\r\n\r\n /**\r\n *\r\n * @param dbName\r\n * @param storeName\r\n * @param ttl\r\n */\r\n constructor(\r\n readonly dbName: string,\r\n readonly storeName: string,\r\n public ttl: number = IPEStorageManager.DEFAULT_TTL,\r\n public version?: number\r\n ) {\r\n this.db = IPEStorageManager.createDatabase(dbName, storeName)\r\n this.keys = this.db.keys.bind(this.db)\r\n }\r\n\r\n static createDatabase(dbName: string, storeName: string) {\r\n const key = `${dbName}:${storeName}`\r\n if (this._cached_db_instances.has(key)) {\r\n return this._cached_db_instances.get(key)!\r\n }\r\n const db = localforage.createInstance({\r\n name: dbName,\r\n storeName,\r\n })\r\n this._cached_db_instances.set(key, db)\r\n return db\r\n }\r\n\r\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\r\n const data = await this.loadFromDB(key)\r\n const isExpired = this.checkIfExpired(data, ttl)\r\n if (!data || isExpired) {\r\n if (typeof setter === 'function') {\r\n const newData = await setter()\r\n return this.set(key, newData).then(() => {\r\n return newData\r\n })\r\n }\r\n return null\r\n }\r\n return data.value\r\n }\r\n\r\n set(key: string, value: null | undefined): Promise<void>\r\n set(key: string, value: T): Promise<IPEStorageItem<T>>\r\n async set(key: string, value: T | null | undefined): Promise<IPEStorageItem<T> | void> {\r\n if (value === null || typeof value === 'undefined') {\r\n return this.delete(key)\r\n }\r\n return this.db.setItem(key, {\r\n time: Date.now(),\r\n value,\r\n version: this.version,\r\n })\r\n }\r\n\r\n async has(key: string, ttl = this.ttl): Promise<boolean> {\r\n const data = await this.loadFromDB(key)\r\n const isExpired = this.checkIfExpired(data, ttl)\r\n return data !== null && !isExpired\r\n }\r\n\r\n async delete(key: string): Promise<void> {\r\n return this.db.removeItem(key)\r\n }\r\n\r\n async iterate(callback: (value: T, key: string) => void) {\r\n return await this.db.iterate<IPEStorageItem<T>, void>((value, key) => {\r\n callback(value.value, key)\r\n })\r\n }\r\n\r\n async loadFromDB(key: string) {\r\n const data = await this.db.getItem<{ time: number; value: T; version?: number }>(key)\r\n // Not exist\r\n if (!data) {\r\n return null\r\n }\r\n // Bad data\r\n if (typeof data.time !== 'number' || typeof data.value === 'undefined') {\r\n try {\r\n this.delete(key)\r\n } catch (e) {}\r\n return null\r\n }\r\n // Version mismatch\r\n if (typeof this.version === 'number' && data.version !== this.version) {\r\n try {\r\n this.delete(key)\r\n } catch (e) {}\r\n return null\r\n }\r\n return data\r\n }\r\n\r\n checkIfExpired(data: IPEStorageItem<T> | null, ttl = this.ttl) {\r\n if (!data) {\r\n return false\r\n }\r\n return Date.now() - data.time > ttl\r\n }\r\n\r\n /**\r\n * [DANGER] Use with caution!\r\n * Delete all data from the database.\r\n */\r\n async clear() {\r\n await this.db.clear()\r\n return this\r\n }\r\n}\r\n","import { Inject, InPageEdit, Service } from '@/InPageEdit'\r\nimport { SiteMetadata, SiteUserBlockInfo } from '@/types/SiteMetadata'\r\nimport { IPEStorageManager } from './StorageService'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n sitemeta: SiteMetadataService\r\n }\r\n}\r\n\r\n@Inject(['api', 'storage'])\r\nexport class SiteMetadataService extends Service {\r\n private _data!: SiteMetadata\r\n private siteIdentity?: string\r\n private readonly CACHE_TTL = 1000 * 60 * 60 * 24 // 1 day\r\n private readonly VERSION = 2\r\n private db: IPEStorageManager<SiteMetadata>\r\n private queryData = {\r\n meta: 'siteinfo|userinfo',\r\n siprop: 'general|specialpagealiases|namespacealiases|namespaces|magicwords',\r\n uiprop: 'groups|rights|blockinfo|options',\r\n }\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'sitemeta', false)\r\n this.db = ctx.storage.createDatabse<SiteMetadata>('sitemeta', this.CACHE_TTL, this.VERSION)\r\n }\r\n\r\n get api() {\r\n return this.ctx.api\r\n }\r\n\r\n get mwConfig(): ReturnType<typeof mw.config.get> {\r\n // @ts-expect-error\r\n return mw.config.values\r\n }\r\n\r\n protected async start(): Promise<void> {\r\n const cached = await this.fetchFromCache()\r\n if (cached) {\r\n this.ctx.logger('SiteMetadataService').info('Using cached metadata')\r\n this._data = cached\r\n return\r\n }\r\n const meta = await this.fetchFromApi()\r\n this.saveToCache(meta)\r\n this._data = meta\r\n }\r\n\r\n async computeSiteIdentity() {\r\n if (this.siteIdentity) return this.siteIdentity\r\n let path: string\r\n if (!window.mw?.config) {\r\n path = new URL(location.href).origin\r\n } else {\r\n const { wgServer, wgArticlePath } = window.mw.config.get()\r\n path = `${wgServer}${wgArticlePath}`\r\n }\r\n this.siteIdentity = path\r\n return this.siteIdentity\r\n }\r\n\r\n async fetchFromApi() {\r\n return this.api\r\n .get({\r\n action: 'query',\r\n ...this.queryData,\r\n })\r\n .then(({ data }) => {\r\n if (typeof data?.query?.general === 'undefined') {\r\n throw new Error('Invalid siteinfo')\r\n }\r\n return data.query\r\n })\r\n .catch((e) => {\r\n this.ctx.logger.error('[InPageEdit]', 'fetchMetadata error', e)\r\n return Promise.reject(e)\r\n })\r\n }\r\n\r\n async fetchFromCache() {\r\n const key = await this.computeSiteIdentity()\r\n return this.db.get(key)\r\n }\r\n async saveToCache(data: SiteMetadata) {\r\n const key = await this.computeSiteIdentity()\r\n return this.db.set(key, data)\r\n }\r\n\r\n // shortcuts\r\n\r\n get _raw() {\r\n return this._data\r\n }\r\n get siteInfo() {\r\n return this._data.general\r\n }\r\n get specialPageAliases() {\r\n return this._data.specialpagealiases\r\n }\r\n get namespaceAliases() {\r\n return this._data.namespacealiases\r\n }\r\n get namespaces() {\r\n return this._data.namespaces\r\n }\r\n get namespaceMap() {\r\n const map = Object.values(this.namespaces)\r\n .map((ns) => ({\r\n id: ns.id,\r\n canonical: ns.canonical,\r\n aliases: this.namespaceAliases\r\n .filter((alias) => alias.id === ns.id)\r\n .map((alias) => alias.alias),\r\n }))\r\n .sort((a, b) => a.id - b.id)\r\n Reflect.defineProperty(this, 'namespaceMap', {\r\n value: map,\r\n writable: false,\r\n configurable: false,\r\n enumerable: true,\r\n })\r\n return map\r\n }\r\n get magicWords() {\r\n return this._data.magicwords\r\n }\r\n get userInfo() {\r\n return this._data.userinfo\r\n }\r\n get userOptions() {\r\n return this.userInfo.options\r\n }\r\n get isUserBlocked() {\r\n return (\r\n this.userInfo.blockedbyid &&\r\n this.userInfo.blockexpiry &&\r\n new Date(this.userInfo.blockexpiry).getTime() > Date.now()\r\n )\r\n }\r\n get userGroups() {\r\n return this.userInfo.groups\r\n }\r\n get userRights() {\r\n return this.userInfo.rights\r\n }\r\n\r\n // utils\r\n\r\n hasRight(right: string) {\r\n return this.userRights.includes(right)\r\n }\r\n hasAnyRight(...rights: string[]) {\r\n return rights.some((right) => this.hasRight(right))\r\n }\r\n hasEveryRights(...rights: string[]) {\r\n return rights.every((right) => this.hasRight(right))\r\n }\r\n inGroup(name: string) {\r\n return this.userGroups.includes(name)\r\n }\r\n inAnyGroup(...names: string[]) {\r\n return this.userGroups.some((group) => names.includes(group))\r\n }\r\n getBlockInfo() {\r\n if (!this.isUserBlocked) return null\r\n return {\r\n blockid: this.userInfo.blockid!,\r\n blockedby: this.userInfo.blockedbyid!,\r\n blockedbyid: this.userInfo.blockedbyid!,\r\n blockreason: this.userInfo.blockreason!,\r\n blockedtimestamp: this.userInfo.blockedtimestamp!,\r\n blockexpiry: this.userInfo.blockexpiry!,\r\n } as SiteUserBlockInfo\r\n }\r\n}\r\n","import type { PageInfo } from './types/PageInfo'\r\nimport { PageParseData } from './types/PageParseData'\r\nimport { WatchlistAction } from './types/WatchlistAction'\r\nimport { MediaWikiApi, MwApiParams } from 'wiki-saikou/browser'\r\n\r\nexport class WikiPage {\r\n readonly api: MediaWikiApi\r\n public pageInfo: PageInfo\r\n static readonly DEFAULT_PAGE_INFO: PageInfo = {\r\n pageid: 0,\r\n ns: 0,\r\n title: '',\r\n contentmodel: 'wikitext',\r\n pagelanguage: '',\r\n pagelanguagehtmlcode: '',\r\n pagelanguagedir: 'ltr',\r\n touched: new Date().toISOString(),\r\n lastrevid: 0,\r\n length: 0,\r\n protection: [],\r\n restrictiontypes: [],\r\n fullurl: '',\r\n canonicalurl: '',\r\n editurl: '',\r\n varianttitles: {},\r\n actions: {\r\n edit: true,\r\n move: false,\r\n delete: false,\r\n },\r\n revisions: [],\r\n templates: [],\r\n images: [],\r\n }\r\n\r\n constructor(pageInfo: Partial<PageInfo>, api?: MediaWikiApi) {\r\n this.pageInfo = {\r\n ...WikiPage.DEFAULT_PAGE_INFO,\r\n ...pageInfo,\r\n }\r\n this.api = api || new MediaWikiApi()\r\n }\r\n\r\n // Utils\r\n async getPageInfo(payload: MwApiParams) {\r\n const {\r\n data: {\r\n query: {\r\n pages: [pageInfo],\r\n },\r\n },\r\n } = await this.api.get<{\r\n query: {\r\n pages: PageInfo[]\r\n }\r\n }>({\r\n action: 'query',\r\n prop: 'info|templates|transcludedin|images|pageimages|revisions',\r\n inprop: 'protection|url|varianttitles',\r\n intestactions: 'edit|move|delete',\r\n tllimit: 'max',\r\n tilimit: 'max',\r\n imlimit: 'max',\r\n piprop: 'thumbnail|name|original',\r\n pithumbsize: '200',\r\n pilimit: 'max',\r\n rvprop: 'ids|timestamp|flags|comment|user|content',\r\n ...payload,\r\n })\r\n pageInfo.revisions?.forEach((rev) => {\r\n // @ts-ignore\r\n if (typeof rev.slots === 'object') {\r\n const mainSlot = (rev as any).slots.main\r\n if (mainSlot) {\r\n rev.content = mainSlot.content\r\n rev.contentmodel = mainSlot['contentmodel']\r\n rev.contentformat = mainSlot['contentformat']\r\n }\r\n }\r\n })\r\n return pageInfo\r\n }\r\n\r\n // Page actions\r\n async parse(params?: MwApiParams) {\r\n return this.api.post<{\r\n parse: PageParseData\r\n }>({\r\n action: 'parse',\r\n page: this.pageInfo.title,\r\n prop: 'text|langlinks|categories|links|templates|images|externallinks|sections|revid|displaytitle|iwlinks|properties|parsewarnings',\r\n ...params,\r\n })\r\n }\r\n async preview(text: string, params?: MwApiParams) {\r\n return this.parse({\r\n action: 'parse',\r\n page: undefined,\r\n title: this.title,\r\n text,\r\n pst: 1,\r\n preview: 1,\r\n disableeditsection: 1,\r\n disablelimitreport: 1,\r\n ...params,\r\n })\r\n }\r\n async edit(\r\n payload: {\r\n text?: string\r\n prependtext?: string\r\n appendtext?: string\r\n summary?: string\r\n watchlist?: WatchlistAction\r\n },\r\n params?: MwApiParams\r\n ) {\r\n const { text, prependtext, appendtext, summary = '', watchlist = 'preferences' } = payload\r\n return this.api.postWithEditToken({\r\n action: 'edit',\r\n title: this.title,\r\n starttimestamp: this.pageInfo.touched,\r\n basetimestamp: this.revisions[0]?.timestamp,\r\n text,\r\n prependtext,\r\n appendtext,\r\n summary,\r\n watchlist,\r\n ...params,\r\n })\r\n }\r\n async createOnly(\r\n payload: { text: string; summary?: string; watchlist?: WatchlistAction },\r\n params?: MwApiParams\r\n ) {\r\n return this.edit(payload, { createonly: 1, ...params })\r\n }\r\n async delete(reason?: string, params?: MwApiParams) {\r\n return this.api.postWithEditToken({\r\n action: 'delete',\r\n pageid: this.pageInfo.pageid,\r\n reason,\r\n ...params,\r\n })\r\n }\r\n async moveTo(\r\n title: string,\r\n reason?: string,\r\n params?: Partial<\r\n MwApiParams & {\r\n movetalk: boolean\r\n movesubpages: boolean\r\n }\r\n >\r\n ) {\r\n return this.api.postWithEditToken({\r\n action: 'move',\r\n from: this.pageInfo.title,\r\n to: title,\r\n reason,\r\n movetalk: 1,\r\n movesubpages: 1,\r\n ...params,\r\n })\r\n }\r\n\r\n // === utilities ===\r\n\r\n userCan(action: keyof PageInfo['actions']) {\r\n const val = this.pageInfo?.actions?.[action]\r\n return val\r\n }\r\n userCanEdit() {\r\n return this.userCan('edit')\r\n }\r\n async refetch() {\r\n const pageInfo = await this.getPageInfo({\r\n pageids: this.pageInfo.pageid,\r\n titles: this.pageInfo.title,\r\n })\r\n const revisions = (this.pageInfo.revisions || [])\r\n .concat(pageInfo.revisions || [])\r\n .sort((a, b) => a.revid - b.revid)\r\n .reduce(\r\n (acc, cur) => {\r\n if (!acc.find((rev) => rev.revid === cur.revid)) acc.push(cur)\r\n return acc\r\n },\r\n [] as Required<PageInfo>['revisions']\r\n )\r\n this.pageInfo = pageInfo\r\n this.pageInfo.revisions = revisions\r\n return this\r\n }\r\n\r\n // === sugar getters ===\r\n\r\n get pageid() {\r\n return this.pageInfo.pageid\r\n }\r\n get title() {\r\n return this.pageInfo.title\r\n }\r\n get ns() {\r\n return this.pageInfo.ns\r\n }\r\n get contentmodel() {\r\n return this.pageInfo.contentmodel\r\n }\r\n get fullurl() {\r\n return this.pageInfo.fullurl\r\n }\r\n get canonicalurl() {\r\n return this.pageInfo.canonicalurl\r\n }\r\n get editurl() {\r\n return this.pageInfo.editurl\r\n }\r\n get revisions() {\r\n return this.pageInfo.revisions || []\r\n }\r\n get templates() {\r\n return this.pageInfo.templates || []\r\n }\r\n get images() {\r\n return this.pageInfo.images || []\r\n }\r\n}\r\n","import { InPageEdit, Service } from '@/InPageEdit'\r\nimport { WikiPage } from '@/models/WikiPage'\r\nimport { PageInfo } from '@/models/WikiPage/types/PageInfo'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n wikiPage: WikiPageService\r\n }\r\n}\r\n\r\nexport class WikiPageService extends Service {\r\n static inject = ['api']\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'wikiPage', true)\r\n }\r\n get WikiPage() {\r\n return WikiPage\r\n }\r\n async createInstance(payload: Record<string, any>) {\r\n const {\r\n data: {\r\n query: {\r\n pages: [pageInfo],\r\n },\r\n },\r\n } = await this.ctx.api.get({\r\n action: 'query',\r\n prop: 'info|templates|transcludedin|images|pageimages|revisions',\r\n inprop: 'protection|url|varianttitles',\r\n intestactions: 'edit|move|delete',\r\n tllimit: 'max',\r\n tilimit: 'max',\r\n imlimit: 'max',\r\n piprop: 'thumbnail|name|original',\r\n pithumbsize: '200',\r\n pilimit: 'max',\r\n rvprop: 'ids|timestamp|user|userid|content',\r\n ...payload,\r\n })\r\n return new WikiPage(pageInfo, this.ctx.api)\r\n }\r\n async newFromTitle(title: string, converttitles = false, rvsection?: number | string) {\r\n return this.createInstance({ titles: title, converttitles, rvsection })\r\n }\r\n async newFromPageId(pageid: number, rvsection?: number | string) {\r\n return this.createInstance({ pageids: pageid, rvsection })\r\n }\r\n async newFromRevision(revid: number, rvsection?: number | string) {\r\n return this.createInstance({ revids: revid, rvsection })\r\n }\r\n newBlankPage(init: Partial<PageInfo> = {}) {\r\n return new WikiPage(init, this.ctx.api)\r\n }\r\n}\r\n","import { Context, Inject, Schema, Events as CordisEvents } from 'cordis'\r\nimport { ApiService } from '@/services/ApiService'\r\nimport { ResourceLoaderService } from '@/services/ResourceLoaderService'\r\nimport { SsiModalService } from '@/services/SsiModalService'\r\nimport { StorageService } from '@/services/StorageService'\r\nimport { SiteMetadataService } from '@/services/SiteMetadataService'\r\nimport { WikiPageService } from '@/services/WikiPageService'\r\n\r\nexport interface InPageEditCoreConfig {\r\n baseURL: string | URL\r\n legacyPreferences: Record<string, any>\r\n}\r\n\r\n/**\r\n * ✏️ InPageEdit NEXT\r\n *\r\n * 🚀 Modular, Extensible Supercharged Plugin for MediaWiki\r\n *\r\n * @author dragon-fish <dragon-fish@qq.com>\r\n * @license MIT\r\n * @see https://github.com/inpageedit/inpageedit-next\r\n */\r\nexport class InPageEdit extends Context {\r\n public config: InPageEditCoreConfig\r\n static DEFAULT_CONFIG: InPageEditCoreConfig = {\r\n baseURL: '',\r\n legacyPreferences: {},\r\n }\r\n Endpoints = Endpoints\r\n Schema = Schema\r\n readonly version: string = import.meta.env.__VERSION__ || '0.0.0'\r\n\r\n constructor(config?: Partial<InPageEditCoreConfig>) {\r\n super()\r\n this.config = {\r\n ...InPageEdit.DEFAULT_CONFIG,\r\n ...config,\r\n }\r\n this.#initCoreServices()\r\n this.#initCorePlugins()\r\n this.#initCoreAssets()\r\n }\r\n\r\n async #initCoreServices() {\r\n this.plugin(ApiService, { baseURL: this.config.baseURL })\r\n this.plugin(ResourceLoaderService)\r\n this.plugin(SsiModalService)\r\n this.plugin(StorageService)\r\n this.plugin(SiteMetadataService)\r\n this.plugin(WikiPageService)\r\n }\r\n\r\n // TODO: 这里不应该硬编码,暂时先这样\r\n async #initCorePlugins() {\r\n const plugins = [\r\n import('@/plugins/preferences/index.js').then(({ PluginPreferences }) => PluginPreferences),\r\n import('@/plugins/quick-edit/index.js').then(({ PluginQuickEdit }) => PluginQuickEdit),\r\n import('@/plugins/quick-move/index.js').then(({ PluginQuickMove }) => PluginQuickMove),\r\n import('@/plugins/quick-preview/index.js').then(\r\n ({ PluginQuickPreview }) => PluginQuickPreview\r\n ),\r\n import('@/plugins/quick-diff/index.js').then(({ PluginQuickDiff }) => PluginQuickDiff),\r\n import('@/plugins/quick-redirect/index.js').then(\r\n ({ PluginQuickRedirect }) => PluginQuickRedirect\r\n ),\r\n import('@/plugins/toolbox/index.js').then(({ PluginToolbox }) => PluginToolbox),\r\n ]\r\n plugins.forEach(async (plugin) => {\r\n this.plugin(await plugin)\r\n })\r\n\r\n if (import.meta.env.DEV) {\r\n this.plugin((await import('@/plugins/_debug/index.js')).default)\r\n }\r\n }\r\n\r\n // TODO: 应该抽象到 PluginTheme 中去,暂时先硬编码\r\n async #initCoreAssets() {\r\n this.inject(['resourceLoader'], (ctx) => {\r\n if (import.meta.env.PROD && import.meta.env.VITE_BUILD_FORMAT !== 'import') {\r\n ctx.resourceLoader.loadStyle(import.meta.resolve('./style.css'))\r\n }\r\n ctx.resourceLoader.loadStyle(`${Endpoints.PLUGIN_CDN_BASE}/skins/ipe-default.css`)\r\n })\r\n }\r\n\r\n async useScope(inject: Inject) {\r\n const { promise, resolve } = promiseWithResolvers<this>()\r\n this.inject(inject, (ctx) => {\r\n resolve(ctx)\r\n })\r\n return promise\r\n }\r\n}\r\n\r\n// 类型体操\r\nexport { Inject, Schema, Service } from 'cordis'\r\nexport interface Events<C extends InPageEdit = InPageEdit> extends CordisEvents<C> {}\r\nexport interface InPageEdit {\r\n [InPageEdit.events]: Events<this>\r\n}\r\n","export function capitalize(source: string) {\r\n return source.charAt(0).toUpperCase() + source.slice(1)\r\n}\r\n\r\nexport function uncapitalize(source: string) {\r\n return source.charAt(0).toLowerCase() + source.slice(1)\r\n}\r\n\r\nexport function camelCase(source: string) {\r\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase())\r\n}\r\n\r\nexport function paramCase(source: string) {\r\n return uncapitalize(source)\r\n .replace(/_/g, '-')\r\n .replace(/.[A-Z]+/g, (str) => str[0] + '-' + str.slice(1).toLowerCase())\r\n}\r\n\r\nexport function snakeCase(source: string) {\r\n return uncapitalize(source)\r\n .replace(/-/g, '_')\r\n .replace(/.[A-Z]+/g, (str) => str[0] + '_' + str.slice(1).toLowerCase())\r\n}\r\n\r\nexport function trimSlash(source: string) {\r\n return source.replace(/\\/+$/, '')\r\n}\r\n\r\nexport function ensureSlash(source: string) {\r\n return source.endsWith('/') ? source : source + '/'\r\n}\r\n","import { InPageEdit } from '@/InPageEdit'\r\nimport { snakeCase } from '@/utils/string'\r\n\r\ninterface DisposeHandler {\r\n (ctx: InPageEdit): Promise<void> | void\r\n}\r\n\r\nexport default class BasePlugin<T extends unknown = any> {\r\n #name!: string\r\n public config: T\r\n private disposeHandlers: DisposeHandler[] = []\r\n\r\n constructor(\r\n public ctx: InPageEdit,\r\n config: T = undefined as unknown as T,\r\n name?: string\r\n ) {\r\n this.name = name || this.constructor.name\r\n this.config = config || ({} as T)\r\n const { promise, resolve, reject } = Promise.withResolvers<void>()\r\n queueMicrotask(() => {\r\n try {\r\n const ret = this.start()\r\n if (ret && typeof (ret as Promise<unknown>).then === 'function') {\r\n ;(ret as Promise<unknown>)\r\n .then(() => resolve())\r\n .catch((err) => {\r\n this.logger.error('Plugin start failed', err)\r\n reject(err)\r\n })\r\n } else {\r\n resolve()\r\n }\r\n } catch (err) {\r\n this.logger.error('Plugin start threw synchronously', err)\r\n reject(err)\r\n }\r\n\r\n promise.then(() => {\r\n this.logger.info('Plugin started')\r\n })\r\n promise.catch((e) => {\r\n this.logger.error('Plugin start failed', e)\r\n this.ctx.scope.dispose()\r\n })\r\n })\r\n this.ctx.once('dispose', () => {\r\n this.disposeHandlers.forEach((fn) => fn(this.ctx))\r\n this.stop()\r\n this.logger.info('Plugin disposed')\r\n })\r\n }\r\n\r\n protected start(): Promise<void> | void {}\r\n protected stop(): Promise<void> | void {}\r\n protected addDisposeHandler(fn: DisposeHandler) {\r\n this.disposeHandlers.push(fn)\r\n }\r\n protected removeDisposeHandler(fn: DisposeHandler) {\r\n this.disposeHandlers = this.disposeHandlers.filter((f) => f !== fn)\r\n }\r\n\r\n set name(name: string) {\r\n this.#name = snakeCase(name).toUpperCase()\r\n }\r\n get name() {\r\n return this.#name\r\n }\r\n\r\n get logger() {\r\n return this.ctx.logger(this.name)\r\n }\r\n}\r\n","import '@/polyfills'\r\nimport { InPageEdit as IPECore } from '@/InPageEdit'\r\n\r\nexport * from '@/InPageEdit'\r\nexport { default as BasePlugin } from '@/plugins/BasePlugin'\r\n\r\n// Safe guard\r\nwindow.RLQ ||= []\r\nwindow.__IPE_MODULES__ ||= []\r\n\r\n// Auto load if the site is MediaWiki\r\nwindow.RLQ.push(autoload)\r\nasync function autoload() {\r\n // 防止多次运行\r\n if (typeof window?.ipe?.stop === 'function') {\r\n console.warn('[InPageEdit] Plugin already loaded, disposing...')\r\n await window.ipe.stop()\r\n }\r\n\r\n const oldGlobalVar: any = window.InPageEdit || {}\r\n const ipe = new IPECore({\r\n baseURL: window.mw?.util.wikiScript('api'),\r\n legacyPreferences: oldGlobalVar?.myPreferences || {},\r\n })\r\n\r\n // Merge into global variables\r\n window.InPageEdit = IPECore\r\n window.ipe = ipe\r\n\r\n // Trigger the mw.hook\r\n window.mw.hook('InPageEdit.ready').fire(ipe)\r\n\r\n // Start the App\r\n await ipe.start()\r\n\r\n // Initialize global modules\r\n if (Array.isArray(window.__IPE_MODULES__)) {\r\n const installedModules = [] as any[]\r\n while (window.__IPE_MODULES__.length) {\r\n try {\r\n const payload = window.__IPE_MODULES__.shift()\r\n typeof payload === 'function' && payload?.(ipe)\r\n installedModules.push(payload)\r\n } catch (error) {\r\n console.error('[InPageEdit] Failed to initialize module:', error)\r\n }\r\n }\r\n window.__IPE_MODULES__ = {\r\n push: (payload) => {\r\n typeof payload === 'function' && payload(ipe)\r\n installedModules.push(payload)\r\n },\r\n }\r\n ipe.on('dispose', () => {\r\n window.__IPE_MODULES__ = installedModules\r\n })\r\n }\r\n\r\n // 花里胡哨的加载提示\r\n ipe\r\n .logger('AUTOLOAD')\r\n .info(\r\n `${Endpoints.HOME_URL}` +\r\n '\\n' +\r\n ' ____ ____ ______ ___ __ \\n / _/___ / __ \\\\____ _____ ____ / ____/___/ (_) /_\\n / // __ \\\\/ /_/ / __ `/ __ `/ _ \\\\/ __/ / __ / / __/\\n _/ // / / / ____/ /_/ / /_/ / __/ /___/ /_/ / / /_ \\n/___/_/ /_/_/ \\\\__,_/\\\\__, /\\\\___/_____/\\\\__,_/_/\\\\__/ \\n /____/ v' +\r\n ipe.version\r\n )\r\n}\r\n\r\n/**\r\n * Hot Module Replacement (HMR) support\r\n */\r\nif (import.meta.hot) {\r\n // import.meta.hot.accept((module) => {\r\n // if (typeof module === 'undefined') {\r\n // console.error(\"[InPageEdit] Hell no, I'm so cold...\")\r\n // location.reload()\r\n // } else {\r\n // console.info(\"[InPageEdit] OMG, I'm so hot!\", module)\r\n // IPECore.autoload()\r\n // }\r\n // })\r\n}\r\n\r\n// Global types declaration\r\ndeclare global {\r\n const InPageEdit: typeof IPECore\r\n const ipe: IPECore\r\n interface Window {\r\n InPageEdit: typeof IPECore\r\n ipe: IPECore\r\n __IPE_MODULES__: {\r\n push(payload: (ipe: IPECore) => void): void\r\n }\r\n }\r\n}\r\n\r\n// MediaWiki ResourceLoader Queue\r\ndeclare global {\r\n interface Window {\r\n RLQ: {\r\n push(callback: () => void): void\r\n push(depAndCallback: [string, () => void]): void\r\n push(depsAndCallback: [string[], () => void]): void\r\n }\r\n }\r\n}\r\n\r\n// declare mw.hook\r\ndeclare global {\r\n namespace mw {\r\n /**\r\n * @see https://doc.wikimedia.org/mediawiki-core/master/js/Hook.html\r\n * @see https://github.com/wikimedia-gadgets/types-mediawiki/blob/9b4e7c3b9034d64a44a0667229a6d9585fe09b30/mw/hook.d.ts\r\n */\r\n interface Hook<T extends any[] = any[]> {\r\n add(...handler: Array<(...data: T) => any>): this\r\n deprecate(msg: string): this\r\n fire(...data: T): this\r\n remove(...handler: Array<(...data: T) => any>): this\r\n }\r\n function hook(name: 'InPageEdit.ready'): Hook<[IPECore]>\r\n }\r\n}\r\n","import { h, JSX, ReactNode } from 'jsx-dom'\r\n\r\nexport interface ActionButtonProps {\r\n type?: 'primary' | 'secondary' | 'danger' | 'default'\r\n tag?: 'a' | 'button' | 'div'\r\n}\r\n\r\nconst origin = window?.location?.origin\r\n\r\nexport const ActionButton = ({\r\n type,\r\n tag,\r\n href,\r\n target,\r\n children,\r\n ...rest\r\n}: ActionButtonProps &\r\n Omit<JSX.IntrinsicElements['button'], 'type'> &\r\n JSX.IntrinsicElements['a']) => {\r\n tag = tag || (href ? 'a' : 'button')\r\n if (\r\n typeof target === 'undefined' &&\r\n href &&\r\n href.startsWith('http') &&\r\n !href.startsWith(origin)\r\n ) {\r\n target = '_blank'\r\n }\r\n return h(\r\n tag,\r\n {\r\n className: `theme-ipe ipe-action-button btn btn-${type || 'default'}`,\r\n // @ts-ignore\r\n href: tag === 'a' ? href : undefined,\r\n target: tag === 'a' ? target : undefined,\r\n 'data-href': tag !== 'a' ? href : undefined,\r\n ...rest,\r\n },\r\n children\r\n )\r\n}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { IPEStorageItem, IPEStorageManager } from '@/services/StorageService'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n preferences: PluginPreferences\r\n }\r\n}\r\n\r\nexport interface InPageEditPreferenceUICategory {\r\n name: string\r\n label: string\r\n description?: string\r\n index?: number\r\n}\r\n\r\nexport interface InPageEditPreferenceUIRegistryItem {\r\n name: string\r\n schema: Schema\r\n defaults: Record<string, any>\r\n category: string\r\n}\r\n\r\n@Inject(['sitemeta', 'storage'])\r\nexport class PluginPreferences extends BasePlugin {\r\n private db: IPEStorageManager<any>\r\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\r\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\r\n private _defaultPreferences: Record<string, any> = {}\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'preferences')\r\n this.db = ctx.storage.createDatabse<any>('preferences', Infinity)\r\n this.ctx.set('preferences', this)\r\n }\r\n\r\n async start() {\r\n this.defineCategory({\r\n name: 'general',\r\n label: 'General',\r\n description: 'General settings',\r\n })\r\n this.defineCategory({\r\n name: 'edit',\r\n label: 'Editing',\r\n description: 'Settings related to editing content',\r\n })\r\n this.defineCategory({\r\n name: 'about',\r\n label: 'About',\r\n description: 'About InPageEdit',\r\n index: 99,\r\n })\r\n\r\n this.registerCustomConfig(\r\n 'about',\r\n Schema.object({\r\n about: Schema.string()\r\n .role('html-info')\r\n .description(\r\n (\r\n <div className=\"prose\">\r\n <h2>✏️ InPageEdit NEXT</h2>\r\n <i>v{this.ctx.version}</i>\r\n <h2>Portal</h2>\r\n <div style=\"display: flex; flex-direction: column; gap: 1rem\">\r\n <ActionButton\r\n href=\"https://www.ipe.wiki\"\r\n style={{ display: 'block', width: '100%' }}\r\n >\r\n Official Website & Help Center\r\n </ActionButton>\r\n <ActionButton\r\n href=\"https://www.ipe.wiki/update/\"\r\n style={{ display: 'block', width: '100%' }}\r\n >\r\n Update Logs\r\n </ActionButton>\r\n </div>\r\n <h2>Join us</h2>\r\n <ul>\r\n <li>\r\n <strong>GitHub</strong>:{' '}\r\n <a href=\"https://github.com/inpageedit/inpageedit-next\" target=\"_blank\">\r\n inpageedit/inpageedit-next\r\n </a>\r\n </li>\r\n <li>\r\n <strong>QQ Group</strong>: 1026023666\r\n </li>\r\n </ul>\r\n <hr />\r\n <p>🚀 Modular, Extensible Supercharged Plugin for MediaWiki.</p>\r\n <p>InPageEdit-NEXT Copyright © 2025-present dragon-fish</p>\r\n </div>\r\n ).outerHTML\r\n )\r\n .default(''),\r\n }).description(''),\r\n 'about',\r\n {}\r\n )\r\n\r\n import('./ui/index').then((module) => {\r\n const fork = this.ctx.plugin(module.PluginPreferencesUI)\r\n this.addDisposeHandler(() => {\r\n fork.dispose()\r\n })\r\n })\r\n }\r\n\r\n get<T = any>(key: string, fallback?: () => T | Promise<T>): Promise<T | null> {\r\n fallback ||= () => {\r\n const defaultValue = this.getDefaultValue(key)\r\n this.logger.info('default value used', defaultValue)\r\n return defaultValue as T\r\n }\r\n const value = this.db.get(key, undefined, fallback)\r\n return value\r\n }\r\n\r\n getDefaultValue(key: string) {\r\n return (this._defaultPreferences[key] ??= this.loadDefaultConfigs()[key])\r\n }\r\n\r\n set<T = any>(key: string, value: T): Promise<IPEStorageItem<T> | void> {\r\n const defaultValue = this.getDefaultValue(key)\r\n if (value === defaultValue) {\r\n return this.db.delete(key)\r\n } else {\r\n return this.db.set(key, value)\r\n }\r\n }\r\n\r\n async getAll() {\r\n const data = this.loadDefaultConfigs()\r\n await this.db.iterate((value: IPEStorageItem, key: string) => {\r\n data[key] = value\r\n })\r\n return data\r\n }\r\n\r\n private loadDefaultConfigs() {\r\n const data = {} as Record<string, any>\r\n this.getConfigRegistries().forEach((item) => {\r\n item.defaults &&\r\n Object.entries(item.defaults).forEach(([key, val]) => {\r\n data[key] = val\r\n this._defaultPreferences[key] = val\r\n })\r\n })\r\n return data\r\n }\r\n\r\n registerCustomConfig(\r\n name: string,\r\n schema: Schema,\r\n category: string,\r\n defaults: Record<string, any>\r\n ) {\r\n this.customRegistries.push({\r\n name,\r\n schema,\r\n category,\r\n defaults,\r\n })\r\n return this\r\n }\r\n\r\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\r\n return Array.from(this.ctx.registry.entries())\r\n .map<{\r\n name: string\r\n schema: Schema\r\n defaults: Record<string, any>\r\n }>(([plugin, fork]) => {\r\n if (plugin === null) {\r\n return {\r\n name: 'root',\r\n schema: (InPageEdit as any)?.PreferencesSchema || null,\r\n defaults: (InPageEdit as any)?.PreferencesDefaults || {},\r\n }\r\n } else {\r\n return {\r\n name: plugin.name,\r\n schema: (plugin as any)?.PreferencesSchema || null,\r\n defaults: (plugin as any)?.PreferencesDefaults || {},\r\n }\r\n }\r\n })\r\n .filter((item) => item.schema !== null)\r\n .map((item) => {\r\n return {\r\n ...item,\r\n category: item.schema.meta.category || 'general',\r\n }\r\n })\r\n .concat(this.customRegistries)\r\n .filter((item) => !category || item.category === category)\r\n }\r\n\r\n defineCategory(category: InPageEditPreferenceUICategory) {\r\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\r\n if (index < 0) {\r\n this.categoryDefinitions.push(category)\r\n } else {\r\n this.categoryDefinitions[index] = category\r\n }\r\n this.categoryDefinitions.sort((a, b) => {\r\n return (a.index ?? 0) - (b.index ?? 0)\r\n })\r\n return this\r\n }\r\n\r\n getConfigCategories() {\r\n return this.categoryDefinitions\r\n }\r\n}\r\n","export enum WatchlistAction {\r\n preferences = 'preferences',\r\n watch = 'watch',\r\n unwatch = 'unwatch',\r\n nochange = 'nochange',\r\n}\r\n","import Schema from 'schemastery'\r\n\r\ntype AnyConstructor<T = any> = new (...args: any[]) => T\r\n\r\nexport type PreferenceAugmented<C extends AnyConstructor, D extends Record<string, any>> = C & {\r\n PreferencesSchema: Schema<D>\r\n PreferencesDefaults: D\r\n}\r\n\r\n/**\r\n * Decorator for registering preferences\r\n *\r\n * ```ts\r\n * @RegisterPreferences(\r\n * Schema.object({\r\n * foo: Schema.string().description('Foo description'),\r\n * }),\r\n * {\r\n * foo: 'default foo value',\r\n * }\r\n * )\r\n * class Foo {}\r\n * ```\r\n *\r\n * same as:\r\n *\r\n * ```ts\r\n * class Foo {\r\n * static ConfigSchema = Schema.object({\r\n * foo: Schema.string().description('Foo description')\r\n * })\r\n * static ConfigDefaults = {\r\n * foo: 'default foo value'\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport function RegisterPreferences<D extends Record<string, any>>(schema: Schema<D>, defaults: D) {\r\n return function <T extends AnyConstructor>(target: T): PreferenceAugmented<T, D> {\r\n ;(target as any).PreferencesSchema = schema\r\n ;(target as any).PreferencesDefaults = defaults\r\n return target as PreferenceAugmented<T, D>\r\n }\r\n}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { QuickEditOptions } from '.'\r\n\r\n@Inject(['sitemeta', 'quickEdit'])\r\n@RegisterPreferences(\r\n Schema.object({\r\n redLinkEdit: Schema.boolean()\r\n .description('Show quick edit entry after red links')\r\n .default(true),\r\n }).description('In-article quick edit links'),\r\n {\r\n redLinkEdit: true,\r\n }\r\n)\r\nexport class PluginQuickEditInArticleLinks extends BasePlugin<{\r\n wikiBaseUrl: string\r\n wikiArticlePath: string\r\n wikiArticleBaseUrl: string\r\n wikiScriptBaseUrl: string\r\n linkClassName: string\r\n}> {\r\n constructor(ctx: InPageEdit) {\r\n const mwConfig = ctx.sitemeta.mwConfig\r\n const wikiArticlePath = mwConfig.wgArticlePath.replace('$1', '')\r\n const wikiBaseUrl = `${location.protocol}//${mwConfig.wgServer.split('//')[1]}`\r\n super(\r\n ctx,\r\n {\r\n wikiBaseUrl,\r\n wikiArticlePath,\r\n wikiArticleBaseUrl: `${wikiBaseUrl}${wikiArticlePath}`,\r\n wikiScriptBaseUrl: `${wikiBaseUrl}${mwConfig.wgScriptPath}`,\r\n linkClassName: 'ipe-quickEdit__in-article-link',\r\n },\r\n 'QuickEditInArticleLinks'\r\n )\r\n }\r\n\r\n protected async start() {\r\n mw.hook('wikipage.content').add(() => {\r\n const anchorList = document.querySelectorAll<HTMLAnchorElement>('#mw-content-text a[href]')\r\n anchorList.forEach((anchor) => {\r\n const info = this.checkEditAnchor(anchor)\r\n if (!info || anchor.dataset.ipeQuickEditLink) {\r\n return\r\n }\r\n\r\n const link = (\r\n <a\r\n href={`#/IPE/quickEdit/${info.title}`}\r\n className={this.config.linkClassName}\r\n style={{\r\n userSelect: 'none',\r\n marginLeft: '0.2em',\r\n verticalAlign: 'middle',\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n this.ctx.quickEdit(info)\r\n }}\r\n >\r\n <svg\r\n style=\"width: 1em; height: 1em\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-pencil-bolt\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4\" />\r\n <path d=\"M13.5 6.5l4 4\" />\r\n <path d=\"M19 16l-2 3h4l-2 3\" />\r\n </svg>\r\n </a>\r\n )\r\n\r\n anchor.insertAdjacentElement('afterend', link)\r\n anchor.dataset.ipeQuickEditLink = 'true'\r\n })\r\n })\r\n }\r\n\r\n stop() {\r\n document.querySelectorAll(`.${this.config.linkClassName}`).forEach((el) => el.remove())\r\n }\r\n\r\n checkEditAnchor(\r\n anchor: HTMLAnchorElement\r\n ): Pick<QuickEditOptions, 'title' | 'section' | 'revision' | 'createOnly'> | null {\r\n if (!(anchor instanceof HTMLAnchorElement)) {\r\n return null\r\n }\r\n\r\n const href = anchor.href || ''\r\n if (\r\n !href.startsWith(this.config.wikiArticleBaseUrl) &&\r\n !href.startsWith(this.config.wikiScriptBaseUrl)\r\n ) {\r\n return null\r\n }\r\n const hrefURL = new URL(href)\r\n const params = hrefURL.searchParams\r\n const action = params.get('action') || 'view'\r\n const title =\r\n params.get('title') ||\r\n decodeURI(hrefURL.pathname.substring(this.config.wikiArticlePath.length)) ||\r\n ''\r\n const section = params.get('section')?.replace(/^T-/, '') || undefined\r\n const revision = params.get('oldid')\r\n\r\n if (\r\n // 不合法的 title\r\n !title ||\r\n title.endsWith('.php') ||\r\n // 不是 edit 相关操作\r\n !['edit', 'editsource', 'editredlink', 'submit'].includes(action) ||\r\n // 暂时未兼容 undo\r\n params.get('undo') ||\r\n // 暂时未兼容 preload\r\n params.get('preload')\r\n ) {\r\n return null\r\n }\r\n\r\n let sectionNum: 'new' | number | undefined = undefined\r\n if (section === 'new') {\r\n sectionNum = 'new'\r\n } else if (section && /^\\d+$/.test(section)) {\r\n sectionNum = parseInt(section, 10)\r\n }\r\n\r\n return {\r\n title,\r\n section: sectionNum,\r\n revision: parseInt('' + revision, 10) || 0,\r\n createOnly: !!params.get('redlink'),\r\n }\r\n }\r\n}\r\n","import { ReactNode } from 'jsx-dom'\r\nimport { JSX } from 'jsx-dom/jsx-runtime'\r\nimport styles from './styles.module.sass'\r\n\r\nexport type MBoxProps = {\r\n type?:\r\n | ''\r\n | 'default'\r\n | 'note'\r\n | 'info'\r\n | 'tip'\r\n | 'success'\r\n | 'important'\r\n | 'done'\r\n | 'warning'\r\n | 'caution'\r\n | 'error'\r\n title?: ReactNode\r\n content?: ReactNode\r\n closeable?: boolean\r\n titleProps?: JSX.IntrinsicElements['div']\r\n contentProps?: JSX.IntrinsicElements['div']\r\n} & JSX.IntrinsicElements['div']\r\n\r\nexport type MBoxElement = HTMLElement & {\r\n close: () => Promise<void>\r\n}\r\n\r\nexport const MBox = (props: MBoxProps) => {\r\n const {\r\n type = 'default',\r\n title,\r\n content,\r\n closeable = true,\r\n titleProps,\r\n contentProps,\r\n children,\r\n ...rest\r\n } = props\r\n let titleContent = title\r\n if (typeof title === 'undefined' && type !== 'default') {\r\n titleContent = type[0].toUpperCase() + type.slice(1).toLowerCase()\r\n }\r\n\r\n const close = async () => {\r\n if (!box) {\r\n return Promise.resolve()\r\n }\r\n const { promise, resolve } = Promise.withResolvers<void>()\r\n\r\n const animation = box.animate(\r\n [\r\n { opacity: '1', height: box.clientHeight + 'px' },\r\n { opacity: '0', height: '0px', margin: '0px' },\r\n ],\r\n {\r\n duration: 300,\r\n easing: 'ease',\r\n }\r\n )\r\n\r\n animation.addEventListener('finish', () => {\r\n box.remove()\r\n resolve()\r\n })\r\n\r\n return promise\r\n }\r\n\r\n const box = (\r\n <div className={`theme-ipe ipe-mbox mbox-type-${type || 'default'} ${styles.mbox}`} {...rest}>\r\n {titleContent && (\r\n <div className={`ipe-mbox-title ${styles.title}`} {...titleProps}>\r\n {titleContent}\r\n </div>\r\n )}\r\n <div className={`ipe-mbox-content ${styles.content}`} {...contentProps}>\r\n {children || content}\r\n </div>\r\n {closeable && (\r\n <a onClick={close} className={`ipe-mbox-close ${styles.close}`}>\r\n ×\r\n </a>\r\n )}\r\n </div>\r\n ) as MBoxElement\r\n box.close = close\r\n return box\r\n}\r\n","import { JSX } from 'jsx-dom'\r\n\r\nexport type InputBoxProps = {\r\n label: string\r\n id?: string\r\n name: string\r\n value?: string\r\n disabled?: boolean\r\n labelProps?: JSX.IntrinsicElements['label']\r\n inputProps?: JSX.IntrinsicElements['input']\r\n} & JSX.IntrinsicElements['div']\r\n\r\nexport const InputBox = (props: InputBoxProps) => {\r\n const { label, id, name, value, disabled, labelProps, inputProps, ...rest } = props\r\n return (\r\n <div className=\"theme-ipe ipe-input-box\" {...rest}>\r\n <label htmlFor={id} style={{ display: 'block' }} {...labelProps}>\r\n {label}\r\n </label>\r\n <input\r\n id={id}\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n style={{ width: '100%' }}\r\n {...inputProps}\r\n />\r\n </div>\r\n )\r\n}\r\n","import { JSX, ReactNode } from 'jsx-dom'\r\n\r\nexport type RadioBoxProps = {\r\n id?: string\r\n name: string\r\n value: string\r\n label?: string | HTMLElement\r\n inputProps?: JSX.IntrinsicElements['input']\r\n labelProps?: JSX.IntrinsicElements['span']\r\n} & JSX.IntrinsicElements['label']\r\n\r\nexport const RadioBox = (props: RadioBoxProps) => {\r\n const { id, name, value, label, inputProps, labelProps, children, ...rest } = props\r\n return (\r\n <label className=\"theme-ipe ipe-radio-box\" {...rest}>\r\n <input type=\"radio\" id={id} name={name} value={value} {...inputProps} />\r\n <span className=\"ipe-checkbox-box\"></span>\r\n <span {...labelProps}>{label || children}</span>\r\n </label>\r\n )\r\n}\r\n","import { JSX, ReactNode } from 'jsx-dom'\r\n\r\nexport type CheckBoxProps = {\r\n id?: string\r\n name: string\r\n label?: string | HTMLElement\r\n checked?: boolean\r\n inputProps?: JSX.IntrinsicElements['input']\r\n labelProps?: JSX.IntrinsicElements['span']\r\n} & JSX.IntrinsicElements['label']\r\n\r\nexport const CheckBox = (props: CheckBoxProps) => {\r\n const { id, name, label, checked, inputProps, labelProps, children, ...rest } = props\r\n return (\r\n <label className=\"theme-ipe ipe-checkbox\" {...rest}>\r\n <input type=\"checkbox\" id={id} name={name} checked={checked} {...inputProps} />\r\n <span className=\"ipe-checkbox-box\"></span>\r\n <span {...labelProps}>{label || children}</span>\r\n </label>\r\n )\r\n}\r\n","export const noop = () => {}\r\n","export const sleep = (ms: number = 0) =>\r\n new Promise((resolve) => setTimeout(resolve, ms))\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { WikiPage } from '@/models/WikiPage'\r\nimport { WatchlistAction } from '@/models/WikiPage/types/WatchlistAction'\r\nimport { PluginQuickEditInArticleLinks } from './PluginQuickEditInArticleLinks'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickEdit: PluginQuickEdit['quickEdit']\r\n }\r\n interface Events {\r\n 'quickEdit/initOptions'(payload: Omit<QuickEditInitPayload, 'modal' | 'wikiPage'>): void\r\n 'quickEdit/showModal'(payload: Omit<QuickEditInitPayload, 'wikiPage'>): void\r\n 'quickEdit/wikiPage'(payload: QuickEditInitPayload): void\r\n }\r\n}\r\n\r\nexport interface QuickEditOptions {\r\n title: string\r\n pageId: number\r\n revision: number\r\n /**\r\n * - `undefined` for full article edit\r\n * - `0` for the first section\r\n * - `\"new\"` for a new section\r\n */\r\n section: number | 'new' | undefined\r\n editMinor: boolean\r\n editSummary: string\r\n createOnly: boolean\r\n reloadAfterSave: boolean\r\n}\r\n\r\nexport interface QuickEditInitPayload {\r\n ctx: InPageEdit\r\n options: QuickEditOptions\r\n modal: SsiModal\r\n wikiPage: WikiPage\r\n}\r\n\r\nexport interface QuickEditSubmitPayload {\r\n text?: string\r\n summary?: string\r\n minor?: boolean\r\n createonly?: boolean\r\n watchlist?: WatchlistAction\r\n}\r\n\r\n@Inject(['api', 'wikiPage', 'modal', 'preferences'])\r\n@RegisterPreferences(\r\n Schema.object({\r\n editSummary: Schema.string()\r\n .description('Default edit summary for quick edits')\r\n .default('[IPE-NEXT] Quick edit'),\r\n editMinor: Schema.boolean().description('Whether to mark the edit as minor').default(false),\r\n outSideClose: Schema.boolean().description('Whether to close the modal outside').default(true),\r\n watchList: Schema.union([\r\n Schema.const(WatchlistAction.preferences).description('Follow my preferences'),\r\n Schema.const(WatchlistAction.nochange).description('Keep the current watchlist status'),\r\n Schema.const(WatchlistAction.watch).description('Add the page to watchlist'),\r\n Schema.const(WatchlistAction.unwatch).description('Remove the page from watchlist'),\r\n ])\r\n .description('Watchlist options')\r\n .default(WatchlistAction.preferences),\r\n })\r\n .description('Quick edit options')\r\n .extra('category', 'edit'),\r\n {\r\n editSummary: '[IPE-NEXT] Quick edit',\r\n editMinor: false,\r\n outSideClose: true,\r\n watchList: WatchlistAction.preferences,\r\n }\r\n)\r\nexport class PluginQuickEdit extends BasePlugin {\r\n private readonly DEFAULT_OPTIONS: QuickEditOptions = {\r\n title: '',\r\n pageId: 0,\r\n revision: 0,\r\n section: undefined,\r\n editMinor: false,\r\n editSummary: '',\r\n createOnly: false,\r\n reloadAfterSave: true,\r\n }\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-edit')\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.root.set('quickEdit', this.quickEdit.bind(this))\r\n this.ctx.inject(['toolbox'], (ctx) => {\r\n this.injectToolbox(ctx)\r\n ctx.on('dispose', () => {\r\n this.removeToolbox(ctx)\r\n })\r\n })\r\n\r\n this.ctx.plugin(PluginQuickEditInArticleLinks)\r\n }\r\n\r\n async quickEdit(payload?: string | Partial<QuickEditOptions>) {\r\n if (typeof payload === 'undefined') {\r\n payload = {}\r\n } else if (typeof payload === 'string') {\r\n payload = {\r\n title: payload,\r\n } as Partial<QuickEditOptions>\r\n }\r\n\r\n // @ts-expect-error legacy `page` option\r\n if (payload?.page) {\r\n // @ts-expect-error\r\n payload.title = payload.page\r\n // @ts-expect-error\r\n delete payload.page\r\n }\r\n\r\n if (!payload.title && !payload.pageId && !payload.revision) {\r\n this.logger.warn('None of the title, pageId or revision provided. Using defaults.')\r\n payload = {\r\n ...payload,\r\n title: mw.config.get('wgPageName'),\r\n pageId: mw.config.get('wgArticleId'),\r\n revision: mw.config.get('wgRevisionId'),\r\n }\r\n }\r\n\r\n const outSideClose = (await this.ctx.preferences.get<boolean>('outSideClose'))!\r\n const watchList = (await this.ctx.preferences.get<WatchlistAction>('watchList'))!\r\n const editSummary =\r\n typeof payload.editSummary === 'string'\r\n ? payload.editSummary\r\n : (await this.ctx.preferences.get<string>('editSummary'))!\r\n const editMinor =\r\n typeof payload.editMinor === 'boolean'\r\n ? payload.editMinor\r\n : (await this.ctx.preferences.get<boolean>('editMinor'))!\r\n\r\n const options: QuickEditOptions = {\r\n ...this.DEFAULT_OPTIONS,\r\n editSummary,\r\n editMinor,\r\n ...payload,\r\n }\r\n if (!options.editSummary) {\r\n options.editSummary = (await this.ctx.preferences.get<string>('editSummary')) || ''\r\n }\r\n if (!options) this.ctx.emit('quickEdit/initOptions', { ctx: this.ctx, options })\r\n\r\n const modal = this.ctx.modal\r\n .createObject({\r\n className: 'in-page-edit ipe-quickEdit ipe-editor',\r\n sizeClass: 'large',\r\n outSideClose,\r\n })\r\n .init()\r\n modal.setTitle(\r\n (\r\n <>\r\n Loading: <u>{options.title}</u>\r\n </>\r\n ) as HTMLElement\r\n )\r\n modal.setContent(\r\n (\r\n <section\r\n className=\"ipe-quickEdit-loading\"\r\n style={{\r\n height: '70vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <ProgressBar />\r\n </section>\r\n ) as HTMLElement\r\n )\r\n modal.setButtons([\r\n {\r\n side: 'right',\r\n type: 'button',\r\n className: 'btn btn-danger btn-secondary',\r\n label: 'Cancel',\r\n method() {\r\n modal.close()\r\n },\r\n },\r\n ])\r\n modal.show()\r\n this.ctx.emit('quickEdit/showModal', { ctx: this.ctx, modal, options })\r\n\r\n let wikiPage: WikiPage\r\n try {\r\n wikiPage = await this.getWikiPageFromPayload(options)\r\n } catch (e) {\r\n modal.close()\r\n this.ctx.modal.notify('error', {\r\n title: 'Error',\r\n content: e instanceof Error ? e.message : String(e),\r\n })\r\n return\r\n }\r\n modal.setTitle(\r\n (\r\n <>\r\n Quick {wikiPage.pageInfo.pageid === 0 ? 'Create' : 'Edit'}:{' '}\r\n <u>{wikiPage.pageInfo.title}</u>\r\n </>\r\n ) as HTMLElement\r\n )\r\n const editForm = (\r\n <form className=\"ipe-quickEdit-form\">\r\n {/* 页面不存在 */}\r\n {wikiPage.pageInfo.pageid === 0 && (\r\n <MBox title=\"Attention\" type=\"important\">\r\n <p>This page does not exist.</p>\r\n </MBox>\r\n )}\r\n <textarea className=\"editArea\" name=\"text\" id=\"wpTextbox1\">\r\n {wikiPage.revisions[0]?.content || ''}\r\n </textarea>\r\n <div\r\n class=\"ipe-quickEdit-options\"\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem',\r\n }}\r\n >\r\n <InputBox label=\"Summary\" id=\"summary\" name=\"summary\" value={options.editSummary} />\r\n <div>\r\n <label htmlFor=\"watchlist\" style={{ display: 'block' }}>\r\n Watchlist\r\n </label>\r\n <div style={{ display: 'flex', gap: '1rem' }}>\r\n {[\r\n WatchlistAction.preferences,\r\n WatchlistAction.nochange,\r\n WatchlistAction.watch,\r\n WatchlistAction.unwatch,\r\n ].map((action) => (\r\n <RadioBox\r\n key={action}\r\n name=\"watchlist\"\r\n value={action}\r\n inputProps={{ checked: watchList === action }}\r\n >\r\n {action}\r\n </RadioBox>\r\n ))}\r\n </div>\r\n </div>\r\n <div style={{ display: 'flex', gap: '1rem' }}>\r\n <CheckBox name=\"minor\" id=\"minor\" checked={options.editMinor}>\r\n Minor edit\r\n </CheckBox>\r\n <CheckBox name=\"reloadAfterSave\" id=\"reloadAfterSave\" checked={options.reloadAfterSave}>\r\n Reload after save\r\n </CheckBox>\r\n </div>\r\n </div>\r\n {/* Debug Info */}\r\n {import.meta.env.DEV && (\r\n <div className=\"debug\" style={{ marginTop: '1rem' }}>\r\n <details>\r\n <pre>{JSON.stringify(wikiPage.pageInfo, null, 2)}</pre>\r\n </details>\r\n </div>\r\n )}\r\n </form>\r\n ) as HTMLFormElement\r\n modal.setContent(editForm)\r\n const submitButton = modal.generateButton({\r\n side: 'left',\r\n className: 'btn btn-primary submit-btn',\r\n label: 'Submit',\r\n method: () => {\r\n const formData = new FormData(editForm)\r\n console.info(wikiPage, editForm, {\r\n text: formData.get('text') as string,\r\n summary: formData.get('summary') as string,\r\n minor: formData.get('minor') === 'on',\r\n })\r\n modal.setLoadingState(true)\r\n this.handleSubmit(\r\n { ctx: this.ctx, modal, wikiPage, options },\r\n {\r\n text: formData.get('text') as string,\r\n summary: formData.get('summary') as string,\r\n minor: formData.get('minor') === 'on',\r\n }\r\n )\r\n .then(async () => {\r\n modal.setOptions({\r\n beforeClose: noop,\r\n })\r\n modal.close()\r\n this.ctx.modal.notify('success', {\r\n title: 'Submission Successful',\r\n content: 'Your changes have been saved.',\r\n })\r\n if (formData.get('reloadAfterSave')) {\r\n await sleep(500)\r\n location.reload()\r\n }\r\n })\r\n .catch((error) => {\r\n this.ctx.modal.notify('error', {\r\n title: 'Submission Error',\r\n content: error instanceof Error ? error.message : String(error),\r\n })\r\n modal.setLoadingState(false)\r\n })\r\n },\r\n })\r\n // shamefully fix: make sure the submit button is always the first\r\n modal.get$buttons('leftButtons').prepend(submitButton)\r\n modal.setOptions({\r\n beforeClose: () => {\r\n const oldStr = wikiPage.revisions[0]?.content || ''\r\n const newStr = editForm.querySelector('textarea')?.value || ''\r\n if (newStr === oldStr) {\r\n return true\r\n } else {\r\n this.ctx.modal.confirm(\r\n {\r\n className: 'in-page-edit',\r\n title: 'Unsaved Changes',\r\n content:\r\n 'All edit contents will be lost after closing the modal. Are you sure you want to close?',\r\n center: true,\r\n okBtn: {\r\n label: 'Give Up',\r\n className: 'btn btn-danger',\r\n },\r\n cancelBtn: {\r\n label: 'Continue',\r\n className: 'btn',\r\n },\r\n },\r\n (result) => {\r\n if (result) {\r\n modal.setOptions({\r\n beforeClose: noop,\r\n })\r\n modal.close()\r\n }\r\n return true\r\n }\r\n )\r\n return false\r\n }\r\n },\r\n })\r\n this.ctx.emit('quickEdit/wikiPage', {\r\n ctx: this.ctx,\r\n options,\r\n modal,\r\n wikiPage,\r\n })\r\n }\r\n\r\n private handleSubmit(init: QuickEditInitPayload, payload: QuickEditSubmitPayload) {\r\n const summary = payload.summary || ''\r\n const text = payload.text || ''\r\n const minor = payload.minor || false\r\n const createonly = payload.createonly || false\r\n const watchlist = payload.watchlist || WatchlistAction.nochange\r\n\r\n return init.wikiPage.edit(\r\n {\r\n summary,\r\n text,\r\n watchlist,\r\n },\r\n {\r\n minor,\r\n createonly,\r\n }\r\n )\r\n }\r\n\r\n private injectToolbox(ctx: InPageEdit) {\r\n ctx.toolbox.addButton({\r\n id: 'quick-edit',\r\n group: 'group1',\r\n index: 0,\r\n icon: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-edit\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1\" />\r\n <path d=\"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z\" />\r\n <path d=\"M16 5l3 3\" />\r\n </svg>\r\n ) as HTMLElement,\r\n tooltip: 'Edit this page quickly',\r\n onClick: () => this.quickEdit(),\r\n })\r\n }\r\n\r\n private async getWikiPageFromPayload(payload: Partial<QuickEditOptions>) {\r\n if (payload.revision) {\r\n return this.ctx.wikiPage.newFromRevision(payload.revision, payload.section)\r\n } else if (payload.pageId) {\r\n return this.ctx.wikiPage.newFromPageId(payload.pageId, payload.section)\r\n } else if (payload.title) {\r\n return this.ctx.wikiPage.newFromTitle(payload.title, false, payload.section)\r\n }\r\n throw new Error('Invalid payload')\r\n }\r\n\r\n protected removeToolbox(ctx: InPageEdit) {\r\n ctx.toolbox.removeButton('quick-edit')\r\n }\r\n}\r\n","import { JSX } from 'jsx-dom/jsx-runtime'\r\nimport styles from './styles.module.sass'\r\n\r\nexport type TwinSwapInputProps = {\r\n inputs: [TwinSwapInputInput, TwinSwapInputInput]\r\n enableSwap?: boolean\r\n} & JSX.IntrinsicElements['div']\r\n\r\nexport interface TwinSwapInputInput {\r\n label?: string\r\n id?: string\r\n name: string\r\n value?: string\r\n disabled?: boolean\r\n inputProps?: Omit<JSX.IntrinsicElements['input'], 'name' | 'value'>\r\n}\r\n\r\nexport type TwinSwapElement = HTMLDivElement & {\r\n swap: () => void\r\n toggleEnableSwap: (enable?: boolean) => void\r\n}\r\n\r\nexport const TwinSwapInput = (props: TwinSwapInputProps) => {\r\n const { inputs, enableSwap = true, ...rest } = props\r\n\r\n const normalizedInputs =\r\n inputs?.length === 2\r\n ? inputs\r\n : ([inputs?.[0] ?? {}, inputs?.[1] ?? {}] as [TwinSwapInputInput, TwinSwapInputInput])\r\n\r\n // 内部稳定引用\r\n const inputRefs: [HTMLInputElement | null, HTMLInputElement | null] = [null, null]\r\n\r\n let swapCount = 0\r\n let swapBtnRef: HTMLButtonElement | null = null\r\n let svgRef: SVGElement | null = null\r\n\r\n const checkIfInputDisabled = () => inputRefs.some((el) => el && el.disabled)\r\n\r\n const swap = () => {\r\n if (!inputRefs[0] || !inputRefs[1]) return\r\n if (checkIfInputDisabled()) return\r\n\r\n const a = inputRefs[0]\r\n const b = inputRefs[1]\r\n const va = a.value\r\n const vb = b.value\r\n a.value = vb\r\n b.value = va\r\n\r\n // 与原实现一致:派发 change(不冒泡)\r\n a.dispatchEvent(new Event('change'))\r\n b.dispatchEvent(new Event('change'))\r\n\r\n swapCount++\r\n if (svgRef) {\r\n svgRef.style.transform = `rotateY(${swapCount * -180}deg)`\r\n svgRef.style.transition = 'transform 200ms ease'\r\n }\r\n }\r\n\r\n const toggleEnableSwap = (enable?: boolean) => {\r\n if (!swapBtnRef) return\r\n const next = enable ?? !swapBtnRef.disabled\r\n swapBtnRef.disabled = !next\r\n if (next) {\r\n // 与原实现一致:开启时把 inputs 解禁\r\n inputRefs.forEach((el) => {\r\n if (el) el.disabled = false\r\n })\r\n }\r\n }\r\n\r\n const swapButton = (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Swap values\"\r\n onClick={swap}\r\n disabled={checkIfInputDisabled() || !enableSwap}\r\n ref={(el) => (swapBtnRef = el as HTMLButtonElement)}\r\n >\r\n <svg\r\n ref={(el) => (svgRef = el as unknown as SVGElement)}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon-tabler icons-tabler-outline icon-tabler-transfer\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M20 10h-16l5.5 -6\" />\r\n <path d=\"M4 14h16l-5.5 6\" />\r\n </svg>\r\n </button>\r\n ) as HTMLButtonElement\r\n\r\n const container = (\r\n <div className={`twin-swap-input ${styles.twinSwapInput}`} {...rest}>\r\n {normalizedInputs.map((input, index) => {\r\n const { label, id, name, value, disabled, inputProps } = input\r\n const isLeft = index === 0\r\n const inputId = id || name\r\n\r\n return (\r\n <div\r\n className={`${styles.inputWrapper} ${isLeft ? styles.inputLeft : styles.inputRight}`}\r\n >\r\n {label && <label htmlFor={inputId}>{label}</label>}\r\n <input\r\n ref={(el) => (inputRefs[index] = el as HTMLInputElement)}\r\n type=\"text\"\r\n id={inputId}\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n {...inputProps}\r\n />\r\n </div>\r\n )\r\n })}\r\n\r\n <div className={styles.swapButton}>{swapButton}</div>\r\n </div>\r\n ) as TwinSwapElement\r\n\r\n container.swap = swap\r\n container.toggleEnableSwap = toggleEnableSwap\r\n\r\n return container\r\n}\r\n","import { Inject, InPageEdit } from '@/InPageEdit'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickMove: PluginQuickMove['quickMove']\r\n movePage: PluginQuickMove['movePage']\r\n }\r\n}\r\n\r\nexport interface MovePageOptions {\r\n from: string\r\n to: string\r\n reason?: string\r\n movetalk?: boolean\r\n movesubpages?: boolean\r\n noredirect?: boolean\r\n}\r\nexport interface QuickMoveOptions extends Partial<MovePageOptions> {\r\n lockFromField?: boolean\r\n lockToField?: boolean\r\n}\r\n\r\n@Inject(['modal', 'sitemeta'])\r\nexport class PluginQuickMove extends BasePlugin {\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-move')\r\n ctx.set('quickMove', this.quickMove.bind(this))\r\n ctx.set('movePage', this.movePage.bind(this))\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.inject(['toolbox'], (ctx) => {\r\n this.injectToolbox(ctx)\r\n })\r\n }\r\n\r\n private injectToolbox(ctx: InPageEdit) {\r\n const curPageName = window.mw?.config.get('wgPageName') || ''\r\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\r\n ctx.toolbox.addButton({\r\n id: 'quick-move',\r\n icon: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-forms\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3\" />\r\n <path d=\"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3\" />\r\n <path d=\"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7\" />\r\n <path d=\"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1\" />\r\n <path d=\"M17 12h.01\" />\r\n <path d=\"M13 12h.01\" />\r\n </svg>\r\n ),\r\n tooltip: 'Quick Move',\r\n group: 'group2',\r\n onClick: () => {\r\n this.quickMove(\r\n canEdit\r\n ? {\r\n lockFromField: true,\r\n from: curPageName,\r\n }\r\n : {}\r\n )\r\n },\r\n })\r\n }\r\n\r\n quickMove(options?: Partial<QuickMoveOptions>) {\r\n const modal = this.ctx.modal\r\n .createObject({\r\n title: 'Quick Move',\r\n content: (<ProgressBar />) as HTMLElement,\r\n className: 'quick-move',\r\n sizeClass: 'medium',\r\n center: true,\r\n })\r\n .init()\r\n\r\n let formRef: HTMLFormElement | null = null\r\n modal.setContent(\r\n (\r\n <form\r\n ref={(el) => (formRef = el)}\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem',\r\n }}\r\n onSubmit={(e) => {\r\n e.preventDefault()\r\n const formData = new FormData(formRef!)\r\n const options = {\r\n from: formData.get('from') as string,\r\n to: formData.get('to') as string,\r\n reason: (formData.get('reason') as string) || '',\r\n movetalk: formData.get('movetalk') === 'on',\r\n movesubpages: formData.get('movesubpages') === 'on',\r\n noredirect: formData.get('noredirect') === 'on',\r\n }\r\n modal.setLoadingState(true)\r\n this.movePage(options)\r\n .then(() => {\r\n location.reload()\r\n })\r\n .catch((error) => {\r\n modal.setLoadingState(false)\r\n this.ctx.modal.notify('error', {\r\n title: 'Failed to move',\r\n content: error instanceof Error ? error.message : String(error),\r\n })\r\n })\r\n }}\r\n >\r\n <TwinSwapInput\r\n inputs={[\r\n {\r\n label: 'Move from',\r\n name: 'from',\r\n value: options?.from,\r\n },\r\n {\r\n label: 'Move to',\r\n name: 'to',\r\n value: options?.to,\r\n },\r\n ]}\r\n />\r\n <div>\r\n <CheckBox name=\"movetalk\" id=\"movetalk\" checked={options?.movetalk}>\r\n Move talk page\r\n </CheckBox>\r\n </div>\r\n <div>\r\n <CheckBox name=\"movesubpages\" id=\"movesubpages\" checked={options?.movesubpages}>\r\n Move subpage(s) (up to 100)\r\n </CheckBox>\r\n </div>\r\n {this.ctx.sitemeta.hasRight('suppressredirect') && (\r\n <div>\r\n <CheckBox name=\"noredirect\" id=\"noredirect\" checked={options?.noredirect}>\r\n Move without leaving a redirect\r\n </CheckBox>\r\n </div>\r\n )}\r\n <InputBox label=\"Reason\" id=\"reason\" name=\"reason\" value={options?.reason} />\r\n <div>\r\n <ActionButton type=\"primary\" style={{ width: '100%' }}>\r\n Move\r\n </ActionButton>\r\n </div>\r\n </form>\r\n ) as HTMLElement\r\n )\r\n\r\n return modal.show()\r\n }\r\n\r\n async movePage(options: MovePageOptions) {\r\n const { from, to, reason = '', ...rest } = options\r\n\r\n if (!from || !to) {\r\n throw new Error('From and to titles are required.')\r\n }\r\n if (from === to) {\r\n throw new Error('From and to titles cannot be the same.')\r\n }\r\n\r\n const wikiPage = await this.ctx.wikiPage.newFromTitle(from)\r\n return wikiPage.moveTo(to, reason, rest)\r\n }\r\n}\r\n","import { Inject, InPageEdit } from '@/InPageEdit'\r\nimport { type QuickEditInitPayload } from '@/plugins/quick-edit'\r\nimport { WikiPage } from '@/models/WikiPage'\r\nimport { MwApiParams } from 'wiki-saikou'\r\nimport { PageParseData } from '@/models/WikiPage/types/PageParseData'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickPreview: PluginQuickPreview['quickPreview']\r\n }\r\n interface Events {\r\n 'quickPreview/showModal'(payload: {\r\n ctx: InPageEdit\r\n text: string\r\n modal: SsiModal\r\n wikiPage: WikiPage\r\n }): void\r\n 'quickPreview/loaded'(payload: {\r\n ctx: InPageEdit\r\n modal: SsiModal\r\n wikiPage: WikiPage\r\n text: string\r\n parseData: PageParseData\r\n }): void\r\n }\r\n}\r\n\r\n@Inject(['api', 'wikiPage', 'modal'])\r\nexport class PluginQuickPreview extends BasePlugin {\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quickPreview')\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.set('quickPreview', this.quickPreview.bind(this))\r\n this.ctx.on('quickEdit/wikiPage', this.injectQuickEdit.bind(this))\r\n }\r\n\r\n protected stop(): Promise<void> | void {\r\n this.ctx.off('quickEdit/wikiPage', this.injectQuickEdit.bind(this))\r\n }\r\n\r\n private injectQuickEdit({ ctx, modal, wikiPage }: QuickEditInitPayload) {\r\n modal.setButtons([\r\n {\r\n label: 'Preview',\r\n side: 'left',\r\n className: 'btn btn-secondary',\r\n method: () => {\r\n this.quickPreview(\r\n (modal.get$content().find('textarea.editArea').val() as string) || '',\r\n undefined,\r\n wikiPage\r\n )\r\n },\r\n },\r\n ])\r\n }\r\n\r\n async quickPreview(text: string, params?: MwApiParams, wikiPage?: WikiPage) {\r\n wikiPage ||= this.ctx.wikiPage.newBlankPage({\r\n title: 'API',\r\n })\r\n\r\n const modal = this.ctx.modal\r\n .createObject({\r\n className: 'in-page-edit ipe-quickPreview',\r\n sizeClass: 'large',\r\n })\r\n .init()\r\n modal.setTitle('Preview loading...')\r\n modal.setContent(\r\n (\r\n <section>\r\n <ProgressBar />\r\n </section>\r\n ) as HTMLElement\r\n )\r\n modal.show()\r\n this.ctx.emit('quickPreview/showModal', {\r\n ctx: this.ctx,\r\n text,\r\n modal,\r\n wikiPage,\r\n })\r\n\r\n const {\r\n data: { parse },\r\n } = await wikiPage.preview(text, params)\r\n modal.setTitle(`Preview - ${parse.title}`)\r\n let outputRef: HTMLElement | null = null\r\n modal.setContent(\r\n (\r\n <section>\r\n <div\r\n ref={(el) => (outputRef = el)}\r\n className=\"mw-parser-output\"\r\n innerHTML={parse.text}\r\n ></div>\r\n </section>\r\n ) as HTMLElement\r\n )\r\n window.mw?.hook('wikipage.content').fire($(outputRef!))\r\n this.ctx.emit('quickPreview/loaded', {\r\n ctx: this.ctx,\r\n modal,\r\n wikiPage,\r\n text,\r\n parseData: parse,\r\n })\r\n }\r\n}\r\n","export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nclass CharacterDiff extends Diff {\n}\nexport const characterDiff = new CharacterDiff();\nexport function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n","export function longestCommonPrefix(str1, str2) {\n let i;\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nexport function longestCommonSuffix(str1, str2) {\n let i;\n // Unlike longestCommonPrefix, we need a special case to handle all scenarios\n // where we return the empty string since str1.slice(-0) will return the\n // entire string.\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return '';\n }\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nexport function replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nexport function replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nexport function removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, '');\n}\nexport function removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, '');\n}\nexport function maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\n// Nicked from https://stackoverflow.com/a/60422853/1709587\nfunction overlapCount(a, b) {\n // Deal with cases where the strings differ in length\n let startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n let endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n // Create a back-reference for each index\n // that should be followed in case of a mismatch.\n // We only need B to make these references:\n const map = Array(endB);\n let k = 0; // Index that lags behind j\n map[0] = 0;\n for (let j = 1; j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k]; // skip over the same character (optional optimisation)\n }\n else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n // Phase 2: use these references while iterating over A\n k = 0;\n for (let i = startA; i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\n/**\n * Returns true if the string consistently uses Windows line endings.\n */\nexport function hasOnlyWinLineEndings(string) {\n return string.includes('\\r\\n') && !string.startsWith('\\n') && !string.match(/[^\\r]\\n/);\n}\n/**\n * Returns true if the string consistently uses Unix line endings.\n */\nexport function hasOnlyUnixLineEndings(string) {\n return !string.includes('\\r\\n') && string.includes('\\n');\n}\nexport function trailingWs(string) {\n // Yes, this looks overcomplicated and dumb - why not replace the whole function with\n // return string match(/\\s*$/)[0]\n // you ask? Because:\n // 1. the trap described at https://markamery.com/blog/quadratic-time-regexes/ would mean doing\n // this would cause this function to take O(n²) time in the worst case (specifically when\n // there is a massive run of NON-TRAILING whitespace in `string`), and\n // 2. the fix proposed in the same blog post, of using a negative lookbehind, is incompatible\n // with old Safari versions that we'd like to not break if possible (see\n // https://github.com/kpdecker/jsdiff/pull/550)\n // It feels absurd to do this with an explicit loop instead of a regex, but I really can't see a\n // better way that doesn't result in broken behaviour.\n let i;\n for (i = string.length - 1; i >= 0; i--) {\n if (!string[i].match(/\\s/)) {\n break;\n }\n }\n return string.substring(i + 1);\n}\nexport function leadingWs(string) {\n // Thankfully the annoying considerations described in trailingWs don't apply here:\n const match = string.match(/^\\s*/);\n return match ? match[0] : '';\n}\n","import Diff from './base.js';\nimport { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs } from '../util/string.js';\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nconst extendedWordChars = 'a-zA-Z0-9_\\\\u{C0}-\\\\u{FF}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}';\n// Each token is one of the following:\n// - A punctuation mark plus the surrounding whitespace\n// - A word plus the surrounding whitespace\n// - Pure whitespace (but only in the special case where this the entire text\n// is just whitespace)\n//\n// We have to include surrounding whitespace in the tokens because the two\n// alternative approaches produce horribly broken results:\n// * If we just discard the whitespace, we can't fully reproduce the original\n// text from the sequence of tokens and any attempt to render the diff will\n// get the whitespace wrong.\n// * If we have separate tokens for whitespace, then in a typical text every\n// second token will be a single space character. But this often results in\n// the optimal diff between two texts being a perverse one that preserves\n// the spaces between words but deletes and reinserts actual common words.\n// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640\n// for an example.\n//\n// Keeping the surrounding whitespace of course has implications for .equals\n// and .join, not just .tokenize.\n// This regex does NOT fully implement the tokenization rules described above.\n// Instead, it gives runs of whitespace their own \"token\". The tokenize method\n// then handles stitching whitespace tokens onto adjacent word or punctuation\n// tokens.\nconst tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\\\s+|[^${extendedWordChars}]`, 'ug');\nclass WordDiff extends Diff {\n equals(left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n }\n tokenize(value, options = {}) {\n let parts;\n if (options.intlSegmenter) {\n const segmenter = options.intlSegmenter;\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n parts = Array.from(segmenter.segment(value), segment => segment.segment);\n }\n else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n const tokens = [];\n let prevPart = null;\n parts.forEach(part => {\n if ((/\\s/).test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n }\n else {\n tokens.push(tokens.pop() + part);\n }\n }\n else if (prevPart != null && (/\\s/).test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n }\n else {\n tokens.push(prevPart + part);\n }\n }\n else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n }\n join(tokens) {\n // Tokens being joined here will always have appeared consecutively in the\n // same text, so we can simply strip off the leading whitespace from all the\n // tokens except the first (and except any whitespace-only tokens - but such\n // a token will always be the first and only token anyway) and then join them\n // and the whitespace around words and punctuation will end up correct.\n return tokens.map((token, i) => {\n if (i == 0) {\n return token;\n }\n else {\n return token.replace((/^\\s+/), '');\n }\n }).join('');\n }\n postProcess(changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n let lastKeep = null;\n // Change objects representing any insertion or deletion since the last\n // \"keep\" change object. There can be at most one of each.\n let insertion = null;\n let deletion = null;\n changes.forEach(change => {\n if (change.added) {\n insertion = change;\n }\n else if (change.removed) {\n deletion = change;\n }\n else {\n if (insertion || deletion) { // May be false at start of text\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null);\n }\n return changes;\n }\n}\nexport const wordDiff = new WordDiff();\nexport function diffWords(oldStr, newStr, options) {\n // This option has never been documented and never will be (it's clearer to\n // just call `diffWordsWithSpace` directly if you need that behavior), but\n // has existed in jsdiff for a long time, so we retain support for it here\n // for the sake of backwards compatibility.\n if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {\n return diffWordsWithSpace(oldStr, newStr, options);\n }\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) {\n // Before returning, we tidy up the leading and trailing whitespace of the\n // change objects to eliminate cases where trailing whitespace in one object\n // is repeated as leading whitespace in the next.\n // Below are examples of the outcomes we want here to explain the code.\n // I=insert, K=keep, D=delete\n // 1. diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want: K:'foo ' D:'bar ' K:'baz'\n //\n // 2. Diffing 'foo bar baz' vs 'foo qux baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz'\n // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz'\n //\n // 3. Diffing 'foo\\nbar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:'\\nbar ' K:' baz'\n // After cleanup, we want K'foo' D:'\\nbar' K:' baz'\n //\n // 4. Diffing 'foo baz' vs 'foo\\nbar baz'\n // Prior to cleanup, we have K:'foo\\n' I:'\\nbar ' K:' baz'\n // After cleanup, we ideally want K'foo' I:'\\nbar' K:' baz'\n // but don't actually manage this currently (the pre-cleanup change\n // objects don't contain enough information to make it possible).\n //\n // 5. Diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want K:'foo ' D:' bar ' K:'baz'\n //\n // Our handling is unavoidably imperfect in the case where there's a single\n // indel between keeps and the whitespace has changed. For instance, consider\n // diffing 'foo\\tbar\\nbaz' vs 'foo baz'. Unless we create an extra change\n // object to represent the insertion of the space character (which isn't even\n // a token), we have no way to avoid losing information about the texts'\n // original whitespace in the result we return. Still, we do our best to\n // output something that will look sensible if we e.g. print it with\n // insertions in green and deletions in red.\n // Between two \"keep\" change objects (or before the first or after the last\n // change object), we can have either:\n // * A \"delete\" followed by an \"insert\"\n // * Just an \"insert\"\n // * Just a \"delete\"\n // We handle the three cases separately.\n if (deletion && insertion) {\n const oldWsPrefix = leadingWs(deletion.value);\n const oldWsSuffix = trailingWs(deletion.value);\n const newWsPrefix = leadingWs(insertion.value);\n const newWsSuffix = trailingWs(insertion.value);\n if (startKeep) {\n const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n }\n else if (insertion) {\n // The whitespaces all reflect what was in the new text rather than\n // the old, so we essentially have no information about whitespace\n // insertion or deletion. We just want to dedupe the whitespace.\n // We do that by having each change object keep its trailing\n // whitespace and deleting duplicate leading whitespace where\n // present.\n if (startKeep) {\n const ws = leadingWs(insertion.value);\n insertion.value = insertion.value.substring(ws.length);\n }\n if (endKeep) {\n const ws = leadingWs(endKeep.value);\n endKeep.value = endKeep.value.substring(ws.length);\n }\n // otherwise we've got a deletion and no insertion\n }\n else if (startKeep && endKeep) {\n const newWsFull = leadingWs(endKeep.value), delWsStart = leadingWs(deletion.value), delWsEnd = trailingWs(deletion.value);\n // Any whitespace that comes straight after startKeep in both the old and\n // new texts, assign to startKeep and remove from the deletion.\n const newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n // Any whitespace that comes straight before endKeep in both the old and\n // new texts, and hasn't already been assigned to startKeep, assign to\n // endKeep and remove from the deletion.\n const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n // If there's any whitespace from the new text that HASN'T already been\n // assigned, assign it to the start:\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n }\n else if (endKeep) {\n // We are at the start of the text. Preserve all the whitespace on\n // endKeep, and just remove whitespace from the end of deletion to the\n // extent that it overlaps with the start of endKeep.\n const endKeepWsPrefix = leadingWs(endKeep.value);\n const deletionWsSuffix = trailingWs(deletion.value);\n const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n }\n else if (startKeep) {\n // We are at the END of the text. Preserve all the whitespace on\n // startKeep, and just remove whitespace from the start of deletion to\n // the extent that it overlaps with the end of startKeep.\n const startKeepWsSuffix = trailingWs(startKeep.value);\n const deletionWsPrefix = leadingWs(deletion.value);\n const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, overlap);\n }\n}\nclass WordsWithSpaceDiff extends Diff {\n tokenize(value) {\n // Slightly different to the tokenizeIncludingWhitespace regex used above in\n // that this one treats each individual newline as a distinct tokens, rather\n // than merging them into other surrounding whitespace. This was requested\n // in https://github.com/kpdecker/jsdiff/issues/180 &\n // https://github.com/kpdecker/jsdiff/issues/211\n const regex = new RegExp(`(\\\\r?\\\\n)|[${extendedWordChars}]+|[^\\\\S\\\\n\\\\r]+|[^${extendedWordChars}]`, 'ug');\n return value.match(regex) || [];\n }\n}\nexport const wordsWithSpaceDiff = new WordsWithSpaceDiff();\nexport function diffWordsWithSpace(oldStr, newStr, options) {\n return wordsWithSpaceDiff.diff(oldStr, newStr, options);\n}\n","export function generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n }\n else if (options) {\n for (const name in options) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(options, name)) {\n defaults[name] = options[name];\n }\n }\n }\n return defaults;\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import Diff from './base.js';\nfunction isSentenceEndPunct(char) {\n return char == '.' || char == '!' || char == '?';\n}\nclass SentenceDiff extends Diff {\n tokenize(value) {\n var _a;\n // If in future we drop support for environments that don't support lookbehinds, we can replace\n // this entire function with:\n // return value.split(/(?<=[.!?])(\\s+|$)/);\n // but until then, for similar reasons to the trailingWs function in string.ts, we are forced\n // to do this verbosely \"by hand\" instead of using a regex.\n const result = [];\n let tokenStartI = 0;\n for (let i = 0; i < value.length; i++) {\n if (i == value.length - 1) {\n result.push(value.slice(tokenStartI));\n break;\n }\n if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\\s/)) {\n // We've hit a sentence break - i.e. a punctuation mark followed by whitespace.\n // We now want to push TWO tokens to the result:\n // 1. the sentence\n result.push(value.slice(tokenStartI, i + 1));\n // 2. the whitespace\n i = tokenStartI = i + 1;\n while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\\s/)) {\n i++;\n }\n result.push(value.slice(tokenStartI, i + 1));\n // Then the next token (a sentence) starts on the character after the whitespace.\n // (It's okay if this is off the end of the string - then the outer loop will terminate\n // here anyway.)\n tokenStartI = i + 1;\n }\n }\n return result;\n }\n}\nexport const sentenceDiff = new SentenceDiff();\nexport function diffSentences(oldStr, newStr, options) {\n return sentenceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nclass CssDiff extends Diff {\n tokenize(value) {\n return value.split(/([{}:;,]|\\s+)/);\n }\n}\nexport const cssDiff = new CssDiff();\nexport function diffCss(oldStr, newStr, options) {\n return cssDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { tokenize } from './line.js';\nclass JsonDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n get useLongestToken() {\n // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n return true;\n }\n castInput(value, options) {\n const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === 'undefined' ? undefinedReplacement : v } = options;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, ' ');\n }\n equals(left, right, options) {\n return super.equals(left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'), options);\n }\n}\nexport const jsonDiff = new JsonDiff();\nexport function diffJson(oldStr, newStr, options) {\n return jsonDiff.diff(oldStr, newStr, options);\n}\n// This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\nexport function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key === undefined ? '' : key, obj);\n }\n let i;\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n let canonicalizedObj;\n if ('[object Array]' === Object.prototype.toString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (typeof obj === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n const sortedKeys = [];\n let key;\n for (key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n sortedKeys.push(key);\n }\n }\n sortedKeys.sort();\n for (i = 0; i < sortedKeys.length; i += 1) {\n key = sortedKeys[i];\n canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);\n }\n stack.pop();\n replacementStack.pop();\n }\n else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n","import Diff from './base.js';\nclass ArrayDiff extends Diff {\n tokenize(value) {\n return value.slice();\n }\n join(value) {\n return value;\n }\n removeEmpty(value) {\n return value;\n }\n}\nexport const arrayDiff = new ArrayDiff();\nexport function diffArrays(oldArr, newArr, options) {\n return arrayDiff.diff(oldArr, newArr, options);\n}\n","export function unixToWin(patch) {\n if (Array.isArray(patch)) {\n // It would be cleaner if instead of the line below we could just write\n // return patch.map(unixToWin)\n // but mysteriously TypeScript (v5.7.3 at the time of writing) does not like this and it will\n // refuse to compile, thinking that unixToWin could then return StructuredPatch[][] and the\n // result would be incompatible with the overload signatures.\n // See bug report at https://github.com/microsoft/TypeScript/issues/61398.\n return patch.map(p => unixToWin(p));\n }\n return Object.assign(Object.assign({}, patch), { hunks: patch.hunks.map(hunk => (Object.assign(Object.assign({}, hunk), { lines: hunk.lines.map((line, i) => {\n var _a;\n return (line.startsWith('\\\\') || line.endsWith('\\r') || ((_a = hunk.lines[i + 1]) === null || _a === void 0 ? void 0 : _a.startsWith('\\\\')))\n ? line\n : line + '\\r';\n }) }))) });\n}\nexport function winToUnix(patch) {\n if (Array.isArray(patch)) {\n // (See comment above equivalent line in unixToWin)\n return patch.map(p => winToUnix(p));\n }\n return Object.assign(Object.assign({}, patch), { hunks: patch.hunks.map(hunk => (Object.assign(Object.assign({}, hunk), { lines: hunk.lines.map(line => line.endsWith('\\r') ? line.substring(0, line.length - 1) : line) }))) });\n}\n/**\n * Returns true if the patch consistently uses Unix line endings (or only involves one line and has\n * no line endings).\n */\nexport function isUnix(patch) {\n if (!Array.isArray(patch)) {\n patch = [patch];\n }\n return !patch.some(index => index.hunks.some(hunk => hunk.lines.some(line => !line.startsWith('\\\\') && line.endsWith('\\r'))));\n}\n/**\n * Returns true if the patch uses Windows line endings and only Windows line endings.\n */\nexport function isWin(patch) {\n if (!Array.isArray(patch)) {\n patch = [patch];\n }\n return patch.some(index => index.hunks.some(hunk => hunk.lines.some(line => line.endsWith('\\r'))))\n && patch.every(index => index.hunks.every(hunk => hunk.lines.every((line, i) => { var _a; return line.startsWith('\\\\') || line.endsWith('\\r') || ((_a = hunk.lines[i + 1]) === null || _a === void 0 ? void 0 : _a.startsWith('\\\\')); })));\n}\n","/**\n * Parses a patch into structured data, in the same structure returned by `structuredPatch`.\n *\n * @return a JSON object representation of the a patch, suitable for use with the `applyPatch` method.\n */\nexport function parsePatch(uniDiff) {\n const diffstr = uniDiff.split(/\\n/), list = [];\n let i = 0;\n function parseIndex() {\n const index = {};\n list.push(index);\n // Parse diff metadata\n while (i < diffstr.length) {\n const line = diffstr[i];\n // File header found, end parsing diff metadata\n if ((/^(---|\\+\\+\\+|@@)\\s/).test(line)) {\n break;\n }\n // Diff index\n const header = (/^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/).exec(line);\n if (header) {\n index.index = header[1];\n }\n i++;\n }\n // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n parseFileHeader(index);\n parseFileHeader(index);\n // Parse hunks\n index.hunks = [];\n while (i < diffstr.length) {\n const line = diffstr[i];\n if ((/^(Index:\\s|diff\\s|---\\s|\\+\\+\\+\\s|===================================================================)/).test(line)) {\n break;\n }\n else if ((/^@@/).test(line)) {\n index.hunks.push(parseHunk());\n }\n else if (line) {\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(line));\n }\n else {\n i++;\n }\n }\n }\n // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n function parseFileHeader(index) {\n const fileHeader = (/^(---|\\+\\+\\+)\\s+(.*)\\r?$/).exec(diffstr[i]);\n if (fileHeader) {\n const data = fileHeader[2].split('\\t', 2), header = (data[1] || '').trim();\n let fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n if ((/^\".*\"$/).test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n if (fileHeader[1] === '---') {\n index.oldFileName = fileName;\n index.oldHeader = header;\n }\n else {\n index.newFileName = fileName;\n index.newHeader = header;\n }\n i++;\n }\n }\n // Parses a hunk\n // This assumes that we are at the start of a hunk.\n function parseHunk() {\n var _a;\n const chunkHeaderIndex = i, chunkHeaderLine = diffstr[i++], chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n const hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: []\n };\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n let addCount = 0, removeCount = 0;\n for (; i < diffstr.length && (removeCount < hunk.oldLines || addCount < hunk.newLines || ((_a = diffstr[i]) === null || _a === void 0 ? void 0 : _a.startsWith('\\\\'))); i++) {\n const operation = (diffstr[i].length == 0 && i != (diffstr.length - 1)) ? ' ' : diffstr[i][0];\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n if (operation === '+') {\n addCount++;\n }\n else if (operation === '-') {\n removeCount++;\n }\n else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n }\n else {\n throw new Error(`Hunk at line ${chunkHeaderIndex + 1} contained invalid line ${diffstr[i]}`);\n }\n }\n // Handle the empty block count case\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n }\n // Perform sanity checking\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n return hunk;\n }\n while (i < diffstr.length) {\n parseIndex();\n }\n return list;\n}\n","// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nexport default function (start, minLine, maxLine) {\n let wantForward = true, backwardExhausted = false, forwardExhausted = false, localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n }\n else {\n wantForward = false;\n }\n // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n if (start + localOffset <= maxLine) {\n return start + localOffset;\n }\n forwardExhausted = true;\n }\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n }\n // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n if (minLine <= start - localOffset) {\n return start - localOffset++;\n }\n backwardExhausted = true;\n return iterator();\n }\n // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n return undefined;\n };\n}\n","import { hasOnlyWinLineEndings, hasOnlyUnixLineEndings } from '../util/string.js';\nimport { isWin, isUnix, unixToWin, winToUnix } from './line-endings.js';\nimport { parsePatch } from './parse.js';\nimport distanceIterator from '../util/distance-iterator.js';\n/**\n * attempts to apply a unified diff patch.\n *\n * Hunks are applied first to last.\n * `applyPatch` first tries to apply the first hunk at the line number specified in the hunk header, and with all context lines matching exactly.\n * If that fails, it tries scanning backwards and forwards, one line at a time, to find a place to apply the hunk where the context lines match exactly.\n * If that still fails, and `fuzzFactor` is greater than zero, it increments the maximum number of mismatches (missing, extra, or changed context lines) that there can be between the hunk context and a region where we are trying to apply the patch such that the hunk will still be considered to match.\n * Regardless of `fuzzFactor`, lines to be deleted in the hunk *must* be present for a hunk to match, and the context lines *immediately* before and after an insertion must match exactly.\n *\n * Once a hunk is successfully fitted, the process begins again with the next hunk.\n * Regardless of `fuzzFactor`, later hunks must be applied later in the file than earlier hunks.\n *\n * If a hunk cannot be successfully fitted *anywhere* with fewer than `fuzzFactor` mismatches, `applyPatch` fails and returns `false`.\n *\n * If a hunk is successfully fitted but not at the line number specified by the hunk header, all subsequent hunks have their target line number adjusted accordingly.\n * (e.g. if the first hunk is applied 10 lines below where the hunk header said it should fit, `applyPatch` will *start* looking for somewhere to apply the second hunk 10 lines below where its hunk header says it goes.)\n *\n * If the patch was applied successfully, returns a string containing the patched text.\n * If the patch could not be applied (because some hunks in the patch couldn't be fitted to the text in `source`), `applyPatch` returns false.\n *\n * @param patch a string diff or the output from the `parsePatch` or `structuredPatch` methods.\n */\nexport function applyPatch(source, patch, options = {}) {\n let patches;\n if (typeof patch === 'string') {\n patches = parsePatch(patch);\n }\n else if (Array.isArray(patch)) {\n patches = patch;\n }\n else {\n patches = [patch];\n }\n if (patches.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n return applyStructuredPatch(source, patches[0], options);\n}\nfunction applyStructuredPatch(source, patch, options = {}) {\n if (options.autoConvertLineEndings || options.autoConvertLineEndings == null) {\n if (hasOnlyWinLineEndings(source) && isUnix(patch)) {\n patch = unixToWin(patch);\n }\n else if (hasOnlyUnixLineEndings(source) && isWin(patch)) {\n patch = winToUnix(patch);\n }\n }\n // Apply the diff to the input\n const lines = source.split('\\n'), hunks = patch.hunks, compareLine = options.compareLine || ((lineNumber, line, operation, patchContent) => line === patchContent), fuzzFactor = options.fuzzFactor || 0;\n let minLine = 0;\n if (fuzzFactor < 0 || !Number.isInteger(fuzzFactor)) {\n throw new Error('fuzzFactor must be a non-negative integer');\n }\n // Special case for empty patch.\n if (!hunks.length) {\n return source;\n }\n // Before anything else, handle EOFNL insertion/removal. If the patch tells us to make a change\n // to the EOFNL that is redundant/impossible - i.e. to remove a newline that's not there, or add a\n // newline that already exists - then we either return false and fail to apply the patch (if\n // fuzzFactor is 0) or simply ignore the problem and do nothing (if fuzzFactor is >0).\n // If we do need to remove/add a newline at EOF, this will always be in the final hunk:\n let prevLine = '', removeEOFNL = false, addEOFNL = false;\n for (let i = 0; i < hunks[hunks.length - 1].lines.length; i++) {\n const line = hunks[hunks.length - 1].lines[i];\n if (line[0] == '\\\\') {\n if (prevLine[0] == '+') {\n removeEOFNL = true;\n }\n else if (prevLine[0] == '-') {\n addEOFNL = true;\n }\n }\n prevLine = line;\n }\n if (removeEOFNL) {\n if (addEOFNL) {\n // This means the final line gets changed but doesn't have a trailing newline in either the\n // original or patched version. In that case, we do nothing if fuzzFactor > 0, and if\n // fuzzFactor is 0, we simply validate that the source file has no trailing newline.\n if (!fuzzFactor && lines[lines.length - 1] == '') {\n return false;\n }\n }\n else if (lines[lines.length - 1] == '') {\n lines.pop();\n }\n else if (!fuzzFactor) {\n return false;\n }\n }\n else if (addEOFNL) {\n if (lines[lines.length - 1] != '') {\n lines.push('');\n }\n else if (!fuzzFactor) {\n return false;\n }\n }\n /**\n * Checks if the hunk can be made to fit at the provided location with at most `maxErrors`\n * insertions, substitutions, or deletions, while ensuring also that:\n * - lines deleted in the hunk match exactly, and\n * - wherever an insertion operation or block of insertion operations appears in the hunk, the\n * immediately preceding and following lines of context match exactly\n *\n * `toPos` should be set such that lines[toPos] is meant to match hunkLines[0].\n *\n * If the hunk can be applied, returns an object with properties `oldLineLastI` and\n * `replacementLines`. Otherwise, returns null.\n */\n function applyHunk(hunkLines, toPos, maxErrors, hunkLinesI = 0, lastContextLineMatched = true, patchedLines = [], patchedLinesLength = 0) {\n let nConsecutiveOldContextLines = 0;\n let nextContextLineMustMatch = false;\n for (; hunkLinesI < hunkLines.length; hunkLinesI++) {\n const hunkLine = hunkLines[hunkLinesI], operation = (hunkLine.length > 0 ? hunkLine[0] : ' '), content = (hunkLine.length > 0 ? hunkLine.substr(1) : hunkLine);\n if (operation === '-') {\n if (compareLine(toPos + 1, lines[toPos], operation, content)) {\n toPos++;\n nConsecutiveOldContextLines = 0;\n }\n else {\n if (!maxErrors || lines[toPos] == null) {\n return null;\n }\n patchedLines[patchedLinesLength] = lines[toPos];\n return applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1);\n }\n }\n if (operation === '+') {\n if (!lastContextLineMatched) {\n return null;\n }\n patchedLines[patchedLinesLength] = content;\n patchedLinesLength++;\n nConsecutiveOldContextLines = 0;\n nextContextLineMustMatch = true;\n }\n if (operation === ' ') {\n nConsecutiveOldContextLines++;\n patchedLines[patchedLinesLength] = lines[toPos];\n if (compareLine(toPos + 1, lines[toPos], operation, content)) {\n patchedLinesLength++;\n lastContextLineMatched = true;\n nextContextLineMustMatch = false;\n toPos++;\n }\n else {\n if (nextContextLineMustMatch || !maxErrors) {\n return null;\n }\n // Consider 3 possibilities in sequence:\n // 1. lines contains a *substitution* not included in the patch context, or\n // 2. lines contains an *insertion* not included in the patch context, or\n // 3. lines contains a *deletion* not included in the patch context\n // The first two options are of course only possible if the line from lines is non-null -\n // i.e. only option 3 is possible if we've overrun the end of the old file.\n return (lines[toPos] && (applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength + 1) || applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1)) || applyHunk(hunkLines, toPos, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength));\n }\n }\n }\n // Before returning, trim any unmodified context lines off the end of patchedLines and reduce\n // toPos (and thus oldLineLastI) accordingly. This allows later hunks to be applied to a region\n // that starts in this hunk's trailing context.\n patchedLinesLength -= nConsecutiveOldContextLines;\n toPos -= nConsecutiveOldContextLines;\n patchedLines.length = patchedLinesLength;\n return {\n patchedLines,\n oldLineLastI: toPos - 1\n };\n }\n const resultLines = [];\n // Search best fit offsets for each hunk based on the previous ones\n let prevHunkOffset = 0;\n for (let i = 0; i < hunks.length; i++) {\n const hunk = hunks[i];\n let hunkResult;\n const maxLine = lines.length - hunk.oldLines + fuzzFactor;\n let toPos;\n for (let maxErrors = 0; maxErrors <= fuzzFactor; maxErrors++) {\n toPos = hunk.oldStart + prevHunkOffset - 1;\n const iterator = distanceIterator(toPos, minLine, maxLine);\n for (; toPos !== undefined; toPos = iterator()) {\n hunkResult = applyHunk(hunk.lines, toPos, maxErrors);\n if (hunkResult) {\n break;\n }\n }\n if (hunkResult) {\n break;\n }\n }\n if (!hunkResult) {\n return false;\n }\n // Copy everything from the end of where we applied the last hunk to the start of this hunk\n for (let i = minLine; i < toPos; i++) {\n resultLines.push(lines[i]);\n }\n // Add the lines produced by applying the hunk:\n for (let i = 0; i < hunkResult.patchedLines.length; i++) {\n const line = hunkResult.patchedLines[i];\n resultLines.push(line);\n }\n // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n minLine = hunkResult.oldLineLastI + 1;\n // Note the offset between where the patch said the hunk should've applied and where we\n // applied it, so we can adjust future hunks accordingly:\n prevHunkOffset = toPos + 1 - hunk.oldStart;\n }\n // Copy over the rest of the lines from the old text\n for (let i = minLine; i < lines.length; i++) {\n resultLines.push(lines[i]);\n }\n return resultLines.join('\\n');\n}\n/**\n * applies one or more patches.\n *\n * `patch` may be either an array of structured patch objects, or a string representing a patch in unified diff format (which may patch one or more files).\n *\n * This method will iterate over the contents of the patch and apply to data provided through callbacks. The general flow for each patch index is:\n *\n * - `options.loadFile(index, callback)` is called. The caller should then load the contents of the file and then pass that to the `callback(err, data)` callback. Passing an `err` will terminate further patch execution.\n * - `options.patched(index, content, callback)` is called once the patch has been applied. `content` will be the return value from `applyPatch`. When it's ready, the caller should call `callback(err)` callback. Passing an `err` will terminate further patch execution.\n *\n * Once all patches have been applied or an error occurs, the `options.complete(err)` callback is made.\n */\nexport function applyPatches(uniDiff, options) {\n const spDiff = typeof uniDiff === 'string' ? parsePatch(uniDiff) : uniDiff;\n let currentIndex = 0;\n function processIndex() {\n const index = spDiff[currentIndex++];\n if (!index) {\n return options.complete();\n }\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n const updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n processIndex();\n });\n });\n }\n processIndex();\n}\n","export function reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n // (See comment in unixToWin for why we need the pointless-looking anonymous function here)\n return structuredPatch.map(patch => reversePatch(patch)).reverse();\n }\n return Object.assign(Object.assign({}, structuredPatch), { oldFileName: structuredPatch.newFileName, oldHeader: structuredPatch.newHeader, newFileName: structuredPatch.oldFileName, newHeader: structuredPatch.oldHeader, hunks: structuredPatch.hunks.map(hunk => {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n lines: hunk.lines.map(l => {\n if (l.startsWith('-')) {\n return `+${l.slice(1)}`;\n }\n if (l.startsWith('+')) {\n return `-${l.slice(1)}`;\n }\n return l;\n })\n };\n }) });\n}\n","import { diffLines } from '../diff/line.js';\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an array of them (as returned by `parsePatch`)\n */\nexport function formatPatch(patch) {\n if (Array.isArray(patch)) {\n return patch.map(formatPatch).join('\\n');\n }\n const ret = [];\n if (patch.oldFileName == patch.newFileName) {\n ret.push('Index: ' + patch.oldFileName);\n }\n ret.push('===================================================================');\n ret.push('--- ' + patch.oldFileName + (typeof patch.oldHeader === 'undefined' ? '' : '\\t' + patch.oldHeader));\n ret.push('+++ ' + patch.newFileName + (typeof patch.newHeader === 'undefined' ? '' : '\\t' + patch.newHeader));\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines\n + ' +' + hunk.newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","/**\n * converts a list of change objects to the format returned by Google's [diff-match-patch](https://github.com/google/diff-match-patch) library\n */\nexport function convertChangesToDMP(changes) {\n const ret = [];\n let change, operation;\n for (let i = 0; i < changes.length; i++) {\n change = changes[i];\n if (change.added) {\n operation = 1;\n }\n else if (change.removed) {\n operation = -1;\n }\n else {\n operation = 0;\n }\n ret.push([operation, change.value]);\n }\n return ret;\n}\n","/**\n * converts a list of change objects to a serialized XML format\n */\nexport function convertChangesToXML(changes) {\n const ret = [];\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n if (change.added) {\n ret.push('<ins>');\n }\n else if (change.removed) {\n ret.push('<del>');\n }\n ret.push(escapeHTML(change.value));\n if (change.added) {\n ret.push('</ins>');\n }\n else if (change.removed) {\n ret.push('</del>');\n }\n }\n return ret.join('');\n}\nfunction escapeHTML(s) {\n let n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(/</g, '<');\n n = n.replace(/>/g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n","/**\r\n * Provides the JsDiff library to InPageEdit.\r\n *\r\n * @see https://github.com/kpdecker/jsdiff\r\n */\r\n\r\nimport { InPageEdit } from '@/InPageEdit'\r\nimport * as JsDiff from 'diff'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n jsdiff: JsDiffService\r\n }\r\n}\r\n\r\nexport type JsDiffDiffType =\r\n | 'diffChars'\r\n | 'diffWords'\r\n | 'diffWordsWithSpace'\r\n | 'diffLines'\r\n | 'diffTrimmedLines'\r\n | 'diffSentences'\r\n | 'diffCss'\r\n | 'diffJson'\r\n | 'diffArrays'\r\n | 'createTwoFilesPatch'\r\n\r\nexport class JsDiffService {\r\n constructor(public ctx: InPageEdit) {\r\n this.ctx.set('jsdiff', this)\r\n }\r\n JsDiff = JsDiff\r\n diffChars = JsDiff.diffChars\r\n diffWords = JsDiff.diffWords\r\n diffWordsWithSpace = JsDiff.diffWordsWithSpace\r\n diffLines = JsDiff.diffLines\r\n diffTrimmedLines = JsDiff.diffTrimmedLines\r\n diffSentences = JsDiff.diffSentences\r\n diffCss = JsDiff.diffCss\r\n diffJson = JsDiff.diffJson\r\n diffArrays = JsDiff.diffArrays\r\n createTwoFilesPatch = JsDiff.createTwoFilesPatch\r\n}\r\n","export const MwUserLinks = (props: { user: string; target?: string }) => {\r\n let { user, target } = props\r\n const articlePath = window.mw?.config?.get('wgArticlePath') || '/$1'\r\n const getUrl = (title: string) => {\r\n return articlePath.replace('$1', title)\r\n }\r\n return (\r\n <span className=\"mw-userlinks\">\r\n <a href={getUrl(`User:${user}`)} className=\"mw-userlink\" target={target}>\r\n {user}\r\n </a>{' '}\r\n <span className=\"mw-usertoollinks\">\r\n (\r\n <a href={getUrl(`User_talk:${user}`)} className=\"mw-usertoollinks-talk\" target={target}>\r\n talk\r\n </a>\r\n {' | '}\r\n <a\r\n href={getUrl(`Special:Contributions/${user}`)}\r\n className=\"mw-usertoollinks-contribs\"\r\n target={target}\r\n >\r\n contribs\r\n </a>\r\n {' | '}\r\n <a\r\n href={getUrl(`Special:Block/${user}`)}\r\n className=\"mw-usertoollinks-block\"\r\n target={target}\r\n >\r\n block\r\n </a>\r\n )\r\n </span>\r\n </span>\r\n )\r\n}\r\n","import { JSX } from 'jsx-dom/jsx-runtime'\r\nimport { CompareApiResponse } from '../PluginQuickDiffCore'\r\n\r\nexport type DiffTableProps = {\r\n data: Partial<CompareApiResponse['compare']>\r\n} & JSX.IntrinsicElements['table']\r\n\r\nconst formatDate = new Intl.DateTimeFormat(undefined, {\r\n dateStyle: 'medium',\r\n timeStyle: 'medium',\r\n}).format\r\n\r\nconst DiffTableHeader = (props: {\r\n type?: 'from' | 'to'\r\n pageid?: number\r\n pagetitle?: string\r\n revid?: number\r\n size?: number\r\n timestamp?: string\r\n username?: string\r\n userid?: number\r\n comment?: string\r\n parsedcomment?: string\r\n}) => {\r\n let classList = ['diff-title']\r\n if (props.type === 'from') {\r\n classList.push('diff-otitle')\r\n } else if (props.type === 'to') {\r\n classList.push('diff-ntitle')\r\n }\r\n if (!props.pageid || !props.userid) {\r\n return (\r\n <td colSpan={2} className={classList}>\r\n <div className=\"mw-diff-title--title\">\r\n {props.type === 'from' ? 'Original content' : props.type === 'to' ? 'Your content' : ''}\r\n </div>\r\n </td>\r\n )\r\n }\r\n return (\r\n <td colSpan={2} className={classList}>\r\n <div className=\"mw-diff-title--title\">{props.pagetitle || props.timestamp}</div>\r\n <div className=\"mw-diff-title--user\">\r\n {props.username && <MwUserLinks user={props.username} target=\"_blank\" />}\r\n </div>\r\n <div className=\"mw-diff-title--timestamp\">\r\n {props.timestamp && formatDate(new Date(props.timestamp))}\r\n </div>\r\n <div className=\"mw-diff-title--comment\">\r\n {props.parsedcomment && (\r\n <>\r\n (<i innerHTML={props.parsedcomment}></i>)\r\n </>\r\n )}\r\n </div>\r\n <div className=\"mw-diff-title--navigation\"></div>\r\n </td>\r\n )\r\n}\r\n\r\nexport const DiffTable = (props: DiffTableProps) => {\r\n const { data, ...rest } = props\r\n const table = (\r\n <table className={`theme-ipe diff diff-type-table`} data-mw=\"interface\" {...rest}>\r\n <colgroup>\r\n <col className=\"diff-marker\" />\r\n <col className=\"diff-content\" />\r\n <col className=\"diff-marker\" />\r\n <col className=\"diff-content\" />\r\n </colgroup>\r\n <tbody>\r\n <tr>\r\n <DiffTableHeader\r\n type=\"from\"\r\n pageid={data.fromid}\r\n pagetitle={data.fromtitle}\r\n revid={data.fromrevid}\r\n size={data.fromsize}\r\n timestamp={data.fromtimestamp}\r\n username={data.fromuser}\r\n userid={data.fromuserid}\r\n comment={data.fromcomment}\r\n parsedcomment={data.fromparsedcomment}\r\n />\r\n <DiffTableHeader\r\n type=\"to\"\r\n pageid={data.toid}\r\n pagetitle={data.totitle}\r\n revid={data.torevid}\r\n size={data.tosize}\r\n timestamp={data.totimestamp}\r\n username={data.touser}\r\n userid={data.touserid}\r\n comment={data.tocomment}\r\n parsedcomment={data.toparsedcomment}\r\n />\r\n </tr>\r\n <div id=\"diffbody\"></div>\r\n <tr className=\"diff-size\" style={{ textAlign: 'center' }}>\r\n <td colSpan={2} className=\"diff-size-old\">\r\n {data.fromsize !== undefined && `${data.fromsize} bytes`}\r\n </td>\r\n <td colSpan={2} className=\"diff-size-new\">\r\n {data.tosize !== undefined && `${data.tosize} bytes`}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n table.querySelector('#diffbody')!.outerHTML =\r\n data.body ||\r\n (\r\n <tr>\r\n <td colSpan={4}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '5rem',\r\n }}\r\n >\r\n <i>No changes</i>\r\n </div>\r\n </td>\r\n </tr>\r\n ).outerHTML\r\n return table\r\n}\r\n","import { CSSProperties, ReactElement } from 'jsx-dom'\r\n\r\nexport const qs = <T extends Element>(\r\n selector: string,\r\n parent: HTMLElement | Document = document\r\n) => {\r\n return parent.querySelector(selector) as T | null\r\n}\r\nexport const qsa = <T extends Element>(\r\n selector: string,\r\n parent: HTMLElement | Document = document\r\n) => {\r\n return parent.querySelectorAll(selector) as NodeListOf<T>\r\n}\r\n\r\nexport const setStyles = (el: HTMLElement | ReactElement, style: CSSProperties) => {\r\n Object.entries(style).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === null) {\r\n el.style.removeProperty(key)\r\n } else {\r\n const isImportant = typeof value === 'string' && value.endsWith('!important')\r\n // @ts-ignore\r\n el.style.setProperty(\r\n key,\r\n value.replace('!important', '').trim(),\r\n isImportant ? 'important' : undefined\r\n )\r\n }\r\n })\r\n return el\r\n}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { type QuickEditInitPayload } from '@/plugins/quick-edit'\r\nimport { JsDiffDiffType } from './JsDiffService'\r\n\r\nimport styles from './styles.module.sass'\r\nimport { ChangeObject } from 'diff'\r\nimport { DiffTable } from './components/DiffTable'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickDiff: PluginQuickDiffCore\r\n }\r\n}\r\n\r\nexport interface CompareApiRequestOptions {\r\n fromtitle: string\r\n fromid: number\r\n fromrev: number\r\n frompst: boolean\r\n totitle: string\r\n toid: number\r\n torev: number\r\n torelative?: 'cur' | 'prev' | 'next'\r\n topst: boolean\r\n prop: string\r\n difftype: 'table' | 'unified'\r\n // deprecated, but still works\r\n fromtext: string\r\n fromsection: string | number\r\n fromcontentmodel: string\r\n totext: string\r\n tosection: string | number\r\n tocontentmodel: string\r\n}\r\n\r\nexport interface CompareApiResponse {\r\n compare: Partial<{\r\n fromid: number\r\n fromrevid: number\r\n fromns: number\r\n fromtitle: string\r\n fromsize: number\r\n fromtimestamp: string\r\n fromuser: string\r\n fromuserid: number\r\n fromcomment: string\r\n fromparsedcomment?: string\r\n toid: number\r\n torevid: number\r\n tons: number\r\n totitle: string\r\n tosize: number\r\n totimestamp: string\r\n touser: string\r\n touserid: number\r\n tocomment: string\r\n toparsedcomment: string\r\n diffsize: number\r\n }> & {\r\n body: string\r\n }\r\n}\r\n\r\nconst VALID_DIFF_TYPES = [\r\n 'diffChars',\r\n 'diffWords',\r\n 'diffSentences',\r\n 'diffLines',\r\n 'createTwoFilesPatch',\r\n] as JsDiffDiffType[]\r\n\r\n@Inject(['jsdiff'])\r\n@RegisterPreferences(\r\n Schema.object({\r\n 'quickDiff.preferredCompareMode': Schema.union([Schema.const('jsDiff'), Schema.const('mwApi')])\r\n .description('The preferred comparison mode for quick diff')\r\n .default('mwApi'),\r\n 'quickDiff.jsDiff.defaultType': Schema.union(VALID_DIFF_TYPES.map((type) => Schema.const(type)))\r\n .description('The default diff type for JsDiff')\r\n .default('diffSentences'),\r\n }).description('Quick Diff Preferences'),\r\n {\r\n 'quickDiff.preferredCompareMode': 'mwApi',\r\n 'quickDiff.jsDiff.defaultType': 'diffSentences',\r\n }\r\n)\r\nexport class PluginQuickDiffCore extends BasePlugin {\r\n VALID_DIFF_TYPES = VALID_DIFF_TYPES\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-diff')\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.set('quickDiff', this)\r\n this.ctx.on('quickEdit/wikiPage', this.injectQuickEdit.bind(this))\r\n window.RLQ.push(this.injectHistoryPage.bind(this))\r\n }\r\n\r\n protected stop(): Promise<void> | void {\r\n this.ctx.off('quickEdit/wikiPage', this.injectQuickEdit.bind(this))\r\n }\r\n\r\n private injectHistoryPage() {\r\n const mwCompareForm = qs<HTMLFormElement>('#mw-history-compare')\r\n if (!mwCompareForm) {\r\n return\r\n }\r\n const compareButtons = qsa('.mw-history-compareselectedversions-button', mwCompareForm)\r\n compareButtons.forEach((el) => {\r\n el.after(\r\n <button\r\n className=\"cdx-button\"\r\n onClick={(e) => {\r\n e.preventDefault()\r\n const formData = new FormData(mwCompareForm)\r\n const fromrev = Number(formData.get('oldid')) || 0\r\n const torev = Number(formData.get('diff')) || 0\r\n const title = formData.get('title') as string\r\n if (!title || !fromrev || !torev) {\r\n return this.logger.warn('Missing title or revision IDs')\r\n }\r\n this.comparePages({\r\n fromrev,\r\n torev,\r\n })\r\n }}\r\n >\r\n Quick Diff\r\n </button>\r\n )\r\n })\r\n }\r\n\r\n private injectQuickEdit({ modal, wikiPage }: QuickEditInitPayload) {\r\n modal.setButtons([\r\n {\r\n label: 'Diff',\r\n side: 'left',\r\n className: 'btn btn-secondary',\r\n method: () => {\r\n const pageTitle = wikiPage.title\r\n const fromtext = wikiPage.revisions?.[0]?.content || ''\r\n const totext =\r\n (modal.get$content().find('textarea[name=\"text\"]').prop('value') as string) || ''\r\n\r\n return this.comparePages({\r\n fromtitle: pageTitle,\r\n fromtext,\r\n totitle: pageTitle,\r\n totext,\r\n })\r\n },\r\n },\r\n ])\r\n }\r\n\r\n simpleTextDiff(oldText: string, newText: string) {\r\n const modal = this.ctx.modal.show({\r\n title: 'Quick Diff',\r\n className: 'in-page-edit ipe-quickDiff',\r\n })\r\n modal.show()\r\n\r\n const container = <pre className={styles['diff-container']}></pre>\r\n const controller = (\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1em',\r\n }}\r\n >\r\n {this.VALID_DIFF_TYPES.map((type, index) => (\r\n <RadioBox\r\n name=\"diffType\"\r\n value={type}\r\n label={type}\r\n inputProps={{\r\n checked: index === 0,\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n modal.setContent(\r\n (\r\n <section>\r\n {controller}\r\n {container}\r\n </section>\r\n ) as HTMLElement\r\n )\r\n controller.querySelectorAll<HTMLInputElement>('input[name=\"diffType\"]').forEach((input) => {\r\n input.addEventListener('change', () => {\r\n const diff = this.renderJsDiff(oldText, newText, input.value as JsDiffDiffType)\r\n container.textContent = ''\r\n container.appendChild(diff)\r\n })\r\n })\r\n controller\r\n .querySelector<HTMLInputElement>('input[name=\"diffType\"]')!\r\n .dispatchEvent(new Event('change'))\r\n }\r\n\r\n /**\r\n * TODO: 类型体操\r\n */\r\n renderJsDiff(oldStr: string, newStr: string, diffType: JsDiffDiffType = 'diffSentences') {\r\n const fragment = document.createDocumentFragment()\r\n\r\n let diff: (ChangeObject<string> & { chunkHeader?: boolean })[]\r\n if (diffType === 'createTwoFilesPatch') {\r\n // 将 patch 结果转化为与 diffChars/diffWords... 类似的结构\r\n let pastHunkHeader = false\r\n diff = this.ctx.jsdiff\r\n .createTwoFilesPatch('original.txt', 'modified.txt', oldStr, newStr)\r\n .split('\\n')\r\n .map(function (entry) {\r\n const line = {\r\n value: entry + '\\n',\r\n } as ChangeObject<string> & { chunkHeader: boolean }\r\n if (entry.startsWith('@@')) {\r\n line.chunkHeader = true\r\n pastHunkHeader = true\r\n } else if (pastHunkHeader) {\r\n if (entry.startsWith('-')) {\r\n line.removed = true\r\n } else if (entry.startsWith('+')) {\r\n line.added = true\r\n }\r\n }\r\n return line\r\n })\r\n } else {\r\n const handler = this.ctx.jsdiff[diffType] as (\r\n oldStr: string,\r\n newStr: string\r\n ) => ChangeObject<string>[]\r\n if (!handler) {\r\n throw new Error(`Missing DiffEngine for ${diffType}`)\r\n }\r\n diff = handler(oldStr, newStr)\r\n }\r\n\r\n if (!Array.isArray(diff)) {\r\n throw new Error('Missing diff result')\r\n }\r\n\r\n // 交换逻辑(一个删除一个新增时)\r\n for (let i = 0; i < diff.length; i++) {\r\n if (diff[i].added && diff[i + 1] && diff[i + 1].removed) {\r\n const swap = diff[i]\r\n diff[i] = diff[i + 1]\r\n diff[i + 1] = swap\r\n }\r\n\r\n let node\r\n if (diff[i].removed) {\r\n node = document.createElement('del')\r\n node.appendChild(document.createTextNode(diff[i].value))\r\n } else if (diff[i].added) {\r\n node = document.createElement('ins')\r\n node.appendChild(document.createTextNode(diff[i].value))\r\n } else if (diff[i].chunkHeader) {\r\n node = document.createElement('span')\r\n node.setAttribute('class', 'chunk-header')\r\n node.appendChild(document.createTextNode(diff[i].value))\r\n } else {\r\n node = document.createTextNode(diff[i].value)\r\n }\r\n fragment.appendChild(node)\r\n }\r\n\r\n return fragment\r\n }\r\n\r\n readonly COMPARE_API_DEFAULT_OPTIONS: Partial<CompareApiRequestOptions> = {\r\n prop: [\r\n 'comment',\r\n 'diff',\r\n 'diffsize',\r\n 'ids',\r\n 'parsedcomment',\r\n 'size',\r\n 'timestamp',\r\n 'title',\r\n 'user',\r\n ].join('|'),\r\n difftype: 'table',\r\n }\r\n comparePages(options: Partial<CompareApiRequestOptions>) {\r\n const modal = this.ctx.modal\r\n .createObject({\r\n title: 'Loading diff...',\r\n content: (<ProgressBar />) as HTMLElement,\r\n className: 'quick-diff',\r\n })\r\n .init()\r\n\r\n if (window.mw && mw.loader.getState('mediawiki.diff.styles') !== 'ready') {\r\n mw.loader.load(['mediawiki.diff.styles'])\r\n }\r\n\r\n this.ctx.api\r\n .post<MwApiResponse<CompareApiResponse>>({\r\n ...this.COMPARE_API_DEFAULT_OPTIONS,\r\n ...options,\r\n action: 'compare',\r\n format: 'json',\r\n formatversion: 2,\r\n })\r\n .then((res) => {\r\n if (res.data?.error || res.data?.errors) {\r\n const errors = [res.data?.error, ...(res.data?.errors || [])].filter(\r\n Boolean\r\n ) as MwApiError[]\r\n throw new Error(errors.map((err) => err.info).join('\\n'), { cause: res })\r\n }\r\n if (!res.data.compare) {\r\n throw new Error('No compare data received', { cause: res })\r\n }\r\n const {\r\n data: { compare },\r\n } = res\r\n modal.setTitle(\r\n compare.fromtitle && compare.totitle\r\n ? `${compare.fromtitle} ⇔ ${compare.totitle}`\r\n : 'Differences'\r\n )\r\n modal.setContent(\r\n (\r\n <section>\r\n <DiffTable data={compare} />\r\n </section>\r\n ) as HTMLElement\r\n )\r\n })\r\n .catch((err) => {\r\n modal.setContent(\r\n (\r\n <MBox title=\"Failed to load diff\" type=\"error\">\r\n <pre>{err instanceof Error ? err.message : String(err)}</pre>\r\n </MBox>\r\n ) as HTMLElement\r\n )\r\n })\r\n\r\n return modal.show()\r\n }\r\n}\r\n","import { InPageEdit } from '@/InPageEdit'\r\nimport { JsDiffService } from './JsDiffService'\r\nimport { PluginQuickDiffCore } from './PluginQuickDiffCore'\r\n\r\nexport class PluginQuickDiff extends BasePlugin {\r\n static readonly inject = ['api', 'wikiPage', 'modal']\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-diff-loader')\r\n ctx.plugin(JsDiffService)\r\n ctx.plugin(PluginQuickDiffCore)\r\n }\r\n}\r\n","import { InPageEdit } from '@/InPageEdit'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickRedirect: PluginQuickRedirect['quickRedirect']\r\n redirectPage: PluginQuickRedirect['redirectPage']\r\n }\r\n}\r\n\r\nexport interface RedirectPageOptions {\r\n from: string\r\n to: string\r\n reason?: string\r\n overwrite?: boolean\r\n}\r\nexport interface QuickRedirectOptions extends Partial<RedirectPageOptions> {}\r\n\r\nexport class PluginQuickRedirect extends BasePlugin {\r\n static readonly inject = ['api', 'wikiPage', 'modal']\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-redirect')\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.set('quickRedirect', this.quickRedirect.bind(this))\r\n this.ctx.set('redirectPage', this.redirectPage.bind(this))\r\n\r\n const curPageName = window.mw?.config.get('wgPageName') || ''\r\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\r\n this.ctx.inject(['toolbox'], (ctx) => {\r\n this.ctx = ctx\r\n ctx.toolbox.addButton({\r\n id: 'quick-redirect',\r\n icon: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-file-symlink\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M4 21v-4a3 3 0 0 1 3 -3h5\" />\r\n <path d=\"M9 17l3 -3l-3 -3\" />\r\n <path d=\"M14 3v4a1 1 0 0 0 1 1h4\" />\r\n <path d=\"M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5\" />\r\n </svg>\r\n ) as HTMLElement,\r\n tooltip: 'Quick Redirect',\r\n group: 'group1',\r\n onClick: () => {\r\n this.quickRedirect(\r\n canEdit\r\n ? {\r\n to: curPageName,\r\n }\r\n : {}\r\n )\r\n },\r\n })\r\n this.addDisposeHandler((ctx) => {\r\n ctx.toolbox.removeButton('quick-redirect')\r\n })\r\n })\r\n }\r\n\r\n protected stop(): Promise<void> | void {}\r\n\r\n quickRedirect(options?: Partial<QuickRedirectOptions>) {\r\n const modal = this.ctx.modal\r\n .createObject({\r\n title: 'Quick Redirect',\r\n content: (<ProgressBar />) as HTMLElement,\r\n className: 'quick-redirect',\r\n sizeClass: 'medium',\r\n center: true,\r\n })\r\n .init()\r\n\r\n let formRef: HTMLFormElement | null = null\r\n modal.setContent(\r\n (\r\n <form\r\n ref={(el) => (formRef = el)}\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem',\r\n }}\r\n onSubmit={(e) => {\r\n e.preventDefault()\r\n const formData = new FormData(formRef!)\r\n const options = {\r\n from: formData.get('from') as string,\r\n to: formData.get('to') as string,\r\n reason: (formData.get('reason') as string) || '',\r\n overwrite: formData.get('overwrite') === 'on',\r\n }\r\n modal.setLoadingState(true)\r\n this.redirectPage(options)\r\n .then((res) => {\r\n modal.close()\r\n this.ctx.modal.notify('success', {\r\n title: 'Redirect successful',\r\n content: 'The redirect has been created.',\r\n })\r\n })\r\n .catch((error) => {\r\n modal.setLoadingState(false)\r\n this.ctx.modal.notify('error', {\r\n title: 'Failed to redirect',\r\n content: error instanceof Error ? error.message : String(error),\r\n })\r\n })\r\n }}\r\n >\r\n <TwinSwapInput\r\n inputs={[\r\n {\r\n label: 'From',\r\n name: 'from',\r\n value: options?.from,\r\n },\r\n {\r\n label: 'To',\r\n name: 'to',\r\n value: options?.to,\r\n },\r\n ]}\r\n />\r\n <InputBox label=\"Reason\" id=\"reason\" name=\"reason\" value={options?.reason} />\r\n <div>\r\n <CheckBox name=\"overwrite\" id=\"overwrite\" checked={options?.overwrite}>\r\n Force create redirect even if the from page already exists\r\n </CheckBox>\r\n </div>\r\n <ActionButton type=\"primary\" style={{ width: '100%' }}>\r\n Create Redirect\r\n </ActionButton>\r\n </form>\r\n ) as HTMLFormElement\r\n )\r\n\r\n return modal.show()\r\n }\r\n\r\n async redirectPage(options: RedirectPageOptions) {\r\n const { from, to, reason = '', overwrite = false } = options\r\n const wikiPage = await this.ctx.wikiPage.newBlankPage({\r\n title: from,\r\n })\r\n const content = `#REDIRECT [[:${to}]]`\r\n const res = await wikiPage.edit(\r\n {\r\n text: content,\r\n summary: reason,\r\n },\r\n {\r\n createonly: !overwrite,\r\n }\r\n )\r\n if (res.data?.errors) {\r\n throw new Error(res.data.errors[0].text, { cause: res })\r\n }\r\n return res\r\n }\r\n}\r\n","import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit'\r\nimport { ReactElement } from 'jsx-dom'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n toolbox: PluginToolbox\r\n }\r\n interface Events {\r\n 'toolbox/button/added'(payload: { ctx: InPageEdit; button: HTMLElement }): void\r\n 'toolbox/button/removed'(payload: { ctx: InPageEdit; id: string }): void\r\n }\r\n}\r\n\r\n@RegisterPreferences(\r\n Schema.object({\r\n toolboxAlwaysShow: Schema.boolean()\r\n .description('Make the toolbox opened by default')\r\n .default(false),\r\n }),\r\n {\r\n toolboxAlwaysShow: false,\r\n }\r\n)\r\n@Inject(['preferences'])\r\nexport class PluginToolbox extends Service {\r\n container!: HTMLElement\r\n private forceShow = false\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, 'toolbox', false)\r\n }\r\n\r\n protected async start(): Promise<void> {\r\n if (mw && mw.config.get('wgIsArticle') === false && !this.forceShow) {\r\n this.container = this.createIndicatorForNotArticlePage()\r\n } else {\r\n this.container = this.createToolbox()\r\n }\r\n document.body.appendChild(this.container)\r\n await sleep(0) // wait nextTick\r\n this.ctx.preferences.get('toolboxAlwaysShow').then((val) => {\r\n if (val) {\r\n this.container.querySelector('#toolbox-toggle')?.classList.add('opened')\r\n this.container.querySelectorAll('.btn-group').forEach((el) => {\r\n el.classList.add('opened')\r\n })\r\n }\r\n })\r\n }\r\n\r\n protected stop(): void | Promise<void> {\r\n this.container?.remove()\r\n }\r\n\r\n private createToolbox() {\r\n const toggler = (\r\n <button\r\n className=\"ipe-toolbox-btn\"\r\n id=\"toolbox-toggle\"\r\n onClick={function (e) {\r\n const isOpened = this.classList.contains('opened')\r\n this.classList.toggle('opened', !isOpened)\r\n element.querySelectorAll('.btn-group').forEach((el) => {\r\n el.classList.toggle('opened', !isOpened)\r\n })\r\n }}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-plus\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M12 5l0 14\" />\r\n <path d=\"M5 12l14 0\" />\r\n </svg>\r\n </button>\r\n )\r\n const element = (\r\n <div id=\"ipe-edit-toolbox\">\r\n <ul className=\"btn-group group1\" style={{ display: 'flex', flexDirection: 'column' }}></ul>\r\n <ul className=\"btn-group group2\" style={{ display: 'flex', flexDirection: 'row' }}></ul>\r\n {toggler}\r\n </div>\r\n )\r\n\r\n return element as HTMLElement\r\n }\r\n\r\n private createIndicatorForNotArticlePage() {\r\n const indicator = (\r\n <div id=\"ipe-edit-toolbox\">\r\n <div\r\n id=\"ipe-toolbox-placeholder\"\r\n style=\"width: 0.75rem; height: 0.75rem; border-radius: 50%; background: #3f51b5; color: #fff; pointer-events: none;\"\r\n >\r\n <svg\r\n style=\"width: 0.5em; height: 0.5em; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"4\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-check\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M5 12l5 5l10 -10\" />\r\n </svg>\r\n </div>\r\n </div>\r\n )\r\n return indicator as HTMLElement\r\n }\r\n\r\n private normalizeButtonId(id: string) {\r\n if (!id) {\r\n id = Math.random().toString(36).substring(2, 8)\r\n }\r\n return `ipe-toolbox__${id.trim()}`.replace(/\\s\\.#/g, '-')\r\n }\r\n\r\n addButton(payload: {\r\n id: string\r\n group?: 'auto' | 'group1' | 'group2'\r\n icon: string | HTMLElement | SVGElement | JQuery | ReactElement\r\n tooltip?: string | HTMLElement | JQuery\r\n buttonProps?: Record<string, any>\r\n onClick?: (event: MouseEvent) => void\r\n index?: number\r\n }) {\r\n let { id, group, icon, tooltip, buttonProps, onClick, index } = payload\r\n id = this.normalizeButtonId(id)\r\n\r\n const existingButton = this.container.querySelector(`#${id}`)\r\n if (existingButton) {\r\n this.ctx.logger('toolbox').warn(`Button with id ${id} already exists, replacing it.`)\r\n existingButton.remove()\r\n }\r\n\r\n let groupEl: HTMLElement | null = null\r\n if (typeof group === 'undefined' || group === 'auto') {\r\n // 选择按钮最少的那一组,一样多就选第一组\r\n const group1 = this.container.querySelector('.btn-group.group1') as HTMLElement\r\n const group2 = this.container.querySelector('.btn-group.group2') as HTMLElement\r\n const group1Count = group1?.children.length || 0\r\n const group2Count = group2?.children.length || 0\r\n groupEl = group1Count <= group2Count ? group1 : group2\r\n } else {\r\n groupEl = this.container.querySelector(`.btn-group.${group}`)\r\n }\r\n if (!groupEl) throw new Error(`Button group ${group} not found`)\r\n\r\n const button = (\r\n <li class=\"btn-tip-group\" id={id} onClick={onClick}>\r\n <div class=\"btn-tip\">{tooltip}</div>\r\n <button id={`${id}-btn`} class=\"ipe-toolbox-btn\" {...buttonProps}>\r\n {icon}\r\n </button>\r\n </li>\r\n )\r\n\r\n if (typeof index === 'number') {\r\n if (index <= 0) {\r\n groupEl.prepend(button)\r\n } else if (index >= groupEl.children.length) {\r\n groupEl.appendChild(button)\r\n } else {\r\n groupEl.children[index]?.before(button)\r\n }\r\n } else {\r\n groupEl.appendChild(button)\r\n }\r\n\r\n this.ctx.emit('toolbox/button/added', {\r\n ctx: this.ctx,\r\n button: button as HTMLElement,\r\n })\r\n\r\n return button as HTMLElement\r\n }\r\n\r\n removeButton(id: string) {\r\n const button = this.container.querySelector(`.ipe-toolbox-btn#${id}`)\r\n button?.remove()\r\n this.ctx.emit('toolbox/button/removed', { ctx: this.ctx, id })\r\n }\r\n}\r\n","/**\n* @vue/shared v3.5.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, makeMap, isObject, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n activeEffectScope = this.prevScope;\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, toReactive);\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toReactive(value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n },\n find(fn, thisArg) {\n return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", toReactive);\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (result.value) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toReactive(item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toReactive(item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n }\n get value() {\n const val = this._object[this._key];\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, EMPTY_ARR, hyphenate, makeMap, toRawType, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= -2;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= -2;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= -2;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n const g = getGlobalThis();\n if (!g.__VUE_HMR_RUNTIME__) {\n g.__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n }\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n if (!(instance.job.flags & 8)) {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n }\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n if (parentComponent && parentComponent.isCE) {\n parentComponent.ce._teleportTarget = container2;\n }\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n n2.el.__isMounted = false;\n queuePostRenderEffect(() => {\n mountToTarget();\n delete n2.el.__isMounted;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== \"production\"));\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {\n vnode2.anchor = hydrateChildren(\n nextSibling(node2),\n vnode2,\n parentNode(node2),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode2.targetStart = targetStart;\n vnode2.targetAnchor = targetAnchor;\n }\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n const disabled = isTeleportDisabled(vnode.props);\n if (target) {\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n hydrateDisabledTeleport(\n node,\n vnode,\n targetNode,\n targetNode && nextSibling(targetNode)\n );\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n } else if (disabled) {\n if (vnode.shapeFlag & 16) {\n hydrateDisabledTeleport(node, vnode, node, nextSibling(node));\n }\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nconst pendingSetRefMap = /* @__PURE__ */ new WeakMap();\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n const canSetRef = (ref2) => {\n return !!!(process.env.NODE_ENV !== \"production\") || !knownTemplateRefs.has(ref2);\n };\n if (oldRef != null && oldRef !== ref) {\n invalidatePendingSetRef(oldRawRef);\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n if (canSetRef(oldRef)) {\n oldRef.value = null;\n }\n const oldRawRefAtom = oldRawRef;\n if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n const newVal = [refValue];\n if (canSetRef(ref)) {\n ref.value = newVal;\n }\n if (rawRef.k) refs[rawRef.k] = newVal;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n if (canSetRef(ref)) {\n ref.value = value;\n }\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n const job = () => {\n doSet();\n pendingSetRefMap.delete(rawRef);\n };\n job.id = -1;\n pendingSetRefMap.set(rawRef, job);\n queuePostRenderEffect(job, parentSuspense);\n } else {\n invalidatePendingSetRef(rawRef);\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\nfunction invalidatePendingSetRef(rawRef) {\n const pendingSetRef = pendingSetRefMap.get(rawRef);\n if (pendingSetRef) {\n pendingSetRef.flags |= 8;\n pendingSetRefMap.delete(rawRef);\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n const cls = content.getAttribute(\"class\");\n if (cls) content.$cls = cls;\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n if (el.textContent !== clientText) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${el.textContent}\n - expected on client: ${vnode.children}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n if (el.$cls) {\n actual = el.$cls;\n delete el.$cls;\n } else {\n actual = el.getAttribute(\"class\");\n }\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n const value = normalizeCssVarValue(cssVars[key]);\n expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value);\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return list.includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n let patched = false;\n (instance.bu || (instance.bu = [])).push(() => patched = true);\n const performHydrate = () => {\n if (patched) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`\n );\n }\n return;\n }\n hydrate();\n };\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n performHydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : performHydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n instance2.__keepAliveStorageContainer = storageContainer;\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= -257;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= -257;\n vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n let isReadonlySource = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n isReadonlySource = isReadonly(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n } else if (hasOwn(instance.props, key)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === \"$\" && key.slice(1) in instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n );\n return false;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n } else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({\n _: { data, setupState, accessCache, ctx, appContext, propsOptions, type }\n }, key) {\n let normalizedProps, cssModules;\n return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== \"$\" && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n target._.accessCache[key] = 0;\n } else if (hasOwn(descriptor, \"value\")) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn$1(\n `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n );\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} should not start with _ which is a reserved prefix for Vue internals.`\n );\n }\n return has;\n }\n});\nfunction createDevRenderContext(instance) {\n const target = {};\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n Object.keys(publicPropertiesMap).forEach((key) => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n const {\n ctx,\n propsOptions: [propsOptions]\n } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach((key) => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach((key) => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn$1(\n `setup() return property ${JSON.stringify(\n key\n )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n );\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\nfunction defineEmits() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\nfunction defineExpose(exposed) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\nfunction defineOptions(options) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineOptions`);\n }\n}\nfunction defineSlots() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`defineSlots`);\n }\n return null;\n}\nfunction defineModel() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(\"defineModel\");\n }\n}\nfunction withDefaults(props, defaults) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext(\"useSlots\").slots;\n}\nfunction useAttrs() {\n return getContext(\"useAttrs\").attrs;\n}\nfunction getContext(calledFunctionName) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`${calledFunctionName}() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n return isArray(props) ? props.reduce(\n (normalized, p) => (normalized[p] = null, normalized),\n {}\n ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n const props = normalizePropsOrEmits(raw);\n for (const key in defaults) {\n if (key.startsWith(\"__skip\")) continue;\n let opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n opt = props[key] = { type: opt, default: defaults[key] };\n } else {\n opt.default = defaults[key];\n }\n } else if (opt === null) {\n opt = props[key] = { default: defaults[key] };\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n }\n if (opt && defaults[`__skip_${key}`]) {\n opt.skipFactory = true;\n }\n }\n return props;\n}\nfunction mergeModels(a, b) {\n if (!a || !b) return a || b;\n if (isArray(a) && isArray(b)) return a.concat(b);\n return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n warn$1(\n `withAsyncContext called without active current instance. This is likely a bug.`\n );\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch((e) => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n const cache = /* @__PURE__ */ Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n } else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n shouldCacheAccess = false;\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\");\n }\n const {\n // state\n data: dataOptions,\n computed: computedOptions,\n methods,\n watch: watchOptions,\n provide: provideOptions,\n inject: injectOptions,\n // lifecycle\n created,\n beforeMount,\n mounted,\n beforeUpdate,\n updated,\n activated,\n deactivated,\n beforeDestroy,\n beforeUnmount,\n destroyed,\n unmounted,\n render,\n renderTracked,\n renderTriggered,\n errorCaptured,\n serverPrefetch,\n // public API\n expose,\n inheritAttrs,\n // assets\n components,\n directives,\n filters\n } = options;\n const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\n }\n }\n }\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n } else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n );\n }\n }\n }\n if (dataOptions) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n warn$1(\n `The data option must be a function. Plain object usage is no longer supported.`\n );\n }\n const data = dataOptions.call(publicThis, publicThis);\n if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n warn$1(\n `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n );\n }\n if (!isObject(data)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n } else {\n instance.data = reactive(data);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* DATA */, key);\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n warn$1(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$1(\n `Write operation failed: computed property \"${key}\" is readonly.`\n );\n } : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: (v) => c.value = v\n });\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n Reflect.ownKeys(provides).forEach((key) => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\");\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach((_hook) => register(_hook.bind(publicThis)));\n } else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach((key) => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: (val) => publicThis[key] = val,\n enumerable: true\n });\n });\n } else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n if (components) instance.components = components;\n if (directives) instance.directives = directives;\n if (serverPrefetch) {\n markAsyncBoundary(instance);\n }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if (\"default\" in opt) {\n injected = inject(\n opt.from || key,\n opt.default,\n true\n );\n } else {\n injected = inject(opt.from || key);\n }\n } else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: (v) => injected.value = v\n });\n } else {\n ctx[key] = injected;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(\n isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n instance,\n type\n );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n let getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n {\n watch(getter, handler);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n } else if (isFunction(raw)) {\n {\n watch(getter, raw.bind(publicThis));\n }\n } else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n } else {\n const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid watch option: \"${key}\"`, raw);\n }\n}\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const {\n mixins: globalMixins,\n optionsCache: cache,\n config: { optionMergeStrategies }\n } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n } else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n } else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(\n (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n );\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach(\n (m) => mergeOptions(to, m, strats, true)\n );\n }\n for (const key in from) {\n if (asMixin && key === \"expose\") {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n );\n } else {\n const strat = internalOptionMergeStrats[key] || strats && strats[key];\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeEmitsOrPropsOptions,\n emits: mergeEmitsOrPropsOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(\n isFunction(to) ? to.call(this, this) : to,\n isFunction(from) ? from.call(this, this) : from\n );\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n if (to) {\n if (isArray(to) && isArray(from)) {\n return [.../* @__PURE__ */ new Set([...to, ...from])];\n }\n return extend(\n /* @__PURE__ */ Object.create(null),\n normalizePropsOrEmits(to),\n normalizePropsOrEmits(from != null ? from : {})\n );\n } else {\n return from;\n }\n}\nfunction mergeWatchOptions(to, from) {\n if (!to) return from;\n if (!from) return to;\n const merged = extend(/* @__PURE__ */ Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n const pluginCleanupFns = [];\n let isMounted = false;\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, namespace) {\n if (!isMounted) {\n if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n warn$1(\n `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n );\n }\n const vnode = app._ceVNode || createVNode(rootComponent, rootProps);\n vnode.appContext = context;\n if (namespace === true) {\n namespace = \"svg\";\n } else if (namespace === false) {\n namespace = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n context.reload = () => {\n const cloned = cloneVNode(vnode);\n cloned.el = null;\n render(cloned, rootContainer, namespace);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n } else {\n render(vnode, rootContainer, namespace);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getComponentPublicInstance(vnode.component);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n );\n }\n },\n onUnmount(cleanupFn) {\n if (!!(process.env.NODE_ENV !== \"production\") && typeof cleanupFn !== \"function\") {\n warn$1(\n `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}`\n );\n }\n pluginCleanupFns.push(cleanupFn);\n },\n unmount() {\n if (isMounted) {\n callWithAsyncErrorHandling(\n pluginCleanupFns,\n app._instance,\n 16\n );\n render(null, app._container);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n if (hasOwn(context.provides, key)) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n } else {\n warn$1(\n `App already provides property with key \"${String(key)}\" inherited from its parent element. It will be overwritten with the new value.`\n );\n }\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n const lastApp = currentApp;\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = lastApp;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = getCurrentInstance();\n if (instance || currentApp) {\n let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(getCurrentInstance() || currentApp);\n}\n\nconst internalObjectProto = {};\nconst createInternalObject = () => Object.create(internalObjectProto);\nconst isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n const props = {};\n const attrs = createInternalObject();\n instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = void 0;\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n instance.props = isSSR ? props : shallowReactive(props);\n } else {\n if (!instance.type.props) {\n instance.props = attrs;\n } else {\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId) return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const {\n props,\n attrs,\n vnode: { patchFlag }\n } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n ) {\n if (patchFlag & 8) {\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n const value = rawProps[key];\n if (options) {\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n } else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(\n options,\n rawCurrentProps,\n camelizedKey,\n value,\n instance,\n false\n );\n }\n } else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n } else {\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps || // for camelCase\n !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n if (options) {\n if (rawPrevProps && // for camelCase\n (rawPrevProps[key] !== void 0 || // for kebab-case\n rawPrevProps[kebabKey] !== void 0)) {\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n void 0,\n instance,\n true\n );\n }\n } else {\n delete props[key];\n }\n }\n }\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps || !hasOwn(rawProps, key) && true) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (hasAttrsChanged) {\n trigger(instance.attrs, \"set\", \"\");\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n let camelKey;\n if (options && hasOwn(options, camelKey = camelize(key))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n } else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n } else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(\n options,\n rawCurrentProps,\n key,\n castValues[key],\n instance,\n !hasOwn(castValues, key)\n );\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, \"default\");\n if (hasDefault && value === void 0) {\n const defaultValue = opt.default;\n if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n } else {\n const reset = setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(\n null,\n props\n );\n reset();\n }\n } else {\n value = defaultValue;\n }\n if (instance.ce) {\n instance.ce._setProp(key, value);\n }\n }\n if (opt[0 /* shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nconst mixinPropsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = __VUE_OPTIONS_API__ && asMixin ? mixinPropsCache : appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw2) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n extend(normalized, props);\n if (keys) needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n warn$1(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n } else if (raw) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n warn$1(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n const propType = prop.type;\n let shouldCast = false;\n let shouldCastTrue = true;\n if (isArray(propType)) {\n for (let index = 0; index < propType.length; ++index) {\n const type = propType[index];\n const typeName = isFunction(type) && type.name;\n if (typeName === \"Boolean\") {\n shouldCast = true;\n break;\n } else if (typeName === \"String\") {\n shouldCastTrue = false;\n }\n }\n } else {\n shouldCast = isFunction(propType) && propType.name === \"Boolean\";\n }\n prop[0 /* shouldCast */] = shouldCast;\n prop[1 /* shouldCastTrue */] = shouldCastTrue;\n if (shouldCast || hasOwn(prop, \"default\")) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== \"$\" && !isReservedProp(key)) {\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\nfunction getType(ctor) {\n if (ctor === null) {\n return \"null\";\n }\n if (typeof ctor === \"function\") {\n return ctor.name || \"\";\n } else if (typeof ctor === \"object\") {\n const name = ctor.constructor && ctor.constructor.name;\n return name || \"\";\n }\n return \"\";\n}\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key));\n for (const key in options) {\n let opt = options[key];\n if (opt == null) continue;\n validateProp(\n key,\n resolvedValues[key],\n opt,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n !camelizePropsKey.includes(key)\n );\n }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n const { type, required, validator, skipCheck } = prop;\n if (required && isAbsent) {\n warn$1('Missing required prop: \"' + name + '\"');\n return;\n }\n if (value == null && !required) {\n return;\n }\n if (type != null && type !== true && !skipCheck) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || \"\");\n isValid = valid;\n }\n if (!isValid) {\n warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n if (validator && !validator(value, props)) {\n warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (expectedType === \"null\") {\n valid = value === null;\n } else if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n if (!valid && t === \"object\") {\n valid = value instanceof type;\n }\n } else if (expectedType === \"Object\") {\n valid = isObject(value);\n } else if (expectedType === \"Array\") {\n valid = isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n if (expectedTypes.length === 0) {\n return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n }\n let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\nfunction styleValue(value, type) {\n if (type === \"String\") {\n return `\"${value}\"`;\n } else if (type === \"Number\") {\n return `${Number(value)}`;\n } else {\n return `${value}`;\n }\n}\nfunction isExplicable(type) {\n const explicitTypes = [\"string\", \"number\", \"boolean\"];\n return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key === \"_\" || key === \"_ctx\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) {\n warn$1(\n `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n );\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key)) continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n } else if (value != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n warn$1(\n `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n warn$1(\n `Non-function value encountered for default slot. Prefer function slots for better performance.`\n );\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst assignSlots = (slots, children, optimized) => {\n for (const key in children) {\n if (optimized || !isInternalKey(key)) {\n slots[key] = children[key];\n }\n }\n};\nconst initSlots = (instance, children, optimized) => {\n const slots = instance.slots = createInternalObject();\n if (instance.vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n assignSlots(slots, children, optimized);\n if (optimized) {\n def(slots, \"_\", type, true);\n }\n } else {\n normalizeObjectSlots(children, slots);\n }\n } else if (children) {\n normalizeVNodeSlots(instance, children);\n }\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n assignSlots(slots, children, optimized);\n trigger(instance, \"set\", \"$slots\");\n } else if (optimized && type === 1) {\n needDeletionCheck = false;\n } else {\n assignSlots(slots, children, optimized);\n }\n } else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n } else if (children) {\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n delete slots[key];\n }\n }\n }\n};\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;\n perf.mark(endTag);\n perf.measure(measureName, startTag, endTag);\n perf.clearMeasures(measureName);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== void 0) {\n return supported;\n }\n if (typeof window !== \"undefined\" && window.performance) {\n supported = true;\n perf = window.performance;\n } else {\n supported = false;\n }\n return supported;\n}\n\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(\n `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n );\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const {\n insert: hostInsert,\n remove: hostRemove,\n patchProp: hostPatchProp,\n createElement: hostCreateElement,\n createText: hostCreateText,\n createComment: hostCreateComment,\n setText: hostSetText,\n setElementText: hostSetElementText,\n parentNode: hostParentNode,\n nextSibling: hostNextSibling,\n setScopeId: hostSetScopeId = NOOP,\n insertStaticContent: hostInsertStaticContent\n } = options;\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, namespace);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n patchStaticNode(n1, n2, container, namespace);\n }\n break;\n case Fragment:\n processFragment(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n break;\n default:\n if (shapeFlag & 1) {\n processElement(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 6) {\n processComponent(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (shapeFlag & 64) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (shapeFlag & 128) {\n type.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n } else if (ref == null && n1 && n1.ref != null) {\n setRef(n1.ref, null, parentSuspense, n1, true);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateText(n2.children),\n container,\n anchor\n );\n } else {\n const el = n2.el = n1.el;\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert(\n n2.el = hostCreateComment(n2.children || \"\"),\n container,\n anchor\n );\n } else {\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, namespace) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace,\n n2.el,\n n2.anchor\n );\n };\n const patchStaticNode = (n1, n2, container, namespace) => {\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(\n n2.children,\n container,\n anchor,\n namespace\n );\n } else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n if (n2.type === \"svg\") {\n namespace = \"svg\";\n } else if (n2.type === \"math\") {\n namespace = \"mathml\";\n }\n if (n1 == null) {\n mountElement(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n patchElement(\n n1,\n n2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(\n vnode.type,\n namespace,\n props && props.is,\n props\n );\n if (shapeFlag & 8) {\n hostSetElementText(el, vnode.children);\n } else if (shapeFlag & 16) {\n mountChildren(\n vnode.children,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(vnode, namespace),\n slotScopeIds,\n optimized\n );\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if (props) {\n for (const key in props) {\n if (key !== \"value\" && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], namespace, parentComponent);\n }\n }\n if (\"value\" in props) {\n hostPatchProp(el, \"value\", null, props.value, namespace);\n }\n if (vnodeHook = props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(el, \"__vnode\", vnode, true);\n def(el, \"__vueParentComponent\", parentComponent, true);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n const needCallTransitionHooks = needTransition(parentSuspense, transition);\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n subTree = filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {\n const parentVNode = parentComponent.vnode;\n setScopeId(\n el,\n parentVNode,\n parentVNode.scopeId,\n parentVNode.slotScopeIds,\n parentComponent.parent\n );\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n patch(\n null,\n child,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const el = n2.el = n1.el;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n el.__vnode = n2;\n }\n let { patchFlag, dynamicChildren, dirs } = n2;\n patchFlag |= n1.patchFlag & 16;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n parentComponent && toggleRecurse(parentComponent, false);\n if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {\n hostSetElementText(el, \"\");\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n el,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n }\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n el,\n null,\n parentComponent,\n parentSuspense,\n resolveChildrenNamespace(n2, namespace),\n slotScopeIds,\n false\n );\n }\n if (patchFlag > 0) {\n if (patchFlag & 16) {\n patchProps(el, oldProps, newProps, parentComponent, namespace);\n } else {\n if (patchFlag & 2) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, \"class\", null, newProps.class, namespace);\n }\n }\n if (patchFlag & 4) {\n hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n }\n if (patchFlag & 8) {\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n if (next !== prev || key === \"value\") {\n hostPatchProp(el, key, prev, next, namespace, parentComponent);\n }\n }\n }\n }\n if (patchFlag & 1) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n } else if (!optimized && dynamicChildren == null) {\n patchProps(el, oldProps, newProps, parentComponent, namespace);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n }, parentSuspense);\n }\n };\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n const container = (\n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (\n // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer\n )\n );\n patch(\n oldVNode,\n newVNode,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n true\n );\n }\n };\n const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(\n el,\n key,\n oldProps[key],\n null,\n namespace,\n parentComponent\n );\n }\n }\n }\n for (const key in newProps) {\n if (isReservedProp(key)) continue;\n const next = newProps[key];\n const prev = oldProps[key];\n if (next !== prev && key !== \"value\") {\n hostPatchProp(el, key, prev, next, namespace, parentComponent);\n }\n }\n if (\"value\" in newProps) {\n hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048)) {\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n mountChildren(\n // #10007\n // such fragment like `<></>` will be compiled into\n // a fragment which doesn't have a children.\n // In this case fallback to an empty array\n n2.children || [],\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n container,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n traverseStaticChildren(n1, n2);\n } else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null || parentComponent && n2 === parentComponent.subTree\n ) {\n traverseStaticChildren(\n n1,\n n2,\n true\n /* shallow */\n );\n }\n } else {\n patchChildren(\n n1,\n n2,\n container,\n fragmentEndAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512) {\n parentComponent.ctx.activate(\n n2,\n container,\n anchor,\n namespace,\n optimized\n );\n } else {\n mountComponent(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n optimized\n );\n }\n } else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(\n initialVNode,\n parentComponent,\n parentSuspense\n ));\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance, false, optimized);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `init`);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) initialVNode.el = null;\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);\n if (!initialVNode.el) {\n const placeholder = instance.subTree = createVNode(Comment);\n processCommentNode(null, placeholder, container, anchor);\n initialVNode.placeholder = placeholder.el;\n }\n } else {\n setupRenderEffect(\n instance,\n initialVNode,\n container,\n anchor,\n parentSuspense,\n namespace,\n optimized\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = n2.component = n1.component;\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep && !instance.asyncResolved) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n return;\n } else {\n instance.next = n2;\n instance.update();\n }\n } else {\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent, root, type } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n if (bm) {\n invokeArrayFns(bm);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n const hydrateSubTree = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(\n el,\n instance.subTree,\n instance,\n parentSuspense,\n null\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode && type.__asyncHydrate) {\n type.__asyncHydrate(\n el,\n instance,\n hydrateSubTree\n );\n } else {\n hydrateSubTree();\n }\n } else {\n if (root.ce && // @ts-expect-error _def is private\n root.ce._def.shadowRoot !== false) {\n root.ce._injectChildStyle(type);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const subTree = instance.subTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n null,\n subTree,\n container,\n anchor,\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n parentSuspense\n );\n }\n if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n initialVNode = container = anchor = null;\n } else {\n let { next, bu, u, parent, vnode } = instance;\n {\n const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n if (nonHydratedAsyncRoot) {\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n nonHydratedAsyncRoot.asyncDep.then(() => {\n if (!instance.isUnmounted) {\n componentUpdateFn();\n }\n });\n return;\n }\n }\n let originNext = next;\n let vnodeHook;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(next || instance.vnode);\n }\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n } else {\n next = vnode;\n }\n if (bu) {\n invokeArrayFns(bu);\n }\n if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `patch`);\n }\n patch(\n prevTree,\n nextTree,\n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el),\n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree),\n instance,\n parentSuspense,\n namespace\n );\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n updateHOCHostEl(instance, nextTree.el);\n }\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n queuePostRenderEffect(\n () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n parentSuspense\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n }\n };\n instance.scope.on();\n const effect = instance.effect = new ReactiveEffect(componentUpdateFn);\n instance.scope.off();\n const update = instance.update = effect.run.bind(effect);\n const job = instance.job = effect.runIfDirty.bind(effect);\n job.i = instance;\n job.id = instance.uid;\n effect.scheduler = () => queueJob(job);\n toggleRecurse(instance, true);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n flushPreFlushCbs(instance);\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n if (patchFlag > 0) {\n if (patchFlag & 128) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n } else if (patchFlag & 256) {\n patchUnkeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n return;\n }\n }\n if (shapeFlag & 8) {\n if (prevShapeFlag & 16) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n } else {\n if (prevShapeFlag & 16) {\n if (shapeFlag & 16) {\n patchKeyedChildren(\n c1,\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n } else {\n if (prevShapeFlag & 8) {\n hostSetElementText(container, \"\");\n }\n if (shapeFlag & 16) {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n patch(\n c1[i],\n nextChild,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n if (oldLength > newLength) {\n unmountChildren(\n c1,\n parentComponent,\n parentSuspense,\n true,\n false,\n commonLength\n );\n } else {\n mountChildren(\n c2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n commonLength\n );\n }\n };\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1;\n let e2 = l2 - 1;\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n i++;\n }\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n if (isSameVNodeType(n1, n2)) {\n patch(\n n1,\n n2,\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else {\n break;\n }\n e1--;\n e2--;\n }\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(\n null,\n c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n i++;\n }\n }\n } else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n } else {\n const s1 = i;\n const s2 = i;\n const keyToNewIndexMap = /* @__PURE__ */ new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n if (nextChild.key != null) {\n if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n warn$1(\n `Duplicate keys found during update:`,\n JSON.stringify(nextChild.key),\n `Make sure keys are unique.`\n );\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n let maxNewIndexSoFar = 0;\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n } else {\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === void 0) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n } else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n } else {\n moved = true;\n }\n patch(\n prevChild,\n c2[newIndex],\n container,\n null,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n patched++;\n }\n }\n const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchorVNode = c2[nextIndex + 1];\n const anchor = nextIndex + 1 < l2 ? (\n // #13559, fallback to el placeholder for unresolved async component\n anchorVNode.el || anchorVNode.placeholder\n ) : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n patch(\n null,\n nextChild,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n } else if (moved) {\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2);\n } else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n if (needTransition2) {\n if (moveType === 0) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n } else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove2 = () => {\n if (vnode.ctx.isUnmounted) {\n hostRemove(el);\n } else {\n hostInsert(el, container, anchor);\n }\n };\n const performLeave = () => {\n if (el._isLeaving) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n leave(el, () => {\n remove2();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove2, performLeave);\n } else {\n performLeave();\n }\n }\n } else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const {\n type,\n props,\n ref,\n children,\n dynamicChildren,\n shapeFlag,\n patchFlag,\n dirs,\n cacheIndex\n } = vnode;\n if (patchFlag === -2) {\n optimized = false;\n }\n if (ref != null) {\n pauseTracking();\n setRef(ref, null, parentSuspense, vnode, true);\n resetTracking();\n }\n if (cacheIndex != null) {\n parentComponent.renderCache[cacheIndex] = void 0;\n }\n if (shapeFlag & 256) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n } else {\n if (shapeFlag & 128) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n }\n if (shapeFlag & 64) {\n vnode.type.remove(\n vnode,\n parentComponent,\n parentSuspense,\n internals,\n doRemove\n );\n } else if (dynamicChildren && // #5154\n // when v-once is used inside a block, setBlockTracking(-1) marks the\n // parent block with hasOnce: true\n // so that it doesn't take the fast path during unmount - otherwise\n // components nested in v-once are never unmounted.\n !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n unmountChildren(\n dynamicChildren,\n parentComponent,\n parentSuspense,\n false,\n true\n );\n } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n }, parentSuspense);\n }\n };\n const remove = (vnode) => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n vnode.children.forEach((child) => {\n if (child.type === Comment) {\n hostRemove(child.el);\n } else {\n remove(child);\n }\n });\n } else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n } else {\n performLeave();\n }\n } else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, job, subTree, um, m, a } = instance;\n invalidateMount(m);\n invalidateMount(a);\n if (bum) {\n invokeArrayFns(bum);\n }\n scope.stop();\n if (job) {\n job.flags |= 8;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = (vnode) => {\n if (vnode.shapeFlag & 6) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128) {\n return vnode.suspense.next();\n }\n const el = hostNextSibling(vnode.anchor || vnode.el);\n const teleportEnd = el && el[TeleportEndKey];\n return teleportEnd ? hostNextSibling(teleportEnd) : el;\n };\n let isFlushing = false;\n const render = (vnode, container, namespace) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n } else {\n patch(\n container._vnode || null,\n vnode,\n container,\n null,\n null,\n null,\n namespace\n );\n }\n container._vnode = vnode;\n if (!isFlushing) {\n isFlushing = true;\n flushPreFlushCbs();\n flushPostFlushCbs();\n isFlushing = false;\n }\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(\n internals\n );\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, job }, allowed) {\n if (allowed) {\n effect.flags |= 32;\n job.flags |= 4;\n } else {\n effect.flags &= -33;\n job.flags &= -5;\n }\n}\nfunction needTransition(parentSuspense, transition) {\n return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow && c2.patchFlag !== -2)\n traverseStaticChildren(c1, c2);\n }\n if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes\n c2.patchFlag !== -1) {\n c2.el = c1.el;\n }\n if (c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n c2.el && (c2.el.__vnode = c2);\n }\n }\n }\n}\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = u + v >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n const subComponent = instance.subTree.component;\n if (subComponent) {\n if (subComponent.asyncDep && !subComponent.asyncResolved) {\n return subComponent;\n } else {\n return locateNonHydratedAsyncRoot(subComponent);\n }\n }\n}\nfunction invalidateMount(hooks) {\n if (hooks) {\n for (let i = 0; i < hooks.length; i++)\n hooks[i].flags |= 8;\n }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, flush, once } = options;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const baseWatchOptions = extend({}, options);\n if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else if (!runsImmediately) {\n const watchStopHandle = () => {\n };\n watchStopHandle.stop = NOOP;\n watchStopHandle.resume = NOOP;\n watchStopHandle.pause = NOOP;\n return watchStopHandle;\n }\n }\n const instance = currentInstance;\n baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n let isPre = false;\n if (flush === \"post\") {\n baseWatchOptions.scheduler = (job) => {\n queuePostRenderEffect(job, instance && instance.suspense);\n };\n } else if (flush !== \"sync\") {\n isPre = true;\n baseWatchOptions.scheduler = (job, isFirstRun) => {\n if (isFirstRun) {\n job();\n } else {\n queueJob(job);\n }\n };\n }\n baseWatchOptions.augmentJob = (job) => {\n if (cb) {\n job.flags |= 4;\n }\n if (isPre) {\n job.flags |= 2;\n if (instance) {\n job.id = instance.uid;\n job.i = instance;\n }\n }\n };\n const watchHandle = watch$1(source, cb, baseWatchOptions);\n if (isInSSRComponentSetup) {\n if (ssrCleanup) {\n ssrCleanup.push(watchHandle);\n } else if (runsImmediately) {\n watchHandle();\n }\n }\n return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n const i = getCurrentInstance();\n if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n warn$1(`useModel() called without active instance.`);\n return ref();\n }\n const camelizedName = camelize(name);\n if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][camelizedName]) {\n warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n return ref();\n }\n const hyphenatedName = hyphenate(name);\n const modifiers = getModelModifiers(props, camelizedName);\n const res = customRef((track, trigger) => {\n let localValue;\n let prevSetValue = EMPTY_OBJ;\n let prevEmittedValue;\n watchSyncEffect(() => {\n const propValue = props[camelizedName];\n if (hasChanged(localValue, propValue)) {\n localValue = propValue;\n trigger();\n }\n });\n return {\n get() {\n track();\n return options.get ? options.get(localValue) : localValue;\n },\n set(value) {\n const emittedValue = options.set ? options.set(value) : value;\n if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {\n return;\n }\n const rawProps = i.vnode.props;\n if (!(rawProps && // check if parent has passed v-model\n (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {\n localValue = value;\n trigger();\n }\n i.emit(`update:${name}`, emittedValue);\n if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {\n trigger();\n }\n prevSetValue = value;\n prevEmittedValue = emittedValue;\n }\n };\n });\n res[Symbol.iterator] = () => {\n let i2 = 0;\n return {\n next() {\n if (i2 < 2) {\n return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false };\n } else {\n return { done: true };\n }\n }\n };\n };\n return res;\n}\nconst getModelModifiers = (props, modelName) => {\n return modelName === \"modelValue\" || modelName === \"model-value\" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`];\n};\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted) return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(camelize(event))}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modifiers = isModelListener && getModelModifiers(props, event.slice(7));\n if (modifiers) {\n if (modifiers.trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (modifiers.number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nconst mixinEmitsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = __VUE_OPTIONS_API__ && asMixin ? mixinEmitsCache : appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside <Transition> renders non-element root node that cannot be animated.`\n );\n }\n setTransitionHooks(root, vnode.transition);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(pendingBranch, newBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n `<Suspense> is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) === container2) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect, optimized2) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized2\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value, inVOnce = false) {\n isBlockTreeEnabled += value;\n if (value < 0 && currentBlock && inVOnce) {\n currentBlock.hasOnce = true;\n }\n}\nfunction setupBlock(vnode) {\n vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n closeBlock();\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(\n createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n true\n )\n );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(\n createVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n true\n )\n );\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && n1.component) {\n const dirtyInstances = hmrDirtyComponents.get(n2.type);\n if (dirtyInstances && dirtyInstances.has(n1.component)) {\n n1.shapeFlag &= -257;\n n2.shapeFlag &= -513;\n return false;\n }\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(\n ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n );\n};\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n ref,\n ref_key,\n ref_for\n}) => {\n if (typeof ref === \"number\") {\n ref = \"\" + ref;\n }\n return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetStart: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n if (shapeFlag & 128) {\n type.normalize(vnode);\n }\n } else if (children) {\n vnode.shapeFlag |= isString(children) ? 8 : 16;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n !isBlockNode && // has current parent block\n currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n const cloned = cloneVNode(\n type,\n props,\n true\n /* mergeRef: true */\n );\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n } else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag = -2;\n return cloned;\n }\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n if (props) {\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n type = toRaw(type);\n warn$1(\n `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n `\nComponent that was made reactive: `,\n type\n );\n }\n return createBaseVNode(\n type,\n props,\n children,\n patchFlag,\n dynamicProps,\n shapeFlag,\n isBlockNode,\n true\n );\n}\nfunction guardReactiveProps(props) {\n if (!props) return null;\n return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {\n const { props, ref, patchFlag, children, transition } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref ? (\n // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n ) : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n target: vnode.target,\n targetStart: vnode.targetStart,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n placeholder: vnode.placeholder,\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx,\n ce: vnode.ce\n };\n if (transition && cloneTransition) {\n setTransitionHooks(\n cloned,\n transition.clone(cloned)\n );\n }\n return cloned;\n}\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === \"boolean\") {\n return createVNode(Comment);\n } else if (isArray(child)) {\n return createVNode(\n Fragment,\n null,\n // #3666, avoid reference pollution when reusing vnode\n child.slice()\n );\n } else if (isVNode(child)) {\n return cloneIfMounted(child);\n } else {\n return createVNode(Text, null, String(child));\n }\n}\nfunction cloneIfMounted(child) {\n return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n } else if (isArray(children)) {\n type = 16;\n } else if (typeof children === \"object\") {\n if (shapeFlag & (1 | 64)) {\n const slot = children.default;\n if (slot) {\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n } else {\n type = 32;\n const slotFlag = children._;\n if (!slotFlag && !isInternalObject(children)) {\n children._ctx = currentRenderingInstance;\n } else if (slotFlag === 3 && currentRenderingInstance) {\n if (currentRenderingInstance.slots._ === 1) {\n children._ = 1;\n } else {\n children._ = 2;\n vnode.patchFlag |= 1024;\n }\n }\n }\n } else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32;\n } else {\n children = String(children);\n if (shapeFlag & 64) {\n type = 16;\n children = [createTextVNode(children)];\n } else {\n type = 8;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === \"class\") {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n } else if (key === \"style\") {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n } else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing ? [].concat(existing, incoming) : incoming;\n }\n } else if (key !== \"\") {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n // to be immediately set\n next: null,\n subTree: null,\n // will be set synchronously right after creation\n effect: null,\n update: null,\n // will be set synchronously right after creation\n job: null,\n scope: new EffectScope(\n true\n /* detached */\n ),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n ids: parent ? parent.ids : [\"\", 0, 0],\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n // to be set immediately\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ctx = createDevRenderContext(instance);\n } else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit.bind(null, instance);\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n const g = getGlobalThis();\n const registerGlobalSetter = (key, setter) => {\n let setters;\n if (!(setters = g[key])) setters = g[key] = [];\n setters.push(setter);\n return (v) => {\n if (setters.length > 1) setters.forEach((set) => set(v));\n else setters[0](v);\n };\n };\n internalSetCurrentInstance = registerGlobalSetter(\n `__VUE_INSTANCE_SETTERS__`,\n (v) => currentInstance = v\n );\n setInSSRSetupState = registerGlobalSetter(\n `__VUE_SSR_SETTERS__`,\n (v) => isInSSRComponentSetup = v\n );\n}\nconst setCurrentInstance = (instance) => {\n const prev = currentInstance;\n internalSetCurrentInstance(instance);\n instance.scope.on();\n return () => {\n instance.scope.off();\n internalSetCurrentInstance(prev);\n };\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n if (isBuiltInTag(name) || isNativeTag(name)) {\n warn$1(\n \"Do not use built-in or reserved HTML elements as component id: \" + name\n );\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false, optimized = false) {\n isSSR && setInSSRSetupState(isSSR);\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children, optimized || isSSR);\n const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n isSSR && setInSSRSetupState(false);\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn$1(\n `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n );\n }\n }\n instance.accessCache = /* @__PURE__ */ Object.create(null);\n instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposePropsOnRenderContext(instance);\n }\n const { setup } = Component;\n if (setup) {\n pauseTracking();\n const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n const reset = setCurrentInstance(instance);\n const setupResult = callWithErrorHandling(\n setup,\n instance,\n 0,\n [\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n setupContext\n ]\n );\n const isAsyncSetup = isPromise(setupResult);\n resetTracking();\n reset();\n if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {\n markAsyncBoundary(instance);\n }\n if (isAsyncSetup) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n return setupResult.then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n }).catch((e) => {\n handleError(e, instance, 0);\n });\n } else {\n instance.asyncDep = setupResult;\n if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n warn$1(\n `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n );\n }\n }\n } else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n } else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n if (instance.type.__ssrInlineRender) {\n instance.ssrRender = setupResult;\n } else {\n instance.render = setupResult;\n }\n } else if (isObject(setupResult)) {\n if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n warn$1(\n `setup() should not return VNodes directly - return a render function instead.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n exposeSetupStateOnRenderContext(instance);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n warn$1(\n `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n );\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = (i) => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n if (!instance.render) {\n if (!isSSR && compile && !Component.render) {\n const template = Component.template || __VUE_OPTIONS_API__ && resolveMergedOptions(instance).template;\n if (template) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(\n extend(\n {\n isCustomElement,\n delimiters\n },\n compilerOptions\n ),\n componentCompilerOptions\n );\n Component.render = compile(template, finalCompilerOptions);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = Component.render || NOOP;\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n if (__VUE_OPTIONS_API__ && true) {\n const reset = setCurrentInstance(instance);\n pauseTracking();\n try {\n applyOptions(instance);\n } finally {\n resetTracking();\n reset();\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n if (!compile && Component.template) {\n warn$1(\n `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n } else {\n warn$1(`Component is missing template or render function: `, Component);\n }\n }\n}\nconst attrsProxyHandlers = !!(process.env.NODE_ENV !== \"production\") ? {\n get(target, key) {\n markAttrsAccessed();\n track(target, \"get\", \"\");\n return target[key];\n },\n set() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n }\n} : {\n get(target, key) {\n track(target, \"get\", \"\");\n return target[key];\n }\n};\nfunction getSlotsProxy(instance) {\n return new Proxy(instance.slots, {\n get(target, key) {\n track(instance, \"get\", \"$slots\");\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = (exposed) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (instance.exposed) {\n warn$1(`expose() should be called only once per setup().`);\n }\n if (exposed != null) {\n let exposedType = typeof exposed;\n if (exposedType === \"object\") {\n if (isArray(exposed)) {\n exposedType = \"array\";\n } else if (isRef(exposed)) {\n exposedType = \"ref\";\n }\n }\n if (exposedType !== \"object\") {\n warn$1(\n `expose() should be passed a plain object, received ${exposedType}.`\n );\n }\n }\n }\n instance.exposed = exposed || {};\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n let attrsProxy;\n let slotsProxy;\n return Object.freeze({\n get attrs() {\n return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers));\n },\n get slots() {\n return slotsProxy || (slotsProxy = getSlotsProxy(instance));\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n } else {\n return {\n attrs: new Proxy(instance.attrs, attrsProxyHandlers),\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getComponentPublicInstance(instance) {\n if (instance.exposed) {\n return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n } else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n }));\n } else {\n return instance.proxy;\n }\n}\nconst classifyRE = /(?:^|[-_])\\w/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name = inferFromRegistry(\n instance.components || instance.parent.type.components\n ) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const i = getCurrentInstance();\n if (i && i.appContext.config.warnRecursiveComputed) {\n c._warnRecursive = true;\n }\n }\n return c;\n};\n\nfunction h(type, propsOrChildren, children) {\n const doCreateVNode = (type2, props, children2) => {\n setBlockTracking(-1);\n try {\n return createVNode(type2, props, children2);\n } finally {\n setBlockTracking(1);\n }\n };\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n if (isVNode(propsOrChildren)) {\n return doCreateVNode(type, null, [propsOrChildren]);\n }\n return doCreateVNode(type, propsOrChildren);\n } else {\n return doCreateVNode(type, null, propsOrChildren);\n }\n } else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n } else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return doCreateVNode(type, propsOrChildren, children);\n }\n}\n\nfunction initCustomFormatter() {\n if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n return;\n }\n const vueStyle = { style: \"color:#3ba776\" };\n const numberStyle = { style: \"color:#1677ff\" };\n const stringStyle = { style: \"color:#f5222d\" };\n const keywordStyle = { style: \"color:#eb2f96\" };\n const formatter = {\n __vue_custom_formatter: true,\n header(obj) {\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return [\"div\", vueStyle, `VueInstance`];\n } else if (isRef(obj)) {\n pauseTracking();\n const value = obj.value;\n resetTracking();\n return [\n \"div\",\n {},\n [\"span\", vueStyle, genRefFlag(obj)],\n \"<\",\n formatValue(value),\n `>`\n ];\n } else if (isReactive(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n \"<\",\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n } else if (isReadonly(obj)) {\n return [\n \"div\",\n {},\n [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n \"<\",\n formatValue(obj),\n \">\"\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n \"div\",\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n }\n const computed = extractKeys(instance, \"computed\");\n if (computed) {\n blocks.push(createInstanceBlock(\"computed\", computed));\n }\n const injected = extractKeys(instance, \"inject\");\n if (injected) {\n blocks.push(createInstanceBlock(\"injected\", injected));\n }\n blocks.push([\n \"div\",\n {},\n [\n \"span\",\n {\n style: keywordStyle.style + \";opacity:0.66\"\n },\n \"$ (internal): \"\n ],\n [\"object\", { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return [\"span\", {}];\n }\n return [\n \"div\",\n { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n [\n \"div\",\n {\n style: \"color:#476582\"\n },\n type\n ],\n [\n \"div\",\n {\n style: \"padding-left:1.25em\"\n },\n ...Object.keys(target).map((key) => {\n return [\n \"div\",\n {},\n [\"span\", keywordStyle, key + \": \"],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === \"number\") {\n return [\"span\", numberStyle, v];\n } else if (typeof v === \"string\") {\n return [\"span\", stringStyle, JSON.stringify(v)];\n } else if (typeof v === \"boolean\") {\n return [\"span\", keywordStyle, v];\n } else if (isObject(v)) {\n return [\"object\", { object: asRaw ? toRaw(v) : v }];\n } else {\n return [\"span\", stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n } else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n ret.memo = memo.slice();\n ret.cacheIndex = index;\n return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\nconst version = \"3.5.21\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode: isVNode,\n normalizeVNode,\n getComponentPublicInstance,\n ensureValidVNode,\n pushWarningContext,\n popWarningContext\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useId, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/**\n* @vue/runtime-dom v3.5.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { warn, BaseTransitionPropsValidators, h, BaseTransition, assertNumber, getCurrentInstance, onBeforeUpdate, queuePostFlushCb, onMounted, watch, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, unref, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, Text, createRenderer, createHydrationRenderer, isRuntimeOnly } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, NOOP, normalizeCssVarValue, isString, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isSymbol, isFunction, isOn, isModelListener, camelize as camelize$1, isPlainObject, hasOwn, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nlet policy = void 0;\nconst tt = typeof window !== \"undefined\" && window.trustedTypes;\nif (tt) {\n try {\n policy = /* @__PURE__ */ tt.createPolicy(\"vue\", {\n createHTML: (val) => val\n });\n } catch (e) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Error creating trusted types policy: ${e}`);\n }\n}\nconst unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: (child) => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, namespace, is, props) => {\n const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);\n if (tag === \"select\" && props && props.multiple != null) {\n el.setAttribute(\"multiple\", props.multiple);\n }\n return el;\n },\n createText: (text) => doc.createTextNode(text),\n createComment: (text) => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: (node) => node.parentNode,\n nextSibling: (node) => node.nextSibling,\n querySelector: (selector) => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, \"\");\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, namespace, start, end) {\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n if (start && (start === end || start.nextSibling)) {\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling)) break;\n }\n } else {\n templateContainer.innerHTML = unsafeToTrustedHTML(\n namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content\n );\n const template = templateContainer.content;\n if (namespace === \"svg\" || namespace === \"mathml\") {\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = /* @__PURE__ */ extend(\n {},\n BaseTransitionPropsValidators,\n DOMTransitionPropsValidators\n);\nconst decorate$1 = (t) => {\n t.displayName = \"Transition\";\n t.props = TransitionPropsValidators;\n return t;\n};\nconst Transition = /* @__PURE__ */ decorate$1(\n (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)\n);\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach((h2) => h2(...args));\n } else if (hook) {\n hook(...args);\n }\n};\nconst hasExplicitCallback = (hook) => {\n return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const {\n name = \"v\",\n type,\n duration,\n enterFromClass = `${name}-enter-from`,\n enterActiveClass = `${name}-enter-active`,\n enterToClass = `${name}-enter-to`,\n appearFromClass = enterFromClass,\n appearActiveClass = enterActiveClass,\n appearToClass = enterToClass,\n leaveFromClass = `${name}-leave-from`,\n leaveActiveClass = `${name}-leave-active`,\n leaveToClass = `${name}-leave-to`\n } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const {\n onBeforeEnter,\n onEnter,\n onEnterCancelled,\n onLeave,\n onLeaveCancelled,\n onBeforeAppear = onBeforeEnter,\n onAppear = onEnter,\n onAppearCancelled = onEnterCancelled\n } = baseProps;\n const finishEnter = (el, isAppear, done, isCancelled) => {\n el._enterCancelled = isCancelled;\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n if (!el._enterCancelled) {\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n } else {\n addTransitionClass(el, leaveActiveClass);\n forceReflow();\n }\n nextFrame(() => {\n if (!el._isLeaving) {\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false, void 0, true);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true, void 0, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n } else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n } else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(res, \"<transition> explicit duration\");\n }\n return res;\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el[vtcKey] = void 0;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = el._endId = ++endId;\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout != null) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + \"end\";\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n }\n const hasTransform = type === TRANSITION && /\\b(?:transform|all)(?:,|$)/.test(\n getStyleProperties(`${TRANSITION}Property`).toString()\n );\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n if (s === \"auto\") return 0;\n return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n const transitionClasses = el[vtcKey];\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n }\n if (value == null) {\n el.removeAttribute(\"class\");\n } else if (isSVG) {\n el.setAttribute(\"class\", value);\n } else {\n el.className = value;\n }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n // used for prop mismatch check during hydration\n name: \"show\",\n beforeMount(el, { value }, { transition }) {\n el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n } else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue) return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n } else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n } else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: \"none\" } };\n }\n };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(\n document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n ).forEach((node) => setVarsOnNode(node, vars));\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.getCssVars = () => getter(instance.proxy);\n }\n const setVars = () => {\n const vars = getter(instance.proxy);\n if (instance.ce) {\n setVarsOnNode(instance.ce, vars);\n } else {\n setVarsOnVNode(instance.subTree, vars);\n }\n updateTeleports(vars);\n };\n onBeforeUpdate(() => {\n queuePostFlushCb(setVars);\n });\n onMounted(() => {\n watch(setVars, NOOP, { flush: \"post\" });\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n } else if (vnode.type === Fragment) {\n vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n } else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor) break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n let cssText = \"\";\n for (const key in vars) {\n const value = normalizeCssVarValue(vars[key]);\n style.setProperty(`--${key}`, value);\n cssText += `--${key}: ${value};`;\n }\n style[CSS_VAR_TEXT] = cssText;\n }\n}\n\nconst displayRE = /(?:^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n let hasControlledDisplay = false;\n if (next && !isCssString) {\n if (prev) {\n if (!isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n } else {\n for (const prevStyle of prev.split(\";\")) {\n const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n }\n }\n for (const key in next) {\n if (key === \"display\") {\n hasControlledDisplay = true;\n }\n setStyle(style, key, next[key]);\n }\n } else {\n if (isCssString) {\n if (prev !== next) {\n const cssVarText = style[CSS_VAR_TEXT];\n if (cssVarText) {\n next += \";\" + cssVarText;\n }\n style.cssText = next;\n hasControlledDisplay = displayRE.test(next);\n }\n } else if (prev) {\n el.removeAttribute(\"style\");\n }\n }\n if (vShowOriginalDisplay in el) {\n el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n if (el[vShowHidden]) {\n style.display = \"none\";\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach((v) => setStyle(style, name, v));\n } else {\n if (val == null) val = \"\";\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (semicolonRE.test(val)) {\n warn(\n `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n );\n }\n }\n if (name.startsWith(\"--\")) {\n style.setProperty(name, val);\n } else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n style.setProperty(\n hyphenate(prefixed),\n val.replace(importantRE, \"\"),\n \"important\"\n );\n } else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== \"filter\" && name in style) {\n return prefixCache[rawName] = name;\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return prefixCache[rawName] = prefixed;\n }\n }\n return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) {\n if (isSVG && key.startsWith(\"xlink:\")) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (value == null || isBoolean && !includeBooleanAttr(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(\n key,\n isBoolean ? \"\" : isSymbol(value) ? String(value) : value\n );\n }\n }\n}\n\nfunction patchDOMProp(el, key, value, parentComponent, attrName) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n if (value != null) {\n el[key] = key === \"innerHTML\" ? unsafeToTrustedHTML(value) : value;\n }\n return;\n }\n const tag = el.tagName;\n if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n !tag.includes(\"-\")) {\n const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n const newValue = value == null ? (\n // #11647: value should be set as empty string for null and undefined,\n // but <input type=\"checkbox\"> should be set as 'on'.\n el.type === \"checkbox\" ? \"on\" : \"\"\n ) : String(value);\n if (oldValue !== newValue || !(\"_value\" in el)) {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n el._value = value;\n return;\n }\n let needRemove = false;\n if (value === \"\" || value == null) {\n const type = typeof el[key];\n if (type === \"boolean\") {\n value = includeBooleanAttr(value);\n } else if (value == null && type === \"string\") {\n value = \"\";\n needRemove = true;\n } else if (type === \"number\") {\n value = 0;\n needRemove = true;\n }\n }\n try {\n el[key] = value;\n } catch (e) {\n if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n warn(\n `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n e\n );\n }\n }\n needRemove && el.removeAttribute(attrName || key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n const invokers = el[veiKey] || (el[veiKey] = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n existingInvoker.value = !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue;\n } else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n const invoker = invokers[rawName] = createInvoker(\n !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue,\n instance\n );\n addEventListener(el, name, invoker, options);\n } else if (existingInvoker) {\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = void 0;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while (m = name.match(optionsModifierRE)) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n if (!e._vts) {\n e._vts = Date.now();\n } else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(\n patchStopImmediatePropagation(e, invoker.value),\n instance,\n 5,\n [e]\n );\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction sanitizeEventValue(value, propName) {\n if (isFunction(value) || isArray(value)) {\n return value;\n }\n warn(\n `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop?\nExpected function or array of functions, received type ${typeof value}.`\n );\n return NOOP;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(\n (fn) => (e2) => !e2._stopped && fn && fn(e2)\n );\n } else {\n return value;\n }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {\n const isSVG = namespace === \"svg\";\n if (key === \"class\") {\n patchClass(el, nextValue, isSVG);\n } else if (key === \"style\") {\n patchStyle(el, prevValue, nextValue);\n } else if (isOn(key)) {\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue);\n if (!el.tagName.includes(\"-\") && (key === \"value\" || key === \"checked\" || key === \"selected\")) {\n patchAttr(el, key, nextValue, isSVG, parentComponent, key !== \"value\");\n }\n } else if (\n // #11081 force set props for possible async custom element\n el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue))\n ) {\n patchDOMProp(el, camelize$1(key), nextValue, parentComponent, key);\n } else {\n if (key === \"true-value\") {\n el._trueValue = nextValue;\n } else if (key === \"false-value\") {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n return true;\n }\n if (key in el && isNativeOn(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\" || key === \"autocorrect\") {\n return false;\n }\n if (key === \"form\") {\n return false;\n }\n if (key === \"list\" && el.tagName === \"INPUT\") {\n return false;\n }\n if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n return false;\n }\n if (key === \"width\" || key === \"height\") {\n const tag = el.tagName;\n if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n return false;\n }\n }\n if (isNativeOn(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nconst REMOVAL = {};\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, extraOptions, _createApp) {\n let Comp = defineComponent(options, extraOptions);\n if (isPlainObject(Comp)) Comp = extend({}, Comp, extraOptions);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, _createApp);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst defineSSRCustomElement = (/* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {\n return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);\n});\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, _createApp = createApp) {\n super();\n this._def = _def;\n this._props = _props;\n this._createApp = _createApp;\n this._isVueCE = true;\n /**\n * @internal\n */\n this._instance = null;\n /**\n * @internal\n */\n this._app = null;\n /**\n * @internal\n */\n this._nonce = this._def.nonce;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n this._styleChildren = /* @__PURE__ */ new WeakSet();\n this._ob = null;\n if (this.shadowRoot && _createApp !== createApp) {\n this._root = this.shadowRoot;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n warn(\n `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n );\n }\n if (_def.shadowRoot !== false) {\n this.attachShadow({ mode: \"open\" });\n this._root = this.shadowRoot;\n } else {\n this._root = this;\n }\n }\n }\n connectedCallback() {\n if (!this.isConnected) return;\n if (!this.shadowRoot && !this._resolved) {\n this._parseSlots();\n }\n this._connected = true;\n let parent = this;\n while (parent = parent && (parent.parentNode || parent.host)) {\n if (parent instanceof VueElement) {\n this._parent = parent;\n break;\n }\n }\n if (!this._instance) {\n if (this._resolved) {\n this._mount(this._def);\n } else {\n if (parent && parent._pendingResolve) {\n this._pendingResolve = parent._pendingResolve.then(() => {\n this._pendingResolve = void 0;\n this._resolveDef();\n });\n } else {\n this._resolveDef();\n }\n }\n }\n }\n _setParent(parent = this._parent) {\n if (parent) {\n this._instance.parent = parent._instance;\n this._inheritParentContext(parent);\n }\n }\n _inheritParentContext(parent = this._parent) {\n if (parent && this._app) {\n Object.setPrototypeOf(\n this._app._context.provides,\n parent._instance.provides\n );\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n if (this._ob) {\n this._ob.disconnect();\n this._ob = null;\n }\n this._app && this._app.unmount();\n if (this._instance) this._instance.ce = void 0;\n this._app = this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n if (this._pendingResolve) {\n return;\n }\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n this._ob = new MutationObserver((mutations) => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n });\n this._ob.observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n this._resolved = true;\n this._pendingResolve = void 0;\n const { props, styles } = def;\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || opt && opt.type === Number) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n this._resolveProps(def);\n if (this.shadowRoot) {\n this._applyStyles(styles);\n } else if (!!(process.env.NODE_ENV !== \"production\") && styles) {\n warn(\n \"Custom element style injection is not supported when using shadowRoot: false\"\n );\n }\n this._mount(def);\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n this._pendingResolve = asyncDef().then((def) => {\n def.configureApp = this._def.configureApp;\n resolve(this._def = def, true);\n });\n } else {\n resolve(this._def);\n }\n }\n _mount(def) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) && !def.name) {\n def.name = \"VueElement\";\n }\n this._app = this._createApp(def);\n this._inheritParentContext();\n if (def.configureApp) {\n def.configureApp(this._app);\n }\n this._app._ceVNode = this._createVNode();\n this._app.mount(this._root);\n const exposed = this._instance && this._instance.exposed;\n if (!exposed) return;\n for (const key in exposed) {\n if (!hasOwn(this, key)) {\n Object.defineProperty(this, key, {\n // unwrap ref to be consistent with public instance behavior\n get: () => unref(exposed[key])\n });\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`Exposed property \"${key}\" already exists on custom element.`);\n }\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n for (const key of Object.keys(this)) {\n if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key]);\n }\n }\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val, true, true);\n }\n });\n }\n }\n _setAttr(key) {\n if (key.startsWith(\"data-v-\")) return;\n const has = this.hasAttribute(key);\n let value = has ? this.getAttribute(key) : REMOVAL;\n const camelKey = camelize$1(key);\n if (has && this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false, true);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = false) {\n if (val !== this._props[key]) {\n if (val === REMOVAL) {\n delete this._props[key];\n } else {\n this._props[key] = val;\n if (key === \"key\" && this._app) {\n this._app._ceVNode.key = val;\n }\n }\n if (shouldUpdate && this._instance) {\n this._update();\n }\n if (shouldReflect) {\n const ob = this._ob;\n ob && ob.disconnect();\n if (val === true) {\n this.setAttribute(hyphenate(key), \"\");\n } else if (typeof val === \"string\" || typeof val === \"number\") {\n this.setAttribute(hyphenate(key), val + \"\");\n } else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n ob && ob.observe(this, { attributes: true });\n }\n }\n }\n _update() {\n const vnode = this._createVNode();\n if (this._app) vnode.appContext = this._app._context;\n render(vnode, this._root);\n }\n _createVNode() {\n const baseProps = {};\n if (!this.shadowRoot) {\n baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);\n }\n const vnode = createVNode(this._def, extend(baseProps, this._props));\n if (!this._instance) {\n vnode.ce = (instance) => {\n this._instance = instance;\n instance.ce = this;\n instance.isCE = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ceReload = (newStyles) => {\n if (this._styles) {\n this._styles.forEach((s) => this._root.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(\n new CustomEvent(\n event,\n isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }\n )\n );\n };\n instance.emit = (event, ...args) => {\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n this._setParent();\n };\n }\n return vnode;\n }\n _applyStyles(styles, owner) {\n if (!styles) return;\n if (owner) {\n if (owner === this._def || this._styleChildren.has(owner)) {\n return;\n }\n this._styleChildren.add(owner);\n }\n const nonce = this._nonce;\n for (let i = styles.length - 1; i >= 0; i--) {\n const s = document.createElement(\"style\");\n if (nonce) s.setAttribute(\"nonce\", nonce);\n s.textContent = styles[i];\n this.shadowRoot.prepend(s);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (owner) {\n if (owner.__hmrId) {\n if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map();\n let entry = this._childStyles.get(owner.__hmrId);\n if (!entry) {\n this._childStyles.set(owner.__hmrId, entry = []);\n }\n entry.push(s);\n }\n } else {\n (this._styles || (this._styles = [])).push(s);\n }\n }\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _parseSlots() {\n const slots = this._slots = {};\n let n;\n while (n = this.firstChild) {\n const slotName = n.nodeType === 1 && n.getAttribute(\"slot\") || \"default\";\n (slots[slotName] || (slots[slotName] = [])).push(n);\n this.removeChild(n);\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _renderSlots() {\n const outlets = (this._teleportTarget || this).querySelectorAll(\"slot\");\n const scopeId = this._instance.type.__scopeId;\n for (let i = 0; i < outlets.length; i++) {\n const o = outlets[i];\n const slotName = o.getAttribute(\"name\") || \"default\";\n const content = this._slots[slotName];\n const parent = o.parentNode;\n if (content) {\n for (const n of content) {\n if (scopeId && n.nodeType === 1) {\n const id = scopeId + \"-s\";\n const walker = document.createTreeWalker(n, 1);\n n.setAttribute(id, \"\");\n let child;\n while (child = walker.nextNode()) {\n child.setAttribute(id, \"\");\n }\n }\n parent.insertBefore(n, o);\n }\n } else {\n while (o.firstChild) parent.insertBefore(o.firstChild, o);\n }\n parent.removeChild(o);\n }\n }\n /**\n * @internal\n */\n _injectChildStyle(comp) {\n this._applyStyles(comp.styles, comp);\n }\n /**\n * @internal\n */\n _removeChildStyle(comp) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this._styleChildren.delete(comp);\n if (this._childStyles && comp.__hmrId) {\n const oldStyles = this._childStyles.get(comp.__hmrId);\n if (oldStyles) {\n oldStyles.forEach((s) => this._root.removeChild(s));\n oldStyles.length = 0;\n }\n }\n }\n }\n}\nfunction useHost(caller) {\n const instance = getCurrentInstance();\n const el = instance && instance.ce;\n if (el) {\n return el;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!instance) {\n warn(\n `${caller || \"useHost\"} called without an active component instance.`\n );\n } else {\n warn(\n `${caller || \"useHost\"} can only be used in components defined via defineCustomElement.`\n );\n }\n }\n return null;\n}\nfunction useShadowRoot() {\n const el = !!(process.env.NODE_ENV !== \"production\") ? useHost(\"useShadowRoot\") : useHost();\n return el && el.shadowRoot;\n}\n\nfunction useCssModule(name = \"$style\") {\n {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst decorate = (t) => {\n delete t.props.mode;\n return t;\n};\nconst TransitionGroupImpl = /* @__PURE__ */ decorate({\n name: \"TransitionGroup\",\n props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n if (!hasCSSTransform(\n prevChildren[0].el,\n instance.vnode.el,\n moveClass\n )) {\n prevChildren = [];\n return;\n }\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n forceReflow();\n movedChildren.forEach((c) => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = \"\";\n const cb = el[moveCbKey] = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || e.propertyName.endsWith(\"transform\")) {\n el.removeEventListener(\"transitionend\", cb);\n el[moveCbKey] = null;\n removeTransitionClass(el, moveClass);\n }\n };\n el.addEventListener(\"transitionend\", cb);\n });\n prevChildren = [];\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = [];\n if (children) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.el && child.el instanceof Element) {\n prevChildren.push(child);\n setTransitionHooks(\n child,\n resolveTransitionHooks(\n child,\n cssTransitionProps,\n state,\n instance\n )\n );\n positionMap.set(\n child,\n child.el.getBoundingClientRect()\n );\n }\n }\n }\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(\n child,\n resolveTransitionHooks(child, cssTransitionProps, state, instance)\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") && child.type !== Text) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n return createVNode(tag, null, children);\n };\n }\n});\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el[moveCbKey]) {\n el[moveCbKey]();\n }\n if (el[enterCbKey]) {\n el[enterCbKey]();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n const clone = el.cloneNode();\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.forEach((cls) => {\n cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n clone.style.display = \"none\";\n const container = root.nodeType === 1 ? root : root.parentNode;\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event(\"input\"));\n }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n if (e.target.composing) return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = looseToNumber(domValue);\n }\n el[assignKey](domValue);\n });\n if (trim) {\n addEventListener(el, \"change\", () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, \"compositionstart\", onCompositionStart);\n addEventListener(el, \"compositionend\", onCompositionEnd);\n addEventListener(el, \"change\", onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? \"\" : value;\n },\n beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (el.composing) return;\n const elValue = (number || el.type === \"number\") && !/^0\\d/.test(el.value) ? looseToNumber(el.value) : el.value;\n const newValue = value == null ? \"\" : value;\n if (elValue === newValue) {\n return;\n }\n if (document.activeElement === el && el.type !== \"range\") {\n if (lazy && value === oldValue) {\n return;\n }\n if (trim && el.value.trim() === newValue) {\n return;\n }\n }\n el.value = newValue;\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el[assignKey];\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n } else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n } else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n } else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n } else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n let checked;\n if (isArray(value)) {\n checked = looseIndexOf(value, vnode.props.value) > -1;\n } else if (isSet(value)) {\n checked = value.has(vnode.props.value);\n } else {\n if (value === oldValue) return;\n checked = looseEqual(value, getCheckboxValue(el, true));\n }\n if (el.checked !== checked) {\n el.checked = checked;\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n el[assignKey](getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, \"change\", () => {\n const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n );\n el[assignKey](\n el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n );\n el._assigning = true;\n nextTick(() => {\n el._assigning = false;\n });\n });\n el[assignKey] = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n if (!el._assigning) {\n setSelected(el, value);\n }\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n const isArrayValue = isArray(value);\n if (isMultiple && !isArrayValue && !isSet(value)) {\n !!(process.env.NODE_ENV !== \"production\") && warn(\n `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n );\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArrayValue) {\n const optionType = typeof optionValue;\n if (optionType === \"string\" || optionType === \"number\") {\n option.selected = value.some((v) => String(v) === String(optionValue));\n } else {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n } else {\n option.selected = value.has(optionValue);\n }\n } else if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) el.selectedIndex = i;\n return;\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\nfunction getValue(el) {\n return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n const key = checked ? \"_trueValue\" : \"_falseValue\";\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"created\");\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"mounted\");\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"updated\");\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case \"SELECT\":\n return vModelSelect;\n case \"TEXTAREA\":\n return vModelText;\n default:\n switch (type) {\n case \"checkbox\":\n return vModelCheckbox;\n case \"radio\":\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(\n el.tagName,\n vnode.props && vnode.props.type\n );\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n } else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n } else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== \"string\") {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(),\n vnode.props && vnode.props.type\n );\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n stop: (e) => e.stopPropagation(),\n prevent: (e) => e.preventDefault(),\n self: (e) => e.target !== e.currentTarget,\n ctrl: (e) => !e.ctrlKey,\n shift: (e) => !e.shiftKey,\n alt: (e) => !e.altKey,\n meta: (e) => !e.metaKey,\n left: (e) => \"button\" in e && e.button !== 0,\n middle: (e) => \"button\" in e && e.button !== 1,\n right: (e) => \"button\" in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n const cache = fn._withMods || (fn._withMods = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers)) return;\n }\n return fn(event, ...args);\n }));\n};\nconst keyNames = {\n esc: \"escape\",\n space: \" \",\n up: \"arrow-up\",\n left: \"arrow-left\",\n right: \"arrow-right\",\n down: \"arrow-down\",\n delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n const cache = fn._withKeys || (fn._withKeys = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = ((event) => {\n if (!(\"key\" in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(\n (k) => k === eventKey || keyNames[k] === eventKey\n )) {\n return fn(event);\n }\n }));\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container) return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n component.template = container.innerHTML;\n }\n if (container.nodeType === 1) {\n container.textContent = \"\";\n }\n const proxy = mount(container, false, resolveRootNamespace(container));\n if (container instanceof Element) {\n container.removeAttribute(\"v-cloak\");\n container.setAttribute(\"data-v-app\", \"\");\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, resolveRootNamespace(container));\n }\n };\n return app;\n});\nfunction resolveRootNamespace(container) {\n if (container instanceof SVGElement) {\n return \"svg\";\n }\n if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n return \"mathml\";\n }\n}\nfunction injectNativeTagCheck(app) {\n Object.defineProperty(app.config, \"isNativeTag\", {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n writable: false\n });\n}\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, \"isCustomElement\", {\n get() {\n return isCustomElement;\n },\n set() {\n warn(\n `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n );\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n Object.defineProperty(app.config, \"compilerOptions\", {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n warn(\n `Failed to mount app: mount target selector \"${container}\" returned null.`\n );\n }\n return res;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n warn(\n `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n );\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, useHost, useShadowRoot, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","import { InPageEdit } from '@/InPageEdit'\r\nimport { App, inject, provide } from 'vue'\r\n\r\nexport const IPEInjectKey = Symbol('IPEInjectKey')\r\n\r\nexport const injectIPE = (ipe: InPageEdit, app?: App) => {\r\n if (app) {\r\n app.provide(IPEInjectKey, ipe)\r\n } else {\r\n provide(IPEInjectKey, ipe)\r\n }\r\n return ipe\r\n}\r\n\r\nexport const useIPE = () => {\r\n return inject<InPageEdit>(IPEInjectKey)\r\n}\r\n","/**\r\n * SchemaForm\r\n * 一个基于 Schemastery 的 Web Components 表单生成器\r\n *\r\n * ✅ 使用 TypeScript,组件前缀统一为 <schema-*>\r\n * ✅ 简单样式 + 通过 CSS 变量 --schema-* 配置主题\r\n * ✅ 暴露 API:设置/获取表单数据、设置 Schema、校验\r\n * ✅ 支持的类型:string / number / boolean / date / const / object / array / tuple / dict / union\r\n * ✅ 支持按类型拆分的独立 Field 组件:<schema-form-string> 等,可单独使用\r\n * ✅ 字段容器带类名:schema-form-item schema-type-xxx,并带 data-path=\"a.b.0.c\"\r\n * ✅ schema-form-array 支持条目上下移动\r\n * ✅ 主类为泛型:SchemaForm<T>\r\n * ✅ 提供 createSchemasteryForm<T>() 工厂,返回带强类型的 FormInstance<T>\r\n *\r\n * @license MIT\r\n * @author dragon-fish\r\n * @author @openai/gpt-5\r\n */\r\n\r\nimport Schema from 'schemastery'\r\nimport BASE_STYLE from './style.scss?inline'\r\n\r\n// ---------------------------------------------------------------------------\r\n// i18n 配置\r\n// ---------------------------------------------------------------------------\r\nexport interface SchemaFormI18n {\r\n arrayAdd?: string\r\n arrayMoveUp?: string\r\n arrayMoveDown?: string\r\n arrayRemove?: string\r\n dictAdd?: string\r\n dictRemove?: string\r\n rootLabel?: string\r\n}\r\nexport const DEFAULT_I18N: Required<SchemaFormI18n> = {\r\n arrayAdd: '+',\r\n arrayMoveUp: '↑',\r\n arrayMoveDown: '↓',\r\n arrayRemove: '×',\r\n dictAdd: '+',\r\n dictRemove: '×',\r\n rootLabel: 'root',\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 类型与工具\r\n// ---------------------------------------------------------------------------\r\nexport type JSONValue = string | number | boolean | null | JSONValue[] | { [k: string]: JSONValue }\r\n// 导出类型定义\r\nexport interface SchemaFormChangeDetail<T = any> {\r\n path: (string | number)[]\r\n value: any\r\n state: T\r\n}\r\nexport type SchemaFormChangeEvent<T = any> = Event & {\r\n detail: SchemaFormChangeDetail<T>\r\n}\r\n\r\n// 路径工具\r\ntype PathSeg = string | number\r\nconst getByPath = (obj: any, path: PathSeg[]): any => path.reduce((o, k) => o?.[k], obj)\r\nconst setByPath = (obj: any, path: PathSeg[], value: any): void => {\r\n if (!path.length) return\r\n let cursor = obj\r\n for (let i = 0; i < path.length - 1; i++) {\r\n const key = path[i]\r\n if (cursor[key] == null) cursor[key] = typeof path[i + 1] === 'number' ? [] : {}\r\n cursor = cursor[key]\r\n }\r\n cursor[path[path.length - 1]] = value\r\n}\r\nconst dotPath = (path: PathSeg[]) => path.map(String).join('.')\r\n\r\n// ✅ 用于生成稳定的 id/name(label for 依赖 id)\r\nconst sanitizeForId = (s: string) => s.replace(/[^a-zA-Z0-9_-]/g, '_')\r\nconst idOf = (path: PathSeg[]) => `schema_${sanitizeForId(dotPath(path) || 'root')}`\r\nconst nameOf = (path: PathSeg[]) => dotPath(path)\r\n\r\n// 简单 uid(如需临时唯一标识可用)\r\nconst uid = (() => {\r\n let i = 0\r\n return () => (++i).toString(36)\r\n})()\r\n\r\n// 值转换(input -> 目标类型)\r\nfunction castToType(type: string, value: any) {\r\n if (value == null) return value\r\n switch (type) {\r\n case 'number':\r\n case 'natural':\r\n case 'percent': {\r\n if (value === '') return undefined\r\n const num = Number(value)\r\n return Number.isNaN(num) ? undefined : num\r\n }\r\n case 'boolean':\r\n return Boolean(value)\r\n case 'date': {\r\n if (!value) return undefined\r\n const d = new Date(value)\r\n return Number.isNaN(+d) ? undefined : d\r\n }\r\n case 'const':\r\n case 'string':\r\n default:\r\n return value\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Schemastery 实例识别/构建(带泛型)\r\n// ---------------------------------------------------------------------------\r\nfunction isSchemaInstance<T = any>(input: any): input is Schema<T> {\r\n return typeof input === 'function' && !!input?.type\r\n}\r\nfunction ensureSchemaInstance<T = any>(input: any): Schema<T> {\r\n if (!input) throw new Error('schema is required')\r\n if (isSchemaInstance<T>(input)) return input\r\n try {\r\n // @ts-ignore\r\n const inst = Schema.from(input)\r\n if (isSchemaInstance<T>(inst)) return inst\r\n } catch {}\r\n if (input?.type) {\r\n const t = input.type\r\n // @ts-ignore\r\n if ((Schema as any)[t]) return (Schema as any)[t](input.inner ?? input.list ?? input.dict)\r\n }\r\n throw new Error('无法从传入对象生成 Schemastery 实例,请传入 schema 或 schema.toJSON() 的结果。')\r\n}\r\n\r\nfunction metaOf(schema: any): any {\r\n return schema?.meta ?? {}\r\n}\r\nfunction unionIsEnum(list: any[]): boolean {\r\n return list.length > 0 && list.every((s) => s?.type === 'const')\r\n}\r\nfunction defaultOf<T = any>(schema: Schema<T>): T {\r\n if (!schema) return undefined as unknown as T\r\n const anySchema: any = schema as any\r\n const meta = anySchema.meta || {}\r\n // 优先 meta.default\r\n if (Object.prototype.hasOwnProperty.call(meta, 'default')) return meta.default as T\r\n const type = anySchema.type\r\n // 某些场景下直接调用 schema() 可返回默认值\r\n try {\r\n const direct = schema()\r\n if (direct !== undefined) return direct as T\r\n } catch {}\r\n switch (type) {\r\n case 'string':\r\n return '' as unknown as T\r\n case 'number':\r\n case 'natural':\r\n case 'percent':\r\n return 0 as unknown as T\r\n case 'boolean':\r\n return false as unknown as T\r\n case 'array':\r\n return [] as unknown as T\r\n case 'tuple':\r\n return [] as unknown as T\r\n case 'object':\r\n return {} as unknown as T\r\n case 'dict':\r\n return {} as unknown as T\r\n case 'union': {\r\n const list = anySchema.list || []\r\n if (list.length) return defaultOf(list[0]) as T\r\n return undefined as unknown as T\r\n }\r\n case 'const':\r\n return anySchema.value as T\r\n case 'date':\r\n return undefined as unknown as T\r\n default:\r\n return undefined as unknown as T\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 字段基础类(供各 schema-form-* 继承) —— 泛型化:值类型 T 绑定到 Schema<T>\r\n// ---------------------------------------------------------------------------\r\nabstract class BaseFieldElement<T = any> extends HTMLElement {\r\n /** Schemastery 子 schema(泛型) */ protected _schema!: Schema<T>\r\n /** 字段路径(用于 data-path 与事件)*/ protected _path: PathSeg[] = []\r\n /** 当前值(UI 原始值)*/ protected _value!: T\r\n /** ShadowRoot */ protected $root: ShadowRoot\r\n /** 显示标签 */ protected _label?: string\r\n /** i18n 文本 */ protected _i18n = DEFAULT_I18N\r\n\r\n constructor() {\r\n super()\r\n this.$root = this.attachShadow({ mode: 'open' })\r\n const style = document.createElement('style')\r\n style.textContent = BASE_STYLE\r\n this.$root.appendChild(style)\r\n }\r\n\r\n /** 初始化公共容器(带类名与 data-path) */\r\n protected makeFieldContainer(typeClass: string, description?: string) {\r\n const $field = document.createElement('div')\r\n $field.className = `field schema-form-item schema-type-${typeClass}`\r\n $field.setAttribute('data-path', dotPath(this._path))\r\n if (this._label) {\r\n const $label = document.createElement('label')\r\n $label.className = 'label'\r\n $label.textContent = this._label\r\n $field.appendChild($label)\r\n }\r\n if (description) {\r\n const $desc = document.createElement('div')\r\n $desc.className = 'helper'\r\n $desc.textContent = description\r\n $field.appendChild($desc)\r\n }\r\n return $field\r\n }\r\n\r\n /** 外部设置 schema/path/label/value */\r\n set schema(v: Schema<T>) {\r\n this._schema = ensureSchemaInstance<T>(v as any)\r\n this.render()\r\n }\r\n get schema() {\r\n return this._schema\r\n }\r\n set path(p: PathSeg[]) {\r\n this._path = p ?? []\r\n this.render()\r\n }\r\n get path() {\r\n return this._path\r\n }\r\n set label(v: string | undefined) {\r\n this._label = v\r\n this.render()\r\n }\r\n get label() {\r\n return this._label\r\n }\r\n set i18n(v: Partial<SchemaFormI18n> | undefined) {\r\n if (v) this._i18n = { ...this._i18n, ...v }\r\n this.render()\r\n }\r\n get i18n() {\r\n return this._i18n\r\n }\r\n setValue(v: T) {\r\n this._value = v as T\r\n this.render()\r\n }\r\n getValue(): T {\r\n return this._value\r\n }\r\n\r\n /** 子类实现具体渲染 */\r\n protected abstract render(): void\r\n\r\n /** 触发变更事件(冒泡) */\r\n protected emitChange(value: T) {\r\n this._value = value\r\n this.dispatchEvent(\r\n new CustomEvent('change', {\r\n bubbles: true,\r\n composed: true,\r\n detail: { path: this._path, value },\r\n })\r\n )\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 具体字段实现:string / number / boolean / date / const —— 泛型绑定\r\n// ---------------------------------------------------------------------------\r\nclass SchemaFormString extends BaseFieldElement<string | undefined> {\r\n private $input?: HTMLInputElement\r\n\r\n protected render() {\r\n // 如果已经有输入框,只更新值而不重新创建\r\n if (this.$input && this.$root.contains(this.$input)) {\r\n const currentValue = (this._value ?? '') as string\r\n if (this.$input.value !== currentValue && document.activeElement !== this.$input) {\r\n this.$input.value = currentValue\r\n }\r\n return\r\n }\r\n\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('string', meta.description)\r\n const $input = document.createElement('input')\r\n this.$input = $input\r\n $input.className = 'input'\r\n $input.type = 'text'\r\n $input.name = nameOf(this._path)\r\n $input.id = idOf(this._path)\r\n if (meta?.pattern?.source) $input.pattern = meta.pattern.source\r\n if (meta?.max != null) $input.maxLength = meta.max\r\n $input.value = (this._value ?? '') as any\r\n $input.oninput = () => this.emitChange(castToType('string', $input.value) as any)\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $input.id\r\n $field.appendChild($input)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-string')) {\r\n customElements.define('schema-form-string', SchemaFormString)\r\n}\r\n\r\nclass SchemaFormNumber extends BaseFieldElement<number | undefined> {\r\n private $input?: HTMLInputElement\r\n\r\n protected render() {\r\n // 如果已经有输入框,只更新值而不重新创建\r\n if (this.$input && this.$root.contains(this.$input)) {\r\n const currentValue = (this._value ?? '') as any\r\n if (this.$input.value !== String(currentValue) && document.activeElement !== this.$input) {\r\n this.$input.value = currentValue\r\n }\r\n return\r\n }\r\n\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const t = (this._schema as any)?.type ?? 'number'\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('number', meta.description)\r\n const $input = document.createElement('input')\r\n this.$input = $input\r\n $input.className = 'input'\r\n $input.type = 'number'\r\n $input.name = nameOf(this._path)\r\n $input.id = idOf(this._path)\r\n if (meta?.min != null) $input.min = String(meta.min)\r\n if (meta?.max != null) $input.max = String(meta.max)\r\n if (meta?.step != null) $input.step = String(meta.step)\r\n if (t === 'percent' && !$input.step) $input.step = '0.01'\r\n $input.value = (this._value ?? '') as any\r\n $input.oninput = () => this.emitChange(castToType(t, $input.value) as any)\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $input.id\r\n $field.appendChild($input)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-number')) {\r\n customElements.define('schema-form-number', SchemaFormNumber)\r\n}\r\n\r\nclass SchemaFormBoolean extends BaseFieldElement<boolean> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('boolean', meta.description)\r\n const $box = document.createElement('label')\r\n $box.className = 'checkbox'\r\n const $input = document.createElement('input')\r\n $input.type = 'checkbox'\r\n $input.checked = Boolean(this._value)\r\n $input.name = nameOf(this._path)\r\n $input.id = idOf(this._path)\r\n const $txt = document.createElement('span')\r\n $txt.textContent = this._label ?? ''\r\n $input.onchange = () => this.emitChange($input.checked)\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $input.id\r\n $box.append($input, $txt)\r\n $field.appendChild($box)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-boolean')) {\r\n customElements.define('schema-form-boolean', SchemaFormBoolean)\r\n}\r\n\r\nclass SchemaFormDate extends BaseFieldElement<Date | undefined> {\r\n private $input?: HTMLInputElement\r\n\r\n protected render() {\r\n // 如果已经有输入框,只更新值而不重新创建\r\n if (this.$input && this.$root.contains(this.$input)) {\r\n const currentDate = (this._value ?? null) as Date | null\r\n if (document.activeElement !== this.$input) {\r\n this.$input.valueAsDate = currentDate\r\n }\r\n return\r\n }\r\n\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('date', meta.description)\r\n const $input = document.createElement('input')\r\n this.$input = $input\r\n $input.className = 'input'\r\n $input.type = 'date'\r\n $input.name = nameOf(this._path)\r\n $input.id = idOf(this._path)\r\n $input.valueAsDate = (this._value ?? null) as any\r\n $input.oninput = () => this.emitChange(castToType('date', $input.value) as any)\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $input.id\r\n $field.appendChild($input)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-date')) {\r\n customElements.define('schema-form-date', SchemaFormDate)\r\n}\r\n\r\nclass SchemaFormConst extends BaseFieldElement<any> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('const', meta.description)\r\n const $ro = document.createElement('input')\r\n $ro.className = 'input'\r\n $ro.readOnly = true\r\n $ro.value = String((this._schema as any).value)\r\n $ro.name = nameOf(this._path)\r\n $ro.id = idOf(this._path)\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $ro.id\r\n $field.appendChild($ro)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-const')) {\r\n customElements.define('schema-form-const', SchemaFormConst)\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 复杂字段:union / tuple / object / array / dict —— 泛型辅助\r\n// ---------------------------------------------------------------------------\r\nfunction tagForSchema(schema: Schema<any>): keyof HTMLElementTagNameMap {\r\n const t = (schema as any).type\r\n switch (t) {\r\n case 'string':\r\n return 'schema-form-string' as any\r\n case 'number':\r\n case 'natural':\r\n case 'percent':\r\n return 'schema-form-number' as any\r\n case 'boolean':\r\n return 'schema-form-boolean' as any\r\n case 'date':\r\n return 'schema-form-date' as any\r\n case 'const':\r\n return 'schema-form-const' as any\r\n case 'array':\r\n return 'schema-form-array' as any\r\n case 'object':\r\n return 'schema-form-object' as any\r\n case 'tuple':\r\n return 'schema-form-tuple' as any\r\n case 'dict':\r\n return 'schema-form-dict' as any\r\n case 'union':\r\n return 'schema-form-union' as any\r\n default:\r\n return 'schema-form-string' as any\r\n }\r\n}\r\n\r\nfunction createFieldForSchema<T>(\r\n schema: Schema<T>,\r\n path: PathSeg[],\r\n value: T,\r\n label?: string,\r\n i18n?: Partial<SchemaFormI18n>\r\n): HTMLElement {\r\n const tag = tagForSchema(schema)\r\n const el = document.createElement(tag) as any\r\n el.schema = schema as Schema<T>\r\n el.path = path\r\n el.label = label\r\n if (i18n) el.i18n = i18n\r\n el.setValue?.(value)\r\n return el\r\n}\r\n\r\nclass SchemaFormUnion extends BaseFieldElement<any> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('union', meta.description)\r\n const list = (this._schema as any).list || []\r\n\r\n if (unionIsEnum(list)) {\r\n const $select = document.createElement('select')\r\n $select.className = 'input'\r\n $select.name = nameOf(this._path)\r\n $select.id = idOf(this._path)\r\n list.forEach((s: any) => {\r\n const opt = document.createElement('option')\r\n opt.value = String(s.value)\r\n opt.textContent = String(s.value)\r\n if (this._value === s.value) opt.selected = true\r\n $select.appendChild(opt)\r\n })\r\n $select.onchange = () => this.emitChange(castToType('string', $select.value))\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $select.id\r\n $field.appendChild($select)\r\n } else {\r\n const $toolbar = document.createElement('div')\r\n $toolbar.className = 'toolbar'\r\n const $select = document.createElement('select')\r\n $select.className = 'input'\r\n $select.name = nameOf(this._path) + '.__type'\r\n $select.id = idOf(this._path) + '__type'\r\n let active = 0\r\n ;(list as any[]).forEach((s: any, i: number) => {\r\n const opt = document.createElement('option')\r\n opt.value = String(i)\r\n opt.textContent = s.type\r\n $select.appendChild(opt)\r\n })\r\n $select.onchange = () => {\r\n active = Number($select.value)\r\n const sub = list[active]\r\n const next = defaultOf(sub)\r\n this.emitChange(next)\r\n renderChild()\r\n }\r\n const $label = $field.querySelector('label.label') as HTMLLabelElement | null\r\n if ($label) $label.htmlFor = $select.id\r\n $toolbar.appendChild($select)\r\n $field.appendChild($toolbar)\r\n\r\n const $box = document.createElement('div')\r\n $box.className = 'group'\r\n const renderChild = () => {\r\n $box.innerHTML = ''\r\n const current = list[active]\r\n const child = createFieldForSchema(current, this._path, this._value, this._label)\r\n child.addEventListener('change', (e: any) => this.emitChange(e.detail.value))\r\n $box.appendChild(child)\r\n }\r\n renderChild()\r\n $field.appendChild($box)\r\n }\r\n\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-union')) {\r\n customElements.define('schema-form-union', SchemaFormUnion)\r\n}\r\n\r\nclass SchemaFormTuple extends BaseFieldElement<any[]> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('tuple', meta.description)\r\n const $box = document.createElement('div')\r\n $box.className = 'group'\r\n const arr: any[] = Array.isArray(this._value) ? this._value : []\r\n ;((this._schema as any).list || []).forEach((sub: any, i: number) => {\r\n const child = createFieldForSchema(\r\n sub,\r\n [...this._path, i],\r\n arr[i],\r\n `${this._label ?? ''}[${i}]`\r\n )\r\n child.addEventListener('change', (e: any) => {\r\n const copy = arr.slice()\r\n copy[i] = e.detail.value\r\n this.emitChange(copy)\r\n })\r\n $box.appendChild(child)\r\n })\r\n $field.appendChild($box)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-tuple')) {\r\n customElements.define('schema-form-tuple', SchemaFormTuple)\r\n}\r\n\r\nclass SchemaFormObject extends BaseFieldElement<Record<string, any>> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('object', meta.description)\r\n const $box = document.createElement('div')\r\n $box.className = 'group'\r\n const obj = this._value ?? {}\r\n const dict = (this._schema as any).dict || {}\r\n Object.keys(dict).forEach((k) => {\r\n if (dict[k]?.meta?.hidden) return\r\n const child = createFieldForSchema(dict[k], [...this._path, k], obj[k], k)\r\n child.addEventListener('change', (e: any) => {\r\n const copy = { ...obj }\r\n copy[k] = e.detail.value\r\n this.emitChange(copy)\r\n })\r\n $box.appendChild(child)\r\n })\r\n $field.appendChild($box)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-object')) {\r\n customElements.define('schema-form-object', SchemaFormObject)\r\n}\r\n\r\nclass SchemaFormArray extends BaseFieldElement<any[]> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('array', meta.description)\r\n const $box = document.createElement('div')\r\n $box.className = 'group'\r\n const list: any[] = Array.isArray(this._value) ? this._value : []\r\n\r\n const renderRows = () => {\r\n $box.innerHTML = ''\r\n list.forEach((item, idx) => {\r\n const rowPath = [...this._path, idx]\r\n const row = document.createElement('div')\r\n row.className = 'row'\r\n row.setAttribute('data-path', dotPath(rowPath))\r\n const child = createFieldForSchema(\r\n (this._schema as any).inner!,\r\n rowPath,\r\n item,\r\n `${this._label ?? ''}[${idx}]`\r\n )\r\n child.addEventListener('change', (e: any) => {\r\n list[idx] = e.detail.value\r\n this.emitChange(list.slice())\r\n })\r\n const toolbar = document.createElement('div')\r\n toolbar.className = 'actions'\r\n const up = document.createElement('button')\r\n up.type = 'button'\r\n up.className = 'btn'\r\n up.textContent = this._i18n.arrayMoveUp ?? '↑'\r\n const down = document.createElement('button')\r\n down.type = 'button'\r\n down.className = 'btn'\r\n down.textContent = this._i18n.arrayMoveDown ?? '↓'\r\n const del = document.createElement('button')\r\n del.type = 'button'\r\n del.className = 'btn danger'\r\n del.textContent = this._i18n.arrayRemove ?? '×'\r\n up.onclick = () => {\r\n if (idx > 0) {\r\n const t = list[idx - 1]\r\n list[idx - 1] = list[idx]\r\n list[idx] = t\r\n renderRows()\r\n this.emitChange(list.slice())\r\n }\r\n }\r\n down.onclick = () => {\r\n if (idx < list.length - 1) {\r\n const t = list[idx + 1]\r\n list[idx + 1] = list[idx]\r\n list[idx] = t\r\n renderRows()\r\n this.emitChange(list.slice())\r\n }\r\n }\r\n del.onclick = () => {\r\n list.splice(idx, 1)\r\n renderRows()\r\n this.emitChange(list.slice())\r\n }\r\n toolbar.append(up, down, del)\r\n row.appendChild(child)\r\n row.appendChild(toolbar)\r\n $box.appendChild(row)\r\n })\r\n }\r\n\r\n renderRows()\r\n\r\n const add = document.createElement('button')\r\n add.type = 'button'\r\n add.className = 'btn primary'\r\n add.textContent = this._i18n.arrayAdd ?? '+'\r\n add.onclick = () => {\r\n list.push(defaultOf((this._schema as any).inner!))\r\n renderRows()\r\n this.emitChange(list.slice())\r\n }\r\n const actions = document.createElement('div')\r\n actions.className = 'actions'\r\n actions.appendChild(add)\r\n\r\n $field.appendChild($box)\r\n $field.appendChild(actions)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-array')) {\r\n customElements.define('schema-form-array', SchemaFormArray)\r\n}\r\n\r\nclass SchemaFormDict extends BaseFieldElement<Record<string, any>> {\r\n protected render() {\r\n this.$root.innerHTML = `<style>${BASE_STYLE}</style>`\r\n const meta = metaOf(this._schema)\r\n const $field = this.makeFieldContainer('dict', meta.description)\r\n const $box = document.createElement('div')\r\n $box.className = 'group'\r\n const map: Record<string, any> = this._value ?? {}\r\n\r\n Object.keys(map).forEach((k) => {\r\n const rowPath = [...this._path, k]\r\n const row = document.createElement('div')\r\n row.className = 'kv'\r\n row.setAttribute('data-path', dotPath(rowPath))\r\n const $k = document.createElement('input')\r\n $k.className = 'input'\r\n $k.value = k\r\n $k.name = nameOf(rowPath) + '.__key'\r\n $k.id = idOf(rowPath) + '__key'\r\n const $v = createFieldForSchema(\r\n (this._schema as any).inner!,\r\n rowPath,\r\n map[k],\r\n `${this._label ?? ''}[${k}]`\r\n )\r\n const $del = document.createElement('button')\r\n $del.type = 'button'\r\n $del.className = 'btn danger'\r\n $del.textContent = this._i18n.dictRemove ?? '×'\r\n $del.onclick = () => {\r\n delete map[k]\r\n this.emitChange({ ...map })\r\n }\r\n $k.onchange = () => {\r\n const nv = $k.value\r\n if (!nv || nv === k) return\r\n const copy = { ...map }\r\n copy[nv] = copy[k]\r\n delete copy[k]\r\n this.emitChange(copy)\r\n }\r\n $v.addEventListener('change', (e: any) => {\r\n const copy = { ...map }\r\n copy[k] = e.detail.value\r\n this.emitChange(copy)\r\n })\r\n row.append($k, $v, $del)\r\n $box.appendChild(row)\r\n })\r\n\r\n const add = document.createElement('button')\r\n add.type = 'button'\r\n add.className = 'btn primary'\r\n add.textContent = this._i18n.dictAdd ?? '+'\r\n add.onclick = () => {\r\n const keyName = `k${Object.keys(map).length + 1}`\r\n const next = defaultOf((this._schema as any).inner!)\r\n const copy = { ...map, [keyName]: next }\r\n this.emitChange(copy)\r\n }\r\n const actions = document.createElement('div')\r\n actions.className = 'actions'\r\n actions.appendChild(add)\r\n\r\n $field.appendChild($box)\r\n $field.appendChild(actions)\r\n this.$root.appendChild($field)\r\n }\r\n}\r\nif (!customElements.get('schema-form-dict')) {\r\n customElements.define('schema-form-dict', SchemaFormDict)\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 主表单元素:<schema-form> —— 已为泛型 SchemaForm<T>\r\n// ---------------------------------------------------------------------------\r\nexport class SchemaForm<T extends any = unknown> extends HTMLElement {\r\n private _schema!: Schema<T>\r\n private _state: any\r\n private $root: ShadowRoot\r\n private _i18n: Required<SchemaFormI18n> = { ...DEFAULT_I18N }\r\n constructor() {\r\n super()\r\n this.$root = this.attachShadow({ mode: 'open' })\r\n const style = document.createElement('style')\r\n style.textContent = BASE_STYLE\r\n this.$root.appendChild(style)\r\n const wrap = document.createElement('div')\r\n wrap.className = 'wrapper'\r\n wrap.innerHTML = `<form class=\"form\" part=\"form\"></form>`\r\n this.$root.appendChild(wrap)\r\n\r\n // 冒泡捕获字段变更\r\n this.addEventListener('change', (e: any) => {\r\n if (!e?.detail) return\r\n const { path, value } = e.detail\r\n setByPath(this._state ?? (this._state = {}), path, value)\r\n this.dispatchEvent(\r\n new CustomEvent('form-change', { detail: { path, value, state: this._state } })\r\n )\r\n })\r\n }\r\n\r\n // --- 对外 API ---\r\n set schema(value: Schema<T>) {\r\n this._schema = ensureSchemaInstance<T>(value as any)\r\n this._state = defaultOf<T>(this._schema)\r\n this.render()\r\n }\r\n get schema() {\r\n return this._schema\r\n }\r\n set schemaJSON(value: JSONValue) {\r\n this.schema = value as any\r\n }\r\n get schemaJSON(): any {\r\n return (this._schema as any)?.toJSON?.()\r\n }\r\n\r\n setData(\r\n data: Partial<T>,\r\n opts: { validate?: boolean; autofix?: boolean } = { validate: true, autofix: true }\r\n ) {\r\n if (!this._schema) throw new Error('请先设置 schema')\r\n const value = opts.validate\r\n ? this._schema((data as T) ?? null, { autofix: opts.autofix })\r\n : (data as any)\r\n this._state = value\r\n this.render()\r\n }\r\n getData(opts: { validate?: boolean; autofix?: boolean } = { validate: true, autofix: true }): T {\r\n if (!this._schema) throw new Error('请先设置 schema')\r\n const raw = this._state\r\n return opts.validate ? this._schema(raw ?? null, { autofix: opts.autofix }) : (raw as T)\r\n }\r\n reset() {\r\n this._state = defaultOf<T>(this._schema)\r\n this.render()\r\n }\r\n refresh() {\r\n this.render()\r\n }\r\n\r\n // i18n 相关\r\n set i18n(v: Partial<SchemaFormI18n>) {\r\n this._i18n = { ...this._i18n, ...v }\r\n this.render()\r\n }\r\n get i18n() {\r\n return this._i18n\r\n }\r\n\r\n private render() {\r\n if (!this._schema) return\r\n const form = this.$root.querySelector('form')!\r\n form.innerHTML = ''\r\n const child = createFieldForSchema<T>(\r\n this._schema,\r\n [],\r\n this._state as T,\r\n this._i18n.rootLabel,\r\n this._i18n\r\n )\r\n form.appendChild(child)\r\n }\r\n}\r\nif (!customElements.get('schema-form')) {\r\n customElements.define('schema-form', SchemaForm)\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// createSchemasteryForm<T>() —— 强类型工厂\r\n// ---------------------------------------------------------------------------\r\nexport interface FormInstance<T> {\r\n /** 底层元素 */ el: SchemaForm<T>\r\n /** 设置数据(可选校验)*/ setData: (v: Partial<T>, opts?: { validate?: boolean }) => void\r\n /** 获取数据(默认校验)*/ getData: (opts?: { validate?: boolean }) => T\r\n /** 卸载/清理 */ destroy: () => void\r\n}\r\n\r\n/**\r\n * 创建一个带强类型提示的 Schemastery 表单实例。\r\n * @param schema Schemastery schema(函数调用返回 T)\r\n * @param options 初始值与 onChange 回调\r\n */\r\nexport function createSchemasteryForm<T = any>(\r\n schema: Schema<T>,\r\n options?: { value?: Partial<T>; onChange?: (val: T) => void; i18n?: Partial<SchemaFormI18n> }\r\n): FormInstance<T> {\r\n const el = document.createElement('schema-form') as SchemaForm<T>\r\n el.schema = schema\r\n if (options?.i18n) el.i18n = options.i18n\r\n if (options?.value) el.setData(options.value)\r\n const onChange = options?.onChange\r\n const handler = () => {\r\n try {\r\n onChange?.(el.getData())\r\n } catch {}\r\n }\r\n if (onChange) el.addEventListener('form-change', handler)\r\n return {\r\n el,\r\n setData: (v, opts) => el.setData(v, opts),\r\n getData: (opts?: { validate?: boolean }) => el.getData(opts as any) as T,\r\n destroy: () => {\r\n if (onChange) el.removeEventListener('form-change', handler)\r\n el.remove()\r\n },\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// 全局类型声明(便于 TS 推断)\r\n// ---------------------------------------------------------------------------\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'schema-form': SchemaForm<any>\r\n 'schema-form-string': SchemaFormString\r\n 'schema-form-number': SchemaFormNumber\r\n 'schema-form-boolean': SchemaFormBoolean\r\n 'schema-form-date': SchemaFormDate\r\n 'schema-form-const': SchemaFormConst\r\n 'schema-form-union': SchemaFormUnion\r\n 'schema-form-tuple': SchemaFormTuple\r\n 'schema-form-object': SchemaFormObject\r\n 'schema-form-array': SchemaFormArray\r\n 'schema-form-dict': SchemaFormDict\r\n }\r\n}\r\n","<template>\r\n <schema-form ref=\"elRef\" v-bind=\"$attrs\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport type Schema from 'schemastery'\r\nimport './index' // 注册自定义元素\r\nimport { SchemaForm, type SchemaFormChangeEvent } from './index'\r\nimport { onMounted, onBeforeUnmount, watch, nextTick, useTemplateRef } from 'vue'\r\n\r\n// Props 定义\r\ninterface Props {\r\n schema: Schema<any>\r\n value?: any\r\n validateOnChange?: boolean\r\n}\r\n\r\nconst { validateOnChange = false } = defineProps<Props>()\r\nconst schema = defineModel<Schema>('schema', { required: true })\r\nconst value = defineModel<any>('value', { required: false, default: {} })\r\n\r\n// Emits 定义\r\nconst emit = defineEmits<{\r\n change: [detail: SchemaFormChangeDetail<any>]\r\n}>()\r\n\r\n// Template refs\r\nconst elRef = useTemplateRef('elRef')\r\n\r\n// 临时状态标志,避免竞态条件\r\nlet isUpdatingFromComponent = false\r\nlet isUpdatingFromProps = false\r\n\r\nconst onFormChange = (e: SchemaFormChangeEvent) => {\r\n if (isUpdatingFromProps) {\r\n // 如果正在从外部props更新,忽略此次组件内部变更事件\r\n return\r\n }\r\n\r\n const node = elRef.value!\r\n const next = validateOnChange\r\n ? node.getData({ validate: true })\r\n : node.getData({ validate: false, autofix: true })\r\n\r\n // 设置标志,避免watch触发更新\r\n isUpdatingFromComponent = true\r\n value.value = next\r\n // 在下一个微任务中重置标志\r\n nextTick(() => {\r\n isUpdatingFromComponent = false\r\n })\r\n\r\n emit('change', e.detail)\r\n}\r\n\r\nonMounted(() => {\r\n const node = elRef.value!\r\n if (schema.value) node.schema = schema.value\r\n if (value.value !== undefined) node.setData(value.value, { validate: false, autofix: true })\r\n node.addEventListener('form-change', onFormChange as any)\r\n})\r\n\r\nonBeforeUnmount(() => {\r\n elRef.value?.removeEventListener('form-change', onFormChange as any)\r\n})\r\n\r\n// 外部变更 -> 同步进 web component(避免循环,按引用判断)\r\nwatch(\r\n () => schema,\r\n (s) => {\r\n if (isUpdatingFromComponent) return\r\n if (elRef.value && s && elRef.value.schema !== s.value) {\r\n isUpdatingFromProps = true\r\n elRef.value.schema = s.value\r\n nextTick(() => {\r\n isUpdatingFromProps = false\r\n })\r\n }\r\n },\r\n { deep: false }\r\n)\r\n\r\nwatch(\r\n () => value,\r\n (d) => {\r\n if (isUpdatingFromComponent) return\r\n if (!elRef.value) return\r\n // 为了避免无意义的重渲染,只在引用或浅比较不等时设置\r\n if (d.value === undefined) return\r\n\r\n // 获取当前 Web Component 内的数据\r\n const currentData = elRef.value.getData({ validate: false })\r\n\r\n // 深度比较,如果数据实际上没有变化,则不调用 setData\r\n if (JSON.stringify(currentData) === JSON.stringify(d.value)) {\r\n return\r\n }\r\n\r\n isUpdatingFromProps = true\r\n elRef.value.setData(d.value, { validate: false })\r\n nextTick(() => {\r\n isUpdatingFromProps = false\r\n })\r\n },\r\n { deep: true }\r\n)\r\n\r\n// 暴露实例方法(TS 友好)\r\ndefineExpose({\r\n /** 手动设置数据并可选择是否触发 v-model:data */\r\n setData(v: any, opts?: { validate?: boolean; emit?: boolean }) {\r\n const node = elRef.value!\r\n node.setData(v, { validate: !!opts?.validate })\r\n if (opts?.emit) {\r\n value.value = node.getData({ validate: !!opts?.validate })\r\n }\r\n },\r\n /** 获取数据 */\r\n getData(opts?: { validate?: boolean }) {\r\n return elRef.value!.getData(opts)\r\n },\r\n /** 设置 schema,并同步到 v-model:schema */\r\n setSchema(s: Schema<any>, emitUpdate = true) {\r\n elRef.value!.schema = s\r\n if (emitUpdate) {\r\n schema.value = s\r\n }\r\n },\r\n refresh() {\r\n elRef.value!.refresh()\r\n },\r\n reset() {\r\n elRef.value!.reset()\r\n },\r\n /** 原生元素 */\r\n el: elRef,\r\n})\r\n</script>\r\n","import { isRef, Ref, toRaw } from 'vue'\r\n\r\n\r\nexport function deepToRaw<T extends unknown = any>(v: T | Ref<T>, seen = new WeakMap()): T {\r\n // 处理 ref\r\n if (isRef(v)) {\r\n return deepToRaw(v.value, seen)\r\n }\r\n\r\n // 基础类型\r\n if (v === null || typeof v !== 'object') {\r\n return v\r\n }\r\n\r\n // 检查循环引用\r\n if (seen.has(v)) {\r\n return seen.get(v)\r\n }\r\n\r\n // 特殊内置对象\r\n if (v instanceof Date) {\r\n return new Date(v) as T\r\n }\r\n if (v instanceof RegExp) {\r\n return new RegExp(v) as T\r\n }\r\n if (v instanceof Map) {\r\n const cloned = new Map()\r\n seen.set(v, cloned)\r\n Array.from(v.entries()).forEach(([key, value]) => {\r\n cloned.set(key, deepToRaw(value, seen))\r\n })\r\n return cloned as T\r\n }\r\n if (v instanceof Set) {\r\n const cloned = new Set()\r\n seen.set(v, cloned)\r\n Array.from(v).forEach((value) => {\r\n cloned.add(deepToRaw(value, seen))\r\n })\r\n return cloned as T\r\n }\r\n\r\n // 数组\r\n if (Array.isArray(v)) {\r\n const result: any[] = []\r\n seen.set(v, result)\r\n for (const item of v) {\r\n result.push(deepToRaw(item, seen))\r\n }\r\n return result as T\r\n }\r\n\r\n // 普通对象 / reactive 对象\r\n const raw = toRaw(v) as Record<string | symbol, any>\r\n const out: Record<string | symbol, any> = {}\r\n seen.set(v, out)\r\n\r\n // 字符串键\r\n for (const k of Object.keys(raw)) {\r\n out[k] = deepToRaw(raw[k], seen)\r\n }\r\n\r\n // Symbol 键(可选)\r\n for (const k of Object.getOwnPropertySymbols(raw)) {\r\n out[k] = deepToRaw(raw[k], seen)\r\n }\r\n\r\n return out as T\r\n}\r\n","<template lang=\"pug\">\r\n.preferences-ui-app\r\n .tabs\r\n a.tab(\r\n v-for='tab in tabs',\r\n :key='tab.name',\r\n :class='{ active: activeCategoryName === tab.name }',\r\n @click='activeCategoryName = tab.name',\r\n :data-value='tab.name'\r\n ) {{ tab.label }}\r\n\r\n template(v-for='reg in regs', :key='reg.name')\r\n SchemaFormVue(\r\n v-show='activeCategoryName === reg.category',\r\n :schema='reg.schema',\r\n v-model:value='value',\r\n :validate-on-change='false',\r\n :i18n='{ rootLabel: \"\" }'\r\n )\r\n\r\n details\r\n summary Debug Info\r\n pre(style='max-height: 20em; overflow: auto') {{ activeSchema }}\r\n pre(style='max-height: 20em; overflow: auto') {{ value }}\r\n</template>\r\n\r\n<script setup lang=\"ts\" vapor>\r\nimport { computed, onMounted, ref, watchEffect } from 'vue'\r\nimport { useIPE } from '@/utils/vueHooks'\r\nimport type { InPageEditPreferenceUIRegistryItem, InPageEditPreferenceUICategory } from '../index'\r\nimport SchemaFormVue from '@/components/SchemaForm/SchemaFormVue.vue'\r\nimport Schema from 'schemastery'\r\n\r\nconst ctx = useIPE()!\r\n\r\nconst tabs = ref<InPageEditPreferenceUICategory[]>([])\r\nconst activeCategoryName = ref('')\r\nconst activeSchema = computed(() => {\r\n return regs.value.find((r) => r.category === activeCategoryName.value)?.schema as Schema\r\n})\r\n\r\nconst value = ref<any>({})\r\nconst regs = ref<InPageEditPreferenceUIRegistryItem[]>([])\r\n\r\ndefineExpose({\r\n getValue() {\r\n return deepToRaw(value)\r\n },\r\n})\r\n\r\nwatchEffect(() => {\r\n activeCategoryName.value &&\r\n (regs.value = ctx.preferences.getConfigRegistries(activeCategoryName.value))\r\n})\r\n\r\nonMounted(async () => {\r\n ctx.inject(['preferences'], async (ctx) => {\r\n value.value = await ctx.preferences.getAll()\r\n tabs.value = ctx.preferences.getConfigCategories()\r\n activeCategoryName.value = tabs.value[0].name\r\n })\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"sass\">\r\n.tabs\r\n --border-color: #efefef\r\n --tab-color: #666\r\n --active-color: #3366bb\r\n display: flex\r\n gap: 0.5em\r\n border-bottom: 1px solid #efefef\r\n margin-bottom: 1em\r\n .tab\r\n padding: 0.25em 0.5em\r\n cursor: pointer\r\n user-select: none\r\n color: var(--tab-color)\r\n display: inline-block\r\n transition: color 0.3s ease, box-shadow 0.3s ease\r\n &.active\r\n color: var(--active-color)\r\n box-shadow: inset 0 -0.15em 0 0 var(--active-color)\r\n</style>\r\n","import { Inject, InPageEdit } from '@/InPageEdit'\r\nimport { createApp } from 'vue'\r\nimport PreferencesForm from './PreferencesForm.vue'\r\nimport { injectIPE } from '@/utils/vueHooks'\r\n\r\ndeclare module '@/InPageEdit' {\r\n export interface InPageEdit {\r\n preferencesUI: PluginPreferencesUI\r\n }\r\n}\r\n\r\n@Inject(['preferences', 'modal'])\r\nexport class PluginPreferencesUI extends BasePlugin {\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'preferences-ui')\r\n ctx.set('preferencesUI', this)\r\n ctx.inject(['toolbox'], (ctx) => {\r\n ctx.toolbox.addButton({\r\n id: 'preferences',\r\n icon: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n class=\"icon icon-tabler icons-tabler-filled icon-tabler-settings\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M14.647 4.081a.724 .724 0 0 0 1.08 .448c2.439 -1.485 5.23 1.305 3.745 3.744a.724 .724 0 0 0 .447 1.08c2.775 .673 2.775 4.62 0 5.294a.724 .724 0 0 0 -.448 1.08c1.485 2.439 -1.305 5.23 -3.744 3.745a.724 .724 0 0 0 -1.08 .447c-.673 2.775 -4.62 2.775 -5.294 0a.724 .724 0 0 0 -1.08 -.448c-2.439 1.485 -5.23 -1.305 -3.745 -3.744a.724 .724 0 0 0 -.447 -1.08c-2.775 -.673 -2.775 -4.62 0 -5.294a.724 .724 0 0 0 .448 -1.08c-1.485 -2.439 1.305 -5.23 3.744 -3.745a.722 .722 0 0 0 1.08 -.447c.673 -2.775 4.62 -2.775 5.294 0zm-2.647 4.919a3 3 0 1 0 0 6a3 3 0 0 0 0 -6z\" />\r\n </svg>\r\n ) as HTMLElement,\r\n tooltip: 'Open preferences',\r\n group: 'group2',\r\n index: Infinity,\r\n onClick: () => this.showModal(),\r\n })\r\n this.addDisposeHandler(() => {\r\n ctx.toolbox.removeButton('preferences')\r\n })\r\n })\r\n }\r\n\r\n showModal() {\r\n const modal = this.ctx.modal.show({\r\n className: 'in-page-edit',\r\n sizeClass: 'small',\r\n outSideClose: false,\r\n center: true,\r\n title: 'InPageEdit Prefrences',\r\n content: (\r\n <>\r\n <ProgressBar />\r\n </>\r\n ) as HTMLElement,\r\n })\r\n\r\n modal.get$wrapper().addClass('dialog')\r\n\r\n const root = <div id=\"ipe-preferences-app\" style={{ minHeight: '65vh' }}></div>\r\n modal.setContent(root as HTMLElement)\r\n\r\n const app = this.createFormApp()\r\n const form = app.mount(root) as InstanceType<typeof PreferencesForm>\r\n\r\n modal.setButtons([\r\n {\r\n label: 'Save',\r\n className: 'btn',\r\n method: () => {\r\n const value = form.getValue()\r\n Object.entries(value).forEach(([key, val]) => {\r\n this.ctx.preferences.set(key, val).catch(console.error)\r\n })\r\n modal.close()\r\n },\r\n },\r\n {\r\n label: 'Cancel',\r\n className: 'btn btn-danger',\r\n method: () => {\r\n modal.close()\r\n },\r\n },\r\n ])\r\n\r\n modal.get$modal().on('onClose.ssi-modal', () => {\r\n app.unmount()\r\n })\r\n }\r\n\r\n createFormApp() {\r\n const app = createApp(PreferencesForm)\r\n injectIPE(this.ctx, app)\r\n return app\r\n }\r\n}\r\n"],"names":["promiseWithResolvers","resolve","reject","res","rej","__defProp","__name","target","value","noop","isNullable","isNonNullable","isPlainObject","data","filterKeys","object","filter","key","mapValues","transform","pick","source","keys","forced","result","omit","defineProperty","contain","array1","array2","item","intersection","difference","union","deduplicate","array","remove","list","index","makeArray","is","type","value2","isArrayBufferLike","isArrayBufferSource","Binary","Binary2","fromSource","toBase64","binary","bytes","i","fromBase64","c","toHex","byte","fromHex","hex","buffer","clone","refs","cached","result2","descriptor","deepEqual","a","b","strict","check","test","then","a2","b2","viewA","viewB","capitalize","uncapitalize","camelCase","str","tokenize","delimiters","delimiter","output","state","code","next","paramCase","snakeCase","formatProperty","trimSlash","sanitize","Time","Time2","timezoneOffset","setTimezoneOffset","offset","getTimezoneOffset","getDateNumber","date","fromDateNumber","numeric","timeRegExp","unit","parseTime","capture","parseDate","parsed","format","ms","abs","toDigits","length","template","template2","time","symbols","GeneratorFunction","AsyncGeneratorFunction","isConstructor","func","resolveConfig","plugin","config","schema","isUnproxyable","constructor","joinPrototype","proto1","proto2","isObject","getTraceable","ctx","noTrap","tracker","createTraceable","withProps","props","target2","prop","receiver","withProp","createShadow","property","origin","createShadowMethod","outer","shadow","thisArg","args","arg","args2","thisArg2","arg2","newTarget","proxy","innerValue","innerTracker","applyTraceable","createCallable","name","proto","self","ReflectService","_a","defineProperty2","internal","error","lines","oldValue","dispose","ctx2","builtin","options","aliases","mixins","entries","getTarget","disposables","service","mixin","callback","__publicField","reflect_default","isBailed","Lifecycle","_b","defineProperty3","listener","method","Context","level","param","runtime","scopes","scope","checkInject","hooks","hook","label","events_default","CordisError","_c","message","CordisError2","EffectScope","_d","parent","disposed","original","wrapped","remove2","defineProperty4","task","reason","inject","isNullable2","acceptor","resolved","modified","checkPropertyUpdate","hasUpdate","ignored","shouldRestart","fallback","passive","hasUpdate2","ForkScope","_e","fork","oldConfig","MainScope","_f","context","instance","Inject","warning","isApplicable","Inject2","required","optional","rest","Registry","_g","defineProperty5","assert","registry_default","_h","attach","defineProperty6","meta","intercept","Service","_i","_ctx","immediate","defineProperty7","getChromeVersion","matches","colorSupport","browser","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","booleanValueOf","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","$toLowerCase","$test","$concat","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","sepRegex","int","intStr","dec","utilInspect","require$$0","inspectCustom","inspectSymbol","isSymbol","quotes","quoteREs","objectInspect","inspect_","obj","depth","seen","opts","has","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","isArray","indent","getIndent","indexOf","inspect","from","noIndent","newOpts","isRegExp","nameOf","arrObjKeys","symString","markBoxed","isElement","s","attrs","wrapQuotes","quote","xs","singleLineValues","indentedJoin","isError","parts","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","global","isDate","ys","protoTag","stringTag","toStr","constructorTag","tag","defaultStyle","style","quoteChar","canTrustToString","hasOwn","f","m","x","l","remaining","trailer","quoteRE","lowbyte","n","size","joinedEntries","baseIndent","lineJoiner","isArr","syms","symMap","k","j","__create","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__commonJS","cb","mod","__copyProps","to","except","desc","__toESM","isNodeMode","require_shared","exports","module","c16","c256","isAggregateError","Logger","namespace","formatter","decoration","hash","colors","record","prefix","space","padLength","diff","id","timestamp","content","print","match","char","maxLength","line","paths","stdout","text","logger","require_browser","import_shared","LoggerService","_j","require_index","kSchema","kValidationError","ValidationError","segment","Schema","options2","refs2","valueMap","getRef","uid","mergeDesc","messages","locale","getInner","extractKeys","inner","regexp","pattern2","inline","formatters","role","extra","resolvers","current","builder","toJSON","date2","flag","e","encoding","_","checkWithinRange","description","skipMin","max","min","decimalShift","digits","frac","integer","isMultipleOf","step","bits","prototype","adapted","sKey","rKey","merge","dict","toString","preserve","defineMethod","key2","isInner","kSchemaOrder","SchemaService","_k","order","TimerService","_l","delay","timer","caller","dispose1","dispose2","isDisposed","wrapper","noTrailing","lastCall","execute","isActive","now","Context2","_m","core.Context","Service2","_n","core.Service","src_default","y","d","t","r","o","U","C","W","h","u","H","B","M","K","P","q","F","Y","$","A","I","G","X","T","w","v","D","R","E","S","p","V","N","g","L","Q","ApiService","baseURL","api","MwApi","ResourceLoaderService","src","existed","script","href","link","path","url","val","isFunction","isComponentClass","Component","isArrayLike","forEach","fn","isRef","maybeRef","isUnitlessNumber","prefixKey","prefixes","jsxDomType","JsxDomType","isShadowRoot","el","SVGNamespace","XLinkNamespace","XMLNamespace","isVisibleChild","className","svg","nonPresentationSVGAttributes","Fragment","attr","fragment","appendChild","initComponentClass","Class","children","node","attachRef","jsx","_ref","attributes","values","option","createElement","_len","_key2","ref","child","appendChildren","appendChildToNode","shadowRoot","normalizeAttribute","separator","attribute","attrNS","dataValue","dataKey","eventHandler","eventName","useCapture","Endpoints","ProgressBar","indeterminate","bar","styles","progress","_SsiModalService","promise","ssiModalLib","that","init","show","close","inputsAndButtons","SsiModalService","require","_dereq_","Mutation","scheduleDrain","called","observer","nextTick","element","channel","scriptEl","draining","queue","oldQueue","len","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","Promise","resolver","safelyResolveThenable","onRejected","onFulfilled","unwrap","QueueItem","returnValue","tryCatch","getThen","thenable","onError","onSuccess","tryToUnwrap","out","all","iterable","allResolver","resolveFromAll","outValue","race","response","_typeof","_classCallCheck","Constructor","getIDB","idb","isIndexedDBValid","isSafari","hasFetch","createBlob","properties","Builder","Promise$1","executeCallback","executeTwoCallbacks","errorCallback","normalizeKey","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_binStringToArrayBuffer","bin","buf","arr","_checkBlobSupportWithoutCaching","txn","blob","matchedChrome","matchedEdge","_checkBlobSupport","_deferReadiness","dbInfo","dbContext","deferredOperation","_advanceReadiness","_rejectReadiness","err","_getConnection","upgradeNeeded","createDbContext","dbArgs","openreq","db","ex","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","isDowngrade","isUpgrade","incVersion","_encodeBlob","reader","base64","_decodeBlob","encodedBlob","arrayBuff","_isEncodedBlob","_fullyReady","_tryReconnect","forages","forage","createTransaction","mode","retries","tx","_initStorage","initPromises","ignoreErrors","getItem","transaction","store","req","iterate","iterator","iterationNumber","cursor","setItem","blobSupport","removeItem","clear","advanced","dropInstance","currentConfig","isCurrentDb","dbPromise","newVersion","dropObjectPromise","_forage2","dropDBPromise","_forage","asyncStorage","isWebSQLValid","BASE_CHARS","BLOB_TYPE_PREFIX","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","bufferLength","encoded1","encoded2","encoded3","encoded4","bufferToString","base64String","serialize","valueType","marker","fileReader","deserialize","blobType","matcher","localforageSerializer","createDbTable","_initStorage$1","dbInfoPromise","tryExecuteSql","sqlStatement","results","getItem$1","iterate$1","rows","_setItem","retriesLeft","originalValue","sqlError","setItem$1","removeItem$1","clear$1","length$1","key$1","keys$1","getAllStoreNames","storeNames","dropInstance$1","operationInfo","dropTable","storeName","operations","webSQLStorage","isLocalStorageValid","_getKeyPrefix","defaultConfig","keyPrefix","checkIfLocalStorageThrows","localStorageTestKey","_isLocalStorageUsable","_initStorage$2","clear$2","getItem$2","iterate$2","keyPrefixLength","key$2","keys$2","itemKey","length$2","removeItem$2","setItem$2","dropInstance$2","localStorageWrapper","sameValue","includes","searchElement","DefinedDrivers","DriverSupport","DefaultDrivers","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","callWhenReady","localForageInstance","libraryMethod","_args","extend","_key","LocalForage","driverTypeKey","driver","driverName","driverObject","complianceError","driverMethods","driverMethodName","isRequired","configureMissingMethods","methodNotImplementedFactory","methodName","optionalDriverMethod","setDriverSupport","support","getDriverPromise","serializerPromise","drivers","supportedDrivers","setDriverToConfig","extendSelfWithDriver","initDriver","currentDriverIndex","driverPromiseLoop","oldDriverSetDone","libraryMethodsAndProperties","localforage_js","StorageService","localforage","IPEStorageManager","ttl","version","_IPEStorageManager","dbName","setter","isExpired","newData","_SiteMetadataService_decorators","_init","SiteMetadataService","wgServer","wgArticlePath","map","ns","alias","right","rights","names","group","__decoratorStart","__decorateElement","__runInitializers","_WikiPage","pageInfo","MediaWikiApi","payload","rev","mainSlot","params","prependtext","appendtext","summary","watchlist","title","action","revisions","acc","cur","WikiPage","_WikiPageService","converttitles","rvsection","pageid","revid","WikiPageService","_InPageEdit","__privateAdd","_InPageEdit_instances","__privateMethod","initCoreServices_fn","initCorePlugins_fn","initCoreAssets_fn","index$7","PluginPreferences","index$6","PluginQuickEdit","index$5","PluginQuickMove","index$4","PluginQuickPreview","index$3","PluginQuickDiff","index$2","PluginQuickRedirect","index$1","PluginToolbox","InPageEdit","BasePlugin","_name","ret","__privateSet","__privateGet","autoload","oldGlobalVar","ipe","IPECore","installedModules","ActionButton","_PluginPreferences_decorators","jsxs","defaultValue","category","defaults","tab","WatchlistAction","RegisterPreferences","_PluginQuickEditInArticleLinks_decorators","PluginQuickEditInArticleLinks","mwConfig","wikiArticlePath","wikiBaseUrl","anchor","info","hrefURL","section","revision","sectionNum","MBox","closeable","titleProps","contentProps","titleContent","box","InputBox","disabled","labelProps","inputProps","RadioBox","CheckBox","checked","sleep","_PluginQuickEdit_decorators","outSideClose","watchList","editSummary","editMinor","modal","wikiPage","editForm","submitButton","formData","oldStr","minor","createonly","TwinSwapInput","inputs","enableSwap","normalizedInputs","inputRefs","swapCount","swapBtnRef","svgRef","checkIfInputDisabled","swap","va","vb","toggleEnableSwap","enable","swapButton","container","input","isLeft","inputId","_PluginQuickMove_decorators","curPageName","canEdit","formRef","_PluginQuickPreview_decorators","parse","outputRef","Diff","newStr","oldString","newString","oldTokens","newTokens","done","newLen","oldLen","editLength","maxEditLength","maxExecutionTime","abortAfterTimestamp","bestPath","newPos","minDiagonalToConsider","maxDiagonalToConsider","execEditLength","diagonalPath","basePath","removePath","addPath","canAdd","addPathNewPos","canRemove","exec","added","removed","oldPosInc","last","oldPos","commonCount","left","chars","changeObjects","lastComponent","components","nextComponent","componentLen","componentPos","component","CharacterDiff","characterDiff","diffChars","longestCommonPrefix","str1","str2","longestCommonSuffix","replacePrefix","string","oldPrefix","newPrefix","replaceSuffix","oldSuffix","newSuffix","removePrefix","removeSuffix","maximumOverlap","string1","string2","overlapCount","startA","endB","hasOnlyWinLineEndings","hasOnlyUnixLineEndings","trailingWs","leadingWs","extendedWordChars","tokenizeIncludingWhitespace","WordDiff","segmenter","tokens","prevPart","part","token","changes","lastKeep","insertion","deletion","change","dedupeWhitespaceInChangeObjects","wordDiff","diffWords","diffWordsWithSpace","startKeep","endKeep","oldWsPrefix","oldWsSuffix","newWsPrefix","newWsSuffix","commonWsPrefix","commonWsSuffix","ws","newWsFull","delWsStart","delWsEnd","newWsStart","newWsEnd","endKeepWsPrefix","deletionWsSuffix","overlap","startKeepWsSuffix","deletionWsPrefix","WordsWithSpaceDiff","regex","wordsWithSpaceDiff","generateOptions","LineDiff","lineDiff","diffLines","diffTrimmedLines","retLines","linesAndNewlines","isSentenceEndPunct","SentenceDiff","tokenStartI","sentenceDiff","diffSentences","CssDiff","cssDiff","diffCss","JsonDiff","undefinedReplacement","stringifyReplacer","canonicalize","jsonDiff","diffJson","stack","replacementStack","replacer","canonicalizedObj","sortedKeys","ArrayDiff","arrayDiff","diffArrays","oldArr","newArr","unixToWin","patch","hunk","winToUnix","isUnix","isWin","parsePatch","uniDiff","diffstr","parseIndex","header","parseFileHeader","parseHunk","fileHeader","fileName","chunkHeaderIndex","chunkHeaderLine","chunkHeader","addCount","removeCount","operation","distanceIterator","start","minLine","maxLine","wantForward","backwardExhausted","forwardExhausted","localOffset","applyPatch","patches","applyStructuredPatch","hunks","compareLine","lineNumber","patchContent","fuzzFactor","prevLine","removeEOFNL","addEOFNL","applyHunk","hunkLines","toPos","maxErrors","hunkLinesI","lastContextLineMatched","patchedLines","patchedLinesLength","nConsecutiveOldContextLines","nextContextLineMustMatch","hunkLine","resultLines","prevHunkOffset","hunkResult","applyPatches","spDiff","currentIndex","processIndex","updatedContent","reversePatch","structuredPatch","oldFileName","newFileName","oldHeader","newHeader","optionsObj","diffLinesResultToPatch","contextLines","entry","oldRangeStart","newRangeStart","curRange","oldLine","newLine","splitLines","prev","contextSize","formatPatch","createTwoFilesPatch","patchObj","createPatch","hasTrailingNl","convertChangesToDMP","convertChangesToXML","escapeHTML","JsDiffService","JsDiff","JsDiff.diffChars","JsDiff.diffWords","JsDiff.diffWordsWithSpace","JsDiff.diffLines","JsDiff.diffTrimmedLines","JsDiff.diffSentences","JsDiff.diffCss","JsDiff.diffJson","JsDiff.diffArrays","JsDiff.createTwoFilesPatch","MwUserLinks","user","articlePath","getUrl","formatDate","DiffTableHeader","classList","DiffTable","table","qs","selector","qsa","_PluginQuickDiffCore_decorators","VALID_DIFF_TYPES","PluginQuickDiffCore","mwCompareForm","fromrev","torev","pageTitle","fromtext","totext","oldText","newText","controller","diffType","pastHunkHeader","handler","errors","compare","_PluginQuickDiff","_PluginQuickRedirect","overwrite","_PluginToolbox_decorators","isOpened","icon","tooltip","buttonProps","onClick","existingButton","groupEl","group1","group2","group1Count","group2Count","button","makeMap","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","hasOwnProperty","toTypeString","isPromise","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","cache","camelizeRE","camelize","hyphenateRE","hyphenate","toHandlerKey","hasChanged","invokeArrayFns","fns","def","writable","looseToNumber","_globalThis","getGlobalThis","normalizeStyle","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","tmp","normalizeClass","isSpecialBooleanAttr","includeBooleanAttr","toDisplayString","val2","stringifySymbol","activeEffectScope","detached","currentEffectScope","fromParent","getCurrentScope","activeSub","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","head","tail","removeDep","refreshComputed","computed","globalVersion","dep","prevSub","soft","nextSub","prevDep","nextDep","trackStack","pauseTracking","resetTracking","cleanup","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","depsMap","trigger","newValue","oldTarget","run","targetIsArray","isArrayIndex","newLength","reactiveReadArray","raw","toRaw","isShallow","toReactive","shallowReadArray","arrayInstrumentations","apply","searchProxy","noTracking","reduce","comparer","wrapValue","iter","arrayProto","wrappedRetFn","needsWrap","methodFn","wrappedFn","isProxy","isNonTrackableKeys","builtInSymbols","BaseReactiveHandler","_isReadonly","_isShallow","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","wrap","toReadonly","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","observed","get","hadItems","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","targetType","existingProxy","isReactive","markRaw","createRef","shallowRef","rawValue","RefImpl","useDirectValue","unref","ref2","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","set","newVal","customRef","ComputedRefImpl","isSSR","getterOrOptions","debugOptions","getter","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","onWatcherCleanup","cleanupFn","failSilently","owner","cleanups","watch","deep","once","scheduler","augmentJob","call","reactiveGetter","source2","traverse","effect","boundCleanup","forceTrigger","isMultiSource","currentEffect","baseGetter","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","isWarning","warn$1","msg","appWarnHandler","trace","getComponentTrace","callWithErrorHandling","vnode","formatComponentName","warnArgs","formatTrace","currentVNode","normalizedStack","parentInstance","logs","formatTraceEntry","recurseCount","postfix","isRoot","open","formatProps","formatProp","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","findInsertionIndex","end","middle","middleJob","middleJobId","getId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","flushPostFlushCbs","deduped","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","withCtx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","directives","getComponentPublicInstance","bindings","dir","modifiers","invokeDirectiveHook","prevVNode","oldBindings","binding","TeleportEndKey","isTeleport","leaveCbKey","setTransitionHooks","defineComponent","extraOptions","markAsyncBoundary","useTemplateRef","getCurrentInstance","pendingSetRefMap","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","isAsyncWrapper","refValue","oldRef","setupState","rawSetupState","canSetSetupRef","invalidatePendingSetRef","oldRawRefAtom","_isString","_isRef","doSet","existing","queuePostRenderEffect","pendingSetRef","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","currentInstance","wrappedHook","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","reset","setCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","NULL_DYNAMIC_COMPONENT","renderList","renderItem","sourceIsArray","sourceIsReactiveArray","isReadonlySource","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","instanceWatch","hasSetupBinding","PublicInstanceProxyHandlers","accessCache","appContext","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","propsOptions","cssModules","normalizePropsOrEmits","mergeModels","applyOptions","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","filters","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","createPathGetter","base","extendsOptions","globalMixins","optionMergeStrategies","mergeOptions","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","installedPlugins","pluginCleanupFns","isMounted","app","directive","rootContainer","isHydrate","createVNode","lastApp","currentApp","parentProvides","treatDefaultAsFactory","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","setFullProps","updateProps","rawPrevProps","optimized","patchFlag","rawCurrentProps","hasAttrsChanged","propsToUpdate","isEmitListener","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","comp","hasExtends","extendProps","raw2","normalizedKey","validatePropName","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeVNode","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","slots","normalizeVNodeSlots","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","queueEffectWithSuspense","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","n1","n2","parentComponent","slotScopeIds","isSameVNodeType","getNextHostNode","unmount","shapeFlag","Text","processText","Comment","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","isSuspense","parentVNode","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","shouldUpdateComponent","updateComponentPreRender","componentUpdateFn","bu","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","updateHOCHostEl","bm","root","isAsyncWrapperVNode","scopedInitialVNode","update","nextVNode","prevProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","anchorVNode","move","moveType","leave","delayLeave","afterLeave","performLeave","doRemove","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","invalidateMount","teleportEnd","isFlushing","currentNamespace","allowed","ch1","ch2","arrI","subComponent","ssrContextKey","useSSRContext","watchEffect","doWatch","watchSyncEffect","flush","baseWatchOptions","runsImmediately","ssrCleanup","watchStopHandle","isPre","isFirstRun","watch$1","segments","useModel","camelizedName","hyphenatedName","getModelModifiers","localValue","prevSetValue","prevEmittedValue","propValue","emittedValue","i2","modelName","emit","event","rawArgs","handlerName","onceHandler","mixinEmitsCache","normalizeEmitsOptions","extendEmits","normalizedFromExtend","markAttrsAccessed","withProxy","renderCache","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","filterModelListeners","cloneVNode","prevChildren","nextProps","nextChildren","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","suspense","currentBlock","openBlock","disableTracking","closeBlock","isBlockTreeEnabled","inVOnce","setupBlock","createElementBlock","createBaseVNode","createBlock","isVNode","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","slot","slotFlag","toMerge","incoming","emptyAppContext","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","isAsyncSetup","resolvedResult","handleSetupResult","finishComponentSetup","skipOptions","attrsProxyHandlers","classifyRE","classify","getComponentName","includeInferred","inferFromRegistry","registry","computed$1","policy","tt","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","before","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixCache","rawName","xlinkNS","patchAttr","patchDOMProp","attrName","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","camelize$1","rendererOptions","renderer","ensureRenderer","createApp","mount","containerOrSelector","normalizeContainer","resolveRootNamespace","IPEInjectKey","injectIPE","useIPE","DEFAULT_I18N","setByPath","dotPath","sanitizeForId","idOf","castToType","isSchemaInstance","ensureSchemaInstance","inst","metaOf","unionIsEnum","defaultOf","anySchema","direct","BaseFieldElement","BASE_STYLE","typeClass","$field","$label","$desc","SchemaFormString","currentValue","$input","SchemaFormNumber","SchemaFormBoolean","$box","$txt","SchemaFormDate","currentDate","SchemaFormConst","$ro","tagForSchema","createFieldForSchema","i18n","SchemaFormUnion","$select","$toolbar","active","renderChild","SchemaFormTuple","copy","SchemaFormObject","SchemaFormArray","renderRows","idx","rowPath","row","toolbar","up","down","del","add","actions","SchemaFormDict","$k","$v","$del","nv","keyName","SchemaForm","form","_useModel","__props","__emit","elRef","isUpdatingFromComponent","isUpdatingFromProps","onFormChange","currentData","__expose","emitUpdate","_openBlock","_createElementBlock","_mergeProps","$attrs","deepToRaw","tabs","activeCategoryName","activeSchema","regs","_PluginPreferencesUI_decorators","PluginPreferencesUI","PreferencesForm"],"mappings":"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","x_google_ignoreList":[1,2,3,5,6,7,8,9,10,11,12,15,19,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,69,70,71,72]}
|