@inpageedit/core 0.14.5 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/{BasePlugin-DD7l-5Xw.js → BasePlugin-BCVSn9QJ.js} +2 -2
  2. package/dist/{BasePlugin-DD7l-5Xw.js.map → BasePlugin-BCVSn9QJ.js.map} +1 -1
  3. package/dist/InputBox-CZ1v4_l3.js +50 -0
  4. package/dist/InputBox-CZ1v4_l3.js.map +1 -0
  5. package/dist/PluginImagesUsed-Bq_C_rgg.js +90 -0
  6. package/dist/PluginImagesUsed-Bq_C_rgg.js.map +1 -0
  7. package/dist/{PluginPrefSync-CbFuuC19.js → PluginPrefSync-DP5NyPnI.js} +4 -4
  8. package/dist/{PluginPrefSync-CbFuuC19.js.map → PluginPrefSync-DP5NyPnI.js.map} +1 -1
  9. package/dist/{PluginStoreApp-MbC3G9tu.js → PluginStoreApp-_YWpLgfs.js} +2 -2
  10. package/dist/{PluginStoreApp-MbC3G9tu.js.map → PluginStoreApp-_YWpLgfs.js.map} +1 -1
  11. package/dist/PluginTemplatesUsed-DS_rHctR.js +76 -0
  12. package/dist/PluginTemplatesUsed-DS_rHctR.js.map +1 -0
  13. package/dist/Preferences-DqtjY7XU.js +1541 -0
  14. package/dist/Preferences-DqtjY7XU.js.map +1 -0
  15. package/dist/browser-DR-yCqVg.js +1160 -0
  16. package/dist/browser-DR-yCqVg.js.map +1 -0
  17. package/dist/components/index.js +1 -1
  18. package/dist/{index-BpQ6VGMz.js → index-B9VO3swL.js} +108 -63
  19. package/dist/index-B9VO3swL.js.map +1 -0
  20. package/dist/{index-BanevHQ2.js → index-C3t-Xj3e.js} +85 -82
  21. package/dist/index-C3t-Xj3e.js.map +1 -0
  22. package/dist/{index-WfXtYVMt.js → index-CS1kidKF.js} +149 -117
  23. package/dist/index-CS1kidKF.js.map +1 -0
  24. package/dist/index-Cb2_vqBl.js +44 -0
  25. package/dist/index-Cb2_vqBl.js.map +1 -0
  26. package/dist/{index-B3jld2sl.js → index-CbdkXGs7.js} +4 -4
  27. package/dist/{index-B3jld2sl.js.map → index-CbdkXGs7.js.map} +1 -1
  28. package/dist/{index-DxaqNWv4.js → index-CcAmmXbb.js} +904 -704
  29. package/dist/index-CcAmmXbb.js.map +1 -0
  30. package/dist/index-Cq8xPcEY.js +170 -0
  31. package/dist/index-Cq8xPcEY.js.map +1 -0
  32. package/dist/{index-DensW9qt.js → index-DPA1ptYq.js} +5 -5
  33. package/dist/index-DPA1ptYq.js.map +1 -0
  34. package/dist/{index-BjDTD66_.js → index-DVvsTsLI.js} +29 -15
  35. package/dist/index-DVvsTsLI.js.map +1 -0
  36. package/dist/{index-CnR6CqkM.js → index-DjyjqpeO.js} +2 -2
  37. package/dist/{index-CnR6CqkM.js.map → index-DjyjqpeO.js.map} +1 -1
  38. package/dist/index-FvMu0Ka0.js +342 -0
  39. package/dist/index-FvMu0Ka0.js.map +1 -0
  40. package/dist/index-mFwJhDwE.js +168 -0
  41. package/dist/index-mFwJhDwE.js.map +1 -0
  42. package/dist/{index-De25v1_Q.js → index-n5KKWE9v.js} +6 -6
  43. package/dist/index-n5KKWE9v.js.map +1 -0
  44. package/dist/{index-DKCZDN-Q.js → index-rKL4D_7I.js} +5 -5
  45. package/dist/{index-DKCZDN-Q.js.map → index-rKL4D_7I.js.map} +1 -1
  46. package/dist/index.d.ts +334 -148
  47. package/dist/index.js +5 -5
  48. package/dist/models/index.js +1 -1
  49. package/dist/plugins/index.js +18 -14
  50. package/dist/plugins/index.js.map +1 -1
  51. package/dist/services/index.js +9 -8
  52. package/dist/style.css +1 -1
  53. package/lib/index.umd.js +14 -12
  54. package/lib/index.umd.js.map +1 -1
  55. package/lib/style.css +1 -1
  56. package/package.json +4 -2
  57. package/dist/InputBox-nQKtiWtZ.js +0 -30
  58. package/dist/InputBox-nQKtiWtZ.js.map +0 -1
  59. package/dist/Preferences-C10tZMl1.js +0 -2701
  60. package/dist/Preferences-C10tZMl1.js.map +0 -1
  61. package/dist/index-7R2LfhNn.js +0 -220
  62. package/dist/index-7R2LfhNn.js.map +0 -1
  63. package/dist/index-BXNyXvre.js +0 -116
  64. package/dist/index-BXNyXvre.js.map +0 -1
  65. package/dist/index-BanevHQ2.js.map +0 -1
  66. package/dist/index-BjDTD66_.js.map +0 -1
  67. package/dist/index-BpQ6VGMz.js.map +0 -1
  68. package/dist/index-De25v1_Q.js.map +0 -1
  69. package/dist/index-DensW9qt.js.map +0 -1
  70. package/dist/index-DxaqNWv4.js.map +0 -1
  71. package/dist/index-WfXtYVMt.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-DR-yCqVg.js","sources":["../../../node_modules/.pnpm/wiki-saikou@7.3.0/node_modules/wiki-saikou/dist/browser.js"],"sourcesContent":["function M(o) {\n if (typeof globalThis.structuredClone == \"function\")\n try {\n return globalThis.structuredClone(o);\n } catch {\n }\n return k(o, /* @__PURE__ */ new WeakMap());\n}\nfunction k(o, r) {\n if (typeof o != \"object\" || o === null) return o;\n const t = r.get(o);\n if (t) return t;\n if (o instanceof Date) return new Date(o.getTime());\n if (o instanceof RegExp)\n return new RegExp(o.source, o.flags);\n if (o instanceof URL) return new URL(o.toString());\n if (o instanceof URLSearchParams)\n return new URLSearchParams(o.toString());\n if (o instanceof ArrayBuffer) return o.slice(0);\n if (ArrayBuffer.isView(o)) {\n if (o instanceof DataView)\n return new DataView(\n o.buffer.slice(0),\n o.byteOffset,\n o.byteLength\n );\n const s = o, a = s.constructor;\n return new a(s.buffer.slice(0), s.byteOffset, s.length);\n }\n if (o instanceof Map) {\n const s = /* @__PURE__ */ new Map();\n return r.set(o, s), o.forEach((a, f) => {\n s.set(k(f, r), k(a, r));\n }), s;\n }\n if (o instanceof Set) {\n const s = /* @__PURE__ */ new Set();\n return r.set(o, s), o.forEach((a) => s.add(k(a, r))), s;\n }\n if (Array.isArray(o)) {\n const s = new Array(o.length);\n r.set(o, s);\n for (let a = 0; a < s.length; a++)\n s[a] = k(o[a], r);\n return s;\n }\n const e = Object.getPrototypeOf(o), n = Object.create(e);\n r.set(o, n);\n const i = Object.getOwnPropertyDescriptors(o);\n for (const s of Reflect.ownKeys(i)) {\n const a = i[s];\n \"value\" in a && (a.value = k(a.value, r)), Object.defineProperty(n, s, a);\n }\n return n;\n}\nfunction L(o) {\n if (typeof o != \"object\" || o === null)\n return !1;\n const r = Object.getPrototypeOf(o);\n return r === Object.prototype || r === null;\n}\nconst W = function(o) {\n const r = this.constructor.prototype, t = Reflect.get(r, o, r);\n function e(...n) {\n return Reflect.apply(t, e, n);\n }\n Reflect.setPrototypeOf(e, r);\n for (const n of Reflect.ownKeys(t)) {\n const i = Reflect.getOwnPropertyDescriptor(t, n);\n i && Reflect.defineProperty(e, n, i);\n }\n return e;\n};\nW.prototype = Object.create(Function.prototype);\nconst F = W;\nfunction A(o, ...r) {\n const t = M(o || {});\n for (const e of r)\n if (e != null)\n for (const n of Reflect.ownKeys(e)) {\n const i = e[n];\n if (typeof i > \"u\") continue;\n if (i === null) {\n delete t[n];\n continue;\n }\n const s = t[n];\n L(s) && L(i) ? t[n] = A(s, i) : t[n] = M(i);\n }\n return t;\n}\nvar O = /* @__PURE__ */ ((o) => (o.BODY_USED = \"BODY_USED\", o.NO_BODY_READER = \"NO_BODY_READER\", o.TIMEOUT = \"TIMEOUT\", o.NETWORK_ERROR = \"NETWORK_ERROR\", o.BODY_NOT_ALLOWED = \"BODY_NOT_ALLOWED\", o.HOOK_CONTEXT_CHANGED = \"HOOK_CONTEXT_CHANGED\", o.ABORTED_BY_HOOK = \"ABORTED_BY_HOOK\", o.INVALID_HOOK_CALLBACK = \"INVALID_HOOK_CALLBACK\", o.UNEXPECTED_HOOK_RETURN = \"UNEXPECTED_HOOK_RETURN\", o.UNSUPPORTED_RESPONSE_TYPE = \"UNSUPPORTED_RESPONSE_TYPE\", o.BODY_TRANSFORM_ERROR = \"BODY_TRANSFORM_ERROR\", o))(O || {});\nclass m extends Error {\n constructor(r, t, e, n) {\n super(t, n), this.code = r, this.context = e;\n }\n name = \"FexiosError\";\n static is(r, t) {\n return !(r instanceof m) || r instanceof D ? !1 : t ? r.code === t : !0;\n }\n}\nclass D extends m {\n constructor(r, t, e) {\n super(t.statusText, r, void 0, e), this.response = t;\n }\n name = \"FexiosResponseError\";\n static is(r) {\n return r instanceof D;\n }\n}\nconst Z = (o) => m.is(o);\nvar I;\n((o) => {\n o.makeHeaders = (r) => {\n if (!r) return new Headers();\n if (r instanceof Headers) return new Headers(r);\n const t = new Headers();\n if (r instanceof Map) {\n for (const [e, n] of r.entries())\n if (n != null)\n if (Array.isArray(n))\n for (const i of n)\n i != null && t.append(e, String(i));\n else\n t.append(e, String(n));\n return t;\n }\n if (L(r)) {\n for (const [e, n] of Object.entries(r))\n if (n != null)\n if (Array.isArray(n))\n for (const i of n)\n i != null && t.append(e, String(i));\n else\n t.append(e, String(n));\n return t;\n }\n throw new TypeError(\n \"only plain object, Map/ReadonlyMap, or Headers is supported\"\n );\n }, o.toHeaderRecord = (r) => {\n if (r instanceof Headers) {\n const t = {};\n return r.forEach((e, n) => {\n t[n] = t[n] ? [...t[n], e] : [e];\n }), t;\n }\n if (r instanceof Map) {\n const t = {};\n for (const [e, n] of r.entries())\n if (n != null)\n if (Array.isArray(n)) {\n const i = n.filter((s) => s != null).map((s) => String(s));\n i.length && (t[e] = (t[e] ?? []).concat(i));\n } else {\n const i = String(n);\n t[e] = t[e] ? [...t[e], i] : [i];\n }\n return t;\n }\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n r\n )}`\n );\n }, o.mergeHeaders = (...r) => {\n const t = new Headers(), e = (n) => {\n for (const [i, s] of Object.entries(n))\n if (s !== void 0) {\n if (s === null) {\n t.delete(i);\n continue;\n }\n if (Array.isArray(s)) {\n t.delete(i);\n for (const a of s)\n a != null && t.append(i, String(a));\n } else\n t.set(i, String(s));\n }\n };\n for (const n of r) {\n if (n == null) continue;\n if (n instanceof Headers) {\n n.forEach((s, a) => {\n t.set(a, s);\n });\n continue;\n }\n if (L(n)) {\n e(n);\n continue;\n }\n const i = (0, o.toHeaderRecord)(n);\n for (const [s, a] of Object.entries(i)) {\n t.delete(s);\n for (const f of a) t.append(s, f);\n }\n }\n return t;\n };\n})(I || (I = {}));\nvar T;\n((o) => {\n o.makeSearchParams = (e) => {\n if (!e)\n return new URLSearchParams();\n if (e instanceof URLSearchParams)\n return e;\n if (typeof e != \"object\" || e?.constructor !== Object)\n throw new TypeError(\"only plain object is supported\");\n const n = new URLSearchParams(), i = (f, c) => {\n c != null && n.append(f, c);\n }, s = (f, c) => {\n c != null && n.set(f, c);\n }, a = (f, c) => {\n if (c != null) {\n if (Array.isArray(c)) {\n for (const l of c) i(f, l?.toString());\n return;\n }\n if (typeof c == \"object\" && c.constructor === Object) {\n for (const [l, u] of Object.entries(c)) {\n if (u == null) continue;\n const g = l.endsWith(\"[]\"), h = g ? l.slice(0, -2) : l, E = `${f}[${h}]`;\n if (g) {\n const w = `${E}[]`;\n if (Array.isArray(u))\n for (const p of u) i(w, p?.toString());\n else typeof u == \"object\" && u !== null && u.constructor === Object ? a(`${E}[]`, u) : i(w, u?.toString());\n } else if (Array.isArray(u))\n for (const w of u) i(E, w?.toString());\n else typeof u == \"object\" && u !== null && u.constructor === Object ? a(E, u) : s(E, u?.toString());\n }\n return;\n }\n s(f, c?.toString());\n }\n };\n for (const [f, c] of Object.entries(e))\n a(f, c);\n return n;\n }, o.makeQueryString = (e) => (0, o.makeSearchParams)(e).toString(), o.makeURL = (e, n, i, s) => {\n const a = typeof window < \"u\" && window.location?.origin || \"http://localhost\", f = typeof e == \"string\" ? new URL(e, s ?? a) : new URL(e), c = (0, o.toQueryRecord)(f.searchParams), l = (0, o.mergeQueries)(c, n || {}), u = (0, o.makeSearchParams)(l);\n return f.search = u.toString(), typeof i < \"u\" && (f.hash = i), f;\n }, o.toQueryRecord = (e) => {\n typeof e == \"string\" && (e = (0, o.fromString)(e));\n const n = {}, i = (a) => {\n if (!a.includes(\"[\")) return { path: [a], forceArray: !1 };\n const c = [a.slice(0, a.indexOf(\"[\"))], l = /\\[([^\\]]*)\\]/g;\n let u, g = !1, h = !1;\n for (; u = l.exec(a); )\n u[1] === \"\" ? (g = !0, h = !0) : (c.push(u[1]), h = !1);\n return g && h && (c[c.length - 1] = c[c.length - 1] + \"[]\"), { path: c, forceArray: g };\n }, s = (a, f, c, l) => {\n let u = a;\n for (let g = 0; g < f.length; g++) {\n const h = f[g];\n g === f.length - 1 ? l ? u[h] === void 0 ? u[h] = [c] : Array.isArray(u[h]) ? u[h].push(c) : u[h] = [u[h], c] : u[h] === void 0 ? u[h] = c : Array.isArray(u[h]) ? u[h].push(c) : u[h] = [u[h], c] : ((u[h] === void 0 || typeof u[h] != \"object\" || Array.isArray(u[h])) && (u[h] = {}), u = u[h]);\n }\n };\n for (const [a, f] of e.entries()) {\n const { path: c, forceArray: l } = i(String(a));\n s(n, c, f?.toString(), l);\n }\n return n;\n }, o.fromString = (e) => {\n const n = e.trim();\n if (!n) return new URLSearchParams();\n if (n.startsWith(\"?\")) return new URLSearchParams(n.slice(1));\n const i = n.indexOf(\"?\");\n if (i >= 0) {\n const s = n.indexOf(\"#\", i + 1), a = n.slice(i + 1, s >= 0 ? s : void 0);\n return new URLSearchParams(a);\n }\n return new URLSearchParams(n);\n }, o.mergeQueries = (...e) => {\n const n = {};\n for (const i of e)\n i != null && t(n, r(i));\n return n;\n };\n function r(e) {\n if (!e) return {};\n if (e instanceof URLSearchParams || e instanceof FormData || e instanceof Map)\n return (0, o.toQueryRecord)(e);\n if (typeof e == \"string\") return (0, o.toQueryRecord)((0, o.fromString)(e));\n if (L(e)) return e;\n throw new TypeError(\n `unsupported type transformation, got: ${Object.prototype.toString.call(\n e\n )}`\n );\n }\n function t(e, n) {\n for (const [i, s] of Object.entries(n)) {\n if (s === void 0) continue;\n if (s === null) {\n delete e[i];\n continue;\n }\n const a = e[i];\n L(a) && L(s) ? t(a, s) : e[i] = M(s);\n }\n }\n})(T || (T = {}));\nclass j {\n constructor(r, t, e) {\n this.rawResponse = r, this.data = t, this.responseType = e, [\"ok\", \"status\", \"statusText\", \"headers\", \"url\", \"redirected\"].forEach(\n (n) => {\n Reflect.defineProperty(this, n, {\n get: () => r[n]\n });\n }\n );\n }\n ok;\n status;\n statusText;\n headers;\n url;\n redirected;\n}\nconst C = (o) => {\n const r = o.reduce((n, i) => n + i.length, 0), t = new Uint8Array(r);\n let e = 0;\n for (const n of o)\n t.set(n, e), e += n.length;\n return t;\n};\nasync function X(o, r, t) {\n const e = o.getReader();\n if (!e)\n throw new m(\n O.NO_BODY_READER,\n \"Failed to get ReadableStream from response body\"\n );\n const n = [];\n let i = 0;\n try {\n for (; ; ) {\n const { done: a, value: f } = await e.read();\n if (a) break;\n n.push(f), i += f.length, t && r > 0 && t(i / r, C(n));\n }\n } finally {\n e.releaseLock?.();\n }\n const s = C(n);\n return t?.(1, s), s;\n}\nconst z = (o) => {\n if (o) {\n if (o.includes(\"application/json\") || o.endsWith(\"+json\"))\n return \"json\";\n if (o.startsWith(\"text/\")) return \"text\";\n if (o.includes(\"multipart/form-data\") || o.includes(\"application/x-www-form-urlencoded\"))\n return \"form\";\n if (/^image\\//.test(o) || /^video\\//.test(o) || /^audio\\//.test(o) || o.includes(\"application/pdf\"))\n return \"blob\";\n if (o.includes(\"application/octet-stream\") || o.includes(\"application/zip\") || o.includes(\"application/x-tar\") || o.includes(\"application/x-7z-compressed\") || o.includes(\"application/x-gzip\"))\n return \"arrayBuffer\";\n }\n};\nasync function q(o, r, t, e, n) {\n const i = o.headers.get(\"content-type\")?.toLowerCase() ?? \"\", s = o.headers.get(\"content-length\"), a = s ? Number(s) : 0, f = o.headers.get(\"upgrade\")?.toLowerCase(), c = o.headers.get(\"connection\")?.toLowerCase();\n let l = r ?? z(i) ?? \"text\";\n if (r || (f === \"websocket\" && c === \"upgrade\" ? l = \"ws\" : i.includes(\"text/event-stream\") && (l = \"stream\")), l === \"stream\") {\n const p = o.url || o.url || \"\", d = await x(\n p,\n o,\n n\n ), R = e?.(d);\n if (typeof R == \"boolean\" ? R : !d.ok)\n throw new D(d.statusText, d);\n return d;\n }\n if (l === \"ws\") {\n const p = o.url || o.url || \"\", d = await K(\n p,\n o,\n n\n ), R = e?.(d);\n if (typeof R == \"boolean\" ? R : !d.ok)\n throw new D(d.statusText, d);\n return d;\n }\n const u = /\\bcharset=([^;]+)/i.exec(i)?.[1]?.trim() || \"utf-8\", g = new TextDecoder(u);\n let h;\n try {\n if (l === \"form\")\n h = await o.formData();\n else {\n const p = await X(o.body, a, t);\n if (l === \"arrayBuffer\")\n h = p.buffer.slice(\n p.byteOffset,\n p.byteOffset + p.byteLength\n );\n else if (l === \"blob\")\n h = new Blob([p], {\n type: i || \"application/octet-stream\"\n });\n else if (l === \"text\") {\n const d = g.decode(p);\n if (r)\n h = d;\n else {\n const R = d.trim();\n if (R.startsWith(\"{\") && R.endsWith(\"}\") || R.startsWith(\"[\") && R.endsWith(\"]\"))\n try {\n h = JSON.parse(R), l = \"json\";\n } catch {\n h = d;\n }\n else\n h = d;\n }\n } else if (l === \"json\") {\n const d = g.decode(p);\n h = d.length ? JSON.parse(d) : null;\n } else\n h = p;\n }\n } catch (p) {\n if (!(p instanceof Error)) throw p;\n try {\n h = await o.text(), l = \"text\";\n } catch {\n throw new m(\n O.BODY_TRANSFORM_ERROR,\n `Failed to transform response body to ${l}`,\n void 0,\n { cause: p }\n );\n }\n }\n const E = new j(\n o,\n h,\n l\n ), w = e?.(E);\n if (typeof w == \"boolean\" ? w : !E.ok)\n throw new D(E.statusText, E);\n return E;\n}\nasync function K(o, r, t) {\n const e = new WebSocket(o.toString()), n = t ?? 6e4;\n return await new Promise((i, s) => {\n const a = n > 0 ? setTimeout(() => {\n e.close(), s(\n new m(\n O.TIMEOUT,\n `WebSocket connection timed out after ${n}ms`\n )\n );\n }, n) : void 0;\n let f = !1;\n const c = () => {\n clearTimeout(a), e.removeEventListener(\"open\", l), e.removeEventListener(\"error\", u), e.removeEventListener(\"close\", g);\n }, l = () => {\n f || (f = !0, c(), i());\n }, u = (h) => {\n f || (f = !0, c(), s(\n new m(\n O.NETWORK_ERROR,\n \"WebSocket connection failed\",\n void 0,\n { cause: h }\n )\n ));\n }, g = (h) => {\n f || (f = !0, c(), s(\n new m(\n O.NETWORK_ERROR,\n `WebSocket connection closed unexpectedly (code: ${h.code}, reason: ${h.reason})`,\n void 0,\n { cause: h }\n )\n ));\n };\n e.addEventListener(\"open\", l), e.addEventListener(\"error\", u), e.addEventListener(\"close\", g);\n }), new j(r || new Response(null), e, \"ws\");\n}\nasync function x(o, r, t) {\n const e = new EventSource(o.toString()), n = t ?? 6e4;\n return await new Promise((i, s) => {\n const a = n > 0 ? setTimeout(() => {\n e.close(), s(\n new m(\n O.TIMEOUT,\n `EventSource connection timed out after ${n}ms`\n )\n );\n }, n) : void 0;\n let f = !1;\n const c = () => {\n clearTimeout(a), e.removeEventListener(\"open\", l), e.removeEventListener(\"error\", u);\n }, l = () => {\n f || (f = !0, c(), i());\n }, u = (g) => {\n f || (f = !0, c(), s(\n new m(\n O.NETWORK_ERROR,\n \"EventSource connection failed\",\n void 0,\n { cause: g }\n )\n ));\n };\n e.addEventListener(\"open\", l), e.addEventListener(\"error\", u);\n }), new j(\n r || new Response(null),\n e,\n \"stream\"\n );\n}\nclass y extends F {\n static version = \"5.0.1\";\n static FINAL_SYMBOL = Symbol(\"FEXIOS_FINAL_CONTEXT\");\n baseConfigs;\n // for axios compatibility\n get defaults() {\n return this.baseConfigs;\n }\n set defaults(r) {\n this.baseConfigs = r;\n }\n static DEFAULT_CONFIGS = {\n baseURL: \"\",\n timeout: 0,\n credentials: void 0,\n headers: {},\n query: {},\n responseType: void 0,\n shouldThrow(r) {\n return !r.ok;\n },\n fetch: globalThis.fetch\n };\n hooks = [];\n static ALL_METHODS = [\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n static METHODS_WITHOUT_BODY = [\n \"get\",\n \"head\",\n \"options\",\n \"trace\"\n ];\n constructor(r = {}) {\n super(\"request\"), this.baseConfigs = A(y.DEFAULT_CONFIGS, r), y.ALL_METHODS.forEach(\n (t) => this.createMethodShortcut(t.toLowerCase())\n );\n }\n async request(r, t) {\n let e = t || {};\n if (typeof r == \"string\" || r instanceof URL ? e.url = r.toString() : typeof r == \"object\" && (e = r), e = await this.emit(\"beforeInit\", e), e[y.FINAL_SYMBOL]) return e;\n if (e = this.applyDefaults(e), y.METHODS_WITHOUT_BODY.includes(\n e.method?.toLocaleLowerCase()\n ) && e.body)\n throw new m(\n O.BODY_NOT_ALLOWED,\n `Request method \"${e.method}\" does not allow body`\n );\n if (e = await this.emit(\"beforeRequest\", e), e[y.FINAL_SYMBOL]) return e;\n let n;\n const i = {};\n if (typeof e.body < \"u\" && e.body !== null && (e.body instanceof Blob || e.body instanceof FormData || e.body instanceof URLSearchParams ? n = e.body : typeof e.body == \"object\" && e.body !== null ? (n = JSON.stringify(e.body), e.headers = this.mergeHeaders(e.headers, {\n \"Content-Type\": \"application/json\"\n })) : n = e.body), !I.makeHeaders(e.headers || {}).get(\"content-type\") && n && (n instanceof FormData || n instanceof URLSearchParams ? i[\"content-type\"] = null : typeof n == \"string\" && typeof e.body == \"object\" ? i[\"content-type\"] = \"application/json\" : n instanceof Blob && (i[\"content-type\"] = n.type || \"application/octet-stream\")), e.body = n, e = await this.emit(\"afterBodyTransformed\", e), e[y.FINAL_SYMBOL]) return e;\n const a = e.abortController ?? (globalThis.AbortController ? new AbortController() : void 0), f = globalThis.location?.href || \"http://localhost\", c = new URL(\n e.baseURL || this.baseConfigs.baseURL || f,\n f\n ), l = new URL(e.url, c), u = T.makeURL(\n l,\n e.query,\n l.hash\n // 保留 hash\n ).toString(), g = new Request(u, {\n method: e.method || \"GET\",\n credentials: e.credentials,\n cache: e.cache,\n mode: e.mode,\n headers: I.mergeHeaders(\n this.baseConfigs.headers,\n e.headers || {},\n i\n ),\n body: e.body,\n signal: a?.signal\n });\n if (e.rawRequest = g, e = await this.emit(\"beforeActualFetch\", e), e[y.FINAL_SYMBOL]) return e;\n const h = e.timeout ?? this.baseConfigs.timeout ?? 60 * 1e3, E = e.shouldThrow ?? this.baseConfigs.shouldThrow;\n if (e.url.startsWith(\"ws\") || e.responseType === \"ws\") {\n const p = await K(\n e.url,\n void 0,\n h\n ), d = {\n ...e,\n response: p,\n rawResponse: void 0,\n data: p.data,\n headers: p.headers\n };\n return this.emit(\"afterResponse\", d);\n }\n let w;\n try {\n a && (w = h > 0 ? setTimeout(() => {\n a.abort();\n }, h) : void 0);\n const d = await (e.fetch || this.baseConfigs.fetch || globalThis.fetch)(e.rawRequest).catch((R) => {\n throw w && clearTimeout(w), a?.signal.aborted ? new m(\n O.TIMEOUT,\n `Request timed out after ${h}ms`,\n e\n ) : new m(O.NETWORK_ERROR, R.message, e);\n });\n return w && clearTimeout(w), e.rawResponse = d, e.response = await q(\n d,\n e.responseType,\n (R, $) => {\n t?.onProgress?.(R, $);\n },\n E,\n h\n ), Object.defineProperties(e, {\n url: { get: () => d?.url || u },\n data: { get: () => e.response.data },\n headers: { get: () => d.headers },\n responseType: { get: () => e.response.responseType }\n }), this.emit(\"afterResponse\", e);\n } catch (p) {\n throw w && clearTimeout(w), p;\n }\n }\n mergeQueries = T.mergeQueries;\n mergeHeaders = I.mergeHeaders;\n applyDefaults(r) {\n const t = r;\n \"customEnv\" in this.baseConfigs && (t.customEnv = A(\n {},\n // ensure we don't mutate baseConfigs\n this.baseConfigs.customEnv,\n t.customEnv\n ));\n const e = globalThis.location?.href || \"http://localhost\", n = t.baseURL || this.baseConfigs.baseURL || e, i = new URL(n, e), s = new URL(t.url.toString(), i), a = T.toQueryRecord(i.searchParams), f = T.toQueryRecord(s.searchParams), c = T.mergeQueries(\n a,\n f\n );\n s.search = T.makeSearchParams(c).toString(), t.url = s.toString();\n const l = T.mergeQueries(\n this.baseConfigs.query,\n t.query\n );\n return t.query && this.restoreNulls(l, t.query), t.query = l, t;\n }\n restoreNulls(r, t) {\n if (!(!t || typeof t != \"object\"))\n for (const [e, n] of Object.entries(t))\n n === null ? r[e] = null : L(n) && ((!r[e] || typeof r[e] != \"object\") && (r[e] = {}), this.restoreNulls(r[e], n));\n }\n async emit(r, t, e = {\n shouldHandleShortCircuitResponse: !0\n }) {\n const n = this.hooks.filter((s) => s.event === r);\n if (n.length === 0) return t;\n const i = async (s, a) => {\n const f = { ...s, rawResponse: a }, c = await q(\n a,\n s.responseType,\n (l, u) => s.onProgress?.(l, u),\n s.shouldThrow ?? this.baseConfigs.shouldThrow,\n s.timeout ?? this.baseConfigs.timeout ?? 60 * 1e3\n );\n if (f.response = c, f.data = c.data, f.headers = c.headers, r !== \"afterResponse\") {\n const l = await this.emit(\"afterResponse\", f);\n return l[y.FINAL_SYMBOL] = !0, l;\n } else\n return f[y.FINAL_SYMBOL] = !0, f;\n };\n for (let s = 0; s < n.length; s++) {\n const a = n[s], f = `${String(r)}#${a.action.name || `anonymous#${s}`}`, c = Symbol(\"FEXIOS_HOOK_CTX_MARK\");\n try {\n t[c] = c;\n } catch {\n }\n const l = await a.action.call(this, t);\n try {\n delete t[c];\n } catch {\n }\n if (l === !1)\n throw new m(\n O.ABORTED_BY_HOOK,\n `Request aborted by hook \"${f}\"`,\n t\n );\n if (l instanceof Response) {\n if (e.shouldHandleShortCircuitResponse !== !1)\n return i(t, l);\n t.rawResponse = l;\n } else l && typeof l == \"object\" && l[c] === c && (t = l);\n }\n return t;\n }\n on(r, t, e = !1) {\n if (typeof t != \"function\")\n throw new m(\n O.INVALID_HOOK_CALLBACK,\n `Hook should be a function, but got \"${typeof t}\"`\n );\n return this.hooks[e ? \"unshift\" : \"push\"]({\n event: r,\n action: t\n }), this;\n }\n off(r, t) {\n return r === \"*\" || !r ? this.hooks = this.hooks.filter((e) => e.action !== t) : this.hooks = this.hooks.filter(\n (e) => e.event !== r || e.action !== t\n ), this;\n }\n createInterceptor(r) {\n return {\n handlers: () => this.hooks.filter((t) => t.event === r).map((t) => t.action),\n use: (t, e = !1) => this.on(r, t, e),\n clear: () => {\n this.hooks = this.hooks.filter((t) => t.event !== r);\n }\n };\n }\n interceptors = {\n request: this.createInterceptor(\"beforeRequest\"),\n response: this.createInterceptor(\"afterResponse\")\n };\n createMethodShortcut(r) {\n return Reflect.defineProperty(this, r, {\n get: () => (t, e, n) => (y.METHODS_WITHOUT_BODY.includes(\n r.toLocaleLowerCase()\n ) ? n = e : (n = n || {}, n.body = e), this.request(t, {\n ...n,\n method: r\n }))\n }), this;\n }\n extends(r) {\n const t = new y(A(this.baseConfigs, r));\n return t.hooks = [...this.hooks], t._plugins = new Map(this._plugins), t._plugins.forEach(async (e) => {\n await t.plugin(e);\n }), t;\n }\n create = y.create;\n static create(r) {\n return new y(r);\n }\n _plugins = /* @__PURE__ */ new Map();\n async plugin(r) {\n if (typeof r?.name == \"string\" && typeof r?.install == \"function\") {\n if (this._plugins.has(r.name))\n return this;\n const t = await r.install(this);\n if (this._plugins.set(r.name, r), t instanceof y)\n return t;\n }\n return this;\n }\n // 版本弃子们.jpg\n /** @deprecated Use `import { checkIsPlainObject } from 'fexios/utils'` instead */\n checkIsPlainObject = L;\n /** @deprecated Use `mergeQueries` instead */\n mergeQuery = this.mergeQueries;\n}\n/**\n * Fexios\n * @desc Fetch based HTTP client with similar API to axios for browser and Node.js\n *\n * @license MIT\n * @author dragon-fish <dragon-fish@qq.com>\n */\nconst G = y.create, v = G();\n/* v8 ignore else -- @preserve */\ntypeof globalThis < \"u\" ? globalThis.fexios = v : typeof window < \"u\" && (window.fexios = v);\nvar U;\n((o) => {\n function r(e) {\n return Array.isArray(e) ? e.join(\"|\") : typeof e == \"boolean\" || e === null ? e ? \"1\" : void 0 : typeof e == \"number\" ? \"\" + e : e;\n }\n o.normalizeParamValue = r;\n function t(e) {\n const n = (s) => s && (s instanceof URLSearchParams || s instanceof FormData);\n if (e == null)\n return;\n const i = new FormData();\n if (n(e))\n return e.forEach((s, a) => {\n const f = r(s);\n f != null && i.append(a, f);\n }), i;\n if (L(e))\n return Object.entries(e).forEach(([s, a]) => {\n const f = r(a);\n f != null && i.append(s, f);\n }), i;\n }\n o.normalizeBody = t;\n})(U || (U = {}));\nvar P = /* @__PURE__ */ ((o) => (o.HTTP_ERROR = \"HTTP_ERROR\", o.LOGIN_FAILED = \"LOGIN_FAILED\", o.LOGIN_RETRY_LIMIT_EXCEEDED = \"LOGIN_RETRY_LIMIT_EXCEEDED\", o.TOKEN_RETRY_LIMIT_EXCEEDED = \"TOKEN_RETRY_LIMIT_EXCEEDED\", o))(P || {});\nclass b extends Error {\n constructor(r, t = \"\", e) {\n super(), this.code = r, this.message = t, this.cause = e, this.name = \"WikiSaikouError\";\n }\n static is(r, t) {\n return r instanceof this && (t === void 0 || r.code === t);\n }\n}\nclass S extends Error {\n constructor(r, t) {\n super(), this.errors = r, this.cause = t, this.name = \"MediaWikiApiError\", this.errors = S.normalizeErrors(r), this.message = r.map((e) => e.text).filter(Boolean).join(`\n`), this.code = this.isBadTokenError() ? \"badtoken\" : this.errors[0]?.code || \"Unknown Error\";\n }\n get firstError() {\n return this.errors[0];\n }\n isBadTokenError() {\n return this.errors.some((r) => r.code === \"badtoken\") || [\"NeedToken\", \"WrongToken\"].includes(this.cause?.data?.login?.result);\n }\n toString() {\n return `[${this.name} ${this.code}]`;\n }\n static is(r) {\n return r instanceof this;\n }\n static normalizeErrors(r) {\n return Array.isArray(r) === !1 ? [] : r.filter((t) => typeof t == \"object\" && !!t?.code).map((t) => t.text ? t : t.info ? { ...t, text: t.info } : t[\"*\"] ? { ...t, text: t[\"*\"] } : { ...t, text: \"\" });\n }\n}\n((o) => {\n function r(i) {\n if (i == null) return;\n if (i?.response?.data !== void 0) return i.response.data;\n if (i?.data !== void 0) return i.data;\n const s = i instanceof Error ? i.cause : void 0;\n return s?.response?.data !== void 0 ? s.response.data : s?.data !== void 0 ? s.data : i || void 0;\n }\n function t(i) {\n return e(i).length > 0;\n }\n o.includesMediaWikiApiError = t, o.normalizeMwApiErrors = S.normalizeErrors;\n function e(i) {\n let s = r(i);\n if (typeof s != \"object\" || s === null)\n return [];\n const a = s?.error, f = s?.errors, c = [];\n return a && c.push(a), Array.isArray(f) && c.push(...f), (0, o.normalizeMwApiErrors)(c);\n }\n o.extractMediaWikiApiErrors = e;\n function n(i) {\n if (S.is(i))\n return i.isBadTokenError();\n {\n const s = e(i);\n return new S(s).isBadTokenError();\n }\n }\n o.isBadTokenError = n;\n})(b || (b = {}));\nconst H = Symbol.for(\"__FEXIOS_SAIKOU__\");\n/**\n * FexiosSaikou\n *\n * A pre-configured Fexios instance with MediaWiki-friendly defaults:\n * - MediaWiki-specific request/response params normalization\n * - built-in token management\n * - error handling\n *\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n *\n * @param {string|URL} payload create a new FexiosSaikou instance with the given baseURL\n * @param {Fexios} payload or make the given Fexios instance a FexiosSaikou instance\n */\nfunction B(o) {\n const r = o instanceof y ? o : new y({\n baseURL: o instanceof URL ? o.toString() : String(o),\n responseType: \"json\"\n });\n return r[H] || (Reflect.defineProperty(r, H, {\n get: () => !0,\n enumerable: !1,\n configurable: !1\n }), r.on(\"beforeInit\", (t) => {\n if (t.method?.toLowerCase() !== \"post\")\n return t;\n if (t.body === void 0 || t.body === null)\n return t.body = void 0, t;\n const e = t.body = U.normalizeBody(t.body), n = new URLSearchParams(t.query);\n return e.has(\"format\") && n.delete(\"format\"), e.has(\"formatversion\") && n.delete(\"formatversion\"), e.has(\"action\") && n.delete(\"action\"), e.has(\"origin\") && (n.set(\"origin\", \"\" + e.get(\"origin\")), e.delete(\"origin\")), t.query = Object.fromEntries(n.entries()), t;\n }), r.on(\"beforeInit\", (t) => (t.query = T.mergeQueries(\n {},\n U.normalizeBody(t.query)\n ), t)), r.on(\"beforeRequest\", (t) => {\n const e = new URL(t.url), n = T.mergeQueries(e.searchParams, t.query);\n if (globalThis.location && (!n.origin && location.origin !== e.origin ? (n.origin = location.origin, r.baseConfigs.credentials = \"include\", r.baseConfigs.mode = \"cors\") : location.origin === e.origin && (delete n.origin, r.baseConfigs.credentials = void 0, r.baseConfigs.mode = void 0)), n.origin) {\n const i = encodeURIComponent(n.origin).replace(/\\./g, \"%2E\");\n delete n.origin, t.query = n, t.url = `${e.origin}${e.pathname}?origin=${i}`;\n } else\n t.query = n;\n return t;\n }), r._tokens = /* @__PURE__ */ new Map(), r.on(\"afterResponse\", (t) => {\n const { data: e } = t, n = t.customEnv?.mwTokenName;\n n && b.isBadTokenError(e) && r._tokens.delete(n);\n const i = e?.query?.tokens;\n i && typeof i == \"object\" && Object.entries(i).forEach(([a, f]) => {\n typeof f == \"string\" && r._tokens.set(a.replace(/token$/i, \"\").toLowerCase(), f);\n });\n const s = e?.login?.token;\n return typeof s == \"string\" && r._tokens.set(\"login\", s), t;\n })), r;\n}\nconst Y = (o, r, t) => {\n let e = { ...N.DEFAULT_CONFIGS };\n if (typeof o == \"string\" ? e = A(e, {\n baseURL: o,\n fexiosConfigs: r || {},\n defaultParams: t || {},\n throwOnApiError: !1\n // Set a default value for throwOnApiError\n }) : typeof o == \"object\" && o !== null && (e = A(e, o)), !e.baseURL && typeof window == \"object\" && window.mediaWiki) {\n const { wgServer: n, wgScriptPath: i } = window.mediaWiki?.config?.get([\"wgServer\", \"wgScriptPath\"]) || {};\n typeof n == \"string\" && typeof i == \"string\" && (e.baseURL = `${n}${i}/api.php`);\n }\n if (typeof e.baseURL != \"string\")\n throw new Error(\"baseURL is required\");\n return e;\n}, V = () => {\n}, Q = async (o, r) => {\n let t = 0;\n const { retry: e = 3, onRetry: n = V, shouldRetry: i = () => !0 } = r;\n let s;\n do\n try {\n return await o();\n } catch (a) {\n if (s = a, i(a, t))\n n(a, t), t++;\n else\n throw a;\n }\n while (t < e);\n throw s || new Error(\"Retry failed\");\n};\n/**\n * WikiSaikou Core class\n * @internal You **SHOULD NOT** use this class directly, instead, use the `MediaWikiApi` class.\n * @author dragon-fish <dragon-fish@qq.com>\n * @license MIT\n */\nconst _ = class _ {\n constructor(r, t, e) {\n this.version = \"7.3.0\", this.token = this.getToken;\n const n = this.config = Y(\n r,\n t,\n e\n );\n this.request = B(n.baseURL);\n }\n setBaseURL(r) {\n return this.config.baseURL = r, this.request.baseConfigs.baseURL = r, this;\n }\n /** Base methods encapsulation */\n async get(r, t) {\n const e = A(\n {},\n this.config.fexiosConfigs,\n {\n query: T.mergeQueries(\n this.config.defaultParams,\n r\n )\n },\n t\n );\n return this.runRequestWithApiErrorMapping(\n () => this.request.get(\"\", e)\n );\n }\n async post(r, t) {\n return this.runRequestWithApiErrorMapping(\n () => this.request.post(\n \"\",\n r,\n A(\n {},\n this.config.fexiosConfigs,\n {\n query: this.config.defaultParams\n },\n t\n )\n )\n );\n }\n /**\n * Wrap a request to map non-2xx responses containing MediaWiki API error bodies\n * into MediaWikiApiError when throwOnApiError=true, and then pass 2xx responses\n * through handleApiResponse for unified processing.\n */\n async runRequestWithApiErrorMapping(r) {\n try {\n const t = await r();\n return this.handleApiResponse(t);\n } catch (t) {\n throw this.config.throwOnApiError && b.includesMediaWikiApiError(t) ? new S(\n b.extractMediaWikiApiErrors(t),\n t\n ) : t;\n }\n }\n throwIfApiError(r) {\n const t = b.extractMediaWikiApiErrors(r);\n if (t.length > 0)\n throw new S(t, r);\n }\n handleApiResponse(r) {\n return this.config.throwOnApiError && this.throwIfApiError(r.data), r;\n }\n /** Token Handler */\n get tokens() {\n return this.request._tokens;\n }\n async fetchTokens(r = [\"csrf\"]) {\n return this.config.fexiosConfigs.credentials = \"include\", await this.get({\n action: \"query\",\n meta: \"tokens\",\n type: r\n }), this.tokens;\n }\n async getToken(r = \"csrf\", t = !1) {\n return (!this.tokens.get(r) || t) && (this.tokens.delete(r), await this.fetchTokens([r])), this.tokens.get(r);\n }\n badToken(r) {\n return this.tokens.delete(r), this.tokens;\n }\n async postWithToken(r, t, e) {\n const {\n tokenName: n = \"token\",\n retry: i = 3,\n noCache: s = !1,\n fexiosOptions: a\n } = e || {};\n if (i < 1)\n throw new b(\n P.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"The limit of the number of times to automatically re-acquire the token has been exceeded\"\n );\n let f = 0;\n return Q(\n async () => {\n const c = await this.getToken(\n r,\n s || f > 0\n );\n try {\n const l = await this.post(\n {\n [n]: c,\n ...t\n },\n A(a || {}, {\n customEnv: {\n mwTokenName: r\n }\n })\n );\n if (b.isBadTokenError(l.data))\n throw l;\n return l;\n } catch (l) {\n throw b.isBadTokenError(l) || l?.ok === !1 || S.is(l) ? l : new b(\n P.HTTP_ERROR,\n \"Network/transport or SDK-internal error (not a MediaWiki API error)\",\n l\n );\n }\n },\n {\n retry: i,\n onRetry: (c, l) => {\n f = l + 1;\n },\n shouldRetry: (c) => b.isBadTokenError(c) || c?.ok === !1\n }\n ).catch((c) => {\n throw b.isBadTokenError(c) || c?.ok === !1 ? new b(\n P.TOKEN_RETRY_LIMIT_EXCEEDED,\n \"Retry attempts for acquiring/using token exhausted\",\n c\n ) : c;\n });\n }\n postWithEditToken(r) {\n return this.postWithToken(\"csrf\", r);\n }\n // for backward compatibility\n /** @deprecated Use `this.config.baseURL` instead */\n get baseURL() {\n return this.config.baseURL;\n }\n /** @deprecated Use `this.config.defaultParams` instead */\n get defaultParams() {\n return this.config.defaultParams;\n }\n /** @deprecated Use `this.config.fexiosConfigs` instead */\n get defaultOptions() {\n return this.config.fexiosConfigs;\n }\n};\n_.INIT_DEFAULT_PARAMS = {\n action: \"query\",\n errorformat: \"plaintext\",\n format: \"json\",\n formatversion: 2\n}, _.DEFAULT_CONFIGS = {\n baseURL: void 0,\n fexiosConfigs: {\n responseType: \"json\"\n },\n defaultParams: _.INIT_DEFAULT_PARAMS,\n throwOnApiError: !1\n}, _.createRequestHandler = B;\nlet N = _;\n/**\n * WikiSaikou\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass J extends N {\n async clientLogin(r, t, e) {\n e ||= {}, !e.logincontinue && !e.loginreturnurl && (e.loginreturnurl = location?.origin);\n const n = await this.postWithToken(\n \"login\",\n {\n action: \"clientlogin\",\n username: r,\n password: t,\n ...e\n },\n {\n tokenName: \"logintoken\"\n }\n );\n if (n?.data?.clientlogin?.status === \"PASS\")\n return n.data.clientlogin;\n throw new b(\n P.LOGIN_FAILED,\n n.data.clientlogin.message,\n n\n );\n }\n}\n/**\n * WikiSaikou for foreign wiki\n * @description Standalone MediaWiki API SDK with `mw.Api`-like API in any environments\n * @author Dragon-Fish <dragon-fish@qq.com>\n * @license MIT\n */\nclass ee extends J {\n constructor(r, t, e) {\n const n = Y(\n r,\n {\n credentials: \"include\",\n mode: \"cors\",\n ...t\n },\n {\n origin: location.origin,\n ...e\n }\n );\n super(n);\n }\n}\nexport {\n F as CallableInstance,\n y as Fexios,\n m as FexiosError,\n O as FexiosErrorCodes,\n I as FexiosHeaderBuilder,\n T as FexiosQueryBuilder,\n j as FexiosResponse,\n D as FexiosResponseError,\n ee as ForeignApi,\n J as MediaWikiApi,\n S as MediaWikiApiError,\n ee as MediaWikiForeignApi,\n J as MwApi,\n N as MwApiBase,\n U as MwParamNormalizer,\n N as WikiSaikouCore,\n b as WikiSaikouError,\n P as WikiSaikouErrorCode,\n L as checkIsPlainObject,\n M as clone,\n G as createFexios,\n x as createFexiosEventSourceResponse,\n q as createFexiosResponse,\n B as createFexiosSaikou,\n K as createFexiosWebSocketResponse,\n A as deepMerge,\n v as fexios,\n Z as isFexiosError,\n L as isPlainObject\n};\n//# sourceMappingURL=browser.js.map\n"],"names":["M","o","s","f","W","F","A","O","m","D","I","T","c","l","u","g","E","h","j","C","X","z","q","d","x","R","K","y","a","p","w","$","G","v","U","P","b","S","H","B","Y","N","V","Q","_","J","ee"],"mappings":"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","x_google_ignoreList":[0]}
@@ -3,7 +3,7 @@ import { j as n } from "../index-CM_6yF2v.js";
3
3
  import { P as V } from "../index-CM_6yF2v.js";
4
4
  import { T as A } from "../index-DD5CVCfD.js";
5
5
  import { A as B } from "../ActionButton-CRjo_l3y.js";
6
- import { C as T, I as z } from "../InputBox-nQKtiWtZ.js";
6
+ import { C as T, I as z } from "../InputBox-CZ1v4_l3.js";
7
7
  import { R as C } from "../RadioBox-0UuxlcWZ.js";
8
8
  const r = "_tabview_zlbug_1", _ = "_labels_container_zlbug_4", b = "_label_zlbug_4", d = "_active_zlbug_32", m = "_contents_container_zlbug_35", i = {
9
9
  tabview: r,
@@ -1,9 +1,9 @@
1
- import { j as i, F as E, P as S } from "./index-CM_6yF2v.js";
1
+ import { j as i, F as S, P as E } from "./index-CM_6yF2v.js";
2
2
  import { I as C } from "./IconQuickEdit-CMCQncyj.js";
3
- import { q as $, h as q, I as z, R as j, S as b } from "./Preferences-C10tZMl1.js";
4
- import { B as I } from "./BasePlugin-DD7l-5Xw.js";
5
- import { M as T } from "./index-CG38LlAh.js";
6
- const O = (t) => {
3
+ import { q, h as $, I as z, R as j, S as b } from "./Preferences-DqtjY7XU.js";
4
+ import { B as M } from "./BasePlugin-BCVSn9QJ.js";
5
+ import { M as I } from "./index-CG38LlAh.js";
6
+ const Q = (t) => {
7
7
  let { user: e, target: r, ctx: a } = t;
8
8
  const n = a.getUrl.bind(a);
9
9
  return /* @__PURE__ */ i("span", { className: "mw-userlinks", children: [
@@ -37,10 +37,10 @@ const O = (t) => {
37
37
  ] });
38
38
  };
39
39
  var m = /* @__PURE__ */ ((t) => (t.update = "ipe:diff-table/update", t.edit = "ipe:diff-table/edit", t))(m || {});
40
- const L = new Intl.DateTimeFormat(void 0, {
40
+ const T = new Intl.DateTimeFormat(void 0, {
41
41
  dateStyle: "medium",
42
42
  timeStyle: "medium"
43
- }).format, k = (t) => {
43
+ }).format, x = (t) => {
44
44
  let e = ["diff-title"];
45
45
  if (t.type === "from" ? e.push("diff-otitle") : t.type === "to" && e.push("diff-ntitle"), !t.pageid || !t.userid)
46
46
  return /* @__PURE__ */ i("td", { colSpan: 2, className: e, children: /* @__PURE__ */ i("div", { className: "mw-diff-title--title", children: t.type === "from" ? "Original content" : t.type === "to" ? "Your content" : "" }) });
@@ -68,22 +68,22 @@ const L = new Intl.DateTimeFormat(void 0, {
68
68
  ]
69
69
  }
70
70
  ) }),
71
- /* @__PURE__ */ i("div", { className: "mw-diff-title--user", children: t.username && /* @__PURE__ */ i(O, { ctx: t.ctx, user: t.username, target: "_blank" }) }),
72
- /* @__PURE__ */ i("div", { className: "mw-diff-title--timestamp", children: t.timestamp && L(new Date(t.timestamp)) }),
73
- /* @__PURE__ */ i("div", { className: "mw-diff-title--comment", children: t.parsedcomment && /* @__PURE__ */ i(E, { children: [
71
+ /* @__PURE__ */ i("div", { className: "mw-diff-title--user", children: t.username && /* @__PURE__ */ i(Q, { ctx: t.ctx, user: t.username, target: "_blank" }) }),
72
+ /* @__PURE__ */ i("div", { className: "mw-diff-title--timestamp", children: t.timestamp && T(new Date(t.timestamp)) }),
73
+ /* @__PURE__ */ i("div", { className: "mw-diff-title--comment", children: t.parsedcomment && /* @__PURE__ */ i(S, { children: [
74
74
  "(",
75
75
  /* @__PURE__ */ i("i", { innerHTML: t.parsedcomment }),
76
76
  ")"
77
77
  ] }) })
78
78
  ] });
79
- }, Q = (t) => {
79
+ }, O = (t) => {
80
80
  const e = t.data;
81
81
  if (!e.prev && !e.next)
82
82
  return null;
83
- const r = (a, n, c) => {
83
+ const r = (a, n, o) => {
84
84
  a.preventDefault(), a.target.dispatchEvent(
85
85
  new CustomEvent("ipe:diff-table/update", {
86
- detail: { fromrev: n, torev: c },
86
+ detail: { fromrev: n, torev: o },
87
87
  bubbles: !0
88
88
  })
89
89
  );
@@ -106,7 +106,7 @@ const L = new Intl.DateTimeFormat(void 0, {
106
106
  }
107
107
  ) : /* @__PURE__ */ i("i", { children: "Newest version" }) })
108
108
  ] });
109
- }, U = (t) => {
109
+ }, L = (t) => {
110
110
  const { data: e, ...r } = t, a = /* @__PURE__ */ i("table", { className: "theme-ipe diff diff-type-table", "data-mw": "interface", ...r, children: [
111
111
  /* @__PURE__ */ i("colgroup", { children: [
112
112
  /* @__PURE__ */ i("col", { className: "diff-marker" }),
@@ -117,7 +117,7 @@ const L = new Intl.DateTimeFormat(void 0, {
117
117
  /* @__PURE__ */ i("tbody", { children: [
118
118
  /* @__PURE__ */ i("tr", { children: [
119
119
  /* @__PURE__ */ i(
120
- k,
120
+ x,
121
121
  {
122
122
  ctx: t.ctx,
123
123
  type: "from",
@@ -133,7 +133,7 @@ const L = new Intl.DateTimeFormat(void 0, {
133
133
  }
134
134
  ),
135
135
  /* @__PURE__ */ i(
136
- k,
136
+ x,
137
137
  {
138
138
  ctx: t.ctx,
139
139
  type: "to",
@@ -149,7 +149,7 @@ const L = new Intl.DateTimeFormat(void 0, {
149
149
  }
150
150
  )
151
151
  ] }),
152
- /* @__PURE__ */ i(Q, { data: e, ctx: t.ctx }),
152
+ /* @__PURE__ */ i(O, { data: e, ctx: t.ctx }),
153
153
  /* @__PURE__ */ i("div", { id: "diffbody" }),
154
154
  /* @__PURE__ */ i("tr", { className: "diff-size", style: { textAlign: "center" }, children: [
155
155
  /* @__PURE__ */ i("td", { colSpan: 2, className: "diff-size-old", children: e.fromsize !== void 0 && `${e.fromsize} bytes` }),
@@ -169,25 +169,48 @@ const L = new Intl.DateTimeFormat(void 0, {
169
169
  children: /* @__PURE__ */ i("i", { children: "No changes" })
170
170
  }
171
171
  ) }) })).outerHTML, a;
172
- };
173
- var F = Object.create, p = Object.defineProperty, M = Object.getOwnPropertyDescriptor, y = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), w = (t) => {
172
+ }, B = (t) => /* @__PURE__ */ i(
173
+ "svg",
174
+ {
175
+ xmlns: "http://www.w3.org/2000/svg",
176
+ width: "24",
177
+ height: "24",
178
+ viewBox: "0 0 24 24",
179
+ fill: "none",
180
+ stroke: "currentColor",
181
+ "stroke-width": "2",
182
+ "stroke-linecap": "round",
183
+ "stroke-linejoin": "round",
184
+ ...t,
185
+ class: `icon icon-tabler icons-tabler-outline icon-tabler-file-diff ${t.className || ""}`,
186
+ children: [
187
+ /* @__PURE__ */ i("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
188
+ /* @__PURE__ */ i("path", { d: "M14 3v4a1 1 0 0 0 1 1h4" }),
189
+ /* @__PURE__ */ i("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" }),
190
+ /* @__PURE__ */ i("path", { d: "M12 10l0 4" }),
191
+ /* @__PURE__ */ i("path", { d: "M10 12l4 0" }),
192
+ /* @__PURE__ */ i("path", { d: "M10 17l4 0" })
193
+ ]
194
+ }
195
+ );
196
+ var U = Object.create, p = Object.defineProperty, F = Object.getOwnPropertyDescriptor, w = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), y = (t) => {
174
197
  throw TypeError(t);
175
- }, B = (t, e, r) => e in t ? p(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, A = (t, e) => p(t, "name", { value: e, configurable: !0 }), H = (t) => [, , , F(t?.[y("metadata")] ?? null)], R = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], _ = (t) => t !== void 0 && typeof t != "function" ? w("Function expected") : t, K = (t, e, r, a, n) => ({ kind: R[t], name: e, metadata: a, addInitializer: (c) => r._ ? w("Already initialized") : n.push(_(c || null)) }), Y = (t, e) => B(e, y("metadata"), t[3]), G = (t, e, r, a) => {
176
- for (var n = 0, c = t[e >> 1], o = c && c.length; n < o; n++) c[n].call(r);
198
+ }, A = (t, e, r) => e in t ? p(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, H = (t, e) => p(t, "name", { value: e, configurable: !0 }), R = (t) => [, , , U(t?.[w("metadata")] ?? null)], K = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], N = (t) => t !== void 0 && typeof t != "function" ? y("Function expected") : t, Y = (t, e, r, a, n) => ({ kind: K[t], name: e, metadata: a, addInitializer: (o) => r._ ? y("Already initialized") : n.push(N(o || null)) }), G = (t, e) => A(e, w("metadata"), t[3]), J = (t, e, r, a) => {
199
+ for (var n = 0, o = t[e >> 1], c = o && o.length; n < c; n++) o[n].call(r);
177
200
  return a;
178
- }, J = (t, e, r, a, n, c) => {
179
- var o, d, s, l = e & 7, f = !1, x = 0, P = t[x] || (t[x] = []), u = l && (n = n.prototype, l < 5 && (l > 3 || !f) && M(n, r));
180
- A(n, r);
201
+ }, V = (t, e, r, a, n, o) => {
202
+ var c, d, s, l = e & 7, f = !1, k = 0, P = t[k] || (t[k] = []), u = l && (n = n.prototype, l < 5 && (l > 3 || !f) && F(n, r));
203
+ H(n, r);
181
204
  for (var h = a.length - 1; h >= 0; h--)
182
- s = K(l, r, d = {}, t[3], P), o = (0, a[h])(n, s), d._ = 1, _(o) && (n = o);
183
- return Y(t, n), u && p(n, r, u), f ? l ^ 4 ? c : u : n;
184
- }, N, g, D;
185
- N = [z(["wiki", "getUrl", "preferences", "$"]), j(
205
+ s = Y(l, r, d = {}, t[3], P), c = (0, a[h])(n, s), d._ = 1, N(c) && (n = c);
206
+ return G(t, n), u && p(n, r, u), f ? l ^ 4 ? o : u : n;
207
+ }, _, g, D;
208
+ _ = [z(["wiki", "getUrl", "preferences", "$"]), j(
186
209
  b.object({
187
210
  "quickDiff.keyshortcut": b.string().default("ctrl-d").description("Key shortcut to open quick diff in quick edit modal")
188
211
  }).description("Quick diff options").extra("category", "editor")
189
212
  )];
190
- class v extends (D = I) {
213
+ class v extends (D = M) {
191
214
  constructor(e) {
192
215
  super(e, {}, "quick-diff"), this.ctx = e, this.COMPARE_API_DEFAULT_OPTIONS = {
193
216
  prop: [
@@ -211,19 +234,19 @@ class v extends (D = I) {
211
234
  stop() {
212
235
  }
213
236
  injectHistoryPage() {
214
- const e = this.ctx.$, r = $("#mw-history-compare");
237
+ const { $: e } = this.ctx, r = q("#mw-history-compare");
215
238
  if (!r)
216
239
  return;
217
- q(".mw-history-compareselectedversions-button", r).forEach((n) => {
240
+ $(".mw-history-compareselectedversions-button", r).forEach((n) => {
218
241
  n.after(
219
242
  /* @__PURE__ */ i(
220
243
  "button",
221
244
  {
222
245
  className: "cdx-button",
223
- onClick: (c) => {
224
- c.preventDefault();
225
- const o = new FormData(r), d = Number(o.get("oldid")) || 0, s = Number(o.get("diff")) || 0;
226
- if (!o.get("title") || !d || !s)
246
+ onClick: (o) => {
247
+ o.preventDefault();
248
+ const c = new FormData(r), d = Number(c.get("oldid")) || 0, s = Number(c.get("diff")) || 0;
249
+ if (!c.get("title") || !d || !s)
227
250
  return this.logger.warn("Missing title or revision IDs");
228
251
  this.comparePages({
229
252
  fromrev: d,
@@ -239,8 +262,8 @@ class v extends (D = I) {
239
262
  async injectQuickEdit({ modal: e, wikiPage: r, options: a }) {
240
263
  if (r.pageid === 0 || a.section === "new")
241
264
  return;
242
- const n = this.ctx.$;
243
- let c;
265
+ const { $: n } = this.ctx;
266
+ let o;
244
267
  e.addButton(
245
268
  {
246
269
  label: n`Diff`,
@@ -248,34 +271,34 @@ class v extends (D = I) {
248
271
  keyPress: await this.ctx.preferences.get("quickDiff.keyshortcut") || void 0,
249
272
  className: "btn btn-secondary",
250
273
  method: () => {
251
- const o = r.title, d = r.revisions?.[0]?.content || "", s = e.get$content().querySelector('textarea[name="text"]')?.value || "";
274
+ const c = r.title, d = r.revisions?.[0]?.content || "", s = e.get$content().querySelector('textarea[name="text"]')?.value || "";
252
275
  return d === s ? this.ctx.modal.notify("info", { title: n`Quick Diff`, content: n`No changes` }) : (this.ctx.emit("quick-diff/quick-edit-modal", {
253
276
  ctx: this.ctx,
254
277
  modal: e,
255
278
  wikiPage: r
256
- }), c = this.comparePages(
279
+ }), o = this.comparePages(
257
280
  {
258
- fromtitle: o,
281
+ fromtitle: c,
259
282
  fromtext: d,
260
- totitle: o,
283
+ totitle: c,
261
284
  totext: s,
262
285
  topst: !0
263
286
  },
264
- c,
287
+ o,
265
288
  {
266
289
  backdrop: !1,
267
290
  draggable: !0
268
291
  }
269
- ), c);
292
+ ), o);
270
293
  }
271
294
  },
272
295
  2
273
296
  ), e.on(e.Event.Close, () => {
274
- c?.destroy(), c = void 0;
297
+ o?.destroy(), o = void 0;
275
298
  });
276
299
  }
277
300
  comparePages(e, r, a) {
278
- const n = this.ctx.$;
301
+ const { $: n } = this.ctx;
279
302
  return !r || r.isDestroyed ? r = this.ctx.modal.createObject({
280
303
  title: n`Loading diff...`,
281
304
  content: "",
@@ -290,7 +313,7 @@ class v extends (D = I) {
290
313
  "section",
291
314
  {
292
315
  style: { height: "70vh", display: "flex", justifyContent: "center", alignItems: "center" },
293
- children: /* @__PURE__ */ i(S, {})
316
+ children: /* @__PURE__ */ i(E, {})
294
317
  }
295
318
  )
296
319
  ), r.bringToFront(), window.mw && mw.loader.getState("mediawiki.diff.styles") !== "ready" && mw.loader.load(["mediawiki.diff.styles"]), this.ctx.api.post({
@@ -299,14 +322,14 @@ class v extends (D = I) {
299
322
  action: "compare",
300
323
  format: "json",
301
324
  formatversion: 2
302
- }).then((c) => {
303
- if (!c.data.compare)
304
- throw new Error("No compare data received", { cause: c });
325
+ }).then((o) => {
326
+ if (!o.data.compare)
327
+ throw new Error("No compare data received", { cause: o });
305
328
  const {
306
- data: { compare: o }
307
- } = c;
329
+ data: { compare: c }
330
+ } = o;
308
331
  r.setTitle(
309
- o.fromtitle && o.totitle ? `${o.fromtitle}${o.fromrevid ? ` (${o.fromrevid})` : ""} ⇔ ${o.totitle}${o.torevid ? ` (${o.torevid})` : ""}` : n`Differences`
332
+ c.fromtitle && c.totitle ? `${c.fromtitle}${c.fromrevid ? ` (${c.fromrevid})` : ""} ⇔ ${c.totitle}${c.torevid ? ` (${c.torevid})` : ""}` : n`Differences`
310
333
  );
311
334
  let d;
312
335
  r.setContent(
@@ -316,7 +339,7 @@ class v extends (D = I) {
316
339
  style: {
317
340
  minHeight: "70vh"
318
341
  },
319
- children: /* @__PURE__ */ i(U, { ref: (s) => d = s, data: o, ctx: this.ctx })
342
+ children: /* @__PURE__ */ i(L, { ref: (s) => d = s, data: c, ctx: this.ctx })
320
343
  }
321
344
  )
322
345
  ), d.addEventListener(
@@ -339,32 +362,54 @@ class v extends (D = I) {
339
362
  d.addEventListener(m.edit, l), r.on(r.Event.Close, () => {
340
363
  d.removeEventListener(m.edit, l);
341
364
  });
342
- }), o.fromrevid && o.torevid && r.addButton({
365
+ }), c.fromrevid && c.torevid && r.addButton({
343
366
  label: n`Original Compare Page`,
344
367
  side: "right",
345
368
  className: "btn btn-secondary",
346
369
  method: () => {
347
370
  window.location.href = this.ctx.getUrl("", {
348
- oldid: o.fromrevid,
349
- diff: o.torevid
371
+ oldid: c.fromrevid,
372
+ diff: c.torevid
350
373
  });
351
374
  }
352
375
  }), this.ctx.emit("quick-diff/loaded", {
353
376
  ctx: this.ctx,
354
377
  modal: r,
355
- compare: o
378
+ compare: c
356
379
  });
357
- }).catch((c) => {
380
+ }).catch((o) => {
358
381
  r.setContent(
359
- /* @__PURE__ */ i(T, { title: n`Failed to load diff`, type: "error", children: /* @__PURE__ */ i("pre", { children: c instanceof Error ? c.message : String(c) }) })
382
+ /* @__PURE__ */ i(I, { title: n`Failed to load diff`, type: "error", children: /* @__PURE__ */ i("pre", { children: o instanceof Error ? o.message : String(o) }) })
360
383
  );
361
384
  }), r.show();
362
385
  }
386
+ createQuickDiffButton(e, r) {
387
+ const { $: a } = this.ctx, n = r?.icon ?? /* @__PURE__ */ i(B, { className: "ipe-icon" }), o = r?.label ?? a`Quick Diff`;
388
+ return /* @__PURE__ */ i(
389
+ "a",
390
+ {
391
+ href: "#ipe://quick-diff/",
392
+ dataset: e,
393
+ className: "ipe-quick-diff",
394
+ style: {
395
+ userSelect: "none",
396
+ marginLeft: "0.2em"
397
+ },
398
+ onClick: (c) => {
399
+ c.preventDefault(), this.comparePages(e);
400
+ },
401
+ children: [
402
+ n,
403
+ o
404
+ ]
405
+ }
406
+ );
407
+ }
363
408
  }
364
- g = H(D);
365
- v = J(g, 0, "PluginQuickDiff", N, v);
366
- G(g, 1, v);
409
+ g = R(D);
410
+ v = V(g, 0, "PluginQuickDiff", _, v);
411
+ J(g, 1, v);
367
412
  export {
368
413
  v as PluginQuickDiff
369
414
  };
370
- //# sourceMappingURL=index-BpQ6VGMz.js.map
415
+ //# sourceMappingURL=index-B9VO3swL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-B9VO3swL.js","sources":["../src/components/MwUserLinks.tsx","../src/plugins/quick-diff/components/DiffTable.tsx","../src/components/Icon/IconQuickDiff.tsx","../src/plugins/quick-diff/index.tsx"],"sourcesContent":["import { InPageEdit } from '@/InPageEdit'\n\nexport const MwUserLinks = (props: { user: string; target?: string; ctx: InPageEdit }) => {\n let { user, target, ctx } = props\n const getUrl = ctx.getUrl.bind(ctx)\n return (\n <span className=\"mw-userlinks\">\n <a href={getUrl(`User:${user}`)} className=\"mw-userlink\" target={target}>\n {user}\n </a>{' '}\n <span className=\"mw-usertoollinks\">\n (\n <a href={getUrl(`User_talk:${user}`)} className=\"mw-usertoollinks-talk\" target={target}>\n talk\n </a>\n {' | '}\n <a\n href={getUrl(`Special:Contributions/${user}`)}\n className=\"mw-usertoollinks-contribs\"\n target={target}\n >\n contribs\n </a>\n {' | '}\n <a\n href={getUrl(`Special:Block/${user}`)}\n className=\"mw-usertoollinks-block\"\n target={target}\n >\n block\n </a>\n )\n </span>\n </span>\n )\n}\n","import './style.scss'\nimport { JSX } from 'jsx-dom/jsx-runtime'\nimport { CompareApiResponse } from '../index.js'\nimport { InPageEdit } from '@/InPageEdit.js'\n\nexport type DiffTableProps = {\n data: Partial<CompareApiResponse['compare']>\n ctx: InPageEdit\n} & JSX.IntrinsicElements['table']\n\nexport enum DiffTableEvent {\n update = 'ipe:diff-table/update',\n edit = 'ipe:diff-table/edit',\n}\n\n// DOM 事件类型定义\ndeclare global {\n interface HTMLElementEventMap {\n [DiffTableEvent.update]: CustomEvent<{\n fromrev: number\n torev: number\n }>\n [DiffTableEvent.edit]: CustomEvent<{\n revid: number\n }>\n }\n}\n\nconst formatDate = new Intl.DateTimeFormat(undefined, {\n dateStyle: 'medium',\n timeStyle: 'medium',\n}).format\n\nconst DiffTableHeader = (props: {\n ctx: InPageEdit\n type?: 'from' | 'to'\n pageid?: number\n pagetitle?: string\n revid?: number\n size?: number\n timestamp?: string\n username?: string\n userid?: number\n comment?: string\n parsedcomment?: string\n}) => {\n let classList = ['diff-title']\n if (props.type === 'from') {\n classList.push('diff-otitle')\n } else if (props.type === 'to') {\n classList.push('diff-ntitle')\n }\n if (!props.pageid || !props.userid) {\n return (\n <td colSpan={2} className={classList}>\n <div className=\"mw-diff-title--title\">\n {props.type === 'from' ? 'Original content' : props.type === 'to' ? 'Your content' : ''}\n </div>\n </td>\n )\n }\n const handleEditClick = (e: Event) => {\n e.preventDefault()\n e.target!.dispatchEvent(\n new CustomEvent(DiffTableEvent.edit, {\n detail: { revid: props.revid! },\n bubbles: true,\n })\n )\n }\n return (\n <td colSpan={2} className={classList}>\n <div className=\"mw-diff-title--title\">\n {props.pagetitle || props.timestamp}\n {props.revid ? ` (rev#${props.revid})` : ''}\n </div>\n <div className=\"mw-diff-title--actions\">\n <a\n href={props.ctx.getUrl('', { action: 'edit', oldid: props.revid! })}\n onClick={handleEditClick}\n >\n <IconQuickEdit style=\"width: 1em; height: 1em\" />\n Quick edit\n </a>\n </div>\n <div className=\"mw-diff-title--user\">\n {props.username && <MwUserLinks ctx={props.ctx} user={props.username} target=\"_blank\" />}\n </div>\n <div className=\"mw-diff-title--timestamp\">\n {props.timestamp && formatDate(new Date(props.timestamp))}\n </div>\n <div className=\"mw-diff-title--comment\">\n {props.parsedcomment && (\n <>\n (<i innerHTML={props.parsedcomment}></i>)\n </>\n )}\n </div>\n </td>\n )\n}\n\nconst DiffTableNavigation = (props: { data: DiffTableProps['data']; ctx: InPageEdit }) => {\n const data = props.data\n if (!data.prev && !data.next) {\n return null\n }\n\n // 统一的事件处理器\n const handleNavigationClick = (e: Event, fromrev: number, torev: number) => {\n e.preventDefault()\n e.target!.dispatchEvent(\n new CustomEvent(DiffTableEvent.update, {\n detail: { fromrev, torev },\n bubbles: true,\n })\n )\n }\n\n return (\n <tr className=\"mw-diff-title--navigation\">\n <td colSpan={2}>\n {data.prev ? (\n <a\n href={props.ctx.getUrl('', { diff: data.prev!, oldid: data.fromrevid! })}\n onClick={(e) => handleNavigationClick(e, data.prev!, data.fromrevid!)}\n >\n ← Previous\n </a>\n ) : (\n <i>Oldest version</i>\n )}\n </td>\n <td colSpan={2}>\n {data.next ? (\n <a\n href={props.ctx.getUrl('', { diff: data.next!, oldid: data.torevid! })}\n onClick={(e) => handleNavigationClick(e, data.torevid!, data.next!)}\n >\n Next →\n </a>\n ) : (\n <i>Newest version</i>\n )}\n </td>\n </tr>\n )\n}\n\nexport const DiffTable = (props: DiffTableProps) => {\n const { data, ...rest } = props\n const table = (\n <table className={`theme-ipe diff diff-type-table`} data-mw=\"interface\" {...rest}>\n <colgroup>\n <col className=\"diff-marker\" />\n <col className=\"diff-content\" />\n <col className=\"diff-marker\" />\n <col className=\"diff-content\" />\n </colgroup>\n <tbody>\n <tr>\n <DiffTableHeader\n ctx={props.ctx}\n type=\"from\"\n pageid={data.fromid}\n pagetitle={data.fromtitle}\n revid={data.fromrevid}\n size={data.fromsize}\n timestamp={data.fromtimestamp}\n username={data.fromuser}\n userid={data.fromuserid}\n comment={data.fromcomment}\n parsedcomment={data.fromparsedcomment}\n />\n <DiffTableHeader\n ctx={props.ctx}\n type=\"to\"\n pageid={data.toid}\n pagetitle={data.totitle}\n revid={data.torevid}\n size={data.tosize}\n timestamp={data.totimestamp}\n username={data.touser}\n userid={data.touserid}\n comment={data.tocomment}\n parsedcomment={data.toparsedcomment}\n />\n </tr>\n <DiffTableNavigation data={data} ctx={props.ctx} />\n <div id=\"diffbody\"></div>\n <tr className=\"diff-size\" style={{ textAlign: 'center' }}>\n <td colSpan={2} className=\"diff-size-old\">\n {data.fromsize !== undefined && `${data.fromsize} bytes`}\n </td>\n <td colSpan={2} className=\"diff-size-new\">\n {data.tosize !== undefined && `${data.tosize} bytes`}\n </td>\n </tr>\n </tbody>\n </table>\n )\n table.querySelector('#diffbody')!.outerHTML =\n data.body ||\n (\n <tr>\n <td colSpan={4}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '5rem',\n }}\n >\n <i>No changes</i>\n </div>\n </td>\n </tr>\n ).outerHTML\n return table\n}\n","import { SVGProps } from 'jsx-dom'\n\nexport const IconQuickDiff = (props: SVGProps<SVGSVGElement>) => (\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 {...props}\n class={`icon icon-tabler icons-tabler-outline icon-tabler-file-diff ${props.className || ''}`}\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)\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { type QuickEditEventPayload } from '@/plugins/quick-edit'\nimport { IPEModal, IPEModalOptions } from '@inpageedit/modal'\nimport { DiffTable, DiffTableEvent } from './components/DiffTable'\nimport { MwApiResponse } from 'wiki-saikou'\nimport { IWikiPage } from '@/models/WikiPage/index.js'\nimport { ReactNode } from 'jsx-dom'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickDiff: PluginQuickDiff\n }\n interface Events {\n 'quick-diff/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<CompareApiRequestOptions>\n }): void\n 'quick-diff/loaded'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n compare: CompareApiResponse['compare']\n }): void\n 'quick-diff/quick-edit-modal'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n wikiPage: IWikiPage\n }): void\n }\n interface PreferencesMap {\n 'quickDiff.keyshortcut': string\n }\n}\n\nexport interface CompareApiRequestOptions {\n fromtitle: string\n fromid: number\n fromrev: number\n frompst: boolean\n totitle: string\n toid: number\n torev: number\n torelative?: 'cur' | 'prev' | 'next'\n topst: boolean\n prop: string\n difftype: 'table' | 'unified'\n // deprecated, but still works\n fromtext: string\n fromsection: string | number\n fromcontentmodel: string\n totext: string\n tosection: string | number\n tocontentmodel: string\n}\n\nexport interface CompareApiResponse {\n compare: Partial<{\n fromid: number\n fromrevid: number\n fromns: number\n fromtitle: string\n fromsize: number\n fromtimestamp: string\n fromuser: string\n fromuserid: number\n fromcomment: string\n fromparsedcomment?: string\n toid: number\n torevid: number\n tons: number\n totitle: string\n tosize: number\n totimestamp: string\n touser: string\n touserid: number\n tocomment: string\n toparsedcomment: string\n diffsize: number\n prev: number\n next: number\n }> & {\n body: string\n }\n}\n\n@Inject(['wiki', 'getUrl', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'quickDiff.keyshortcut': Schema.string()\n .default('ctrl-d')\n .description('Key shortcut to open quick diff in quick edit modal'),\n })\n .description('Quick diff options')\n .extra('category', 'editor')\n)\nexport class PluginQuickDiff extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-diff')\n }\n\n protected start(): Promise<void> | void {\n this.ctx.set('quickDiff', this)\n this.ctx.on('quick-edit/wiki-page', this.injectQuickEdit.bind(this))\n window.RLQ.push(this.injectHistoryPage.bind(this))\n }\n\n protected stop(): Promise<void> | void {}\n\n private injectHistoryPage() {\n const { $ } = this.ctx\n const mwCompareForm = qs<HTMLFormElement>('#mw-history-compare')\n if (!mwCompareForm) {\n return\n }\n const compareButtons = qsa('.mw-history-compareselectedversions-button', mwCompareForm)\n compareButtons.forEach((el) => {\n el.after(\n <button\n className=\"cdx-button\"\n onClick={(e) => {\n e.preventDefault()\n const formData = new FormData(mwCompareForm)\n const fromrev = Number(formData.get('oldid')) || 0\n const torev = Number(formData.get('diff')) || 0\n const title = formData.get('title') as string\n if (!title || !fromrev || !torev) {\n return this.logger.warn('Missing title or revision IDs')\n }\n this.comparePages({\n fromrev,\n torev,\n })\n }}\n >\n {$`Quick Diff`}\n </button>\n )\n })\n }\n\n private async injectQuickEdit({ modal, wikiPage, options }: QuickEditEventPayload) {\n if (wikiPage.pageid === 0 || options.section === 'new') {\n // User is creating a new page, no need to show diff button\n return\n }\n const { $ } = this.ctx\n let latestDiffModal: IPEModal | undefined = undefined\n modal.addButton(\n {\n label: $`Diff`,\n side: 'left',\n keyPress: (await this.ctx.preferences.get('quickDiff.keyshortcut')) || undefined,\n className: 'btn btn-secondary',\n method: () => {\n const pageTitle = wikiPage.title\n const fromtext = wikiPage.revisions?.[0]?.content || ''\n const totext =\n (modal.get$content().querySelector<HTMLTextAreaElement>('textarea[name=\"text\"]')\n ?.value as string) || ''\n\n if (fromtext === totext) {\n return this.ctx.modal.notify('info', { title: $`Quick Diff`, content: $`No changes` })\n }\n\n this.ctx.emit('quick-diff/quick-edit-modal', {\n ctx: this.ctx,\n modal,\n wikiPage,\n })\n\n latestDiffModal = this.comparePages(\n {\n fromtitle: pageTitle,\n fromtext,\n totitle: pageTitle,\n totext,\n topst: true,\n },\n latestDiffModal,\n {\n backdrop: false,\n draggable: true,\n }\n )\n return latestDiffModal\n },\n },\n 2\n )\n modal.on(modal.Event.Close, () => {\n latestDiffModal?.destroy()\n latestDiffModal = undefined\n })\n }\n\n readonly COMPARE_API_DEFAULT_OPTIONS: Partial<CompareApiRequestOptions> = {\n prop: [\n 'comment',\n 'diff',\n 'diffsize',\n 'ids',\n 'parsedcomment',\n 'size',\n 'timestamp',\n 'title',\n 'user',\n 'rel',\n ].join('|'),\n difftype: 'table',\n }\n\n comparePages(\n options: Partial<CompareApiRequestOptions>,\n modal?: IPEModal,\n modalOptions?: Partial<IPEModalOptions>\n ) {\n const { $ } = this.ctx\n if (!modal || modal.isDestroyed) {\n modal = this.ctx.modal\n .createObject({\n title: $`Loading diff...`,\n content: '',\n className: 'quick-diff',\n center: false,\n ...modalOptions,\n })\n .init()\n } else {\n modal.removeButton('*')\n }\n\n this.ctx.emit('quick-diff/init-options', {\n ctx: this.ctx,\n options,\n })\n\n modal.setContent(\n <section\n style={{ height: '70vh', display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <ProgressBar />\n </section>\n )\n modal.bringToFront()\n\n if (window.mw && mw.loader.getState('mediawiki.diff.styles') !== 'ready') {\n mw.loader.load(['mediawiki.diff.styles'])\n }\n\n this.ctx.api\n .post<MwApiResponse<CompareApiResponse>>({\n ...this.COMPARE_API_DEFAULT_OPTIONS,\n ...options,\n action: 'compare',\n format: 'json',\n formatversion: 2,\n })\n .then((res) => {\n if (!res.data.compare) {\n throw new Error('No compare data received', { cause: res })\n }\n const {\n data: { compare },\n } = res\n modal.setTitle(\n compare.fromtitle && compare.totitle\n ? `${compare.fromtitle}${compare.fromrevid ? ` (${compare.fromrevid})` : ''} ⇔ ${compare.totitle}${compare.torevid ? ` (${compare.torevid})` : ''}`\n : $`Differences`\n )\n let diffTable!: HTMLElement\n modal.setContent(\n (\n <section\n style={{\n minHeight: '70vh',\n }}\n >\n <DiffTable ref={(ref) => (diffTable = ref)} data={compare} ctx={this.ctx} />\n </section>\n ) as HTMLElement\n )\n diffTable.addEventListener(\n DiffTableEvent.update,\n (e) => {\n e.stopPropagation()\n this.comparePages(\n {\n fromrev: e.detail.fromrev,\n torev: e.detail.torev,\n },\n modal,\n modalOptions\n )\n },\n { once: true }\n )\n\n // TODO: 不应该硬编码,移动到 in-article-links 插件中\n this.ctx.inject(['quickEdit'], (ctx) => {\n const handleQuickEdit = (e: CustomEvent<{ revid: number }>) => {\n e.stopPropagation()\n ctx.quickEdit({ revision: e.detail.revid })\n }\n diffTable.addEventListener(DiffTableEvent.edit, handleQuickEdit)\n modal.on(modal.Event.Close, () => {\n diffTable.removeEventListener(DiffTableEvent.edit, handleQuickEdit)\n })\n })\n\n if (compare.fromrevid && compare.torevid) {\n modal.addButton({\n label: $`Original Compare Page`,\n side: 'right',\n className: 'btn btn-secondary',\n method: () => {\n window.location.href = this.ctx.getUrl('', {\n oldid: compare.fromrevid,\n diff: compare.torevid,\n })\n },\n })\n }\n\n this.ctx.emit('quick-diff/loaded', {\n ctx: this.ctx,\n modal,\n compare,\n })\n })\n .catch((err) => {\n modal.setContent(\n (\n <MBox title={$`Failed to load diff`} type=\"error\">\n <pre>{err instanceof Error ? err.message : String(err)}</pre>\n </MBox>\n ) as HTMLElement\n )\n })\n\n return modal.show()\n }\n\n createQuickDiffButton(\n payload: Partial<CompareApiRequestOptions>,\n options?: {\n label?: ReactNode\n icon?: ReactNode\n }\n ) {\n const { $ } = this.ctx\n const icon = options?.icon ?? <IconQuickDiff className=\"ipe-icon\" />\n const label = options?.label ?? $`Quick Diff`\n return (\n <a\n href={`#ipe://quick-diff/`}\n dataset={payload as any}\n className={`ipe-quick-diff`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.comparePages(payload)\n }}\n >\n {icon}\n {label}\n </a>\n ) as HTMLAnchorElement\n }\n}\n"],"names":["MwUserLinks","props","user","target","ctx","getUrl","jsxs","jsx","DiffTableEvent","formatDate","DiffTableHeader","classList","handleEditClick","e","IconQuickEdit","Fragment","DiffTableNavigation","data","handleNavigationClick","fromrev","torev","DiffTable","rest","table","IconQuickDiff","_PluginQuickDiff_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginQuickDiff","BasePlugin","$","mwCompareForm","qs","qsa","el","formData","modal","wikiPage","options","latestDiffModal","pageTitle","fromtext","totext","modalOptions","ProgressBar","res","compare","diffTable","ref","handleQuickEdit","err","MBox","payload","icon","label","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}