@inpageedit/core 0.13.0-alpha.0 → 0.13.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DdTiZqwt.js","sources":["../../../node_modules/.pnpm/@inpageedit+logger@0.1.0/node_modules/@inpageedit/logger/dist/index.js","../../../node_modules/.pnpm/wiki-saikou@7.1.2/node_modules/wiki-saikou/dist/browser.js","../src/services/ApiService.ts","../src/services/CurrentPageService.ts","../src/services/ResourceLoaderService.ts","../../modal/dist/index.js","../src/services/ModalService.tsx","../src/utils/url.ts","../src/services/WikiMetadataService.tsx","../src/services/storage/managers/LocalStorageManager.ts","../../../node_modules/.pnpm/idb-plus@0.2.0/node_modules/idb-plus/dist/index.js","../src/services/storage/managers/IDBStorageManager.ts","../src/services/storage/index.ts","../src/services/WikiPageService.ts","../src/services/WikiTitleService.ts","../src/utils/computeable.ts","../src/services/PreferencesService.tsx","../src/InPageEdit.ts"],"sourcesContent":["/**\n * @inpageedit/logger\n *\n * Flexible, Extensible Console Logger with Colored Labels and Hierarchical Loggers\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nvar $ = /* @__PURE__ */ ((n) => (n[n.debug = -1] = \"debug\", n[n.log = 0] = \"log\", n[n.info = 1] = \"info\", n[n.warn = 2] = \"warn\", n[n.error = 3] = \"error\", n[n.silent = 4] = \"silent\", n))($ || {});\nconst f = globalThis || window, d = Symbol.for(\"__IPE_LOGGER_COLOR_MAP__\");\nf[d] || (f[d] = /* @__PURE__ */ new Map());\nconst _ = f[d];\nfunction c(n) {\n let t = 2166136261;\n for (let e = 0; e < n.length; e++)\n t ^= n.charCodeAt(e), t = (t >>> 0) * 16777619;\n return t >>> 0;\n}\nconst g = [\n [350, 360],\n [0, 15],\n [15, 30],\n [200, 230],\n [230, 250],\n [250, 280],\n [280, 310],\n [310, 330],\n [140, 160],\n [160, 180]\n];\nfunction E(n, t) {\n const e = g.length, l = c(n) % e, [r, w] = g[l], x = w - r, C = c(n + \":\" + t), s = r + C % (x || 1), b = c(n + \":s\"), a = c(n + \":l\");\n let i, h;\n if (t === \"name\")\n i = 62 + b % 18, h = 30 + a % 12;\n else {\n const P = s >= 0 && s < 50 || s > 330 && s < 360, R = s >= 200 && s <= 300;\n i = 55 + b % 20, R ? h = 55 + a % 8 : P ? h = 48 + a % 6 : h = 50 + a % 8, i < 60 && (i += 5);\n }\n return `hsl(${s}, ${i}%, ${h}%)`;\n}\nfunction u(n, t) {\n if (t)\n return _.set(n, t), t;\n const e = _.get(n);\n if (e) return e;\n const o = n.startsWith(\"name:\") ? \"name\" : \"group\", l = E(n, o);\n return _.set(n, l), l;\n}\n/**\n * @inpageedit/logger\n * Flexible, Extensible Console Logger with Colored Labels and Hierarchical Loggers\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n *\n * @example\n * ```ts\n * const logger = new Logger({ name: 'MyApp', level: LoggerLevel.debug })\n * // normal usage\n * logger.info('Application started')\n * // create sub-logger group\n * const apiLogger = logger.group('API', { color: '#f59e0b' })\n * apiLogger.warn('Deprecated API endpoint used')\n * // define custom level\n * logger.defineLevel('success', { level: LoggerLevel.info, label: '✅', method: 'info' })\n * logger.success('User created successfully')\n * ```\n */\nclass m {\n /**\n * Note: constructor returns a callable Proxy so that you can do `logger('group')`.\n */\n constructor(t = {}) {\n this._custom = (e) => {\n if (!this._enabled(e.level)) return v;\n const [o, l] = this._prefix(e.label);\n return this._consoleMethod(e.method).bind(console, o, ...l);\n }, this._name = t.name, this._nameColor = t.color, this._groupPath = t._groupPath ? [...t._groupPath] : [], this._dynamicLevels = { ...t._dynamicLevels }, this._levelRef = t._levelRef ?? {\n value: t.level ?? 1\n /* info */\n }, this._name && u(`name:${this._name}`, this._nameColor), this._installBuiltinLevels();\n for (const e of Object.keys(this._dynamicLevels))\n this._installLevelGetter(e, this._dynamicLevels[e]);\n return y(this);\n }\n // ---------- public API ----------\n get level() {\n return this._levelRef.value;\n }\n set level(t) {\n this._levelRef.value = t;\n }\n /** Create a sub-logger with a group label */\n group(t, e) {\n return t && u(`group:${t}`, e?.color), new m({\n name: this._name,\n color: this._nameColor,\n _groupPath: [...this._groupPath, t],\n _dynamicLevels: this._dynamicLevels,\n _levelRef: this._levelRef\n });\n }\n /** Define a custom level, e.g. logger.defineLevel('success', { level: info, label: '✅', method: 'info' }) */\n defineLevel(t, e) {\n this._dynamicLevels[t] = { ...e }, this._installLevelGetter(t, e);\n }\n // Built-in level getters\n get debug() {\n return this._method(\"debug\");\n }\n get log() {\n return this._method(\"log\");\n }\n get info() {\n return this._method(\"info\");\n }\n get warn() {\n return this._method(\"warn\");\n }\n get error() {\n return this._method(\"error\");\n }\n // ---------- internals ----------\n _installBuiltinLevels() {\n }\n _installLevelGetter(t, e) {\n Object.defineProperty(this, t, {\n configurable: !0,\n enumerable: !1,\n get: () => this._custom(e)\n });\n }\n _method(t) {\n const e = O[t];\n if (!this._enabled(e.level)) return v;\n const [o, l] = this._prefix(e.label);\n return this._consoleMethod(t).bind(console, o, ...l);\n }\n _consoleMethod(t) {\n const e = console[t];\n return (e || console.log).bind(console);\n }\n _enabled(t) {\n return t >= this._levelRef.value && this._levelRef.value !== 4;\n }\n _prefix(t) {\n const e = [];\n let o = \"\";\n if (this._name) {\n const l = u(`name:${this._name}`, this._nameColor);\n o += `%c${this._name}%c`, e.push(\n `background:${l}; color:#fff; padding:1px 4px; border-radius:2px; font-weight:700;`,\n p\n );\n }\n if (t && (o += ` ${t}`), this._groupPath.length) {\n const l = this._groupPath.join(\"/\"), r = u(`group:${l}`);\n o += ` %c${l}%c`, e.push(`color:${r}; text-decoration: underline;`, p);\n }\n return [o, e];\n }\n}\nconst v = () => {\n}, p = \"color:inherit; background:transparent; text-decoration:none;\", O = {\n debug: { level: -1, label: \"\", method: \"debug\" },\n log: { level: 0, label: \"\", method: \"log\" },\n info: { level: 1, label: \"[I]\", method: \"info\" },\n warn: { level: 2, label: \"[W]\", method: \"warn\" },\n error: { level: 3, label: \"[E]\", method: \"error\" }\n};\nfunction y(n) {\n const t = function(e, o) {\n return n.group(e, o);\n };\n return new Proxy(t, {\n get(e, o, l) {\n return n[o];\n },\n set(e, o, l) {\n return n[o] = l, !0;\n },\n apply(e, o, l) {\n return n.group(l[0], l[1]);\n },\n has(e, o) {\n return o in n;\n }\n });\n}\nfunction S(n) {\n return new m(n);\n}\nexport {\n m as Logger,\n $ as LoggerLevel,\n S as createLogger\n};\n//# sourceMappingURL=index.js.map\n","var w = /* @__PURE__ */ ((n) => (n.BODY_USED = \"BODY_USED\", n.NO_BODY_READER = \"NO_BODY_READER\", n.TIMEOUT = \"TIMEOUT\", n.NETWORK_ERROR = \"NETWORK_ERROR\", n.BODY_NOT_ALLOWED = \"BODY_NOT_ALLOWED\", n.HOOK_CONTEXT_CHANGED = \"HOOK_CONTEXT_CHANGED\", n.ABORTED_BY_HOOK = \"ABORTED_BY_HOOK\", n.INVALID_HOOK_CALLBACK = \"INVALID_HOOK_CALLBACK\", n.UNEXPECTED_HOOK_RETURN = \"UNEXPECTED_HOOK_RETURN\", n))(w || {});\nclass R extends Error {\n constructor(r, t, e, o) {\n super(t, o), this.code = r, this.context = e;\n }\n name = \"FexiosError\";\n static is(r) {\n return r?.constructor === R;\n }\n}\nclass M extends R {\n constructor(r, t, e) {\n super(t.statusText, r, void 0, e), this.response = t;\n }\n name = \"FexiosResponseError\";\n static is(r) {\n return r?.constructor === M;\n }\n}\nconst V = (n) => R.is(n) && !M.is(n);\nfunction x(n, r = 2048) {\n if (!(n instanceof Uint8Array))\n throw new TypeError(\"Input must be a Uint8Array\");\n if (n.length === 0)\n return !0;\n const t = Math.min(\n Math.max(n.length, 256),\n r\n ), e = n.slice(0, t);\n if (H(e))\n return !1;\n const o = F(e);\n if (o.nullByteRatio > 0.05 || o.highByteRatio > 0.95)\n return !1;\n const s = [\"utf-8\", \"utf-16le\", \"utf-16be\", \"iso-8859-1\"];\n let i = -1, a = !1;\n for (const c of s)\n try {\n const u = new TextDecoder(c, { fatal: !0 }).decode(e), l = W(u);\n l > i && (i = l, a = l > 0.7);\n } catch {\n continue;\n }\n return a;\n}\nfunction H(n) {\n if (n.length < 4) return !1;\n const r = [\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 r)\n if (n.length >= t.length) {\n let e = !0;\n for (let o = 0; o < t.length; o++)\n if (n[o] !== t[o]) {\n e = !1;\n break;\n }\n if (e) return !0;\n }\n return !1;\n}\nfunction F(n) {\n let r = 0, t = 0, e = 0;\n for (const o of n)\n o === 0 && r++, o > 127 && t++, (o < 32 && o !== 9 && o !== 10 && o !== 13 || o === 127) && e++;\n return {\n nullByteRatio: r / n.length,\n highByteRatio: t / n.length,\n controlCharRatio: e / n.length\n };\n}\nfunction W(n) {\n if (n.length === 0) return 1;\n let r = 1, t = 0;\n for (let o = 0; o < n.length; o++) {\n const s = n[o].charCodeAt(0);\n s >= 32 && s <= 126 || s === 9 || s === 10 || s === 13 || s === 32 ? t++ : s > 127 && s < 65534 ? !K(s) && !Y(s) && t++ : r -= 0.1;\n }\n const e = t / n.length;\n return r *= e, $(n) && (r *= 1.1), Math.max(0, Math.min(1, r));\n}\nfunction K(n) {\n return n >= 0 && n <= 31 || n >= 127 && n <= 159;\n}\nfunction Y(n) {\n return n >= 57344 && n <= 63743 || n >= 983040 && n <= 1048573 || n >= 1048576 && n <= 1114109;\n}\nfunction $(n) {\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((r) => r.test(n));\n}\nfunction O(n) {\n if (typeof n != \"object\" || n === null || Object.prototype.toString.call(n) !== \"[object Object]\")\n return !1;\n const r = Object.getPrototypeOf(n);\n return r === Object.prototype || r === null;\n}\nconst U = (n, ...r) => {\n const t = (o) => {\n if (Array.isArray(o)) return o.slice();\n if (O(o)) {\n const s = {};\n for (const i of Reflect.ownKeys(o)) s[i] = t(o[i]);\n return s;\n }\n return o;\n }, e = t(n);\n for (const o of r)\n if (o != null)\n for (const s of Reflect.ownKeys(o)) {\n const i = o[s];\n if (typeof i > \"u\") continue;\n const a = e[s];\n O(a) && O(i) ? e[s] = U(a, i) : e[s] = t(i);\n }\n return e;\n};\nclass S {\n constructor(r, t, e) {\n this.rawResponse = r, this.data = t, this.ok = r.ok, this.status = r.status, this.statusText = r.statusText, this.headers = r.headers, Object.entries(e || {}).forEach(([o, s]) => {\n this[o] = s;\n });\n }\n ok;\n status;\n statusText;\n headers;\n}\nasync function N(n, r, t) {\n if (n.bodyUsed)\n throw new R(\n w.BODY_USED,\n \"Response body has already been used or locked\"\n );\n const e = n.headers.get(\"content-type\") || \"\", o = Number(n.headers.get(\"content-length\")) || 0, s = (a, c) => c === \"json\" || a.startsWith(\"application/json\"), i = (a, c, u) => u === \"blob\" || a.startsWith(\"image/\") && !a.startsWith(\"image/svg\") || a.startsWith(\"video/\") || a.startsWith(\"audio/\") || !x(c);\n if ((n.status === 101 || n.status === 426 || n.headers.get(\"upgrade\")) && typeof globalThis.WebSocket < \"u\") {\n const a = new WebSocket(n.url);\n return await new Promise((c, u) => {\n a.onopen = c, a.onerror = u;\n }), new S(n, a, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n });\n } else if (e.startsWith(\"text/event-stream\") && ![\"text\", \"json\"].includes(r || \"\") && typeof globalThis.EventSource < \"u\") {\n const a = new EventSource(n.url);\n return await new Promise((c, u) => {\n a.onopen = c, a.onerror = u;\n }), new S(n, a);\n } else {\n if (r === \"stream\")\n return new S(\n n,\n n.body\n );\n {\n const a = n.clone().body?.getReader();\n if (!a)\n throw new R(\n w.NO_BODY_READER,\n \"Failed to get ReadableStream from response body\"\n );\n let c = new Uint8Array();\n for (; ; ) {\n const { done: l, value: d } = await a.read();\n if (l) break;\n if (d && (c = new Uint8Array([...c, ...d]), t && o > 0)) {\n const f = Math.min(c.length / o, 1);\n t(f, c);\n }\n }\n const u = new S(n, void 0);\n if (r === \"arrayBuffer\")\n return u.data = c.buffer, u;\n if (s(e, r))\n try {\n const l = new TextDecoder().decode(c);\n u.data = JSON.parse(l);\n } catch {\n }\n if (typeof u.data != \"string\" && i(e, c, r) ? u.data = new Blob([c], {\n type: n.headers.get(\"content-type\") || void 0\n }) : u.data = new TextDecoder().decode(c), typeof u.data == \"string\" && r !== \"text\") {\n const l = u.data.trim(), d = l[0], f = l[l.length - 1];\n if (d === \"{\" && f === \"}\" || d === \"[\" && f === \"]\")\n try {\n u.data = JSON.parse(u.data);\n } catch {\n }\n }\n if (typeof u.data > \"u\" && (u.data = c.length > 0 ? c : void 0), u.ok)\n return u;\n throw new M(\n `Request failed with status code ${n.status}`,\n u\n );\n }\n }\n}\nvar D;\n((n) => {\n n.makeSearchParams = (o) => {\n if (!o)\n return new URLSearchParams();\n if (o instanceof URLSearchParams)\n return o;\n if (typeof o != \"object\" || o?.constructor !== Object)\n throw new TypeError(\"only plain object is supported\");\n const s = new URLSearchParams(), i = (u, l) => {\n l != null && s.append(u, l);\n }, a = (u, l) => {\n l != null && s.set(u, l);\n }, c = (u, l) => {\n if (l != null) {\n if (Array.isArray(l)) {\n for (const d of l) i(u, d?.toString());\n return;\n }\n if (typeof l == \"object\" && l.constructor === Object) {\n for (const [d, f] of Object.entries(l)) {\n if (f == null) continue;\n const h = d.endsWith(\"[]\"), p = h ? d.slice(0, -2) : d, y = `${u}[${p}]`;\n if (h) {\n const b = `${y}[]`;\n if (Array.isArray(f))\n for (const E of f) i(b, E?.toString());\n else typeof f == \"object\" && f !== null && f.constructor === Object ? c(`${y}[]`, f) : i(b, f?.toString());\n } else if (Array.isArray(f))\n for (const b of f) i(y, b?.toString());\n else typeof f == \"object\" && f !== null && f.constructor === Object ? c(y, f) : a(y, f?.toString());\n }\n return;\n }\n a(u, l?.toString());\n }\n };\n for (const [u, l] of Object.entries(o))\n c(u, l);\n return s;\n }, n.makeQueryString = (o) => (0, n.makeSearchParams)(o).toString(), n.makeURL = (o, s, i, a) => {\n const c = typeof window < \"u\" && window.location?.origin || \"http://localhost\", u = typeof o == \"string\" ? new URL(o, a ?? c) : new URL(o), l = (0, n.toQueryRecord)(u.searchParams), d = (0, n.mergeQueries)(l, s || {}), f = (0, n.makeSearchParams)(d);\n return u.search = f.toString(), u.hash = i || \"\", u;\n }, n.toQueryRecord = (o) => {\n typeof o == \"string\" && (o = (0, n.fromString)(o));\n const s = {}, i = (c) => {\n if (!c.includes(\"[\")) return { path: [c], forceArray: !1 };\n const u = [c.slice(0, c.indexOf(\"[\"))], l = /\\[([^\\]]*)\\]/g;\n let d, f = !1, h = !1;\n for (; d = l.exec(c); )\n d[1] === \"\" ? (f = !0, h = !0) : (u.push(d[1]), h = !1);\n return f && h && (u[u.length - 1] = u[u.length - 1] + \"[]\"), { path: u, forceArray: f };\n }, a = (c, u, l, d) => {\n let f = c;\n for (let h = 0; h < u.length; h++) {\n const p = u[h];\n h === u.length - 1 ? d ? f[p] === void 0 ? f[p] = [l] : Array.isArray(f[p]) ? f[p].push(l) : f[p] = [f[p], l] : f[p] === void 0 ? f[p] = l : Array.isArray(f[p]) ? f[p].push(l) : f[p] = [f[p], l] : ((f[p] === void 0 || typeof f[p] != \"object\" || Array.isArray(f[p])) && (f[p] = {}), f = f[p]);\n }\n };\n for (const [c, u] of o.entries()) {\n const { path: l, forceArray: d } = i(String(c));\n a(s, l, u?.toString(), d);\n }\n return s;\n }, n.fromString = (o) => {\n const s = o.trim();\n if (!s) return new URLSearchParams();\n if (s.startsWith(\"?\")) return new URLSearchParams(s.slice(1));\n const i = s.indexOf(\"?\");\n if (i >= 0) {\n const a = s.indexOf(\"#\", i + 1), c = s.slice(i + 1, a >= 0 ? a : void 0);\n return new URLSearchParams(c);\n }\n return new URLSearchParams(s);\n }, n.mergeQueries = (o, ...s) => {\n const i = r(t(o));\n for (const a of s)\n a != null && e(i, t(a));\n return i;\n };\n function r(o) {\n if (Array.isArray(o)) return o.map(r);\n if (O(o)) {\n const s = {};\n for (const [i, a] of Object.entries(o)) s[i] = r(a);\n return s;\n }\n if (o instanceof Map) {\n const s = {};\n for (const [i, a] of o.entries()) s[i] = r(a);\n return s;\n }\n return o;\n }\n function t(o) {\n if (!o) return {};\n if (o instanceof URLSearchParams || o instanceof FormData || o instanceof Map)\n return (0, n.toQueryRecord)(o);\n if (typeof o == \"string\") return (0, n.toQueryRecord)((0, n.fromString)(o));\n if (O(o)) return o;\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n o\n )}`\n );\n }\n function e(o, s) {\n for (const [i, a] of Object.entries(s)) {\n if (a === void 0) continue;\n if (a === null) {\n delete o[i];\n continue;\n }\n const c = o[i];\n O(c) && O(a) ? e(c, a) : o[i] = r(a);\n }\n }\n})(D || (D = {}));\nconst v = function(n) {\n const r = this.constructor.prototype, t = Reflect.get(r, n, r);\n function e(...o) {\n return Reflect.apply(t, e, o);\n }\n Reflect.setPrototypeOf(e, r);\n for (const o of Reflect.ownKeys(t)) {\n const s = Reflect.getOwnPropertyDescriptor(t, o);\n s && Reflect.defineProperty(e, o, s);\n }\n return e;\n};\nv.prototype = Object.create(Function.prototype);\nvar k;\n((n) => {\n n.makeHeaders = (r) => {\n if (!r) return new Headers();\n if (r instanceof Headers) return new Headers(r);\n const t = new Headers();\n if (r instanceof Map) {\n for (const [e, o] of r.entries())\n if (o != null)\n if (Array.isArray(o))\n for (const s of o)\n s != null && t.append(e, String(s));\n else\n t.append(e, String(o));\n return t;\n }\n if (O(r)) {\n for (const [e, o] of Object.entries(r))\n if (o != null)\n if (Array.isArray(o))\n for (const s of o)\n s != null && t.append(e, String(s));\n else\n t.append(e, String(o));\n return t;\n }\n throw new TypeError(\n \"only plain object, Map/ReadonlyMap, or Headers is supported\"\n );\n }, n.toHeaderRecord = (r) => {\n if (r instanceof Headers) {\n const t = {};\n return r.forEach((e, o) => {\n t[o] = t[o] ? [...t[o], e] : [e];\n }), t;\n }\n if (r instanceof Map) {\n const t = {};\n for (const [e, o] of r.entries())\n if (o != null)\n if (Array.isArray(o)) {\n const s = o.filter((i) => i != null).map((i) => String(i));\n s.length && (t[e] = (t[e] ?? []).concat(s));\n } else {\n const s = String(o);\n t[e] = t[e] ? [...t[e], s] : [s];\n }\n return t;\n }\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n r\n )}`\n );\n }, n.mergeHeaders = (r, ...t) => {\n const e = r instanceof Headers ? new Headers(r) : (0, n.makeHeaders)(r), o = (s) => {\n for (const [i, a] of Object.entries(s))\n if (a !== void 0) {\n if (a === null) {\n e.delete(i);\n continue;\n }\n if (Array.isArray(a)) {\n e.delete(i);\n for (const c of a)\n c != null && e.append(i, String(c));\n } else\n e.set(i, String(a));\n }\n };\n for (const s of t) {\n if (s == null) continue;\n if (s instanceof Headers) {\n s.forEach((a, c) => {\n e.set(c, a);\n });\n continue;\n }\n if (O(s)) {\n o(s);\n continue;\n }\n const i = (0, n.toHeaderRecord)(s);\n for (const [a, c] of Object.entries(i)) {\n e.delete(a);\n for (const u of c) e.append(a, u);\n }\n }\n return e;\n };\n})(k || (k = {}));\nclass g extends v {\n static FINAL_SYMBOL = Symbol(\"FEXIOS_FINAL_CONTEXT\");\n static NORMALIZED_SYMBOL = Symbol(\"FEXIOS_NORMALIZED_QUERY\");\n baseConfigs;\n static DEFAULT_CONFIGS = {\n baseURL: \"\",\n timeout: 60 * 1e3,\n credentials: \"same-origin\",\n headers: {},\n query: {},\n responseType: void 0,\n fetch: globalThis.fetch\n };\n hooks = [];\n static ALL_METHODS = [\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n static METHODS_WITHOUT_BODY = [\n \"get\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n constructor(r = {}) {\n super(\"request\"), this.baseConfigs = U(g.DEFAULT_CONFIGS, r), g.ALL_METHODS.forEach(\n (t) => this.createMethodShortcut(t.toLowerCase())\n );\n }\n async request(r, t) {\n let e = t = t || {};\n if (typeof r == \"string\" || r instanceof URL ? e.url = r.toString() : typeof r == \"object\" && (e = U(r, e)), e = await this.emit(\"beforeInit\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0\n }), e[g.FINAL_SYMBOL]) return e;\n if (g.METHODS_WITHOUT_BODY.includes(\n e.method?.toLocaleLowerCase()\n ) && e.body)\n throw new R(\n w.BODY_NOT_ALLOWED,\n `Request method \"${e.method}\" does not allow body`\n );\n if (e = await this.emit(\"beforeRequest\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0,\n preAdjust: !0,\n requestOptionsOverridesURLSearchParams: !0,\n preRequestOptionsOverridesURLSearchParams: !0,\n postRequestOptionsOverridesURLSearchParams: !0\n }), e[g.FINAL_SYMBOL]) return e;\n let o;\n const s = {};\n if (typeof e.body < \"u\" && e.body !== null && (e.body instanceof Blob || e.body instanceof FormData || e.body instanceof URLSearchParams ? o = e.body : typeof e.body == \"object\" && e.body !== null ? (o = JSON.stringify(e.body), e.headers = this.mergeHeaders(e.headers, {\n \"Content-Type\": \"application/json\"\n })) : o = e.body), !k.makeHeaders(\n t.headers || {}\n ).get(\"content-type\") && o && (o instanceof FormData || o instanceof URLSearchParams ? s[\"content-type\"] = null : typeof o == \"string\" && typeof e.body == \"object\" ? s[\"content-type\"] = \"application/json\" : o instanceof Blob && (s[\"content-type\"] = o.type || \"application/octet-stream\")), e.body = o, e = await this.emit(\"afterBodyTransformed\", e, {\n shouldAdjustRequestParams: !0,\n shouldHandleShortCircuitResponse: !0,\n preAdjust: !0,\n postRequestOptionsOverridesURLSearchParams: !0\n }), e[g.FINAL_SYMBOL]) return e;\n const i = e.abortController || globalThis.AbortController ? new AbortController() : void 0, a = e.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", c = new URL(\n e.url.toString(),\n a\n ), u = D.makeURL(\n c,\n e.query,\n c.hash\n ).toString(), l = new Request(u, {\n method: e.method || \"GET\",\n credentials: e.credentials,\n cache: e.cache,\n mode: e.mode,\n headers: k.mergeHeaders(\n this.baseConfigs.headers,\n e.headers || {},\n s\n ),\n body: e.body,\n signal: i?.signal\n });\n if (e.rawRequest = l, e = await this.emit(\"beforeActualFetch\", e, {\n shouldHandleShortCircuitResponse: !0\n }), e[g.FINAL_SYMBOL]) return e;\n const d = e.timeout || this.baseConfigs.timeout || 60 * 1e3;\n if (e.url.startsWith(\"ws\"))\n try {\n const h = new WebSocket(e.url);\n return await new Promise((p, y) => {\n const b = setTimeout(() => {\n y(\n new R(\n w.TIMEOUT,\n `WebSocket connection timed out after ${d}ms`,\n e\n )\n );\n }, d);\n h.onopen = () => {\n clearTimeout(b), p();\n }, h.onerror = (E) => {\n clearTimeout(b), y(\n new R(\n w.NETWORK_ERROR,\n \"WebSocket connection failed\",\n e\n )\n );\n }, h.onclose = (E) => {\n E.code !== 1e3 && (clearTimeout(b), y(\n new R(\n w.NETWORK_ERROR,\n `WebSocket closed with code ${E.code}`,\n e\n )\n ));\n };\n }), e.rawResponse = new Response(), e.response = new S(e.rawResponse, h, {\n ok: !0,\n status: 101,\n statusText: \"Switching Protocols\"\n }), e.data = h, e.headers = new Headers(), this.emit(\"afterResponse\", e);\n } catch (h) {\n throw h instanceof R ? h : new R(\n w.NETWORK_ERROR,\n `WebSocket creation failed: ${h}`,\n e\n );\n }\n let f;\n try {\n i && (f = setTimeout(() => {\n i.abort();\n }, d));\n const h = await (t.fetch || this.baseConfigs.fetch || globalThis.fetch)(e.rawRequest).catch((p) => {\n throw f && clearTimeout(f), i?.signal.aborted ? new R(\n w.TIMEOUT,\n `Request timed out after ${d}ms`,\n e\n ) : new R(w.NETWORK_ERROR, p.message, e);\n });\n return f && clearTimeout(f), e.rawResponse = h, e.response = await N(\n h,\n e.responseType,\n (p, y) => {\n t?.onProgress?.(p, y);\n }\n ), e.data = e.response.data, e.headers = e.response.headers, this.emit(\"afterResponse\", e);\n } catch (h) {\n throw f && clearTimeout(f), h;\n }\n }\n mergeQueries = D.mergeQueries;\n mergeHeaders = k.mergeHeaders;\n normalizeContext(r, t = {}) {\n const e = r, o = e.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", s = new URL(\n o,\n globalThis.location?.href || \"http://localhost\"\n ), i = new URL(e.url.toString(), s), a = !!e[g.NORMALIZED_SYMBOL];\n e.baseURL = s ? s.origin : i.origin;\n let c;\n a ? c = t.requestOptionsOverridesURLSearchParams ? this.mergeQueries({}, i.search, e.query) : this.mergeQueries({}, e.query, i.search) : (c = t.requestOptionsOverridesURLSearchParams ? this.mergeQueries(\n s?.search || \"\",\n this.baseConfigs.query,\n i.search,\n e.query\n ) : this.mergeQueries(\n s?.search || \"\",\n this.baseConfigs.query,\n e.query,\n i.search\n ), e[g.NORMALIZED_SYMBOL] = !0), e.query = c;\n const u = new URL(i);\n return u.search = \"\", e.url = u.toString(), e;\n }\n async emit(r, t, e = {}) {\n const o = this.hooks.filter((s) => s.event === r);\n if (e?.shouldAdjustRequestParams && e?.preAdjust)\n try {\n t = this.normalizeContext(t, {\n requestOptionsOverridesURLSearchParams: e.preRequestOptionsOverridesURLSearchParams\n });\n } catch {\n }\n try {\n let s = 0;\n for (const i of o) {\n const a = `${r}#${i.action.name || `anonymous#${s}`}`, c = Symbol(\"FEXIOS_HOOK_CONTEXT\");\n t[c] = c;\n const u = t.url;\n let l = \"\";\n try {\n const f = this.mergeQueries(\n {},\n t.query || {}\n );\n l = JSON.stringify(f);\n } catch {\n }\n let d = await i.action.call(this, t);\n if (d === void 0 && (d = t), d === !1)\n throw new R(\n w.ABORTED_BY_HOOK,\n `Request aborted by hook \"${a}\"`,\n t\n );\n if (d instanceof Response) {\n const f = d, h = { ...t, rawResponse: f }, p = await N(\n f,\n t.responseType,\n (y, b) => {\n t.onProgress?.(y, b);\n }\n );\n if (h.response = p, h.data = p.data, h.headers = p.headers, r !== \"afterResponse\") {\n const y = await this.emit(\"afterResponse\", h);\n return y[g.FINAL_SYMBOL] = !0, y;\n } else\n return h[g.FINAL_SYMBOL] = !0, h;\n } else if (typeof d == \"object\" && d[c] === c)\n t = d;\n else {\n const f = globalThis[\"\".concat(\"console\")];\n try {\n throw new R(\n w.HOOK_CONTEXT_CHANGED,\n `Hook \"${a}\" should return the original FexiosContext or return false to abort the request, but got \"${d}\".`\n );\n } catch (h) {\n f.warn(h.stack || h);\n }\n }\n if (e?.shouldAdjustRequestParams)\n try {\n const f = t.baseURL || this.baseConfigs.baseURL || globalThis.location?.href || \"http://localhost\", h = new URL(\n t.url.toString(),\n f\n );\n let p = {};\n if (l)\n try {\n p = JSON.parse(l);\n } catch {\n }\n const y = t.query || {}, b = this.mergeQueries(\n p,\n h.search,\n y\n );\n t.query = b;\n const E = new URL(h);\n E.search = \"\", t.url = E.toString();\n } catch {\n }\n delete t[c], s++;\n }\n } catch (s) {\n return Promise.reject(s);\n }\n return t;\n }\n on(r, t, e = !1) {\n if (typeof t != \"function\")\n throw new R(\n w.INVALID_HOOK_CALLBACK,\n `Hook should be a function, but got \"${typeof t}\"`\n );\n return this.hooks[e ? \"unshift\" : \"push\"]({\n event: r,\n action: t\n }), this;\n }\n off(r, t) {\n return r === \"*\" || !r ? this.hooks = this.hooks.filter((e) => e.action !== t) : this.hooks = this.hooks.filter(\n (e) => e.event !== r || e.action !== t\n ), this;\n }\n createInterceptor(r) {\n return {\n handlers: () => this.hooks.filter((t) => t.event === r).map((t) => t.action),\n use: (t, e = !1) => this.on(r, t, e),\n clear: () => {\n this.hooks = this.hooks.filter((t) => t.event !== r);\n }\n };\n }\n interceptors = {\n request: this.createInterceptor(\"beforeRequest\"),\n response: this.createInterceptor(\"afterResponse\")\n };\n createMethodShortcut(r) {\n return Reflect.defineProperty(this, r, {\n get: () => (t, e, o) => (g.METHODS_WITHOUT_BODY.includes(\n r.toLocaleLowerCase()\n ) ? o = e : (o = o || {}, o.body = e), this.request(t, {\n ...o,\n method: r\n }))\n }), this;\n }\n extends(r) {\n const t = new g(U(this.baseConfigs, r));\n return t.hooks = [...this.hooks], t._plugins = new Map(this._plugins), t._plugins.forEach(async (e) => {\n await t.plugin(e);\n }), t;\n }\n create = g.create;\n static create(r) {\n return new g(r);\n }\n _plugins = /* @__PURE__ */ new Map();\n async plugin(r) {\n if (typeof r?.name == \"string\" && typeof r?.install == \"function\") {\n if (this._plugins.has(r.name))\n return this;\n const t = await r.install(this);\n if (this._plugins.set(r.name, r), t instanceof g)\n return t;\n }\n return this;\n }\n // 版本弃子们.jpg\n /** @deprecated Use checkIsPlainObject from utils instead */\n checkIsPlainObject = O;\n /** @deprecated Use `mergeQueries` instead */\n mergeQuery = this.mergeQueries;\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 Q = g.create, j = Q();\n/* v8 ignore else -- @preserve */\ntypeof globalThis < \"u\" ? globalThis.fexios = j : typeof window < \"u\" && (window.fexios = j);\nvar I;\n((n) => {\n function r(e) {\n return Array.isArray(e) ? e.join(\"|\") : typeof e == \"boolean\" || e === null ? e ? \"1\" : void 0 : typeof e == \"number\" ? \"\" + e : e;\n }\n n.normalizeParamValue = r;\n function t(e) {\n const o = (i) => i && (i instanceof URLSearchParams || i instanceof FormData);\n if (e == null)\n return;\n const s = new FormData();\n if (o(e))\n return e.forEach((i, a) => {\n const c = r(i);\n c != null && s.append(a, c);\n }), s;\n if (O(e))\n return Object.entries(e).forEach(([i, a]) => {\n const c = r(a);\n c != null && s.append(i, c);\n }), s;\n }\n n.normalizeBody = t;\n})(I || (I = {}));\nvar _ = /* @__PURE__ */ ((n) => (n.HTTP_ERROR = \"HTTP_ERROR\", n.LOGIN_FAILED = \"LOGIN_FAILED\", n.LOGIN_RETRY_LIMIT_EXCEEDED = \"LOGIN_RETRY_LIMIT_EXCEEDED\", n.TOKEN_RETRY_LIMIT_EXCEEDED = \"TOKEN_RETRY_LIMIT_EXCEEDED\", n))(_ || {});\nclass m extends Error {\n constructor(r, t = \"\", e) {\n super(), this.code = r, this.message = t, this.cause = e, this.name = \"WikiSaikouError\";\n }\n static is(r, t) {\n return r instanceof this && (t === void 0 || r.code === t);\n }\n}\nclass T extends Error {\n constructor(r, t) {\n super(), this.errors = r, this.cause = t, this.name = \"MediaWikiApiError\", this.errors = T.normalizeErrors(r), this.message = r.map((e) => e.text).filter(Boolean).join(`\n`), this.code = this.isBadTokenError() ? \"badtoken\" : this.errors[0]?.code || \"Unknown Error\";\n }\n get firstError() {\n return this.errors[0];\n }\n isBadTokenError() {\n return this.errors.some((r) => r.code === \"badtoken\") || [\"NeedToken\", \"WrongToken\"].includes(this.cause?.data?.login?.result);\n }\n toString() {\n return `[${this.name} ${this.code}]`;\n }\n static is(r) {\n return r instanceof this;\n }\n static normalizeErrors(r) {\n return Array.isArray(r) === !1 ? [] : r.filter((t) => typeof t == \"object\" && !!t?.code).map((t) => t.text ? t : t.info ? { ...t, text: t.info } : t[\"*\"] ? { ...t, text: t[\"*\"] } : { ...t, text: \"\" });\n }\n}\n((n) => {\n function r(s) {\n if (s == null) return;\n if (s?.response?.data !== void 0) return s.response.data;\n if (s?.data !== void 0) return s.data;\n const i = s instanceof Error ? s.cause : void 0;\n return i?.response?.data !== void 0 ? i.response.data : i?.data !== void 0 ? i.data : s || void 0;\n }\n function t(s) {\n return e(s).length > 0;\n }\n n.includesMediaWikiApiError = t, n.normalizeMwApiErrors = T.normalizeErrors;\n function e(s) {\n let i = r(s);\n if (typeof i != \"object\" || i === null)\n return [];\n const a = i?.error, c = i?.errors, u = [];\n return a && u.push(a), Array.isArray(c) && u.push(...c), (0, n.normalizeMwApiErrors)(u);\n }\n n.extractMediaWikiApiErrors = e;\n function o(s) {\n if (T.is(s))\n return s.isBadTokenError();\n {\n const i = e(s);\n return new T(i).isBadTokenError();\n }\n }\n n.isBadTokenError = o;\n})(m || (m = {}));\nconst q = Symbol.for(\"__FEXIOS_SAIKOU__\");\n/**\n * FexiosSaikou\n *\n * A pre-configured Fexios instance with MediaWiki-friendly defaults:\n * - MediaWiki-specific request/response params normalization\n * - built-in token management\n * - error handling\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n *\n * @param {string|URL} payload create a new FexiosSaikou instance with the given baseURL\n * @param {Fexios} payload or make the given Fexios instance a FexiosSaikou instance\n */\nfunction C(n) {\n const r = n instanceof g ? n : new g({\n baseURL: n instanceof URL ? n.toString() : String(n),\n responseType: \"json\"\n });\n return r[q] || (Reflect.defineProperty(r, q, {\n get: () => !0,\n enumerable: !1,\n configurable: !1\n }), r._tokens = /* @__PURE__ */ new Map(), r.on(\"afterResponse\", (t) => {\n const { data: e, rawRequest: o } = t, s = o?.headers.get(\"x-mw-token-name\");\n s && m.isBadTokenError(e) && r._tokens.delete(s);\n const i = e?.query?.tokens;\n i && typeof i == \"object\" && Object.entries(i).forEach(([c, u]) => {\n typeof u == \"string\" && r._tokens.set(c.replace(/token$/i, \"\").toLowerCase(), u);\n });\n const a = e?.login?.token;\n return typeof a == \"string\" && r._tokens.set(\"login\", a), t;\n }), r.on(\"beforeInit\", (t) => {\n if (t.method?.toLowerCase() !== \"post\")\n return t;\n if (t.body === void 0 || t.body === null)\n return t.body = void 0, t;\n const e = t.body = I.normalizeBody(t.body), o = new URLSearchParams(t.query);\n return e.has(\"format\") && o.delete(\"format\"), e.has(\"formatversion\") && o.delete(\"formatversion\"), e.has(\"action\") && o.delete(\"action\"), e.has(\"origin\") && (o.set(\"origin\", \"\" + e.get(\"origin\")), e.delete(\"origin\")), t.query = Object.fromEntries(o.entries()), t;\n }), r.on(\"beforeInit\", (t) => (t.query = I.normalizeBody(t.query) || {}, t)), r.on(\"beforeRequest\", (t) => {\n const e = new URL(t.url), o = e.searchParams;\n if (globalThis.location && (!o.has(\"origin\") && location.origin !== e.origin ? (o.set(\"origin\", location.origin), r.baseConfigs.credentials = \"include\", r.baseConfigs.mode = \"cors\") : location.origin === e.origin && (o.delete(\"origin\"), r.baseConfigs.credentials = void 0, r.baseConfigs.mode = void 0)), e.searchParams.has(\"origin\")) {\n const s = encodeURIComponent(\n e.searchParams.get(\"origin\") || \"\"\n ).replace(/\\./g, \"%2E\");\n t.query = {}, e.searchParams.delete(\"origin\"), t.url = `${e}${e.search ? \"&\" : \"?\"}origin=${s}`;\n }\n return t;\n })), r;\n}\nconst A = (n, ...r) => {\n const t = (s) => Object.prototype.toString.call(s) === \"[object Object]\", e = (s) => {\n if (Array.isArray(s)) return s.slice();\n if (t(s)) {\n const i = {};\n for (const a of Reflect.ownKeys(s)) i[a] = e(s[a]);\n return i;\n }\n return s;\n }, o = e(n);\n for (const s of r)\n if (s != null)\n for (const i of Reflect.ownKeys(s)) {\n const a = s[i];\n if (typeof a > \"u\") continue;\n const c = o[i];\n t(c) && t(a) ? o[i] = A(c, a) : o[i] = e(a);\n }\n return o;\n}, B = (n, r, t) => {\n let e = { ...P.DEFAULT_CONFIGS };\n if (typeof n == \"string\" ? e = A(e, {\n baseURL: n,\n fexiosConfigs: r || {},\n defaultParams: t || {}\n }) : typeof n == \"object\" && n !== null && (e = A(e, n)), !e.baseURL && typeof window == \"object\" && window.mediaWiki) {\n const { wgServer: o, wgScriptPath: s } = window.mediaWiki?.config?.get([\"wgServer\", \"wgScriptPath\"]) || {};\n typeof o == \"string\" && typeof s == \"string\" && (e.baseURL = `${o}${s}/api.php`);\n }\n if (typeof e.baseURL != \"string\")\n throw new Error(\"baseURL is required\");\n return e;\n}, X = () => {\n}, z = async (n, r) => {\n let t = 0;\n const { retry: e = 3, onRetry: o = X, shouldRetry: s = () => !0 } = r;\n let i;\n do\n try {\n return await n();\n } catch (a) {\n if (i = a, s(a, t))\n o(a, t), t++;\n else\n throw a;\n }\n while (t < e);\n throw i || new Error(\"Retry failed\");\n};\n/**\n * WikiSaikou Core class\n * @internal You **SHOULD NOT** use this class directly, instead, use the `MediaWikiApi` class.\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nconst L = class L {\n constructor(r, t, e) {\n this.version = \"7.1.2\", this.token = this.getToken;\n const o = this.config = B(\n r,\n t,\n e\n );\n this.request = C(o.baseURL);\n }\n setBaseURL(r) {\n return this.config.baseURL = r, this.request.baseConfigs.baseURL = r, this;\n }\n /** Base methods encapsulation */\n async get(r, t) {\n return this.runRequestWithApiErrorMapping(\n () => this.request.get(\n \"\",\n A(\n {},\n this.config.fexiosConfigs,\n { query: A(this.config.defaultParams, r) },\n t\n )\n )\n );\n }\n async post(r, t) {\n return this.runRequestWithApiErrorMapping(\n () => this.request.post(\n \"\",\n r,\n A(\n {},\n this.config.fexiosConfigs,\n {\n query: this.config.defaultParams\n },\n t\n )\n )\n );\n }\n /**\n * Wrap a request to map non-2xx responses containing MediaWiki API error bodies\n * into MediaWikiApiError when throwOnApiError=true, and then pass 2xx responses\n * through handleApiResponse for unified processing.\n */\n async runRequestWithApiErrorMapping(r) {\n try {\n const t = await r();\n return this.handleApiResponse(t);\n } catch (t) {\n throw this.config.throwOnApiError && m.includesMediaWikiApiError(t) ? new T(\n m.extractMediaWikiApiErrors(t),\n t\n ) : t;\n }\n }\n throwIfApiError(r) {\n const t = m.extractMediaWikiApiErrors(r);\n if (t.length > 0)\n throw new T(t, r);\n }\n handleApiResponse(r) {\n return this.config.throwOnApiError && this.throwIfApiError(r.data), r;\n }\n /** Token Handler */\n get tokens() {\n return this.request._tokens;\n }\n async fetchTokens(r = [\"csrf\"]) {\n return this.config.fexiosConfigs.credentials = \"include\", await this.get({\n action: \"query\",\n meta: \"tokens\",\n type: r\n }), this.tokens;\n }\n async getToken(r = \"csrf\", t = !1) {\n return (!this.tokens.get(r) || t) && (this.tokens.delete(r), await this.fetchTokens([r])), this.tokens.get(r);\n }\n badToken(r) {\n return this.tokens.delete(r), this.tokens;\n }\n async postWithToken(r, t, e) {\n const {\n tokenName: o = \"token\",\n retry: s = 3,\n noCache: i = !1,\n fexiosOptions: a\n } = e || {};\n if (s < 1)\n throw new m(\n _.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"The limit of the number of times to automatically re-acquire the token has been exceeded\"\n );\n let c = 0;\n return z(\n async () => {\n const u = await this.getToken(\n r,\n i || c > 0\n );\n try {\n const l = await this.post(\n {\n [o]: u,\n ...t\n },\n A(a || {}, {\n headers: { \"x-mw-token-name\": r }\n })\n );\n if (m.isBadTokenError(l.data))\n throw l;\n return l;\n } catch (l) {\n throw m.isBadTokenError(l) || l?.ok === !1 || T.is(l) ? l : new m(\n _.HTTP_ERROR,\n \"Network/transport or SDK-internal error (not a MediaWiki API error)\",\n l\n );\n }\n },\n {\n retry: s,\n onRetry: (u, l) => {\n c = l + 1;\n },\n shouldRetry: (u) => m.isBadTokenError(u) || u?.ok === !1\n }\n ).catch((u) => {\n throw m.isBadTokenError(u) || u?.ok === !1 ? new m(\n _.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"Retry attempts for acquiring/using token exhausted\",\n u\n ) : u;\n });\n }\n postWithEditToken(r) {\n return this.postWithToken(\"csrf\", r);\n }\n // for backward compatibility\n /** @deprecated Use `this.config.baseURL` instead */\n get baseURL() {\n return this.config.baseURL;\n }\n /** @deprecated Use `this.config.defaultParams` instead */\n get defaultParams() {\n return this.config.defaultParams;\n }\n /** @deprecated Use `this.config.fexiosConfigs` instead */\n get defaultOptions() {\n return this.config.fexiosConfigs;\n }\n};\nL.INIT_DEFAULT_PARAMS = {\n action: \"query\",\n errorformat: \"plaintext\",\n format: \"json\",\n formatversion: 2\n}, L.DEFAULT_CONFIGS = {\n baseURL: void 0,\n fexiosConfigs: {\n responseType: \"json\"\n },\n defaultParams: L.INIT_DEFAULT_PARAMS,\n throwOnApiError: !1\n}, L.createRequestHandler = C;\nlet P = L;\n/**\n * WikiSaikou\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass G extends P {\n async clientLogin(r, t, e) {\n e ||= {}, !e.logincontinue && !e.loginreturnurl && (e.loginreturnurl = location?.origin);\n const o = await this.postWithToken(\n \"login\",\n {\n action: \"clientlogin\",\n username: r,\n password: t,\n ...e\n },\n {\n tokenName: \"logintoken\"\n }\n );\n if (o?.data?.clientlogin?.status === \"PASS\")\n return o.data.clientlogin;\n throw new m(\n _.LOGIN_FAILED,\n o.data.clientlogin.message,\n o\n );\n }\n}\n/**\n * WikiSaikou for foreign wiki\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass J extends G {\n constructor(r, t, e) {\n const o = B(\n r,\n {\n credentials: \"include\",\n mode: \"cors\",\n ...t\n },\n {\n origin: location.origin,\n ...e\n }\n );\n super(o);\n }\n}\nexport {\n g as Fexios,\n R as FexiosError,\n w as FexiosErrorCodes,\n D as FexiosQueryBuilder,\n S as FexiosResponse,\n M as FexiosResponseError,\n J as ForeignApi,\n G as MediaWikiApi,\n T as MediaWikiApiError,\n J as MediaWikiForeignApi,\n G as MwApi,\n P as MwApiBase,\n I as MwParamNormalizer,\n P as WikiSaikouCore,\n m as WikiSaikouError,\n _ as WikiSaikouErrorCode,\n x as checkIfTextData,\n O as checkIsPlainObject,\n Q as createFexios,\n C as createFexiosSaikou,\n U as deepMerge,\n j as fexios,\n V as isFexiosError,\n N as resolveResponseBody\n};\n//# sourceMappingURL=browser.js.map\n","import { InPageEdit } from '@/InPageEdit'\nimport { FexiosConfigs } from 'wiki-saikou'\nimport { MwApi } from 'wiki-saikou/browser'\n\nexport type * from 'wiki-saikou/browser'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n api: MwApi\n }\n}\n\nexport interface ApiServiceOptions extends Partial<FexiosConfigs> {}\n\nexport class ApiService {\n constructor(\n public ctx: InPageEdit,\n options: Partial<ApiServiceOptions> = {}\n ) {\n if (location?.href && options?.baseURL?.toString()?.startsWith('/')) {\n options.baseURL = new URL(options.baseURL, location.origin)\n }\n const api = new MwApi({\n baseURL: options.baseURL!.toString(),\n fexiosConfigs: {\n headers: {\n 'x-api-user-agent': `InPageEdit-NEXT ${ctx.version}`,\n ...options.headers,\n },\n ...options,\n },\n throwOnApiError: true,\n })\n ctx.set('api', api)\n }\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit.js'\nimport { IWikiTitle } from '@/models/WikiTitle'\n\ndeclare module '@/InPageEdit.js' {\n interface InPageEdit {\n /**\n * Basic information of the current web page\n */\n currentPage: CurrentPageService\n }\n}\n\n@Inject(['wiki', 'wikiTitle'])\nexport class CurrentPageService extends Service {\n constructor(readonly ctx: InPageEdit) {\n super(ctx, 'currentPage', false)\n }\n private get logger() {\n return this.ctx.logger('CURRENT_PAGE')\n }\n\n protected async start() {\n await this.#init()\n\n this.#injectHistoryPopState()\n window.addEventListener('popstate', this.#onPopState.bind(this))\n\n this.logger.info('initialized', this.wikiTitle)\n }\n\n protected stop(): void | Promise<void> {\n window.removeEventListener('popstate', this.#onPopState.bind(this))\n }\n\n async #init() {\n await this.#initCurrentTitle()\n await this.#initIsMainPage()\n }\n\n #injectHistoryPopState() {\n const injectKey = Symbol.for('InPageEdit.CurrentPageService.UrlChangeListenerInstalled')\n if ((window as any)[injectKey]) {\n return\n }\n const _pushState = history.pushState\n const _replaceState = history.replaceState\n history.pushState = function (data: any, title: string, url?: string | null) {\n _pushState.apply(this, [data, title, url])\n window.dispatchEvent(new PopStateEvent('popstate', { state: data }))\n }\n history.replaceState = function (data: any, title: string, url?: string | null) {\n _replaceState.apply(this, [data, title, url])\n window.dispatchEvent(new PopStateEvent('popstate', { state: data }))\n }\n ;(window as any)[injectKey] = true\n }\n async #onPopState(e: PopStateEvent) {\n const oldURL = this.url\n const newURL = new URL(window.location.href)\n this.url = newURL\n\n // 只有 path/title=/curid= 变化时,才刷新状态\n if (\n oldURL.pathname !== newURL.pathname ||\n oldURL.searchParams.get('title') !== newURL.searchParams.get('title') ||\n oldURL.searchParams.get('curid') !== newURL.searchParams.get('curid')\n ) {\n await this.#init()\n this.logger.info('location changed', newURL, this.wikiTitle)\n }\n }\n\n url: URL = new URL(window.location.href)\n get params() {\n return this.url.searchParams\n }\n get canonicalUrl() {\n const href = document.querySelector<HTMLLinkElement>('link[rel=\"canonical\"]')?.href\n let url: URL | null = null\n if (href) {\n url = new URL(href, location.origin)\n }\n Reflect.defineProperty(this, 'canonicalUrl', {\n get: () => url,\n })\n return url\n }\n\n readonly isMainPage!: boolean\n async #initIsMainPage() {\n const title = this.wikiTitle\n const isMainPage = title?.getMainDBKey() === this.ctx.wiki.mainPageName\n Reflect.defineProperty(this, 'isMainPage', {\n get: () => isMainPage,\n })\n return isMainPage\n }\n\n /**\n * Get the title of the current page by location URL\n * @returns IWikiTitle or null if cannot be determined\n */\n wikiTitle!: IWikiTitle | null\n async #initCurrentTitle(): Promise<IWikiTitle | null> {\n let title: IWikiTitle | null = null\n if (this.canonicalUrl) {\n title = await this.ctx.wikiTitle.newTitleFromUrl(this.canonicalUrl)\n } else {\n title = await this.ctx.wikiTitle.newTitleFromUrl(this.url)\n }\n Object.freeze(title)\n Reflect.defineProperty(this, 'wikiTitle', {\n get: () => title,\n })\n return title\n }\n\n get wikiAction() {\n return this.params.get('action') || 'view'\n }\n}\n","import { InPageEdit, Service } from '@/InPageEdit'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n resourceLoader: ResourceLoaderService\n }\n}\n\nexport class ResourceLoaderService extends Service {\n constructor(public ctx: InPageEdit) {\n super(ctx, 'resourceLoader', true)\n }\n protected stop(): void | Promise<void> {\n this.removeAll()\n }\n\n loadScript(src: string, attrs?: Record<string, any>): Promise<HTMLScriptElement | null> {\n if (!src) {\n return Promise.resolve(null)\n }\n const key = `script:${src}`\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (existed) {\n return Promise.resolve(existed as HTMLScriptElement)\n }\n const promise = new Promise<HTMLScriptElement>((resolve, reject) => {\n const script = document.createElement('script')\n script.src = src\n script.dataset.ipe = key\n if (attrs) {\n Object.entries(attrs).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === false || value === null) {\n script.removeAttribute(key)\n } else {\n script.setAttribute(key, value)\n }\n })\n }\n document.body.appendChild(script)\n script.onload = () => resolve(script)\n script.onerror = (e) => reject(e)\n })\n return promise\n }\n\n loadStyle(href: string, attrs?: Record<string, any>): Promise<HTMLLinkElement | null> {\n if (!href) {\n return Promise.resolve(null)\n }\n const key = `style:${href}`\n const existed = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (existed) {\n return Promise.resolve(existed as HTMLLinkElement)\n }\n const promise = new Promise<HTMLLinkElement>((resolve, reject) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n link.dataset.ipe = key\n if (attrs) {\n Object.entries(attrs).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === false || value === null) {\n link.removeAttribute(key)\n } else {\n link.setAttribute(key, value)\n }\n })\n }\n const meta =\n document.querySelector('meta[name=\"ipe-styles\"]') ||\n (() => {\n const meta = document.createElement('meta')\n meta.id = 'ipe-styles'\n meta.name = 'ipe-styles'\n document.head.insertAdjacentElement('afterbegin', meta)\n return meta\n })()\n meta.before(link)\n link.onload = () => resolve(link)\n link.onerror = (e) => reject(e)\n })\n return promise\n }\n\n removeStyle(href: string) {\n const key = `style:${href}`\n const link = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (link) {\n link.remove()\n }\n }\n removeScript(src: string) {\n const key = `script:${src}`\n const script = document.querySelector(`[data-ipe=\"${key}\"]`)\n if (script) {\n script.remove()\n }\n }\n removeAll() {\n document.querySelectorAll('[data-ipe]').forEach((el) => {\n el.remove()\n })\n }\n\n resolveImportPath(path: string) {\n if (path.startsWith('http') || path.startsWith('//')) {\n return path\n }\n if (import.meta.env.VITE_BUILD_FORMAT === 'import') {\n return import.meta.resolve(path)\n }\n const src = (document.currentScript as HTMLScriptElement)?.src\n if (!src) {\n return `https://unpkg.com/mediawiki-inpageedit@latest/dist/${path}`\n }\n const url = new URL(src)\n if (!url.pathname.endsWith('.js')) {\n url.pathname = url.pathname + '/'\n }\n return new URL(path, url.toString()).toString()\n }\n}\n","const S = Object.keys;\nfunction j(s) {\n return typeof s == \"boolean\";\n}\nfunction U(s) {\n return s && typeof s.nodeType == \"number\";\n}\nfunction B(s) {\n return typeof s == \"string\";\n}\nfunction I(s) {\n return typeof s == \"number\";\n}\nfunction w(s) {\n return typeof s == \"object\" ? s !== null : v(s);\n}\nfunction v(s) {\n return typeof s == \"function\";\n}\nfunction Y(s) {\n return !!(s && s.isComponent);\n}\nfunction W(s) {\n return w(s) && typeof s.length == \"number\" && typeof s.nodeType != \"number\";\n}\nfunction x(s, t) {\n if (s)\n for (const e of S(s))\n t(s[e], e);\n}\nfunction G(s) {\n return w(s) && \"current\" in s;\n}\nconst A = {\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};\nfunction Z(s, t) {\n return s + t.charAt(0).toUpperCase() + t.substring(1);\n}\nconst q = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nS(A).forEach((s) => {\n q.forEach((t) => {\n A[Z(t, s)] = 0;\n });\n});\nconst V = Symbol.for(\"jsx-dom:type\");\nvar R = /* @__PURE__ */ function(s) {\n return s.ShadowRoot = \"ShadowRoot\", s;\n}(R || {});\nfunction J(s) {\n return s != null && s[V] === R.ShadowRoot;\n}\nconst Q = \"http://www.w3.org/2000/svg\", tt = \"http://www.w3.org/1999/xlink\", et = \"http://www.w3.org/XML/1998/namespace\";\nfunction F(s) {\n return !j(s) && s != null;\n}\nfunction T(s) {\n return Array.isArray(s) ? s.map(T).filter(Boolean).join(\" \") : w(s) ? Symbol.iterator in s ? T(Array.from(s)) : S(s).filter((t) => s[t]).join(\" \") : F(s) ? \"\" + s : \"\";\n}\nconst st = {\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}, it = /^(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 nt(s) {\n const t = document.createDocumentFragment();\n return E(s.children, t), t;\n}\nfunction ot(s, t, e) {\n t = {\n ...t,\n children: e\n };\n const i = new s(t), n = i.render();\n return \"ref\" in t && M(t.ref, i), n;\n}\nfunction c(s, t) {\n let { children: e, ...i } = t;\n !i.namespaceURI && st[s] === 0 && (i = {\n ...i,\n namespaceURI: Q\n });\n let n;\n if (B(s)) {\n if (n = i.namespaceURI ? document.createElementNS(i.namespaceURI, s) : document.createElement(s), at(i, n), E(e, n), n instanceof window.HTMLSelectElement && i.value != null)\n if (i.multiple === !0 && Array.isArray(i.value)) {\n const o = i.value.map((l) => String(l));\n n.querySelectorAll(\"option\").forEach(\n (l) => l.selected = o.includes(l.value)\n );\n } else\n n.value = i.value;\n M(i.ref, n);\n } else if (v(s))\n w(s.defaultProps) && (i = {\n ...s.defaultProps,\n ...i\n }), n = Y(s) ? ot(s, i, e) : s({\n ...i,\n children: e\n });\n else\n throw new TypeError(`Invalid JSX element type: ${s}`);\n return n;\n}\nfunction M(s, t) {\n G(s) ? s.current = t : v(s) && s(t);\n}\nfunction E(s, t) {\n if (W(s))\n rt(s, t);\n else if (B(s) || I(s))\n L(document.createTextNode(s), t);\n else if (s === null)\n L(document.createComment(\"\"), t);\n else if (U(s))\n L(s, t);\n else if (J(s)) {\n const e = t.attachShadow(s.attr);\n E(s.children, e), M(s.ref, e);\n }\n}\nfunction rt(s, t) {\n for (const e of [...s])\n E(e, t);\n return t;\n}\nfunction L(s, t) {\n t instanceof window.HTMLTemplateElement ? t.content.appendChild(s) : t.appendChild(s);\n}\nfunction C(s, t) {\n return s.replace(/[A-Z]/g, (e) => t + e.toLowerCase());\n}\nfunction K(s, t) {\n t == null || t === !1 || (Array.isArray(t) ? t.forEach((e) => K(s, e)) : B(t) ? s.setAttribute(\"style\", t) : w(t) && x(t, (e, i) => {\n i.indexOf(\"-\") === 0 ? s.style.setProperty(i, e) : I(e) && A[i] !== 0 ? s.style[i] = e + \"px\" : s.style[i] = e;\n }));\n}\nfunction lt(s, t, e) {\n switch (s) {\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n _(e, tt, C(s, \":\"), t);\n return;\n case \"xmlnsXlink\":\n b(e, C(s, \":\"), t);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n _(e, et, C(s, \":\"), t);\n return;\n }\n switch (s) {\n case \"htmlFor\":\n b(e, \"for\", t);\n return;\n case \"dataset\":\n x(t, (i, n) => {\n i != null && (e.dataset[n] = i);\n });\n return;\n case \"innerHTML\":\n case \"innerText\":\n case \"textContent\":\n F(t) && (e[s] = t);\n return;\n case \"dangerouslySetInnerHTML\":\n w(t) && (e.innerHTML = t.__html);\n return;\n case \"value\":\n if (t == null || e instanceof window.HTMLSelectElement)\n return;\n if (e instanceof window.HTMLTextAreaElement) {\n e.value = t;\n return;\n }\n break;\n case \"spellCheck\":\n e.spellcheck = t;\n return;\n case \"class\":\n case \"className\":\n v(t) ? t(e) : b(e, \"class\", T(t));\n return;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n K(e, t);\n return;\n case \"on\":\n case \"onCapture\":\n x(t, (i, n) => {\n e.addEventListener(n, i, s === \"onCapture\");\n });\n return;\n }\n if (v(t)) {\n if (s[0] === \"o\" && s[1] === \"n\") {\n let i = s.toLowerCase();\n const n = i.endsWith(\"capture\");\n if (i === \"ondoubleclick\" ? i = \"ondblclick\" : n && i === \"ondoubleclickcapture\" && (i = \"ondblclickcapture\"), !n && e[i] === null)\n e[i] = t;\n else if (n)\n e.addEventListener(\n i.substring(2, i.length - 7),\n t,\n !0\n );\n else {\n let o;\n i in window ? o = i.substring(2) : o = i[2] + s.slice(3), e.addEventListener(o, t);\n }\n }\n } else w(t) ? e[s] = t : t === !0 ? b(e, s, \"\") : t !== !1 && t != null && (e instanceof SVGElement && !it.test(s) ? b(e, C(s, \"-\"), t) : b(e, s, t));\n}\nfunction b(s, t, e) {\n s.setAttribute(t, e);\n}\nfunction _(s, t, e, i) {\n s.setAttributeNS(t, e, i);\n}\nfunction at(s, t) {\n for (const e of S(s))\n lt(e, s[e], t);\n return t;\n}\nvar P = /* @__PURE__ */ ((s) => (s.Init = \"modal.init\", s.BeforeShow = \"modal.beforeShow\", s.Show = \"modal.show\", s.BeforeClose = \"modal.beforeClose\", s.Close = \"modal.close\", s.Destroy = \"modal.destroy\", s.ToastShow = \"toast.show\", s.ToastClose = \"toast.close\", s))(P || {});\nlet ct = 0;\nconst z = (s) => `${s}-${++ct}`;\nfunction k(s) {\n return s instanceof Node ? s : document.createTextNode(String(s));\n}\nfunction p(s, t) {\n if (!s) throw new Error(`${t ?? \"Element\"} not found`);\n return s;\n}\nfunction H(s) {\n const t = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(\",\");\n return Array.from(s.querySelectorAll(t)).filter(\n (e) => !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)\n );\n}\nfunction h(s, t = {}) {\n const e = document.createElement(s);\n if (t.className && (e.className = t.className), t.html != null && (e.innerHTML = t.html), t.text != null && (e.textContent = t.text), t.attrs)\n for (const [i, n] of Object.entries(t.attrs)) e.setAttribute(i, n);\n return e;\n}\nconst ht = typeof navigator < \"u\" && /Mac|iPhone|iPad|iPod/i.test(navigator.platform), X = [\"ctrl\", \"alt\", \"shift\", \"meta\"];\nfunction dt(s) {\n if (!s) return null;\n const t = String(s).trim().toLowerCase().split(/[+\\-\\s]+/g).filter(Boolean), e = [];\n let i = null;\n const n = (l) => {\n e.includes(l) || e.push(l);\n };\n for (const l of t) {\n let r = l;\n if (r === \"control\" || r === \"ctrl\") {\n n(\"ctrl\");\n continue;\n }\n if (r === \"alt\" || r === \"option\") {\n n(\"alt\");\n continue;\n }\n if (r === \"shift\") {\n n(\"shift\");\n continue;\n }\n if (r === \"meta\" || r === \"cmd\" || r === \"command\" || r === \"super\") {\n n(\"meta\");\n continue;\n }\n if (r === \"mod\") {\n n(ht ? \"meta\" : \"ctrl\");\n continue;\n }\n r === \"esc\" && (r = \"escape\"), r === \"return\" && (r = \"enter\"), (r === \"space\" || r === \"spacebar\") && (r = \"space\"), i = r;\n }\n const o = X.filter((l) => e.includes(l));\n return !i || i === \"\" ? o.length ? o.join(\"+\") : null : o.length ? `${o.join(\"+\")}+${i}` : i;\n}\nfunction ft(s) {\n const t = [];\n s.ctrlKey && t.push(\"ctrl\"), s.altKey && t.push(\"alt\"), s.shiftKey && t.push(\"shift\"), s.metaKey && t.push(\"meta\");\n let e = s.key;\n e === \" \" && (e = \"space\");\n const i = (e.length === 1, e.toLowerCase()), n = X.filter((o) => t.includes(o));\n return n.length ? `${n.join(\"+\")}+${i}` : i;\n}\nclass ut {\n constructor() {\n this.zBase = 1e3, this.stack = [];\n }\n push(t) {\n this.stack.push(t), this.syncZ();\n }\n remove(t) {\n this.stack = this.stack.filter((e) => e !== t), this.syncZ();\n }\n top() {\n return this.stack[this.stack.length - 1];\n }\n closeAll(t, e) {\n const i = new Set((Array.isArray(e) ? e : e ? [e] : []).map(String)), n = new Set((Array.isArray(t) ? t : t ? [t] : []).map(String));\n [...this.stack].reverse().forEach((o) => {\n const l = o.modalId, r = n.size ? n.has(o.pluginName) : !0, a = i.has(l);\n r && !a && o.close();\n });\n }\n removeAll() {\n [...this.stack].forEach((t) => t.destroy()), this.stack = [];\n }\n syncZ() {\n this.stack.forEach((t, e) => t.setZIndex(this.zBase + e * 2));\n }\n lockBodyScroll() {\n document.body.classList.add(\"ipe-modal-no-scroll\");\n }\n unlockBodyScroll() {\n document.body.classList.remove(\"ipe-modal-no-scroll\");\n }\n}\nconst d = new ut();\nclass N {\n constructor(t = {}) {\n this.backdropId = z(\"ipe-modal-backdrop\"), this.modalId = z(\"ipe-modal\"), this.numberId = this.modalId.split(\"-\")[1], this._isDestroyed = !1, this.pluginName = \"normalModal\", this.buttonElsLeft = [], this.buttonElsRight = [], this.keyMap = /* @__PURE__ */ new Map(), this.isOpen = !1, this.isToast = !1, this.isDragging = !1, this.dragStartX = 0, this.dragStartY = 0, this.modalStartX = 0, this.modalStartY = 0, this.Event = P, this._hooks = [], this.startCloseTimer = (e) => {\n this.stopCloseTimer(), this.closeTimer = window.setTimeout(() => this.close(), e);\n }, this.stopCloseTimer = () => {\n this.closeTimer && window.clearTimeout(this.closeTimer), this.closeTimer = void 0;\n }, this.onDragMove = (e) => {\n if (!this.isDragging) return;\n e.preventDefault();\n const i = e.clientX - this.dragStartX, n = e.clientY - this.dragStartY, o = this.get$modal(), l = this.modalStartX + i, r = this.modalStartY + n;\n o.style.left = `${l}px`, o.style.top = `${r}px`;\n }, this.onDragEnd = () => {\n if (!this.isDragging) return;\n this.isDragging = !1, document.removeEventListener(\"pointermove\", this.onDragMove), document.removeEventListener(\"pointerup\", this.onDragEnd);\n const e = this.get$modal(), i = this.get$window();\n e.classList.remove(\"is-dragging\"), i.style.animation = \"none\", requestAnimationFrame(() => {\n this.applyAnimation(!0);\n });\n }, this.options = { ...N.DEFAULT_OPTIONS, ...t }, this.options.backdrop === !1 && t.bodyScroll === void 0 && (this.options.bodyScroll = !0);\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n static {\n this.DEFAULT_OPTIONS = {\n className: \"\",\n sizeClass: \"auto\",\n center: !0,\n fitScreen: !1,\n closeIcon: !0,\n bodyScroll: !1,\n outSideClose: !0,\n backdrop: !0,\n animation: {\n show: \"ipe-modal-fade-in\",\n hide: \"ipe-modal-fade-out\"\n },\n animationSpeed: 200\n };\n }\n static extends(t = {}) {\n return class extends this {\n constructor(e = {}) {\n super({ ...t, ...e });\n }\n };\n }\n // ------------------------------ lifecycle ------------------------------ //\n init() {\n if (this.$modal) return this;\n const t = this.options.backdrop !== !1;\n let e;\n t && (e = h(\"div\", {\n className: \"ipe-modal-backdrop\",\n attrs: { id: this.backdropId, \"data-modal-id\": this.modalId }\n }));\n const i = h(\"div\", {\n className: \"ipe-modal-modal\",\n attrs: { id: this.modalId, role: \"dialog\", \"aria-modal\": \"true\", tabindex: \"-1\" }\n });\n if (i.modal = this, !t) {\n i.classList.add(\"no-backdrop\");\n const m = window.pageYOffset || document.documentElement.scrollTop, $ = window.pageXOffset || document.documentElement.scrollLeft, D = window.innerWidth;\n i.style.top = `${m + 60}px`, this.once(\"modal.show\", () => {\n i.style.left = `${$ + D / 2 - i.offsetWidth / 2}px`;\n });\n }\n const n = h(\"div\", {\n className: `ipe-modal-modal__window size--${this.options.sizeClass || \"auto\"} plugin--${this.pluginName}`\n });\n n.modal = this;\n const o = h(\"div\", { className: \"ipe-modal-modal__header\" }), l = `${this.modalId}-title`, r = h(\"h2\", {\n className: \"ipe-modal-modal__title\",\n attrs: { id: l, role: \"heading\", \"aria-level\": \"2\" }\n });\n i.setAttribute(\"aria-labelledby\", l);\n const a = h(\"div\", { className: \"ipe-modal-modal__icons\" });\n if (this.options.closeIcon) {\n const m = h(\"button\", {\n className: \"ipe-modal-modal__close\",\n attrs: { type: \"button\", \"aria-label\": \"Close\" },\n html: \"&times;\"\n });\n m.addEventListener(\"click\", () => {\n let $ = !0;\n typeof this.options.onClickClose == \"function\" ? this.options.onClickClose(this) === !1 && ($ = !1) : this.options.onClickClose === !1 && ($ = !1), $ && this.close();\n }), a.appendChild(m);\n }\n o.append(r, a), this.options.draggable && t && (this.options.draggable = !1), this.options.draggable && (o.style.cursor = \"move\", o.style.userSelect = \"none\", o.addEventListener(\"pointerdown\", this.onDragStart.bind(this)), i.classList.add(\"is-draggable\"));\n const u = h(\"div\", { className: \"ipe-modal-modal__content\" }), f = h(\"div\", { className: \"ipe-modal-modal__footer\" }), y = h(\"div\", {\n className: \"ipe-modal-modal__buttons ipe-modal-modal__buttons--left\"\n }), O = h(\"div\", {\n className: \"ipe-modal-modal__buttons ipe-modal-modal__buttons--right\"\n });\n return f.append(y, O), n.append(o, u, f), i.appendChild(n), this.$backdrop = e, this.$modal = i, this.$window = n, this.$header = o, this.$title = r, this.$icons = a, this.$content = u, this.$footer = f, this.$buttonsLeft = y, this.$buttonsRight = O, this.options.title && this.setTitle(this.options.title), this.options.content && this.setContent(this.options.content), this.options.buttons?.length ? this.setButtons(this.options.buttons) : f.style.display = \"none\", this.options.center && this.$modal.classList.add(\"is-centered\"), this.options.fitScreen && this.$modal.classList.add(\"is-fullscreen\"), this.options.iconButtons && this.$header.classList.add(\"has-icon-buttons\"), this.options.className && this.$window.classList.add(...this.options.className.split(/[\\s\\.#+]+/g).filter(Boolean)), typeof this.options.fixedHeight == \"number\" ? this.$window.style.height = `${Math.max(0, this.options.fixedHeight)}px` : this.options.fixedHeight === !0 && this.$window.classList.add(\"is-fixed-height\"), e && e.addEventListener(\"pointerdown\", (m) => {\n this.options.outSideClose && m.target === e && this.close();\n }), this.options.draggable && n.addEventListener(\"pointerdown\", (m) => {\n m.target && n.contains(m.target) && this.bringToFront();\n }), this.onKeyDown = this.onKeyDown.bind(this), this.emit(\n \"modal.init\"\n /* Init */\n ), this;\n }\n show() {\n if (this.$modal || this.init(), !this.$modal) throw new Error(\"Failed to initialize modal\");\n if (this.isOpen) return this;\n {\n const i = this.emit(\"modal.beforeShow\", !0), n = this.options.beforeShow ? this.options.beforeShow(this) !== !1 : !0;\n if (!i || !n) return this;\n }\n this.lastFocused = document.activeElement ?? null, this.$backdrop && document.body.appendChild(this.$backdrop), document.body.appendChild(this.$modal), this.shouldLockBodyOnOpen() && d.lockBodyScroll(), requestAnimationFrame(() => {\n this.$backdrop?.classList.add(\"is-open\"), this.$modal.classList.add(\"is-open\"), this.applyAnimation(!0), this.focusFirst();\n }), document.addEventListener(\"keydown\", this.onKeyDown), d.push(this), this.isOpen = !0, this.options.onShow?.(this), this.emit(\n \"modal.show\"\n /* Show */\n );\n const t = typeof this.options.closeAfter == \"number\" ? this.options.closeAfter : this.options.closeAfter?.time, e = typeof this.options.closeAfter == \"number\" ? !0 : this.options.closeAfter?.resetOnHover;\n return t && (this.startCloseTimer(t), e && (this.$window?.addEventListener(\"mouseenter\", this.stopCloseTimer), this.$window?.addEventListener(\"mouseleave\", () => this.startCloseTimer(t)))), this;\n }\n close() {\n if (!this.isOpen) return this;\n {\n const o = this.emit(\"modal.beforeClose\", !0), l = this.options.beforeClose ? this.options.beforeClose(this) !== !1 : !0;\n if (!o || !l) return this;\n }\n if (this.isToast) {\n this.applyAnimation(!1), this.emit(\n \"modal.close\"\n /* Close */\n ), this.emit(\n \"toast.close\"\n /* ToastClose */\n );\n const o = this.isAnimationDisabled() ? 0 : this.options.animationSpeed ?? 200;\n let l = !1;\n const r = () => {\n l || (l = !0, this.destroy(), this.options.onClose?.(this));\n }, a = (u, f) => {\n const y = () => {\n u.removeEventListener(f, y), r();\n };\n u.addEventListener(f, y, { once: !0 });\n };\n return o > 0 && this.$window ? (a(this.$window, \"transitionend\"), a(this.$window, \"animationend\"), window.setTimeout(r, o + 20)) : window.setTimeout(r, o), this;\n }\n this.applyAnimation(!1), this.$backdrop?.classList.remove(\"is-open\"), this.$modal?.classList.remove(\"is-open\"), this.emit(\n \"modal.close\"\n /* Close */\n );\n const t = this.isAnimationDisabled() ? 0 : this.options.animationSpeed ?? 200;\n let e = !1;\n const i = () => {\n e || (e = !0, this.destroy(), this.options.onClose?.(this));\n }, n = (o, l) => {\n const r = () => {\n o.removeEventListener(l, r), i();\n };\n o.addEventListener(l, r, { once: !0 });\n };\n return t > 0 && this.$window ? (n(this.$window, \"transitionend\"), n(this.$window, \"animationend\"), window.setTimeout(i, t + 20)) : window.setTimeout(i, t), this;\n }\n /** Immediately removes DOM and listeners */\n destroy() {\n if (this._isDestroyed) return this;\n if (this.stopCloseTimer(), document.removeEventListener(\"keydown\", this.onKeyDown), this.isDragging && this.onDragEnd(), this.$window?.removeEventListener(\"mouseenter\", this.stopCloseTimer), this.isToast) {\n this.$window?.parentElement && this.$window.parentElement.removeChild(this.$window);\n const t = g.indexOf(this);\n t !== -1 && g.splice(t, 1);\n } else\n this.$backdrop?.parentElement && this.$backdrop.parentElement.removeChild(this.$backdrop), this.$modal?.parentElement && this.$modal.parentElement.removeChild(this.$modal), d.remove(this), this.shouldUnlockBodyOnClose() && d.unlockBodyScroll();\n return this.isOpen = !1, this.lastFocused?.focus?.(), this.emit(\n \"modal.destroy\"\n /* Destroy */\n ), this._isDestroyed = !0, this;\n }\n // ------------------------------ getters ------------------------------- //\n get$backdrop() {\n return this.$backdrop;\n }\n get$modal() {\n return p(this.$modal, \"modal\");\n }\n get$window() {\n return p(this.$window, \"window\");\n }\n get$header() {\n return p(this.$header, \"header\");\n }\n get$title() {\n return p(this.$title, \"title\");\n }\n get$content() {\n return p(this.$content, \"content\");\n }\n get$icons() {\n return p(this.$icons, \"icons\");\n }\n get$buttons(t) {\n return t === \"leftButtons\" ? p(this.$buttonsLeft, \"leftButtons\") : t === \"rightButtons\" ? p(this.$buttonsRight, \"rightButtons\") : p(this.$footer, \"buttons\");\n }\n // ------------------------------ content ------------------------------- //\n setTitle(t) {\n const e = this.get$title();\n return e.innerHTML = \"\", e.append(k(t)), this;\n }\n setContent(t, e = \"replace\") {\n const i = this.get$content();\n return e === \"replace\" ? (i.innerHTML = \"\", i.append(k(t))) : e === \"append\" ? i.append(k(t)) : i.prepend(k(t)), this;\n }\n setIcons(t) {\n const e = this.get$icons();\n e.innerHTML = \"\";\n for (const i of t) {\n const n = h(\"button\", {\n className: `ipe-modal-modal__icon ${i.className}`,\n attrs: { type: \"button\" }\n });\n n.addEventListener(\"click\", i.method), e.appendChild(n);\n }\n return this;\n }\n setButtons(t, e) {\n const i = this.$buttonsLeft, n = this.$buttonsRight;\n [i, n].forEach((l) => l.innerHTML = \"\"), this.buttonElsLeft = [], this.buttonElsRight = [], this.keyMap.clear();\n const o = e ?? this.$footer;\n if (o === this.$footer)\n t.forEach((l) => this.addButton(l)), t.length === 0 && (this.$footer.style.display = \"none\");\n else {\n o.innerHTML = \"\";\n for (const l of t) {\n const r = this.generateButton(l);\n o.appendChild(r);\n }\n }\n return this;\n }\n generateButton(t) {\n const e = t.type ?? \"button\", i = e === \"link\" ? h(\"a\") : h(\"button\", { attrs: { type: \"button\" } });\n t.id && (i.id = t.id), i.className = `ipe-modal-btn ${t.className ?? \"\"}`.trim();\n const n = k(t.label ?? \"OK\");\n if (i.append(n), e === \"link\" && t.href && (i.href = t.href), t.method && i.addEventListener(\"click\", (o) => {\n if (i._ipe_tmpDisabled) {\n o.preventDefault(), o.stopPropagation();\n return;\n }\n t.method.call(i, o, this);\n }), typeof t.closeAfter == \"number\" && t.closeAfter >= 0 && i.addEventListener(\"click\", () => {\n window.setTimeout(() => this.close(), t.closeAfter);\n }), typeof t.enableAfter == \"number\" && t.enableAfter > 0) {\n e === \"button\" && i.setAttribute(\"disabled\", \"true\"), i._ipe_tmpDisabled = !0, i.setAttribute(\"aria-disabled\", \"true\");\n const o = () => {\n e === \"button\" && i.removeAttribute(\"disabled\"), delete i._ipe_tmpDisabled, i.removeAttribute(\"aria-disabled\");\n };\n window.setTimeout(o, t.enableAfter);\n }\n if (t.keyPress) {\n const l = String(t.keyPress).split(/[\\,\\|]+/g).map((r) => r.trim()).filter(Boolean);\n for (const r of l) {\n const a = dt(r);\n a && this.keyMap.set(a, i);\n }\n }\n return i;\n }\n /** Dynamically add button(s) into footer. Supports insertion index per side. */\n addButton(t, e) {\n this.$footer && (this.$footer.style.display = \"\");\n const i = t.side ?? \"right\", n = i === \"left\" ? this.$buttonsLeft : this.$buttonsRight, o = i === \"left\" ? this.buttonElsLeft : this.buttonElsRight, l = this.generateButton(t), r = Math.max(0, Math.min(e ?? o.length, o.length));\n return r >= n.children.length ? n.appendChild(l) : n.insertBefore(l, n.children[r]), o.splice(r, 0, l), this;\n }\n /** Remove button by element / id / global index (left first, then right). */\n removeButton(t) {\n const e = this.buttonElsLeft, i = this.buttonElsRight, n = [...e, ...i];\n let o = null;\n if (t === \"*\")\n return n.forEach((r) => {\n this.keyMap.delete(r.id), r.parentElement?.removeChild(r);\n }), this.$footer && (this.$footer.style.display = \"none\"), this;\n if (typeof t == \"number\" ? o = n[t] ?? null : typeof t == \"string\" ? o = n.find((r) => r.id === t) ?? null : t instanceof HTMLElement && (o = n.find((r) => r === t) ?? null), !o) return this;\n for (const [r, a] of this.keyMap.entries()) a === o && this.keyMap.delete(r);\n let l = e.indexOf(o);\n return l !== -1 ? (e.splice(l, 1), o.parentElement?.removeChild(o)) : (l = i.indexOf(o), l !== -1 && (i.splice(l, 1), o.parentElement?.removeChild(o))), e.length === 0 && i.length === 0 && this.$footer && (this.$footer.style.display = \"none\"), this;\n }\n changePreviewState() {\n return this.get$modal().classList.toggle(\"is-fullscreen\"), this;\n }\n setModalHeight(t, e = \"height\") {\n const i = this.get$window(), n = Math.max(0, window.innerHeight - t);\n return i.style[e] = `${n}px`, n;\n }\n setOptions(t, e) {\n return typeof t == \"string\" ? this.options[t] = e : Object.assign(this.options, t), this;\n }\n setPluginName(t) {\n return this.$window && (this.$window.className = this.$window.className.replace(\n `plugin--${this.pluginName}`,\n `plugin--${t}`\n )), this.pluginName = t, this;\n }\n // ------------------------------ helpers ------------------------------- //\n applyAnimation(t) {\n const e = this.get$modal(), i = this.get$window(), n = this.$backdrop, o = this.options.modalAnimation ?? this.options.animation, l = typeof o == \"string\" ? o : o && (t ? o.show : o.hide), r = this.options.backdropAnimation ?? this.options.animation, a = typeof r == \"string\" ? r : r && (t ? r.show : r.hide);\n !l || l === !1 ? (e.style.transition = \"none\", i.style.animation = \"none\", i.style.removeProperty(\"--ipe-modal-anim\")) : (e.style.removeProperty(\"transition\"), i.style.setProperty(\"--ipe-modal-anim\", l)), n && (!a || a === !1 ? n.style.transition = \"none\" : n.style.removeProperty(\"transition\"));\n }\n on(t, e) {\n return this._hooks.push({ type: t, listener: e }), () => this.off(t, e);\n }\n off(t, e) {\n return this._hooks = this._hooks.filter(\n (i) => i.type !== t && (e ? i.listener !== e : !0)\n ), this;\n }\n once(t, e) {\n const i = this.on(t, (n) => (i(), e(n)));\n return i;\n }\n emit(t, e) {\n const i = this._hooks.filter((a) => a.type === t);\n let n = !0;\n for (const a of i) {\n const u = new CustomEvent(t, { detail: this, cancelable: e }), f = a.listener(u);\n if (u.defaultPrevented && (n = !1), f === !1 && (n = !1), !n) break;\n }\n const o = this.$modal ?? document.body, l = new CustomEvent(t, { detail: this, cancelable: e });\n return (!o.dispatchEvent(l) || l.defaultPrevented) && (n = !1), n;\n }\n focusFirst() {\n const t = this.get$modal(), e = H(t);\n e.length ? e[0].focus() : t.focus({ preventScroll: !0 });\n }\n onKeyDown(t) {\n if (d.top() !== this) return;\n if (t.key === \"Escape\") {\n t.preventDefault(), this.close();\n return;\n }\n const e = this.get$modal();\n if (!e.contains(document.activeElement)) return;\n if (t.key === \"Tab\") {\n const r = H(e);\n if (!r.length) return;\n const a = r[0], u = r[r.length - 1], f = document.activeElement;\n t.shiftKey && f === a ? (t.preventDefault(), u.focus()) : !t.shiftKey && f === u && (t.preventDefault(), a.focus());\n }\n const i = t.ctrlKey || t.altKey || t.metaKey, n = t.target;\n if (!i && (n && [\"INPUT\", \"TEXTAREA\"].includes(n.tagName) || n.contentEditable === \"true\"))\n return;\n const o = ft(t), l = this.keyMap.get(o);\n if (l) {\n t.preventDefault(), l.click();\n return;\n }\n }\n setZIndex(t) {\n this.$backdrop && (this.$backdrop.style.zIndex = String(t)), this.$modal && (this.$modal.style.zIndex = String(t + 1));\n }\n /** Bring this modal to the top of the stack. */\n bringToFront() {\n return d.remove(this), d.push(this), this;\n }\n isAnimationDisabled() {\n const t = this.options.modalAnimation ?? this.options.animation;\n return t === !1 || t == null;\n }\n shouldLockBodyOnOpen() {\n return this.options.backdrop === !1 || this.options.bodyScroll !== !1 ? !1 : !d.stack.some(\n (e) => e !== this && e.options.backdrop !== !1 && e.options.bodyScroll === !1\n );\n }\n shouldUnlockBodyOnClose() {\n return this.options.backdrop === !1 || this.options.bodyScroll !== !1 ? !1 : !d.stack.some(\n (e) => e !== this && e.options.backdrop !== !1 && e.options.bodyScroll === !1\n );\n }\n // ------------------------------ drag handlers ------------------------------- //\n onDragStart(t) {\n if (this.options.backdrop !== !1 || !this.options.draggable) return;\n t.preventDefault(), this.isDragging = !0, this.bringToFront(), this.dragStartX = t.clientX, this.dragStartY = t.clientY;\n const e = this.get$modal(), i = e.getBoundingClientRect();\n this.modalStartX = i.left + window.pageXOffset, this.modalStartY = i.top + window.pageYOffset, e.style.transform = \"none\", e.style.left = `${this.modalStartX}px`, e.style.top = `${this.modalStartY}px`, document.addEventListener(\"pointermove\", this.onDragMove), document.addEventListener(\"pointerup\", this.onDragEnd), e.classList.add(\"is-dragging\");\n }\n // ------------------------------ toast ------------------------------- //\n /** Show as toast (no backdrop, container stack). */\n showToast(t) {\n this.$window || this.init();\n const e = mt(t.position ?? \"top right\"), i = this.get$window();\n this.isToast = !0, i.style.pointerEvents = \"auto\", this.applyAnimation(!0), e.appendChild(i);\n const n = (typeof this.options.closeAfter == \"number\" ? this.options.closeAfter : this.options.closeAfter?.time) ?? 3e3, o = (typeof this.options.closeAfter == \"number\" ? !0 : this.options.closeAfter?.resetOnHover) ?? !0;\n return n > 0 && (this.startCloseTimer(n), o && (i.addEventListener(\"mouseenter\", this.stopCloseTimer), i.addEventListener(\"mouseleave\", () => this.startCloseTimer(n)))), this.isOpen = !0, this.options.onShow?.(this), g.push(this), this.emit(\n \"toast.show\"\n /* ToastShow */\n ), this.emit(\n \"modal.show\"\n /* Show */\n ), this;\n }\n // ------------------------------ static helpers --------------------------- //\n static show(t, e) {\n return new this(t).init().show();\n }\n static createObject(t, e) {\n return new this(t);\n }\n static close(t) {\n if (!t) {\n const o = d.top();\n return o?.close(), o;\n }\n const e = typeof t == \"string\" ? t : t.id, i = d.stack.find((o) => o.modalId === e);\n if (i)\n return i.close(), i;\n const n = g.find((o) => o.modalId === e);\n return n?.close(), n;\n }\n static closeAll(t, e) {\n const i = new Set((Array.isArray(e) ? e : e ? [e] : []).map(String)), n = new Set((Array.isArray(t) ? t : t ? [t] : []).map(String));\n return d.closeAll(t, e), [...g].forEach((o) => {\n const l = o.modalId, r = n.size ? n.has(o.pluginName) : !0, a = i.has(l);\n r && !a && o.close();\n }), d.top() ?? new N();\n }\n static removeAll() {\n d.removeAll(), [...g].forEach((t) => t.destroy());\n }\n static dialog(t, e) {\n const i = new this({\n sizeClass: \"dialog\",\n buttons: [\n {\n label: \"OK\",\n className: \"is-primary is-ghost\",\n method: (n, o) => {\n e?.(n, o), n.defaultPrevented || i.close();\n },\n keyPress: \"Enter\"\n }\n ],\n ...t\n });\n return i.init().show();\n }\n static confirm(t, e) {\n t.title ??= \"Confirm\", t.content ??= \"Are you sure you want to perform this action?\";\n const i = t.okBtn ?? { label: \"OK\", className: \"is-primary is-ghost\" }, n = t.cancelBtn ?? { label: \"Cancel\", className: \"is-danger is-ghost\" };\n return new this({\n sizeClass: \"dialog\",\n ...t,\n buttons: [\n {\n label: n.label,\n className: n.className,\n keyPress: \"n\",\n method: (l, r) => {\n e?.(!1, r, l), r.close();\n }\n },\n {\n label: i.label,\n className: i.className,\n keyPress: \"y\",\n method: (l, r) => {\n e?.(!0, r, l), l.defaultPrevented || r.close();\n }\n }\n ]\n }).init().show();\n }\n static getDefaultNotifyIcon(t) {\n switch (t) {\n case \"success\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-circle-check\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z\" })\n ]\n }\n );\n case \"error\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-alert-triangle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 1.67c.955 0 1.845 .467 2.39 1.247l.105 .16l8.114 13.548a2.914 2.914 0 0 1 -2.307 4.363l-.195 .008h-16.225a2.914 2.914 0 0 1 -2.582 -4.2l.099 -.185l8.11 -13.538a2.914 2.914 0 0 1 2.491 -1.403zm.01 13.33l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -7a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z\" })\n ]\n }\n );\n case \"warning\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-alert-circle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm.01 13l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007zm-.01 -8a1 1 0 0 0 -.993 .883l-.007 .117v4l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4l-.007 -.117a1 1 0 0 0 -.993 -.883z\" })\n ]\n }\n );\n case \"info\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-info-circle\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 2c5.523 0 10 4.477 10 10a10 10 0 0 1 -19.995 .324l-.005 -.324l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm0 9h-1l-.117 .007a1 1 0 0 0 0 1.986l.117 .007v3l.007 .117a1 1 0 0 0 .876 .876l.117 .007h1l.117 -.007a1 1 0 0 0 .876 -.876l.007 -.117l-.007 -.117a1 1 0 0 0 -.764 -.857l-.112 -.02l-.117 -.006v-3l-.007 -.117a1 1 0 0 0 -.876 -.876l-.117 -.007zm.01 -3l-.127 .007a1 1 0 0 0 0 1.986l.117 .007l.127 -.007a1 1 0 0 0 0 -1.986l-.117 -.007z\" })\n ]\n }\n );\n case \"dialog\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n class: \"icon icon-tabler icons-tabler-outline icon-tabler-message-dots\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M12 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M8 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M16 11v.01\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3z\" })\n ]\n }\n );\n case \"confirm\":\n return /* @__PURE__ */ c(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n class: \"icon icon-tabler icons-tabler-filled icon-tabler-copy-check\",\n children: [\n /* @__PURE__ */ c(\"path\", { stroke: \"none\", d: \"M0 0h24v24H0z\", fill: \"none\" }),\n /* @__PURE__ */ c(\"path\", { d: \"M18.333 6a3.667 3.667 0 0 1 3.667 3.667v8.666a3.667 3.667 0 0 1 -3.667 3.667h-8.666a3.667 3.667 0 0 1 -3.667 -3.667v-8.666a3.667 3.667 0 0 1 3.667 -3.667zm-3.333 -4c1.094 0 1.828 .533 2.374 1.514a1 1 0 1 1 -1.748 .972c-.221 -.398 -.342 -.486 -.626 -.486h-10c-.548 0 -1 .452 -1 1v9.998c0 .32 .154 .618 .407 .805l.1 .065a1 1 0 1 1 -.99 1.738a3 3 0 0 1 -1.517 -2.606v-10c0 -1.652 1.348 -3 3 -3zm1.293 9.293l-3.293 3.292l-1.293 -1.292a1 1 0 0 0 -1.414 1.414l2 2a1 1 0 0 0 1.414 0l4 -4a1 1 0 0 0 -1.414 -1.414\" })\n ]\n }\n );\n default:\n return null;\n }\n }\n static notify(t, e, i) {\n if (e?.overrideOther && [...g].forEach((r) => r.close()), typeof e.title > \"u\") {\n const r = t || \"Notification\";\n e.title = r[0].toUpperCase() + r.slice(1).toLowerCase();\n }\n const n = e.icon ?? this.getDefaultNotifyIcon(t);\n n && (n instanceof Element && n.classList.add(\"ipe-modal-notify-icon\"), e.title = /* @__PURE__ */ c(nt, { children: [\n n,\n e.title\n ] })), t === \"confirm\" && (typeof e.closeAfter > \"u\" && (e.closeAfter = 0), e.okBtn || (e.okBtn = { label: \"OK\" })), e.okBtn && (typeof e.okBtn != \"object\" && (e.okBtn = { label: \"OK\" }), e.okBtn.label ??= \"OK\", e.okBtn.className ??= \"is-primary is-text ok-btn\", e.okBtn.method = (r, a) => {\n i?.(!0, a, r), a.close();\n }), e.cancelBtn && (typeof e.cancelBtn != \"object\" && (e.cancelBtn = { label: \"Cancel\" }), e.cancelBtn.label ??= \"Cancel\", e.cancelBtn.className ??= \"is-danger is-text cancel-btn\", e.cancelBtn.method = (r, a) => {\n i?.(!1, a, r), a.close();\n }), e.buttons = [e.cancelBtn, e.okBtn, ...e.buttons ?? []].filter(\n Boolean\n );\n const o = `is-notify type-${t || \"default\"} ${e.className ?? \"\"}`, l = new this({\n ...e,\n className: o,\n sizeClass: \"auto\",\n center: !1,\n fitScreen: !1,\n closeIcon: !0,\n outSideClose: !1,\n bodyScroll: !0,\n buttons: e.buttons ?? []\n });\n return l.setPluginName(\"toast\"), l.showToast({\n position: e.position ?? \"top right\"\n });\n }\n}\nconst g = [];\nfunction mt(s = \"top right\") {\n const t = \"ipe-modal-toast-container\", e = `${t}-${s.replace(/[\\s-\\.|\\/]+/g, \"-\")}`;\n let i = document.getElementById(e);\n return i || (i = h(\"div\", {\n className: `${t} ${s}`,\n attrs: { id: e, \"data-position\": s }\n }), document.body.appendChild(i)), i;\n}\nexport {\n N as IPEModal,\n P as IPEModalEvent\n};\n//# sourceMappingURL=index.js.map\n","import { InPageEdit } from '@/InPageEdit'\nimport { IPEModal, IPEModalEvent, IPEModalOptions } from '@inpageedit/modal'\nimport '@inpageedit/modal/style.css'\n\nexport * from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n modal: ModalService\n }\n}\n\n// Custom plugins\nexport class CustomIPEModal extends IPEModal {\n constructor(options: Partial<IPEModalOptions> = {}) {\n options.className ||= ''\n options.className += ' theme-ipe'\n options.modalAnimation ||= {\n show: 'ipe-modal-fade-in',\n hide: 'ipe-modal-fade-out',\n }\n super(options)\n }\n\n private _tmpDisabledActiveInputs?: NodeListOf<HTMLInputElement | HTMLButtonElement>\n setLoadingState(state: boolean) {\n this.get$window().classList.toggle('loading', state)\n // start loading\n if (state) {\n const activeInputs = this.get$window().querySelectorAll<HTMLInputElement | HTMLButtonElement>(\n 'input:not([disabled]),button:not([disabled])'\n )\n this._tmpDisabledActiveInputs = activeInputs\n activeInputs.forEach((el) => {\n el.disabled = true\n })\n this.get$content().append(\n <div\n id=\"ipe-modalLoadingWrapper\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\n zIndex: 2000,\n }}\n >\n <ProgressBar style={{ width: '80%', maxWidth: '800px' }} />\n </div>\n )\n } else {\n // stop loading\n this.get$window().querySelector('#ipe-modalLoadingWrapper')?.remove()\n const activeInputs = this._tmpDisabledActiveInputs\n if (activeInputs) {\n activeInputs.forEach((el) => {\n el.disabled = false\n })\n }\n }\n }\n}\n\nexport class ModalService {\n constructor(public ctx: InPageEdit) {\n ctx.set('modal', this)\n ctx.on('dispose', () => {\n CustomIPEModal.closeAll()\n })\n }\n IPEModal = CustomIPEModal\n IPEModalEvent = IPEModalEvent\n show = CustomIPEModal.show.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.show>\n ) => CustomIPEModal\n createObject = CustomIPEModal.createObject.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.createObject>\n ) => CustomIPEModal\n close = CustomIPEModal.close.bind(CustomIPEModal)\n closeAll = CustomIPEModal.closeAll.bind(CustomIPEModal)\n removeAll = CustomIPEModal.removeAll.bind(CustomIPEModal)\n dialog = CustomIPEModal.dialog.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.dialog>\n ) => CustomIPEModal\n confirm = CustomIPEModal.confirm.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.confirm>\n ) => CustomIPEModal\n notify = CustomIPEModal.notify.bind(CustomIPEModal) as (\n ...args: Parameters<typeof CustomIPEModal.notify>\n ) => CustomIPEModal\n}\n","/**\n * Transform a plain object into a URL search params string.\n *\n * @example\n * ```\n * makeURLSearchParams({ str: '123' }) // str=123\n * makeURLSearchParams({ num: 123 }) // num=123\n * makeURLSearchParams({ bool: true }) // bool=true\n * makeURLSearchParams({ arr: [1, 2, 3] }) // arr=1&arr=2&arr=3\n * makeURLSearchParams({ plainObj: { a: 1, b: 2 } }) // plainObj[a]=1&plainObj[b]=2\n * makeURLSearchParams({ obj: <object> }) // obj=<object>.toString() (if object is not a primitive type)\n * makeURLSearchParams({ empty: '' }) // empty=\n * makeURLSearchParams({ null: null, undefined: undefined }) // (ignored)\n * ```\n */\nexport const makeSearchParams = (params?: Record<string, any>): URLSearchParams => {\n if (!params) {\n return new URLSearchParams()\n }\n if (params instanceof URLSearchParams) {\n return params\n }\n if (typeof params !== 'object' || params?.constructor !== Object) {\n throw new TypeError('only plain object is supported')\n }\n\n const sp = new URLSearchParams()\n for (const [key, value] of Object.entries(params)) {\n if (value === void 0 || value === null) {\n continue\n }\n if (Array.isArray(value)) {\n for (const item of value) {\n sp.append(key, item?.toString())\n }\n continue\n }\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n for (const [objKey, objValue] of Object.entries(value)) {\n if (objValue !== void 0 && objValue !== null) {\n sp.set(`${key}[${objKey}]`, objValue?.toString())\n }\n }\n continue\n }\n sp.set(key, value?.toString())\n }\n return sp\n}\n\n/**\n * Create a URL object with the given parameters.\n *\n * @example\n * ```\n * makeURL('https://example.com?existing=1', { foo: 'bar' }, 'baz') // https://example.com?existing=1&foo=bar#baz\n */\nexport const makeURL = (url: string | URL, params?: Record<string, any>, hash?: string): URL => {\n const u = typeof url === 'string' ? new URL(url, window?.location?.origin) : new URL(url)\n\n const existingParams = new URLSearchParams(u.search)\n const newParams = makeSearchParams(params)\n for (const [key, value] of newParams.entries()) {\n existingParams.set(key, value)\n }\n\n u.search = existingParams.toString()\n u.hash = hash || ''\n return u\n}\n","import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit'\nimport { WikiSiteInfo, WikiUserBlockInfo, WikiUserInfo } from '@/types/WikiMetadata'\nimport { AbstractIPEStorageManager } from './storage'\nimport { MwApiParams } from 'wiki-saikou'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wiki: WikiMetadataService\n getUrl: WikiMetadataService['getUrl']\n getSciprtUrl: WikiMetadataService['getSciprtUrl']\n getMainpageUrl: WikiMetadataService['getMainpageUrl']\n }\n}\n\ninterface WikiMetadataKindMap {\n siteinfo: WikiSiteInfo\n userinfo: WikiUserInfo\n}\n\n@Inject(['api', 'storage'])\nexport class WikiMetadataService extends Service {\n private readonly _data: WikiMetadataKindMap = {} as any\n private readonly CACHE_VERSION = 3\n private readonly CACHE_TTL: Readonly<Record<keyof WikiMetadataKindMap, number>> = {\n siteinfo: 1000 * 60 * 60 * 24 * 3, // 3 days\n userinfo: 1000 * 60 * 30, // 30 minutes\n }\n private readonly QUERY_DATA: Readonly<Record<keyof WikiMetadataKindMap, MwApiParams>> = {\n siteinfo: {\n meta: 'siteinfo',\n siprop: 'general|specialpagealiases|namespacealiases|namespaces|magicwords',\n },\n userinfo: { meta: 'userinfo', uiprop: 'groups|rights|blockinfo|options' },\n }\n private readonly CACHE_DB: AbstractIPEStorageManager<\n WikiMetadataKindMap[keyof WikiMetadataKindMap]\n >\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wiki', false)\n this.CACHE_DB = ctx.storage.createDatabase<WikiMetadataKindMap[keyof WikiMetadataKindMap]>(\n 'wiki-metadata',\n Infinity,\n this.CACHE_VERSION\n )\n }\n\n private get logger() {\n return this.ctx.logger('WIKI_METADATA')\n }\n\n private get api() {\n return this.ctx.api\n }\n\n readonly mwConfig = {\n get: ((key: string, fallback?: any) => {\n return window?.mw?.config?.get?.(key, fallback) ?? fallback\n }) as typeof mw.config.get,\n has: ((key: string) => {\n return window?.mw?.config?.exists?.(key) ?? false\n }) as typeof mw.config.exists,\n get values() {\n return ((window?.mw?.config as any)?.values || {}) as ReturnType<typeof mw.config.get>\n },\n }\n\n protected async start(): Promise<void> {\n await Promise.all(\n Object.keys(this.QUERY_DATA).map((key) => this.initData(key as keyof WikiMetadataKindMap))\n )\n\n this.ctx.set('getUrl', this.getUrl.bind(this))\n this.ctx.set('getSciprtUrl', this.getSciprtUrl.bind(this))\n this.ctx.set('getMainpageUrl', this.getMainpageUrl.bind(this))\n\n this.ctx.inject(['preferences'], (ctx) => {\n ctx.preferences.registerCustomConfig(\n 'WikiMetadataService',\n Schema.object({\n WikiMetadataService: Schema.const(\n <div>\n <h3>Wiki Informations</h3>\n <ul>\n <li>\n <strong>Site:</strong> {this.general.sitename} ({this.landingPageUrl})\n </li>\n <li>\n <strong>User</strong>: {this.userInfo.name} (ID: {this.userInfo.id})\n </li>\n <li>\n <strong>Groups</strong>: {this.userGroups.join(', ') || 'None'}\n </li>\n </ul>\n <div>\n <p style={{ fontStyle: 'italic' }}>\n If the information shown above is incorrect (for example, the user is not you),\n click the button below.\n </p>\n <button\n className=\"btn danger\"\n onClick={(e) => {\n e.preventDefault()\n Promise.all(\n Object.keys(this.QUERY_DATA).map((key) =>\n this.invalidateCache(key as keyof WikiMetadataKindMap)\n )\n ).then(() => {\n window.location.reload()\n })\n }}\n >\n 🧹 Clear caches & Reload\n </button>\n </div>\n </div>\n ).role('raw-html'),\n }).description('WikiMetadataService'),\n 'about'\n )\n })\n\n this.logger.info('All initialized', this._data)\n }\n\n async initData<T extends keyof WikiMetadataKindMap>(kind: T, noCache = false) {\n const cached = noCache ? null : await this.fetchFromCache(kind)\n if (cached) {\n this._data[kind] = cached\n this.logger.debug('Using cached', kind, cached)\n return cached\n } else {\n const data = await this.fetchFromApi(kind)\n this.saveToCache(kind, data)\n this._data[kind] = data\n this.logger.debug('Fetched from API', kind, data)\n return data\n }\n }\n\n private getCacheKey<T extends keyof WikiMetadataKindMap>(kind: T): string {\n return `${kind}:${new URL(this.ctx.api.config.baseURL).pathname.replace(/^\\//, '')}`\n }\n\n async fetchFromApi<T extends keyof WikiMetadataKindMap>(\n kind: T\n ): Promise<WikiMetadataKindMap[T]> {\n return this.api\n .get({\n action: 'query',\n ...this.QUERY_DATA[kind],\n })\n .then(({ data }) => {\n if (typeof data?.query !== 'object' || data.query === null) {\n throw new Error('Invalid query data', { cause: data })\n }\n if (kind === 'siteinfo') {\n return data.query as WikiMetadataKindMap[T]\n } else {\n return (data.query?.[kind] || data.query) as WikiMetadataKindMap[T]\n }\n })\n .catch((e) => {\n this.logger.error('Failed to fetch', e)\n return Promise.reject(e)\n })\n }\n\n async fetchFromCache<T extends keyof WikiMetadataKindMap>(\n kind: T\n ): Promise<WikiMetadataKindMap[T] | null> {\n const key = this.getCacheKey(kind)\n const data = await this.CACHE_DB.get(key, this.CACHE_TTL[kind])\n return data as WikiMetadataKindMap[T] | null\n }\n async saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]) {\n const key = this.getCacheKey(kind)\n return this.CACHE_DB.set(key, data)\n }\n async invalidateCache<T extends keyof WikiMetadataKindMap>(kind: T) {\n const key = this.getCacheKey(kind)\n return this.CACHE_DB.delete(key)\n }\n\n // ====== shortcuts ======\n get _raw() {\n return this._data\n }\n\n // siteInfo\n get siteInfo() {\n return this._data.siteinfo\n }\n get general() {\n return this.siteInfo.general\n }\n get specialPageAliases() {\n return this.siteInfo.specialpagealiases\n }\n get namespaceAliases() {\n return this.siteInfo.namespacealiases\n }\n get namespaces() {\n return this.siteInfo.namespaces\n }\n get namespaceMap() {\n const map = Object.values(this.namespaces)\n .map((ns) => ({\n id: ns.id,\n canonical: ns.canonical,\n aliases: this.namespaceAliases\n .filter((alias) => alias.id === ns.id)\n .map((alias) => alias.alias),\n }))\n .sort((a, b) => a.id - b.id)\n Reflect.defineProperty(this, 'namespaceMap', {\n get: () => map,\n })\n return map\n }\n get magicWords() {\n return this.siteInfo.magicwords\n }\n\n // userInfo\n get userInfo() {\n return this._data.userinfo\n }\n get userOptions() {\n return this.userInfo.options\n }\n get isUserBlocked() {\n return (\n this.userInfo.blockedbyid &&\n this.userInfo.blockexpiry &&\n new Date(this.userInfo.blockexpiry).getTime() > Date.now()\n )\n }\n get userGroups() {\n return this.userInfo.groups\n }\n get userRights() {\n return this.userInfo.rights\n }\n /**\n * Base URL, without trailing slash\n * @example \"https://mediawiki.org\"\n */\n get baseUrl() {\n const server = this.general.server\n if (server.startsWith('//')) {\n return `${window?.location?.protocol || 'https:'}//${server.slice(2)}`\n } else {\n return server\n }\n }\n /**\n * Home page URL of this wiki\n * @description Generally same as the Mainpage URL,\n * but after MediaWiki 1.34,\n * it can be set to the website root directory.\n * @example \"https://mediawiki.org/wiki/Main_Page\" (In most cases)\n * @example \"https://mediawiki.org/\" ($wgMainPageIsDomainRoot = true)\n */\n get landingPageUrl() {\n return this.general.base\n }\n get mainPageName() {\n return this.general.mainpage\n }\n /**\n * Exact Mainpage URL of this wiki\n * @example \"https://mediawiki.org/wiki/Main_Page\"\n */\n get mainPageUrl() {\n return this.getUrl(this.mainPageName)\n }\n /**\n * Article path, with the $1 placeholder\n * @example \"/wiki/$1\"\n */\n get articlePath() {\n return this.general.articlepath\n }\n /**\n * Script path, without trailing slash\n * @example \"/w\"\n */\n get scriptPath() {\n return this.general.scriptpath\n }\n /**\n * Article base URL, with the $1 placeholder\n * @example \"https://mediawiki.org/wiki/$1\"\n */\n get articleBaseUrl() {\n return `${this.baseUrl}${this.articlePath}`\n }\n /**\n * Script base URL, without trailing slash\n * @example \"https://mediawiki.org/w\"\n */\n get scriptBaseUrl() {\n return `${this.baseUrl}${this.scriptPath}`\n }\n\n // utils\n getSciprtUrl(name = 'index') {\n return `${this.scriptBaseUrl}/${name.replace(/\\.php$/, '')}.php`\n }\n\n /** Get mainpage URL */\n getMainpageUrl(params?: Record<string, any>): string {\n return makeURL(this.siteInfo.general.base, params).toString()\n }\n /** Get page URL by title */\n getUrl(title: string, params?: Record<string, any>): string\n /** Get page URL by page ID */\n getUrl(pageId: number, params?: Record<string, any>): string\n getUrl(titleOrPageId: string | number, params?: Record<string, any>): string {\n const searchParams = makeSearchParams(params)\n let url: URL\n if (typeof titleOrPageId === 'string' && titleOrPageId !== '') {\n url = new URL(`${this.articleBaseUrl.replace('$1', titleOrPageId)}`)\n } else if (typeof titleOrPageId === 'number') {\n searchParams.set('curid', titleOrPageId.toString())\n url = new URL(this.getSciprtUrl('index'))\n } else {\n url = new URL(this.getSciprtUrl('index'))\n }\n url.search = searchParams.toString()\n return url.toString()\n }\n\n hasRight(right: string) {\n return this.userRights.includes(right)\n }\n hasAnyRight(...rights: string[]) {\n return rights.some((right) => this.hasRight(right))\n }\n hasEveryRights(...rights: string[]) {\n return rights.every((right) => this.hasRight(right))\n }\n inGroup(name: string) {\n return this.userGroups.includes(name)\n }\n inAnyGroup(...names: string[]) {\n return this.userGroups.some((group) => names.includes(group))\n }\n getBlockInfo() {\n if (!this.isUserBlocked) return null\n return {\n blockid: this.userInfo.blockid!,\n blockedby: this.userInfo.blockedbyid!,\n blockedbyid: this.userInfo.blockedbyid!,\n blockreason: this.userInfo.blockreason!,\n blockedtimestamp: this.userInfo.blockedtimestamp!,\n blockexpiry: this.userInfo.blockexpiry!,\n } as WikiUserBlockInfo\n }\n}\n","import { AbstractIPEStorageManager, TypedStorageEntry } from '../index.js'\nimport { MemoryStorage, useMemoryStorage } from '@/models/MemoryStorage.js'\n\nconst _memoryStorage = (() => {\n const sym = Symbol.for('IPE.GlobalMemoryStorage')\n if (!(sym in globalThis)) {\n ;(globalThis as any)[sym] = useMemoryStorage()\n }\n return (globalThis as any)[sym] as MemoryStorage\n})()\n\nexport class LocalStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {\n private db: Storage\n constructor(\n public dbName?: string,\n readonly storeName?: string,\n public ttl: number = Infinity,\n public version?: number,\n public engine: 'localStorage' | 'sessionStorage' | 'memory' = 'localStorage'\n ) {\n // Normalize ttl\n if (typeof ttl !== 'number') this.ttl = Number(ttl)\n if (isNaN(this.ttl) || this.ttl <= 0) this.ttl = Infinity\n\n // Initialize storage engine\n if (this.engine === 'localStorage' && 'localStorage' in window) {\n this.db = window.localStorage\n } else if (this.engine === 'sessionStorage' && 'sessionStorage' in window) {\n this.db = window.sessionStorage\n } else {\n this.db = _memoryStorage\n }\n }\n\n // Key builder\n private makeKey(key: string) {\n return `${this.dbName ? this.dbName + ':' : ''}${this.storeName ? this.storeName + '/' : ''}${key}`\n }\n\n // Internal load & validation\n private load(key: string): TypedStorageEntry<T> | null {\n const raw = this.getRaw(key)\n if (raw === null) return null\n let parsed: unknown\n try {\n parsed = JSON.parse(raw)\n } catch (_) {\n this.deleteSync(key)\n return null\n }\n const rec = parsed as Partial<TypedStorageEntry<T>>\n // Structural checks\n if (typeof rec.time !== 'number' || !('value' in rec)) {\n this.deleteSync(key)\n return null\n }\n // Version check\n if (typeof this.version === 'number' && rec.version !== this.version) {\n this.deleteSync(key)\n return null\n }\n return rec as TypedStorageEntry<T>\n }\n\n private getRaw(key: string): string | null {\n const fullKey = this.makeKey(key)\n return this.db.getItem(fullKey)\n }\n\n private setRaw(key: string, value: string) {\n const fullKey = this.makeKey(key)\n try {\n this.db.setItem(fullKey, value)\n } catch (_) {\n // Quota exceeded or write error — silently ignore for now.\n }\n }\n\n private deleteSync(key: string) {\n const fullKey = this.makeKey(key)\n this.db.removeItem(fullKey)\n }\n\n private isExpired(rec: TypedStorageEntry<T> | null, ttl = this.ttl) {\n if (!rec) return false\n return Date.now() - rec.time > ttl\n }\n\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\n const rec = this.load(key)\n const expired = this.isExpired(rec, ttl)\n if (!rec || expired) {\n if (typeof setter === 'function') {\n const newValue = await setter()\n await this.set(key, newValue as T)\n return newValue as T\n }\n return null\n }\n return rec.value\n }\n\n // Overloads\n async set(key: string, value: null | undefined): Promise<void>\n async set(key: string, value: T): Promise<TypedStorageEntry<T>>\n async set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n async set(\n keyOrRecord: string | Record<string, T | null | undefined>,\n maybeValue?: T | null | undefined\n ): Promise<TypedStorageEntry<T> | void | Record<string, TypedStorageEntry<T> | void>> {\n const now = Date.now()\n\n if (typeof keyOrRecord === 'string') {\n const key = keyOrRecord\n const value = maybeValue as T | null | undefined\n if (value === null || typeof value === 'undefined') {\n await this.delete(key)\n return\n }\n const rec: TypedStorageEntry<T> = { time: now, value, version: this.version }\n this.setRaw(key, JSON.stringify(rec))\n return rec\n }\n\n const recordObj = keyOrRecord as Record<string, T | null | undefined>\n const results: Record<string, TypedStorageEntry<T> | void> = {}\n for (const [k, v] of Object.entries(recordObj)) {\n if (v === null || typeof v === 'undefined') {\n this.deleteSync(k)\n continue\n }\n const rec: TypedStorageEntry<T> = { time: now, value: v as T, version: this.version }\n this.setRaw(k, JSON.stringify(rec))\n results[k] = rec\n }\n return results\n }\n\n async has(key: string, ttl = this.ttl): Promise<boolean> {\n const rec = this.load(key)\n return rec !== null && !this.isExpired(rec, ttl)\n }\n\n async delete(key: string): Promise<void> {\n this.deleteSync(key)\n }\n\n async updatedAt(key: string): Promise<number> {\n const rec = this.load(key)\n return rec ? rec.time : 0\n }\n\n async clear(): Promise<this> {\n // Remove only keys with our prefix+storeName\n const prefix = this.makeKey('')\n // Collect first to avoid index shifting issues\n const toRemove: string[] = []\n for (let i = 0; i < this.db.length; i++) {\n const k = this.db.key(i)\n if (k && k.startsWith(prefix)) toRemove.push(k)\n }\n for (const k of toRemove) this.db.removeItem(k)\n return this\n }\n\n // Async generators\n async *keys(): AsyncIterable<string> {\n const prefix = this.makeKey('')\n for (let i = 0; i < this.db.length; i++) {\n const k = this.db.key(i)\n if (k && k.startsWith(prefix)) yield k.slice(prefix.length)\n }\n }\n\n async *values(): AsyncIterable<TypedStorageEntry<T>> {\n for await (const k of this.keys()) {\n const rec = this.load(k)\n if (!rec) continue\n if (this.isExpired(rec)) {\n this.deleteSync(k)\n continue\n }\n yield rec\n }\n }\n\n async *entries(): AsyncIterable<[string, TypedStorageEntry<T>]> {\n for await (const k of this.keys()) {\n const rec = this.load(k)\n if (!rec) continue\n if (this.isExpired(rec)) {\n this.deleteSync(k)\n continue\n }\n yield [k, rec]\n }\n }\n}\n","var s;\n((i) => {\n i.cache = /* @__PURE__ */ new Map(), i.defaults = Object.freeze({ iterBatch: 100, retry: { attempts: 3, baseDelayMs: 16 } }), i.sleep = (e) => new Promise((n) => setTimeout(n, e));\n function t(e) {\n const n = e?.name ?? \"\";\n return n === \"AbortError\" || n === \"InvalidStateError\" || n === \"TransactionInactiveError\" || n === \"UnknownError\";\n }\n i.shouldReconnect = t;\n async function a(e, n, r) {\n const w = Math.max(1, e.attempts);\n for (let y = 0; y < w; y++)\n try {\n return await n(y);\n } catch (d) {\n if (y === w - 1) throw d;\n await r?.(d, y);\n const u = e.baseDelayMs * Math.pow(2, y) + Math.floor(Math.random() * 10);\n await (0, i.sleep)(u);\n }\n throw new Error(\"withRetry exhausted unexpectedly\");\n }\n i.withRetry = a;\n function o(e, n, r) {\n return new Promise((w, y) => {\n const d = indexedDB.open(e, n);\n d.onupgradeneeded = () => {\n try {\n const u = d.result, l = d.transaction;\n r?.(u, l);\n } catch (u) {\n y(u);\n }\n }, d.onerror = () => y(d.error), d.onblocked = () => {\n }, d.onsuccess = () => {\n const u = d.result;\n u.onversionchange = () => {\n try {\n u.close();\n } finally {\n i.cache.delete(e);\n }\n }, w(u);\n };\n });\n }\n async function h(e, n, r) {\n let w = !e.objectStoreNames.contains(n), y = [];\n if (!w && r?.indexes?.length) {\n const l = e.transaction(n, \"readonly\"), p = l.objectStore(n), g = new Set(Array.from(p.indexNames));\n y = (r.indexes || []).filter((m) => !g.has(m.name)), await new Promise((m, R) => {\n l.oncomplete = () => m(), l.onabort = () => R(l.error), l.onerror = () => R(l.error);\n });\n }\n if (!w && y.length === 0) return e;\n const d = e.version + 1;\n e.close();\n const u = await o(e.name, d, (l, p) => {\n let g;\n l.objectStoreNames.contains(n) ? g = p.objectStore(n) : g = l.createObjectStore(n, {\n keyPath: r?.keyPath ?? void 0,\n autoIncrement: !!r?.autoIncrement\n });\n for (const m of y)\n g.indexNames.contains(m.name) || g.createIndex(m.name, m.keyPath, m.options);\n });\n return u.onversionchange = () => {\n try {\n u.close();\n } finally {\n i.cache.delete(u.name);\n }\n }, u;\n }\n async function c(e, n, r) {\n let w = i.cache.get(e);\n return w ? (w = w.then((y) => h(y, n, r)), i.cache.set(e, w)) : (w = (async () => {\n const y = await o(e);\n return h(y, n, r);\n })(), i.cache.set(e, w)), w;\n }\n i.getDB = c;\n async function f(e) {\n const n = i.cache.get(e);\n if (i.cache.delete(e), n)\n try {\n (await n).close();\n } catch {\n }\n }\n i.closeConnection = f;\n function v(e) {\n return new Promise((n, r) => {\n e.onsuccess = () => n(e.result), e.onerror = () => r(e.error);\n });\n }\n i.asyncRequest = v;\n function S(e) {\n return new Promise((n, r) => {\n e.oncomplete = () => n(), e.onabort = () => r(e.error ?? new DOMException(\"Aborted\", \"AbortError\")), e.onerror = () => r(e.error ?? new DOMException(\"TransactionError\", \"UnknownError\"));\n });\n }\n i.waitTx = S;\n})(s || (s = {}));\n/**\n * IDB Plus\n *\n * 🗄️ Minimal Promise based IndexedDB Wrapper with Map-like API\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass x {\n constructor(t, a, o = {}) {\n this.dbName = t, this.storeName = a, this.options = o;\n }\n get _iterBatch() {\n return this.options.iterBatch ?? s.defaults.iterBatch;\n }\n get _retryCfg() {\n const t = this.options.retry ?? s.defaults.retry;\n return { attempts: t.attempts ?? 3, baseDelayMs: t.baseDelayMs ?? 16 };\n }\n async _withStore(t, a) {\n const o = this._retryCfg;\n return s.withRetry(\n o,\n async () => {\n const h = await s.getDB(this.dbName, this.storeName, this.options.ensure);\n try {\n const c = h.transaction(this.storeName, t), f = c.objectStore(this.storeName), v = await a(f);\n return await s.waitTx(c), v;\n } catch (c) {\n throw c;\n }\n },\n async (h) => {\n s.shouldReconnect(h) && await s.closeConnection(this.dbName);\n }\n );\n }\n async get(t) {\n return this._withStore(\"readonly\", async (a) => {\n const o = await s.asyncRequest(a.get(t));\n return o === void 0 ? void 0 : o;\n });\n }\n async set(t, a) {\n return await this._withStore(\"readwrite\", async (o) => {\n const c = this.options.ensure?.keyPath != null ? o.put(a) : o.put(a, t);\n await s.asyncRequest(c);\n }), this;\n }\n async delete(t) {\n return this._withStore(\"readwrite\", async (a) => {\n const o = await s.asyncRequest(a.get(t)) !== void 0;\n return await s.asyncRequest(a.delete(t)), o;\n });\n }\n async clear() {\n await this._withStore(\"readwrite\", async (t) => {\n await s.asyncRequest(t.clear());\n });\n }\n async has(t) {\n return await this.get(t) !== void 0;\n }\n async count() {\n return this._withStore(\"readonly\", async (t) => await s.asyncRequest(t.count()) ?? 0);\n }\n async *_iterateEntries() {\n let t = null, a = !1;\n const o = Math.max(1, this._iterBatch);\n for (; !a; ) {\n const h = await this._withStore(\"readonly\", async (c) => {\n const f = [], v = t === null ? void 0 : IDBKeyRange.lowerBound(t, !0);\n return await new Promise((S, e) => {\n const n = c.openCursor(v);\n n.onerror = () => e(n.error), n.onsuccess = () => {\n const r = n.result;\n if (!r) {\n a = !0, S();\n return;\n }\n f.push([r.key, r.value]), t = r.key, f.length >= o ? S() : r.continue();\n };\n }), f;\n });\n for (const c of h) yield c;\n if (h.length === 0) break;\n }\n }\n entries() {\n return this._iterateEntries();\n }\n async *keys() {\n for await (const [t] of this.entries()) yield t;\n }\n async *values() {\n for await (const [, t] of this.entries()) yield t;\n }\n [Symbol.asyncIterator]() {\n return this.entries()[Symbol.asyncIterator]();\n }\n async forEach(t) {\n for await (const [a, o] of this.entries())\n await t(o, a, this);\n }\n async getMany(t) {\n const a = /* @__PURE__ */ new Map();\n for await (const o of t) a.set(o, void 0);\n return await this._withStore(\"readonly\", async (o) => {\n await Promise.all(\n a.keys().map(async (h) => {\n const c = await s.asyncRequest(o.get(h));\n a.set(h, c === void 0 ? void 0 : c);\n })\n );\n }), a;\n }\n async setMany(t) {\n const a = this.options.ensure?.keyPath != null;\n return await this._withStore(\"readwrite\", async (o) => {\n for await (const [h, c] of t) {\n const f = a ? o.put(c) : o.put(c, h);\n await s.asyncRequest(f);\n }\n }), this;\n }\n async deleteMany(t) {\n let a = 0;\n return await this._withStore(\"readwrite\", async (o) => {\n for await (const h of t)\n await s.asyncRequest(o.get(h)) !== void 0 && a++, await s.asyncRequest(o.delete(h));\n }), a;\n }\n async disconnect() {\n await s.closeConnection(this.dbName);\n }\n}\nexport {\n x as IDBPlus,\n s as IDBPlusHelper\n};\n//# sourceMappingURL=index.js.map\n","import { IDBPlus } from 'idb-plus'\nimport { AbstractIPEStorageManager, TypedStorageEntry } from '../index.js'\n\nexport class IDBStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {\n readonly db: IDBPlus<string, TypedStorageEntry<T>>\n keys: () => AsyncIterable<string>\n values: () => AsyncIterable<TypedStorageEntry<T>>\n entries: () => AsyncIterable<[string, TypedStorageEntry<T>]>\n\n constructor(\n readonly dbName: string,\n readonly storeName: string,\n public ttl: number = Infinity,\n public version?: number\n ) {\n this.db = new IDBPlus<string, TypedStorageEntry<T>>(dbName, storeName)\n this.keys = this.db.keys.bind(this.db)\n this.values = this.db.values.bind(this.db)\n this.entries = this.db.entries.bind(this.db)\n if (typeof this.ttl !== 'number') {\n this.ttl = Number(this.ttl)\n }\n if (isNaN(this.ttl) || this.ttl <= 0) {\n this.ttl = Infinity\n }\n this._clearExpiredEntries().catch(() => {})\n }\n\n private async _clearExpiredEntries() {\n if (this.ttl === Infinity) return\n const now = Date.now()\n const toDelete: string[] = []\n for await (const [key, entry] of this.db.entries()) {\n if (typeof entry.time === 'number' && now - entry.time > this.ttl) {\n toDelete.push(key)\n }\n }\n if (toDelete.length > 0) {\n await this.db.deleteMany(toDelete)\n }\n }\n\n async get(key: string, ttl = this.ttl, setter?: () => Promise<T> | T): Promise<T | null> {\n const data = await this.loadFromDB(key)\n const isExpired = this.checkIfExpired(data, ttl)\n if (!data || isExpired) {\n if (typeof setter === 'function') {\n const newData = await setter()\n await this.set(key, newData as T)\n return newData as T\n }\n return null\n }\n return data.value\n }\n\n set(key: string, value: null | undefined): Promise<void>\n set(key: string, value: T): Promise<TypedStorageEntry<T>>\n set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n async set(\n keyOrRecord: string | Record<string, T | null | undefined>,\n maybeValue?: T | null | undefined\n ): Promise<TypedStorageEntry<T> | void | Record<string, TypedStorageEntry<T> | void>> {\n const now = Date.now()\n\n // Overload 1: set(key, value)\n if (typeof keyOrRecord === 'string') {\n const key = keyOrRecord\n const value = maybeValue as T | null | undefined\n if (value === null || typeof value === 'undefined') {\n return this.delete(key)\n }\n const record: TypedStorageEntry<T> = {\n time: now,\n value,\n version: this.version,\n }\n await this.db.set(key, record)\n return record\n }\n\n // Overload 2: set(record)\n const recordObject = keyOrRecord as Record<string, T | null | undefined>\n const toSet: Array<[string, TypedStorageEntry<T>]> = []\n const toDelete: Array<string> = []\n const results: Record<string, TypedStorageEntry<T> | void> = {}\n\n for (const [key, value] of Object.entries(recordObject)) {\n if (value === null || typeof value === 'undefined') {\n toDelete.push(key)\n } else {\n const rec: TypedStorageEntry<T> = { time: now, value: value as T, version: this.version }\n toSet.push([key, rec])\n results[key] = rec\n }\n }\n\n if (toSet.length > 0) {\n await this.db.setMany(toSet)\n }\n if (toDelete.length > 0) {\n await this.db.deleteMany(toDelete)\n }\n return results\n }\n\n async has(key: string, ttl = this.ttl): Promise<boolean> {\n const data = await this.loadFromDB(key)\n const isExpired = this.checkIfExpired(data, ttl)\n return data !== null && !isExpired\n }\n\n async delete(key: string): Promise<void> {\n await this.db.delete(key)\n }\n\n async updatedAt(key: string): Promise<number> {\n const data = await this.loadFromDB(key)\n return data ? data.time : 0\n }\n\n private async loadFromDB(key: string) {\n const data = await this.db.get(key)\n // Not exist\n if (data === void 0) {\n return null\n }\n // Bad data\n if (typeof data.time !== 'number' || typeof data.value === 'undefined') {\n try {\n await this.delete(key)\n } catch (_) {}\n return null\n }\n // Version mismatch\n if (typeof this.version === 'number' && data.version !== this.version) {\n try {\n await this.delete(key)\n } catch (_) {}\n return null\n }\n return data\n }\n\n private checkIfExpired(data: TypedStorageEntry<T> | null, ttl = this.ttl) {\n if (!data) return false\n return Date.now() - data.time > ttl\n }\n\n /**\n * [DANGER] Use with caution!\n * Delete all data from the database.\n */\n async clear() {\n await this.db.clear()\n return this\n }\n}\n","import { InPageEdit, Service } from '@/InPageEdit.js'\nimport { LocalStorageManager } from './managers/LocalStorageManager.js'\nimport { IDBStorageManager } from './managers/IDBStorageManager.js'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n storage: StorageService\n }\n}\n\nexport interface StorageServiceConfig {\n dbName: string\n}\n\nexport class StorageService extends Service<StorageServiceConfig> {\n readonly kv: IDBStorageManager<any>\n readonly simpleKV: LocalStorageManager<any>\n readonly memoryKV: LocalStorageManager<any>\n constructor(\n ctx: InPageEdit,\n public config: StorageServiceConfig\n ) {\n super(ctx, 'storage', false)\n this.kv = this.createDatabase<any>('key-val', 0, 1, 'indexedDB') as IDBStorageManager<any>\n this.simpleKV = this.createDatabase<any>('~', 0, 1, 'localStorage') as LocalStorageManager<any>\n this.memoryKV = this.createDatabase<any>('~', 0, 1, 'memory') as LocalStorageManager<any>\n }\n\n createDatabase<T = any>(\n storeName: string,\n ttl?: number,\n version?: number,\n engine: 'indexedDB' | 'localStorage' | 'sessionStorage' | 'memory' = 'indexedDB'\n ): AbstractIPEStorageManager<T> {\n const canUseIDB = 'indexedDB' in window && window.indexedDB !== null\n if (engine === 'indexedDB' && !canUseIDB) {\n engine = 'localStorage'\n }\n switch (engine) {\n case 'indexedDB':\n return new IDBStorageManager<T>(this.config.dbName, storeName, ttl, version)\n case 'localStorage':\n case 'sessionStorage':\n case 'memory':\n return new LocalStorageManager<T>(this.config.dbName, storeName, ttl, version, engine)\n default:\n throw new Error(`Unsupported storage engine: ${engine}`)\n }\n }\n}\n\nexport interface TypedStorageEntry<T = any> {\n /** last update time */\n time: number\n /** stored value */\n value: T\n /** version */\n version?: number\n}\n\nexport interface AbstractIPEStorageManager<T = unknown> {\n get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>\n set(key: string, value: null | undefined): Promise<void>\n set(\n record: Record<string, T | null | undefined>\n ): Promise<Record<string, TypedStorageEntry<T> | void>>\n set(key: string, value: T): Promise<TypedStorageEntry<T>>\n has(key: string, ttl?: number): Promise<boolean>\n delete(key: string): Promise<void>\n keys(): AsyncIterable<string>\n values(): AsyncIterable<TypedStorageEntry<T>>\n entries(): AsyncIterable<[string, TypedStorageEntry<T>]>\n updatedAt(key: string): Promise<number>\n clear(): Promise<this>\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit'\nimport { createWikiPageModel, IWikiPage, WikiPageConstructor } from '@/models/WikiPage'\nimport { PageInfo } from '@/models/WikiPage/types/PageInfo'\nimport { IWikiTitle } from '@/models/WikiTitle/index.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wikiPage: WikiPageService\n }\n}\n\nexport class WikiPageService extends Service {\n static readonly inject: Inject = ['api']\n WikiPage: WikiPageConstructor\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiPage', true)\n this.WikiPage = createWikiPageModel(this.ctx.api)\n }\n\n async createInstance(payload: Record<string, any>, noCache = false) {\n const page = await this.WikiPage.newFromApi(payload)\n return page\n }\n async newFromTitle(\n title: string | IWikiTitle,\n converttitles = false,\n rvsection?: number | string,\n noCache = false\n ) {\n return this.createInstance({ titles: title.toString(), converttitles, rvsection }, noCache)\n }\n async newFromPageId(pageid: number, rvsection?: number | string, noCache = false) {\n return this.createInstance({ pageids: pageid, rvsection }, noCache)\n }\n async newFromRevision(revid: number, rvsection?: number | string, noCache = false) {\n return await this.createInstance({ revids: revid, rvsection }, noCache)\n }\n newBlankPage(init: Partial<PageInfo> = {}) {\n return this.WikiPage.newBlankPage(init)\n }\n}\n\n// TODO: Currently not used\nclass WikiPageCache {\n private _cachedPages = new Map<string, IWikiPage>()\n getCacheByPayload(payload: Record<string, any>) {\n const title = payload.titles || ''\n const pageId = payload.pageids ? String(payload.pageids) : ''\n const revId = payload.revids ? String(payload.revids) : ''\n const section = payload.rvsection ? String(payload.rvsection) : 'full'\n let cacheKey = ''\n\n if (revId) {\n cacheKey = `rev:${revId}#${section}`\n } else if (pageId) {\n cacheKey = `pageid:${pageId}#section:${section}`\n } else if (title) {\n cacheKey = `title:${title}#section:${section}`\n }\n return this._cachedPages.get(cacheKey) || null\n }\n setCacheByPage(page: IWikiPage, section?: number | string) {\n const title = page.title || ''\n const pageId = page.pageid ? String(page.pageid) : ''\n const revId = page.revisions?.[0]?.revid ? String(page.revisions[0].revid) : ''\n const sectionStr = section !== void 0 ? String(section) : 'full'\n if (!pageId) {\n return page\n }\n const keys = [\n `rev:${revId}#section:${sectionStr}`,\n `pageid:${pageId}#section:${sectionStr}`,\n `title:${title}#section:${sectionStr}`,\n ]\n keys.forEach((cacheKey) => {\n this._cachedPages.set(cacheKey, page)\n })\n return page\n }\n removeCacheByPage(page: IWikiPage) {\n this._cachedPages.entries().forEach(([key, cachedPage]) => {\n if (cachedPage.pageid === page.pageid) {\n this._cachedPages.delete(key)\n }\n })\n return this\n }\n}\n","import { Inject, InPageEdit, Service } from '@/InPageEdit'\nimport { IWikiPage } from '@/models/WikiPage/index.js'\nimport { createWikiTitleModel, IWikiTitle, WikiTitleConstructor } from '@/models/WikiTitle/index.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n wikiTitle: WikiTitleService\n }\n}\n\nexport interface WikiLinkMetadata {\n title?: IWikiTitle\n pageId?: number\n revId?: number\n url: URL\n params: URLSearchParams\n hash: string\n action: 'view' | 'edit' | 'create' | 'diff' | string\n}\n\nexport class WikiTitleService extends Service {\n static readonly inject: Inject = ['wiki', 'wikiPage']\n\n readonly Title: WikiTitleConstructor\n constructor(public ctx: InPageEdit) {\n super(ctx, 'wikiTitle', true)\n this.Title = createWikiTitleModel(this.ctx.wiki.siteInfo)\n }\n private readonly logger = this.ctx.logger('WikiTitleService')\n\n newTitle(title: string, namespace?: number) {\n return new this.Title(title, namespace)\n }\n newMainPageTitle() {\n return this.newTitle(this.ctx.wiki.mainPageName)\n }\n async newTitleFromUrl(url: string | URL) {\n const linkInfo = this.parseWikiLink(url)\n if (linkInfo?.title) {\n return linkInfo.title\n } else if (linkInfo?.pageId) {\n return this.newTitleFromPageId(linkInfo.pageId)\n } else {\n return null\n }\n }\n private _cachedTitles = new Map<string, Promise<IWikiTitle | null>>()\n private async newTitleFromAnyId(\n payload: { title?: string; pageId?: number; revId?: number },\n noCache = false\n ) {\n const { title, pageId, revId } = payload ?? {}\n if (typeof title === 'string') {\n return this.newTitle(title)\n }\n let id: number | undefined = undefined\n let kind: 'pageid' | 'revid' | undefined = undefined\n if (revId) {\n id = parseInt(revId.toString(), 10)\n kind = 'revid'\n } else if (pageId) {\n id = parseInt(pageId.toString(), 10)\n kind = 'pageid'\n }\n if (!id || !kind || isNaN(id) || id <= 0) {\n throw new Error('Invalid id or kind', { cause: payload })\n }\n\n if (!noCache && this._cachedTitles.has(`${kind}:${id}`)) {\n return await this._cachedTitles.get(`${kind}:${id}`)!\n }\n const { promise, resolve, reject } = promiseWithResolvers<IWikiTitle | null>()\n this._cachedTitles.set(`${kind}:${id}`, promise)\n try {\n const { wikiPage } = this.ctx\n let page: IWikiPage | null = null\n if (kind === 'pageid') {\n page = await wikiPage.newFromPageId(id)\n } else if (kind === 'revid') {\n page = await wikiPage.newFromRevision(id)\n } else {\n throw new Error(`Invalid kind: ${kind}`)\n }\n resolve(this.newTitle(page.title))\n } catch (e) {\n this._cachedTitles.delete(`${kind}:${id}`)\n reject(e)\n }\n return promise\n }\n async newTitleFromPageId(pageId: number) {\n return this.newTitleFromAnyId({ pageId: pageId })\n }\n async newTitleFromRevision(revId: number) {\n return this.newTitleFromAnyId({ revId: revId })\n }\n\n /**\n * Resolve **special** special pages to it's real target\n *\n * If target is self or cannot be resolved, return null\n * @example\n * ```\n * Special:MyPage -> User:<username>\n * Special:Edit/Page_Title -> Page_Title\n * Special:NewSection/Page_Title -> Page_Title (section=new)\n * ```\n */\n resolveSpecialPageTarget(input: IWikiTitle | string): {\n title: IWikiTitle\n action?: string | undefined\n section?: number | 'new' | undefined\n } | null {\n const title = typeof input === 'string' ? this.newTitle(input) : input\n if (!title) {\n return null\n }\n if (title.getNamespaceId() !== -1) {\n return null\n }\n let titleText: string | undefined\n let section: number | 'new' | undefined = undefined\n let action = 'view'\n const sub = title.getMainDBKey().split('/').slice(1).join('/') || ''\n if (title.isSpecial('edit') && sub) {\n titleText = sub\n action = 'edit'\n } else if (title.isSpecial('talkpage') && sub) {\n const talkPage = title.newTitle(sub).getTalkPage()\n if (!talkPage) {\n return null\n }\n titleText = talkPage.getPrefixedDBKey()\n } else if (title.isSpecial('mypage')) {\n const userPage = title.newTitle(this.ctx.wiki.userInfo.name, 2)\n titleText = userPage.getPrefixedDBKey() + (sub ? `/${sub}` : '')\n } else if (title.isSpecial('mytalk')) {\n const userTalkPage = title.newTitle(this.ctx.wiki.userInfo.name, 3)\n titleText = userTalkPage.getPrefixedDBKey() + (sub ? `/${sub}` : '')\n } else if (title.isSpecial('newsection') && sub) {\n titleText = sub\n section = 'new'\n action = 'edit'\n } else {\n return null\n }\n\n return {\n title: new this.Title(titleText),\n section,\n action,\n }\n }\n\n // shortcuts\n private readonly wiki = this.ctx.wiki\n /**\n * @example \"https://example.com\"\n */\n private readonly wikiBaseUrl = this.wiki.baseUrl\n /**\n * Article path, with trailing slash\n * @example \"/wiki/\" (if wgArticlePath is \"/wiki/$1\")\n */\n private readonly wikiArticlePath = this.wiki.articlePath.replace('$1', '')\n /**\n * Article base URL, with trailing slash\n * @example \"https://example.com/wiki/\" (if wgArticlePath is \"/wiki/$1\")\n */\n private readonly wikiArticleBaseUrl = this.wiki.articleBaseUrl.replace('$1', '')\n /**\n * Script base URL, **without** trailing slash\n * @example \"https://example.com/w\" (if wgScriptPath is \"/w\")\n */\n private readonly wikiIndexPhpUrl = this.wiki.getSciprtUrl('index.php')\n\n isWikiLink(url: string): boolean {\n return (\n url.startsWith(this.wikiArticleBaseUrl) ||\n url.startsWith(this.wikiIndexPhpUrl) ||\n // Some servers allow index.php to be omitted\n url.startsWith(`${this.wikiBaseUrl}/?`) ||\n // It's the landing page\n url === this.ctx.wiki.landingPageUrl\n )\n }\n\n static readonly REG_SKIPPED_HREF = /^(#|javascript:|vbscript:|file:)/i\n validateHrefAttr(href: string | null): boolean {\n if (typeof href !== 'string') {\n return false\n }\n return !WikiTitleService.REG_SKIPPED_HREF.test(href)\n }\n\n parseWikiLink(link: string | URL): WikiLinkMetadata | null {\n if (!link) {\n return null\n }\n\n if (typeof link === 'string' && !this.validateHrefAttr(link)) {\n return null\n }\n\n const url = makeURL(link)\n if (!this.isWikiLink(url.toString())) {\n return null\n }\n const params = url.searchParams\n const hash = url.hash.replace('#', '')\n const action = params.get('action') || 'view'\n const titleParam = params.get('title') || ''\n const curid = parseInt(params.get('curid') || '0', 10)\n const oldid = parseInt(params.get('oldid') || '0', 10)\n let titleText =\n titleParam ||\n (() => {\n try {\n return decodeURIComponent(url.pathname.substring(this.wikiArticlePath.length))\n } catch (e) {\n this.logger.error('parseLink', url, e)\n return ''\n }\n })()\n if (titleText.endsWith('index.php')) {\n titleText = ''\n }\n\n let title: IWikiTitle | undefined = undefined\n let pageId: number | undefined = undefined\n let revId: number | undefined = undefined\n // 此处的优先级遵循 MediaWiki 对 url 参数处理的优先级\n if (oldid) {\n revId = oldid\n } else if (curid) {\n pageId = curid\n } else if (titleText) {\n title = this.newTitle(titleText)\n } else {\n // 无任何有效参数\n if (url.origin + url.pathname === this.ctx.wiki.landingPageUrl) {\n // 但 url 是 landingPageUrl,则认为是主页\n title = this.newMainPageTitle()\n } else {\n return null\n }\n }\n\n return {\n title,\n pageId,\n revId,\n url,\n params,\n hash,\n action,\n }\n }\n}\n","export type ComputeAble<T> = (() => T | Promise<T>) | T\nconst isFunction = (value: any): value is Function => typeof value === 'function'\nexport async function computeFallback<T>(value: ComputeAble<T>): Promise<T> {\n if (isFunction(value)) {\n return await value()\n } else {\n return value\n }\n}\n","import { Inject, InPageEdit, Schema, Service, type PreferencesMap } from '@/InPageEdit.js'\nimport { AbstractIPEStorageManager } from '@/services/storage/index.js'\nimport { computeFallback, ComputeAble } from '@/utils/computeable.js'\nimport { IDBStorageManager } from './storage/managers/IDBStorageManager'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferences: PreferencesService\n // Alias\n prefs: PreferencesService\n }\n export interface Events {\n 'preferences/changed'(payload: {\n ctx: InPageEdit\n /** original input */\n input: Record<string, unknown>\n /** changed settings */\n changes: Record<string, unknown>\n }): void\n }\n}\n\nexport interface InPageEditPreferenceUICategory {\n name: string\n label: string\n description?: string\n index?: number\n /**\n * 自定义渲染函数\n * @param ctx - InPageEdit 上下文\n * @param onUnmount - 卸载回调,当偏好设置 UI 被卸载时会被调用\n */\n customRenderer?: (payload: {\n ctx: InPageEdit\n onMounted: (callback: (container: HTMLElement) => void) => void\n onUnmount: (callback: () => void) => void\n }) => Promise<Node> | Node\n /**\n * 是否自动生成该分类下的表单\n * @default true\n */\n autoGenerateForm?: boolean\n}\n\nexport interface InPageEditPreferenceUIRegistryItem {\n name: string\n schema: Schema\n category: string\n}\n\n@Inject(['storage', 'wiki'])\nexport class PreferencesService extends Service {\n private db: AbstractIPEStorageManager<any>\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\n private _defaultPreferences: Record<string, any> = {}\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'preferences', true)\n ctx.set('prefs', this)\n this.db = ctx.storage.createDatabase<any>(`preferences:${ctx.wiki.userInfo.id}`, Infinity)\n try {\n this._migrageFromLegacyMasterDB()\n } catch (e) {}\n }\n\n get logger() {\n return this.ctx.logger('PREFERENCES')\n }\n\n async start() {\n this.defineCategory({\n name: 'general',\n label: 'General',\n description: 'General settings',\n autoGenerateForm: true,\n })\n this.defineCategory({\n name: 'editor',\n label: 'Editor',\n description: 'Settings related to editing content',\n autoGenerateForm: true,\n })\n }\n\n // 重载魔术:一些类型体操……\n /**\n * 获取配置项的值\n * @param key 配置项的键名\n * @param fallback 当配置项不存在时的回退值\n * @returns\n * - 未提供 key 时,返回所有配置项的键值对\n * - 提供 key 时,返回对应配置项的值,若不存在则返回回退值或 null\n * @tips 你可以通过重载 PreferencesMap 来定义你的配置项类型,以自动获得类型推导\n */\n get(): Promise<PreferencesMap>\n get<K extends keyof PreferencesMap>(\n key: K,\n fallback?: ComputeAble<PreferencesMap[K]>\n ): Promise<PreferencesMap[K] | null>\n get<U = unknown>(key: string, fallback?: ComputeAble<U>): Promise<U | null>\n async get(key?: string, fallback?: ComputeAble<unknown>): Promise<unknown | null> {\n if (!key) {\n return this.getAll()\n }\n fallback ??= () => {\n const defaultValue = this.defaultOf(key as keyof PreferencesMap)\n this.logger.debug(key, `(fallback value: ${defaultValue})`)\n return defaultValue as unknown\n }\n const value = await this.db.get(key, undefined)\n return value !== null ? value : await computeFallback(fallback)\n }\n /**\n * 获取全部注册的配置项以及最终生效的值\n * 未保存的配置项将使用默认值\n */\n async getAll() {\n const data = this.loadDefaultConfigs()\n for await (const [key, record] of this.db.entries()) {\n // 旧版本埋的坑\n if (key === '_touched') continue\n if (key in data) {\n ;(data as any)[key] = record.value\n }\n }\n return data\n }\n\n set<K extends keyof PreferencesMap>(\n key: K,\n value: PreferencesMap[K] | undefined | null\n ): Promise<PreferencesMap[K] | void>\n set<U = unknown>(key: string, value: U | undefined | null): Promise<U | void>\n async set(key: string, value: unknown): Promise<unknown | void> {\n const result = await this.setMany({ [key]: value } as any)\n return (result as any)[key]\n }\n\n setMany(input: {\n [K in keyof PreferencesMap]?: PreferencesMap[K] | undefined | null\n }): Promise<{\n [K in keyof PreferencesMap]?: PreferencesMap[K] | undefined | null\n }>\n setMany<U = unknown>(\n input: Record<string, U | undefined | null>\n ): Promise<Record<string, U | undefined | null>>\n async setMany(input: Record<string, unknown>) {\n const defaults = this.loadDefaultConfigs()\n const changes: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(input)) {\n if (value === (defaults as any)[key] || value === void 0) {\n changes[key] = void 0\n } else {\n changes[key] = value\n }\n }\n await this.db.set(changes)\n this.ctx.emit('preferences/changed', { ctx: this.ctx, input, changes })\n return changes\n }\n\n defaultOf<T extends keyof PreferencesMap>(key: T): PreferencesMap[T] | undefined\n defaultOf<U = unknown>(key: string): U | undefined\n defaultOf(key: string) {\n return (this._defaultPreferences[key] ??=\n this.loadDefaultConfigs()[key as keyof PreferencesMap])\n }\n\n /**\n * Get exportable configurations\n * - exclude values that are the same as the default value\n * - exclude invalid or undefined values\n * - sort by keys\n */\n async getExportableRecord(configs?: Record<string, unknown>) {\n configs ??= (await this.getAll()) as any\n const defaults = this.loadDefaultConfigs()\n\n const out: Record<string, any> = {}\n Object.entries(defaults)\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([key, value]) => {\n const pref = configs![key]\n if (pref !== void 0 && pref !== value) {\n out[key] = pref\n }\n })\n return out\n }\n\n private loadDefaultConfigs() {\n const data = {} as any\n this.getConfigRegistries().forEach((item) => {\n // 首先读取 schema 上的默认值\n try {\n const defaultValues = item.schema({}) as any\n Object.entries(defaultValues).forEach(([key, val]) => {\n data[key] = val\n })\n } catch {}\n })\n\n Object.entries(data).forEach(([key, val]) => {\n this._defaultPreferences[key] = val\n })\n\n return data as PreferencesMap\n }\n\n registerCustomConfig(id: string, schema: Schema, category?: string) {\n this.customRegistries.push({\n name: id,\n schema,\n category: category || 'general',\n })\n return this\n }\n\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\n return Array.from(this.ctx.registry.entries())\n .map<{\n name: string\n schema: Schema\n }>(([plugin]) => {\n if (plugin === null) {\n return {\n name: '@root',\n schema: (InPageEdit as any)?.PreferencesSchema || null,\n }\n } else {\n return {\n name: plugin.name,\n schema: (plugin as any)?.PreferencesSchema || null,\n }\n }\n })\n .filter((item) => item.schema !== null)\n .map((item) => {\n return {\n ...item,\n category: item.schema.meta.category || 'general',\n }\n })\n .concat(this.customRegistries)\n .filter((item) => !category || item.category === category)\n }\n getAllSchema() {\n return new Schema<PreferencesMap>(\n Schema.intersect(this.getConfigRegistries().map((item) => item.schema))\n )\n }\n\n defineCategory(category: InPageEditPreferenceUICategory) {\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\n if (index < 0) {\n this.categoryDefinitions.push(category)\n } else {\n this.categoryDefinitions[index] = category\n }\n this.categoryDefinitions.sort((a, b) => {\n return (a.index ?? 0) - (b.index ?? 0)\n })\n return this\n }\n\n getConfigCategories() {\n return this.categoryDefinitions\n }\n\n private async _migrageFromLegacyMasterDB() {\n const legacyDB = this.ctx.storage.createDatabase<any>('preferences', Infinity)\n let count = 0\n for await (const [key, record] of legacyDB.entries()) {\n if (key === '_touched') continue\n await this.db.set(key, record.value)\n count++\n }\n count && this.logger.info(`Migrated ${count} preferences from master DB`)\n await legacyDB.clear()\n await (legacyDB as IDBStorageManager)?.db?.disconnect?.()\n return count\n }\n}\n","import { Context, Inject, Events as CordisEvents } from '@cordisjs/core'\nimport Schema from 'schemastery'\nimport { LoggerLevel, createLogger, type Logger } from '@inpageedit/logger'\nimport { deepMerge, FexiosConfigs } from 'wiki-saikou'\nimport { ApiService } from '@/services/ApiService.js'\nimport { CurrentPageService } from '@/services/CurrentPageService'\nimport { ResourceLoaderService } from '@/services/ResourceLoaderService.js'\nimport { ModalService } from '@/services/ModalService.js'\nimport { WikiMetadataService } from '@/services/WikiMetadataService.js'\nimport { StorageService } from '@/services/storage/index.js'\nimport { WikiPageService } from '@/services/WikiPageService.js'\nimport { WikiTitleService } from '@/services/WikiTitleService.js'\nimport '@/styles/index.scss'\nimport { PreferencesService } from './services/PreferencesService'\n\nexport interface InPageEditCoreConfig {\n apiConfigs: Partial<FexiosConfigs>\n legacyPreferences: Record<string, any>\n logLevel: number\n storageNamespace: string\n autoloadStyles: boolean\n autoInstallCorePlugins: boolean\n}\n\n/**\n * ✏️ InPageEdit NEXT\n *\n * 🚀 Modular, Extensible Supercharged Plugin for MediaWiki\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n * @see https://github.com/inpageedit/inpageedit-next\n * @see https://www.ipe.wiki/\n */\nexport class InPageEdit extends Context {\n readonly version: string = import.meta.env.__VERSION__ || '0.0.0'\n\n public config: InPageEditCoreConfig\n static DEFAULT_CONFIG: InPageEditCoreConfig = {\n apiConfigs: {},\n legacyPreferences: {},\n logLevel: import.meta.env.DEV ? LoggerLevel.debug : LoggerLevel.info,\n storageNamespace: 'InPageEdit',\n autoloadStyles: true,\n autoInstallCorePlugins: true,\n }\n Endpoints = Endpoints\n readonly schema = Schema\n readonly logger: Logger\n\n constructor(config?: Partial<InPageEditCoreConfig>) {\n super({\n name: 'InPageEdit',\n })\n this.config = deepMerge(InPageEdit.DEFAULT_CONFIG, config)\n this.logger = createLogger({\n name: 'IPE',\n color: '#33aaff',\n level: this.config.logLevel,\n })\n this.#initCoreServices()\n if (this.config.autoInstallCorePlugins) {\n this.#initCorePlugins()\n }\n this.#initCoreAssets()\n }\n\n async #initCoreServices() {\n this.plugin(ApiService, this.config.apiConfigs)\n this.plugin(CurrentPageService)\n this.plugin(ResourceLoaderService)\n this.plugin(ModalService)\n this.plugin(PreferencesService)\n this.plugin(StorageService, { dbName: this.config.storageNamespace })\n this.plugin(WikiMetadataService)\n this.plugin(WikiPageService)\n this.plugin(WikiTitleService)\n\n // 标记内置服务,所以用户即使忘记 inject 也能使用\n this.#markServiceAsBuiltIn([\n 'api',\n 'currentPage',\n 'resourceLoader',\n 'modal',\n 'preferences',\n 'storage',\n 'wikiPage',\n 'wikiTitle',\n // WikiMetadataService\n 'wiki',\n 'getUrl',\n 'getSciprtUrl',\n 'getMainpageUrl',\n ])\n }\n\n #markServiceAsBuiltIn(services: string | string[]) {\n if (typeof services === 'string') {\n services = [services]\n }\n if (!Array.isArray(services) || services.length === 0) return this\n for (const name of services) {\n const internal = this[InPageEdit.internal][name]\n if (internal?.type === 'service') {\n internal.builtin = true\n }\n }\n return this\n }\n\n // TODO: 这里不应该硬编码,暂时先这样\n async #initCorePlugins() {\n const plugins = [\n import('@/plugins/analytics/index.js').then(({ PluginAnalytics }) => PluginAnalytics),\n import('@/plugins/in-article-links/index.js').then(\n ({ PluginInArticleLinks }) => PluginInArticleLinks\n ),\n import('@/plugins/plugin-store/index.js').then(({ PluginPluginStore }) => PluginPluginStore),\n import('@/plugins/preferences-ui/index.js').then(\n ({ PluginPreferencesUI }) => PluginPreferencesUI\n ),\n import('@/plugins/quick-edit/index.js').then(({ PluginQuickEdit }) => PluginQuickEdit),\n import('@/plugins/quick-move/index.js').then(({ PluginQuickMove }) => PluginQuickMove),\n import('@/plugins/quick-preview/index.js').then(\n ({ PluginQuickPreview }) => PluginQuickPreview\n ),\n import('@/plugins/quick-diff/index.js').then(({ PluginQuickDiff }) => PluginQuickDiff),\n import('@/plugins/quick-redirect/index.js').then(\n ({ PluginQuickRedirect }) => PluginQuickRedirect\n ),\n import('@/plugins/toolbox/index.js').then(({ PluginToolbox }) => PluginToolbox),\n ]\n plugins.forEach(async (plugin) => {\n this.plugin(await plugin)\n })\n\n if (import.meta.env.DEV) {\n this.plugin((await import('@/plugins/_debug/index.js')).default)\n }\n }\n\n // TODO: 应该抽象到 PluginTheme 中去,暂时先硬编码\n async #initCoreAssets() {\n this.inject(['resourceLoader'], (ctx) => {\n if (\n import.meta.env.PROD &&\n import.meta.env.VITE_BUILD_FORMAT === 'import' &&\n this.config.autoloadStyles\n ) {\n ctx.resourceLoader.loadStyle(import.meta.resolve('./style.css'))\n }\n })\n }\n\n async withInject(inject: Inject) {\n const { promise, resolve } = promiseWithResolvers<this>()\n this.inject(inject, (ctx) => {\n resolve(ctx)\n })\n return promise\n }\n}\n\n// 导出依赖包以便用户使用\nexport { default as Schema } from 'schemastery'\nexport * from '@inpageedit/logger'\nexport interface PreferencesMap {}\n\n// 类型体操\nexport { Inject, Service } from '@cordisjs/core'\nexport interface Events<C extends InPageEdit = InPageEdit> extends CordisEvents<C> {}\nexport interface InPageEdit {\n [InPageEdit.events]: Events<this>\n}\n"],"names":["$","n","f","d","_","c","t","e","g","E","l","w","x","C","s","b","a","i","h","P","R","u","o","m$1","m","v","y","O","p","r","S","M","H","F","W","K","Y","U","S$1","N","D","k","Q","j","I","T","q","A","B","X","z","L","ApiService","ctx","options","api","MwApi","_CurrentPageService_decorators","_init","_a","Inject","CurrentPageService","Service","#init","#injectHistoryPopState","#onPopState","#initCurrentTitle","#initIsMainPage","injectKey","_pushState","_replaceState","data","title","url","oldURL","newURL","href","isMainPage","__decoratorStart","__decorateElement","__runInitializers","ResourceLoaderService","src","attrs","key","existed","resolve","reject","script","value","link","meta","el","path","G","Z","V","J","tt","et","st","it","nt","ot","at","rt","lt","ct","ht","dt","ft","ut","mt","CustomIPEModal","IPEModal","state","activeInputs","jsx","ProgressBar","ModalService","IPEModalEvent","makeSearchParams","params","sp","item","objKey","objValue","makeURL","hash","existingParams","newParams","_WikiMetadataService_decorators","WikiMetadataService","fallback","Schema","jsxs","kind","noCache","cached","map","ns","alias","server","name","titleOrPageId","searchParams","right","rights","names","group","_memoryStorage","sym","useMemoryStorage","LocalStorageManager","dbName","storeName","ttl","version","engine","raw","parsed","rec","fullKey","setter","expired","newValue","keyOrRecord","maybeValue","now","recordObj","results","prefix","toRemove","IDBStorageManager","IDBPlus","toDelete","entry","isExpired","newData","record","recordObject","toSet","StorageService","config","canUseIDB","WikiPageService","createWikiPageModel","payload","converttitles","rvsection","pageid","revid","init","WikiTitleService","createWikiTitleModel","namespace","linkInfo","pageId","revId","id","promise","promiseWithResolvers","wikiPage","page","input","titleText","section","action","sub","talkPage","titleParam","curid","oldid","isFunction","computeFallback","_PreferencesService_decorators","PreferencesService","defaultValue","defaults","changes","configs","out","pref","defaultValues","val","schema","category","plugin","InPageEdit","index","tab","legacyDB","count","Context","Endpoints","deepMerge","createLogger","#initCoreServices","#initCorePlugins","#initCoreAssets","LoggerLevel","#markServiceAsBuiltIn","services","internal","PluginAnalytics","PluginInArticleLinks","PluginPluginStore","PluginPreferencesUI","PluginQuickEdit","PluginQuickMove","PluginQuickPreview","PluginQuickDiff","PluginQuickRedirect","PluginToolbox","inject"],"mappings":"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","x_google_ignoreList":[0,1,10]}