@inpageedit/core 0.7.0 → 0.8.1
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/{IconQuickEdit-YVn1ANbm.js → IconQuickEdit-CAL1HXIb.js} +4 -4
- package/dist/IconQuickEdit-CAL1HXIb.js.map +1 -0
- package/dist/__test__/utils/constants.d.ts +2 -2
- package/dist/index-9M1QcjCN.js +354 -0
- package/dist/index-9M1QcjCN.js.map +1 -0
- package/dist/index-Ba7Wkale.js +127 -0
- package/dist/index-Ba7Wkale.js.map +1 -0
- package/dist/{index-1JtE4urY.js → index-C8dOYIIz.js} +63 -70
- package/dist/{index-1JtE4urY.js.map → index-C8dOYIIz.js.map} +1 -1
- package/dist/index-COlXHFRg.js +6326 -0
- package/dist/index-COlXHFRg.js.map +1 -0
- package/dist/{index-B3Bsg_nE.js → index-CeXR4lOu.js} +5 -5
- package/dist/{index-B3Bsg_nE.js.map → index-CeXR4lOu.js.map} +1 -1
- package/dist/index-DBV8FBjA.js +139 -0
- package/dist/index-DBV8FBjA.js.map +1 -0
- package/dist/{index-2AEdgbUL.js → index-DwyuBkCK.js} +3 -3
- package/dist/{index-2AEdgbUL.js.map → index-DwyuBkCK.js.map} +1 -1
- package/dist/{index-BCMwmSfQ.js → index-OBerV4GU.js} +76 -73
- package/dist/index-OBerV4GU.js.map +1 -0
- package/dist/{index-C0ci6Ll1.js → index-Tn22YSmW.js} +7 -7
- package/dist/index-Tn22YSmW.js.map +1 -0
- package/dist/index-kRdAN8h3.js +193 -0
- package/dist/index-kRdAN8h3.js.map +1 -0
- package/dist/{index-CrWxZ0yl.js → index-mntCdHRr.js} +3 -3
- package/dist/{index-CrWxZ0yl.js.map → index-mntCdHRr.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/models/WikiPage/index.d.ts +42 -47
- package/dist/models/WikiTitle/index.d.ts +3 -2
- package/dist/plugins/in-article-links/index.d.ts +4 -34
- package/dist/plugins/quick-delete/index.d.ts +8 -6
- package/dist/plugins/quick-diff/PluginQuickDiffCore.d.ts +1 -1
- package/dist/plugins/quick-edit/index.d.ts +13 -11
- package/dist/plugins/quick-move/index.d.ts +3 -1
- package/dist/plugins/quick-preview/index.d.ts +13 -16
- package/dist/plugins/quick-redirect/index.d.ts +3 -1
- package/dist/plugins/toolbox/index.d.ts +7 -2
- package/dist/services/CurrentPageService.d.ts +27 -0
- package/dist/services/{ModalService/index.d.ts → ModalService.d.ts} +4 -4
- package/dist/services/{SiteMetadataService.d.ts → WikiMetadataService.d.ts} +36 -21
- package/dist/services/WikiPageService.d.ts +8 -7
- package/dist/services/WikiTitleService.d.ts +55 -3
- package/dist/style.css +1 -1
- package/dist/types/{SiteMetadata.d.ts → WikiMetadata.d.ts} +17 -17
- package/lib/index.umd.js +34 -35
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +8 -7
- package/dist/IconQuickEdit-YVn1ANbm.js.map +0 -1
- package/dist/index-2kN4SKmT.js +0 -116
- package/dist/index-2kN4SKmT.js.map +0 -1
- package/dist/index-BCMwmSfQ.js.map +0 -1
- package/dist/index-C0ci6Ll1.js.map +0 -1
- package/dist/index-CZnu6cRK.js +0 -319
- package/dist/index-CZnu6cRK.js.map +0 -1
- package/dist/index-CheNjwas.js +0 -128
- package/dist/index-CheNjwas.js.map +0 -1
- package/dist/index-DqfQ7hp6.js +0 -5626
- package/dist/index-DqfQ7hp6.js.map +0 -1
- package/dist/index-sfkutNHj.js +0 -201
- package/dist/index-sfkutNHj.js.map +0 -1
- package/dist/services/ModalService/IPEModal.d.ts +0 -235
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { j as e, P as l } from "./index-CvhkVj_L.js";
|
|
2
|
-
import { B as d } from "./index-
|
|
2
|
+
import { B as d } from "./index-COlXHFRg.js";
|
|
3
3
|
import { T as m } from "./index-Bh70Udzi.js";
|
|
4
4
|
import { I as u } from "./InputBox-BV4m05Xs.js";
|
|
5
5
|
import { C as h } from "./CheckBox-D3rHnX7I.js";
|
|
6
|
-
class
|
|
6
|
+
class x extends d {
|
|
7
7
|
constructor(t) {
|
|
8
8
|
super(t, {}, "quick-redirect"), this.ctx = t;
|
|
9
9
|
}
|
|
@@ -150,11 +150,11 @@ class v extends d {
|
|
|
150
150
|
}
|
|
151
151
|
);
|
|
152
152
|
if (c.data?.errors)
|
|
153
|
-
throw new Error(c.data.errors[0].
|
|
153
|
+
throw new Error(c.data.errors[0].info, { cause: c });
|
|
154
154
|
return c;
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
export {
|
|
158
|
-
|
|
158
|
+
x as PluginQuickRedirect
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=index-
|
|
160
|
+
//# sourceMappingURL=index-CeXR4lOu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CeXR4lOu.js","sources":["../src/plugins/quick-redirect/index.tsx"],"sourcesContent":["import { InPageEdit } from '@/InPageEdit'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickRedirect: PluginQuickRedirect['quickRedirect']\n redirectPage: PluginQuickRedirect['redirectPage']\n }\n}\n\nexport interface RedirectPageOptions {\n from: string\n to: string\n reason?: string\n overwrite?: boolean\n}\nexport interface QuickRedirectOptions extends Partial<RedirectPageOptions> {}\n\nexport class PluginQuickRedirect extends BasePlugin {\n static readonly inject = ['api', 'wikiPage', 'modal']\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-redirect')\n }\n\n protected start(): Promise<void> | void {\n this.ctx.set('quickRedirect', this.quickRedirect.bind(this))\n this.ctx.set('redirectPage', this.redirectPage.bind(this))\n\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n this.ctx.inject(['toolbox'], (ctx) => {\n this.ctx = ctx\n ctx.toolbox.addButton({\n id: 'quick-redirect',\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-file-symlink\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M4 21v-4a3 3 0 0 1 3 -3h5\" />\n <path d=\"M9 17l3 -3l-3 -3\" />\n <path d=\"M14 3v4a1 1 0 0 0 1 1h4\" />\n <path d=\"M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5\" />\n </svg>\n ) as HTMLElement,\n tooltip: 'Quick Redirect',\n group: 'group1',\n index: 2,\n onClick: () => {\n this.quickRedirect(\n canEdit\n ? {\n to: curPageName,\n }\n : {}\n )\n },\n })\n this.addDisposeHandler((ctx) => {\n ctx.toolbox.removeButton('quick-redirect')\n })\n })\n }\n\n protected stop(): Promise<void> | void {}\n\n quickRedirect(options?: Partial<QuickRedirectOptions>) {\n const modal = this.ctx.modal\n .createObject({\n title: 'Quick Redirect',\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-redirect compact-buttons',\n sizeClass: 'smallToMedium',\n center: true,\n })\n .init()\n\n let formRef: HTMLFormElement | null = null\n modal.setContent(\n (\n <form\n ref={(el) => (formRef = el)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n }}\n onSubmit={(e) => {\n e.preventDefault()\n formRef?.checkValidity()\n if (!formRef?.reportValidity()) {\n return\n }\n const formData = new FormData(formRef!)\n const options = {\n from: formData.get('from')?.toString().trim()!,\n to: formData.get('to')?.toString().trim()!,\n reason: (formData.get('reason') as string) || '',\n overwrite: formData.get('overwrite') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: 'Failed to redirect',\n content: 'From and to are required.',\n })\n return\n }\n modal.setLoadingState(true)\n this.redirectPage(options)\n .then((res) => {\n modal.close()\n this.ctx.modal.notify('success', {\n title: 'Redirect successful',\n content: 'The redirect has been created.',\n })\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: 'Failed to redirect',\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: 'From',\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: 'To',\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <InputBox label=\"Reason\" id=\"reason\" name=\"reason\" value={options?.reason} />\n <div>\n <CheckBox name=\"overwrite\" id=\"overwrite\" checked={options?.overwrite}>\n Force create redirect even if the from page already exists\n </CheckBox>\n </div>\n </form>\n ) as HTMLFormElement\n )\n modal.setButtons([\n {\n label: 'Create Redirect',\n className: 'is-primary is-ghost',\n method: () => {\n formRef?.dispatchEvent(new Event('submit'))\n },\n },\n ])\n\n return modal.show()\n }\n\n async redirectPage(options: RedirectPageOptions) {\n const { from, to, reason = '', overwrite = false } = options\n const wikiPage = await this.ctx.wikiPage.newBlankPage({\n title: from,\n })\n const content = `#REDIRECT [[:${to}]]`\n const res = await wikiPage.edit(\n {\n text: content,\n summary: reason,\n },\n {\n createonly: !overwrite,\n }\n )\n if (res.data?.errors) {\n throw new Error(res.data.errors[0].info, { cause: res })\n }\n return res\n }\n}\n"],"names":["PluginQuickRedirect","BasePlugin","ctx","curPageName","canEdit","jsxs","jsx","options","modal","ProgressBar","formRef","el","e","formData","res","error","TwinSwapInput","InputBox","CheckBox","from","to","reason","overwrite","wikiPage","content"],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { j as a } from "./index-CvhkVj_L.js";
|
|
2
|
+
import { b as D, I as C, S as m } from "./index-COlXHFRg.js";
|
|
3
|
+
import { R as T } from "./Preferences-Bg3J5Ur9.js";
|
|
4
|
+
var E = Object.create, x = Object.defineProperty, q = Object.getOwnPropertyDescriptor, y = (e, t) => (t = Symbol[e]) ? t : Symbol.for("Symbol." + e), _ = (e) => {
|
|
5
|
+
throw TypeError(e);
|
|
6
|
+
}, I = (e, t, o) => t in e ? x(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, $ = (e, t) => x(e, "name", { value: t, configurable: !0 }), z = (e) => [, , , E(e?.[y("metadata")] ?? null)], j = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], w = (e) => e !== void 0 && typeof e != "function" ? _("Function expected") : e, A = (e, t, o, n, r) => ({ kind: j[e], name: t, metadata: n, addInitializer: (i) => o._ ? _("Already initialized") : r.push(w(i || null)) }), M = (e, t) => I(t, y("metadata"), e[3]), O = (e, t, o, n) => {
|
|
7
|
+
for (var r = 0, i = e[t >> 1], c = i && i.length; r < c; r++) i[r].call(o);
|
|
8
|
+
return n;
|
|
9
|
+
}, k = (e, t, o, n, r, i) => {
|
|
10
|
+
var c, d, g, l = t & 7, b = !1, s = 0, u = e[s] || (e[s] = []), h = l && (r = r.prototype, l < 5 && (l > 3 || !b) && q(r, o));
|
|
11
|
+
$(r, o);
|
|
12
|
+
for (var p = n.length - 1; p >= 0; p--)
|
|
13
|
+
g = A(l, o, d = {}, e[3], u), c = (0, n[p])(r, g), d._ = 1, w(c) && (r = c);
|
|
14
|
+
return M(e, r), h && x(r, o, h), b ? l ^ 4 ? i : h : r;
|
|
15
|
+
}, S, f, P;
|
|
16
|
+
S = [T(
|
|
17
|
+
m.object({
|
|
18
|
+
toolboxAlwaysShow: m.boolean().description("Make the toolbox opened by default").default(!1)
|
|
19
|
+
}).description("Toolbox preferences")
|
|
20
|
+
), C(["preferences"])];
|
|
21
|
+
class v extends (P = D) {
|
|
22
|
+
constructor(t) {
|
|
23
|
+
super(t, "toolbox", !1), this.ctx = t, this.container = void 0;
|
|
24
|
+
}
|
|
25
|
+
async start() {
|
|
26
|
+
this.container = this.createToolbox(), this.ctx.preferences.get("toolboxAlwaysShow").then((t) => {
|
|
27
|
+
t && this.container.classList.add("is-persistent");
|
|
28
|
+
}), this.setupHoverLogic(), document.body.appendChild(this.container), this.updateButtonDelays();
|
|
29
|
+
}
|
|
30
|
+
stop() {
|
|
31
|
+
this.container?.remove();
|
|
32
|
+
}
|
|
33
|
+
get isPersistent() {
|
|
34
|
+
return this.container.classList.contains("is-persistent");
|
|
35
|
+
}
|
|
36
|
+
setupHoverLogic() {
|
|
37
|
+
let t = null;
|
|
38
|
+
this.container.addEventListener("mouseenter", () => {
|
|
39
|
+
t && (clearTimeout(t), t = null), this.isPersistent || this.container.classList.add("is-hovered");
|
|
40
|
+
}), this.container.addEventListener("mouseleave", () => {
|
|
41
|
+
this.isPersistent || (t = window.setTimeout(() => {
|
|
42
|
+
this.container.classList.remove("is-hovered");
|
|
43
|
+
}, 150));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 计算按钮动画延迟
|
|
48
|
+
* @param index 按钮索引(从0开始)
|
|
49
|
+
* @param totalCount 总按钮数量
|
|
50
|
+
* @returns 延迟时间(秒)
|
|
51
|
+
*/
|
|
52
|
+
calculateButtonDelay(t, o) {
|
|
53
|
+
if (o <= 1) return 0;
|
|
54
|
+
const n = 0.15, r = t / (o - 1), i = n * Math.sqrt(r);
|
|
55
|
+
return Math.round(i * 1e3) / 1e3;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 更新按钮组的动画延迟
|
|
59
|
+
*/
|
|
60
|
+
updateButtonDelays() {
|
|
61
|
+
this.container.querySelectorAll(".btn-group").forEach((o) => {
|
|
62
|
+
const n = o.querySelectorAll(".btn-tip-group"), r = n.length;
|
|
63
|
+
n.forEach((i, c) => {
|
|
64
|
+
const d = this.calculateButtonDelay(c, r);
|
|
65
|
+
i.style.setProperty("--transition-delay", `${d}s`), i.style.setProperty("--max-transition-delay", "0.15s");
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
createToolbox() {
|
|
70
|
+
return /* @__PURE__ */ a("div", { id: "ipe-edit-toolbox", children: [
|
|
71
|
+
/* @__PURE__ */ a("ul", { className: "btn-group group1", style: { display: "flex", flexDirection: "column" } }),
|
|
72
|
+
/* @__PURE__ */ a("ul", { className: "btn-group group2", style: { display: "flex", flexDirection: "row" } }),
|
|
73
|
+
/* @__PURE__ */ a(
|
|
74
|
+
"button",
|
|
75
|
+
{
|
|
76
|
+
className: "ipe-toolbox-btn",
|
|
77
|
+
id: "toolbox-toggler",
|
|
78
|
+
onClick: () => {
|
|
79
|
+
this.toggle();
|
|
80
|
+
},
|
|
81
|
+
children: /* @__PURE__ */ a("svg", { xmlns: "http://www.w3.org/2000/svg", width: "448", height: "512", viewBox: "0 0 448 512", children: [
|
|
82
|
+
/* @__PURE__ */ a("rect", { width: "448", height: "512", fill: "none" }),
|
|
83
|
+
/* @__PURE__ */ a(
|
|
84
|
+
"path",
|
|
85
|
+
{
|
|
86
|
+
fill: "currentColor",
|
|
87
|
+
d: "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32"
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] })
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
] });
|
|
94
|
+
}
|
|
95
|
+
normalizeButtonId(t) {
|
|
96
|
+
return t || (t = Math.random().toString(36).substring(2, 8)), `ipe-toolbox__${t.trim()}`.replace(/\s\.#/g, "-");
|
|
97
|
+
}
|
|
98
|
+
addButton(t) {
|
|
99
|
+
let { id: o, group: n, icon: r, tooltip: i, itemProps: c, buttonProps: d, onClick: g, index: l } = t;
|
|
100
|
+
o = this.normalizeButtonId(o);
|
|
101
|
+
const b = this.container.querySelector(`#${o}`);
|
|
102
|
+
b && (this.ctx.logger("toolbox").warn(`Button with id ${o} already exists, replacing it.`), b.remove());
|
|
103
|
+
let s = null;
|
|
104
|
+
if (typeof n > "u" || n === "auto") {
|
|
105
|
+
const h = this.container.querySelector(".btn-group.group1"), p = this.container.querySelector(".btn-group.group2"), B = h?.children.length || 0, L = p?.children.length || 0;
|
|
106
|
+
s = B <= L ? h : p;
|
|
107
|
+
} else
|
|
108
|
+
s = this.container.querySelector(`.btn-group.${n}`);
|
|
109
|
+
if (!s) throw new Error(`Button group ${n} not found`);
|
|
110
|
+
const u = /* @__PURE__ */ a("li", { class: "btn-tip-group", id: o, onClick: g, ...c, children: [
|
|
111
|
+
/* @__PURE__ */ a("div", { class: "btn-tip", children: i }),
|
|
112
|
+
/* @__PURE__ */ a("button", { id: `${o}-btn`, class: "ipe-toolbox-btn", ...d, children: r })
|
|
113
|
+
] });
|
|
114
|
+
return typeof l == "number" ? l <= 0 ? s.prepend(u) : l >= s.children.length ? s.appendChild(u) : s.children[l]?.before(u) : s.appendChild(u), this.ctx.emit("toolbox/button-added", {
|
|
115
|
+
ctx: this.ctx,
|
|
116
|
+
button: u
|
|
117
|
+
}), this.updateButtonDelays(), u;
|
|
118
|
+
}
|
|
119
|
+
removeButton(t) {
|
|
120
|
+
this.container.querySelector(`.ipe-toolbox-btn#${t}`)?.remove(), this.ctx.emit("toolbox/button-removed", { ctx: this.ctx, id: t }), this.updateButtonDelays();
|
|
121
|
+
}
|
|
122
|
+
getContainer() {
|
|
123
|
+
return this.container;
|
|
124
|
+
}
|
|
125
|
+
get isOpened() {
|
|
126
|
+
return this.container.classList.contains("is-persistent") || this.container.classList.contains("is-hovered");
|
|
127
|
+
}
|
|
128
|
+
toggle(t) {
|
|
129
|
+
const o = this.isPersistent, n = typeof t == "boolean" ? t : !o;
|
|
130
|
+
this.container.classList.toggle("is-persistent", n), this.container.classList.remove("is-hovered"), this.ctx.preferences.set("toolboxAlwaysShow", n);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
f = z(P);
|
|
134
|
+
v = k(f, 0, "PluginToolbox", S, v);
|
|
135
|
+
O(f, 1, v);
|
|
136
|
+
export {
|
|
137
|
+
v as PluginToolbox
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=index-DBV8FBjA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DBV8FBjA.js","sources":["../src/plugins/toolbox/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema, Service } from '@/InPageEdit'\nimport { JSX, ReactElement } from 'jsx-dom'\nimport './styles.scss'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n toolbox: PluginToolbox\n }\n interface Events {\n 'toolbox/button-added'(payload: { ctx: InPageEdit; button: HTMLElement }): void\n 'toolbox/button-removed'(payload: { ctx: InPageEdit; id: string }): void\n }\n}\n\n@RegisterPreferences(\n Schema.object({\n toolboxAlwaysShow: Schema.boolean()\n .description('Make the toolbox opened by default')\n .default(false),\n }).description('Toolbox preferences')\n)\n@Inject(['preferences'])\nexport class PluginToolbox extends Service {\n container!: HTMLElement\n\n constructor(public ctx: InPageEdit) {\n super(ctx, 'toolbox', false)\n }\n\n protected async start(): Promise<void> {\n this.container = this.createToolbox()\n this.ctx.preferences.get('toolboxAlwaysShow').then((val) => {\n if (val) {\n this.container.classList.add('is-persistent')\n }\n })\n this.setupHoverLogic()\n document.body.appendChild(this.container)\n\n // 初始化时更新按钮延迟\n this.updateButtonDelays()\n }\n\n protected stop(): void | Promise<void> {\n this.container?.remove()\n }\n\n private get isPersistent() {\n return this.container.classList.contains('is-persistent')\n }\n\n private setupHoverLogic() {\n let hoverTimeout: number | null = null\n\n // 鼠标进入时暂时展开\n this.container.addEventListener('mouseenter', () => {\n if (hoverTimeout) {\n clearTimeout(hoverTimeout)\n hoverTimeout = null\n }\n\n // 如果不在持久化状态,则添加hover展开效果\n if (!this.isPersistent) {\n this.container.classList.add('is-hovered')\n }\n })\n\n // 鼠标离开时收起(如果不是持久化状态)\n this.container.addEventListener('mouseleave', () => {\n if (!this.isPersistent) {\n hoverTimeout = window.setTimeout(() => {\n this.container.classList.remove('is-hovered')\n }, 150) // 延迟150ms收起,避免快速移动鼠标时闪烁\n }\n })\n }\n\n /**\n * 计算按钮动画延迟\n * @param index 按钮索引(从0开始)\n * @param totalCount 总按钮数量\n * @returns 延迟时间(秒)\n */\n private calculateButtonDelay(index: number, totalCount: number): number {\n if (totalCount <= 1) return 0\n\n // 总动画时长150ms = 0.15s\n const totalDuration = 0.15\n // 使用平方根函数创建非线性延迟,差值逐渐缩小\n const normalizedIndex = index / (totalCount - 1)\n const delay = totalDuration * Math.sqrt(normalizedIndex)\n\n return Math.round(delay * 1000) / 1000 // 保留3位小数\n }\n\n /**\n * 更新按钮组的动画延迟\n */\n private updateButtonDelays() {\n const btnGroups = this.container.querySelectorAll('.btn-group')\n\n btnGroups.forEach((group) => {\n const buttons = group.querySelectorAll('.btn-tip-group')\n const totalCount = buttons.length\n\n buttons.forEach((button, index) => {\n const delay = this.calculateButtonDelay(index, totalCount)\n ;(button as HTMLElement).style.setProperty('--transition-delay', `${delay}s`)\n ;(button as HTMLElement).style.setProperty('--max-transition-delay', '0.15s')\n })\n })\n }\n\n private createToolbox() {\n const toggler = (\n <button\n className=\"ipe-toolbox-btn\"\n id=\"toolbox-toggler\"\n onClick={() => {\n this.toggle()\n }}\n >\n {/* Font Awesome 5 Solid: Plus */}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"448\" height=\"512\" viewBox=\"0 0 448 512\">\n <rect width=\"448\" height=\"512\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32\"\n />\n </svg>\n </button>\n )\n const element = (\n <div id=\"ipe-edit-toolbox\">\n <ul className=\"btn-group group1\" style={{ display: 'flex', flexDirection: 'column' }}></ul>\n <ul className=\"btn-group group2\" style={{ display: 'flex', flexDirection: 'row' }}></ul>\n {toggler}\n </div>\n )\n\n return element as HTMLElement\n }\n\n private normalizeButtonId(id: string) {\n if (!id) {\n id = Math.random().toString(36).substring(2, 8)\n }\n return `ipe-toolbox__${id.trim()}`.replace(/\\s\\.#/g, '-')\n }\n\n addButton(payload: {\n id: string\n group?: 'auto' | 'group1' | 'group2'\n icon: string | HTMLElement | SVGElement | ReactElement\n tooltip?: string | HTMLElement\n itemProps?: JSX.IntrinsicElements['li']\n buttonProps?: JSX.IntrinsicElements['button']\n onClick?: (event: MouseEvent) => void\n index?: number\n }) {\n let { id, group, icon, tooltip, itemProps, buttonProps, onClick, index } = payload\n id = this.normalizeButtonId(id)\n\n const existingButton = this.container.querySelector(`#${id}`)\n if (existingButton) {\n this.ctx.logger('toolbox').warn(`Button with id ${id} already exists, replacing it.`)\n existingButton.remove()\n }\n\n let groupEl: HTMLElement | null = null\n if (typeof group === 'undefined' || group === 'auto') {\n // 选择按钮最少的那一组,一样多就选第一组\n const group1 = this.container.querySelector('.btn-group.group1') as HTMLElement\n const group2 = this.container.querySelector('.btn-group.group2') as HTMLElement\n const group1Count = group1?.children.length || 0\n const group2Count = group2?.children.length || 0\n groupEl = group1Count <= group2Count ? group1 : group2\n } else {\n groupEl = this.container.querySelector(`.btn-group.${group}`)\n }\n if (!groupEl) throw new Error(`Button group ${group} not found`)\n\n const button = (\n <li class=\"btn-tip-group\" id={id} onClick={onClick} {...itemProps}>\n <div class=\"btn-tip\">{tooltip}</div>\n <button id={`${id}-btn`} class=\"ipe-toolbox-btn\" {...buttonProps}>\n {icon}\n </button>\n </li>\n )\n\n if (typeof index === 'number') {\n if (index <= 0) {\n groupEl.prepend(button)\n } else if (index >= groupEl.children.length) {\n groupEl.appendChild(button)\n } else {\n groupEl.children[index]?.before(button)\n }\n } else {\n groupEl.appendChild(button)\n }\n\n this.ctx.emit('toolbox/button-added', {\n ctx: this.ctx,\n button: button as HTMLElement,\n })\n\n // 更新按钮延迟\n this.updateButtonDelays()\n\n return button as HTMLElement\n }\n\n removeButton(id: string) {\n const button = this.container.querySelector(`.ipe-toolbox-btn#${id}`)\n button?.remove()\n this.ctx.emit('toolbox/button-removed', { ctx: this.ctx, id })\n\n // 更新按钮延迟\n this.updateButtonDelays()\n }\n\n getContainer() {\n return this.container\n }\n\n get isOpened() {\n return (\n this.container.classList.contains('is-persistent') ||\n this.container.classList.contains('is-hovered')\n )\n }\n\n toggle(force?: boolean) {\n const isPersistent = this.isPersistent\n const newPersistent = typeof force === 'boolean' ? force : !isPersistent\n this.container.classList.toggle('is-persistent', newPersistent)\n this.container.classList.remove('is-hovered')\n this.ctx.preferences.set('toolboxAlwaysShow', newPersistent)\n }\n}\n"],"names":["_PluginToolbox_decorators","_init","_a","RegisterPreferences","Schema","Inject","PluginToolbox","Service","ctx","val","hoverTimeout","index","totalCount","totalDuration","normalizedIndex","delay","group","buttons","button","jsxs","jsx","id","payload","icon","tooltip","itemProps","buttonProps","onClick","existingButton","groupEl","group1","group2","group1Count","group2Count","force","isPersistent","newPersistent","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as s } from "./index-CvhkVj_L.js";
|
|
2
|
-
import { B as I, S as b, a as v, I as S } from "./index-
|
|
2
|
+
import { B as I, S as b, a as v, I as S } from "./index-COlXHFRg.js";
|
|
3
3
|
import { A as w } from "./ActionButton-BgbTKTg7.js";
|
|
4
4
|
const O = (r) => typeof r == "function";
|
|
5
5
|
async function j(r) {
|
|
@@ -87,7 +87,7 @@ class u extends (D = I) {
|
|
|
87
87
|
}).description(""),
|
|
88
88
|
"about",
|
|
89
89
|
{}
|
|
90
|
-
), import("./index-
|
|
90
|
+
), import("./index-mntCdHRr.js").then((e) => {
|
|
91
91
|
const t = this.ctx.plugin(e.PluginPreferencesUI);
|
|
92
92
|
this.addDisposeHandler(() => {
|
|
93
93
|
t.dispose();
|
|
@@ -168,4 +168,4 @@ k(f, 1, u);
|
|
|
168
168
|
export {
|
|
169
169
|
u as PluginPreferences
|
|
170
170
|
};
|
|
171
|
-
//# sourceMappingURL=index-
|
|
171
|
+
//# sourceMappingURL=index-DwyuBkCK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-2AEdgbUL.js","sources":["../src/utils/computeable.ts","../src/plugins/preferences/index.tsx"],"sourcesContent":["export type ComputeAble<T> = (() => T | Promise<T>) | T\nconst isFunction = (value: any): value is Function => typeof value === 'function'\nexport async function computeFallback<T>(value: ComputeAble<T>): Promise<T> {\n if (isFunction(value)) {\n return await value()\n } else {\n return value\n }\n}\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit.js'\nimport { IPEStorageItem, IPEStorageManager } from '@/services/StorageService.js'\nimport { computeFallback, ComputeAble } from '@/utils/computeable.js'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferences: PluginPreferences\n }\n}\n\nexport interface InPageEditPreferenceUICategory {\n name: string\n label: string\n description?: string\n index?: number\n}\n\nexport interface InPageEditPreferenceUIRegistryItem {\n name: string\n schema: Schema\n defaults: Record<string, any>\n category: string\n}\n\n@Inject(['storage'])\nexport class PluginPreferences extends BasePlugin {\n private db: IPEStorageManager<any>\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\n private _defaultPreferences: Record<string, any> = {}\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'preferences')\n this.db = ctx.storage.createDatabse<any>('preferences', Infinity)\n this.ctx.set('preferences', this)\n }\n\n async start() {\n this.defineCategory({\n name: 'general',\n label: 'General',\n description: 'General settings',\n })\n this.defineCategory({\n name: 'edit',\n label: 'Editing',\n description: 'Settings related to editing content',\n })\n this.defineCategory({\n name: 'about',\n label: 'About',\n description: 'About InPageEdit',\n index: 99,\n })\n\n this.registerCustomConfig(\n 'about',\n Schema.object({\n about: Schema.const(\n <div className=\"prose\">\n <h2>✏️ InPageEdit NEXT</h2>\n <i>v{this.ctx.version}</i>\n <h2>Portals</h2>\n <div style=\"display: flex; flex-direction: column; gap: 1rem\">\n <a\n href={this.ctx.Endpoints.HOME_URL}\n target=\"_blank\"\n style={{ display: 'block', width: '100%' }}\n >\n Official Website & Help Center\n </a>\n <ActionButton\n href={`${this.ctx.Endpoints.UPDATE_LOGS_URL}#${this.ctx.version}`}\n style={{ display: 'block', width: '100%' }}\n >\n Update Logs\n </ActionButton>\n </div>\n <h2>Join us</h2>\n <ul>\n <li>\n <strong>GitHub</strong>:{' '}\n <a href={this.ctx.Endpoints.GITHUB_URL} target=\"_blank\">\n inpageedit/inpageedit-next\n </a>\n </li>\n <li>\n <strong>QQ Group</strong>: 1026023666\n </li>\n </ul>\n <hr />\n <p>🚀 Modular, Extensible Supercharged Plugin for MediaWiki.</p>\n <p>InPageEdit-NEXT Copyright © 2025-present dragon-fish</p>\n </div>\n ).role('raw-html'),\n }).description(''),\n 'about',\n {}\n )\n\n import('./ui/index').then((module) => {\n const fork = this.ctx.plugin(module.PluginPreferencesUI)\n this.addDisposeHandler(() => {\n fork.dispose()\n })\n })\n }\n\n async get<T = any>(key: string, fallback?: ComputeAble<T>): Promise<T | null> {\n fallback ??= () => {\n const defaultValue = this.getDefaultValue(key)\n this.logger.debug(key, `(fallback value: ${defaultValue})`)\n return defaultValue as T\n }\n const value = (await this.db.get(key, undefined)) as T | null\n return value !== null ? value : ((await computeFallback(fallback)) as T)\n }\n\n getDefaultValue(key: string): unknown {\n return (this._defaultPreferences[key] ??= this.loadDefaultConfigs()[key])\n }\n\n set<T = any>(key: string, value: T): Promise<IPEStorageItem<T> | void> {\n const defaultValue = this.getDefaultValue(key)\n if (value === defaultValue) {\n return this.db.delete(key)\n } else {\n return this.db.set(key, value)\n }\n }\n\n async getAll() {\n const data = this.loadDefaultConfigs()\n await this.db.iterate((value: IPEStorageItem, key: string) => {\n data[key] = value\n })\n return data\n }\n\n private loadDefaultConfigs() {\n const data = {} as Record<string, any>\n this.getConfigRegistries().forEach((item) => {\n // 首先读取 schema 上的默认值\n try {\n const defaultValues = item.schema({}) as any\n Object.entries(defaultValues).forEach(([key, val]) => {\n data[key] = val\n })\n } catch {}\n\n // 然后读取注册时定义的默认值\n item.defaults &&\n Object.entries(item.defaults).forEach(([key, val]) => {\n data[key] = val\n })\n })\n\n Object.entries(data).forEach(([key, val]) => {\n this._defaultPreferences[key] = val\n })\n\n return data\n }\n\n registerCustomConfig(\n name: string,\n schema: Schema,\n category: string,\n defaults: Record<string, any>\n ) {\n this.customRegistries.push({\n name,\n schema,\n category,\n defaults,\n })\n return this\n }\n\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\n return Array.from(this.ctx.registry.entries())\n .map<{\n name: string\n schema: Schema\n defaults: Record<string, any>\n }>(([plugin, fork]) => {\n if (plugin === null) {\n return {\n name: '@root',\n schema: (InPageEdit as any)?.PreferencesSchema || null,\n defaults: (InPageEdit as any)?.PreferencesDefaults || {},\n }\n } else {\n return {\n name: plugin.name,\n schema: (plugin as any)?.PreferencesSchema || null,\n defaults: (plugin as any)?.PreferencesDefaults || {},\n }\n }\n })\n .filter((item) => item.schema !== null)\n .map((item) => {\n return {\n ...item,\n category: item.schema.meta.category || 'general',\n }\n })\n .concat(this.customRegistries)\n .filter((item) => !category || item.category === category)\n }\n\n defineCategory(category: InPageEditPreferenceUICategory) {\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\n if (index < 0) {\n this.categoryDefinitions.push(category)\n } else {\n this.categoryDefinitions[index] = category\n }\n this.categoryDefinitions.sort((a, b) => {\n return (a.index ?? 0) - (b.index ?? 0)\n })\n return this\n }\n\n getConfigCategories() {\n return this.categoryDefinitions\n }\n}\n"],"names":["isFunction","value","computeFallback","_PluginPreferences_decorators","_init","_a","Inject","PluginPreferences","BasePlugin","ctx","Schema","jsxs","jsx","ActionButton","module","fork","key","fallback","defaultValue","data","item","defaultValues","val","name","schema","category","defaults","plugin","InPageEdit","index","tab","a","b","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-DwyuBkCK.js","sources":["../src/utils/computeable.ts","../src/plugins/preferences/index.tsx"],"sourcesContent":["export type ComputeAble<T> = (() => T | Promise<T>) | T\nconst isFunction = (value: any): value is Function => typeof value === 'function'\nexport async function computeFallback<T>(value: ComputeAble<T>): Promise<T> {\n if (isFunction(value)) {\n return await value()\n } else {\n return value\n }\n}\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit.js'\nimport { IPEStorageItem, IPEStorageManager } from '@/services/StorageService.js'\nimport { computeFallback, ComputeAble } from '@/utils/computeable.js'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferences: PluginPreferences\n }\n}\n\nexport interface InPageEditPreferenceUICategory {\n name: string\n label: string\n description?: string\n index?: number\n}\n\nexport interface InPageEditPreferenceUIRegistryItem {\n name: string\n schema: Schema\n defaults: Record<string, any>\n category: string\n}\n\n@Inject(['storage'])\nexport class PluginPreferences extends BasePlugin {\n private db: IPEStorageManager<any>\n public customRegistries: InPageEditPreferenceUIRegistryItem[] = []\n public categoryDefinitions: InPageEditPreferenceUICategory[] = []\n private _defaultPreferences: Record<string, any> = {}\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'preferences')\n this.db = ctx.storage.createDatabse<any>('preferences', Infinity)\n this.ctx.set('preferences', this)\n }\n\n async start() {\n this.defineCategory({\n name: 'general',\n label: 'General',\n description: 'General settings',\n })\n this.defineCategory({\n name: 'edit',\n label: 'Editing',\n description: 'Settings related to editing content',\n })\n this.defineCategory({\n name: 'about',\n label: 'About',\n description: 'About InPageEdit',\n index: 99,\n })\n\n this.registerCustomConfig(\n 'about',\n Schema.object({\n about: Schema.const(\n <div className=\"prose\">\n <h2>✏️ InPageEdit NEXT</h2>\n <i>v{this.ctx.version}</i>\n <h2>Portals</h2>\n <div style=\"display: flex; flex-direction: column; gap: 1rem\">\n <a\n href={this.ctx.Endpoints.HOME_URL}\n target=\"_blank\"\n style={{ display: 'block', width: '100%' }}\n >\n Official Website & Help Center\n </a>\n <ActionButton\n href={`${this.ctx.Endpoints.UPDATE_LOGS_URL}#${this.ctx.version}`}\n style={{ display: 'block', width: '100%' }}\n >\n Update Logs\n </ActionButton>\n </div>\n <h2>Join us</h2>\n <ul>\n <li>\n <strong>GitHub</strong>:{' '}\n <a href={this.ctx.Endpoints.GITHUB_URL} target=\"_blank\">\n inpageedit/inpageedit-next\n </a>\n </li>\n <li>\n <strong>QQ Group</strong>: 1026023666\n </li>\n </ul>\n <hr />\n <p>🚀 Modular, Extensible Supercharged Plugin for MediaWiki.</p>\n <p>InPageEdit-NEXT Copyright © 2025-present dragon-fish</p>\n </div>\n ).role('raw-html'),\n }).description(''),\n 'about',\n {}\n )\n\n import('./ui/index').then((module) => {\n const fork = this.ctx.plugin(module.PluginPreferencesUI)\n this.addDisposeHandler(() => {\n fork.dispose()\n })\n })\n }\n\n async get<T = any>(key: string, fallback?: ComputeAble<T>): Promise<T | null> {\n fallback ??= () => {\n const defaultValue = this.getDefaultValue(key)\n this.logger.debug(key, `(fallback value: ${defaultValue})`)\n return defaultValue as T\n }\n const value = (await this.db.get(key, undefined)) as T | null\n return value !== null ? value : ((await computeFallback(fallback)) as T)\n }\n\n getDefaultValue(key: string): unknown {\n return (this._defaultPreferences[key] ??= this.loadDefaultConfigs()[key])\n }\n\n set<T = any>(key: string, value: T): Promise<IPEStorageItem<T> | void> {\n const defaultValue = this.getDefaultValue(key)\n if (value === defaultValue) {\n return this.db.delete(key)\n } else {\n return this.db.set(key, value)\n }\n }\n\n async getAll() {\n const data = this.loadDefaultConfigs()\n await this.db.iterate((value: IPEStorageItem, key: string) => {\n data[key] = value\n })\n return data\n }\n\n private loadDefaultConfigs() {\n const data = {} as Record<string, any>\n this.getConfigRegistries().forEach((item) => {\n // 首先读取 schema 上的默认值\n try {\n const defaultValues = item.schema({}) as any\n Object.entries(defaultValues).forEach(([key, val]) => {\n data[key] = val\n })\n } catch {}\n\n // 然后读取注册时定义的默认值\n item.defaults &&\n Object.entries(item.defaults).forEach(([key, val]) => {\n data[key] = val\n })\n })\n\n Object.entries(data).forEach(([key, val]) => {\n this._defaultPreferences[key] = val\n })\n\n return data\n }\n\n registerCustomConfig(\n name: string,\n schema: Schema,\n category: string,\n defaults: Record<string, any>\n ) {\n this.customRegistries.push({\n name,\n schema,\n category,\n defaults,\n })\n return this\n }\n\n getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[] {\n return Array.from(this.ctx.registry.entries())\n .map<{\n name: string\n schema: Schema\n defaults: Record<string, any>\n }>(([plugin, fork]) => {\n if (plugin === null) {\n return {\n name: '@root',\n schema: (InPageEdit as any)?.PreferencesSchema || null,\n defaults: (InPageEdit as any)?.PreferencesDefaults || {},\n }\n } else {\n return {\n name: plugin.name,\n schema: (plugin as any)?.PreferencesSchema || null,\n defaults: (plugin as any)?.PreferencesDefaults || {},\n }\n }\n })\n .filter((item) => item.schema !== null)\n .map((item) => {\n return {\n ...item,\n category: item.schema.meta.category || 'general',\n }\n })\n .concat(this.customRegistries)\n .filter((item) => !category || item.category === category)\n }\n\n defineCategory(category: InPageEditPreferenceUICategory) {\n const index = this.categoryDefinitions.findIndex((tab) => tab.name === category.name)\n if (index < 0) {\n this.categoryDefinitions.push(category)\n } else {\n this.categoryDefinitions[index] = category\n }\n this.categoryDefinitions.sort((a, b) => {\n return (a.index ?? 0) - (b.index ?? 0)\n })\n return this\n }\n\n getConfigCategories() {\n return this.categoryDefinitions\n }\n}\n"],"names":["isFunction","value","computeFallback","_PluginPreferences_decorators","_init","_a","Inject","PluginPreferences","BasePlugin","ctx","Schema","jsxs","jsx","ActionButton","module","fork","key","fallback","defaultValue","data","item","defaultValues","val","name","schema","category","defaults","plugin","InPageEdit","index","tab","a","b","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { j as i, F as
|
|
2
|
-
import { B as S, I as
|
|
3
|
-
import { m as
|
|
4
|
-
import { R as
|
|
5
|
-
import { M as
|
|
1
|
+
import { j as i, F as m, P as N } from "./index-CvhkVj_L.js";
|
|
2
|
+
import { B as S, I as R, S as w } from "./index-COlXHFRg.js";
|
|
3
|
+
import { m as q } from "./makeCallable-LDU0xZMJ.js";
|
|
4
|
+
import { R as C } from "./Preferences-Bg3J5Ur9.js";
|
|
5
|
+
import { M as k } from "./index-lZkYoUca.js";
|
|
6
6
|
import { I as E } from "./InputBox-BV4m05Xs.js";
|
|
7
7
|
import { n as y } from "./noop-ClDc6zv4.js";
|
|
8
|
-
var B = Object.create, x = Object.defineProperty, F = Object.getOwnPropertyDescriptor,
|
|
8
|
+
var B = Object.create, x = Object.defineProperty, F = Object.getOwnPropertyDescriptor, _ = (o, e) => (e = Symbol[o]) ? e : Symbol.for("Symbol." + o), b = (o) => {
|
|
9
9
|
throw TypeError(o);
|
|
10
|
-
}, M = (o, e, s) => e in o ? x(o, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : o[e] = s, j = (o, e) => x(o, "name", { value: e, configurable: !0 }), O = (o) => [, , , B(o?.[
|
|
11
|
-
for (var t = 0,
|
|
12
|
-
return
|
|
13
|
-
}, U = (o, e, s,
|
|
14
|
-
var
|
|
10
|
+
}, M = (o, e, s) => e in o ? x(o, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : o[e] = s, j = (o, e) => x(o, "name", { value: e, configurable: !0 }), O = (o) => [, , , B(o?.[_("metadata")] ?? null)], L = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], P = (o) => o !== void 0 && typeof o != "function" ? b("Function expected") : o, Q = (o, e, s, n, t) => ({ kind: L[o], name: e, metadata: n, addInitializer: (r) => s._ ? b("Already initialized") : t.push(P(r || null)) }), z = (o, e) => M(e, _("metadata"), o[3]), A = (o, e, s, n) => {
|
|
11
|
+
for (var t = 0, r = o[e >> 1], c = r && r.length; t < c; t++) r[t].call(s);
|
|
12
|
+
return n;
|
|
13
|
+
}, U = (o, e, s, n, t, r) => {
|
|
14
|
+
var c, h, a, l = e & 7, g = !1, d = 0, T = o[d] || (o[d] = []), u = l && (t = t.prototype, l < 5 && (l > 3 || !g) && F(t, s));
|
|
15
15
|
j(t, s);
|
|
16
|
-
for (var p =
|
|
17
|
-
|
|
18
|
-
return z(o, t),
|
|
19
|
-
},
|
|
20
|
-
|
|
16
|
+
for (var p = n.length - 1; p >= 0; p--)
|
|
17
|
+
a = Q(l, s, h = {}, o[3], T), c = (0, n[p])(t, a), h._ = 1, P(c) && (t = c);
|
|
18
|
+
return z(o, t), u && x(t, s, u), g ? l ^ 4 ? r : u : t;
|
|
19
|
+
}, D, v, I;
|
|
20
|
+
D = [R(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences"]), C(
|
|
21
21
|
w.object({
|
|
22
22
|
deleteReason: w.string().description("Default delete reason for quick delete").default("[IPE-NEXT] Quick delete")
|
|
23
23
|
}).description("Quick delete options").extra("category", "delete")
|
|
24
24
|
)];
|
|
25
|
-
class
|
|
25
|
+
class f extends (I = S) {
|
|
26
26
|
constructor(e) {
|
|
27
27
|
super(e, {}, "quick-delete"), this.ctx = e, this.DEFAULT_OPTIONS = {
|
|
28
28
|
title: "",
|
|
@@ -30,7 +30,7 @@ class u extends (D = S) {
|
|
|
30
30
|
revision: 0,
|
|
31
31
|
deleteReason: "",
|
|
32
32
|
reloadAfterDelete: !0
|
|
33
|
-
}, this.ctx.root.set("quickDelete",
|
|
33
|
+
}, this.ctx.root.set("quickDelete", q(this, "showModal"));
|
|
34
34
|
}
|
|
35
35
|
start() {
|
|
36
36
|
this.ctx.inject(["toolbox"], (e) => {
|
|
@@ -45,31 +45,35 @@ class u extends (D = S) {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
async showModal(e) {
|
|
48
|
-
typeof e > "u" ? e = {} : typeof e == "string" && (e = {
|
|
48
|
+
if (typeof e > "u" ? e = {} : typeof e == "string" && (e = {
|
|
49
49
|
title: e
|
|
50
|
-
}), !e.title && !e.pageId && !e.revision
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
}), !e.title && !e.pageId && !e.revision) {
|
|
51
|
+
this.logger.warn("None of the title, pageId or revision provided. Using defaults.");
|
|
52
|
+
const a = new URLSearchParams(window.location.search), l = this.ctx.currentPage.wikiTitle;
|
|
53
|
+
e = {
|
|
54
|
+
...e,
|
|
55
|
+
title: l?.getPrefixedDBKey(),
|
|
56
|
+
revision: a.has("oldid") ? Number(a.get("oldid")) : void 0,
|
|
57
|
+
pageId: a.has("curid") ? Number(a.get("curid")) : void 0
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const s = typeof e.deleteReason == "string" ? e.deleteReason : await this.ctx.preferences.get("deleteReason"), n = {
|
|
57
61
|
...this.DEFAULT_OPTIONS,
|
|
58
62
|
deleteReason: s,
|
|
59
63
|
...e
|
|
60
64
|
};
|
|
61
|
-
|
|
65
|
+
n.deleteReason || (n.deleteReason = await this.ctx.preferences.get("deleteReason") || ""), n || this.ctx.emit("quick-delete/init-options", { ctx: this.ctx, options: n });
|
|
62
66
|
const t = this.ctx.modal.createObject({
|
|
63
67
|
className: "ipe-quickDelete",
|
|
64
68
|
sizeClass: "small",
|
|
65
69
|
center: !0
|
|
66
70
|
}).init();
|
|
67
71
|
t.setTitle(
|
|
68
|
-
/* @__PURE__ */ i(
|
|
72
|
+
/* @__PURE__ */ i(m, { children: [
|
|
69
73
|
"Loading: ",
|
|
70
|
-
/* @__PURE__ */ i("u", { children:
|
|
74
|
+
/* @__PURE__ */ i("u", { children: n.title })
|
|
71
75
|
] })
|
|
72
|
-
), t.setContent(/* @__PURE__ */ i(
|
|
76
|
+
), t.setContent(/* @__PURE__ */ i(N, {})), t.addButton({
|
|
73
77
|
side: "right",
|
|
74
78
|
type: "button",
|
|
75
79
|
className: "is-ghost",
|
|
@@ -77,39 +81,39 @@ class u extends (D = S) {
|
|
|
77
81
|
method() {
|
|
78
82
|
t.close();
|
|
79
83
|
}
|
|
80
|
-
}), t.show(), this.ctx.emit("quick-delete/show-modal", { ctx: this.ctx, modal: t, options:
|
|
81
|
-
let
|
|
84
|
+
}), t.show(), this.ctx.emit("quick-delete/show-modal", { ctx: this.ctx, modal: t, options: n });
|
|
85
|
+
let r;
|
|
82
86
|
try {
|
|
83
|
-
if (
|
|
87
|
+
if (r = await this.getWikiPageFromPayload(n), r.pageInfo.special)
|
|
84
88
|
throw new Error("Special page cannot be deleted");
|
|
85
|
-
if (
|
|
89
|
+
if (r.pageInfo.pageid === 0)
|
|
86
90
|
throw new Error("Page does not exist, cannot be deleted");
|
|
87
|
-
} catch (
|
|
91
|
+
} catch (a) {
|
|
88
92
|
t.off(t.Event.Close), t.close(), this.ctx.modal.notify("error", {
|
|
89
|
-
content:
|
|
93
|
+
content: a instanceof Error ? a.message : String(a)
|
|
90
94
|
});
|
|
91
95
|
return;
|
|
92
96
|
}
|
|
93
97
|
t.setTitle(
|
|
94
|
-
/* @__PURE__ */ i(
|
|
98
|
+
/* @__PURE__ */ i(m, { children: [
|
|
95
99
|
"Quick Delete: ",
|
|
96
|
-
/* @__PURE__ */ i("u", { children:
|
|
100
|
+
/* @__PURE__ */ i("u", { children: r.pageInfo.title })
|
|
97
101
|
] })
|
|
98
102
|
);
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
/* @__PURE__ */ i(
|
|
102
|
-
),
|
|
103
|
-
/* @__PURE__ */ i(
|
|
103
|
+
const c = [];
|
|
104
|
+
r.userCan("delete") || c.push(
|
|
105
|
+
/* @__PURE__ */ i(k, { title: "Permission Denied", type: "error", children: /* @__PURE__ */ i("p", { children: "You do not have permission to delete this page." }) })
|
|
106
|
+
), r.pageInfo.protection && r.pageInfo.protection.length > 0 && c.push(
|
|
107
|
+
/* @__PURE__ */ i(k, { title: "Warning", type: "warning", children: /* @__PURE__ */ i("p", { children: "This page is protected and may has special use or purpose. Delete it at your own risk." }) })
|
|
104
108
|
), this.ctx.emit("quick-delete/delete-notice", {
|
|
105
109
|
ctx: this.ctx,
|
|
106
|
-
options:
|
|
110
|
+
options: n,
|
|
107
111
|
modal: t,
|
|
108
|
-
wikiPage:
|
|
109
|
-
deleteNotices:
|
|
112
|
+
wikiPage: r,
|
|
113
|
+
deleteNotices: c
|
|
110
114
|
});
|
|
111
115
|
const h = /* @__PURE__ */ i("form", { className: "ipe-quickDelete__form", children: [
|
|
112
|
-
/* @__PURE__ */ i("div", { className: "ipe-quickDelete__notices", children:
|
|
116
|
+
/* @__PURE__ */ i("div", { className: "ipe-quickDelete__notices", children: c }),
|
|
113
117
|
/* @__PURE__ */ i("div", { className: "ipe-quickDelete__content", children: /* @__PURE__ */ i(
|
|
114
118
|
"div",
|
|
115
119
|
{
|
|
@@ -125,22 +129,22 @@ class u extends (D = S) {
|
|
|
125
129
|
/* @__PURE__ */ i("li", { children: [
|
|
126
130
|
/* @__PURE__ */ i("strong", { children: "Title:" }),
|
|
127
131
|
" ",
|
|
128
|
-
|
|
132
|
+
r.pageInfo.title
|
|
129
133
|
] }),
|
|
130
134
|
/* @__PURE__ */ i("li", { children: [
|
|
131
135
|
/* @__PURE__ */ i("strong", { children: "Page ID:" }),
|
|
132
136
|
" ",
|
|
133
|
-
|
|
137
|
+
r.pageInfo.pageid
|
|
134
138
|
] }),
|
|
135
139
|
/* @__PURE__ */ i("li", { children: [
|
|
136
140
|
/* @__PURE__ */ i("strong", { children: "Last Revision:" }),
|
|
137
141
|
" ",
|
|
138
|
-
|
|
142
|
+
r.pageInfo.lastrevid
|
|
139
143
|
] }),
|
|
140
144
|
/* @__PURE__ */ i("li", { children: [
|
|
141
145
|
/* @__PURE__ */ i("strong", { children: "Length:" }),
|
|
142
146
|
" ",
|
|
143
|
-
|
|
147
|
+
r.pageInfo.length,
|
|
144
148
|
" characters"
|
|
145
149
|
] })
|
|
146
150
|
] })
|
|
@@ -162,7 +166,7 @@ class u extends (D = S) {
|
|
|
162
166
|
label: "Delete Reason",
|
|
163
167
|
id: "reason",
|
|
164
168
|
name: "reason",
|
|
165
|
-
value:
|
|
169
|
+
value: n.deleteReason,
|
|
166
170
|
inputProps: {
|
|
167
171
|
placeholder: "Enter reason for deletion...",
|
|
168
172
|
required: !0
|
|
@@ -191,7 +195,7 @@ class u extends (D = S) {
|
|
|
191
195
|
{
|
|
192
196
|
className: "is-danger",
|
|
193
197
|
title: "Confirm Deletion",
|
|
194
|
-
content: /* @__PURE__ */ i(
|
|
198
|
+
content: /* @__PURE__ */ i(m, { children: /* @__PURE__ */ i("p", { children: /* @__PURE__ */ i("strong", { children: r.pageInfo.title }) }) }),
|
|
195
199
|
center: !0,
|
|
196
200
|
okBtn: {
|
|
197
201
|
label: "Delete it now",
|
|
@@ -203,14 +207,14 @@ class u extends (D = S) {
|
|
|
203
207
|
}
|
|
204
208
|
},
|
|
205
209
|
(g) => (g && (t.setLoadingState(!0), this.handleSubmit({
|
|
206
|
-
wikiPage:
|
|
210
|
+
wikiPage: r,
|
|
207
211
|
reason: l
|
|
208
212
|
}).then(async () => {
|
|
209
213
|
t.setOptions({
|
|
210
214
|
beforeClose: y
|
|
211
215
|
}), t.close(), this.ctx.modal.notify("success", {
|
|
212
216
|
title: "Deletion Successful",
|
|
213
|
-
content: `The page "${
|
|
217
|
+
content: `The page "${r.pageInfo.title}" has been deleted.`
|
|
214
218
|
});
|
|
215
219
|
}).catch((d) => {
|
|
216
220
|
this.ctx.modal.notify("error", {
|
|
@@ -224,14 +228,14 @@ class u extends (D = S) {
|
|
|
224
228
|
0
|
|
225
229
|
), this.ctx.emit("quick-delete/wiki-page", {
|
|
226
230
|
ctx: this.ctx,
|
|
227
|
-
options:
|
|
231
|
+
options: n,
|
|
228
232
|
modal: t,
|
|
229
|
-
wikiPage:
|
|
233
|
+
wikiPage: r
|
|
230
234
|
});
|
|
231
235
|
}
|
|
232
236
|
async handleSubmit(e) {
|
|
233
|
-
const s = e.wikiPage,
|
|
234
|
-
return s.delete(
|
|
237
|
+
const s = e.wikiPage, n = e.reason || "";
|
|
238
|
+
return s.delete(n);
|
|
235
239
|
}
|
|
236
240
|
async getWikiPageFromPayload(e) {
|
|
237
241
|
if (e.revision)
|
|
@@ -242,7 +246,8 @@ class u extends (D = S) {
|
|
|
242
246
|
return this.ctx.wikiPage.newFromTitle(e.title, !1);
|
|
243
247
|
throw new Error("Invalid payload");
|
|
244
248
|
}
|
|
245
|
-
injectToolbox(e) {
|
|
249
|
+
async injectToolbox(e) {
|
|
250
|
+
const s = this.ctx.currentPage.wikiTitle, n = s && this.ctx.wiki.hasRight("delete") && s.getNamespaceId() >= 0;
|
|
246
251
|
e.toolbox.addButton({
|
|
247
252
|
id: "quick-delete",
|
|
248
253
|
group: "group2",
|
|
@@ -269,15 +274,13 @@ class u extends (D = S) {
|
|
|
269
274
|
]
|
|
270
275
|
}
|
|
271
276
|
),
|
|
272
|
-
|
|
277
|
+
buttonProps: {
|
|
278
|
+
disabled: !n
|
|
279
|
+
},
|
|
280
|
+
tooltip: n ? "Quick Delete" : "Not deletable",
|
|
273
281
|
onClick: () => {
|
|
274
|
-
this.
|
|
275
|
-
title:
|
|
276
|
-
pageId: this.ctx.sitemeta.mwConfig.get("wgArticleId"),
|
|
277
|
-
revision: this.ctx.sitemeta.mwConfig.get("wgRevisionId")
|
|
278
|
-
}) : this.ctx.modal.notify("error", {
|
|
279
|
-
title: "Permission Denied",
|
|
280
|
-
content: "You do not have permission to delete pages."
|
|
282
|
+
this.showModal({
|
|
283
|
+
title: s?.getPrefixedText()
|
|
281
284
|
});
|
|
282
285
|
}
|
|
283
286
|
});
|
|
@@ -286,10 +289,10 @@ class u extends (D = S) {
|
|
|
286
289
|
e.toolbox.removeButton("quick-delete");
|
|
287
290
|
}
|
|
288
291
|
}
|
|
289
|
-
v = O(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
+
v = O(I);
|
|
293
|
+
f = U(v, 0, "PluginQuickDelete", D, f);
|
|
294
|
+
A(v, 1, f);
|
|
292
295
|
export {
|
|
293
|
-
|
|
296
|
+
f as PluginQuickDelete
|
|
294
297
|
};
|
|
295
|
-
//# sourceMappingURL=index-
|
|
298
|
+
//# sourceMappingURL=index-OBerV4GU.js.map
|