@inpageedit/core 0.14.5 → 0.16.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/{ActionButton-CRjo_l3y.js → ActionButton-B6OUgtHx.js} +2 -2
- package/dist/{ActionButton-CRjo_l3y.js.map → ActionButton-B6OUgtHx.js.map} +1 -1
- package/dist/CheckBox-Dx3r3LQz.js +13 -0
- package/dist/CheckBox-Dx3r3LQz.js.map +1 -0
- package/dist/IconQuickDiff-BkbxyY-d.js +29 -0
- package/dist/IconQuickDiff-BkbxyY-d.js.map +1 -0
- package/dist/IconQuickEdit-BiRYADU_.js +68 -0
- package/dist/IconQuickEdit-BiRYADU_.js.map +1 -0
- package/dist/IconUpload-Bz4BW_nc.js +27 -0
- package/dist/IconUpload-Bz4BW_nc.js.map +1 -0
- package/dist/InPageEdit.js +20 -0
- package/dist/InPageEdit.js.map +1 -0
- package/dist/InputBox-D2ZRTMFP.js +42 -0
- package/dist/InputBox-D2ZRTMFP.js.map +1 -0
- package/dist/PluginImagesUsed-BVyvFA1_.js +90 -0
- package/dist/PluginImagesUsed-BVyvFA1_.js.map +1 -0
- package/dist/{PluginPrefSync-CbFuuC19.js → PluginPrefSync-CUKkx4Qk.js} +11 -11
- package/dist/{PluginPrefSync-CbFuuC19.js.map → PluginPrefSync-CUKkx4Qk.js.map} +1 -1
- package/dist/{PluginStoreApp-MbC3G9tu.js → PluginStoreApp-CoOAw1fr.js} +4 -4
- package/dist/{PluginStoreApp-MbC3G9tu.js.map → PluginStoreApp-CoOAw1fr.js.map} +1 -1
- package/dist/PluginTemplatesUsed-CdjT1wR4.js +76 -0
- package/dist/PluginTemplatesUsed-CdjT1wR4.js.map +1 -0
- package/dist/{index-CM_6yF2v.js → Promise.withResolvers-C4chhLB1.js} +17 -11
- package/dist/Promise.withResolvers-C4chhLB1.js.map +1 -0
- package/dist/{RadioBox-0UuxlcWZ.js → RadioBox-B0z9YHQg.js} +2 -2
- package/dist/{RadioBox-0UuxlcWZ.js.map → RadioBox-B0z9YHQg.js.map} +1 -1
- package/dist/components/index.js +75 -46
- package/dist/components/index.js.map +1 -1
- package/dist/{BasePlugin-DD7l-5Xw.js → core.js} +28 -10
- package/dist/core.js.map +1 -0
- package/dist/{index-De25v1_Q.js → index-1tsXE6ax.js} +11 -10
- package/dist/index-1tsXE6ax.js.map +1 -0
- package/dist/{index-WfXtYVMt.js → index-B32tFyLB.js} +132 -100
- package/dist/index-B32tFyLB.js.map +1 -0
- package/dist/index-BPTMltVf.js +170 -0
- package/dist/index-BPTMltVf.js.map +1 -0
- package/dist/{index-DKCZDN-Q.js → index-BYlcHc-O.js} +23 -25
- package/dist/index-BYlcHc-O.js.map +1 -0
- package/dist/{index-CnR6CqkM.js → index-C4qm_X_A.js} +11 -11
- package/dist/{index-CnR6CqkM.js.map → index-C4qm_X_A.js.map} +1 -1
- package/dist/index-CAtPo7xJ.js +793 -0
- package/dist/index-CAtPo7xJ.js.map +1 -0
- package/dist/{index-DensW9qt.js → index-CVCy0wPP.js} +9 -8
- package/dist/index-CVCy0wPP.js.map +1 -0
- package/dist/index-CYfkwXRf.js +1631 -0
- package/dist/index-CYfkwXRf.js.map +1 -0
- package/dist/index-DZa9mxN4.js +168 -0
- package/dist/index-DZa9mxN4.js.map +1 -0
- package/dist/{index-BpQ6VGMz.js → index-Dm2vgYkZ.js} +89 -67
- package/dist/index-Dm2vgYkZ.js.map +1 -0
- package/dist/{index-BanevHQ2.js → index-NWWeW3tX.js} +87 -84
- package/dist/index-NWWeW3tX.js.map +1 -0
- package/dist/index-QnWieXQc.js +4932 -0
- package/dist/index-QnWieXQc.js.map +1 -0
- package/dist/{index-B3jld2sl.js → index-bQ0CVu3l.js} +13 -17
- package/dist/{index-B3jld2sl.js.map → index-bQ0CVu3l.js.map} +1 -1
- package/dist/index-ygc4AMy4.js +44 -0
- package/dist/index-ygc4AMy4.js.map +1 -0
- package/dist/{index-DD5CVCfD.js → index-z_qDGCMT.js} +2 -2
- package/dist/{index-DD5CVCfD.js.map → index-z_qDGCMT.js.map} +1 -1
- package/dist/index.d.ts +411 -163
- package/dist/index.js +24 -26
- package/dist/index.js.map +1 -1
- package/dist/{makeCallable-LDU0xZMJ.js → makeCallable-Cg4zUG4c.js} +2 -2
- package/dist/{makeCallable-LDU0xZMJ.js.map → makeCallable-Cg4zUG4c.js.map} +1 -1
- package/dist/models/index.js +7 -7
- package/dist/models/index.js.map +1 -1
- package/dist/plugins/index.js +18 -14
- package/dist/plugins/index.js.map +1 -1
- package/dist/services/index.js +11 -9
- package/dist/style.css +1 -1
- package/dist/{vueHooks-l04s8cIl.js → vueHooks-Bs93iP61.js} +1519 -1492
- package/dist/vueHooks-Bs93iP61.js.map +1 -0
- package/lib/index.umd.js +19 -13
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +38 -27
- package/dist/BasePlugin-DD7l-5Xw.js.map +0 -1
- package/dist/IconQuickEdit-CMCQncyj.js +0 -27
- package/dist/IconQuickEdit-CMCQncyj.js.map +0 -1
- 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/WatchlistAction-BbNAyryN.js +0 -5
- package/dist/WatchlistAction-BbNAyryN.js.map +0 -1
- package/dist/index-7R2LfhNn.js +0 -220
- package/dist/index-7R2LfhNn.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-BjDTD66_.js +0 -491
- package/dist/index-BjDTD66_.js.map +0 -1
- package/dist/index-BpQ6VGMz.js.map +0 -1
- package/dist/index-CG38LlAh.js +0 -46
- package/dist/index-CG38LlAh.js.map +0 -1
- package/dist/index-CM_6yF2v.js.map +0 -1
- package/dist/index-DKCZDN-Q.js.map +0 -1
- package/dist/index-De25v1_Q.js.map +0 -1
- package/dist/index-DensW9qt.js.map +0 -1
- package/dist/index-DxaqNWv4.js +0 -3090
- package/dist/index-DxaqNWv4.js.map +0 -1
- package/dist/index-WfXtYVMt.js.map +0 -1
- package/dist/vueHooks-l04s8cIl.js.map +0 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as n } from "./index-QnWieXQc.js";
|
|
2
|
+
import { C as u, s as S, b as x, E as H, F as v, I as y, a as E, e as b, m as C, $ as L, M as j, R as k, S as I, c as M, d as P, f as R } from "./index-QnWieXQc.js";
|
|
3
|
+
import { p as h } from "./Promise.withResolvers-C4chhLB1.js";
|
|
2
4
|
class l {
|
|
3
|
-
constructor(e, t = void 0,
|
|
4
|
-
this.ctx = e, this.disposeHandlers = [], this.name =
|
|
5
|
-
const { promise: r, resolve:
|
|
5
|
+
constructor(e, t = void 0, c) {
|
|
6
|
+
this.ctx = e, this.disposeHandlers = [], this.name = c || "", this.config = t || {};
|
|
7
|
+
const { promise: r, resolve: o, reject: i } = h();
|
|
6
8
|
queueMicrotask(() => {
|
|
7
9
|
this.name || (this.name = this.constructor.name);
|
|
8
10
|
try {
|
|
9
11
|
const s = this.start();
|
|
10
|
-
s && typeof s.then == "function" ? s.then(() =>
|
|
11
|
-
this.logger.error("start() returns a rejected promise", a),
|
|
12
|
-
}) :
|
|
12
|
+
s && typeof s.then == "function" ? s.then(() => o()).catch((a) => {
|
|
13
|
+
this.logger.error("start() returns a rejected promise", a), i(a);
|
|
14
|
+
}) : o();
|
|
13
15
|
} catch (s) {
|
|
14
|
-
this.logger.error("start() threw synchronously", s),
|
|
16
|
+
this.logger.error("start() threw synchronously", s), i(s);
|
|
15
17
|
}
|
|
16
18
|
r.then(() => {
|
|
17
19
|
this.logger.debug("started");
|
|
@@ -50,6 +52,22 @@ class l {
|
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
export {
|
|
53
|
-
l as
|
|
55
|
+
l as BasePlugin,
|
|
56
|
+
u as CordisError,
|
|
57
|
+
S as CordisSymbols,
|
|
58
|
+
x as EffectScope,
|
|
59
|
+
H as Endpoints,
|
|
60
|
+
v as ForkScope,
|
|
61
|
+
y as InPageEdit,
|
|
62
|
+
E as Inject,
|
|
63
|
+
b as Lifecycle,
|
|
64
|
+
C as Logger,
|
|
65
|
+
L as LoggerLevel,
|
|
66
|
+
j as MainScope,
|
|
67
|
+
k as RegisterPreferences,
|
|
68
|
+
I as Schema,
|
|
69
|
+
M as ScopeStatus,
|
|
70
|
+
P as Service,
|
|
71
|
+
R as createLogger
|
|
54
72
|
};
|
|
55
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../src/plugins/BasePlugin.ts"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport type { Logger } from '@inpageedit/logger'\nimport { snakeCase } from '@/utils/string'\n\ninterface DisposeHandler {\n (ctx: InPageEdit): Promise<void> | void\n}\n\nexport default class BasePlugin<ConfigType extends unknown = any> {\n #name!: string\n public config: ConfigType\n private disposeHandlers: DisposeHandler[] = []\n /** 依赖注入 */\n static inject?: Inject = []\n /** 可重用? */\n static reusable = false\n /** 插件的偏好设置模式 */\n static PreferencesSchema?: Schema\n\n constructor(\n public ctx: InPageEdit,\n config: ConfigType = undefined as unknown as ConfigType,\n name?: string\n ) {\n this.name = name || ''\n this.config = config || ({} as ConfigType)\n const { promise, resolve, reject } = promiseWithResolvers<void>()\n queueMicrotask(() => {\n if (!this.name) {\n this.name = this.constructor.name\n }\n try {\n const ret = this.start()\n if (ret && typeof (ret as Promise<unknown>).then === 'function') {\n ;(ret as Promise<unknown>)\n .then(() => resolve())\n .catch((err) => {\n this.logger.error('start() returns a rejected promise', err)\n reject(err)\n })\n } else {\n resolve()\n }\n } catch (err) {\n this.logger.error('start() threw synchronously', err)\n reject(err)\n }\n\n promise.then(() => {\n this.logger.debug('started')\n })\n promise.catch((e) => {\n this.logger.error('start failed', e)\n this.ctx.scope.dispose()\n })\n })\n this.ctx.once('dispose', () => {\n this.disposeHandlers.forEach((fn) => fn(this.ctx))\n this.stop()\n this.logger.debug('disposed')\n })\n }\n\n protected start(): Promise<void> | void {}\n protected stop(): Promise<void> | void {}\n protected addDisposeHandler(fn: DisposeHandler): void {\n this.disposeHandlers.push(fn)\n }\n protected removeDisposeHandler(fn: DisposeHandler): void {\n this.disposeHandlers = this.disposeHandlers.filter((f) => f !== fn)\n }\n\n set name(name: string) {\n this.#name = snakeCase(name).toUpperCase()\n }\n get name(): string {\n return this.#name\n }\n\n get logger(): Logger {\n return this.ctx.logger(this.name)\n }\n}\n"],"names":["BasePlugin","ctx","config","name","promise","resolve","reject","promiseWithResolvers","ret","err","e","fn","#name","f","snakeCase"],"mappings":";;;AAQA,MAAqBA,EAA6C;AAAA,EAWhE,YACSC,GACPC,IAAqB,QACrBC,GACA;AAHO,SAAA,MAAAF,GATT,KAAQ,kBAAoC,CAAA,GAa1C,KAAK,OAAOE,KAAQ,IACpB,KAAK,SAASD,KAAW,CAAA;AACzB,UAAM,EAAE,SAAAE,GAAS,SAAAC,GAAS,QAAAC,EAAA,IAAWC,EAAA;AACrC,mBAAe,MAAM;AACnB,MAAK,KAAK,SACR,KAAK,OAAO,KAAK,YAAY;AAE/B,UAAI;AACF,cAAMC,IAAM,KAAK,MAAA;AACjB,QAAIA,KAAO,OAAQA,EAAyB,QAAS,aACjDA,EACC,KAAK,MAAMH,EAAA,CAAS,EACpB,MAAM,CAACI,MAAQ;AACd,eAAK,OAAO,MAAM,sCAAsCA,CAAG,GAC3DH,EAAOG,CAAG;AAAA,QACZ,CAAC,IAEHJ,EAAA;AAAA,MAEJ,SAASI,GAAK;AACZ,aAAK,OAAO,MAAM,+BAA+BA,CAAG,GACpDH,EAAOG,CAAG;AAAA,MACZ;AAEA,MAAAL,EAAQ,KAAK,MAAM;AACjB,aAAK,OAAO,MAAM,SAAS;AAAA,MAC7B,CAAC,GACDA,EAAQ,MAAM,CAACM,MAAM;AACnB,aAAK,OAAO,MAAM,gBAAgBA,CAAC,GACnC,KAAK,IAAI,MAAM,QAAA;AAAA,MACjB,CAAC;AAAA,IACH,CAAC,GACD,KAAK,IAAI,KAAK,WAAW,MAAM;AAC7B,WAAK,gBAAgB,QAAQ,CAACC,MAAOA,EAAG,KAAK,GAAG,CAAC,GACjD,KAAK,KAAA,GACL,KAAK,OAAO,MAAM,UAAU;AAAA,IAC9B,CAAC;AAAA,EACH;AAAA,EApDAC;AAAA,EAIA,OAAA;AAAA,SAAO,SAAkB,CAAA;AAAA,EAAC;AAAA,EAE1B,OAAA;AAAA,SAAO,WAAW;AAAA,EAAA;AAAA,EAgDR,QAA8B;AAAA,EAAC;AAAA,EAC/B,OAA6B;AAAA,EAAC;AAAA,EAC9B,kBAAkBD,GAA0B;AACpD,SAAK,gBAAgB,KAAKA,CAAE;AAAA,EAC9B;AAAA,EACU,qBAAqBA,GAA0B;AACvD,SAAK,kBAAkB,KAAK,gBAAgB,OAAO,CAACE,MAAMA,MAAMF,CAAE;AAAA,EACpE;AAAA,EAEA,IAAI,KAAKR,GAAc;AACrB,SAAKS,KAAQE,EAAUX,CAAI,EAAE,YAAA;AAAA,EAC/B;AAAA,EACA,IAAI,OAAe;AACjB,WAAO,KAAKS;AAAA,EACd;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,EAClC;AACF;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { j as r, P as m } from "./
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { j as r, P as m } from "./Promise.withResolvers-C4chhLB1.js";
|
|
2
|
+
import { S as d } from "./index-QnWieXQc.js";
|
|
3
|
+
import { BasePlugin as h } from "./core.js";
|
|
4
|
+
import { T as u } from "./index-z_qDGCMT.js";
|
|
5
|
+
import { I as f } from "./InputBox-D2ZRTMFP.js";
|
|
6
|
+
import { C as g } from "./CheckBox-Dx3r3LQz.js";
|
|
7
|
+
class P extends h {
|
|
7
8
|
constructor(e) {
|
|
8
9
|
super(e, {}, "quick-redirect"), this.ctx = e;
|
|
9
10
|
}
|
|
@@ -17,7 +18,7 @@ class y extends h {
|
|
|
17
18
|
}
|
|
18
19
|
start() {
|
|
19
20
|
this.ctx.set("quickRedirect", this);
|
|
20
|
-
const e = this.ctx
|
|
21
|
+
const { $: e } = this.ctx, t = window.mw?.config.get("wgPageName") || "", a = window.mw?.config.get("wgIsProbablyEditable");
|
|
21
22
|
this.ctx.inject(["toolbox"], (i) => {
|
|
22
23
|
this.ctx = i, i.toolbox.addButton({
|
|
23
24
|
id: "quick-redirect",
|
|
@@ -61,7 +62,7 @@ class y extends h {
|
|
|
61
62
|
stop() {
|
|
62
63
|
}
|
|
63
64
|
async showModal(e) {
|
|
64
|
-
const t = this.ctx
|
|
65
|
+
const { $: t } = this.ctx, a = await this.ctx.preferences.get("quickRedirect.reason");
|
|
65
66
|
e || (e = {}), this.ctx.emit("quick-redirect/init-options", { ctx: this.ctx, options: e });
|
|
66
67
|
const i = this.ctx.modal.createObject({
|
|
67
68
|
title: t`Quick Redirect`,
|
|
@@ -168,6 +169,6 @@ class y extends h {
|
|
|
168
169
|
}
|
|
169
170
|
}
|
|
170
171
|
export {
|
|
171
|
-
|
|
172
|
+
P as PluginQuickRedirect
|
|
172
173
|
};
|
|
173
|
-
//# sourceMappingURL=index-
|
|
174
|
+
//# sourceMappingURL=index-1tsXE6ax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-1tsXE6ax.js","sources":["../src/plugins/quick-redirect/index.tsx"],"sourcesContent":["import { InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickRedirect: PluginQuickRedirect\n }\n interface Events {\n 'quick-redirect/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickRedirectOptions>\n }): void\n 'quick-redirect/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-redirect/submit'(payload: { ctx: InPageEdit; payload: RedirectPageOptions }): void\n }\n interface PreferencesMap {\n 'quickRedirect.reason': string\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 static readonly PreferencesSchema = Schema.object({\n 'quickRedirect.reason': Schema.string().default('[IPE-NEXT] Quick redirect'),\n })\n .description('Quick redirect options')\n .extra('category', 'editor')\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)\n const { $ } = this.ctx\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.showModal(\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 async showModal(options?: Partial<QuickRedirectOptions>) {\n const { $ } = this.ctx\n const reason = await this.ctx.preferences.get('quickRedirect.reason')\n if (!options) {\n options = {}\n }\n this.ctx.emit('quick-redirect/init-options', { ctx: this.ctx, options })\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 this.ctx.emit('quick-redirect/submit', { ctx: this.ctx, payload: options })\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: $`Redirect from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Redirect to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\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 this.ctx.emit('quick-redirect/show-modal', { ctx: this.ctx, modal })\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 return wikiPage.edit(\n {\n text: content,\n summary: reason,\n },\n {\n createonly: !overwrite,\n }\n )\n }\n}\n"],"names":["PluginQuickRedirect","BasePlugin","ctx","Schema","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","res","error","TwinSwapInput","InputBox","CheckBox","from","to","overwrite","wikiPage","content"],"mappings":"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"}
|
|
@@ -1,47 +1,49 @@
|
|
|
1
|
-
import { j as i, F as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { M as
|
|
7
|
-
import { I
|
|
8
|
-
import { R as Y } from "./RadioBox-
|
|
1
|
+
import { j as i, F as y, P as Q } from "./Promise.withResolvers-C4chhLB1.js";
|
|
2
|
+
import { a as R, R as $, S as d } from "./index-QnWieXQc.js";
|
|
3
|
+
import { WatchlistAction as f } from "./models/index.js";
|
|
4
|
+
import { m as U } from "./makeCallable-Cg4zUG4c.js";
|
|
5
|
+
import { BasePlugin as W } from "./core.js";
|
|
6
|
+
import { M as I, I as z } from "./IconQuickEdit-BiRYADU_.js";
|
|
7
|
+
import { I as T } from "./InputBox-D2ZRTMFP.js";
|
|
8
|
+
import { R as Y } from "./RadioBox-B0z9YHQg.js";
|
|
9
|
+
import { C } from "./CheckBox-Dx3r3LQz.js";
|
|
9
10
|
import { n as F } from "./noop-ClDc6zv4.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
import { M as K } from "./index-CYfkwXRf.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 : /* @__PURE__ */ 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, n) => ({ kind: ee[o], name: e, metadata: a, addInitializer: (u) => t._ ? M("Already initialized") : n.push(B(u || null)) }), ie = (o, e) => V(e, O("metadata"), o[3]), oe = (o, e, t, a) => {
|
|
16
|
+
for (var n = 0, u = o[e >> 1], h = u && u.length; n < h; n++) u[n].call(t);
|
|
17
|
+
return a;
|
|
18
|
+
}, se = (o, e, t, a, n, u) => {
|
|
19
|
+
var h, w, c, s = e & 7, l = !1, v = 0, x = o[v] || (o[v] = []), p = s && (n = n.prototype, s < 5 && (s > 3 || !l) && G(n, t));
|
|
18
20
|
J(n, t);
|
|
19
|
-
for (var g =
|
|
20
|
-
c =
|
|
21
|
-
return
|
|
21
|
+
for (var g = a.length - 1; g >= 0; g--)
|
|
22
|
+
c = te(s, t, w = {}, o[3], x), h = (0, a[g])(n, c), w._ = 1, B(h) && (n = h);
|
|
23
|
+
return ie(o, n), p && _(n, t, p), l ? s ^ 4 ? u : p : n;
|
|
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 = [R(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences", "$"]), $(
|
|
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
|
)];
|
|
44
|
-
let S = class D extends (L =
|
|
46
|
+
let S = class D extends (L = W) {
|
|
45
47
|
constructor(e) {
|
|
46
48
|
super(e, {}, "quick-edit"), this.ctx = e, this.DEFAULT_OPTIONS = {
|
|
47
49
|
title: "",
|
|
@@ -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", U(this, "showModal"));
|
|
56
58
|
}
|
|
57
59
|
start() {
|
|
58
60
|
this.ctx.inject(["toolbox"], (e) => {
|
|
@@ -62,7 +64,7 @@ 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) {
|
|
@@ -79,27 +81,27 @@ let S = class D extends (L = z) {
|
|
|
79
81
|
const r = this.ctx.wikiTitle.resolveSpecialPageTarget(e.title);
|
|
80
82
|
r && r.title.getNamespaceId() >= 0 && (e.title = r.title.getPrefixedDBKey(), e.section ??= r.section);
|
|
81
83
|
}
|
|
82
|
-
const
|
|
84
|
+
const a = await this.ctx.preferences.get("quickEdit.outSideClose"), n = await this.ctx.preferences.get("quickEdit.watchList"), u = typeof e.editSummary == "string" ? e.editSummary : await this.ctx.preferences.get("quickEdit.editSummary"), 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(y, { 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
132
|
} catch (r) {
|
|
131
|
-
|
|
133
|
+
s.off(s.Event.Close), s.close(), this.ctx.modal.notify("error", {
|
|
132
134
|
content: r instanceof Error ? r.message : String(r)
|
|
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(y, { 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(y, { children: /* @__PURE__ */ i(
|
|
173
|
+
T,
|
|
172
174
|
{
|
|
173
175
|
label: t`Section title`,
|
|
174
176
|
id: "summary",
|
|
@@ -201,20 +203,28 @@ 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
|
-
|
|
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
|
|
212
214
|
].map((r) => /* @__PURE__ */ i(
|
|
213
215
|
Y,
|
|
214
216
|
{
|
|
215
217
|
name: "watchlist",
|
|
216
218
|
value: r,
|
|
217
|
-
inputProps: {
|
|
219
|
+
inputProps: {
|
|
220
|
+
checked: n === r,
|
|
221
|
+
onChange: (m) => {
|
|
222
|
+
m.target && m.target.closest("label")?.scrollIntoView({
|
|
223
|
+
behavior: "smooth",
|
|
224
|
+
inline: "center"
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
},
|
|
218
228
|
children: t`watchlist.${r}`
|
|
219
229
|
},
|
|
220
230
|
r
|
|
@@ -229,9 +239,9 @@ let S = class D extends (L = z) {
|
|
|
229
239
|
),
|
|
230
240
|
!1
|
|
231
241
|
] });
|
|
232
|
-
|
|
233
|
-
let
|
|
234
|
-
|
|
242
|
+
s.setContent(b);
|
|
243
|
+
let E = !1;
|
|
244
|
+
s.addButton(
|
|
235
245
|
{
|
|
236
246
|
side: "left",
|
|
237
247
|
className: "is-primary submit-btn",
|
|
@@ -239,27 +249,27 @@ let S = class D extends (L = z) {
|
|
|
239
249
|
keyPress: await this.ctx.preferences.get("quickEdit.keyshortcut.save") || void 0,
|
|
240
250
|
method: async () => {
|
|
241
251
|
const r = new FormData(b);
|
|
242
|
-
|
|
252
|
+
s.setLoadingState(!0);
|
|
243
253
|
try {
|
|
244
254
|
await this.handleSubmit({
|
|
245
|
-
wikiPage:
|
|
255
|
+
wikiPage: l,
|
|
246
256
|
text: r.get("text"),
|
|
247
257
|
summary: r.get("summary"),
|
|
248
258
|
minor: r.get("minor") === "on",
|
|
249
259
|
section: c.section,
|
|
250
260
|
watchlist: n,
|
|
251
261
|
// 如果无视风险,那么就不再尝试解决冲突,直接重建页面
|
|
252
|
-
createonly:
|
|
253
|
-
recreate:
|
|
254
|
-
}),
|
|
262
|
+
createonly: l.pageid === 0 && !E,
|
|
263
|
+
recreate: l.pageid === 0 && E
|
|
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
|
-
}), r.get("reloadAfterSave") && (await
|
|
269
|
+
}), r.get("reloadAfterSave") && (await H(500), location.reload());
|
|
260
270
|
} catch (m) {
|
|
261
|
-
if (
|
|
262
|
-
|
|
271
|
+
if (s.setLoadingState(!1), K.is(m) && (m.code === "pagedeleted" || m.code === "editconflict" || m.code === "articleexists")) {
|
|
272
|
+
E = !0, this.ctx.modal.notify("warning", {
|
|
263
273
|
title: t`Submission Error`,
|
|
264
274
|
content: /* @__PURE__ */ i("div", { children: [
|
|
265
275
|
/* @__PURE__ */ i("p", { children: /* @__PURE__ */ i("strong", { children: m.message }) }),
|
|
@@ -277,9 +287,9 @@ let S = class D extends (L = z) {
|
|
|
277
287
|
}
|
|
278
288
|
},
|
|
279
289
|
0
|
|
280
|
-
),
|
|
290
|
+
), s.setOptions({
|
|
281
291
|
beforeClose: () => {
|
|
282
|
-
const r =
|
|
292
|
+
const r = l.revisions[0]?.content || "";
|
|
283
293
|
return (b.querySelector("textarea")?.value || "") === r ? !0 : (this.ctx.modal.confirm(
|
|
284
294
|
{
|
|
285
295
|
className: "is-primary",
|
|
@@ -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
319
|
const q = (r) => b.querySelector("textarea")?.value === v ? !0 : (r.preventDefault(), t`You have unsaved changes. Are you sure you want to leave?`);
|
|
310
|
-
window.addEventListener("beforeunload", q),
|
|
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, n = a && a.getNamespaceId() >= 0;
|
|
348
358
|
e.toolbox.addButton({
|
|
349
359
|
id: "quick-edit",
|
|
350
360
|
group: "group1",
|
|
@@ -377,7 +387,7 @@ let S = class D extends (L = z) {
|
|
|
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, n = t?.icon ?? /* @__PURE__ */ i(z, { 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
|
+
n,
|
|
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-B32tFyLB.js.map
|