@inpageedit/core 0.14.1 → 0.14.3

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 (50) hide show
  1. package/README.md +5 -4
  2. package/dist/{BasePlugin-YOi2_vUo.js → BasePlugin-DD7l-5Xw.js} +2 -2
  3. package/dist/{BasePlugin-YOi2_vUo.js.map → BasePlugin-DD7l-5Xw.js.map} +1 -1
  4. package/dist/{PluginPrefSync-jTNlRQE-.js → PluginPrefSync-CbFuuC19.js} +3 -3
  5. package/dist/{PluginPrefSync-jTNlRQE-.js.map → PluginPrefSync-CbFuuC19.js.map} +1 -1
  6. package/dist/{PluginStoreApp-CGNxKXAN.js → PluginStoreApp-qiSVtnBy.js} +2 -2
  7. package/dist/{PluginStoreApp-CGNxKXAN.js.map → PluginStoreApp-qiSVtnBy.js.map} +1 -1
  8. package/dist/Preferences-C10tZMl1.js +2701 -0
  9. package/dist/Preferences-C10tZMl1.js.map +1 -0
  10. package/dist/{index-3NZkG2a3.js → index-BXNyXvre.js} +3 -3
  11. package/dist/{index-3NZkG2a3.js.map → index-BXNyXvre.js.map} +1 -1
  12. package/dist/{index-Bb0FiU2c.js → index-BanevHQ2.js} +21 -17
  13. package/dist/index-BanevHQ2.js.map +1 -0
  14. package/dist/index-BjDTD66_.js +491 -0
  15. package/dist/index-BjDTD66_.js.map +1 -0
  16. package/dist/{index-D97lUU3h.js → index-BpQ6VGMz.js} +55 -55
  17. package/dist/index-BpQ6VGMz.js.map +1 -0
  18. package/dist/{index-D-fW3ESK.js → index-CnR6CqkM.js} +2 -2
  19. package/dist/{index-D-fW3ESK.js.map → index-CnR6CqkM.js.map} +1 -1
  20. package/dist/{index-DELHsLHS.js → index-DKCZDN-Q.js} +4 -4
  21. package/dist/{index-DELHsLHS.js.map → index-DKCZDN-Q.js.map} +1 -1
  22. package/dist/{index-BBNseJXG.js → index-DVOc6fB6.js} +3 -3
  23. package/dist/{index-BBNseJXG.js.map → index-DVOc6fB6.js.map} +1 -1
  24. package/dist/{index-D6zFqL2u.js → index-De25v1_Q.js} +3 -3
  25. package/dist/{index-D6zFqL2u.js.map → index-De25v1_Q.js.map} +1 -1
  26. package/dist/{index-BrYKe18j.js → index-DensW9qt.js} +3 -3
  27. package/dist/{index-BrYKe18j.js.map → index-DensW9qt.js.map} +1 -1
  28. package/dist/{index-DTHY5rAO.js → index-DrIf5j8O.js} +156 -127
  29. package/dist/index-DrIf5j8O.js.map +1 -0
  30. package/dist/index-MgXERLzL.js +3090 -0
  31. package/dist/index-MgXERLzL.js.map +1 -0
  32. package/dist/{index-DmLoihN1.js → index-WfXtYVMt.js} +134 -131
  33. package/dist/index-WfXtYVMt.js.map +1 -0
  34. package/dist/index.d.ts +38 -6
  35. package/dist/index.js +5 -5
  36. package/dist/models/index.js +7 -503
  37. package/dist/models/index.js.map +1 -1
  38. package/dist/plugins/index.js +10 -10
  39. package/dist/services/index.js +1 -1
  40. package/lib/index.umd.js +11 -11
  41. package/lib/index.umd.js.map +1 -1
  42. package/package.json +5 -5
  43. package/dist/Preferences-BF2fcXrn.js +0 -1539
  44. package/dist/Preferences-BF2fcXrn.js.map +0 -1
  45. package/dist/index-Bb0FiU2c.js.map +0 -1
  46. package/dist/index-BgkZW91u.js +0 -4245
  47. package/dist/index-BgkZW91u.js.map +0 -1
  48. package/dist/index-D97lUU3h.js.map +0 -1
  49. package/dist/index-DTHY5rAO.js.map +0 -1
  50. package/dist/index-DmLoihN1.js.map +0 -1
@@ -1,47 +1,47 @@
1
- import { j as i, F as _, P as j } from "./index-CM_6yF2v.js";
1
+ import { j as i, F as _, P as R } from "./index-CM_6yF2v.js";
2
2
  import { W as h } from "./WatchlistAction-BbNAyryN.js";
3
- import { m as R } from "./makeCallable-LDU0xZMJ.js";
4
- import { I as $, R as U, S as a } from "./Preferences-BF2fcXrn.js";
5
- import { B as Q } from "./BasePlugin-YOi2_vUo.js";
6
- import { M as q } from "./index-CG38LlAh.js";
7
- import { I as T, C as I } from "./InputBox-nQKtiWtZ.js";
8
- import { R as W } from "./RadioBox-0UuxlcWZ.js";
9
- import { n as C } from "./noop-ClDc6zv4.js";
10
- const z = (s = 0) => new Promise((e) => setTimeout(e, s));
11
- var K = Object.create, E = Object.defineProperty, Y = Object.getOwnPropertyDescriptor, F = (s, e) => (e = Symbol[s]) ? e : Symbol.for("Symbol." + s), O = (s) => {
3
+ import { m as $ } from "./makeCallable-LDU0xZMJ.js";
4
+ import { T as U, I as Q, R as W, S as l } from "./Preferences-C10tZMl1.js";
5
+ import { B as z } from "./BasePlugin-DD7l-5Xw.js";
6
+ import { M as T } from "./index-CG38LlAh.js";
7
+ import { I, C } from "./InputBox-nQKtiWtZ.js";
8
+ import { R as Y } from "./RadioBox-0UuxlcWZ.js";
9
+ import { n as F } from "./noop-ClDc6zv4.js";
10
+ const K = (s = 0) => new Promise((e) => setTimeout(e, s));
11
+ var H = Object.create, E = Object.defineProperty, G = Object.getOwnPropertyDescriptor, O = (s, e) => (e = Symbol[s]) ? e : Symbol.for("Symbol." + s), M = (s) => {
12
12
  throw TypeError(s);
13
- }, H = (s, e, t) => e in s ? E(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, G = (s, e) => E(s, "name", { value: e, configurable: !0 }), X = (s) => [, , , K(s?.[F("metadata")] ?? null)], J = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], M = (s) => s !== void 0 && typeof s != "function" ? O("Function expected") : s, V = (s, e, t, l, r) => ({ kind: J[s], name: e, metadata: l, addInitializer: (d) => t._ ? O("Already initialized") : r.push(M(d || null)) }), Z = (s, e) => H(e, F("metadata"), s[3]), ee = (s, e, t, l) => {
14
- for (var r = 0, d = s[e >> 1], m = d && d.length; r < m; r++) d[r].call(t);
15
- return l;
16
- }, te = (s, e, t, l, r, d) => {
17
- var m, f, c, o = e & 7, u = !1, v = 0, x = s[v] || (s[v] = []), p = o && (r = r.prototype, o < 5 && (o > 3 || !u) && Y(r, t));
18
- G(r, t);
19
- for (var g = l.length - 1; g >= 0; g--)
20
- c = V(o, t, f = {}, s[3], x), m = (0, l[g])(r, c), f._ = 1, M(m) && (r = m);
21
- return Z(s, r), p && E(r, t, p), u ? o ^ 4 ? d : p : r;
22
- }, B, y, A;
23
- B = [$(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences", "$"]), U(
24
- a.object({
25
- "quickEdit.editSummary": a.string().description("Default edit summary for quick edits").default("[IPE-NEXT] Quick edit"),
26
- "quickEdit.editMinor": a.boolean().description('Default to checking "minor edit" option').default(!1),
27
- "quickEdit.outSideClose": a.boolean().description("Close editor modal by clicking outside").default(!0),
28
- "quickEdit.watchList": a.union([
29
- a.const(h.preferences).description("Follow MW preferences"),
30
- a.const(h.nochange).description("Keep the current watchlist status"),
31
- a.const(h.watch).description("Add the page to watchlist"),
32
- a.const(h.unwatch).description("Remove the page from watchlist")
13
+ }, X = (s, e, t) => e in s ? E(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, J = (s, e) => E(s, "name", { value: e, configurable: !0 }), V = (s) => [, , , H(s?.[O("metadata")] ?? null)], Z = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], B = (s) => s !== void 0 && typeof s != "function" ? M("Function expected") : s, ee = (s, e, t, d, n) => ({ kind: Z[s], name: e, metadata: d, addInitializer: (u) => t._ ? M("Already initialized") : n.push(B(u || null)) }), te = (s, e) => X(e, O("metadata"), s[3]), ie = (s, e, t, d) => {
14
+ for (var n = 0, u = s[e >> 1], f = u && u.length; n < f; n++) u[n].call(t);
15
+ return d;
16
+ }, se = (s, e, t, d, n, u) => {
17
+ var f, w, c, o = e & 7, a = !1, v = 0, x = s[v] || (s[v] = []), p = o && (n = n.prototype, o < 5 && (o > 3 || !a) && G(n, t));
18
+ J(n, t);
19
+ for (var g = d.length - 1; g >= 0; g--)
20
+ c = ee(o, t, w = {}, s[3], x), f = (0, d[g])(n, c), w._ = 1, B(f) && (n = f);
21
+ return te(s, n), p && E(n, t, p), a ? o ^ 4 ? u : p : n;
22
+ }, A, P, L;
23
+ A = [Q(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences", "$"]), W(
24
+ l.object({
25
+ "quickEdit.editSummary": l.string().description("Default edit summary for quick edits").default("[IPE-NEXT] Quick edit"),
26
+ "quickEdit.editMinor": l.boolean().description('Default to checking "minor edit" option').default(!1),
27
+ "quickEdit.outSideClose": l.boolean().description("Close editor modal by clicking outside").default(!0),
28
+ "quickEdit.watchList": l.union([
29
+ l.const(h.preferences).description("Follow MW preferences"),
30
+ l.const(h.nochange).description("Keep the current watchlist status"),
31
+ l.const(h.watch).description("Add the page to watchlist"),
32
+ l.const(h.unwatch).description("Remove the page from watchlist")
33
33
  ]).description("Watchlist options").default(h.preferences),
34
- "quickEdit.keyshortcut.save": a.string().default("ctrl-s").description("save button key shortcut (blank to disable)"),
35
- "quickEdit.editFont": a.union([
36
- a.const("preferences").description("Follow MW preferences"),
37
- a.const("monospace").description("Monospace"),
38
- a.const("sans-serif").description("Sans-serif"),
39
- a.const("serif").description("Serif"),
40
- a.string().description("Custom font (same as CSS `font-family` property)").default("")
34
+ "quickEdit.keyshortcut.save": l.string().default("ctrl-s").description("save button key shortcut (blank to disable)"),
35
+ "quickEdit.editFont": l.union([
36
+ l.const("preferences").description("Follow MW preferences"),
37
+ l.const("monospace").description("Monospace"),
38
+ l.const("sans-serif").description("Sans-serif"),
39
+ l.const("serif").description("Serif"),
40
+ l.string().description("Custom font (same as CSS `font-family` property)").default("")
41
41
  ]).description("Font to use in quick edit's textarea").default("preferences")
42
42
  }).description("Quick edit options").extra("category", "editor")
43
43
  )];
44
- let S = class L extends (A = Q) {
44
+ let S = class D extends (L = z) {
45
45
  constructor(e) {
46
46
  super(e, {}, "quick-edit"), this.ctx = e, this.DEFAULT_OPTIONS = {
47
47
  title: "",
@@ -52,7 +52,7 @@ let S = class L extends (A = Q) {
52
52
  editSummary: "",
53
53
  createOnly: !1,
54
54
  reloadAfterSave: !0
55
- }, this.ctx.root.set("quickEdit", R(this, "showModal"));
55
+ }, this.ctx.root.set("quickEdit", $(this, "showModal"));
56
56
  }
57
57
  start() {
58
58
  this.ctx.inject(["toolbox"], (e) => {
@@ -67,22 +67,22 @@ let S = class L extends (A = Q) {
67
67
  title: e
68
68
  }), e?.page && (e.title = e.page, delete e.page), !e.title && !e.pageId && !e.revision) {
69
69
  this.logger.warn("None of the title, pageId or revision provided. Using defaults.");
70
- const n = new URLSearchParams(window.location.search), w = this.ctx.currentPage.wikiTitle;
70
+ const r = new URLSearchParams(window.location.search), m = this.ctx.currentPage.wikiTitle;
71
71
  e = {
72
72
  ...e,
73
- title: w?.getPrefixedDBKey(),
74
- revision: n.has("oldid") ? Number(n.get("oldid")) : void 0,
75
- pageId: n.has("curid") ? Number(n.get("curid")) : void 0
73
+ title: m?.getPrefixedDBKey(),
74
+ revision: r.has("oldid") ? Number(r.get("oldid")) : void 0,
75
+ pageId: r.has("curid") ? Number(r.get("curid")) : void 0
76
76
  };
77
77
  }
78
78
  if (!e.revision && !e.pageId && e.title) {
79
- const n = this.ctx.wikiTitle.resolveSpecialPageTarget(e.title);
80
- n && n.title.getNamespaceId() >= 0 && (e.title = n.title.getPrefixedDBKey(), e.section ??= n.section);
79
+ const r = this.ctx.wikiTitle.resolveSpecialPageTarget(e.title);
80
+ r && r.title.getNamespaceId() >= 0 && (e.title = r.title.getPrefixedDBKey(), e.section ??= r.section);
81
81
  }
82
- const l = await this.ctx.preferences.get("quickEdit.outSideClose"), r = await this.ctx.preferences.get("quickEdit.watchList"), d = typeof e.editSummary == "string" ? e.editSummary : await this.ctx.preferences.get("quickEdit.editSummary"), m = typeof e.editMinor == "boolean" ? e.editMinor : await this.ctx.preferences.get("quickEdit.editMinor"), f = await this.getEditFontOptions(), c = {
82
+ const d = await this.ctx.preferences.get("quickEdit.outSideClose"), n = await this.ctx.preferences.get("quickEdit.watchList"), u = typeof e.editSummary == "string" ? e.editSummary : await this.ctx.preferences.get("quickEdit.editSummary"), f = typeof e.editMinor == "boolean" ? e.editMinor : await this.ctx.preferences.get("quickEdit.editMinor"), w = await this.getEditFontOptions(), c = {
83
83
  ...this.DEFAULT_OPTIONS,
84
- editSummary: d,
85
- editMinor: m,
84
+ editSummary: u,
85
+ editMinor: f,
86
86
  ...e
87
87
  };
88
88
  c.editSummary || (c.editSummary = await this.ctx.preferences.get("quickEdit.editSummary") || ""), this.ctx.emit("quick-edit/init-options", { ctx: this.ctx, options: c });
@@ -92,7 +92,7 @@ let S = class L extends (A = Q) {
92
92
  // backdrop: false,
93
93
  // draggable: true,
94
94
  center: !1,
95
- outSideClose: l
95
+ outSideClose: d
96
96
  }).init();
97
97
  o.setTitle(
98
98
  /* @__PURE__ */ i(_, { children: [
@@ -111,7 +111,7 @@ let S = class L extends (A = Q) {
111
111
  justifyContent: "center",
112
112
  alignItems: "center"
113
113
  },
114
- children: /* @__PURE__ */ i(j, {})
114
+ children: /* @__PURE__ */ i(R, {})
115
115
  }
116
116
  )
117
117
  ), o.addButton({
@@ -123,30 +123,30 @@ let S = class L extends (A = Q) {
123
123
  o.close();
124
124
  }
125
125
  }), o.show(), this.ctx.emit("quick-edit/show-modal", { ctx: this.ctx, modal: o, options: c });
126
- let u;
126
+ let a;
127
127
  try {
128
- if (u = await this.getWikiPageFromPayload(c), u.pageInfo.special)
128
+ if (a = await this.getWikiPageFromPayload(c), a.pageInfo.special)
129
129
  throw new Error(t`Special page is not editable.`);
130
- } catch (n) {
130
+ } catch (r) {
131
131
  o.off(o.Event.Close), o.close(), this.ctx.modal.notify("error", {
132
- content: n instanceof Error ? n.message : String(n)
132
+ content: r instanceof Error ? r.message : String(r)
133
133
  });
134
134
  return;
135
135
  }
136
- const v = c.section === "new" ? "" : u.revisions[0]?.content || "", x = u.revisions[0]?.revid, p = x && x !== u.lastrevid, g = c.section === "new", P = u.pageid === 0;
136
+ const v = c.section === "new" ? "" : a.revisions[0]?.content || "", x = a.revisions[0]?.revid, p = x && x !== a.lastrevid, g = c.section === "new", N = a.pageid === 0;
137
137
  o.setTitle(
138
138
  /* @__PURE__ */ i(_, { children: [
139
- g ? t`New Section` : t`Quick ${P ? "Create" : "Edit"}`,
139
+ g ? t`New Section` : t`Quick ${N ? "Create" : "Edit"}`,
140
140
  ": ",
141
- /* @__PURE__ */ i("u", { children: u.pageInfo.title }),
141
+ /* @__PURE__ */ i("u", { children: a.pageInfo.title }),
142
142
  p ? ` (${t`Revision`} ${x})` : ""
143
143
  ] })
144
144
  );
145
145
  const k = [];
146
- P && k.push(
147
- /* @__PURE__ */ i(q, { title: t`Attention`, type: "important", children: /* @__PURE__ */ i("p", { children: t`This page does not exist.` }) })
146
+ N && k.push(
147
+ /* @__PURE__ */ i(T, { title: t`Attention`, type: "important", children: /* @__PURE__ */ i("p", { children: t`This page does not exist.` }) })
148
148
  ), p && k.push(
149
- /* @__PURE__ */ i(q, { title: t`Attention`, type: "warning", children: /* @__PURE__ */ i(
149
+ /* @__PURE__ */ i(T, { title: t`Attention`, type: "warning", children: /* @__PURE__ */ i(
150
150
  "p",
151
151
  {
152
152
  innerHTML: t`You are editing a <em>historical version</em>; the content is not the latest!`
@@ -156,7 +156,7 @@ let S = class L extends (A = Q) {
156
156
  ctx: this.ctx,
157
157
  options: c,
158
158
  modal: o,
159
- wikiPage: u,
159
+ wikiPage: a,
160
160
  editNotices: k
161
161
  });
162
162
  const b = /* @__PURE__ */ i("form", { className: "ipe-quickEdit__form", children: [
@@ -168,7 +168,7 @@ let S = class L extends (A = Q) {
168
168
  style: { display: "flex", flexDirection: "column", gap: "1rem" },
169
169
  children: [
170
170
  c.section === "new" && /* @__PURE__ */ i(_, { children: /* @__PURE__ */ i(
171
- T,
171
+ I,
172
172
  {
173
173
  label: t`Section title`,
174
174
  id: "summary",
@@ -180,8 +180,8 @@ let S = class L extends (A = Q) {
180
180
  /* @__PURE__ */ i(
181
181
  "textarea",
182
182
  {
183
- className: `ipe-quickEdit__textarea ${f.className}`,
184
- style: { fontFamily: f.fontFamily },
183
+ className: `ipe-quickEdit__textarea ${w.className}`,
184
+ style: { fontFamily: w.fontFamily },
185
185
  name: "text",
186
186
  id: "wpTextbox1",
187
187
  children: v
@@ -201,7 +201,7 @@ let S = class L extends (A = Q) {
201
201
  marginTop: "1rem"
202
202
  },
203
203
  children: [
204
- !g && /* @__PURE__ */ i(T, { label: t`Summary`, id: "summary", name: "summary", value: c.editSummary }),
204
+ !g && /* @__PURE__ */ i(I, { label: t`Summary`, id: "summary", name: "summary", value: c.editSummary }),
205
205
  /* @__PURE__ */ i("div", { className: "ipe-input-box", children: [
206
206
  /* @__PURE__ */ i("label", { htmlFor: "watchlist", style: { display: "block" }, children: t`Watchlist` }),
207
207
  /* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
@@ -209,62 +209,78 @@ let S = class L extends (A = Q) {
209
209
  h.nochange,
210
210
  h.watch,
211
211
  h.unwatch
212
- ].map((n) => /* @__PURE__ */ i(
213
- W,
212
+ ].map((r) => /* @__PURE__ */ i(
213
+ Y,
214
214
  {
215
215
  name: "watchlist",
216
- value: n,
217
- inputProps: { checked: r === n },
218
- children: t`watchlist.${n}`
216
+ value: r,
217
+ inputProps: { checked: n === r },
218
+ children: t`watchlist.${r}`
219
219
  },
220
- n
220
+ r
221
221
  )) })
222
222
  ] }),
223
223
  /* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
224
- /* @__PURE__ */ i(I, { name: "minor", id: "minor", checked: c.editMinor, children: t`Minor edit` }),
225
- /* @__PURE__ */ i(I, { name: "reloadAfterSave", id: "reloadAfterSave", checked: c.reloadAfterSave, children: t`Reload after save` })
224
+ /* @__PURE__ */ i(C, { name: "minor", id: "minor", checked: c.editMinor, children: t`Minor edit` }),
225
+ /* @__PURE__ */ i(C, { name: "reloadAfterSave", id: "reloadAfterSave", checked: c.reloadAfterSave, children: t`Reload after save` })
226
226
  ] })
227
227
  ]
228
228
  }
229
229
  ),
230
230
  !1
231
231
  ] });
232
- o.setContent(b), o.addButton(
232
+ o.setContent(b);
233
+ let y = !1;
234
+ o.addButton(
233
235
  {
234
236
  side: "left",
235
237
  className: "is-primary submit-btn",
236
238
  label: t`Submit`,
237
239
  keyPress: await this.ctx.preferences.get("quickEdit.keyshortcut.save") || void 0,
238
- method: () => {
239
- const n = new FormData(b);
240
- o.setLoadingState(!0), this.handleSubmit({
241
- wikiPage: u,
242
- text: n.get("text"),
243
- summary: n.get("summary"),
244
- minor: n.get("minor") === "on",
245
- section: c.section,
246
- createonly: u.pageid === 0,
247
- watchlist: r
248
- }).then(async () => {
249
- o.setOptions({
250
- beforeClose: C
240
+ method: async () => {
241
+ const r = new FormData(b);
242
+ o.setLoadingState(!0);
243
+ try {
244
+ await this.handleSubmit({
245
+ wikiPage: a,
246
+ text: r.get("text"),
247
+ summary: r.get("summary"),
248
+ minor: r.get("minor") === "on",
249
+ section: c.section,
250
+ watchlist: n,
251
+ // 如果无视风险,那么就不再尝试解决冲突,直接重建页面
252
+ createonly: a.pageid === 0 && !y,
253
+ recreate: a.pageid === 0 && y
254
+ }), o.setOptions({
255
+ beforeClose: F
251
256
  }), o.close(), this.ctx.modal.notify("success", {
252
257
  title: t`Submission Successful`,
253
258
  content: t`Your changes have been saved.`
254
- }), n.get("reloadAfterSave") && (await z(500), location.reload());
255
- }).catch((w) => {
259
+ }), r.get("reloadAfterSave") && (await K(500), location.reload());
260
+ } catch (m) {
261
+ if (o.setLoadingState(!1), U.is(m) && (m.code === "pagedeleted" || m.code === "editconflict" || m.code === "articleexists")) {
262
+ y = !0, this.ctx.modal.notify("warning", {
263
+ title: t`Submission Error`,
264
+ content: /* @__PURE__ */ i("div", { children: [
265
+ /* @__PURE__ */ i("p", { children: /* @__PURE__ */ i("strong", { children: m.message }) }),
266
+ /* @__PURE__ */ i("p", { children: t`You can try to submit again to dismiss the warnings.` })
267
+ ] }),
268
+ closeAfter: 15 * 1e3
269
+ });
270
+ return;
271
+ }
256
272
  this.ctx.modal.notify("error", {
257
273
  title: t`Submission Error`,
258
- content: w instanceof Error ? w.message : String(w)
259
- }), o.setLoadingState(!1);
260
- });
274
+ content: m instanceof Error ? m.message : String(m)
275
+ });
276
+ }
261
277
  }
262
278
  },
263
279
  0
264
280
  ), o.setOptions({
265
281
  beforeClose: () => {
266
- const n = u.revisions[0]?.content || "";
267
- return (b.querySelector("textarea")?.value || "") === n ? !0 : (this.ctx.modal.confirm(
282
+ const r = a.revisions[0]?.content || "";
283
+ return (b.querySelector("textarea")?.value || "") === r ? !0 : (this.ctx.modal.confirm(
268
284
  {
269
285
  className: "is-primary",
270
286
  title: t`Unsaved Changes`,
@@ -279,8 +295,8 @@ let S = class L extends (A = Q) {
279
295
  className: "is-primary is-ghost"
280
296
  }
281
297
  },
282
- (D) => (D && (o.setOptions({
283
- beforeClose: C
298
+ (j) => (j && (o.setOptions({
299
+ beforeClose: F
284
300
  }), o.close()), !0)
285
301
  ), !1);
286
302
  }
@@ -288,42 +304,29 @@ let S = class L extends (A = Q) {
288
304
  ctx: this.ctx,
289
305
  options: c,
290
306
  modal: o,
291
- wikiPage: u
307
+ wikiPage: a
292
308
  });
293
- const N = (n) => b.querySelector("textarea")?.value === v ? !0 : (n.preventDefault(), t`You have unsaved changes. Are you sure you want to leave?`);
294
- window.addEventListener("beforeunload", N), o.on(o.Event.Close, () => {
295
- window.removeEventListener("beforeunload", N);
309
+ const q = (r) => b.querySelector("textarea")?.value === v ? !0 : (r.preventDefault(), t`You have unsaved changes. Are you sure you want to leave?`);
310
+ window.addEventListener("beforeunload", q), o.on(o.Event.Close, () => {
311
+ window.removeEventListener("beforeunload", q);
296
312
  });
297
313
  }
298
314
  async handleSubmit(e) {
299
- const t = e.wikiPage, l = e.summary || "", r = e.text || "", d = e.minor, m = e.createonly, f = e.watchlist, c = e.section;
315
+ const { wikiPage: t, ...d } = e;
300
316
  return this.ctx.emit("quick-edit/submit", {
301
317
  ctx: this.ctx,
302
318
  wikiPage: t,
303
- summary: l,
304
- text: r,
305
- minor: d,
306
- createonly: m,
307
- watchlist: f
308
- }), t.edit(
309
- {
310
- summary: l,
311
- text: r,
312
- watchlist: f,
313
- section: c
314
- },
315
- {
316
- minor: d,
317
- createonly: m
318
- }
319
- );
319
+ ...d
320
+ }), t.edit({
321
+ ...d
322
+ });
320
323
  }
321
324
  static {
322
325
  this.BUILT_IN_FONT_OPTIONS = ["preferences", "monospace", "sans-serif", "serif"];
323
326
  }
324
327
  async getEditFontOptions() {
325
328
  const e = await this.ctx.preferences.get("quickEdit.editFont");
326
- return L.BUILT_IN_FONT_OPTIONS.includes(e) ? {
329
+ return D.BUILT_IN_FONT_OPTIONS.includes(e) ? {
327
330
  className: `mw-editfont-${e === "preferences" ? this.ctx.wiki.userOptions?.editfont || "monospace" : e}`,
328
331
  fontFamily: ""
329
332
  } : {
@@ -341,7 +344,7 @@ let S = class L extends (A = Q) {
341
344
  throw new Error("Invalid payload");
342
345
  }
343
346
  async injectToolbox(e) {
344
- const t = this.ctx.$, l = this.ctx.currentPage.wikiTitle, r = l && l.getNamespaceId() >= 0;
347
+ const t = this.ctx.$, d = this.ctx.currentPage.wikiTitle, n = d && d.getNamespaceId() >= 0;
345
348
  e.toolbox.addButton({
346
349
  id: "quick-edit",
347
350
  group: "group1",
@@ -368,14 +371,14 @@ let S = class L extends (A = Q) {
368
371
  }
369
372
  ),
370
373
  buttonProps: {
371
- disabled: !r
374
+ disabled: !n
372
375
  },
373
- tooltip: () => r ? t`Quick Edit` : t`Not editable`,
376
+ tooltip: () => n ? t`Quick Edit` : t`Not editable`,
374
377
  onClick: () => {
375
- const d = new URLSearchParams(window.location.search).get("oldid");
378
+ const u = new URLSearchParams(window.location.search).get("oldid");
376
379
  this.showModal({
377
- title: l?.getPrefixedText(),
378
- revision: d ? Number(d) : void 0
380
+ title: d?.getPrefixedText(),
381
+ revision: u ? Number(u) : void 0
379
382
  });
380
383
  }
381
384
  });
@@ -384,11 +387,11 @@ let S = class L extends (A = Q) {
384
387
  e.toolbox.removeButton("quick-edit");
385
388
  }
386
389
  };
387
- y = X(A);
388
- S = te(y, 0, "PluginQuickEdit", B, S);
389
- ee(y, 1, S);
390
- let ue = S;
390
+ P = V(L);
391
+ S = se(P, 0, "PluginQuickEdit", A, S);
392
+ ie(P, 1, S);
393
+ let he = S;
391
394
  export {
392
- ue as PluginQuickEdit
395
+ he as PluginQuickEdit
393
396
  };
394
- //# sourceMappingURL=index-DmLoihN1.js.map
397
+ //# sourceMappingURL=index-WfXtYVMt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-WfXtYVMt.js","sources":["../src/utils/sleep.ts","../src/plugins/quick-edit/index.tsx"],"sourcesContent":["export const sleep = (ms: number = 0) =>\n new Promise((resolve) => setTimeout(resolve, ms))\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IWikiPage } from '@/models/WikiPage'\nimport { WatchlistAction } from '@/models/WikiPage/types/WatchlistAction'\nimport { IPEModal } from '@inpageedit/modal'\nimport { ReactNode } from 'jsx-dom'\nimport { makeCallable } from '@/utils/makeCallable.js'\nimport { MediaWikiApiError } from 'wiki-saikou'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickEdit: PluginQuickEdit & {\n (...args: Parameters<PluginQuickEdit['showModal']>): ReturnType<PluginQuickEdit['showModal']>\n }\n }\n interface Events {\n 'quick-edit/init-options'(payload: Omit<QuickEditEventPayload, 'modal' | 'wikiPage'>): void\n 'quick-edit/show-modal'(payload: Omit<QuickEditEventPayload, 'wikiPage'>): void\n 'quick-edit/wiki-page'(payload: QuickEditEventPayload): void\n 'quick-edit/edit-notice'(payload: QuickEditEventPayload & { editNotices: ReactNode[] }): void\n 'quick-edit/submit'(payload: QuickEditSubmitPayload & { ctx: InPageEdit }): void\n }\n interface PreferencesMap {\n 'quickEdit.editSummary': string\n 'quickEdit.editMinor': boolean\n 'quickEdit.outSideClose': boolean\n 'quickEdit.watchList': WatchlistAction\n 'quickEdit.keyshortcut.save': string\n 'quickEdit.editFont': string\n }\n}\n\nexport interface QuickEditOptions {\n title: string\n pageId: number\n revision: number\n /**\n * - `undefined` for full article edit\n * - `0` for the first section\n * - `\"new\"` for a new section\n */\n section: number | 'new' | undefined\n editMinor: boolean\n editSummary: string\n createOnly: boolean\n reloadAfterSave: boolean\n}\n\nexport interface QuickEditEventPayload {\n ctx: InPageEdit\n options: QuickEditOptions\n modal: IPEModal\n wikiPage: IWikiPage\n}\n\nexport interface QuickEditSubmitPayload {\n wikiPage: IWikiPage\n text?: string\n summary?: string\n section?: number | 'new' | undefined\n minor?: boolean\n createonly?: boolean\n recreate?: boolean\n watchlist?: WatchlistAction\n}\n\n@Inject(['api', 'wikiPage', 'wikiTitle', 'currentPage', 'wiki', 'modal', 'preferences', '$'])\n@RegisterPreferences(\n Schema.object({\n 'quickEdit.editSummary': Schema.string()\n .description('Default edit summary for quick edits')\n .default('[IPE-NEXT] Quick edit'),\n 'quickEdit.editMinor': Schema.boolean()\n .description('Default to checking \"minor edit\" option')\n .default(false),\n 'quickEdit.outSideClose': Schema.boolean()\n .description('Close editor modal by clicking outside')\n .default(true),\n 'quickEdit.watchList': Schema.union([\n Schema.const(WatchlistAction.preferences).description('Follow MW preferences'),\n Schema.const(WatchlistAction.nochange).description('Keep the current watchlist status'),\n Schema.const(WatchlistAction.watch).description('Add the page to watchlist'),\n Schema.const(WatchlistAction.unwatch).description('Remove the page from watchlist'),\n ])\n .description('Watchlist options')\n .default(WatchlistAction.preferences),\n 'quickEdit.keyshortcut.save': Schema.string()\n .default('ctrl-s')\n .description('save button key shortcut (blank to disable)'),\n 'quickEdit.editFont': Schema.union([\n Schema.const('preferences').description('Follow MW preferences'),\n Schema.const('monospace').description('Monospace'),\n Schema.const('sans-serif').description('Sans-serif'),\n Schema.const('serif').description('Serif'),\n Schema.string().description('Custom font (same as CSS `font-family` property)').default(''),\n ])\n .description(\"Font to use in quick edit's textarea\")\n .default('preferences'),\n })\n .description('Quick edit options')\n .extra('category', 'editor')\n)\nexport class PluginQuickEdit extends BasePlugin {\n private readonly DEFAULT_OPTIONS: QuickEditOptions = {\n title: '',\n pageId: 0,\n revision: 0,\n section: undefined,\n editMinor: false,\n editSummary: '',\n createOnly: false,\n reloadAfterSave: true,\n }\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-edit')\n this.ctx.root.set('quickEdit', makeCallable(this, 'showModal'))\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n ctx.on('dispose', () => {\n this.removeToolbox(ctx)\n })\n })\n }\n\n async showModal(payload?: string | Partial<QuickEditOptions>) {\n const $ = this.ctx.$\n if (typeof payload === 'undefined') {\n payload = {}\n } else if (typeof payload === 'string') {\n payload = {\n title: payload,\n } as Partial<QuickEditOptions>\n }\n\n // @ts-expect-error legacy `page` option\n if (payload?.page) {\n // @ts-expect-error\n payload.title = payload.page\n // @ts-expect-error\n delete payload.page\n }\n\n if (!payload.title && !payload.pageId && !payload.revision) {\n this.logger.warn('None of the title, pageId or revision provided. Using defaults.')\n const searchParams = new URLSearchParams(window.location.search)\n const title = this.ctx.currentPage.wikiTitle\n payload = {\n ...payload,\n title: title?.getPrefixedDBKey(),\n revision: searchParams.has('oldid') ? Number(searchParams.get('oldid')) : undefined,\n pageId: searchParams.has('curid') ? Number(searchParams.get('curid')) : undefined,\n }\n }\n\n if (!payload.revision && !payload.pageId && payload.title) {\n const realTarget = this.ctx.wikiTitle.resolveSpecialPageTarget(payload.title)\n if (realTarget && realTarget.title.getNamespaceId() >= 0) {\n payload.title = realTarget.title.getPrefixedDBKey()\n payload.section ??= realTarget.section\n }\n }\n\n const outSideClose = (await this.ctx.preferences.get('quickEdit.outSideClose'))!\n const watchList = (await this.ctx.preferences.get('quickEdit.watchList'))!\n const editSummary =\n typeof payload.editSummary === 'string'\n ? payload.editSummary\n : (await this.ctx.preferences.get('quickEdit.editSummary'))!\n const editMinor =\n typeof payload.editMinor === 'boolean'\n ? payload.editMinor\n : (await this.ctx.preferences.get('quickEdit.editMinor'))!\n const fontOptions = await this.getEditFontOptions()\n\n const options: QuickEditOptions = {\n ...this.DEFAULT_OPTIONS,\n editSummary,\n editMinor,\n ...payload,\n }\n if (!options.editSummary) {\n options.editSummary = (await this.ctx.preferences.get('quickEdit.editSummary')) || ''\n }\n this.ctx.emit('quick-edit/init-options', { ctx: this.ctx, options })\n\n const modal = this.ctx.modal\n .createObject({\n className: 'ipe-quickEdit',\n sizeClass: 'large',\n // backdrop: false,\n // draggable: true,\n center: false,\n outSideClose,\n })\n .init()\n modal.setTitle(\n (\n <>\n Loading: <u>{options.title}</u>\n </>\n ) as HTMLElement\n )\n modal.setContent(\n (\n <section\n className=\"ipe-quickEdit-loading\"\n style={{\n height: '70vh',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <ProgressBar />\n </section>\n ) as HTMLElement\n )\n modal.addButton({\n side: 'right',\n type: 'button',\n className: 'is-danger is-ghost',\n label: $`Cancel`,\n method() {\n modal.close()\n },\n })\n modal.show()\n this.ctx.emit('quick-edit/show-modal', { ctx: this.ctx, modal, options })\n\n let wikiPage: IWikiPage\n try {\n wikiPage = await this.getWikiPageFromPayload(options)\n if (wikiPage.pageInfo.special) {\n throw new Error($`Special page is not editable.`)\n }\n } catch (e) {\n modal.off(modal.Event.Close)\n modal.close()\n this.ctx.modal.notify('error', {\n content: e instanceof Error ? e.message : String(e),\n })\n return\n }\n\n const edittingContent = options.section === 'new' ? '' : wikiPage.revisions[0]?.content || ''\n const edittingRevId = wikiPage.revisions[0]?.revid\n const isEdittingOld = edittingRevId && edittingRevId !== wikiPage.lastrevid\n const isCreatingNewSection = options.section === 'new'\n const isCreatingNewPage = wikiPage.pageid === 0\n\n modal.setTitle(\n (\n <>\n {isCreatingNewSection\n ? $`New Section`\n : $`Quick ${isCreatingNewPage ? 'Create' : 'Edit'}`}\n : <u>{wikiPage.pageInfo.title}</u>\n {isEdittingOld ? ` (${$`Revision`} ${edittingRevId})` : ''}\n </>\n ) as HTMLElement\n )\n\n const editNotices = [] as ReactNode[]\n // Page not exists\n if (isCreatingNewPage) {\n editNotices.push(\n <MBox title={$`Attention`} type=\"important\">\n <p>{$`This page does not exist.`}</p>\n </MBox>\n )\n }\n // Edit based on old revision\n if (isEdittingOld) {\n editNotices.push(\n <MBox title={$`Attention`} type=\"warning\">\n <p\n innerHTML={$`You are editing a <em>historical version</em>; the content is not the latest!`}\n ></p>\n </MBox>\n )\n }\n this.ctx.emit('quick-edit/edit-notice', {\n ctx: this.ctx,\n options,\n modal,\n wikiPage,\n editNotices,\n })\n\n const editForm = (\n <form className=\"ipe-quickEdit__form\">\n <div className=\"ipe-quickEdit__notices\">{editNotices}</div>\n <div\n className=\"ipe-quickEdit__content\"\n style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}\n >\n {options.section === 'new' && (\n <>\n <InputBox\n label={$`Section title`}\n id=\"summary\"\n name=\"summary\"\n value={''}\n inputProps={{ placeholder: $`Topic for new section, this will be the h2 heading` }}\n />\n </>\n )}\n <textarea\n className={`ipe-quickEdit__textarea ${fontOptions.className}`}\n style={{ fontFamily: fontOptions.fontFamily }}\n name=\"text\"\n id=\"wpTextbox1\"\n >\n {edittingContent}\n </textarea>\n </div>\n <div\n class=\"ipe-quickEdit__options\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n marginTop: '1rem',\n }}\n >\n {!isCreatingNewSection && (\n <InputBox label={$`Summary`} id=\"summary\" name=\"summary\" value={options.editSummary} />\n )}\n <div className=\"ipe-input-box\">\n <label htmlFor=\"watchlist\" style={{ display: 'block' }}>\n {$`Watchlist`}\n </label>\n <div style={{ display: 'flex', gap: '1rem' }}>\n {[\n WatchlistAction.preferences,\n WatchlistAction.nochange,\n WatchlistAction.watch,\n WatchlistAction.unwatch,\n ].map((action) => (\n <RadioBox\n key={action}\n name=\"watchlist\"\n value={action}\n inputProps={{ checked: watchList === action }}\n >\n {$`watchlist.${action}`}\n </RadioBox>\n ))}\n </div>\n </div>\n <div style={{ display: 'flex', gap: '1rem' }}>\n <CheckBox name=\"minor\" id=\"minor\" checked={options.editMinor}>\n {$`Minor edit`}\n </CheckBox>\n <CheckBox name=\"reloadAfterSave\" id=\"reloadAfterSave\" checked={options.reloadAfterSave}>\n {$`Reload after save`}\n </CheckBox>\n </div>\n </div>\n {/* Debug Info */}\n {import.meta.env.DEV && (\n <div className=\"debug\" style={{ marginTop: '1rem' }}>\n <details>\n <pre>{JSON.stringify(wikiPage.pageInfo, null, 2)}</pre>\n </details>\n </div>\n )}\n </form>\n ) as HTMLFormElement\n modal.setContent(editForm)\n\n let dismissWarnings = false\n modal.addButton(\n {\n side: 'left',\n className: 'is-primary submit-btn',\n label: $`Submit`,\n keyPress: (await this.ctx.preferences.get('quickEdit.keyshortcut.save')) || undefined,\n method: async () => {\n const formData = new FormData(editForm)\n console.info(wikiPage, editForm, {\n text: formData.get('text') as string,\n summary: formData.get('summary') as string,\n minor: formData.get('minor') === 'on',\n })\n modal.setLoadingState(true)\n\n try {\n await this.handleSubmit({\n wikiPage,\n text: formData.get('text') as string,\n summary: formData.get('summary') as string,\n minor: formData.get('minor') === 'on',\n section: options.section,\n watchlist: watchList,\n // 如果无视风险,那么就不再尝试解决冲突,直接重建页面\n createonly: wikiPage.pageid === 0 && !dismissWarnings,\n recreate: wikiPage.pageid === 0 && dismissWarnings,\n })\n\n modal.setOptions({\n beforeClose: noop,\n })\n modal.close()\n\n this.ctx.modal.notify('success', {\n title: $`Submission Successful`,\n content: $`Your changes have been saved.`,\n })\n\n if (formData.get('reloadAfterSave')) {\n await sleep(500)\n location.reload()\n }\n } catch (error) {\n modal.setLoadingState(false)\n\n if (MediaWikiApiError.is(error)) {\n if (\n error.code === 'pagedeleted' ||\n error.code === 'editconflict' ||\n error.code === 'articleexists'\n ) {\n dismissWarnings = true\n this.ctx.modal.notify('warning', {\n title: $`Submission Error`,\n content: (\n <div>\n <p>\n <strong>{error.message}</strong>\n </p>\n <p>{$`You can try to submit again to dismiss the warnings.`}</p>\n </div>\n ),\n closeAfter: 15 * 1000,\n })\n return // can be dismissed by re-submission\n }\n }\n\n // Errors not handled above\n this.ctx.modal.notify('error', {\n title: $`Submission Error`,\n content: error instanceof Error ? error.message : String(error),\n })\n }\n },\n },\n 0\n )\n modal.setOptions({\n beforeClose: () => {\n const oldStr = wikiPage.revisions[0]?.content || ''\n const newStr = editForm.querySelector('textarea')?.value || ''\n if (newStr === oldStr) {\n return true\n } else {\n this.ctx.modal.confirm(\n {\n className: 'is-primary',\n title: $`Unsaved Changes`,\n content: $`All edit contents will be lost after closing the modal. Are you sure you want to close?`,\n center: true,\n okBtn: {\n label: $`Give Up`,\n className: 'is-danger is-ghost',\n },\n cancelBtn: {\n label: $`Continue Editing`,\n className: 'is-primary is-ghost',\n },\n },\n (confirmed) => {\n if (confirmed) {\n modal.setOptions({\n beforeClose: noop,\n })\n modal.close()\n }\n return true\n }\n )\n return false\n }\n },\n })\n this.ctx.emit('quick-edit/wiki-page', {\n ctx: this.ctx,\n options,\n modal,\n wikiPage,\n })\n\n const beforeUnload = (e: BeforeUnloadEvent) => {\n if (editForm.querySelector('textarea')?.value === edittingContent) {\n return true\n }\n e.preventDefault()\n return $`You have unsaved changes. Are you sure you want to leave?`\n }\n window.addEventListener('beforeunload', beforeUnload)\n modal.on(modal.Event.Close, () => {\n window.removeEventListener('beforeunload', beforeUnload)\n })\n }\n\n async handleSubmit(payload: QuickEditSubmitPayload) {\n const { wikiPage, ...rest } = payload\n\n this.ctx.emit('quick-edit/submit', {\n ctx: this.ctx,\n wikiPage,\n ...rest,\n })\n\n return wikiPage.edit({\n ...rest,\n })\n }\n\n static readonly BUILT_IN_FONT_OPTIONS = ['preferences', 'monospace', 'sans-serif', 'serif']\n async getEditFontOptions() {\n const prefEditFont = (await this.ctx.preferences.get('quickEdit.editFont'))!\n if (PluginQuickEdit.BUILT_IN_FONT_OPTIONS.includes(prefEditFont)) {\n const editfont =\n prefEditFont === 'preferences'\n ? this.ctx.wiki.userOptions?.editfont || 'monospace'\n : prefEditFont\n return {\n className: `mw-editfont-${editfont}`,\n fontFamily: '',\n }\n } else {\n return {\n className: 'mw-editfont-custom',\n fontFamily: prefEditFont,\n }\n }\n }\n\n async getWikiPageFromPayload(payload: Partial<QuickEditOptions>) {\n if (payload.revision) {\n return this.ctx.wikiPage.newFromRevision(payload.revision, payload.section)\n } else if (payload.pageId) {\n return this.ctx.wikiPage.newFromPageId(payload.pageId, payload.section)\n } else if (payload.title) {\n return this.ctx.wikiPage.newFromTitle(payload.title, false, payload.section)\n }\n throw new Error('Invalid payload')\n }\n\n private async injectToolbox(ctx: InPageEdit) {\n const $ = this.ctx.$\n const title = this.ctx.currentPage.wikiTitle\n const canEdit = title && title.getNamespaceId() >= 0\n ctx.toolbox.addButton({\n id: 'quick-edit',\n group: 'group1',\n index: 0,\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-edit\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\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\" />\n <path d=\"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z\" />\n <path d=\"M16 5l3 3\" />\n </svg>\n ) as HTMLElement,\n buttonProps: {\n disabled: !canEdit,\n },\n tooltip: () => (canEdit ? $`Quick Edit` : $`Not editable`),\n onClick: () => {\n const revision = new URLSearchParams(window.location.search).get('oldid')\n this.showModal({\n title: title?.getPrefixedText(),\n revision: revision ? Number(revision) : undefined,\n })\n },\n })\n }\n\n protected removeToolbox(ctx: InPageEdit) {\n ctx.toolbox.removeButton('quick-edit')\n }\n}\n"],"names":["sleep","ms","resolve","_PluginQuickEdit_decorators","_init","_a","Inject","RegisterPreferences","Schema","WatchlistAction","_PluginQuickEdit","BasePlugin","ctx","makeCallable","payload","$","searchParams","title","realTarget","outSideClose","watchList","editSummary","editMinor","fontOptions","options","modal","jsxs","Fragment","jsx","ProgressBar","wikiPage","e","edittingContent","edittingRevId","isEdittingOld","isCreatingNewSection","isCreatingNewPage","editNotices","MBox","editForm","InputBox","action","RadioBox","CheckBox","dismissWarnings","formData","noop","error","MediaWikiApiError","oldStr","confirmed","beforeUnload","rest","prefEditFont","canEdit","revision","__decoratorStart","__decorateElement","__runInitializers","PluginQuickEdit"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -469,7 +469,7 @@ declare class WikiMetadataService extends Service {
469
469
  private getCacheKey;
470
470
  fetchFromApi<T extends keyof WikiMetadataKindMap>(kind: T): Promise<WikiMetadataKindMap[T]>;
471
471
  fetchFromCache<T extends keyof WikiMetadataKindMap>(kind: T): Promise<WikiMetadataKindMap[T] | null>;
472
- saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]): Promise<TypedStorageEntry<WikiSiteInfo | WikiUserInfo>>;
472
+ saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]): Promise<TypedStorageEntry<WikiUserInfo | WikiSiteInfo>>;
473
473
  invalidateCache<T extends keyof WikiMetadataKindMap>(kind: T): Promise<void>;
474
474
  private onClearCache;
475
475
  get _raw(): WikiMetadataKindMap;
@@ -639,6 +639,10 @@ interface WikiPageEditPayload {
639
639
  summary?: string;
640
640
  watchlist?: WatchlistAction;
641
641
  section?: number | 'new' | undefined;
642
+ createonly?: boolean;
643
+ recreate?: boolean;
644
+ starttimestamp?: string;
645
+ baserevid?: number;
642
646
  }
643
647
  interface IWikiPage {
644
648
  pageInfo: PageInfo;
@@ -648,12 +652,14 @@ interface IWikiPage {
648
652
  preview(text: string, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
649
653
  parse: PageParseData;
650
654
  }>>>;
651
- edit(payload: WikiPageEditPayload, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
655
+ edit(payload: WikiPageEditPayload & MwApiParams$1, /** @deprecated Append params in `payload` instead */
656
+ params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
652
657
  success: boolean;
653
658
  }>>>;
654
- createOnly(payload: {
659
+ createOnly(payload: Pick<WikiPageEditPayload, 'summary' | 'watchlist'> & {
655
660
  text: string;
656
- } & Pick<WikiPageEditPayload, 'summary' | 'watchlist'>, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
661
+ recreate?: boolean;
662
+ }, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
657
663
  success: boolean;
658
664
  }>>>;
659
665
  delete(reason?: string, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
@@ -1531,7 +1537,7 @@ interface PluginStoreRegistryMaintainer {
1531
1537
  email?: string;
1532
1538
  }
1533
1539
  interface PluginStoreRegistryRepository {
1534
- type: 'git';
1540
+ type: string;
1535
1541
  url: string;
1536
1542
  }
1537
1543
  interface PluginStorePackage {
@@ -1572,6 +1578,31 @@ declare module '.' {
1572
1578
  }[];
1573
1579
  'pluginStore.cdnForNpm': string;
1574
1580
  }
1581
+ interface Events {
1582
+ 'plugin-store/registry-fetched'(payload: {
1583
+ ctx: InPageEdit;
1584
+ registry: PluginStoreRegistry;
1585
+ }): void;
1586
+ 'plugin-store/registry-not-found'(payload: {
1587
+ ctx: InPageEdit;
1588
+ registryUrl: string;
1589
+ }): void;
1590
+ 'plugin-store/registry-removed'(payload: {
1591
+ ctx: InPageEdit;
1592
+ registryUrl: string;
1593
+ }): void;
1594
+ 'plugin-store/plugin-installed'(payload: {
1595
+ ctx: InPageEdit;
1596
+ registry: PluginStoreRegistry;
1597
+ id: string;
1598
+ by: 'new-added' | 'user-preference';
1599
+ }): void;
1600
+ 'plugin-store/plugin-uninstalled'(payload: {
1601
+ ctx: InPageEdit;
1602
+ registry: PluginStoreRegistry;
1603
+ id: string;
1604
+ }): void;
1605
+ }
1575
1606
  }
1576
1607
  type PluginStoreRegistrySource = 'online_manifest' | 'npm';
1577
1608
  declare class PluginPluginStore extends BasePlugin {
@@ -1588,7 +1619,7 @@ declare class PluginPluginStore extends BasePlugin {
1588
1619
  private _injectPreferenceUI;
1589
1620
  showModal(): Promise<CustomIPEModal>;
1590
1621
  private _installedPlugins;
1591
- install(registry: string, id: string, source?: PluginStoreRegistrySource): Promise<ForkScope$1<InPageEdit> | null>;
1622
+ install(registry: string, id: string, source?: PluginStoreRegistrySource, _by?: 'new-added' | 'user-preference'): Promise<ForkScope$1<InPageEdit> | null>;
1592
1623
  uninstall(registry: string, id: string): Promise<boolean>;
1593
1624
  addToPreferences(registry: string, id: string): Promise<boolean>;
1594
1625
  removeFromPreferences(registry: string, id: string): Promise<boolean>;
@@ -1809,6 +1840,7 @@ interface QuickEditSubmitPayload {
1809
1840
  section?: number | 'new' | undefined;
1810
1841
  minor?: boolean;
1811
1842
  createonly?: boolean;
1843
+ recreate?: boolean;
1812
1844
  watchlist?: WatchlistAction;
1813
1845
  }
1814
1846
  declare class PluginQuickEdit extends BasePlugin {
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { I as s } from "./index-BgkZW91u.js";
2
- import { m as l, $ as g, S as m } from "./index-BgkZW91u.js";
3
- import { E as r } from "./Preferences-BF2fcXrn.js";
4
- import { C as S, s as I, a as P, F as y, I as U, e as M, M as h, R, S as O, b as D, c as b } from "./Preferences-BF2fcXrn.js";
5
- import { B as A } from "./BasePlugin-YOi2_vUo.js";
1
+ import { I as s } from "./index-MgXERLzL.js";
2
+ import { m as l, $ as g, S as m } from "./index-MgXERLzL.js";
3
+ import { E as r } from "./Preferences-C10tZMl1.js";
4
+ import { C as S, s as I, a as P, F as y, I as U, e as M, M as h, R, S as O, b as D, c as b } from "./Preferences-C10tZMl1.js";
5
+ import { B as A } from "./BasePlugin-DD7l-5Xw.js";
6
6
  window.RLQ ||= [];
7
7
  window.__IPE_MODULES__ ||= [];
8
8
  w("InPageEdit#autoload", () => {