@inpageedit/core 0.14.4 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BasePlugin-DD7l-5Xw.js → BasePlugin-BCVSn9QJ.js} +2 -2
- package/dist/{BasePlugin-DD7l-5Xw.js.map → BasePlugin-BCVSn9QJ.js.map} +1 -1
- package/dist/InputBox-CZ1v4_l3.js +50 -0
- package/dist/InputBox-CZ1v4_l3.js.map +1 -0
- package/dist/PluginImagesUsed-Bq_C_rgg.js +90 -0
- package/dist/PluginImagesUsed-Bq_C_rgg.js.map +1 -0
- package/dist/{PluginPrefSync-CbFuuC19.js → PluginPrefSync-DP5NyPnI.js} +4 -4
- package/dist/{PluginPrefSync-CbFuuC19.js.map → PluginPrefSync-DP5NyPnI.js.map} +1 -1
- package/dist/{PluginStoreApp-MbC3G9tu.js → PluginStoreApp-_YWpLgfs.js} +2 -2
- package/dist/{PluginStoreApp-MbC3G9tu.js.map → PluginStoreApp-_YWpLgfs.js.map} +1 -1
- package/dist/PluginTemplatesUsed-DS_rHctR.js +76 -0
- package/dist/PluginTemplatesUsed-DS_rHctR.js.map +1 -0
- package/dist/Preferences-DqtjY7XU.js +1541 -0
- package/dist/Preferences-DqtjY7XU.js.map +1 -0
- package/dist/browser-DR-yCqVg.js +1160 -0
- package/dist/browser-DR-yCqVg.js.map +1 -0
- package/dist/components/index.js +1 -1
- package/dist/{index-BpQ6VGMz.js → index-B9VO3swL.js} +108 -63
- package/dist/index-B9VO3swL.js.map +1 -0
- package/dist/{index-BanevHQ2.js → index-C3t-Xj3e.js} +85 -82
- package/dist/index-C3t-Xj3e.js.map +1 -0
- package/dist/{index-WfXtYVMt.js → index-CS1kidKF.js} +149 -117
- package/dist/index-CS1kidKF.js.map +1 -0
- package/dist/index-Cb2_vqBl.js +44 -0
- package/dist/index-Cb2_vqBl.js.map +1 -0
- package/dist/{index-B3jld2sl.js → index-CbdkXGs7.js} +4 -4
- package/dist/{index-B3jld2sl.js.map → index-CbdkXGs7.js.map} +1 -1
- package/dist/{index-BdHmr8jw.js → index-CcAmmXbb.js} +904 -704
- package/dist/index-CcAmmXbb.js.map +1 -0
- package/dist/index-Cq8xPcEY.js +170 -0
- package/dist/index-Cq8xPcEY.js.map +1 -0
- package/dist/{index-DensW9qt.js → index-DPA1ptYq.js} +5 -5
- package/dist/index-DPA1ptYq.js.map +1 -0
- package/dist/{index-BjDTD66_.js → index-DVvsTsLI.js} +29 -15
- package/dist/index-DVvsTsLI.js.map +1 -0
- package/dist/{index-CnR6CqkM.js → index-DjyjqpeO.js} +2 -2
- package/dist/{index-CnR6CqkM.js.map → index-DjyjqpeO.js.map} +1 -1
- package/dist/index-FvMu0Ka0.js +342 -0
- package/dist/index-FvMu0Ka0.js.map +1 -0
- package/dist/index-mFwJhDwE.js +168 -0
- package/dist/index-mFwJhDwE.js.map +1 -0
- package/dist/{index-De25v1_Q.js → index-n5KKWE9v.js} +6 -6
- package/dist/index-n5KKWE9v.js.map +1 -0
- package/dist/{index-DKCZDN-Q.js → index-rKL4D_7I.js} +5 -5
- package/dist/{index-DKCZDN-Q.js.map → index-rKL4D_7I.js.map} +1 -1
- package/dist/index.d.ts +334 -147
- package/dist/index.js +5 -5
- package/dist/models/index.js +1 -1
- package/dist/plugins/index.js +18 -14
- package/dist/plugins/index.js.map +1 -1
- package/dist/services/index.js +9 -8
- package/dist/style.css +1 -1
- package/lib/index.umd.js +14 -12
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +4 -2
- package/dist/InputBox-nQKtiWtZ.js +0 -30
- package/dist/InputBox-nQKtiWtZ.js.map +0 -1
- package/dist/Preferences-C10tZMl1.js +0 -2701
- package/dist/Preferences-C10tZMl1.js.map +0 -1
- package/dist/index-BXNyXvre.js +0 -116
- package/dist/index-BXNyXvre.js.map +0 -1
- package/dist/index-BanevHQ2.js.map +0 -1
- package/dist/index-BdHmr8jw.js.map +0 -1
- package/dist/index-BjDTD66_.js.map +0 -1
- package/dist/index-BpQ6VGMz.js.map +0 -1
- package/dist/index-DVOc6fB6.js +0 -211
- package/dist/index-DVOc6fB6.js.map +0 -1
- package/dist/index-De25v1_Q.js.map +0 -1
- package/dist/index-DensW9qt.js.map +0 -1
- package/dist/index-WfXtYVMt.js.map +0 -1
|
@@ -1,43 +1,45 @@
|
|
|
1
|
-
import { j as i, F as
|
|
2
|
-
import { W as
|
|
3
|
-
import { m as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { I
|
|
1
|
+
import { j as i, F as E, P as Q } from "./index-CM_6yF2v.js";
|
|
2
|
+
import { W as f } from "./WatchlistAction-BbNAyryN.js";
|
|
3
|
+
import { m as R } from "./makeCallable-LDU0xZMJ.js";
|
|
4
|
+
import { S as $ } from "./browser-DR-yCqVg.js";
|
|
5
|
+
import { I as U, R as W, S as d } from "./Preferences-DqtjY7XU.js";
|
|
6
|
+
import { B as z } from "./BasePlugin-BCVSn9QJ.js";
|
|
7
|
+
import { M as I } from "./index-CG38LlAh.js";
|
|
8
|
+
import { I as T, C } from "./InputBox-CZ1v4_l3.js";
|
|
8
9
|
import { R as Y } from "./RadioBox-0UuxlcWZ.js";
|
|
9
10
|
import { n as F } from "./noop-ClDc6zv4.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
import { I as K } from "./IconQuickEdit-CMCQncyj.js";
|
|
12
|
+
const H = (o = 0) => new Promise((e) => setTimeout(e, o));
|
|
13
|
+
var X = Object.create, _ = Object.defineProperty, G = Object.getOwnPropertyDescriptor, O = (o, e) => (e = Symbol[o]) ? e : Symbol.for("Symbol." + o), M = (o) => {
|
|
14
|
+
throw TypeError(o);
|
|
15
|
+
}, V = (o, e, t) => e in o ? _(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, J = (o, e) => _(o, "name", { value: e, configurable: !0 }), Z = (o) => [, , , X(o?.[O("metadata")] ?? null)], ee = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], B = (o) => o !== void 0 && typeof o != "function" ? M("Function expected") : o, te = (o, e, t, a, r) => ({ kind: ee[o], name: e, metadata: a, addInitializer: (u) => t._ ? M("Already initialized") : r.push(B(u || null)) }), ie = (o, e) => V(e, O("metadata"), o[3]), oe = (o, e, t, a) => {
|
|
16
|
+
for (var r = 0, u = o[e >> 1], h = u && u.length; r < h; r++) u[r].call(t);
|
|
17
|
+
return a;
|
|
18
|
+
}, se = (o, e, t, a, r, u) => {
|
|
19
|
+
var h, w, c, s = e & 7, l = !1, v = 0, x = o[v] || (o[v] = []), p = s && (r = r.prototype, s < 5 && (s > 3 || !l) && G(r, t));
|
|
20
|
+
J(r, t);
|
|
21
|
+
for (var g = a.length - 1; g >= 0; g--)
|
|
22
|
+
c = te(s, t, w = {}, o[3], x), h = (0, a[g])(r, c), w._ = 1, B(h) && (r = h);
|
|
23
|
+
return ie(o, r), p && _(r, t, p), l ? s ^ 4 ? u : p : r;
|
|
22
24
|
}, A, P, L;
|
|
23
|
-
A = [
|
|
24
|
-
|
|
25
|
-
"quickEdit.editSummary":
|
|
26
|
-
"quickEdit.editMinor":
|
|
27
|
-
"quickEdit.outSideClose":
|
|
28
|
-
"quickEdit.watchList":
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
]).description("Watchlist options").default(
|
|
34
|
-
"quickEdit.keyshortcut.save":
|
|
35
|
-
"quickEdit.editFont":
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
25
|
+
A = [U(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences", "$"]), W(
|
|
26
|
+
d.object({
|
|
27
|
+
"quickEdit.editSummary": d.string().description("Default edit summary for quick edits").default("[IPE-NEXT] Quick edit"),
|
|
28
|
+
"quickEdit.editMinor": d.boolean().description('Default to checking "minor edit" option').default(!1),
|
|
29
|
+
"quickEdit.outSideClose": d.boolean().description("Close editor modal by clicking outside").default(!0),
|
|
30
|
+
"quickEdit.watchList": d.union([
|
|
31
|
+
d.const(f.preferences).description("Follow MW preferences"),
|
|
32
|
+
d.const(f.nochange).description("Keep the current watchlist status"),
|
|
33
|
+
d.const(f.watch).description("Add the page to watchlist"),
|
|
34
|
+
d.const(f.unwatch).description("Remove the page from watchlist")
|
|
35
|
+
]).description("Watchlist options").default(f.preferences),
|
|
36
|
+
"quickEdit.keyshortcut.save": d.string().default("ctrl-s").description("save button key shortcut (blank to disable)"),
|
|
37
|
+
"quickEdit.editFont": d.union([
|
|
38
|
+
d.const("preferences").description("Follow MW preferences"),
|
|
39
|
+
d.const("monospace").description("Monospace"),
|
|
40
|
+
d.const("sans-serif").description("Sans-serif"),
|
|
41
|
+
d.const("serif").description("Serif"),
|
|
42
|
+
d.string().description("Custom font (same as CSS `font-family` property)").default("")
|
|
41
43
|
]).description("Font to use in quick edit's textarea").default("preferences")
|
|
42
44
|
}).description("Quick edit options").extra("category", "editor")
|
|
43
45
|
)];
|
|
@@ -52,7 +54,7 @@ let S = class D extends (L = z) {
|
|
|
52
54
|
editSummary: "",
|
|
53
55
|
createOnly: !1,
|
|
54
56
|
reloadAfterSave: !0
|
|
55
|
-
}, this.ctx.root.set("quickEdit",
|
|
57
|
+
}, this.ctx.root.set("quickEdit", R(this, "showModal"));
|
|
56
58
|
}
|
|
57
59
|
start() {
|
|
58
60
|
this.ctx.inject(["toolbox"], (e) => {
|
|
@@ -62,44 +64,44 @@ let S = class D extends (L = z) {
|
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
66
|
async showModal(e) {
|
|
65
|
-
const t = this.ctx
|
|
67
|
+
const { $: t } = this.ctx;
|
|
66
68
|
if (typeof e > "u" ? e = {} : typeof e == "string" && (e = {
|
|
67
69
|
title: e
|
|
68
70
|
}), e?.page && (e.title = e.page, delete e.page), !e.title && !e.pageId && !e.revision) {
|
|
69
71
|
this.logger.warn("None of the title, pageId or revision provided. Using defaults.");
|
|
70
|
-
const
|
|
72
|
+
const n = new URLSearchParams(window.location.search), m = this.ctx.currentPage.wikiTitle;
|
|
71
73
|
e = {
|
|
72
74
|
...e,
|
|
73
75
|
title: m?.getPrefixedDBKey(),
|
|
74
|
-
revision:
|
|
75
|
-
pageId:
|
|
76
|
+
revision: n.has("oldid") ? Number(n.get("oldid")) : void 0,
|
|
77
|
+
pageId: n.has("curid") ? Number(n.get("curid")) : void 0
|
|
76
78
|
};
|
|
77
79
|
}
|
|
78
80
|
if (!e.revision && !e.pageId && e.title) {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
+
const n = this.ctx.wikiTitle.resolveSpecialPageTarget(e.title);
|
|
82
|
+
n && n.title.getNamespaceId() >= 0 && (e.title = n.title.getPrefixedDBKey(), e.section ??= n.section);
|
|
81
83
|
}
|
|
82
|
-
const
|
|
84
|
+
const a = await this.ctx.preferences.get("quickEdit.outSideClose"), r = await this.ctx.preferences.get("quickEdit.watchList"), u = typeof e.editSummary == "string" ? e.editSummary : await this.ctx.preferences.get("quickEdit.editSummary"), h = typeof e.editMinor == "boolean" ? e.editMinor : await this.ctx.preferences.get("quickEdit.editMinor"), w = await this.getEditFontOptions(), c = {
|
|
83
85
|
...this.DEFAULT_OPTIONS,
|
|
84
86
|
editSummary: u,
|
|
85
|
-
editMinor:
|
|
87
|
+
editMinor: h,
|
|
86
88
|
...e
|
|
87
89
|
};
|
|
88
90
|
c.editSummary || (c.editSummary = await this.ctx.preferences.get("quickEdit.editSummary") || ""), this.ctx.emit("quick-edit/init-options", { ctx: this.ctx, options: c });
|
|
89
|
-
const
|
|
91
|
+
const s = this.ctx.modal.createObject({
|
|
90
92
|
className: "ipe-quickEdit",
|
|
91
93
|
sizeClass: "large",
|
|
92
94
|
// backdrop: false,
|
|
93
95
|
// draggable: true,
|
|
94
96
|
center: !1,
|
|
95
|
-
outSideClose:
|
|
97
|
+
outSideClose: a
|
|
96
98
|
}).init();
|
|
97
|
-
|
|
98
|
-
/* @__PURE__ */ i(
|
|
99
|
+
s.setTitle(
|
|
100
|
+
/* @__PURE__ */ i(E, { children: [
|
|
99
101
|
"Loading: ",
|
|
100
102
|
/* @__PURE__ */ i("u", { children: c.title })
|
|
101
103
|
] })
|
|
102
|
-
),
|
|
104
|
+
), s.setContent(
|
|
103
105
|
/* @__PURE__ */ i(
|
|
104
106
|
"section",
|
|
105
107
|
{
|
|
@@ -111,42 +113,42 @@ let S = class D extends (L = z) {
|
|
|
111
113
|
justifyContent: "center",
|
|
112
114
|
alignItems: "center"
|
|
113
115
|
},
|
|
114
|
-
children: /* @__PURE__ */ i(
|
|
116
|
+
children: /* @__PURE__ */ i(Q, {})
|
|
115
117
|
}
|
|
116
118
|
)
|
|
117
|
-
),
|
|
119
|
+
), s.addButton({
|
|
118
120
|
side: "right",
|
|
119
121
|
type: "button",
|
|
120
122
|
className: "is-danger is-ghost",
|
|
121
123
|
label: t`Cancel`,
|
|
122
124
|
method() {
|
|
123
|
-
|
|
125
|
+
s.close();
|
|
124
126
|
}
|
|
125
|
-
}),
|
|
126
|
-
let
|
|
127
|
+
}), s.show(), this.ctx.emit("quick-edit/show-modal", { ctx: this.ctx, modal: s, options: c });
|
|
128
|
+
let l;
|
|
127
129
|
try {
|
|
128
|
-
if (
|
|
130
|
+
if (l = await this.getWikiPageFromPayload(c), l.pageInfo.special)
|
|
129
131
|
throw new Error(t`Special page is not editable.`);
|
|
130
|
-
} catch (
|
|
131
|
-
|
|
132
|
-
content:
|
|
132
|
+
} catch (n) {
|
|
133
|
+
s.off(s.Event.Close), s.close(), this.ctx.modal.notify("error", {
|
|
134
|
+
content: n instanceof Error ? n.message : String(n)
|
|
133
135
|
});
|
|
134
136
|
return;
|
|
135
137
|
}
|
|
136
|
-
const v = c.section === "new" ? "" :
|
|
137
|
-
|
|
138
|
-
/* @__PURE__ */ i(
|
|
138
|
+
const v = c.section === "new" ? "" : l.revisions[0]?.content || "", x = l.revisions[0]?.revid, p = x && x !== l.lastrevid, g = c.section === "new", N = l.pageid === 0;
|
|
139
|
+
s.setTitle(
|
|
140
|
+
/* @__PURE__ */ i(E, { children: [
|
|
139
141
|
g ? t`New Section` : t`Quick ${N ? "Create" : "Edit"}`,
|
|
140
142
|
": ",
|
|
141
|
-
/* @__PURE__ */ i("u", { children:
|
|
143
|
+
/* @__PURE__ */ i("u", { children: l.pageInfo.title }),
|
|
142
144
|
p ? ` (${t`Revision`} ${x})` : ""
|
|
143
145
|
] })
|
|
144
146
|
);
|
|
145
147
|
const k = [];
|
|
146
148
|
N && k.push(
|
|
147
|
-
/* @__PURE__ */ i(
|
|
149
|
+
/* @__PURE__ */ i(I, { title: t`Attention`, type: "important", children: /* @__PURE__ */ i("p", { children: t`This page does not exist.` }) })
|
|
148
150
|
), p && k.push(
|
|
149
|
-
/* @__PURE__ */ i(
|
|
151
|
+
/* @__PURE__ */ i(I, { title: t`Attention`, type: "warning", children: /* @__PURE__ */ i(
|
|
150
152
|
"p",
|
|
151
153
|
{
|
|
152
154
|
innerHTML: t`You are editing a <em>historical version</em>; the content is not the latest!`
|
|
@@ -155,8 +157,8 @@ let S = class D extends (L = z) {
|
|
|
155
157
|
), this.ctx.emit("quick-edit/edit-notice", {
|
|
156
158
|
ctx: this.ctx,
|
|
157
159
|
options: c,
|
|
158
|
-
modal:
|
|
159
|
-
wikiPage:
|
|
160
|
+
modal: s,
|
|
161
|
+
wikiPage: l,
|
|
160
162
|
editNotices: k
|
|
161
163
|
});
|
|
162
164
|
const b = /* @__PURE__ */ i("form", { className: "ipe-quickEdit__form", children: [
|
|
@@ -167,8 +169,8 @@ let S = class D extends (L = z) {
|
|
|
167
169
|
className: "ipe-quickEdit__content",
|
|
168
170
|
style: { display: "flex", flexDirection: "column", gap: "1rem" },
|
|
169
171
|
children: [
|
|
170
|
-
c.section === "new" && /* @__PURE__ */ i(
|
|
171
|
-
|
|
172
|
+
c.section === "new" && /* @__PURE__ */ i(E, { children: /* @__PURE__ */ i(
|
|
173
|
+
T,
|
|
172
174
|
{
|
|
173
175
|
label: t`Section title`,
|
|
174
176
|
id: "summary",
|
|
@@ -201,23 +203,31 @@ let S = class D extends (L = z) {
|
|
|
201
203
|
marginTop: "1rem"
|
|
202
204
|
},
|
|
203
205
|
children: [
|
|
204
|
-
!g && /* @__PURE__ */ i(
|
|
206
|
+
!g && /* @__PURE__ */ i(T, { label: t`Summary`, id: "summary", name: "summary", value: c.editSummary }),
|
|
205
207
|
/* @__PURE__ */ i("div", { className: "ipe-input-box", children: [
|
|
206
208
|
/* @__PURE__ */ i("label", { htmlFor: "watchlist", style: { display: "block" }, children: t`Watchlist` }),
|
|
207
|
-
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
].map((
|
|
209
|
+
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem", whiteSpace: "nowrap", overflowX: "auto" }, children: [
|
|
210
|
+
f.preferences,
|
|
211
|
+
f.nochange,
|
|
212
|
+
f.watch,
|
|
213
|
+
f.unwatch
|
|
214
|
+
].map((n) => /* @__PURE__ */ i(
|
|
213
215
|
Y,
|
|
214
216
|
{
|
|
215
217
|
name: "watchlist",
|
|
216
|
-
value:
|
|
217
|
-
inputProps: {
|
|
218
|
-
|
|
218
|
+
value: n,
|
|
219
|
+
inputProps: {
|
|
220
|
+
checked: r === n,
|
|
221
|
+
onChange: (m) => {
|
|
222
|
+
m.target && m.target.closest("label")?.scrollIntoView({
|
|
223
|
+
behavior: "smooth",
|
|
224
|
+
inline: "center"
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
children: t`watchlist.${n}`
|
|
219
229
|
},
|
|
220
|
-
|
|
230
|
+
n
|
|
221
231
|
)) })
|
|
222
232
|
] }),
|
|
223
233
|
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
|
|
@@ -229,36 +239,36 @@ let S = class D extends (L = z) {
|
|
|
229
239
|
),
|
|
230
240
|
!1
|
|
231
241
|
] });
|
|
232
|
-
|
|
242
|
+
s.setContent(b);
|
|
233
243
|
let y = !1;
|
|
234
|
-
|
|
244
|
+
s.addButton(
|
|
235
245
|
{
|
|
236
246
|
side: "left",
|
|
237
247
|
className: "is-primary submit-btn",
|
|
238
248
|
label: t`Submit`,
|
|
239
249
|
keyPress: await this.ctx.preferences.get("quickEdit.keyshortcut.save") || void 0,
|
|
240
250
|
method: async () => {
|
|
241
|
-
const
|
|
242
|
-
|
|
251
|
+
const n = new FormData(b);
|
|
252
|
+
s.setLoadingState(!0);
|
|
243
253
|
try {
|
|
244
254
|
await this.handleSubmit({
|
|
245
|
-
wikiPage:
|
|
246
|
-
text:
|
|
247
|
-
summary:
|
|
248
|
-
minor:
|
|
255
|
+
wikiPage: l,
|
|
256
|
+
text: n.get("text"),
|
|
257
|
+
summary: n.get("summary"),
|
|
258
|
+
minor: n.get("minor") === "on",
|
|
249
259
|
section: c.section,
|
|
250
|
-
watchlist:
|
|
260
|
+
watchlist: r,
|
|
251
261
|
// 如果无视风险,那么就不再尝试解决冲突,直接重建页面
|
|
252
|
-
createonly:
|
|
253
|
-
recreate:
|
|
254
|
-
}),
|
|
262
|
+
createonly: l.pageid === 0 && !y,
|
|
263
|
+
recreate: l.pageid === 0 && y
|
|
264
|
+
}), s.setOptions({
|
|
255
265
|
beforeClose: F
|
|
256
|
-
}),
|
|
266
|
+
}), s.close(), this.ctx.modal.notify("success", {
|
|
257
267
|
title: t`Submission Successful`,
|
|
258
268
|
content: t`Your changes have been saved.`
|
|
259
|
-
}),
|
|
269
|
+
}), n.get("reloadAfterSave") && (await H(500), location.reload());
|
|
260
270
|
} catch (m) {
|
|
261
|
-
if (
|
|
271
|
+
if (s.setLoadingState(!1), $.is(m) && (m.code === "pagedeleted" || m.code === "editconflict" || m.code === "articleexists")) {
|
|
262
272
|
y = !0, this.ctx.modal.notify("warning", {
|
|
263
273
|
title: t`Submission Error`,
|
|
264
274
|
content: /* @__PURE__ */ i("div", { children: [
|
|
@@ -277,10 +287,10 @@ let S = class D extends (L = z) {
|
|
|
277
287
|
}
|
|
278
288
|
},
|
|
279
289
|
0
|
|
280
|
-
),
|
|
290
|
+
), s.setOptions({
|
|
281
291
|
beforeClose: () => {
|
|
282
|
-
const
|
|
283
|
-
return (b.querySelector("textarea")?.value || "") ===
|
|
292
|
+
const n = l.revisions[0]?.content || "";
|
|
293
|
+
return (b.querySelector("textarea")?.value || "") === n ? !0 : (this.ctx.modal.confirm(
|
|
284
294
|
{
|
|
285
295
|
className: "is-primary",
|
|
286
296
|
title: t`Unsaved Changes`,
|
|
@@ -295,30 +305,30 @@ let S = class D extends (L = z) {
|
|
|
295
305
|
className: "is-primary is-ghost"
|
|
296
306
|
}
|
|
297
307
|
},
|
|
298
|
-
(j) => (j && (
|
|
308
|
+
(j) => (j && (s.setOptions({
|
|
299
309
|
beforeClose: F
|
|
300
|
-
}),
|
|
310
|
+
}), s.close()), !0)
|
|
301
311
|
), !1);
|
|
302
312
|
}
|
|
303
313
|
}), this.ctx.emit("quick-edit/wiki-page", {
|
|
304
314
|
ctx: this.ctx,
|
|
305
315
|
options: c,
|
|
306
|
-
modal:
|
|
307
|
-
wikiPage:
|
|
316
|
+
modal: s,
|
|
317
|
+
wikiPage: l
|
|
308
318
|
});
|
|
309
|
-
const q = (
|
|
310
|
-
window.addEventListener("beforeunload", q),
|
|
319
|
+
const q = (n) => b.querySelector("textarea")?.value === v ? !0 : (n.preventDefault(), t`You have unsaved changes. Are you sure you want to leave?`);
|
|
320
|
+
window.addEventListener("beforeunload", q), s.on(s.Event.Close, () => {
|
|
311
321
|
window.removeEventListener("beforeunload", q);
|
|
312
322
|
});
|
|
313
323
|
}
|
|
314
324
|
async handleSubmit(e) {
|
|
315
|
-
const { wikiPage: t, ...
|
|
325
|
+
const { wikiPage: t, ...a } = e;
|
|
316
326
|
return this.ctx.emit("quick-edit/submit", {
|
|
317
327
|
ctx: this.ctx,
|
|
318
328
|
wikiPage: t,
|
|
319
|
-
...
|
|
329
|
+
...a
|
|
320
330
|
}), t.edit({
|
|
321
|
-
...
|
|
331
|
+
...a
|
|
322
332
|
});
|
|
323
333
|
}
|
|
324
334
|
static {
|
|
@@ -344,7 +354,7 @@ let S = class D extends (L = z) {
|
|
|
344
354
|
throw new Error("Invalid payload");
|
|
345
355
|
}
|
|
346
356
|
async injectToolbox(e) {
|
|
347
|
-
const t = this.ctx
|
|
357
|
+
const { $: t } = this.ctx, a = this.ctx.currentPage.wikiTitle, r = a && a.getNamespaceId() >= 0;
|
|
348
358
|
e.toolbox.addButton({
|
|
349
359
|
id: "quick-edit",
|
|
350
360
|
group: "group1",
|
|
@@ -371,13 +381,13 @@ let S = class D extends (L = z) {
|
|
|
371
381
|
}
|
|
372
382
|
),
|
|
373
383
|
buttonProps: {
|
|
374
|
-
disabled: !
|
|
384
|
+
disabled: !r
|
|
375
385
|
},
|
|
376
|
-
tooltip: () =>
|
|
386
|
+
tooltip: () => r ? t`Quick Edit` : t`Not editable`,
|
|
377
387
|
onClick: () => {
|
|
378
388
|
const u = new URLSearchParams(window.location.search).get("oldid");
|
|
379
389
|
this.showModal({
|
|
380
|
-
title:
|
|
390
|
+
title: a?.getPrefixedText(),
|
|
381
391
|
revision: u ? Number(u) : void 0
|
|
382
392
|
});
|
|
383
393
|
}
|
|
@@ -386,12 +396,34 @@ let S = class D extends (L = z) {
|
|
|
386
396
|
removeToolbox(e) {
|
|
387
397
|
e.toolbox.removeButton("quick-edit");
|
|
388
398
|
}
|
|
399
|
+
createQuickEditButton(e, t) {
|
|
400
|
+
const { $: a } = this.ctx, r = t?.icon ?? /* @__PURE__ */ i(K, { className: "ipe-icon" }), u = t?.label ?? a`Quick Edit`;
|
|
401
|
+
return /* @__PURE__ */ i(
|
|
402
|
+
"a",
|
|
403
|
+
{
|
|
404
|
+
href: "#ipe://quick-edit/",
|
|
405
|
+
dataset: e,
|
|
406
|
+
className: `ipe-quick-edit ${e.createOnly ? "ipe-quick-edit--create-only" : ""}`,
|
|
407
|
+
style: {
|
|
408
|
+
userSelect: "none",
|
|
409
|
+
marginLeft: "0.2em"
|
|
410
|
+
},
|
|
411
|
+
onClick: (h) => {
|
|
412
|
+
h.preventDefault(), this.showModal(e);
|
|
413
|
+
},
|
|
414
|
+
children: [
|
|
415
|
+
r,
|
|
416
|
+
u
|
|
417
|
+
]
|
|
418
|
+
}
|
|
419
|
+
);
|
|
420
|
+
}
|
|
389
421
|
};
|
|
390
|
-
P =
|
|
422
|
+
P = Z(L);
|
|
391
423
|
S = se(P, 0, "PluginQuickEdit", A, S);
|
|
392
|
-
|
|
393
|
-
let
|
|
424
|
+
oe(P, 1, S);
|
|
425
|
+
let ge = S;
|
|
394
426
|
export {
|
|
395
|
-
|
|
427
|
+
ge as PluginQuickEdit
|
|
396
428
|
};
|
|
397
|
-
//# sourceMappingURL=index-
|
|
429
|
+
//# sourceMappingURL=index-CS1kidKF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CS1kidKF.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', whiteSpace: 'nowrap', overflowX: 'auto' }}>\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={{\n checked: watchList === action,\n onChange: (e) => {\n e.target &&\n (e.target as HTMLElement).closest('label')?.scrollIntoView({\n behavior: 'smooth',\n inline: 'center',\n })\n },\n }}\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 createQuickEditButton(\n payload: Partial<QuickEditOptions>,\n options?: {\n icon?: ReactNode\n label?: ReactNode\n }\n ) {\n const { $ } = this.ctx\n const icon = options?.icon ?? <IconQuickEdit className=\"ipe-icon\" />\n const label = options?.label ?? $`Quick Edit`\n return (\n <a\n href={`#ipe://quick-edit/`}\n dataset={payload as any}\n className={`ipe-quick-edit ${payload.createOnly ? 'ipe-quick-edit--create-only' : ''}`}\n style={{\n userSelect: 'none',\n marginLeft: '0.2em',\n }}\n onClick={(e) => {\n e.preventDefault()\n this.showModal(payload)\n }}\n >\n {icon}\n {label}\n </a>\n ) as HTMLAnchorElement\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","icon","IconQuickEdit","label","__decoratorStart","__decorateElement","__runInitializers","PluginQuickEdit"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { j as i } from "./index-CM_6yF2v.js";
|
|
2
|
+
import { B as s } from "./BasePlugin-BCVSn9QJ.js";
|
|
3
|
+
class o extends s {
|
|
4
|
+
constructor(e) {
|
|
5
|
+
super(e, {}, "quick-usage"), this.ctx = e, e.set("quickUsage", this);
|
|
6
|
+
}
|
|
7
|
+
async start() {
|
|
8
|
+
import("./PluginTemplatesUsed-DS_rHctR.js").then(
|
|
9
|
+
({ PluginTemplatesUsed: e }) => this.ctx.plugin(e)
|
|
10
|
+
), import("./PluginImagesUsed-Bq_C_rgg.js").then(
|
|
11
|
+
({ PluginImagesUsed: e }) => this.ctx.plugin(e)
|
|
12
|
+
), this.ctx.inject(["quickUpload", "$"], (e) => {
|
|
13
|
+
e.on("quick-edit/wiki-page", ({ modal: t }) => {
|
|
14
|
+
const { $: a } = e;
|
|
15
|
+
this.getWrapperForQuickEdit(t).appendChild(
|
|
16
|
+
/* @__PURE__ */ i(
|
|
17
|
+
"a",
|
|
18
|
+
{
|
|
19
|
+
href: "#ipe:quick-upload",
|
|
20
|
+
onClick: (r) => {
|
|
21
|
+
r.preventDefault(), e.quickUpload.showModal(), e.emit("analytics/event", { feature: "quick-usage", subtype: "quick-upload" });
|
|
22
|
+
},
|
|
23
|
+
children: a`Quick Upload`
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
getWrapperForQuickEdit(e) {
|
|
31
|
+
const t = e.get$content().querySelector(".ipe-quickEdit__usages") || /* @__PURE__ */ i(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
className: "ipe-quickEdit__usages",
|
|
35
|
+
style: { display: "flex", gap: "1em", flexWrap: "wrap" }
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
return e.get$content().querySelector(".ipe-quickEdit__content")?.insertAdjacentElement("afterend", t), t;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
o as PluginQuickUsage
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=index-Cb2_vqBl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cb2_vqBl.js","sources":["../src/plugins/quick-usage/index.tsx"],"sourcesContent":["import { InPageEdit } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickUsage: PluginQuickUsage\n }\n}\n\nexport class PluginQuickUsage extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-usage')\n ctx.set('quickUsage', this)\n }\n protected async start() {\n import('./PluginTemplatesUsed.js').then(({ PluginTemplatesUsed }) =>\n this.ctx.plugin(PluginTemplatesUsed)\n )\n import('./PluginImagesUsed.js').then(({ PluginImagesUsed }) =>\n this.ctx.plugin(PluginImagesUsed)\n )\n this.ctx.inject(['quickUpload', '$'], (ctx) => {\n ctx.on('quick-edit/wiki-page', ({ modal }) => {\n const { $ } = ctx\n const wrapper = this.getWrapperForQuickEdit(modal)\n wrapper.appendChild(\n <a\n href=\"#ipe:quick-upload\"\n onClick={(e) => {\n e.preventDefault()\n ctx.quickUpload.showModal()\n ctx.emit('analytics/event', { feature: 'quick-usage', subtype: 'quick-upload' })\n }}\n >{$`Quick Upload`}</a>\n )\n })\n })\n }\n getWrapperForQuickEdit(modal: IPEModal) {\n const wrapper = modal.get$content().querySelector('.ipe-quickEdit__usages') || (\n <div\n className=\"ipe-quickEdit__usages\"\n style={{ display: 'flex', gap: '1em', flexWrap: 'wrap' }}\n ></div>\n )\n modal\n .get$content()\n .querySelector('.ipe-quickEdit__content')\n ?.insertAdjacentElement('afterend', wrapper)\n return wrapper\n }\n}\n"],"names":["PluginQuickUsage","BasePlugin","ctx","PluginTemplatesUsed","PluginImagesUsed","modal","$","jsx","e","wrapper"],"mappings":";;AASO,MAAMA,UAAyBC,EAAW;AAAA,EAC/C,YAAmBC,GAAiB;AAClC,UAAMA,GAAK,CAAA,GAAI,aAAa,GADX,KAAA,MAAAA,GAEjBA,EAAI,IAAI,cAAc,IAAI;AAAA,EAC5B;AAAA,EACA,MAAgB,QAAQ;AACtB,WAAO,mCAA0B,EAAE;AAAA,MAAK,CAAC,EAAE,qBAAAC,EAAA,MACzC,KAAK,IAAI,OAAOA,CAAmB;AAAA,IAAA,GAErC,OAAO,gCAAuB,EAAE;AAAA,MAAK,CAAC,EAAE,kBAAAC,EAAA,MACtC,KAAK,IAAI,OAAOA,CAAgB;AAAA,IAAA,GAElC,KAAK,IAAI,OAAO,CAAC,eAAe,GAAG,GAAG,CAACF,MAAQ;AAC7C,MAAAA,EAAI,GAAG,wBAAwB,CAAC,EAAE,OAAAG,QAAY;AAC5C,cAAM,EAAE,GAAAC,MAAMJ;AAEd,QADgB,KAAK,uBAAuBG,CAAK,EACzC;AAAA,UACN,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,CAACC,MAAM;AACd,gBAAAA,EAAE,eAAA,GACFN,EAAI,YAAY,UAAA,GAChBA,EAAI,KAAK,mBAAmB,EAAE,SAAS,eAAe,SAAS,gBAAgB;AAAA,cACjF;AAAA,cACA,UAAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAAgB;AAAA,MAEtB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EACA,uBAAuBD,GAAiB;AACtC,UAAMI,IAAUJ,EAAM,YAAA,EAAc,cAAc,wBAAwB,KACxE,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAO,UAAU,OAAA;AAAA,MAAO;AAAA,IAAA;AAG3D,WAAAF,EACG,cACA,cAAc,yBAAyB,GACtC,sBAAsB,YAAYI,CAAO,GACtCA;AAAA,EACT;AACF;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as R } from "./index-CM_6yF2v.js";
|
|
2
|
-
import { S as s, E as C, I as j } from "./Preferences-
|
|
3
|
-
import { B as L } from "./BasePlugin-
|
|
2
|
+
import { S as s, E as C, I as j } from "./Preferences-DqtjY7XU.js";
|
|
3
|
+
import { B as L } from "./BasePlugin-BCVSn9QJ.js";
|
|
4
4
|
import { c as O, d as F } from "./vueHooks-l04s8cIl.js";
|
|
5
5
|
const G = 1;
|
|
6
6
|
var m;
|
|
@@ -111,7 +111,7 @@ let w = class x extends (T = L) {
|
|
|
111
111
|
this.install(t.registry, t.id, t.source, "user-preference");
|
|
112
112
|
}
|
|
113
113
|
async _createManagementApp() {
|
|
114
|
-
const e = await this.ctx.withInject(["store"]), t = F(() => import("./PluginStoreApp-
|
|
114
|
+
const e = await this.ctx.withInject(["store"]), t = F(() => import("./PluginStoreApp-_YWpLgfs.js"));
|
|
115
115
|
return O(e, t);
|
|
116
116
|
}
|
|
117
117
|
async _injectPreferenceUI() {
|
|
@@ -388,4 +388,4 @@ let X = w;
|
|
|
388
388
|
export {
|
|
389
389
|
X as PluginPluginStore
|
|
390
390
|
};
|
|
391
|
-
//# sourceMappingURL=index-
|
|
391
|
+
//# sourceMappingURL=index-CbdkXGs7.js.map
|