@inpageedit/core 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +18 -8
  2. package/dist/{BasePlugin-CU8beLYu.js → BasePlugin-YOi2_vUo.js} +2 -2
  3. package/dist/{BasePlugin-CU8beLYu.js.map → BasePlugin-YOi2_vUo.js.map} +1 -1
  4. package/dist/{PluginPrefSync-B-gPsC2n.js → PluginPrefSync-jTNlRQE-.js} +3 -3
  5. package/dist/{PluginPrefSync-B-gPsC2n.js.map → PluginPrefSync-jTNlRQE-.js.map} +1 -1
  6. package/dist/{PluginStoreApp-CDteVCBG.js → PluginStoreApp-CGNxKXAN.js} +2 -2
  7. package/dist/{PluginStoreApp-CDteVCBG.js.map → PluginStoreApp-CGNxKXAN.js.map} +1 -1
  8. package/dist/{Preferences-85Q9FAmb.js → Preferences-BF2fcXrn.js} +140 -132
  9. package/dist/Preferences-BF2fcXrn.js.map +1 -0
  10. package/dist/{index-DjPpAyfE.js → index-3NZkG2a3.js} +3 -3
  11. package/dist/{index-DjPpAyfE.js.map → index-3NZkG2a3.js.map} +1 -1
  12. package/dist/{index-DGtq21uW.js → index-BBNseJXG.js} +3 -3
  13. package/dist/{index-DGtq21uW.js.map → index-BBNseJXG.js.map} +1 -1
  14. package/dist/{index-Ci82vLXg.js → index-BrYKe18j.js} +4 -4
  15. package/dist/index-BrYKe18j.js.map +1 -0
  16. package/dist/{index-19CgGBI0.js → index-C3m6ng6b.js} +234 -231
  17. package/dist/index-C3m6ng6b.js.map +1 -0
  18. package/dist/index-D-fW3ESK.js +195 -0
  19. package/dist/index-D-fW3ESK.js.map +1 -0
  20. package/dist/{index-CQr1DJ8n.js → index-D6zFqL2u.js} +4 -4
  21. package/dist/index-D6zFqL2u.js.map +1 -0
  22. package/dist/{index-BrtFJ-M0.js → index-D97lUU3h.js} +3 -3
  23. package/dist/{index-BrtFJ-M0.js.map → index-D97lUU3h.js.map} +1 -1
  24. package/dist/{index-BKIf3i0I.js → index-DELHsLHS.js} +5 -5
  25. package/dist/{index-BKIf3i0I.js.map → index-DELHsLHS.js.map} +1 -1
  26. package/dist/{index-CVTBg5O9.js → index-Dclp60EO.js} +21 -17
  27. package/dist/index-Dclp60EO.js.map +1 -0
  28. package/dist/{index-DXL7teb0.js → index-DmLoihN1.js} +4 -4
  29. package/dist/{index-DXL7teb0.js.map → index-DmLoihN1.js.map} +1 -1
  30. package/dist/{index-D3iZhRMJ.js → index-QtEF2mzS.js} +156 -127
  31. package/dist/index-QtEF2mzS.js.map +1 -0
  32. package/dist/index.d.ts +73 -22
  33. package/dist/index.js +5 -5
  34. package/dist/plugins/index.js +10 -10
  35. package/dist/services/index.js +1 -1
  36. package/lib/index.umd.js +10 -10
  37. package/lib/index.umd.js.map +1 -1
  38. package/package.json +5 -5
  39. package/dist/Preferences-85Q9FAmb.js.map +0 -1
  40. package/dist/index-19CgGBI0.js.map +0 -1
  41. package/dist/index-CQr1DJ8n.js.map +0 -1
  42. package/dist/index-CVTBg5O9.js.map +0 -1
  43. package/dist/index-Ci82vLXg.js.map +0 -1
  44. package/dist/index-D3iZhRMJ.js.map +0 -1
  45. package/dist/index-rpiO9fpc.js +0 -145
  46. package/dist/index-rpiO9fpc.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preferences-BF2fcXrn.js","sources":["../src/polyfills/Promise.withResolvers.ts","../../../node_modules/.pnpm/cosmokit@1.8.0/node_modules/cosmokit/lib/index.mjs","../../../node_modules/.pnpm/@cordisjs+core@3.18.1/node_modules/@cordisjs/core/lib/index.mjs","../../../node_modules/.pnpm/schemastery@3.17.1/node_modules/schemastery/lib/index.mjs","../src/utils/computeable.ts","../src/constants/endpoints.ts","../src/utils/string.ts","../src/decorators/Preferences.ts"],"sourcesContent":["export const promiseWithResolvers = <T extends unknown = any>() => {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason?: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { promise, resolve, reject }\n}\n\nif (!Promise.withResolvers) {\n Promise.withResolvers = promiseWithResolvers\n}\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/misc.ts\nfunction noop() {\n}\n__name(noop, \"noop\");\nfunction isNullable(value) {\n return value === null || value === void 0;\n}\n__name(isNullable, \"isNullable\");\nfunction isNonNullable(value) {\n return !isNullable(value);\n}\n__name(isNonNullable, \"isNonNullable\");\nfunction isPlainObject(data) {\n return data && typeof data === \"object\" && !Array.isArray(data);\n}\n__name(isPlainObject, \"isPlainObject\");\nfunction filterKeys(object, filter) {\n return Object.fromEntries(Object.entries(object).filter(([key, value]) => filter(key, value)));\n}\n__name(filterKeys, \"filterKeys\");\nfunction mapValues(object, transform) {\n return Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transform(value, key)]));\n}\n__name(mapValues, \"mapValues\");\nfunction pick(source, keys, forced) {\n if (!keys) return { ...source };\n const result = {};\n for (const key of keys) {\n if (forced || source[key] !== void 0) result[key] = source[key];\n }\n return result;\n}\n__name(pick, \"pick\");\nfunction omit(source, keys) {\n if (!keys) return { ...source };\n const result = { ...source };\n for (const key of keys) {\n Reflect.deleteProperty(result, key);\n }\n return result;\n}\n__name(omit, \"omit\");\nfunction defineProperty(object, key, value) {\n return Object.defineProperty(object, key, { writable: true, value, enumerable: false });\n}\n__name(defineProperty, \"defineProperty\");\n\n// src/array.ts\nfunction contain(array1, array2) {\n return array2.every((item) => array1.includes(item));\n}\n__name(contain, \"contain\");\nfunction intersection(array1, array2) {\n return array1.filter((item) => array2.includes(item));\n}\n__name(intersection, \"intersection\");\nfunction difference(array1, array2) {\n return array1.filter((item) => !array2.includes(item));\n}\n__name(difference, \"difference\");\nfunction union(array1, array2) {\n return Array.from(/* @__PURE__ */ new Set([...array1, ...array2]));\n}\n__name(union, \"union\");\nfunction deduplicate(array) {\n return [...new Set(array)];\n}\n__name(deduplicate, \"deduplicate\");\nfunction remove(list, item) {\n const index = list?.indexOf(item);\n if (index >= 0) {\n list.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n__name(remove, \"remove\");\nfunction makeArray(source) {\n return Array.isArray(source) ? source : isNullable(source) ? [] : [source];\n}\n__name(makeArray, \"makeArray\");\n\n// src/types.ts\nfunction is(type, value) {\n if (arguments.length === 1) return (value2) => is(type, value2);\n return type in globalThis && value instanceof globalThis[type] || Object.prototype.toString.call(value).slice(8, -1) === type;\n}\n__name(is, \"is\");\nfunction isArrayBufferLike(value) {\n return is(\"ArrayBuffer\", value) || is(\"SharedArrayBuffer\", value);\n}\n__name(isArrayBufferLike, \"isArrayBufferLike\");\nfunction isArrayBufferSource(value) {\n return isArrayBufferLike(value) || ArrayBuffer.isView(value);\n}\n__name(isArrayBufferSource, \"isArrayBufferSource\");\nvar Binary;\n((Binary2) => {\n Binary2.is = isArrayBufferLike;\n Binary2.isSource = isArrayBufferSource;\n function fromSource(source) {\n if (ArrayBuffer.isView(source)) {\n return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n } else {\n return source;\n }\n }\n Binary2.fromSource = fromSource;\n __name(fromSource, \"fromSource\");\n function toBase64(source) {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(source).toString(\"base64\");\n }\n let binary = \"\";\n const bytes = new Uint8Array(source);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n Binary2.toBase64 = toBase64;\n __name(toBase64, \"toBase64\");\n function fromBase64(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"base64\"));\n return Uint8Array.from(atob(source), (c) => c.charCodeAt(0));\n }\n Binary2.fromBase64 = fromBase64;\n __name(fromBase64, \"fromBase64\");\n function toHex(source) {\n if (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"hex\");\n return Array.from(new Uint8Array(source), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n }\n Binary2.toHex = toHex;\n __name(toHex, \"toHex\");\n function fromHex(source) {\n if (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"hex\"));\n const hex = source.length % 2 === 0 ? source : source.slice(0, source.length - 1);\n const buffer = [];\n for (let i = 0; i < hex.length; i += 2) {\n buffer.push(parseInt(`${hex[i]}${hex[i + 1]}`, 16));\n }\n return Uint8Array.from(buffer).buffer;\n }\n Binary2.fromHex = fromHex;\n __name(fromHex, \"fromHex\");\n})(Binary || (Binary = {}));\nvar base64ToArrayBuffer = Binary.fromBase64;\nvar arrayBufferToBase64 = Binary.toBase64;\nvar hexToArrayBuffer = Binary.fromHex;\nvar arrayBufferToHex = Binary.toHex;\nfunction clone(source, refs = /* @__PURE__ */ new Map()) {\n if (!source || typeof source !== \"object\") return source;\n if (is(\"Date\", source)) return new Date(source.valueOf());\n if (is(\"RegExp\", source)) return new RegExp(source.source, source.flags);\n if (isArrayBufferLike(source)) return source.slice(0);\n if (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n const cached = refs.get(source);\n if (cached) return cached;\n if (Array.isArray(source)) {\n const result2 = [];\n refs.set(source, result2);\n source.forEach((value, index) => {\n result2[index] = Reflect.apply(clone, null, [value, refs]);\n });\n return result2;\n }\n const result = Object.create(Object.getPrototypeOf(source));\n refs.set(source, result);\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = { ...Reflect.getOwnPropertyDescriptor(source, key) };\n if (\"value\" in descriptor) {\n descriptor.value = Reflect.apply(clone, null, [descriptor.value, refs]);\n }\n Reflect.defineProperty(result, key, descriptor);\n }\n return result;\n}\n__name(clone, \"clone\");\nfunction deepEqual(a, b, strict) {\n if (a === b) return true;\n if (!strict && isNullable(a) && isNullable(b)) return true;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n if (!a || !b) return false;\n function check(test, then) {\n return test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n }\n __name(check, \"check\");\n return check(Array.isArray, (a2, b2) => a2.length === b2.length && a2.every((item, index) => deepEqual(item, b2[index]))) ?? check(is(\"Date\"), (a2, b2) => a2.valueOf() === b2.valueOf()) ?? check(is(\"RegExp\"), (a2, b2) => a2.source === b2.source && a2.flags === b2.flags) ?? check(isArrayBufferLike, (a2, b2) => {\n if (a2.byteLength !== b2.byteLength) return false;\n const viewA = new Uint8Array(a2);\n const viewB = new Uint8Array(b2);\n for (let i = 0; i < viewA.length; i++) {\n if (viewA[i] !== viewB[i]) return false;\n }\n return true;\n }) ?? Object.keys({ ...a, ...b }).every((key) => deepEqual(a[key], b[key], strict));\n}\n__name(deepEqual, \"deepEqual\");\n\n// src/string.ts\nfunction capitalize(source) {\n return source.charAt(0).toUpperCase() + source.slice(1);\n}\n__name(capitalize, \"capitalize\");\nfunction uncapitalize(source) {\n return source.charAt(0).toLowerCase() + source.slice(1);\n}\n__name(uncapitalize, \"uncapitalize\");\nfunction camelCase(source) {\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase());\n}\n__name(camelCase, \"camelCase\");\nfunction tokenize(source, delimiters, delimiter) {\n const output = [];\n let state = 0 /* DELIM */;\n for (let i = 0; i < source.length; i++) {\n const code = source.charCodeAt(i);\n if (code >= 65 && code <= 90) {\n if (state === 1 /* UPPER */) {\n const next = source.charCodeAt(i + 1);\n if (next >= 97 && next <= 122) {\n output.push(delimiter);\n }\n output.push(code + 32);\n } else {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n output.push(code + 32);\n }\n state = 1 /* UPPER */;\n } else if (code >= 97 && code <= 122) {\n output.push(code);\n state = 2 /* LOWER */;\n } else if (delimiters.includes(code)) {\n if (state !== 0 /* DELIM */) {\n output.push(delimiter);\n }\n state = 0 /* DELIM */;\n } else {\n output.push(code);\n }\n }\n return String.fromCharCode(...output);\n}\n__name(tokenize, \"tokenize\");\nfunction paramCase(source) {\n return tokenize(source, [45, 95], 45);\n}\n__name(paramCase, \"paramCase\");\nfunction snakeCase(source) {\n return tokenize(source, [45, 95], 95);\n}\n__name(snakeCase, \"snakeCase\");\nvar camelize = camelCase;\nvar hyphenate = paramCase;\nfunction formatProperty(key) {\n if (typeof key !== \"string\") return `[${key.toString()}]`;\n return /^[a-z_$][\\w$]*$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n__name(formatProperty, \"formatProperty\");\nfunction trimSlash(source) {\n return source.replace(/\\/$/, \"\");\n}\n__name(trimSlash, \"trimSlash\");\nfunction sanitize(source) {\n if (!source.startsWith(\"/\")) source = \"/\" + source;\n return trimSlash(source);\n}\n__name(sanitize, \"sanitize\");\n\n// src/time.ts\nvar Time;\n((Time2) => {\n Time2.millisecond = 1;\n Time2.second = 1e3;\n Time2.minute = Time2.second * 60;\n Time2.hour = Time2.minute * 60;\n Time2.day = Time2.hour * 24;\n Time2.week = Time2.day * 7;\n let timezoneOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n function setTimezoneOffset(offset) {\n timezoneOffset = offset;\n }\n Time2.setTimezoneOffset = setTimezoneOffset;\n __name(setTimezoneOffset, \"setTimezoneOffset\");\n function getTimezoneOffset() {\n return timezoneOffset;\n }\n Time2.getTimezoneOffset = getTimezoneOffset;\n __name(getTimezoneOffset, \"getTimezoneOffset\");\n function getDateNumber(date = /* @__PURE__ */ new Date(), offset) {\n if (typeof date === \"number\") date = new Date(date);\n if (offset === void 0) offset = timezoneOffset;\n return Math.floor((date.valueOf() / Time2.minute - offset) / 1440);\n }\n Time2.getDateNumber = getDateNumber;\n __name(getDateNumber, \"getDateNumber\");\n function fromDateNumber(value, offset) {\n const date = new Date(value * Time2.day);\n if (offset === void 0) offset = timezoneOffset;\n return new Date(+date + offset * Time2.minute);\n }\n Time2.fromDateNumber = fromDateNumber;\n __name(fromDateNumber, \"fromDateNumber\");\n const numeric = /\\d+(?:\\.\\d+)?/.source;\n const timeRegExp = new RegExp(`^${[\n \"w(?:eek(?:s)?)?\",\n \"d(?:ay(?:s)?)?\",\n \"h(?:our(?:s)?)?\",\n \"m(?:in(?:ute)?(?:s)?)?\",\n \"s(?:ec(?:ond)?(?:s)?)?\"\n ].map((unit) => `(${numeric}${unit})?`).join(\"\")}$`);\n function parseTime(source) {\n const capture = timeRegExp.exec(source);\n if (!capture) return 0;\n return (parseFloat(capture[1]) * Time2.week || 0) + (parseFloat(capture[2]) * Time2.day || 0) + (parseFloat(capture[3]) * Time2.hour || 0) + (parseFloat(capture[4]) * Time2.minute || 0) + (parseFloat(capture[5]) * Time2.second || 0);\n }\n Time2.parseTime = parseTime;\n __name(parseTime, \"parseTime\");\n function parseDate(date) {\n const parsed = parseTime(date);\n if (parsed) {\n date = Date.now() + parsed;\n } else if (/^\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).toLocaleDateString()}-${date}`;\n } else if (/^\\d{1,2}-\\d{1,2}-\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) {\n date = `${(/* @__PURE__ */ new Date()).getFullYear()}-${date}`;\n }\n return date ? new Date(date) : /* @__PURE__ */ new Date();\n }\n Time2.parseDate = parseDate;\n __name(parseDate, \"parseDate\");\n function format(ms) {\n const abs = Math.abs(ms);\n if (abs >= Time2.day - Time2.hour / 2) {\n return Math.round(ms / Time2.day) + \"d\";\n } else if (abs >= Time2.hour - Time2.minute / 2) {\n return Math.round(ms / Time2.hour) + \"h\";\n } else if (abs >= Time2.minute - Time2.second / 2) {\n return Math.round(ms / Time2.minute) + \"m\";\n } else if (abs >= Time2.second) {\n return Math.round(ms / Time2.second) + \"s\";\n }\n return ms + \"ms\";\n }\n Time2.format = format;\n __name(format, \"format\");\n function toDigits(source, length = 2) {\n return source.toString().padStart(length, \"0\");\n }\n Time2.toDigits = toDigits;\n __name(toDigits, \"toDigits\");\n function template(template2, time = /* @__PURE__ */ new Date()) {\n return template2.replace(\"yyyy\", time.getFullYear().toString()).replace(\"yy\", time.getFullYear().toString().slice(2)).replace(\"MM\", toDigits(time.getMonth() + 1)).replace(\"dd\", toDigits(time.getDate())).replace(\"hh\", toDigits(time.getHours())).replace(\"mm\", toDigits(time.getMinutes())).replace(\"ss\", toDigits(time.getSeconds())).replace(\"SSS\", toDigits(time.getMilliseconds(), 3));\n }\n Time2.template = template;\n __name(template, \"template\");\n})(Time || (Time = {}));\nexport {\n Binary,\n Time,\n arrayBufferToBase64,\n arrayBufferToHex,\n base64ToArrayBuffer,\n camelCase,\n camelize,\n capitalize,\n clone,\n contain,\n deduplicate,\n deepEqual,\n defineProperty,\n difference,\n filterKeys,\n formatProperty,\n hexToArrayBuffer,\n hyphenate,\n intersection,\n is,\n isNonNullable,\n isNullable,\n isPlainObject,\n makeArray,\n mapValues,\n noop,\n omit,\n paramCase,\n pick,\n remove,\n sanitize,\n snakeCase,\n trimSlash,\n uncapitalize,\n union,\n mapValues as valueMap\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/context.ts\nimport { defineProperty as defineProperty6 } from \"cosmokit\";\n\n// src/events.ts\nimport { defineProperty as defineProperty3, remove } from \"cosmokit\";\n\n// src/reflect.ts\nimport { defineProperty as defineProperty2, isNullable } from \"cosmokit\";\n\n// src/utils.ts\nimport { defineProperty } from \"cosmokit\";\nvar symbols = {\n // internal symbols\n shadow: Symbol.for(\"cordis.shadow\"),\n receiver: Symbol.for(\"cordis.receiver\"),\n original: Symbol.for(\"cordis.original\"),\n // context symbols\n store: Symbol.for(\"cordis.store\"),\n events: Symbol.for(\"cordis.events\"),\n static: Symbol.for(\"cordis.static\"),\n filter: Symbol.for(\"cordis.filter\"),\n expose: Symbol.for(\"cordis.expose\"),\n isolate: Symbol.for(\"cordis.isolate\"),\n internal: Symbol.for(\"cordis.internal\"),\n intercept: Symbol.for(\"cordis.intercept\"),\n // service symbols\n setup: Symbol.for(\"cordis.setup\"),\n invoke: Symbol.for(\"cordis.invoke\"),\n extend: Symbol.for(\"cordis.extend\"),\n tracker: Symbol.for(\"cordis.tracker\"),\n provide: Symbol.for(\"cordis.provide\"),\n immediate: Symbol.for(\"cordis.immediate\")\n};\nvar GeneratorFunction = function* () {\n}.constructor;\nvar AsyncGeneratorFunction = async function* () {\n}.constructor;\nfunction isConstructor(func) {\n if (!func.prototype) return false;\n if (func instanceof GeneratorFunction) return false;\n if (AsyncGeneratorFunction !== Function && func instanceof AsyncGeneratorFunction) return false;\n return true;\n}\n__name(isConstructor, \"isConstructor\");\nfunction resolveConfig(plugin, config) {\n const schema = plugin[\"Config\"] || plugin[\"schema\"];\n if (schema && plugin[\"schema\"] !== false) config = schema(config);\n return config ?? {};\n}\n__name(resolveConfig, \"resolveConfig\");\nfunction isUnproxyable(value) {\n return [Map, Set, Date, Promise].some((constructor) => value instanceof constructor);\n}\n__name(isUnproxyable, \"isUnproxyable\");\nfunction joinPrototype(proto1, proto2) {\n if (proto1 === Object.prototype) return proto2;\n const result = Object.create(joinPrototype(Object.getPrototypeOf(proto1), proto2));\n for (const key of Reflect.ownKeys(proto1)) {\n Object.defineProperty(result, key, Object.getOwnPropertyDescriptor(proto1, key));\n }\n return result;\n}\n__name(joinPrototype, \"joinPrototype\");\nfunction isObject(value) {\n return value && (typeof value === \"object\" || typeof value === \"function\");\n}\n__name(isObject, \"isObject\");\nfunction getTraceable(ctx, value, noTrap) {\n if (!isObject(value)) return value;\n if (Object.hasOwn(value, symbols.shadow)) {\n return Object.getPrototypeOf(value);\n }\n const tracker = value[symbols.tracker];\n if (!tracker) return value;\n return createTraceable(ctx, value, tracker, noTrap);\n}\n__name(getTraceable, \"getTraceable\");\nfunction withProps(target, props) {\n if (!props) return target;\n return new Proxy(target, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.get(props, prop, receiver);\n return Reflect.get(target2, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target2, prop, value, receiver) => {\n if (prop in props && prop !== \"constructor\") return Reflect.set(props, prop, value, receiver);\n return Reflect.set(target2, prop, value, receiver);\n }, \"set\")\n });\n}\n__name(withProps, \"withProps\");\nfunction withProp(target, prop, value) {\n return withProps(target, Object.defineProperty(/* @__PURE__ */ Object.create(null), prop, {\n value,\n writable: false\n }));\n}\n__name(withProp, \"withProp\");\nfunction createShadow(ctx, target, property, receiver) {\n if (!property) return receiver;\n const origin = Reflect.getOwnPropertyDescriptor(target, property)?.value;\n if (!origin) return receiver;\n return withProp(receiver, property, ctx.extend({ [symbols.shadow]: origin }));\n}\n__name(createShadow, \"createShadow\");\nfunction createShadowMethod(ctx, value, outer, shadow) {\n return new Proxy(value, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n if (thisArg === outer) thisArg = shadow;\n args = args.map((arg) => {\n if (typeof arg !== \"function\" || arg[symbols.original]) return arg;\n return new Proxy(arg, {\n get: /* @__PURE__ */ __name((target2, prop, receiver) => {\n if (prop === symbols.original) return target2;\n const value2 = Reflect.get(target2, prop, receiver);\n if (prop === \"toString\" && value2 === Function.prototype.toString) {\n return function(...args2) {\n return Reflect.apply(value2, this === receiver ? target2 : this, args2);\n };\n }\n return value2;\n }, \"get\"),\n apply: /* @__PURE__ */ __name((target2, thisArg2, args2) => {\n return Reflect.apply(target2, getTraceable(ctx, thisArg2), args2.map((arg2) => getTraceable(ctx, arg2)));\n }, \"apply\"),\n construct: /* @__PURE__ */ __name((target2, args2, newTarget) => {\n return Reflect.construct(target2, args2.map((arg2) => getTraceable(ctx, arg2)), newTarget);\n }, \"construct\")\n });\n });\n return getTraceable(ctx, Reflect.apply(target, thisArg, args));\n }, \"apply\")\n });\n}\n__name(createShadowMethod, \"createShadowMethod\");\nfunction createTraceable(ctx, value, tracker, noTrap) {\n if (ctx[symbols.shadow]) {\n ctx = Object.getPrototypeOf(ctx);\n }\n const proxy = new Proxy(value, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n if (prop === symbols.original) return target;\n if (prop === tracker.property) return ctx;\n if (typeof prop === \"symbol\") {\n return Reflect.get(target, prop, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.get(ctx, `${tracker.associate}.${prop}`, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n const innerValue = Reflect.get(target, prop, shadow);\n const innerTracker = innerValue?.[symbols.tracker];\n if (innerTracker) {\n return createTraceable(ctx, innerValue, innerTracker);\n } else if (!noTrap && typeof innerValue === \"function\") {\n return createShadowMethod(ctx, innerValue, receiver, shadow);\n } else {\n return innerValue;\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value2, receiver) => {\n if (prop === symbols.original) return false;\n if (prop === tracker.property) return false;\n if (typeof prop === \"symbol\") {\n return Reflect.set(target, prop, value2, receiver);\n }\n if (tracker.associate && ctx[symbols.internal][`${tracker.associate}.${prop}`]) {\n return Reflect.set(ctx, `${tracker.associate}.${prop}`, value2, withProp(ctx, symbols.receiver, receiver));\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver);\n return Reflect.set(target, prop, value2, shadow);\n }, \"set\"),\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return applyTraceable(proxy, target, thisArg, args);\n }, \"apply\")\n });\n return proxy;\n}\n__name(createTraceable, \"createTraceable\");\nfunction applyTraceable(proxy, value, thisArg, args) {\n if (!value[symbols.invoke]) return Reflect.apply(value, thisArg, args);\n return value[symbols.invoke].apply(proxy, args);\n}\n__name(applyTraceable, \"applyTraceable\");\nfunction createCallable(name, proto, tracker) {\n const self = /* @__PURE__ */ __name(function(...args) {\n const proxy = createTraceable(self[\"ctx\"], self, tracker);\n return applyTraceable(proxy, self, this, args);\n }, \"self\");\n defineProperty(self, \"name\", name);\n return Object.setPrototypeOf(self, proto);\n}\n__name(createCallable, \"createCallable\");\n\n// src/reflect.ts\nvar ReflectService = class _ReflectService {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty2(this, symbols.tracker, {\n associate: \"reflect\",\n property: \"ctx\"\n });\n this._mixin(\"reflect\", [\"get\", \"set\", \"provide\", \"accessor\", \"mixin\", \"alias\"]);\n this._mixin(\"scope\", [\"config\", \"runtime\", \"effect\", \"collect\", \"accept\", \"decline\"]);\n this._mixin(\"registry\", [\"using\", \"inject\", \"plugin\"]);\n this._mixin(\"lifecycle\", [\"on\", \"once\", \"parallel\", \"emit\", \"serial\", \"bail\", \"start\", \"stop\"]);\n }\n static {\n __name(this, \"ReflectService\");\n }\n static resolveInject(ctx, name) {\n let internal = ctx[symbols.internal][name];\n while (internal?.type === \"alias\") {\n name = internal.name;\n internal = ctx[symbols.internal][name];\n }\n return [name, internal];\n }\n static checkInject(ctx, name, error) {\n ctx = ctx[symbols.shadow] ?? ctx;\n if ([\"prototype\", \"then\", \"registry\", \"lifecycle\"].includes(name)) return;\n if (name[0] === \"$\" || name[0] === \"_\") return;\n if (!ctx.runtime.plugin) return;\n if (ctx.bail(ctx, \"internal/inject\", name)) return;\n const lines = error.stack.split(\"\\n\");\n lines.splice(1, 1);\n error.stack = lines.join(\"\\n\");\n ctx.emit(ctx, \"internal/warning\", error);\n }\n static handler = {\n get: /* @__PURE__ */ __name((target, prop, ctx) => {\n if (typeof prop !== \"string\") return Reflect.get(target, prop, ctx);\n if (Reflect.has(target, prop)) {\n return getTraceable(ctx, Reflect.get(target, prop, ctx), true);\n }\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n const error = new Error(`property ${name} is not registered, declare it as \\`inject\\` to suppress this warning`);\n if (!internal) {\n _ReflectService.checkInject(ctx, name, error);\n return Reflect.get(target, name, ctx);\n } else if (internal.type === \"accessor\") {\n return internal.get.call(ctx, ctx[symbols.receiver]);\n } else {\n if (!internal.builtin) _ReflectService.checkInject(ctx, name, error);\n return ctx.reflect.get(name);\n }\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value, ctx) => {\n if (typeof prop !== \"string\") return Reflect.set(target, prop, value, ctx);\n const [name, internal] = _ReflectService.resolveInject(target, prop);\n if (!internal) {\n return Reflect.set(target, name, value, ctx);\n }\n if (internal.type === \"accessor\") {\n if (!internal.set) return false;\n return internal.set.call(ctx, value, ctx[symbols.receiver]);\n } else {\n ctx.reflect.set(name, value);\n return true;\n }\n }, \"set\"),\n has: /* @__PURE__ */ __name((target, prop) => {\n if (typeof prop !== \"string\") return Reflect.has(target, prop);\n if (Reflect.has(target, prop)) return true;\n const [, internal] = _ReflectService.resolveInject(target, prop);\n return !!internal;\n }, \"has\")\n };\n get(name) {\n const internal = this.ctx[symbols.internal][name];\n if (internal?.type !== \"service\") return;\n const key = this.ctx[symbols.isolate][name];\n const value = this.ctx[symbols.store][key]?.value;\n return getTraceable(this.ctx, value);\n }\n set(name, value) {\n this.provide(name);\n const key = this.ctx[symbols.isolate][name];\n const oldValue = this.ctx[symbols.store][key]?.value;\n value ??= void 0;\n let dispose = /* @__PURE__ */ __name(() => {\n }, \"dispose\");\n if (oldValue === value) return dispose;\n if (!isNullable(value) && !isNullable(oldValue)) {\n throw new Error(`service ${name} has been registered`);\n }\n const ctx = this.ctx;\n if (!isNullable(value)) {\n dispose = ctx.effect(() => () => {\n ctx.set(name, void 0);\n });\n }\n if (isUnproxyable(value)) {\n ctx.emit(ctx, \"internal/warning\", new Error(`service ${name} is an unproxyable object, which may lead to unexpected behavior`));\n }\n const self = Object.create(ctx);\n self[symbols.filter] = (ctx2) => {\n return ctx[symbols.isolate][name] === ctx2[symbols.isolate][name];\n };\n ctx.emit(self, \"internal/before-service\", name, value);\n ctx[symbols.store][key] = { value, source: ctx };\n ctx.emit(self, \"internal/service\", name, oldValue);\n return dispose;\n }\n provide(name, value, builtin) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n const key = Symbol(name);\n internal[name] = { type: \"service\", builtin };\n this.ctx.root[symbols.isolate][name] = key;\n if (!isObject(value)) return;\n this.ctx[symbols.store][key] = { value, source: null };\n defineProperty2(value, symbols.tracker, {\n associate: name,\n property: \"ctx\"\n });\n }\n _accessor(name, options) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return () => {\n };\n internal[name] = { type: \"accessor\", ...options };\n return () => delete this.ctx.root[symbols.isolate][name];\n }\n accessor(name, options) {\n this.ctx.scope.effect(() => {\n return this._accessor(name, options);\n });\n }\n alias(name, aliases) {\n const internal = this.ctx.root[symbols.internal];\n if (name in internal) return;\n for (const key of aliases) {\n internal[key] ||= { type: \"alias\", name };\n }\n }\n _mixin(source, mixins) {\n const entries = Array.isArray(mixins) ? mixins.map((key) => [key, key]) : Object.entries(mixins);\n const getTarget = typeof source === \"string\" ? (ctx) => ctx[source] : () => source;\n const disposables = entries.map(([key, value]) => {\n return this._accessor(value, {\n get(receiver) {\n const service = getTarget(this);\n if (isNullable(service)) return service;\n const mixin = receiver ? withProps(receiver, service) : service;\n const value2 = Reflect.get(service, key, mixin);\n if (typeof value2 !== \"function\") return value2;\n return value2.bind(mixin ?? service);\n },\n set(value2, receiver) {\n const service = getTarget(this);\n const mixin = receiver ? withProps(receiver, service) : service;\n return Reflect.set(service, key, value2, mixin);\n }\n });\n });\n return () => disposables.forEach((dispose) => dispose());\n }\n mixin(source, mixins) {\n this.ctx.scope.effect(() => {\n return this._mixin(source, mixins);\n });\n }\n trace(value) {\n return getTraceable(this.ctx, value);\n }\n bind(callback) {\n return new Proxy(callback, {\n apply: /* @__PURE__ */ __name((target, thisArg, args) => {\n return target.apply(this.trace(thisArg), args.map((arg) => this.trace(arg)));\n }, \"apply\")\n });\n }\n};\nvar reflect_default = ReflectService;\n\n// src/events.ts\nfunction isBailed(value) {\n return value !== null && value !== false && value !== void 0;\n}\n__name(isBailed, \"isBailed\");\nvar Lifecycle = class {\n constructor(ctx) {\n this.ctx = ctx;\n defineProperty3(this, symbols.tracker, {\n associate: \"lifecycle\",\n property: \"ctx\"\n });\n defineProperty3(this.on(\"internal/listener\", function(name, listener, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n if (name === \"ready\") {\n if (!this.lifecycle.isActive) return;\n this.scope.ensure(async () => listener());\n return () => false;\n } else if (name === \"dispose\") {\n this.scope.disposables[method](listener);\n defineProperty3(listener, \"name\", \"event <dispose>\");\n return () => remove(this.scope.disposables, listener);\n } else if (name === \"fork\") {\n this.scope.runtime.forkables[method](listener);\n return this.scope.collect(\"event <fork>\", () => remove(this.scope.runtime.forkables, listener));\n }\n }), Context.static, ctx.scope);\n for (const level of [\"info\", \"error\", \"warning\"]) {\n defineProperty3(this.on(`internal/${level}`, (format, ...param) => {\n if (this._hooks[`internal/${level}`].length > 1) return;\n console.info(format, ...param);\n }), Context.static, ctx.scope);\n }\n defineProperty3(this.on(\"internal/before-service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.updateStatus();\n scope.reset();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n defineProperty3(this.on(\"internal/service\", function(name) {\n for (const runtime of this.registry.values()) {\n if (!runtime.inject[name]?.required) continue;\n const scopes = runtime.isReusable ? runtime.children : [runtime];\n for (const scope of scopes) {\n if (!this[symbols.filter](scope.ctx)) continue;\n scope.start();\n }\n }\n }, { global: true }), Context.static, ctx.scope);\n const checkInject = /* @__PURE__ */ __name((scope, name) => {\n if (!scope.runtime.plugin) return false;\n for (const key in scope.runtime.inject) {\n if (name === reflect_default.resolveInject(scope.ctx, key)[0]) return true;\n }\n return checkInject(scope.parent.scope, name);\n }, \"checkInject\");\n defineProperty3(this.on(\"internal/inject\", function(name) {\n return checkInject(this.scope, name);\n }, { global: true }), Context.static, ctx.scope);\n }\n static {\n __name(this, \"Lifecycle\");\n }\n isActive = false;\n _tasks = /* @__PURE__ */ new Set();\n _hooks = {};\n async flush() {\n while (this._tasks.size) {\n await Promise.all(Array.from(this._tasks));\n }\n }\n filterHooks(hooks, thisArg) {\n thisArg = getTraceable(this.ctx, thisArg);\n return hooks.slice().filter((hook) => {\n const filter = thisArg?.[Context.filter];\n return hook.global || !filter || filter.call(thisArg, hook.ctx);\n });\n }\n *dispatch(type, args) {\n const thisArg = typeof args[0] === \"object\" || typeof args[0] === \"function\" ? args.shift() : null;\n const name = args.shift();\n if (name !== \"internal/event\") {\n this.emit(\"internal/event\", type, name, args, thisArg);\n }\n for (const hook of this.filterHooks(this._hooks[name] || [], thisArg)) {\n yield hook.callback.apply(thisArg, args);\n }\n }\n async parallel(...args) {\n await Promise.all(this.dispatch(\"emit\", args));\n }\n emit(...args) {\n Array.from(this.dispatch(\"emit\", args));\n }\n async serial(...args) {\n for await (const result of this.dispatch(\"serial\", args)) {\n if (isBailed(result)) return result;\n }\n }\n bail(...args) {\n for (const result of this.dispatch(\"bail\", args)) {\n if (isBailed(result)) return result;\n }\n }\n register(label, hooks, callback, options) {\n const method = options.prepend ? \"unshift\" : \"push\";\n hooks[method]({ ctx: this.ctx, callback, ...options });\n return this.ctx.state.collect(label, () => this.unregister(hooks, callback));\n }\n unregister(hooks, callback) {\n const index = hooks.findIndex((hook) => hook.callback === callback);\n if (index >= 0) {\n hooks.splice(index, 1);\n return true;\n }\n }\n on(name, listener, options) {\n if (typeof options !== \"object\") {\n options = { prepend: options };\n }\n this.ctx.scope.assertActive();\n listener = this.ctx.reflect.bind(listener);\n const result = this.bail(this.ctx, \"internal/listener\", name, listener, options);\n if (result) return result;\n const hooks = this._hooks[name] ||= [];\n const label = typeof name === \"string\" ? `event <${name}>` : \"event (Symbol)\";\n return this.register(label, hooks, listener, options);\n }\n once(name, listener, options) {\n const dispose = this.on(name, function(...args) {\n dispose();\n return listener.apply(this, args);\n }, options);\n return dispose;\n }\n async start() {\n this.isActive = true;\n const hooks = this._hooks.ready || [];\n while (hooks.length) {\n const { ctx, callback } = hooks.shift();\n ctx.scope.ensure(async () => callback());\n }\n await this.flush();\n }\n async stop() {\n this.isActive = false;\n this.ctx.scope.reset();\n }\n};\nvar events_default = Lifecycle;\n\n// src/registry.ts\nimport { defineProperty as defineProperty5 } from \"cosmokit\";\n\n// src/scope.ts\nimport { deepEqual, defineProperty as defineProperty4, isNullable as isNullable2, remove as remove2 } from \"cosmokit\";\nvar ScopeStatus = /* @__PURE__ */ ((ScopeStatus2) => {\n ScopeStatus2[ScopeStatus2[\"PENDING\"] = 0] = \"PENDING\";\n ScopeStatus2[ScopeStatus2[\"LOADING\"] = 1] = \"LOADING\";\n ScopeStatus2[ScopeStatus2[\"ACTIVE\"] = 2] = \"ACTIVE\";\n ScopeStatus2[ScopeStatus2[\"FAILED\"] = 3] = \"FAILED\";\n ScopeStatus2[ScopeStatus2[\"DISPOSED\"] = 4] = \"DISPOSED\";\n return ScopeStatus2;\n})(ScopeStatus || {});\nvar CordisError = class _CordisError extends Error {\n constructor(code, message) {\n super(message ?? _CordisError.Code[code]);\n this.code = code;\n }\n static {\n __name(this, \"CordisError\");\n }\n};\n((CordisError2) => {\n CordisError2.Code = {\n INACTIVE_EFFECT: \"cannot create effect on inactive context\"\n };\n})(CordisError || (CordisError = {}));\nvar EffectScope = class {\n constructor(parent, config) {\n this.parent = parent;\n this.config = config;\n this.uid = parent.registry ? parent.registry.counter : 0;\n this.ctx = this.context = parent.extend({ scope: this });\n this.proxy = new Proxy({}, {\n get: /* @__PURE__ */ __name((target, key) => Reflect.get(this.config, key), \"get\")\n });\n }\n static {\n __name(this, \"EffectScope\");\n }\n uid;\n ctx;\n disposables = [];\n error;\n status = 0 /* PENDING */;\n isActive = false;\n // Same as `this.ctx`, but with a more specific type.\n context;\n proxy;\n acceptors = [];\n tasks = /* @__PURE__ */ new Set();\n hasError = false;\n get _config() {\n return this.runtime.isReactive ? this.proxy : this.config;\n }\n assertActive() {\n if (this.uid !== null || this.isActive) return;\n throw new CordisError(\"INACTIVE_EFFECT\");\n }\n effect(callback, config) {\n this.assertActive();\n const result = isConstructor(callback) ? new callback(this.ctx, config) : callback(this.ctx, config);\n let disposed = false;\n const original = typeof result === \"function\" ? result : result.dispose.bind(result);\n const wrapped = /* @__PURE__ */ __name((...args) => {\n if (disposed) return;\n disposed = true;\n remove2(this.disposables, wrapped);\n return original(...args);\n }, \"wrapped\");\n this.disposables.push(wrapped);\n if (typeof result === \"function\") return wrapped;\n result.dispose = wrapped;\n return result;\n }\n collect(label, callback) {\n const dispose = defineProperty4(() => {\n remove2(this.disposables, dispose);\n return callback();\n }, \"name\", label);\n this.disposables.push(dispose);\n return dispose;\n }\n restart() {\n this.reset();\n this.error = null;\n this.hasError = false;\n this.status = 0 /* PENDING */;\n this.start();\n }\n _getStatus() {\n if (this.uid === null) return 4 /* DISPOSED */;\n if (this.hasError) return 3 /* FAILED */;\n if (this.tasks.size) return 1 /* LOADING */;\n if (this.ready) return 2 /* ACTIVE */;\n return 0 /* PENDING */;\n }\n updateStatus(callback) {\n const oldValue = this.status;\n callback?.();\n this.status = this._getStatus();\n if (oldValue !== this.status) {\n this.context.emit(\"internal/status\", this, oldValue);\n }\n }\n ensure(callback) {\n const task = callback().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n this.cancel(reason);\n }).finally(() => {\n this.updateStatus(() => this.tasks.delete(task));\n this.context.events._tasks.delete(task);\n });\n this.updateStatus(() => this.tasks.add(task));\n this.context.events._tasks.add(task);\n }\n cancel(reason) {\n this.error = reason;\n this.updateStatus(() => this.hasError = true);\n this.reset();\n }\n get ready() {\n return Object.entries(this.runtime.inject).every(([name, inject]) => {\n return !inject.required || !isNullable2(this.ctx.get(name));\n });\n }\n reset() {\n this.isActive = false;\n this.disposables = this.disposables.splice(0).filter((dispose) => {\n if (this.uid !== null && dispose[Context.static] === this) return true;\n (async () => dispose())().catch((reason) => {\n this.context.emit(this.ctx, \"internal/error\", reason);\n });\n });\n }\n init(error) {\n if (!this.config) {\n this.cancel(error);\n } else {\n this.start();\n }\n }\n start() {\n if (!this.ready || this.isActive || this.uid === null) return true;\n this.isActive = true;\n this.updateStatus(() => this.hasError = false);\n }\n accept(...args) {\n const keys = Array.isArray(args[0]) ? args.shift() : null;\n const acceptor = { keys, callback: args[0], ...args[1] };\n return this.effect(() => {\n this.acceptors.push(acceptor);\n if (acceptor.immediate) acceptor.callback?.(this.config);\n return () => remove2(this.acceptors, acceptor);\n });\n }\n decline(keys) {\n return this.accept(keys, () => true);\n }\n checkUpdate(resolved, forced) {\n if (forced || !this.config) return [true, true];\n if (forced === false) return [false, false];\n const modified = /* @__PURE__ */ Object.create(null);\n const checkPropertyUpdate = /* @__PURE__ */ __name((key) => {\n const result = modified[key] ??= !deepEqual(this.config[key], resolved[key]);\n hasUpdate ||= result;\n return result;\n }, \"checkPropertyUpdate\");\n const ignored = /* @__PURE__ */ new Set();\n let hasUpdate = false, shouldRestart = false;\n let fallback = this.runtime.isReactive || null;\n for (const { keys, callback, passive } of this.acceptors) {\n if (!keys) {\n fallback ||= !passive;\n } else if (passive) {\n keys?.forEach((key) => ignored.add(key));\n } else {\n let hasUpdate2 = false;\n for (const key of keys) {\n hasUpdate2 ||= checkPropertyUpdate(key);\n }\n if (!hasUpdate2) continue;\n }\n const result = callback?.(resolved);\n if (result) shouldRestart = true;\n }\n for (const key in { ...this.config, ...resolved }) {\n if (fallback === false) continue;\n if (!(key in modified) && !ignored.has(key)) {\n const hasUpdate2 = checkPropertyUpdate(key);\n if (fallback === null) shouldRestart ||= hasUpdate2;\n }\n }\n return [hasUpdate, shouldRestart];\n }\n};\nvar ForkScope = class extends EffectScope {\n constructor(parent, runtime, config, error) {\n super(parent, config);\n this.runtime = runtime;\n this.dispose = defineProperty4(parent.scope.collect(`fork <${parent.runtime.name}>`, () => {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/fork\", this);\n const result = remove2(runtime.disposables, this.dispose);\n if (remove2(runtime.children, this) && !runtime.children.length) {\n parent.registry.delete(runtime.plugin);\n }\n return result;\n }), Context.static, runtime);\n runtime.children.push(this);\n runtime.disposables.push(this.dispose);\n this.context.emit(\"internal/fork\", this);\n this.init(error);\n }\n static {\n __name(this, \"ForkScope\");\n }\n dispose;\n start() {\n if (super.start()) return true;\n for (const fork of this.runtime.forkables) {\n this.ensure(async () => fork(this.context, this._config));\n }\n }\n update(config, forced) {\n const oldConfig = this.config;\n const state = this.runtime.isForkable ? this : this.runtime;\n if (state.config !== oldConfig) return;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = state.checkUpdate(resolved, forced);\n this.context.emit(\"internal/before-update\", this, config);\n this.config = resolved;\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", this, oldConfig);\n }\n if (shouldRestart) state.restart();\n }\n};\nvar MainScope = class extends EffectScope {\n constructor(ctx, plugin, config, error) {\n super(ctx, config);\n this.plugin = plugin;\n if (!plugin) {\n this.name = \"root\";\n this.isActive = true;\n } else {\n this.setup();\n this.init(error);\n }\n }\n static {\n __name(this, \"MainScope\");\n }\n value;\n runtime = this;\n schema;\n name;\n inject = /* @__PURE__ */ Object.create(null);\n forkables = [];\n children = [];\n isReusable = false;\n isReactive = false;\n get isForkable() {\n return this.forkables.length > 0;\n }\n fork(parent, config, error) {\n return new ForkScope(parent, this, config, error);\n }\n dispose() {\n this.uid = null;\n this.reset();\n this.context.emit(\"internal/runtime\", this);\n return true;\n }\n setup() {\n const { name } = this.plugin;\n if (name && name !== \"apply\") this.name = name;\n this.schema = this.plugin[\"Config\"] || this.plugin[\"schema\"];\n this.inject = Inject.resolve(this.plugin[\"using\"] || this.plugin[\"inject\"]);\n this.isReusable = this.plugin[\"reusable\"];\n this.isReactive = this.plugin[\"reactive\"];\n this.context.emit(\"internal/runtime\", this);\n if (this.isReusable) {\n this.forkables.push(this.apply);\n }\n }\n apply = /* @__PURE__ */ __name((context, config) => {\n if (typeof this.plugin !== \"function\") {\n return this.plugin.apply(context, config);\n } else if (isConstructor(this.plugin)) {\n const instance = new this.plugin(context, config);\n const name = instance[Context.expose];\n if (name) {\n context.set(name, instance);\n }\n if (instance[\"fork\"]) {\n this.forkables.push(instance[\"fork\"].bind(instance));\n }\n return instance;\n } else {\n return this.plugin(context, config);\n }\n }, \"apply\");\n reset() {\n super.reset();\n for (const fork of this.children) {\n fork.reset();\n }\n }\n start() {\n if (super.start()) return true;\n if (!this.isReusable && this.plugin) {\n this.ensure(async () => this.value = this.apply(this.ctx, this._config));\n }\n for (const fork of this.children) {\n fork.start();\n }\n }\n update(config, forced) {\n if (this.isForkable) {\n const warning = new Error(`attempting to update forkable plugin \"${this.plugin.name}\", which may lead to unexpected behavior`);\n this.context.emit(this.ctx, \"internal/warning\", warning);\n }\n const oldConfig = this.config;\n let resolved;\n try {\n resolved = resolveConfig(this.runtime.plugin || this.context.constructor, config);\n } catch (error) {\n this.context.emit(\"internal/error\", error);\n return this.cancel(error);\n }\n const [hasUpdate, shouldRestart] = this.checkUpdate(resolved, forced);\n const state = this.children.find((fork) => fork.config === oldConfig);\n this.config = resolved;\n if (state) {\n this.context.emit(\"internal/before-update\", state, config);\n state.config = resolved;\n if (hasUpdate) {\n this.context.emit(\"internal/update\", state, oldConfig);\n }\n }\n if (shouldRestart) this.restart();\n }\n};\n\n// src/registry.ts\nfunction isApplicable(object) {\n return object && typeof object === \"object\" && typeof object.apply === \"function\";\n}\n__name(isApplicable, \"isApplicable\");\nfunction Inject(inject) {\n return function(value, ctx) {\n if (ctx.kind === \"class\") {\n value.inject = inject;\n } else if (ctx.kind === \"method\") {\n ctx.addInitializer(function() {\n const property = this[symbols.tracker]?.property;\n if (!property) throw new Error(\"missing context tracker\");\n this[property].inject(inject, (ctx2) => {\n value.call(withProps(this, { [property]: ctx2 }));\n });\n });\n } else {\n throw new Error(\"@Inject can only be used on class or class methods\");\n }\n };\n}\n__name(Inject, \"Inject\");\n((Inject2) => {\n function resolve(inject) {\n if (!inject) return {};\n if (Array.isArray(inject)) {\n return Object.fromEntries(inject.map((name) => [name, { required: true }]));\n }\n const { required, optional, ...rest } = inject;\n if (Array.isArray(required)) {\n Object.assign(rest, Object.fromEntries(required.map((name) => [name, { required: true }])));\n }\n if (Array.isArray(optional)) {\n Object.assign(rest, Object.fromEntries(optional.map((name) => [name, { required: false }])));\n }\n return rest;\n }\n Inject2.resolve = resolve;\n __name(resolve, \"resolve\");\n})(Inject || (Inject = {}));\nvar Registry = class {\n constructor(ctx, config) {\n this.ctx = ctx;\n defineProperty5(this, symbols.tracker, {\n associate: \"registry\",\n property: \"ctx\"\n });\n this.context = ctx;\n const runtime = new MainScope(ctx, null, config);\n ctx.scope = runtime;\n runtime.ctx = ctx;\n this.set(null, runtime);\n }\n static {\n __name(this, \"Registry\");\n }\n _counter = 0;\n _internal = /* @__PURE__ */ new Map();\n context;\n get counter() {\n return ++this._counter;\n }\n get size() {\n return this._internal.size;\n }\n resolve(plugin, assert = false) {\n if (plugin === null) return plugin;\n if (typeof plugin === \"function\") return plugin;\n if (isApplicable(plugin)) return plugin.apply;\n if (assert) throw new Error('invalid plugin, expect function or object with an \"apply\" method, received ' + typeof plugin);\n }\n get(plugin) {\n const key = this.resolve(plugin);\n return key && this._internal.get(key);\n }\n has(plugin) {\n const key = this.resolve(plugin);\n return !!key && this._internal.has(key);\n }\n set(plugin, state) {\n const key = this.resolve(plugin);\n this._internal.set(key, state);\n }\n delete(plugin) {\n const key = this.resolve(plugin);\n const runtime = key && this._internal.get(key);\n if (!runtime) return;\n this._internal.delete(key);\n runtime.dispose();\n return runtime;\n }\n keys() {\n return this._internal.keys();\n }\n values() {\n return this._internal.values();\n }\n entries() {\n return this._internal.entries();\n }\n forEach(callback) {\n return this._internal.forEach(callback);\n }\n using(inject, callback) {\n return this.inject(inject, callback);\n }\n inject(inject, callback) {\n return this.plugin({ inject, apply: callback, name: callback.name });\n }\n plugin(plugin, config, error) {\n this.resolve(plugin, true);\n this.ctx.scope.assertActive();\n if (!error) {\n try {\n config = resolveConfig(plugin, config);\n } catch (reason) {\n this.context.emit(this.ctx, \"internal/error\", reason);\n error = reason;\n config = null;\n }\n }\n let runtime = this.get(plugin);\n if (runtime) {\n if (!runtime.isForkable) {\n this.context.emit(this.ctx, \"internal/warning\", new Error(`duplicate plugin detected: ${plugin.name}`));\n }\n return runtime.fork(this.ctx, config, error);\n }\n runtime = new MainScope(this.ctx, plugin, config, error);\n this.set(plugin, runtime);\n return runtime.fork(this.ctx, config, error);\n }\n};\nvar registry_default = Registry;\n\n// src/context.ts\nvar Context = class _Context {\n static {\n __name(this, \"Context\");\n }\n static store = symbols.store;\n static events = symbols.events;\n static static = symbols.static;\n static filter = symbols.filter;\n static expose = symbols.expose;\n static isolate = symbols.isolate;\n static internal = symbols.internal;\n static intercept = symbols.intercept;\n static origin = \"ctx\";\n static current = \"ctx\";\n static is(value) {\n return !!value?.[_Context.is];\n }\n static {\n _Context.is[Symbol.toPrimitive] = () => Symbol.for(\"cordis.is\");\n _Context.prototype[_Context.is] = true;\n }\n /** @deprecated use `Service.traceable` instead */\n static associate(object, name) {\n return object;\n }\n constructor(config) {\n config = resolveConfig(this.constructor, config);\n this[symbols.store] = /* @__PURE__ */ Object.create(null);\n this[symbols.isolate] = /* @__PURE__ */ Object.create(null);\n this[symbols.internal] = /* @__PURE__ */ Object.create(null);\n this[symbols.intercept] = /* @__PURE__ */ Object.create(null);\n const self = new Proxy(this, reflect_default.handler);\n self.root = self;\n self.reflect = new reflect_default(self);\n self.registry = new registry_default(self, config);\n self.lifecycle = new events_default(self);\n const attach = /* @__PURE__ */ __name((internal) => {\n if (!internal) return;\n attach(Object.getPrototypeOf(internal));\n for (const key of Object.getOwnPropertyNames(internal)) {\n const constructor = internal[key][\"prototype\"]?.constructor;\n if (!constructor) continue;\n self[internal[key][\"key\"]] = new constructor(self, config);\n defineProperty6(self[internal[key][\"key\"]], \"ctx\", self);\n }\n }, \"attach\");\n attach(this[symbols.internal]);\n return self;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return `Context <${this.name}>`;\n }\n get name() {\n let runtime = this.runtime;\n while (runtime && !runtime.name) {\n runtime = runtime.parent.runtime;\n }\n return runtime?.name;\n }\n get events() {\n return this.lifecycle;\n }\n /** @deprecated */\n get state() {\n return this.scope;\n }\n extend(meta = {}) {\n const source = Reflect.getOwnPropertyDescriptor(this, symbols.shadow)?.value;\n const self = Object.assign(Object.create(getTraceable(this, this)), meta);\n if (!source) return self;\n return Object.assign(Object.create(self), { [symbols.shadow]: source });\n }\n isolate(name, label) {\n const shadow = Object.create(this[symbols.isolate]);\n shadow[name] = label ?? Symbol(name);\n return this.extend({ [symbols.isolate]: shadow });\n }\n intercept(name, config) {\n const intercept = Object.create(this[symbols.intercept]);\n intercept[name] = config;\n return this.extend({ [symbols.intercept]: intercept });\n }\n};\nContext.prototype[Context.internal] = /* @__PURE__ */ Object.create(null);\n\n// src/service.ts\nimport { defineProperty as defineProperty7 } from \"cosmokit\";\nvar Service = class _Service {\n static {\n __name(this, \"Service\");\n }\n static setup = symbols.setup;\n static invoke = symbols.invoke;\n static extend = symbols.extend;\n static tracker = symbols.tracker;\n static provide = symbols.provide;\n static immediate = symbols.immediate;\n start() {\n }\n stop() {\n }\n ctx;\n name;\n config;\n constructor(...args) {\n let _ctx, name, immediate, config;\n if (Context.is(args[0])) {\n _ctx = args[0];\n if (typeof args[1] === \"string\") {\n name = args[1];\n immediate = args[2];\n } else {\n config = args[1];\n }\n } else {\n config = args[0];\n }\n name ??= this.constructor[symbols.provide];\n immediate ??= this.constructor[symbols.immediate];\n let self = this;\n const tracker = {\n associate: name,\n property: \"ctx\"\n };\n if (self[symbols.invoke]) {\n self = createCallable(name, joinPrototype(Object.getPrototypeOf(this), Function.prototype), tracker);\n }\n if (_ctx) {\n self.ctx = _ctx;\n } else {\n self[symbols.setup]();\n }\n self.name = name;\n self.config = config;\n defineProperty7(self, symbols.tracker, tracker);\n self.ctx.provide(name);\n self.ctx.runtime.name = name;\n if (immediate) {\n if (_ctx) self[symbols.expose] = name;\n else self.ctx.set(name, self);\n }\n self.ctx.on(\"ready\", async () => {\n await Promise.resolve();\n await self.start();\n if (!immediate) self.ctx.set(name, self);\n });\n self.ctx.on(\"dispose\", () => self.stop());\n return self;\n }\n [symbols.filter](ctx) {\n return ctx[symbols.isolate][this.name] === this.ctx[symbols.isolate][this.name];\n }\n [symbols.setup]() {\n this.ctx = new Context();\n }\n [symbols.extend](props) {\n let self;\n if (this[_Service.invoke]) {\n self = createCallable(this.name, this, this[symbols.tracker]);\n } else {\n self = Object.create(this);\n }\n return Object.assign(self, props);\n }\n static [Symbol.hasInstance](instance) {\n let constructor = instance.constructor;\n while (constructor) {\n constructor = constructor.prototype?.constructor;\n if (constructor === this) return true;\n constructor = Object.getPrototypeOf(constructor);\n }\n return false;\n }\n};\nexport {\n Context,\n CordisError,\n EffectScope,\n ForkScope,\n Inject,\n events_default as Lifecycle,\n MainScope,\n reflect_default as ReflectService,\n registry_default as Registry,\n ScopeStatus,\n Service,\n createCallable,\n getTraceable,\n isBailed,\n isConstructor,\n isObject,\n isUnproxyable,\n joinPrototype,\n resolveConfig,\n symbols,\n withProps\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\n\n// src/index.ts\nimport { Binary, clone, deepEqual, filterKeys, isNullable, isPlainObject, pick, valueMap } from \"cosmokit\";\nvar require_index = __commonJS({\n \"src/index.ts\"(exports, module) {\n var kSchema = Symbol.for(\"schemastery\");\n var kValidationError = Symbol.for(\"ValidationError\");\n globalThis.__schemastery_index__ ??= 0;\n var ValidationError = class extends TypeError {\n constructor(message, options) {\n let prefix = \"$\";\n for (const segment of options.path || []) {\n if (typeof segment === \"string\") {\n prefix += \".\" + segment;\n } else if (typeof segment === \"number\") {\n prefix += \"[\" + segment + \"]\";\n } else if (typeof segment === \"symbol\") {\n prefix += `[Symbol(${segment.toString()})]`;\n }\n }\n if (prefix.startsWith(\".\")) prefix = prefix.slice(1);\n super((prefix === \"$\" ? \"\" : `${prefix} `) + message);\n this.options = options;\n }\n static {\n __name(this, \"ValidationError\");\n }\n name = \"ValidationError\";\n static is(error) {\n return !!error?.[kValidationError];\n }\n };\n Object.defineProperty(ValidationError.prototype, kValidationError, {\n value: true\n });\n var Schema = /* @__PURE__ */ __name(function(options) {\n const schema = /* @__PURE__ */ __name(function(data, options2 = {}) {\n return Schema.resolve(data, schema, options2)[0];\n }, \"schema\");\n if (options.refs) {\n const refs2 = valueMap(options.refs, (options2) => new Schema(options2));\n const getRef = /* @__PURE__ */ __name((uid) => refs2[uid], \"getRef\");\n for (const key in refs2) {\n const options2 = refs2[key];\n options2.sKey = getRef(options2.sKey);\n options2.inner = getRef(options2.inner);\n options2.list = options2.list && options2.list.map(getRef);\n options2.dict = options2.dict && valueMap(options2.dict, getRef);\n }\n return refs2[options.uid];\n }\n Object.assign(schema, options);\n if (typeof schema.callback === \"string\") {\n try {\n schema.callback = new Function(\"return \" + schema.callback)();\n } catch {\n }\n }\n Object.defineProperty(schema, \"uid\", { value: globalThis.__schemastery_index__++ });\n Object.setPrototypeOf(schema, Schema.prototype);\n schema.meta ||= {};\n schema.toString = schema.toString.bind(schema);\n return schema;\n }, \"Schema\");\n Schema.prototype = Object.create(Function.prototype);\n Schema.prototype[kSchema] = true;\n Schema.ValidationError = ValidationError;\n var refs;\n Schema.prototype.toJSON = /* @__PURE__ */ __name(function toJSON() {\n if (refs) {\n refs[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n return this.uid;\n }\n refs = { [this.uid]: { ...this } };\n refs[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n const result = { uid: this.uid, refs };\n refs = void 0;\n return result;\n }, \"toJSON\");\n Schema.prototype.set = /* @__PURE__ */ __name(function set(key, value) {\n this.dict[key] = value;\n return this;\n }, \"set\");\n Schema.prototype.push = /* @__PURE__ */ __name(function push(value) {\n this.list.push(value);\n return this;\n }, \"push\");\n function mergeDesc(original, messages) {\n const result = typeof original === \"string\" ? { \"\": original } : { ...original };\n for (const locale in messages) {\n const value = messages[locale];\n if (value?.$description || value?.$desc) {\n result[locale] = value.$description || value.$desc;\n } else if (typeof value === \"string\") {\n result[locale] = value;\n }\n }\n return result;\n }\n __name(mergeDesc, \"mergeDesc\");\n function getInner(value) {\n return value?.$value ?? value?.$inner;\n }\n __name(getInner, \"getInner\");\n function extractKeys(data) {\n return filterKeys(data ?? {}, (key) => !key.startsWith(\"$\"));\n }\n __name(extractKeys, \"extractKeys\");\n Schema.prototype.i18n = /* @__PURE__ */ __name(function i18n(messages) {\n const schema = Schema(this);\n const desc = mergeDesc(schema.meta.description, messages);\n if (Object.keys(desc).length) schema.meta.description = desc;\n if (schema.dict) {\n schema.dict = valueMap(schema.dict, (inner, key) => {\n return inner.i18n(valueMap(messages, (data) => getInner(data)?.[key] ?? data?.[key]));\n });\n }\n if (schema.list) {\n schema.list = schema.list.map((inner, index) => {\n return inner.i18n(valueMap(messages, (data = {}) => {\n if (Array.isArray(getInner(data))) return getInner(data)[index];\n if (Array.isArray(data)) return data[index];\n return extractKeys(data);\n }));\n });\n }\n if (schema.inner) {\n schema.inner = schema.inner.i18n(valueMap(messages, (data) => {\n if (getInner(data)) return getInner(data);\n return extractKeys(data);\n }));\n }\n if (schema.sKey) {\n schema.sKey = schema.sKey.i18n(valueMap(messages, (data) => data?.$key));\n }\n return schema;\n }, \"i18n\");\n Schema.prototype.extra = /* @__PURE__ */ __name(function extra(key, value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }, \"extra\");\n for (const key of [\"required\", \"disabled\", \"collapse\", \"hidden\", \"loose\"]) {\n Object.assign(Schema.prototype, {\n [key](value = true) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n Schema.prototype.deprecated = /* @__PURE__ */ __name(function deprecated() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"deprecated\", type: \"danger\" });\n return schema;\n }, \"deprecated\");\n Schema.prototype.experimental = /* @__PURE__ */ __name(function experimental() {\n const schema = Schema(this);\n schema.meta.badges ||= [];\n schema.meta.badges.push({ text: \"experimental\", type: \"warning\" });\n return schema;\n }, \"experimental\");\n Schema.prototype.pattern = /* @__PURE__ */ __name(function pattern(regexp) {\n const schema = Schema(this);\n const pattern2 = pick(regexp, [\"source\", \"flags\"]);\n schema.meta = { ...schema.meta, pattern: pattern2 };\n return schema;\n }, \"pattern\");\n Schema.prototype.simplify = /* @__PURE__ */ __name(function simplify(value) {\n if (deepEqual(value, this.meta.default, this.type === \"dict\")) return null;\n if (isNullable(value)) return value;\n if (this.type === \"object\" || this.type === \"dict\") {\n const result = {};\n for (const key in value) {\n const schema = this.type === \"object\" ? this.dict[key] : this.inner;\n const item = schema?.simplify(value[key]);\n if (this.type === \"dict\" || !isNullable(item)) result[key] = item;\n }\n if (deepEqual(result, this.meta.default, this.type === \"dict\")) return null;\n return result;\n } else if (this.type === \"array\" || this.type === \"tuple\") {\n const result = [];\n value.forEach((value2, index) => {\n const schema = this.type === \"array\" ? this.inner : this.list[index];\n const item = schema ? schema.simplify(value2) : value2;\n result.push(item);\n });\n return result;\n } else if (this.type === \"intersect\") {\n const result = {};\n for (const item of this.list) {\n Object.assign(result, item.simplify(value));\n }\n return result;\n } else if (this.type === \"union\") {\n for (const schema of this.list) {\n try {\n Schema.resolve(value, schema, {});\n return schema.simplify(value);\n } catch {\n }\n }\n }\n return value;\n }, \"simplify\");\n Schema.prototype.toString = /* @__PURE__ */ __name(function toString(inline) {\n return formatters[this.type]?.(this, inline) ?? `Schema<${this.type}>`;\n }, \"toString\");\n Schema.prototype.role = /* @__PURE__ */ __name(function role(role, extra) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, role, extra };\n return schema;\n }, \"role\");\n for (const key of [\"default\", \"link\", \"comment\", \"description\", \"max\", \"min\", \"step\"]) {\n Object.assign(Schema.prototype, {\n [key](value) {\n const schema = Schema(this);\n schema.meta = { ...schema.meta, [key]: value };\n return schema;\n }\n });\n }\n var resolvers = {};\n Schema.extend = /* @__PURE__ */ __name(function extend(type, resolve) {\n resolvers[type] = resolve;\n }, \"extend\");\n Schema.resolve = /* @__PURE__ */ __name(function resolve(data, schema, options = {}, strict = false) {\n if (!schema) return [data];\n if (options.ignore?.(data, schema)) return [data];\n if (isNullable(data) && schema.type !== \"lazy\") {\n if (schema.meta.required) throw new ValidationError(`missing required value`, options);\n let current = schema;\n let fallback = schema.meta.default;\n while (current?.type === \"intersect\" && isNullable(fallback)) {\n current = current.list[0];\n fallback = current?.meta.default;\n }\n if (isNullable(fallback)) return [data];\n data = clone(fallback);\n }\n const callback = resolvers[schema.type];\n if (!callback) throw new ValidationError(`unsupported type \"${schema.type}\"`, options);\n try {\n return callback(data, schema, options, strict);\n } catch (error) {\n if (!schema.meta.loose) throw error;\n return [schema.meta.default];\n }\n }, \"resolve\");\n Schema.from = /* @__PURE__ */ __name(function from(source) {\n if (isNullable(source)) {\n return Schema.any();\n } else if ([\"string\", \"number\", \"boolean\"].includes(typeof source)) {\n return Schema.const(source).required();\n } else if (source[kSchema]) {\n return source;\n } else if (typeof source === \"function\") {\n switch (source) {\n case String:\n return Schema.string().required();\n case Number:\n return Schema.number().required();\n case Boolean:\n return Schema.boolean().required();\n case Function:\n return Schema.function().required();\n default:\n return Schema.is(source).required();\n }\n } else {\n throw new TypeError(`cannot infer schema from ${source}`);\n }\n }, \"from\");\n Schema.lazy = /* @__PURE__ */ __name(function lazy(builder) {\n const toJSON = /* @__PURE__ */ __name(() => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return schema.inner.toJSON();\n }, \"toJSON\");\n const schema = new Schema({ type: \"lazy\", builder, inner: { toJSON } });\n return schema;\n }, \"lazy\");\n Schema.natural = /* @__PURE__ */ __name(function natural() {\n return Schema.number().step(1).min(0);\n }, \"natural\");\n Schema.percent = /* @__PURE__ */ __name(function percent() {\n return Schema.number().step(0.01).min(0).max(1).role(\"slider\");\n }, \"percent\");\n Schema.date = /* @__PURE__ */ __name(function date() {\n return Schema.union([\n Schema.is(Date),\n Schema.transform(Schema.string().role(\"datetime\"), (value, options) => {\n const date2 = new Date(value);\n if (isNaN(+date2)) throw new ValidationError(`invalid date \"${value}\"`, options);\n return date2;\n }, true)\n ]);\n }, \"date\");\n Schema.regExp = /* @__PURE__ */ __name(function regExp(flag = \"\") {\n return Schema.union([\n Schema.is(RegExp),\n Schema.transform(Schema.string().role(\"regexp\", { flag }), (value, options) => {\n try {\n return new RegExp(value, flag);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)\n ]);\n }, \"regExp\");\n Schema.arrayBuffer = /* @__PURE__ */ __name(function arrayBuffer(encoding) {\n return Schema.union([\n Schema.is(ArrayBuffer),\n Schema.is(SharedArrayBuffer),\n Schema.transform(Schema.any(), (value, options) => {\n if (Binary.isSource(value)) return Binary.fromSource(value);\n throw new ValidationError(`expected ArrayBufferSource but got ${value}`, options);\n }, true),\n ...encoding ? [Schema.transform(Schema.string(), (value, options) => {\n try {\n return encoding === \"base64\" ? Binary.fromBase64(value) : Binary.fromHex(value);\n } catch (e) {\n throw new ValidationError(e.message, options);\n }\n }, true)] : []\n ]);\n }, \"arrayBuffer\");\n Schema.extend(\"lazy\", (data, schema, options, strict) => {\n if (!schema.inner[kSchema]) {\n schema.inner = schema.builder();\n schema.inner.meta = { ...schema.meta, ...schema.inner.meta };\n }\n return Schema.resolve(data, schema.inner, options, strict);\n });\n Schema.extend(\"any\", (data) => {\n return [data];\n });\n Schema.extend(\"never\", (data, _, options) => {\n throw new ValidationError(`expected nullable but got ${data}`, options);\n });\n Schema.extend(\"const\", (data, { value }, options) => {\n if (deepEqual(data, value)) return [value];\n throw new ValidationError(`expected ${value} but got ${data}`, options);\n });\n function checkWithinRange(data, meta, description, options, skipMin = false) {\n const { max = Infinity, min = -Infinity } = meta;\n if (data > max) throw new ValidationError(`expected ${description} <= ${max} but got ${data}`, options);\n if (data < min && !skipMin) throw new ValidationError(`expected ${description} >= ${min} but got ${data}`, options);\n }\n __name(checkWithinRange, \"checkWithinRange\");\n Schema.extend(\"string\", (data, { meta }, options) => {\n if (typeof data !== \"string\") throw new ValidationError(`expected string but got ${data}`, options);\n if (meta.pattern) {\n const regexp = new RegExp(meta.pattern.source, meta.pattern.flags);\n if (!regexp.test(data)) throw new ValidationError(`expect string to match regexp ${regexp}`, options);\n }\n checkWithinRange(data.length, meta, \"string length\", options);\n return [data];\n });\n function decimalShift(data, digits) {\n const str = data.toString();\n if (str.includes(\"e\")) return data * Math.pow(10, digits);\n const index = str.indexOf(\".\");\n if (index === -1) return data * Math.pow(10, digits);\n const frac = str.slice(index + 1);\n const integer = str.slice(0, index);\n if (frac.length <= digits) return +(integer + frac.padEnd(digits, \"0\"));\n return +(integer + frac.slice(0, digits) + \".\" + frac.slice(digits));\n }\n __name(decimalShift, \"decimalShift\");\n function isMultipleOf(data, min, step) {\n step = Math.abs(step);\n if (!/^\\d+\\.\\d+$/.test(step.toString())) {\n return (data - min) % step === 0;\n }\n const index = step.toString().indexOf(\".\");\n const digits = step.toString().slice(index + 1).length;\n return Math.abs(decimalShift(data, digits) - decimalShift(min, digits)) % decimalShift(step, digits) === 0;\n }\n __name(isMultipleOf, \"isMultipleOf\");\n Schema.extend(\"number\", (data, { meta }, options) => {\n if (typeof data !== \"number\") throw new ValidationError(`expected number but got ${data}`, options);\n checkWithinRange(data, meta, \"number\", options);\n const { step } = meta;\n if (step && !isMultipleOf(data, meta.min ?? 0, step)) {\n throw new ValidationError(`expected number multiple of ${step} but got ${data}`, options);\n }\n return [data];\n });\n Schema.extend(\"boolean\", (data, _, options) => {\n if (typeof data === \"boolean\") return [data];\n throw new ValidationError(`expected boolean but got ${data}`, options);\n });\n Schema.extend(\"bitset\", (data, { bits, meta }, options) => {\n let value = 0, keys = [];\n if (typeof data === \"number\") {\n value = data;\n for (const key in bits) {\n if (data & bits[key]) {\n keys.push(key);\n }\n }\n } else if (Array.isArray(data)) {\n keys = data;\n for (const key of keys) {\n if (typeof key !== \"string\") throw new ValidationError(`expected string but got ${key}`, options);\n if (key in bits) value |= bits[key];\n }\n } else {\n throw new ValidationError(`expected number or array but got ${data}`, options);\n }\n if (value === meta.default) return [value];\n return [value, keys];\n });\n Schema.extend(\"function\", (data, _, options) => {\n if (typeof data === \"function\") return [data];\n throw new ValidationError(`expected function but got ${data}`, options);\n });\n Schema.extend(\"is\", (data, { constructor }, options) => {\n if (typeof constructor === \"function\") {\n if (data instanceof constructor) return [data];\n throw new ValidationError(`expected ${constructor.name} but got ${data}`, options);\n } else {\n if (isNullable(data)) {\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n let prototype = Object.getPrototypeOf(data);\n while (prototype) {\n if (prototype.constructor?.name === constructor) return [data];\n prototype = Object.getPrototypeOf(prototype);\n }\n throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n }\n });\n function property(data, key, schema, options) {\n try {\n const [value, adapted] = Schema.resolve(data[key], schema, {\n ...options,\n path: [...options.path || [], key]\n });\n if (adapted !== void 0) data[key] = adapted;\n return value;\n } catch (e) {\n if (!options?.autofix) throw e;\n delete data[key];\n return schema.meta.default;\n }\n }\n __name(property, \"property\");\n Schema.extend(\"array\", (data, { inner, meta }, options) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n checkWithinRange(data.length, meta, \"array length\", options, !isNullable(inner.meta.default));\n return [data.map((_, index) => property(data, index, inner, options))];\n });\n Schema.extend(\"dict\", (data, { inner, sKey }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in data) {\n let rKey;\n try {\n rKey = Schema.resolve(key, sKey, options)[0];\n } catch (error) {\n if (strict) continue;\n throw error;\n }\n result[rKey] = property(data, key, inner, options);\n data[rKey] = data[key];\n if (key !== rKey) delete data[key];\n }\n return [result];\n });\n Schema.extend(\"tuple\", (data, { list }, options, strict) => {\n if (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n const result = list.map((inner, index) => property(data, index, inner, options));\n if (strict) return [result];\n result.push(...data.slice(list.length));\n return [result];\n });\n function merge(result, data) {\n for (const key in data) {\n if (key in result) continue;\n result[key] = data[key];\n }\n }\n __name(merge, \"merge\");\n Schema.extend(\"object\", (data, { dict }, options, strict) => {\n if (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n const result = {};\n for (const key in dict) {\n const value = property(data, key, dict[key], options);\n if (!isNullable(value) || key in data) {\n result[key] = value;\n }\n }\n if (!strict) merge(result, data);\n return [result];\n });\n Schema.extend(\"union\", (data, { list, toString }, options, strict) => {\n const messages = [];\n for (const inner of list) {\n try {\n return Schema.resolve(data, inner, options, strict);\n } catch (error) {\n messages.push(error);\n }\n }\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n });\n Schema.extend(\"intersect\", (data, { list, toString }, options, strict) => {\n if (!list.length) return [data];\n let result;\n for (const inner of list) {\n const value = Schema.resolve(data, inner, options, true)[0];\n if (isNullable(value)) continue;\n if (isNullable(result)) {\n result = value;\n } else if (typeof result !== typeof value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n } else if (typeof value === \"object\") {\n merge(result ??= {}, value);\n } else if (result !== value) {\n throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n }\n }\n if (!strict && isPlainObject(data)) merge(result, data);\n return [result];\n });\n Schema.extend(\"transform\", (data, { inner, callback, preserve }, options) => {\n const [result, adapted = data] = Schema.resolve(data, inner, options, true);\n if (preserve) {\n return [callback(result)];\n } else {\n return [callback(result), callback(adapted)];\n }\n });\n var formatters = {};\n function defineMethod(name, keys, format) {\n formatters[name] = format;\n Object.assign(Schema, {\n [name](...args) {\n const schema = new Schema({ type: name });\n keys.forEach((key, index) => {\n switch (key) {\n case \"sKey\":\n schema.sKey = args[index] ?? Schema.string();\n break;\n case \"inner\":\n schema.inner = Schema.from(args[index]);\n break;\n case \"list\":\n schema.list = args[index].map(Schema.from);\n break;\n case \"dict\":\n schema.dict = valueMap(args[index], Schema.from);\n break;\n case \"bits\": {\n schema.bits = {};\n for (const key2 in args[index]) {\n if (typeof args[index][key2] !== \"number\") continue;\n schema.bits[key2] = args[index][key2];\n }\n break;\n }\n case \"callback\": {\n const callback = schema.callback = args[index];\n callback[\"toJSON\"] ||= () => callback.toString();\n break;\n }\n case \"constructor\": {\n const constructor = schema.constructor = args[index];\n if (typeof constructor === \"function\") {\n ;\n constructor[\"toJSON\"] ||= () => constructor[\"name\"];\n }\n break;\n }\n default:\n schema[key] = args[index];\n }\n });\n if (name === \"object\" || name === \"dict\") {\n schema.meta.default = {};\n } else if (name === \"array\" || name === \"tuple\") {\n schema.meta.default = [];\n } else if (name === \"bitset\") {\n schema.meta.default = 0;\n }\n return schema;\n }\n });\n }\n __name(defineMethod, \"defineMethod\");\n defineMethod(\"is\", [\"constructor\"], ({ constructor }) => {\n if (typeof constructor === \"function\") {\n return constructor.name;\n } else {\n return constructor;\n }\n });\n defineMethod(\"any\", [], () => \"any\");\n defineMethod(\"never\", [], () => \"never\");\n defineMethod(\"const\", [\"value\"], ({ value }) => typeof value === \"string\" ? JSON.stringify(value) : value);\n defineMethod(\"string\", [], () => \"string\");\n defineMethod(\"number\", [], () => \"number\");\n defineMethod(\"boolean\", [], () => \"boolean\");\n defineMethod(\"bitset\", [\"bits\"], () => \"bitset\");\n defineMethod(\"function\", [], () => \"function\");\n defineMethod(\"array\", [\"inner\"], ({ inner }) => `${inner.toString(true)}[]`);\n defineMethod(\"dict\", [\"inner\", \"sKey\"], ({ inner, sKey }) => `{ [key: ${sKey.toString()}]: ${inner.toString()} }`);\n defineMethod(\"tuple\", [\"list\"], ({ list }) => `[${list.map((inner) => inner.toString()).join(\", \")}]`);\n defineMethod(\"object\", [\"dict\"], ({ dict }) => {\n if (Object.keys(dict).length === 0) return \"{}\";\n return `{ ${Object.entries(dict).map(([key, inner]) => {\n return `${key}${inner.meta.required ? \"\" : \"?\"}: ${inner.toString()}`;\n }).join(\", \")} }`;\n });\n defineMethod(\"union\", [\"list\"], ({ list }, inline) => {\n const result = list.map(({ toString: format }) => format()).join(\" | \");\n return inline ? `(${result})` : result;\n });\n defineMethod(\"intersect\", [\"list\"], ({ list }) => {\n return `${list.map((inner) => inner.toString(true)).join(\" & \")}`;\n });\n defineMethod(\"transform\", [\"inner\", \"callback\", \"preserve\"], ({ inner }, isInner) => inner.toString(isInner));\n module.exports = Schema;\n }\n});\nexport default require_index();\n//# sourceMappingURL=index.mjs.map\n","const isFunction = (value: any): value is Function => typeof value === 'function'\n\nexport type ComputeAble<T> = (() => T | Promise<T>) | T\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\nexport type ComputeAbleSync<T> = (() => T) | T\nexport function computeFallbackSync<T>(value: ComputeAbleSync<T>): T {\n if (isFunction(value)) {\n return value()\n } else {\n return value\n }\n}\n","export enum Endpoints {\n ANALYTICS_API_BASE = 'https://analytics.ipe.wiki/api/v6',\n ANALYTICS_DASH_URL = 'https://analytics.ipe.wiki',\n GITHUB_URL = 'https://github.com/inpageedit/inpageedit-next',\n GITHUB_OWNER = 'inpageedit',\n GITHUB_REPO = 'inpageedit-next',\n HOME_URL = 'https://www.ipe.wiki/',\n UPDATE_LOGS_URL = 'https://www.ipe.wiki/changelogs/',\n PLUGIN_REGISTRY_URL = 'https://registry.ipe.wiki/registry.v1.json',\n I18N_INDEX_URL = 'https://registry.ipe.wiki/i18n/index.json',\n QQ_GROUP_ID = '1026023666',\n}\n","export function capitalize(source: string) {\n return source.charAt(0).toUpperCase() + source.slice(1)\n}\n\nexport function uncapitalize(source: string) {\n return source.charAt(0).toLowerCase() + source.slice(1)\n}\n\nexport function camelCase(source: string) {\n return source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase())\n}\n\nexport function paramCase(source: string) {\n return uncapitalize(source)\n .replace(/_/g, '-')\n .replace(/.[A-Z]+/g, (str) => str[0] + '-' + str.slice(1).toLowerCase())\n}\n\nexport function snakeCase(source: string) {\n return uncapitalize(source)\n .replace(/-/g, '_')\n .replace(/.[A-Z]+/g, (str) => str[0] + '_' + str.slice(1).toLowerCase())\n}\n\nexport function trimSlash(source: string) {\n return source.replace(/\\/+$/, '')\n}\n\nexport function ensureSlash(source: string) {\n return source.endsWith('/') ? source : source + '/'\n}\n","import type Schema from 'schemastery'\n\ntype AnyConstructor<T = any> = new (...args: any[]) => T\n\nexport type PreferenceAugmented<D, C extends AnyConstructor> = C & {\n PreferencesSchema: Schema<D>\n}\n\n/**\n * Decorator for registering preferences\n *\n * ```ts\n * @RegisterPreferences(\n * Schema.object({\n * foo: Schema.string().description('Foo description'),\n * })\n * )\n * class Foo {}\n * ```\n *\n * same as:\n *\n * ```ts\n * class Foo {\n * static ConfigSchema = Schema.object({\n * foo: Schema.string().description('Foo description')\n * })\n * }\n * ```\n */\nexport function RegisterPreferences<D extends Record<string, any>>(schema: Schema<D>) {\n return function <T extends AnyConstructor>(target: T): PreferenceAugmented<D, T> {\n ;(target as any).PreferencesSchema = schema\n return target as PreferenceAugmented<D, T>\n }\n}\n"],"names":["promiseWithResolvers","resolve","reject","res","rej","__defProp","__name","target","value","noop","isNullable","isNonNullable","isPlainObject","data","filterKeys","object","filter","key","mapValues","transform","pick","source","keys","forced","result","omit","defineProperty","contain","array1","array2","item","intersection","difference","union","deduplicate","array","remove","list","index","makeArray","is","type","value2","isArrayBufferLike","isArrayBufferSource","Binary","Binary2","fromSource","toBase64","binary","bytes","i","fromBase64","c","toHex","byte","fromHex","hex","buffer","clone","refs","cached","result2","descriptor","deepEqual","a","b","strict","check","test","then","a2","b2","viewA","viewB","capitalize","uncapitalize","camelCase","str","tokenize","delimiters","delimiter","output","state","code","next","paramCase","snakeCase","formatProperty","trimSlash","sanitize","Time","Time2","timezoneOffset","setTimezoneOffset","offset","getTimezoneOffset","getDateNumber","date","fromDateNumber","numeric","timeRegExp","unit","parseTime","capture","parseDate","parsed","format","ms","abs","toDigits","length","template","template2","time","symbols","GeneratorFunction","AsyncGeneratorFunction","isConstructor","func","resolveConfig","plugin","config","schema","isUnproxyable","constructor","joinPrototype","proto1","proto2","isObject","getTraceable","ctx","noTrap","tracker","createTraceable","withProps","props","target2","prop","receiver","withProp","createShadow","property","origin","createShadowMethod","outer","shadow","thisArg","args","arg","args2","thisArg2","arg2","newTarget","proxy","innerValue","innerTracker","applyTraceable","createCallable","name","proto","self","ReflectService","_ReflectService","defineProperty2","internal","error","lines","oldValue","dispose","ctx2","builtin","options","aliases","mixins","entries","getTarget","disposables","service","mixin","callback","reflect_default","isBailed","Lifecycle","defineProperty3","listener","method","Context","level","param","runtime","scopes","scope","checkInject","hooks","hook","label","events_default","ScopeStatus","ScopeStatus2","CordisError","_CordisError","message","CordisError2","EffectScope","parent","disposed","original","wrapped","remove2","defineProperty4","task","reason","inject","isNullable2","acceptor","resolved","modified","checkPropertyUpdate","hasUpdate","ignored","shouldRestart","fallback","passive","hasUpdate2","ForkScope","fork","oldConfig","MainScope","Inject","context","instance","warning","isApplicable","Inject2","required","optional","rest","Registry","defineProperty5","assert","registry_default","_Context","attach","defineProperty6","meta","intercept","Service","_Service","_ctx","immediate","defineProperty7","__getOwnPropNames","__commonJS","cb","mod","require_index","exports","module","kSchema","kValidationError","ValidationError","prefix","segment","Schema","options2","refs2","valueMap","getRef","uid","mergeDesc","messages","locale","getInner","extractKeys","desc","inner","regexp","pattern2","inline","formatters","role","extra","resolvers","current","builder","toJSON","date2","flag","e","encoding","_","checkWithinRange","description","skipMin","max","min","decimalShift","digits","frac","integer","isMultipleOf","step","bits","prototype","adapted","sKey","rKey","merge","dict","toString","preserve","defineMethod","key2","isInner","isFunction","computeFallback","computeFallbackSync","Endpoints","RegisterPreferences"],"mappings":"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","x_google_ignoreList":[1,2,3]}
@@ -1,6 +1,6 @@
1
1
  import { j as u, F as q, P as j } from "./index-CM_6yF2v.js";
2
- import { I as S, R as $, S as f } from "./Preferences-85Q9FAmb.js";
3
- import { B as E } from "./BasePlugin-CU8beLYu.js";
2
+ import { I as S, R as $, S as f } from "./Preferences-BF2fcXrn.js";
3
+ import { B as E } from "./BasePlugin-YOi2_vUo.js";
4
4
  import { m as Q } from "./makeCallable-LDU0xZMJ.js";
5
5
  var C = Object.create, h = Object.defineProperty, F = Object.getOwnPropertyDescriptor, x = (t, i) => (i = Symbol[t]) ? i : Symbol.for("Symbol." + t), P = (t) => {
6
6
  throw TypeError(t);
@@ -113,4 +113,4 @@ N(_, 1, w);
113
113
  export {
114
114
  w as PluginQuickPreview
115
115
  };
116
- //# sourceMappingURL=index-DjPpAyfE.js.map
116
+ //# sourceMappingURL=index-3NZkG2a3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DjPpAyfE.js","sources":["../src/plugins/quick-preview/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { type QuickEditEventPayload } from '@/plugins/quick-edit'\nimport { IWikiPage } from '@/models/WikiPage'\nimport { MwApiParams } from 'wiki-saikou'\nimport { PageParseData } from '@/models/WikiPage/types/PageParseData'\nimport { IPEModal, IPEModalOptions } from '@inpageedit/modal'\n\ninterface QuickPreviewEventPayload {\n ctx: InPageEdit\n modal: IPEModal\n wikiPage: IWikiPage\n text: string\n parseData: PageParseData\n}\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickPreview: PluginQuickPreview & {\n // for backward compatibility\n (\n ...args: Parameters<PluginQuickPreview['previewWikitext']>\n ): ReturnType<PluginQuickPreview['previewWikitext']>\n }\n }\n interface Events {\n 'quick-preview/show-modal'(payload: Omit<QuickPreviewEventPayload, 'parseData'>): void\n 'quick-preview/loaded'(payload: QuickPreviewEventPayload): void\n }\n interface PreferencesMap {\n 'quickPreview.keyshortcut.quickEdit': string\n 'quickPreview.keyshortcut.quickDelete': string\n }\n}\n\n@Inject(['api', 'wikiPage', 'modal', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'quickPreview.keyshortcut': Schema.string()\n .default('ctrl-p')\n .description('Key shortcut to open quick preview in quick edit modal'),\n })\n .extra('category', 'editor')\n .description('Quick preview options')\n)\nexport class PluginQuickPreview extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quickPreview')\n this.ctx.set('quickPreview', makeCallable(this, 'previewWikitext'))\n }\n\n protected start(): Promise<void> | void {\n this.ctx.on('quick-edit/wiki-page', this.injectQuickEdit.bind(this))\n }\n\n protected stop(): Promise<void> | void {}\n\n previewWikitext(\n text: string,\n params?: MwApiParams,\n wikiPage?: IWikiPage,\n modal?: IPEModal,\n modalOptions?: Partial<IPEModalOptions>\n ) {\n const $ = this.ctx.$\n\n wikiPage ||= this.ctx.wikiPage.newBlankPage({\n title: 'API',\n })\n\n if (!modal || modal.isDestroyed) {\n modal = this.ctx.modal\n .createObject({\n className: 'in-page-edit ipe-quickPreview',\n sizeClass: 'large',\n center: false,\n ...modalOptions,\n })\n .init()\n }\n\n modal.show()\n modal.setTitle($`Preview - Loading...`)\n modal.setContent(<ProgressBar />)\n modal.bringToFront()\n this.ctx.emit('quick-preview/show-modal', {\n ctx: this.ctx,\n text,\n modal,\n wikiPage,\n })\n\n wikiPage\n .preview(text, params)\n .then((ret) => {\n const {\n data: { parse },\n } = ret\n modal.setTitle($(parse.title)`Preview - {{ $1 }}`)\n let outputRef: HTMLElement | null = null\n modal.setContent(\n (\n <section>\n <div\n ref={(el) => (outputRef = el)}\n className=\"mw-parser-output\"\n innerHTML={parse.text}\n ></div>\n </section>\n ) as HTMLElement\n )\n if (window.mw?.hook && typeof jQuery === 'function') {\n window.mw.hook('wikipage.content').fire(jQuery(outputRef!))\n }\n this.ctx.emit('quick-preview/loaded', {\n ctx: this.ctx,\n modal,\n wikiPage,\n text,\n parseData: parse,\n })\n })\n .catch((error) => {\n modal.setTitle($`Preview - Failed`)\n modal.setContent(\n <>\n <p>{$`Failed to preview`}</p>\n <p>{error instanceof Error ? error.message : String(error)}</p>\n </>\n )\n })\n\n return modal\n }\n\n private async injectQuickEdit({ options, modal, wikiPage }: QuickEditEventPayload) {\n const $ = this.ctx.$\n let latestPreviewModal: IPEModal | undefined = undefined\n modal.addButton(\n {\n label: $`Preview`,\n side: 'left',\n className: 'btn btn-secondary',\n keyPress:\n (await this.ctx.preferences.get('quickPreview.keyshortcut.quickEdit')) || undefined,\n method: () => {\n let wikitext =\n (modal.get$content().querySelector<HTMLTextAreaElement>('textarea[name=\"text\"]')\n ?.value as string) || ''\n if (options.section === 'new') {\n const title = modal\n .get$content()\n .querySelector<HTMLInputElement>('input[name=\"summary\"]')?.value\n if (title) {\n wikitext = `==${title}==\\n${wikitext}`\n }\n }\n\n latestPreviewModal = this.previewWikitext(\n wikitext,\n undefined,\n wikiPage,\n latestPreviewModal,\n {\n backdrop: false,\n draggable: true,\n }\n )\n },\n },\n 1\n )\n modal.on(modal.Event.Close, () => {\n latestPreviewModal?.destroy()\n latestPreviewModal = undefined\n })\n }\n}\n"],"names":["_PluginQuickPreview_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginQuickPreview","BasePlugin","ctx","makeCallable","text","params","wikiPage","modal","modalOptions","$","jsx","ProgressBar","ret","parse","outputRef","el","error","jsxs","Fragment","options","latestPreviewModal","wikitext","title","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
1
+ {"version":3,"file":"index-3NZkG2a3.js","sources":["../src/plugins/quick-preview/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { type QuickEditEventPayload } from '@/plugins/quick-edit'\nimport { IWikiPage } from '@/models/WikiPage'\nimport { MwApiParams } from 'wiki-saikou'\nimport { PageParseData } from '@/models/WikiPage/types/PageParseData'\nimport { IPEModal, IPEModalOptions } from '@inpageedit/modal'\n\ninterface QuickPreviewEventPayload {\n ctx: InPageEdit\n modal: IPEModal\n wikiPage: IWikiPage\n text: string\n parseData: PageParseData\n}\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickPreview: PluginQuickPreview & {\n // for backward compatibility\n (\n ...args: Parameters<PluginQuickPreview['previewWikitext']>\n ): ReturnType<PluginQuickPreview['previewWikitext']>\n }\n }\n interface Events {\n 'quick-preview/show-modal'(payload: Omit<QuickPreviewEventPayload, 'parseData'>): void\n 'quick-preview/loaded'(payload: QuickPreviewEventPayload): void\n }\n interface PreferencesMap {\n 'quickPreview.keyshortcut.quickEdit': string\n 'quickPreview.keyshortcut.quickDelete': string\n }\n}\n\n@Inject(['api', 'wikiPage', 'modal', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'quickPreview.keyshortcut': Schema.string()\n .default('ctrl-p')\n .description('Key shortcut to open quick preview in quick edit modal'),\n })\n .extra('category', 'editor')\n .description('Quick preview options')\n)\nexport class PluginQuickPreview extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quickPreview')\n this.ctx.set('quickPreview', makeCallable(this, 'previewWikitext'))\n }\n\n protected start(): Promise<void> | void {\n this.ctx.on('quick-edit/wiki-page', this.injectQuickEdit.bind(this))\n }\n\n protected stop(): Promise<void> | void {}\n\n previewWikitext(\n text: string,\n params?: MwApiParams,\n wikiPage?: IWikiPage,\n modal?: IPEModal,\n modalOptions?: Partial<IPEModalOptions>\n ) {\n const $ = this.ctx.$\n\n wikiPage ||= this.ctx.wikiPage.newBlankPage({\n title: 'API',\n })\n\n if (!modal || modal.isDestroyed) {\n modal = this.ctx.modal\n .createObject({\n className: 'in-page-edit ipe-quickPreview',\n sizeClass: 'large',\n center: false,\n ...modalOptions,\n })\n .init()\n }\n\n modal.show()\n modal.setTitle($`Preview - Loading...`)\n modal.setContent(<ProgressBar />)\n modal.bringToFront()\n this.ctx.emit('quick-preview/show-modal', {\n ctx: this.ctx,\n text,\n modal,\n wikiPage,\n })\n\n wikiPage\n .preview(text, params)\n .then((ret) => {\n const {\n data: { parse },\n } = ret\n modal.setTitle($(parse.title)`Preview - {{ $1 }}`)\n let outputRef: HTMLElement | null = null\n modal.setContent(\n (\n <section>\n <div\n ref={(el) => (outputRef = el)}\n className=\"mw-parser-output\"\n innerHTML={parse.text}\n ></div>\n </section>\n ) as HTMLElement\n )\n if (window.mw?.hook && typeof jQuery === 'function') {\n window.mw.hook('wikipage.content').fire(jQuery(outputRef!))\n }\n this.ctx.emit('quick-preview/loaded', {\n ctx: this.ctx,\n modal,\n wikiPage,\n text,\n parseData: parse,\n })\n })\n .catch((error) => {\n modal.setTitle($`Preview - Failed`)\n modal.setContent(\n <>\n <p>{$`Failed to preview`}</p>\n <p>{error instanceof Error ? error.message : String(error)}</p>\n </>\n )\n })\n\n return modal\n }\n\n private async injectQuickEdit({ options, modal, wikiPage }: QuickEditEventPayload) {\n const $ = this.ctx.$\n let latestPreviewModal: IPEModal | undefined = undefined\n modal.addButton(\n {\n label: $`Preview`,\n side: 'left',\n className: 'btn btn-secondary',\n keyPress:\n (await this.ctx.preferences.get('quickPreview.keyshortcut.quickEdit')) || undefined,\n method: () => {\n let wikitext =\n (modal.get$content().querySelector<HTMLTextAreaElement>('textarea[name=\"text\"]')\n ?.value as string) || ''\n if (options.section === 'new') {\n const title = modal\n .get$content()\n .querySelector<HTMLInputElement>('input[name=\"summary\"]')?.value\n if (title) {\n wikitext = `==${title}==\\n${wikitext}`\n }\n }\n\n latestPreviewModal = this.previewWikitext(\n wikitext,\n undefined,\n wikiPage,\n latestPreviewModal,\n {\n backdrop: false,\n draggable: true,\n }\n )\n },\n },\n 1\n )\n modal.on(modal.Event.Close, () => {\n latestPreviewModal?.destroy()\n latestPreviewModal = undefined\n })\n }\n}\n"],"names":["_PluginQuickPreview_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginQuickPreview","BasePlugin","ctx","makeCallable","text","params","wikiPage","modal","modalOptions","$","jsx","ProgressBar","ret","parse","outputRef","el","error","jsxs","Fragment","options","latestPreviewModal","wikitext","title","__decoratorStart","__decorateElement","__runInitializers"],"mappings":";;;;;;;;;;;;;;;GAAAA,GAAAC,GAAAC;AAkCAF,IAAA,CAACG,EAAO,CAAC,OAAO,YAAY,SAAS,eAAe,GAAG,CAAC,GACvDC;AAAA,EACCC,EAAO,OAAO;AAAA,IACZ,4BAA4BA,EAAO,OAAA,EAChC,QAAQ,QAAQ,EAChB,YAAY,wDAAwD;AAAA,EAAA,CACxE,EACE,MAAM,YAAY,QAAQ,EAC1B,YAAY,uBAAuB;AACxC,CAAA;AACO,MAAMC,WAA2BJ,IAAAK,GAAW;AAAA,EACjD,YAAmBC,GAAiB;AAClC,UAAMA,GAAK,CAAA,GAAI,cAAc,GADZ,KAAA,MAAAA,GAEjB,KAAK,IAAI,IAAI,gBAAgBC,EAAa,MAAM,iBAAiB,CAAC;AAAA,EACpE;AAAA,EAEU,QAA8B;AACtC,SAAK,IAAI,GAAG,wBAAwB,KAAK,gBAAgB,KAAK,IAAI,CAAC;AAAA,EACrE;AAAA,EAEU,OAA6B;AAAA,EAAC;AAAA,EAExC,gBACEC,GACAC,GACAC,GACAC,GACAC,GACA;AACA,UAAMC,IAAI,KAAK,IAAI;AAEnB,WAAAH,MAAa,KAAK,IAAI,SAAS,aAAa;AAAA,MAC1C,OAAO;AAAA,IAAA,CACR,IAEG,CAACC,KAASA,EAAM,iBAClBA,IAAQ,KAAK,IAAI,MACd,aAAa;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,GAAGC;AAAA,IAAA,CACJ,EACA,KAAA,IAGLD,EAAM,KAAA,GACNA,EAAM,SAASE,uBAAuB,GACtCF,EAAM,WAAW,gBAAAG,EAACC,GAAA,CAAA,CAAY,CAAE,GAChCJ,EAAM,aAAA,GACN,KAAK,IAAI,KAAK,4BAA4B;AAAA,MACxC,KAAK,KAAK;AAAA,MACV,MAAAH;AAAA,MACA,OAAAG;AAAA,MACA,UAAAD;AAAA,IAAA,CACD,GAEDA,EACG,QAAQF,GAAMC,CAAM,EACpB,KAAK,CAACO,MAAQ;AACb,YAAM;AAAA,QACJ,MAAM,EAAE,OAAAC,EAAA;AAAA,MAAM,IACZD;AACJ,MAAAL,EAAM,SAASE,EAAEI,EAAM,KAAK,qBAAqB;AACjD,UAAIC,IAAgC;AACpC,MAAAP,EAAM;AAAA,0BAED,WAAA,EACC,UAAA,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK,CAACK,MAAQD,IAAYC;AAAA,YAC1B,WAAU;AAAA,YACV,WAAWF,EAAM;AAAA,UAAA;AAAA,QAAA,EAClB,CACH;AAAA,MAAA,GAGA,OAAO,IAAI,QAAQ,OAAO,UAAW,cACvC,OAAO,GAAG,KAAK,kBAAkB,EAAE,KAAK,OAAOC,CAAU,CAAC,GAE5D,KAAK,IAAI,KAAK,wBAAwB;AAAA,QACpC,KAAK,KAAK;AAAA,QACV,OAAAP;AAAA,QACA,UAAAD;AAAA,QACA,MAAAF;AAAA,QACA,WAAWS;AAAA,MAAA,CACZ;AAAA,IACH,CAAC,EACA,MAAM,CAACG,MAAU;AAChB,MAAAT,EAAM,SAASE,mBAAmB,GAClCF,EAAM;AAAA,QACJU,gBAAAA,EAAAC,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAR,EAAC,OAAG,UAAAD,qBAAA,CAAqB;AAAA,UACzB,gBAAAC,EAAC,OAAG,UAAAM,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK,EAAA,CAAE;AAAA,QAAA,EAAA,CAC7D;AAAA,MAAA;AAAA,IAEJ,CAAC,GAEIT;AAAA,EACT;AAAA,EAEA,MAAc,gBAAgB,EAAE,SAAAY,GAAS,OAAAZ,GAAO,UAAAD,KAAmC;AACjF,UAAMG,IAAI,KAAK,IAAI;AACnB,QAAIW;AACJ,IAAAb,EAAM;AAAA,MACJ;AAAA,QACE,OAAOE;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,UACG,MAAM,KAAK,IAAI,YAAY,IAAI,oCAAoC,KAAM;AAAA,QAC5E,QAAQ,MAAM;AACZ,cAAIY,IACDd,EAAM,YAAA,EAAc,cAAmC,uBAAuB,GAC3E,SAAoB;AAC1B,cAAIY,EAAQ,YAAY,OAAO;AAC7B,kBAAMG,IAAQf,EACX,YAAA,EACA,cAAgC,uBAAuB,GAAG;AAC7D,YAAIe,MACFD,IAAW,KAAKC,CAAK;AAAA,EAAOD,CAAQ;AAAA,UAExC;AAEA,UAAAD,IAAqB,KAAK;AAAA,YACxBC;AAAA,YACA;AAAA,YACAf;AAAA,YACAc;AAAA,YACA;AAAA,cACE,UAAU;AAAA,cACV,WAAW;AAAA,YAAA;AAAA,UACb;AAAA,QAEJ;AAAA,MAAA;AAAA,MAEF;AAAA,IAAA,GAEFb,EAAM,GAAGA,EAAM,MAAM,OAAO,MAAM;AAChC,MAAAa,GAAoB,QAAA,GACpBA,IAAqB;AAAA,IACvB,CAAC;AAAA,EACH;AACF;AApIOzB,IAAA4B,EAAA3B,CAAA;AAAMI,IAANwB,8BAVP9B,GAUaM,CAAA;AAANyB,EAAA9B,GAAA,GAAMK,CAAA;"}
@@ -1,6 +1,6 @@
1
1
  import { j as p } from "./index-CM_6yF2v.js";
2
- import { I as D, R as C, S as m } from "./Preferences-85Q9FAmb.js";
3
- import { B as P } from "./BasePlugin-CU8beLYu.js";
2
+ import { I as D, R as C, S as m } from "./Preferences-BF2fcXrn.js";
3
+ import { B as P } from "./BasePlugin-YOi2_vUo.js";
4
4
  import { I as j } from "./IconQuickEdit-CMCQncyj.js";
5
5
  var N = Object.create, w = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, E = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), I = (t) => {
6
6
  throw TypeError(t);
@@ -208,4 +208,4 @@ Q(_, 1, g);
208
208
  export {
209
209
  g as PluginInArticleLinks
210
210
  };
211
- //# sourceMappingURL=index-DGtq21uW.js.map
211
+ //# sourceMappingURL=index-BBNseJXG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DGtq21uW.js","sources":["../src/plugins/in-article-links/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { CompareApiRequestOptions } from '../quick-diff/index.js'\nimport { QuickEditOptions } from '../quick-edit/index.js'\nimport { WikiLinkMetadata } from '@/services/WikiTitleService.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n inArticleLinks: PluginInArticleLinks\n }\n interface Events {\n 'in-article-links/anchor-parsed'(payload: {\n ctx: InPageEdit\n anchor: HTMLAnchorElement\n info: InArticleWikiAnchorMetadata\n }): void\n 'in-article-links/anchor-clicked'(payload: {\n ctx: InPageEdit\n anchor: HTMLAnchorElement\n info: InArticleWikiAnchorMetadata\n event: MouseEvent\n action: 'quickEdit' | 'quickDiff'\n }): void\n }\n interface PreferencesMap {\n 'inArticleLinks.quickEdit.enable': boolean\n 'inArticleLinks.quickDiff.enable': boolean\n 'inArticleLinks.quickEdit.redlinks': boolean\n }\n}\n\nexport interface InArticleWikiAnchorMetadata extends WikiLinkMetadata {\n $el: HTMLAnchorElement\n kind: 'normal' | 'mw:File'\n external: boolean\n redlink: boolean\n}\n\n@Inject(['wiki', 'wikiTitle', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'inArticleLinks.enable': Schema.boolean()\n .description('Whether to enable in-article links')\n .default(true),\n 'inArticleLinks.quickDiff.enable': Schema.boolean()\n .description('Whether to enable in-article links for quick diff')\n .default(true),\n 'inArticleLinks.quickEdit.enable': Schema.boolean()\n .description('Whether to enable in-article links for quick edit')\n .default(true),\n 'inArticleLinks.quickEdit.redlinks': Schema.boolean()\n .description('Whether to show quick edit button for redlinks')\n .default(true),\n })\n .description('In-article links preferences')\n .extra('category', 'in-article-links')\n)\nexport class PluginInArticleLinks extends BasePlugin<{\n linkClassName: string\n}> {\n constructor(ctx: InPageEdit) {\n super(\n ctx,\n {\n linkClassName: 'ipe__in-article-link',\n },\n 'InArticleLinks'\n )\n this.ctx.set('inArticleLinks', this)\n const $ = this.ctx.$\n\n this.ctx.preferences.defineCategory({\n name: 'in-article-links',\n label: $`prefs.inArticleLinks.label`,\n description: $`prefs.inArticleLinks.$`,\n index: 9,\n })\n }\n\n protected async start() {\n // TODO: 这些都不应该硬编码,暂时先这样\n if (await this.ctx.preferences.get('inArticleLinks.quickEdit.enable')) {\n this.handleQuickEdit()\n }\n if (await this.ctx.preferences.get('inArticleLinks.quickDiff.enable')) {\n this.handleQuickDiff()\n }\n }\n\n protected async stop() {\n Array.from(\n document.getElementsByClassName(this.config.linkClassName) as HTMLCollectionOf<HTMLElement>\n ).forEach((el) => {\n el.remove()\n })\n document.querySelectorAll<HTMLElement>('[data-ipe-edit-mounted]').forEach((el) => {\n el.dataset.ipeEditMounted = undefined\n })\n }\n\n private _cachedAnchorInfo = new WeakMap<HTMLAnchorElement, InArticleWikiAnchorMetadata>()\n parseAnchor(anchor: HTMLAnchorElement): InArticleWikiAnchorMetadata | null {\n // 不是链接元素\n if (!(anchor instanceof HTMLAnchorElement)) {\n return null\n }\n\n const cached = this._cachedAnchorInfo.get(anchor)\n if (cached) {\n return cached\n }\n\n const attrHref = anchor.getAttribute('href') || ''\n if (!this.ctx.wikiTitle.validateHrefAttr(attrHref)) {\n return null\n }\n const href = anchor.href || ''\n const linkInfo = this.ctx.wikiTitle.parseWikiLink(href)\n if (!linkInfo) {\n return null\n }\n\n const info: InArticleWikiAnchorMetadata = {\n $el: anchor,\n kind: anchor.closest('[typeof^=\"mw:File\"]') ? 'mw:File' : 'normal',\n external: anchor.classList.contains('external') || !!attrHref.startsWith('http'),\n redlink: anchor.classList.contains('new') || linkInfo.params.has('redlink'),\n ...linkInfo,\n }\n this._cachedAnchorInfo.set(anchor, info)\n this.ctx.emit('in-article-links/anchor-parsed', {\n ctx: this.ctx,\n anchor,\n info,\n })\n return info\n }\n\n scanAnchors(\n parent: HTMLElement,\n filter?: (info: InArticleWikiAnchorMetadata) => boolean\n ): InArticleWikiAnchorMetadata[] {\n const anchors = parent.querySelectorAll<HTMLAnchorElement>('a[href]')\n return Array.from(anchors)\n .map((anchor) => this.parseAnchor(anchor))\n .filter(\n (anchor) => anchor !== null && (!filter || filter(anchor))\n ) as InArticleWikiAnchorMetadata[]\n }\n\n async handleQuickEdit() {\n let enable = false\n const showButtonOnRedlinks = await this.ctx.preferences.get('inArticleLinks.quickEdit.redlinks')\n\n this.ctx.inject(['quickEdit'], (ctx) => {\n enable = true\n ctx.on('dispose', () => {\n enable = false\n })\n\n window?.mw?.hook?.('wikipage.content').add(($content) => {\n if (!enable) {\n return\n }\n const anchors = this.scanAnchors($content.get(0)!, ({ action, title, redlink }) => {\n const enabled = showButtonOnRedlinks || !redlink\n if (!enabled) {\n return false\n }\n const isActionEdit = ['edit', 'create'].includes(action)\n if (isActionEdit) {\n return true\n }\n const isSpecialEdit = title?.isSpecial('edit') || title?.isSpecial('newsection')\n if (isSpecialEdit) {\n return title!.getMainText().split('/').length >= 2\n }\n return false\n })\n anchors.forEach((info) => {\n const { $el, title, pageId, params } = info\n if ($el.dataset.ipeEditMounted) {\n return\n }\n $el.dataset.ipeEditMounted = '1'\n\n const notCompatible = params.has('preload') || params.has('redo')\n if (notCompatible) {\n return this.ctx.logger.debug($el, `Not compatible with quick edit`)\n }\n\n const titleText = title?.getPrefixedDBKey() || ''\n const sectionRaw = params.get('section')?.replace(/^T-/, '') || undefined\n const revisionRaw = params.get('oldid')\n const createOnly = params.has('redlink')\n\n let section: 'new' | number | undefined = undefined\n if (sectionRaw === 'new' || title?.isSpecial('newsection')) {\n section = 'new'\n } else if (sectionRaw && /^\\d+$/.test(sectionRaw)) {\n section = parseInt(sectionRaw, 10)\n }\n\n const revision = revisionRaw ? parseInt(revisionRaw, 10) : undefined\n\n const payload: Partial<QuickEditOptions> = {\n title: titleText,\n pageId: pageId || undefined,\n section,\n revision,\n createOnly,\n }\n\n const link = (\n <a\n href={`#ipe://quick-edit/`}\n dataset={payload as any}\n className={`${this.config.linkClassName} ipe-quick-edit ${createOnly ? 'ipe-quick-edit--create-only' : ''}`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.ctx.emit('in-article-links/anchor-clicked', {\n ctx: this.ctx,\n anchor: $el,\n info,\n event: e,\n action: 'quickEdit',\n })\n ctx.quickEdit.showModal(payload)\n }}\n >\n <IconQuickEdit className=\"ipe-icon\" />\n </a>\n )\n\n $el.insertAdjacentElement('afterend', link)\n })\n })\n })\n }\n\n handleQuickDiff() {\n let enable = false\n const isRelative = (str: string): str is 'prev' | 'next' | 'cur' =>\n ['prev', 'next', 'cur'].includes(str)\n\n this.ctx.inject(['quickDiff'], (ctx) => {\n enable = true\n ctx.on('dispose', () => {\n enable = false\n })\n\n window?.mw?.hook?.('wikipage.content').add(($content) => {\n if (!enable) {\n return\n }\n const anchors = this.scanAnchors($content.get(0)!, ({ params, title }) => {\n return !!(params.has('diff') || title?.isSpecial('diff'))\n })\n anchors.forEach((info) => {\n const { $el, title, params } = info\n if ($el.dataset.ipeDiffMounted) {\n return\n }\n $el.dataset.ipeDiffMounted = '1'\n\n let diff: string | null\n let oldid: string | null\n if (title?.getNamespaceId() === -1) {\n // prettier-ignore\n ;[/** special page name */, oldid, diff] = title.getMainDBKey().split('/')\n if (!diff) {\n diff = 'prev'\n }\n } else {\n diff = params.get('diff')\n oldid = params.get('oldid')\n }\n if (!diff || !oldid) {\n return\n }\n\n const compare: Partial<CompareApiRequestOptions> = {}\n if (isRelative(diff)) {\n compare.fromrev = parseInt(oldid)\n compare.torelative = diff\n } else {\n compare.fromrev = parseInt(oldid)\n compare.torev = parseInt(diff)\n }\n\n const link = (\n <a\n href={`#ipe://quick-diff/`}\n dataset={compare as any}\n className={`${this.config.linkClassName} ipe-quick-diff`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.ctx.emit('in-article-links/anchor-clicked', {\n ctx: this.ctx,\n anchor: $el,\n info,\n event: e,\n action: 'quickDiff',\n })\n ctx.quickDiff.comparePages(compare)\n }}\n >\n <svg\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-file-diff ipe-icon\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M14 3v4a1 1 0 0 0 1 1h4\" />\n <path d=\"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z\" />\n <path d=\"M12 10l0 4\" />\n <path d=\"M10 12l4 0\" />\n <path d=\"M10 17l4 0\" />\n </svg>\n </a>\n )\n\n $el.insertAdjacentElement('afterend', link)\n })\n })\n })\n }\n}\n"],"names":["_PluginInArticleLinks_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginInArticleLinks","BasePlugin","ctx","$","el","anchor","cached","attrHref","href","linkInfo","info","parent","filter","anchors","enable","showButtonOnRedlinks","$content","action","title","redlink","$el","pageId","params","titleText","sectionRaw","revisionRaw","createOnly","section","revision","payload","link","jsx","e","IconQuickEdit","isRelative","str","diff","oldid","compare","jsxs","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
1
+ {"version":3,"file":"index-BBNseJXG.js","sources":["../src/plugins/in-article-links/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { CompareApiRequestOptions } from '../quick-diff/index.js'\nimport { QuickEditOptions } from '../quick-edit/index.js'\nimport { WikiLinkMetadata } from '@/services/WikiTitleService.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n inArticleLinks: PluginInArticleLinks\n }\n interface Events {\n 'in-article-links/anchor-parsed'(payload: {\n ctx: InPageEdit\n anchor: HTMLAnchorElement\n info: InArticleWikiAnchorMetadata\n }): void\n 'in-article-links/anchor-clicked'(payload: {\n ctx: InPageEdit\n anchor: HTMLAnchorElement\n info: InArticleWikiAnchorMetadata\n event: MouseEvent\n action: 'quickEdit' | 'quickDiff'\n }): void\n }\n interface PreferencesMap {\n 'inArticleLinks.quickEdit.enable': boolean\n 'inArticleLinks.quickDiff.enable': boolean\n 'inArticleLinks.quickEdit.redlinks': boolean\n }\n}\n\nexport interface InArticleWikiAnchorMetadata extends WikiLinkMetadata {\n $el: HTMLAnchorElement\n kind: 'normal' | 'mw:File'\n external: boolean\n redlink: boolean\n}\n\n@Inject(['wiki', 'wikiTitle', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'inArticleLinks.enable': Schema.boolean()\n .description('Whether to enable in-article links')\n .default(true),\n 'inArticleLinks.quickDiff.enable': Schema.boolean()\n .description('Whether to enable in-article links for quick diff')\n .default(true),\n 'inArticleLinks.quickEdit.enable': Schema.boolean()\n .description('Whether to enable in-article links for quick edit')\n .default(true),\n 'inArticleLinks.quickEdit.redlinks': Schema.boolean()\n .description('Whether to show quick edit button for redlinks')\n .default(true),\n })\n .description('In-article links preferences')\n .extra('category', 'in-article-links')\n)\nexport class PluginInArticleLinks extends BasePlugin<{\n linkClassName: string\n}> {\n constructor(ctx: InPageEdit) {\n super(\n ctx,\n {\n linkClassName: 'ipe__in-article-link',\n },\n 'InArticleLinks'\n )\n this.ctx.set('inArticleLinks', this)\n const $ = this.ctx.$\n\n this.ctx.preferences.defineCategory({\n name: 'in-article-links',\n label: $`prefs.inArticleLinks.label`,\n description: $`prefs.inArticleLinks.$`,\n index: 9,\n })\n }\n\n protected async start() {\n // TODO: 这些都不应该硬编码,暂时先这样\n if (await this.ctx.preferences.get('inArticleLinks.quickEdit.enable')) {\n this.handleQuickEdit()\n }\n if (await this.ctx.preferences.get('inArticleLinks.quickDiff.enable')) {\n this.handleQuickDiff()\n }\n }\n\n protected async stop() {\n Array.from(\n document.getElementsByClassName(this.config.linkClassName) as HTMLCollectionOf<HTMLElement>\n ).forEach((el) => {\n el.remove()\n })\n document.querySelectorAll<HTMLElement>('[data-ipe-edit-mounted]').forEach((el) => {\n el.dataset.ipeEditMounted = undefined\n })\n }\n\n private _cachedAnchorInfo = new WeakMap<HTMLAnchorElement, InArticleWikiAnchorMetadata>()\n parseAnchor(anchor: HTMLAnchorElement): InArticleWikiAnchorMetadata | null {\n // 不是链接元素\n if (!(anchor instanceof HTMLAnchorElement)) {\n return null\n }\n\n const cached = this._cachedAnchorInfo.get(anchor)\n if (cached) {\n return cached\n }\n\n const attrHref = anchor.getAttribute('href') || ''\n if (!this.ctx.wikiTitle.validateHrefAttr(attrHref)) {\n return null\n }\n const href = anchor.href || ''\n const linkInfo = this.ctx.wikiTitle.parseWikiLink(href)\n if (!linkInfo) {\n return null\n }\n\n const info: InArticleWikiAnchorMetadata = {\n $el: anchor,\n kind: anchor.closest('[typeof^=\"mw:File\"]') ? 'mw:File' : 'normal',\n external: anchor.classList.contains('external') || !!attrHref.startsWith('http'),\n redlink: anchor.classList.contains('new') || linkInfo.params.has('redlink'),\n ...linkInfo,\n }\n this._cachedAnchorInfo.set(anchor, info)\n this.ctx.emit('in-article-links/anchor-parsed', {\n ctx: this.ctx,\n anchor,\n info,\n })\n return info\n }\n\n scanAnchors(\n parent: HTMLElement,\n filter?: (info: InArticleWikiAnchorMetadata) => boolean\n ): InArticleWikiAnchorMetadata[] {\n const anchors = parent.querySelectorAll<HTMLAnchorElement>('a[href]')\n return Array.from(anchors)\n .map((anchor) => this.parseAnchor(anchor))\n .filter(\n (anchor) => anchor !== null && (!filter || filter(anchor))\n ) as InArticleWikiAnchorMetadata[]\n }\n\n async handleQuickEdit() {\n let enable = false\n const showButtonOnRedlinks = await this.ctx.preferences.get('inArticleLinks.quickEdit.redlinks')\n\n this.ctx.inject(['quickEdit'], (ctx) => {\n enable = true\n ctx.on('dispose', () => {\n enable = false\n })\n\n window?.mw?.hook?.('wikipage.content').add(($content) => {\n if (!enable) {\n return\n }\n const anchors = this.scanAnchors($content.get(0)!, ({ action, title, redlink }) => {\n const enabled = showButtonOnRedlinks || !redlink\n if (!enabled) {\n return false\n }\n const isActionEdit = ['edit', 'create'].includes(action)\n if (isActionEdit) {\n return true\n }\n const isSpecialEdit = title?.isSpecial('edit') || title?.isSpecial('newsection')\n if (isSpecialEdit) {\n return title!.getMainText().split('/').length >= 2\n }\n return false\n })\n anchors.forEach((info) => {\n const { $el, title, pageId, params } = info\n if ($el.dataset.ipeEditMounted) {\n return\n }\n $el.dataset.ipeEditMounted = '1'\n\n const notCompatible = params.has('preload') || params.has('redo')\n if (notCompatible) {\n return this.ctx.logger.debug($el, `Not compatible with quick edit`)\n }\n\n const titleText = title?.getPrefixedDBKey() || ''\n const sectionRaw = params.get('section')?.replace(/^T-/, '') || undefined\n const revisionRaw = params.get('oldid')\n const createOnly = params.has('redlink')\n\n let section: 'new' | number | undefined = undefined\n if (sectionRaw === 'new' || title?.isSpecial('newsection')) {\n section = 'new'\n } else if (sectionRaw && /^\\d+$/.test(sectionRaw)) {\n section = parseInt(sectionRaw, 10)\n }\n\n const revision = revisionRaw ? parseInt(revisionRaw, 10) : undefined\n\n const payload: Partial<QuickEditOptions> = {\n title: titleText,\n pageId: pageId || undefined,\n section,\n revision,\n createOnly,\n }\n\n const link = (\n <a\n href={`#ipe://quick-edit/`}\n dataset={payload as any}\n className={`${this.config.linkClassName} ipe-quick-edit ${createOnly ? 'ipe-quick-edit--create-only' : ''}`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.ctx.emit('in-article-links/anchor-clicked', {\n ctx: this.ctx,\n anchor: $el,\n info,\n event: e,\n action: 'quickEdit',\n })\n ctx.quickEdit.showModal(payload)\n }}\n >\n <IconQuickEdit className=\"ipe-icon\" />\n </a>\n )\n\n $el.insertAdjacentElement('afterend', link)\n })\n })\n })\n }\n\n handleQuickDiff() {\n let enable = false\n const isRelative = (str: string): str is 'prev' | 'next' | 'cur' =>\n ['prev', 'next', 'cur'].includes(str)\n\n this.ctx.inject(['quickDiff'], (ctx) => {\n enable = true\n ctx.on('dispose', () => {\n enable = false\n })\n\n window?.mw?.hook?.('wikipage.content').add(($content) => {\n if (!enable) {\n return\n }\n const anchors = this.scanAnchors($content.get(0)!, ({ params, title }) => {\n return !!(params.has('diff') || title?.isSpecial('diff'))\n })\n anchors.forEach((info) => {\n const { $el, title, params } = info\n if ($el.dataset.ipeDiffMounted) {\n return\n }\n $el.dataset.ipeDiffMounted = '1'\n\n let diff: string | null\n let oldid: string | null\n if (title?.getNamespaceId() === -1) {\n // prettier-ignore\n ;[/** special page name */, oldid, diff] = title.getMainDBKey().split('/')\n if (!diff) {\n diff = 'prev'\n }\n } else {\n diff = params.get('diff')\n oldid = params.get('oldid')\n }\n if (!diff || !oldid) {\n return\n }\n\n const compare: Partial<CompareApiRequestOptions> = {}\n if (isRelative(diff)) {\n compare.fromrev = parseInt(oldid)\n compare.torelative = diff\n } else {\n compare.fromrev = parseInt(oldid)\n compare.torev = parseInt(diff)\n }\n\n const link = (\n <a\n href={`#ipe://quick-diff/`}\n dataset={compare as any}\n className={`${this.config.linkClassName} ipe-quick-diff`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.ctx.emit('in-article-links/anchor-clicked', {\n ctx: this.ctx,\n anchor: $el,\n info,\n event: e,\n action: 'quickDiff',\n })\n ctx.quickDiff.comparePages(compare)\n }}\n >\n <svg\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-file-diff ipe-icon\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M14 3v4a1 1 0 0 0 1 1h4\" />\n <path d=\"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z\" />\n <path d=\"M12 10l0 4\" />\n <path d=\"M10 12l4 0\" />\n <path d=\"M10 17l4 0\" />\n </svg>\n </a>\n )\n\n $el.insertAdjacentElement('afterend', link)\n })\n })\n })\n }\n}\n"],"names":["_PluginInArticleLinks_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginInArticleLinks","BasePlugin","ctx","$","el","anchor","cached","attrHref","href","linkInfo","info","parent","filter","anchors","enable","showButtonOnRedlinks","$content","action","title","redlink","$el","pageId","params","titleText","sectionRaw","revisionRaw","createOnly","section","revision","payload","link","jsx","e","IconQuickEdit","isRelative","str","diff","oldid","compare","jsxs","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { j as a, P as S } from "./index-CM_6yF2v.js";
2
- import { R as E, I as j, S as k } from "./Preferences-85Q9FAmb.js";
3
- import { B as q } from "./BasePlugin-CU8beLYu.js";
2
+ import { R as E, I as j, S as k } from "./Preferences-BF2fcXrn.js";
3
+ import { B as q } from "./BasePlugin-YOi2_vUo.js";
4
4
  import { T as F } from "./index-DD5CVCfD.js";
5
5
  import { C as v, I } from "./InputBox-nQKtiWtZ.js";
6
6
  var T = Object.create, p = Object.defineProperty, B = Object.getOwnPropertyDescriptor, b = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), _ = (t) => {
@@ -57,7 +57,7 @@ class h extends (P = q) {
57
57
  ]
58
58
  }
59
59
  ),
60
- tooltip: o`Quick Move`,
60
+ tooltip: () => o`Quick Move`,
61
61
  group: "group1",
62
62
  index: 1,
63
63
  onClick: () => {
@@ -176,4 +176,4 @@ R(g, 1, h);
176
176
  export {
177
177
  h as PluginQuickMove
178
178
  };
179
- //# sourceMappingURL=index-Ci82vLXg.js.map
179
+ //# sourceMappingURL=index-BrYKe18j.js.map