@inpageedit/core 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +55 -55
  3. package/dist/ActionButton-ByMKIthQ.js +24 -0
  4. package/dist/ActionButton-ByMKIthQ.js.map +1 -0
  5. package/dist/InPageEdit.d.ts +7 -2
  6. package/dist/{CheckBox-ROZZIK-t.js → InputBox-FIzJ-rPN.js} +11 -11
  7. package/dist/InputBox-FIzJ-rPN.js.map +1 -0
  8. package/dist/Preferences-Bg3J5Ur9.js.map +1 -1
  9. package/dist/{RadioBox-Bt5tAniV.js → RadioBox-BZFhTEo5.js} +2 -2
  10. package/dist/RadioBox-BZFhTEo5.js.map +1 -0
  11. package/dist/components/ActionButton.d.ts +6 -9
  12. package/dist/components/SchemaForm/index.d.ts +142 -0
  13. package/dist/components/index.d.ts +8 -0
  14. package/dist/components/index.js +79 -0
  15. package/dist/components/index.js.map +1 -0
  16. package/dist/{index-M4USLRId.js → index-BByzm2Fz.js} +169 -167
  17. package/dist/index-BByzm2Fz.js.map +1 -0
  18. package/dist/{index-BI0z4WfP.js → index-BPsDFq9U.js} +2 -2
  19. package/dist/index-BPsDFq9U.js.map +1 -0
  20. package/dist/{index-Bz9ciRCe.js → index-BsYzf3Yw.js} +9 -8
  21. package/dist/index-BsYzf3Yw.js.map +1 -0
  22. package/dist/{index-DIovbA02.js → index-CMqk2ovP.js} +14 -14
  23. package/dist/index-CMqk2ovP.js.map +1 -0
  24. package/dist/{index-DPXRKwGM.js → index-Ch5DJDZZ.js} +20 -19
  25. package/dist/index-Ch5DJDZZ.js.map +1 -0
  26. package/dist/index-Cq1Q9Xau.js +4635 -0
  27. package/dist/index-Cq1Q9Xau.js.map +1 -0
  28. package/dist/{index-01GVXg9H.js → index-Cq9xxVsu.js} +20 -30
  29. package/dist/index-Cq9xxVsu.js.map +1 -0
  30. package/dist/index-CvhkVj_L.js +361 -0
  31. package/dist/index-CvhkVj_L.js.map +1 -0
  32. package/dist/{index-jJ3Ut97G.js → index-HyxA2rYz.js} +20 -19
  33. package/dist/index-HyxA2rYz.js.map +1 -0
  34. package/dist/{index-BY3hO6sZ.js → index-X1X416tZ.js} +36 -34
  35. package/dist/index-X1X416tZ.js.map +1 -0
  36. package/dist/index.d.ts +16 -1
  37. package/dist/index.js +5187 -5
  38. package/dist/index.js.map +1 -1
  39. package/dist/plugins/BasePlugin.d.ts +2 -2
  40. package/dist/plugins/preferences/{PluginPreferencesUI.d.ts → ui/index.d.ts} +3 -2
  41. package/dist/sleep-DpyIipK-.js.map +1 -1
  42. package/dist/style.css +1 -1
  43. package/dist/{plugins/preferences/components/hooks.d.ts → utils/vueHooks.d.ts} +1 -1
  44. package/lib/index.umd.js +57 -2620
  45. package/lib/index.umd.js.map +1 -0
  46. package/lib/style.css +1 -1
  47. package/package.json +42 -4
  48. package/dist/ActionButton-B9JniHy6.js +0 -33
  49. package/dist/ActionButton-B9JniHy6.js.map +0 -1
  50. package/dist/CheckBox-ROZZIK-t.js.map +0 -1
  51. package/dist/PluginPreferencesUI-7u9JClgy.js +0 -33921
  52. package/dist/PluginPreferencesUI-7u9JClgy.js.map +0 -1
  53. package/dist/RadioBox-Bt5tAniV.js.map +0 -1
  54. package/dist/i18n/languages.json +0 -1527
  55. package/dist/index-01GVXg9H.js.map +0 -1
  56. package/dist/index-BI0z4WfP.js.map +0 -1
  57. package/dist/index-BY3hO6sZ.js.map +0 -1
  58. package/dist/index-Bz9ciRCe.js.map +0 -1
  59. package/dist/index-CGg-JS5d.js +0 -5466
  60. package/dist/index-CGg-JS5d.js.map +0 -1
  61. package/dist/index-DIovbA02.js.map +0 -1
  62. package/dist/index-DPXRKwGM.js.map +0 -1
  63. package/dist/index-M4USLRId.js.map +0 -1
  64. package/dist/index-jJ3Ut97G.js.map +0 -1
  65. package/dist/utils/schemaValidator.d.ts +0 -12
  66. package/lib/i18n/languages.json +0 -1527
  67. /package/dist/components/TabView/{TabView.d.ts → index.d.ts} +0 -0
@@ -1,7 +1,8 @@
1
- import { B as I, j as s, a as A, S as m, F as E, P as Q } from "./index-CGg-JS5d.js";
1
+ import { j as s, F as E, P as Q } from "./index-CvhkVj_L.js";
2
+ import { BasePlugin as I, Inject as A, Schema as m } from "./index.js";
2
3
  import { R as C } from "./Preferences-Bg3J5Ur9.js";
3
- import { M as U, R as z } from "./RadioBox-Bt5tAniV.js";
4
- import { I as D, C as y } from "./CheckBox-ROZZIK-t.js";
4
+ import { M as U, R as z } from "./RadioBox-BZFhTEo5.js";
5
+ import { I as D, C as y } from "./InputBox-FIzJ-rPN.js";
5
6
  import { s as R } from "./sleep-DpyIipK-.js";
6
7
  var h = /* @__PURE__ */ ((t) => (t.preferences = "preferences", t.watch = "watch", t.unwatch = "unwatch", t.nochange = "nochange", t))(h || {}), W = Object.create, x = Object.defineProperty, H = Object.getOwnPropertyDescriptor, $ = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), q = (t) => {
7
8
  throw TypeError(t);
@@ -9,12 +10,12 @@ var h = /* @__PURE__ */ ((t) => (t.preferences = "preferences", t.watch = "watch
9
10
  for (var i = 0, l = t[e >> 1], o = l && l.length; i < o; i++) l[i].call(r);
10
11
  return c;
11
12
  }, ee = (t, e, r, c, i, l) => {
12
- var o, n, u, d = e & 7, p = !1, a = 0, g = t[a] || (t[a] = []), f = d && (i = i.prototype, d < 5 && (d > 3 || !p) && H(i, r));
13
+ var o, n, u, d = e & 7, g = !1, a = 0, p = t[a] || (t[a] = []), f = d && (i = i.prototype, d < 5 && (d > 3 || !g) && H(i, r));
13
14
  G(i, r);
14
15
  for (var v = c.length - 1; v >= 0; v--)
15
- u = J(d, r, n = {}, t[3], g), o = (0, c[v])(i, u), n._ = 1, L(o) && (i = o);
16
- return V(t, i), f && x(i, r, f), p ? d ^ 4 ? l : f : i;
17
- }, M, _, B;
16
+ u = J(d, r, n = {}, t[3], p), o = (0, c[v])(i, u), n._ = 1, L(o) && (i = o);
17
+ return V(t, i), f && x(i, r, f), g ? d ^ 4 ? l : f : i;
18
+ }, M, _, N;
18
19
  M = [A(["sitemeta", "quickEdit"]), C(
19
20
  m.object({
20
21
  redLinkEdit: m.boolean().description("Show quick edit entry after red links").default(!0)
@@ -23,7 +24,7 @@ M = [A(["sitemeta", "quickEdit"]), C(
23
24
  redLinkEdit: !0
24
25
  }
25
26
  )];
26
- class w extends (B = I) {
27
+ class w extends (N = I) {
27
28
  constructor(e) {
28
29
  const r = e.sitemeta.mwConfig, c = r.wgArticlePath.replace("$1", ""), i = `${location.protocol}//${r.wgServer.split("//")[1]}`;
29
30
  super(
@@ -112,22 +113,22 @@ class w extends (B = I) {
112
113
  };
113
114
  }
114
115
  }
115
- _ = K(B);
116
+ _ = K(N);
116
117
  w = ee(_, 0, "PluginQuickEditInArticleLinks", M, w);
117
118
  Z(_, 1, w);
118
119
  const P = () => {
119
120
  };
120
- var te = Object.create, b = Object.defineProperty, ie = Object.getOwnPropertyDescriptor, N = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), O = (t) => {
121
+ var te = Object.create, b = Object.defineProperty, ie = Object.getOwnPropertyDescriptor, B = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), O = (t) => {
121
122
  throw TypeError(t);
122
- }, re = (t, e, r) => e in t ? b(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, ne = (t, e) => b(t, "name", { value: e, configurable: !0 }), oe = (t) => [, , , te(t?.[N("metadata")] ?? null)], se = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], T = (t) => t !== void 0 && typeof t != "function" ? O("Function expected") : t, ce = (t, e, r, c, i) => ({ kind: se[t], name: e, metadata: c, addInitializer: (l) => r._ ? O("Already initialized") : i.push(T(l || null)) }), ae = (t, e) => re(e, N("metadata"), t[3]), le = (t, e, r, c) => {
123
+ }, re = (t, e, r) => e in t ? b(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, ne = (t, e) => b(t, "name", { value: e, configurable: !0 }), oe = (t) => [, , , te(t?.[B("metadata")] ?? null)], se = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], T = (t) => t !== void 0 && typeof t != "function" ? O("Function expected") : t, ce = (t, e, r, c, i) => ({ kind: se[t], name: e, metadata: c, addInitializer: (l) => r._ ? O("Already initialized") : i.push(T(l || null)) }), ae = (t, e) => re(e, B("metadata"), t[3]), le = (t, e, r, c) => {
123
124
  for (var i = 0, l = t[e >> 1], o = l && l.length; i < o; i++) l[i].call(r);
124
125
  return c;
125
126
  }, de = (t, e, r, c, i, l) => {
126
- var o, n, u, d = e & 7, p = !1, a = 0, g = t[a] || (t[a] = []), f = d && (i = i.prototype, d < 5 && (d > 3 || !p) && ie(i, r));
127
+ var o, n, u, d = e & 7, g = !1, a = 0, p = t[a] || (t[a] = []), f = d && (i = i.prototype, d < 5 && (d > 3 || !g) && ie(i, r));
127
128
  ne(i, r);
128
129
  for (var v = c.length - 1; v >= 0; v--)
129
- u = ce(d, r, n = {}, t[3], g), o = (0, c[v])(i, u), n._ = 1, T(o) && (i = o);
130
- return ae(t, i), f && b(i, r, f), p ? d ^ 4 ? l : f : i;
130
+ u = ce(d, r, n = {}, t[3], p), o = (0, c[v])(i, u), n._ = 1, T(o) && (i = o);
131
+ return ae(t, i), f && b(i, r, f), g ? d ^ 4 ? l : f : i;
131
132
  }, j, S, F;
132
133
  j = [A(["api", "wikiPage", "modal", "preferences"]), C(
133
134
  m.object({
@@ -281,7 +282,7 @@ class k extends (F = I) {
281
282
  !1
282
283
  ] });
283
284
  n.setContent(d);
284
- const p = n.generateButton({
285
+ const g = n.generateButton({
285
286
  side: "left",
286
287
  className: "btn btn-primary submit-btn",
287
288
  label: "Submit",
@@ -305,15 +306,15 @@ class k extends (F = I) {
305
306
  title: "Submission Successful",
306
307
  content: "Your changes have been saved."
307
308
  }), a.get("reloadAfterSave") && (await R(500), location.reload());
308
- }).catch((g) => {
309
+ }).catch((p) => {
309
310
  this.ctx.modal.notify("error", {
310
311
  title: "Submission Error",
311
- content: g instanceof Error ? g.message : String(g)
312
+ content: p instanceof Error ? p.message : String(p)
312
313
  }), n.setLoadingState(!1);
313
314
  });
314
315
  }
315
316
  });
316
- n.get$buttons("leftButtons").prepend(p), n.setOptions({
317
+ n.get$buttons("leftButtons").prepend(g), n.setOptions({
317
318
  beforeClose: () => {
318
319
  const a = u.revisions[0]?.content || "";
319
320
  return (d.querySelector("textarea")?.value || "") === a ? !0 : (this.ctx.modal.confirm(
@@ -406,4 +407,4 @@ le(S, 1, k);
406
407
  export {
407
408
  k as PluginQuickEdit
408
409
  };
409
- //# sourceMappingURL=index-DPXRKwGM.js.map
410
+ //# sourceMappingURL=index-Ch5DJDZZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Ch5DJDZZ.js","sources":["../src/models/WikiPage/types/WatchlistAction.ts","../src/plugins/quick-edit/PluginQuickEditInArticleLinks.tsx","../src/utils/noop.ts","../src/plugins/quick-edit/index.tsx"],"sourcesContent":["export enum WatchlistAction {\r\n preferences = 'preferences',\r\n watch = 'watch',\r\n unwatch = 'unwatch',\r\n nochange = 'nochange',\r\n}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { QuickEditOptions } from '.'\r\n\r\n@Inject(['sitemeta', 'quickEdit'])\r\n@RegisterPreferences(\r\n Schema.object({\r\n redLinkEdit: Schema.boolean()\r\n .description('Show quick edit entry after red links')\r\n .default(true),\r\n }).description('In-article quick edit links'),\r\n {\r\n redLinkEdit: true,\r\n }\r\n)\r\nexport class PluginQuickEditInArticleLinks extends BasePlugin<{\r\n wikiBaseUrl: string\r\n wikiArticlePath: string\r\n wikiArticleBaseUrl: string\r\n wikiScriptBaseUrl: string\r\n linkClassName: string\r\n}> {\r\n constructor(ctx: InPageEdit) {\r\n const mwConfig = ctx.sitemeta.mwConfig\r\n const wikiArticlePath = mwConfig.wgArticlePath.replace('$1', '')\r\n const wikiBaseUrl = `${location.protocol}//${mwConfig.wgServer.split('//')[1]}`\r\n super(\r\n ctx,\r\n {\r\n wikiBaseUrl,\r\n wikiArticlePath,\r\n wikiArticleBaseUrl: `${wikiBaseUrl}${wikiArticlePath}`,\r\n wikiScriptBaseUrl: `${wikiBaseUrl}${mwConfig.wgScriptPath}`,\r\n linkClassName: 'ipe-quickEdit__in-article-link',\r\n },\r\n 'QuickEditInArticleLinks'\r\n )\r\n }\r\n\r\n protected async start() {\r\n mw.hook('wikipage.content').add(() => {\r\n const anchorList = document.querySelectorAll<HTMLAnchorElement>('#mw-content-text a[href]')\r\n anchorList.forEach((anchor) => {\r\n const info = this.checkEditAnchor(anchor)\r\n if (!info || anchor.dataset.ipeQuickEditLink) {\r\n return\r\n }\r\n\r\n const link = (\r\n <a\r\n href={`#/IPE/quickEdit/${info.title}`}\r\n className={this.config.linkClassName}\r\n style={{\r\n userSelect: 'none',\r\n marginLeft: '0.2em',\r\n verticalAlign: 'middle',\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault()\r\n this.ctx.quickEdit(info)\r\n }}\r\n >\r\n <svg\r\n style=\"width: 1em; height: 1em\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-pencil-bolt\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4\" />\r\n <path d=\"M13.5 6.5l4 4\" />\r\n <path d=\"M19 16l-2 3h4l-2 3\" />\r\n </svg>\r\n </a>\r\n )\r\n\r\n anchor.insertAdjacentElement('afterend', link)\r\n anchor.dataset.ipeQuickEditLink = 'true'\r\n })\r\n })\r\n }\r\n\r\n stop() {\r\n document.querySelectorAll(`.${this.config.linkClassName}`).forEach((el) => el.remove())\r\n }\r\n\r\n checkEditAnchor(\r\n anchor: HTMLAnchorElement\r\n ): Pick<QuickEditOptions, 'title' | 'section' | 'revision' | 'createOnly'> | null {\r\n if (!(anchor instanceof HTMLAnchorElement)) {\r\n return null\r\n }\r\n\r\n const href = anchor.href || ''\r\n if (\r\n !href.startsWith(this.config.wikiArticleBaseUrl) &&\r\n !href.startsWith(this.config.wikiScriptBaseUrl)\r\n ) {\r\n return null\r\n }\r\n const hrefURL = new URL(href)\r\n const params = hrefURL.searchParams\r\n const action = params.get('action') || 'view'\r\n const title =\r\n params.get('title') ||\r\n decodeURI(hrefURL.pathname.substring(this.config.wikiArticlePath.length)) ||\r\n ''\r\n const section = params.get('section')?.replace(/^T-/, '') || undefined\r\n const revision = params.get('oldid')\r\n\r\n if (\r\n // 不合法的 title\r\n !title ||\r\n title.endsWith('.php') ||\r\n // 不是 edit 相关操作\r\n !['edit', 'editsource', 'editredlink', 'submit'].includes(action) ||\r\n // 暂时未兼容 undo\r\n params.get('undo') ||\r\n // 暂时未兼容 preload\r\n params.get('preload')\r\n ) {\r\n return null\r\n }\r\n\r\n let sectionNum: 'new' | number | undefined = undefined\r\n if (section === 'new') {\r\n sectionNum = 'new'\r\n } else if (section && /^\\d+$/.test(section)) {\r\n sectionNum = parseInt(section, 10)\r\n }\r\n\r\n return {\r\n title,\r\n section: sectionNum,\r\n revision: parseInt('' + revision, 10) || 0,\r\n createOnly: !!params.get('redlink'),\r\n }\r\n }\r\n}\r\n","export const noop = () => {}\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\r\nimport { WikiPage } from '@/models/WikiPage'\r\nimport { WatchlistAction } from '@/models/WikiPage/types/WatchlistAction'\r\nimport { PluginQuickEditInArticleLinks } from './PluginQuickEditInArticleLinks'\r\n\r\ndeclare module '@/InPageEdit' {\r\n interface InPageEdit {\r\n quickEdit: PluginQuickEdit['quickEdit']\r\n }\r\n interface Events {\r\n 'quickEdit/initOptions'(payload: Omit<QuickEditInitPayload, 'modal' | 'wikiPage'>): void\r\n 'quickEdit/showModal'(payload: Omit<QuickEditInitPayload, 'wikiPage'>): void\r\n 'quickEdit/wikiPage'(payload: QuickEditInitPayload): void\r\n }\r\n}\r\n\r\nexport interface QuickEditOptions {\r\n title: string\r\n pageId: number\r\n revision: number\r\n /**\r\n * - `undefined` for full article edit\r\n * - `0` for the first section\r\n * - `\"new\"` for a new section\r\n */\r\n section: number | 'new' | undefined\r\n editMinor: boolean\r\n editSummary: string\r\n createOnly: boolean\r\n reloadAfterSave: boolean\r\n}\r\n\r\nexport interface QuickEditInitPayload {\r\n ctx: InPageEdit\r\n options: QuickEditOptions\r\n modal: SsiModal\r\n wikiPage: WikiPage\r\n}\r\n\r\nexport interface QuickEditSubmitPayload {\r\n text?: string\r\n summary?: string\r\n minor?: boolean\r\n createonly?: boolean\r\n watchlist?: WatchlistAction\r\n}\r\n\r\n@Inject(['api', 'wikiPage', 'modal', 'preferences'])\r\n@RegisterPreferences(\r\n Schema.object({\r\n editSummary: Schema.string()\r\n .description('Default edit summary for quick edits')\r\n .default('[IPE-NEXT] Quick edit'),\r\n editMinor: Schema.boolean().description('Whether to mark the edit as minor').default(false),\r\n outSideClose: Schema.boolean().description('Whether to close the modal outside').default(true),\r\n watchList: Schema.union([\r\n Schema.const(WatchlistAction.preferences).description('Follow my preferences'),\r\n Schema.const(WatchlistAction.nochange).description('Keep the current watchlist status'),\r\n Schema.const(WatchlistAction.watch).description('Add the page to watchlist'),\r\n Schema.const(WatchlistAction.unwatch).description('Remove the page from watchlist'),\r\n ])\r\n .description('Watchlist options')\r\n .default(WatchlistAction.preferences),\r\n })\r\n .description('Quick edit options')\r\n .extra('category', 'edit'),\r\n {\r\n editSummary: '[IPE-NEXT] Quick edit',\r\n editMinor: false,\r\n outSideClose: true,\r\n watchList: WatchlistAction.preferences,\r\n }\r\n)\r\nexport class PluginQuickEdit extends BasePlugin {\r\n private readonly DEFAULT_OPTIONS: QuickEditOptions = {\r\n title: '',\r\n pageId: 0,\r\n revision: 0,\r\n section: undefined,\r\n editMinor: false,\r\n editSummary: '',\r\n createOnly: false,\r\n reloadAfterSave: true,\r\n }\r\n\r\n constructor(public ctx: InPageEdit) {\r\n super(ctx, {}, 'quick-edit')\r\n }\r\n\r\n protected start(): Promise<void> | void {\r\n this.ctx.root.set('quickEdit', this.quickEdit.bind(this))\r\n this.ctx.inject(['toolbox'], (ctx) => {\r\n this.injectToolbox(ctx)\r\n ctx.on('dispose', () => {\r\n this.removeToolbox(ctx)\r\n })\r\n })\r\n\r\n this.ctx.plugin(PluginQuickEditInArticleLinks)\r\n }\r\n\r\n async quickEdit(payload?: string | Partial<QuickEditOptions>) {\r\n if (typeof payload === 'undefined') {\r\n payload = {}\r\n } else if (typeof payload === 'string') {\r\n payload = {\r\n title: payload,\r\n } as Partial<QuickEditOptions>\r\n }\r\n\r\n // @ts-expect-error legacy `page` option\r\n if (payload?.page) {\r\n // @ts-expect-error\r\n payload.title = payload.page\r\n // @ts-expect-error\r\n delete payload.page\r\n }\r\n\r\n if (!payload.title && !payload.pageId && !payload.revision) {\r\n this.logger.warn('None of the title, pageId or revision provided. Using defaults.')\r\n payload = {\r\n ...payload,\r\n title: mw.config.get('wgPageName'),\r\n pageId: mw.config.get('wgArticleId'),\r\n revision: mw.config.get('wgRevisionId'),\r\n }\r\n }\r\n\r\n const outSideClose = (await this.ctx.preferences.get<boolean>('outSideClose'))!\r\n const watchList = (await this.ctx.preferences.get<WatchlistAction>('watchList'))!\r\n const editSummary =\r\n typeof payload.editSummary === 'string'\r\n ? payload.editSummary\r\n : (await this.ctx.preferences.get<string>('editSummary'))!\r\n const editMinor =\r\n typeof payload.editMinor === 'boolean'\r\n ? payload.editMinor\r\n : (await this.ctx.preferences.get<boolean>('editMinor'))!\r\n\r\n const options: QuickEditOptions = {\r\n ...this.DEFAULT_OPTIONS,\r\n editSummary,\r\n editMinor,\r\n ...payload,\r\n }\r\n if (!options.editSummary) {\r\n options.editSummary = (await this.ctx.preferences.get<string>('editSummary')) || ''\r\n }\r\n if (!options) this.ctx.emit('quickEdit/initOptions', { ctx: this.ctx, options })\r\n\r\n const modal = this.ctx.modal\r\n .createObject({\r\n className: 'in-page-edit ipe-quickEdit ipe-editor',\r\n sizeClass: 'large',\r\n outSideClose,\r\n })\r\n .init()\r\n modal.setTitle(\r\n (\r\n <>\r\n Loading: <u>{options.title}</u>\r\n </>\r\n ) as HTMLElement\r\n )\r\n modal.setContent(\r\n (\r\n <section\r\n className=\"ipe-quickEdit-loading\"\r\n style={{\r\n height: '70vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n >\r\n <ProgressBar />\r\n </section>\r\n ) as HTMLElement\r\n )\r\n modal.setButtons([\r\n {\r\n side: 'right',\r\n type: 'button',\r\n className: 'btn btn-danger btn-secondary',\r\n label: 'Cancel',\r\n method() {\r\n modal.close()\r\n },\r\n },\r\n ])\r\n modal.show()\r\n this.ctx.emit('quickEdit/showModal', { ctx: this.ctx, modal, options })\r\n\r\n let wikiPage: WikiPage\r\n try {\r\n wikiPage = await this.getWikiPageFromPayload(options)\r\n } catch (e) {\r\n modal.close()\r\n this.ctx.modal.notify('error', {\r\n title: 'Error',\r\n content: e instanceof Error ? e.message : String(e),\r\n })\r\n return\r\n }\r\n modal.setTitle(\r\n (\r\n <>\r\n Quick {wikiPage.pageInfo.pageid === 0 ? 'Create' : 'Edit'}:{' '}\r\n <u>{wikiPage.pageInfo.title}</u>\r\n </>\r\n ) as HTMLElement\r\n )\r\n const editForm = (\r\n <form className=\"ipe-quickEdit-form\">\r\n {/* 页面不存在 */}\r\n {wikiPage.pageInfo.pageid === 0 && (\r\n <MBox title=\"Attention\" type=\"important\">\r\n <p>This page does not exist.</p>\r\n </MBox>\r\n )}\r\n <textarea className=\"editArea\" name=\"text\" id=\"wpTextbox1\">\r\n {wikiPage.revisions[0]?.content || ''}\r\n </textarea>\r\n <div\r\n class=\"ipe-quickEdit-options\"\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem',\r\n }}\r\n >\r\n <InputBox label=\"Summary\" id=\"summary\" name=\"summary\" value={options.editSummary} />\r\n <div>\r\n <label htmlFor=\"watchlist\" style={{ display: 'block' }}>\r\n Watchlist\r\n </label>\r\n <div style={{ display: 'flex', gap: '1rem' }}>\r\n {[\r\n WatchlistAction.preferences,\r\n WatchlistAction.nochange,\r\n WatchlistAction.watch,\r\n WatchlistAction.unwatch,\r\n ].map((action) => (\r\n <RadioBox\r\n key={action}\r\n name=\"watchlist\"\r\n value={action}\r\n inputProps={{ checked: watchList === action }}\r\n >\r\n {action}\r\n </RadioBox>\r\n ))}\r\n </div>\r\n </div>\r\n <div style={{ display: 'flex', gap: '1rem' }}>\r\n <CheckBox name=\"minor\" id=\"minor\" checked={options.editMinor}>\r\n Minor edit\r\n </CheckBox>\r\n <CheckBox name=\"reloadAfterSave\" id=\"reloadAfterSave\" checked={options.reloadAfterSave}>\r\n Reload after save\r\n </CheckBox>\r\n </div>\r\n </div>\r\n {/* Debug Info */}\r\n {import.meta.env.DEV && (\r\n <div className=\"debug\" style={{ marginTop: '1rem' }}>\r\n <details>\r\n <pre>{JSON.stringify(wikiPage.pageInfo, null, 2)}</pre>\r\n </details>\r\n </div>\r\n )}\r\n </form>\r\n ) as HTMLFormElement\r\n modal.setContent(editForm)\r\n const submitButton = modal.generateButton({\r\n side: 'left',\r\n className: 'btn btn-primary submit-btn',\r\n label: 'Submit',\r\n method: () => {\r\n const formData = new FormData(editForm)\r\n console.info(wikiPage, editForm, {\r\n text: formData.get('text') as string,\r\n summary: formData.get('summary') as string,\r\n minor: formData.get('minor') === 'on',\r\n })\r\n modal.setLoadingState(true)\r\n this.handleSubmit(\r\n { ctx: this.ctx, modal, wikiPage, options },\r\n {\r\n text: formData.get('text') as string,\r\n summary: formData.get('summary') as string,\r\n minor: formData.get('minor') === 'on',\r\n }\r\n )\r\n .then(async () => {\r\n modal.setOptions({\r\n beforeClose: noop,\r\n })\r\n modal.close()\r\n this.ctx.modal.notify('success', {\r\n title: 'Submission Successful',\r\n content: 'Your changes have been saved.',\r\n })\r\n if (formData.get('reloadAfterSave')) {\r\n await sleep(500)\r\n location.reload()\r\n }\r\n })\r\n .catch((error) => {\r\n this.ctx.modal.notify('error', {\r\n title: 'Submission Error',\r\n content: error instanceof Error ? error.message : String(error),\r\n })\r\n modal.setLoadingState(false)\r\n })\r\n },\r\n })\r\n // shamefully fix: make sure the submit button is always the first\r\n modal.get$buttons('leftButtons').prepend(submitButton)\r\n modal.setOptions({\r\n beforeClose: () => {\r\n const oldStr = wikiPage.revisions[0]?.content || ''\r\n const newStr = editForm.querySelector('textarea')?.value || ''\r\n if (newStr === oldStr) {\r\n return true\r\n } else {\r\n this.ctx.modal.confirm(\r\n {\r\n className: 'in-page-edit',\r\n title: 'Unsaved Changes',\r\n content:\r\n 'All edit contents will be lost after closing the modal. Are you sure you want to close?',\r\n center: true,\r\n okBtn: {\r\n label: 'Give Up',\r\n className: 'btn btn-danger',\r\n },\r\n cancelBtn: {\r\n label: 'Continue',\r\n className: 'btn',\r\n },\r\n },\r\n (result) => {\r\n if (result) {\r\n modal.setOptions({\r\n beforeClose: noop,\r\n })\r\n modal.close()\r\n }\r\n return true\r\n }\r\n )\r\n return false\r\n }\r\n },\r\n })\r\n this.ctx.emit('quickEdit/wikiPage', {\r\n ctx: this.ctx,\r\n options,\r\n modal,\r\n wikiPage,\r\n })\r\n }\r\n\r\n private handleSubmit(init: QuickEditInitPayload, payload: QuickEditSubmitPayload) {\r\n const summary = payload.summary || ''\r\n const text = payload.text || ''\r\n const minor = payload.minor || false\r\n const createonly = payload.createonly || false\r\n const watchlist = payload.watchlist || WatchlistAction.nochange\r\n\r\n return init.wikiPage.edit(\r\n {\r\n summary,\r\n text,\r\n watchlist,\r\n },\r\n {\r\n minor,\r\n createonly,\r\n }\r\n )\r\n }\r\n\r\n private injectToolbox(ctx: InPageEdit) {\r\n ctx.toolbox.addButton({\r\n id: 'quick-edit',\r\n group: 'group1',\r\n index: 0,\r\n icon: (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-edit\"\r\n >\r\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\r\n <path d=\"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1\" />\r\n <path d=\"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z\" />\r\n <path d=\"M16 5l3 3\" />\r\n </svg>\r\n ) as HTMLElement,\r\n tooltip: 'Edit this page quickly',\r\n onClick: () => this.quickEdit(),\r\n })\r\n }\r\n\r\n private async getWikiPageFromPayload(payload: Partial<QuickEditOptions>) {\r\n if (payload.revision) {\r\n return this.ctx.wikiPage.newFromRevision(payload.revision, payload.section)\r\n } else if (payload.pageId) {\r\n return this.ctx.wikiPage.newFromPageId(payload.pageId, payload.section)\r\n } else if (payload.title) {\r\n return this.ctx.wikiPage.newFromTitle(payload.title, false, payload.section)\r\n }\r\n throw new Error('Invalid payload')\r\n }\r\n\r\n protected removeToolbox(ctx: InPageEdit) {\r\n ctx.toolbox.removeButton('quick-edit')\r\n }\r\n}\r\n"],"names":["WatchlistAction","_PluginQuickEditInArticleLinks_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginQuickEditInArticleLinks","BasePlugin","ctx","mwConfig","wikiArticlePath","wikiBaseUrl","anchor","info","link","jsx","e","jsxs","el","href","hrefURL","params","action","title","section","revision","sectionNum","__decoratorStart","__decorateElement","__runInitializers","noop","_PluginQuickEdit_decorators","PluginQuickEdit","payload","outSideClose","watchList","editSummary","editMinor","options","modal","Fragment","ProgressBar","wikiPage","editForm","MBox","InputBox","RadioBox","CheckBox","submitButton","formData","sleep","error","oldStr","result","init","summary","text","minor","createonly","watchlist"],"mappings":"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"}