@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.
- package/README.md +5 -4
- package/dist/{BasePlugin-YOi2_vUo.js → BasePlugin-DD7l-5Xw.js} +2 -2
- package/dist/{BasePlugin-YOi2_vUo.js.map → BasePlugin-DD7l-5Xw.js.map} +1 -1
- package/dist/{PluginPrefSync-jTNlRQE-.js → PluginPrefSync-CbFuuC19.js} +3 -3
- package/dist/{PluginPrefSync-jTNlRQE-.js.map → PluginPrefSync-CbFuuC19.js.map} +1 -1
- package/dist/{PluginStoreApp-CGNxKXAN.js → PluginStoreApp-qiSVtnBy.js} +2 -2
- package/dist/{PluginStoreApp-CGNxKXAN.js.map → PluginStoreApp-qiSVtnBy.js.map} +1 -1
- package/dist/Preferences-C10tZMl1.js +2701 -0
- package/dist/Preferences-C10tZMl1.js.map +1 -0
- package/dist/{index-3NZkG2a3.js → index-BXNyXvre.js} +3 -3
- package/dist/{index-3NZkG2a3.js.map → index-BXNyXvre.js.map} +1 -1
- package/dist/{index-Bb0FiU2c.js → index-BanevHQ2.js} +21 -17
- package/dist/index-BanevHQ2.js.map +1 -0
- package/dist/index-BjDTD66_.js +491 -0
- package/dist/index-BjDTD66_.js.map +1 -0
- package/dist/{index-D97lUU3h.js → index-BpQ6VGMz.js} +55 -55
- package/dist/index-BpQ6VGMz.js.map +1 -0
- package/dist/{index-D-fW3ESK.js → index-CnR6CqkM.js} +2 -2
- package/dist/{index-D-fW3ESK.js.map → index-CnR6CqkM.js.map} +1 -1
- package/dist/{index-DELHsLHS.js → index-DKCZDN-Q.js} +4 -4
- package/dist/{index-DELHsLHS.js.map → index-DKCZDN-Q.js.map} +1 -1
- package/dist/{index-BBNseJXG.js → index-DVOc6fB6.js} +3 -3
- package/dist/{index-BBNseJXG.js.map → index-DVOc6fB6.js.map} +1 -1
- package/dist/{index-D6zFqL2u.js → index-De25v1_Q.js} +3 -3
- package/dist/{index-D6zFqL2u.js.map → index-De25v1_Q.js.map} +1 -1
- package/dist/{index-BrYKe18j.js → index-DensW9qt.js} +3 -3
- package/dist/{index-BrYKe18j.js.map → index-DensW9qt.js.map} +1 -1
- package/dist/{index-DTHY5rAO.js → index-DrIf5j8O.js} +156 -127
- package/dist/index-DrIf5j8O.js.map +1 -0
- package/dist/index-MgXERLzL.js +3090 -0
- package/dist/index-MgXERLzL.js.map +1 -0
- package/dist/{index-DmLoihN1.js → index-WfXtYVMt.js} +134 -131
- package/dist/index-WfXtYVMt.js.map +1 -0
- package/dist/index.d.ts +38 -6
- package/dist/index.js +5 -5
- package/dist/models/index.js +7 -503
- package/dist/models/index.js.map +1 -1
- package/dist/plugins/index.js +10 -10
- package/dist/services/index.js +1 -1
- package/lib/index.umd.js +11 -11
- package/lib/index.umd.js.map +1 -1
- package/package.json +5 -5
- package/dist/Preferences-BF2fcXrn.js +0 -1539
- package/dist/Preferences-BF2fcXrn.js.map +0 -1
- package/dist/index-Bb0FiU2c.js.map +0 -1
- package/dist/index-BgkZW91u.js +0 -4245
- package/dist/index-BgkZW91u.js.map +0 -1
- package/dist/index-D97lUU3h.js.map +0 -1
- package/dist/index-DTHY5rAO.js.map +0 -1
- package/dist/index-DmLoihN1.js.map +0 -1
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { j as i, F as _, P as
|
|
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
|
|
4
|
-
import { I as
|
|
5
|
-
import { B as
|
|
6
|
-
import { M as
|
|
7
|
-
import { I
|
|
8
|
-
import { R as
|
|
9
|
-
import { n as
|
|
10
|
-
const
|
|
11
|
-
var
|
|
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
|
-
},
|
|
14
|
-
for (var
|
|
15
|
-
return
|
|
16
|
-
},
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
for (var g =
|
|
20
|
-
c =
|
|
21
|
-
return
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"quickEdit.editSummary":
|
|
26
|
-
"quickEdit.editMinor":
|
|
27
|
-
"quickEdit.outSideClose":
|
|
28
|
-
"quickEdit.watchList":
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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":
|
|
35
|
-
"quickEdit.editFont":
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
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",
|
|
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
|
|
70
|
+
const r = new URLSearchParams(window.location.search), m = this.ctx.currentPage.wikiTitle;
|
|
71
71
|
e = {
|
|
72
72
|
...e,
|
|
73
|
-
title:
|
|
74
|
-
revision:
|
|
75
|
-
pageId:
|
|
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
|
|
80
|
-
|
|
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
|
|
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:
|
|
85
|
-
editMinor:
|
|
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:
|
|
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(
|
|
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
|
|
126
|
+
let a;
|
|
127
127
|
try {
|
|
128
|
-
if (
|
|
128
|
+
if (a = await this.getWikiPageFromPayload(c), a.pageInfo.special)
|
|
129
129
|
throw new Error(t`Special page is not editable.`);
|
|
130
|
-
} catch (
|
|
130
|
+
} catch (r) {
|
|
131
131
|
o.off(o.Event.Close), o.close(), this.ctx.modal.notify("error", {
|
|
132
|
-
content:
|
|
132
|
+
content: r instanceof Error ? r.message : String(r)
|
|
133
133
|
});
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
|
-
const v = c.section === "new" ? "" :
|
|
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 ${
|
|
139
|
+
g ? t`New Section` : t`Quick ${N ? "Create" : "Edit"}`,
|
|
140
140
|
": ",
|
|
141
|
-
/* @__PURE__ */ i("u", { children:
|
|
141
|
+
/* @__PURE__ */ i("u", { children: a.pageInfo.title }),
|
|
142
142
|
p ? ` (${t`Revision`} ${x})` : ""
|
|
143
143
|
] })
|
|
144
144
|
);
|
|
145
145
|
const k = [];
|
|
146
|
-
|
|
147
|
-
/* @__PURE__ */ i(
|
|
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(
|
|
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:
|
|
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
|
-
|
|
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 ${
|
|
184
|
-
style: { 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(
|
|
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((
|
|
213
|
-
|
|
212
|
+
].map((r) => /* @__PURE__ */ i(
|
|
213
|
+
Y,
|
|
214
214
|
{
|
|
215
215
|
name: "watchlist",
|
|
216
|
-
value:
|
|
217
|
-
inputProps: { checked:
|
|
218
|
-
children: t`watchlist.${
|
|
216
|
+
value: r,
|
|
217
|
+
inputProps: { checked: n === r },
|
|
218
|
+
children: t`watchlist.${r}`
|
|
219
219
|
},
|
|
220
|
-
|
|
220
|
+
r
|
|
221
221
|
)) })
|
|
222
222
|
] }),
|
|
223
223
|
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
|
|
224
|
-
/* @__PURE__ */ i(
|
|
225
|
-
/* @__PURE__ */ i(
|
|
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)
|
|
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
|
|
240
|
-
o.setLoadingState(!0)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
}),
|
|
255
|
-
}
|
|
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:
|
|
259
|
-
})
|
|
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
|
|
267
|
-
return (b.querySelector("textarea")?.value || "") ===
|
|
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
|
-
(
|
|
283
|
-
beforeClose:
|
|
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:
|
|
307
|
+
wikiPage: a
|
|
292
308
|
});
|
|
293
|
-
const
|
|
294
|
-
window.addEventListener("beforeunload",
|
|
295
|
-
window.removeEventListener("beforeunload",
|
|
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
|
|
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
|
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.$,
|
|
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: !
|
|
374
|
+
disabled: !n
|
|
372
375
|
},
|
|
373
|
-
tooltip: () =>
|
|
376
|
+
tooltip: () => n ? t`Quick Edit` : t`Not editable`,
|
|
374
377
|
onClick: () => {
|
|
375
|
-
const
|
|
378
|
+
const u = new URLSearchParams(window.location.search).get("oldid");
|
|
376
379
|
this.showModal({
|
|
377
|
-
title:
|
|
378
|
-
revision:
|
|
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
|
-
|
|
388
|
-
S =
|
|
389
|
-
|
|
390
|
-
let
|
|
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
|
-
|
|
395
|
+
he as PluginQuickEdit
|
|
393
396
|
};
|
|
394
|
-
//# sourceMappingURL=index-
|
|
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<
|
|
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
|
|
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
|
-
|
|
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:
|
|
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-
|
|
2
|
-
import { m as l, $ as g, S as m } from "./index-
|
|
3
|
-
import { E as r } from "./Preferences-
|
|
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-
|
|
5
|
-
import { B as A } from "./BasePlugin-
|
|
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", () => {
|