@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.
Files changed (104) hide show
  1. package/dist/{ActionButton-CRjo_l3y.js → ActionButton-B6OUgtHx.js} +2 -2
  2. package/dist/{ActionButton-CRjo_l3y.js.map → ActionButton-B6OUgtHx.js.map} +1 -1
  3. package/dist/CheckBox-Dx3r3LQz.js +13 -0
  4. package/dist/CheckBox-Dx3r3LQz.js.map +1 -0
  5. package/dist/IconQuickDiff-BkbxyY-d.js +29 -0
  6. package/dist/IconQuickDiff-BkbxyY-d.js.map +1 -0
  7. package/dist/IconQuickEdit-BiRYADU_.js +68 -0
  8. package/dist/IconQuickEdit-BiRYADU_.js.map +1 -0
  9. package/dist/IconUpload-Bz4BW_nc.js +27 -0
  10. package/dist/IconUpload-Bz4BW_nc.js.map +1 -0
  11. package/dist/InPageEdit.js +20 -0
  12. package/dist/InPageEdit.js.map +1 -0
  13. package/dist/InputBox-D2ZRTMFP.js +42 -0
  14. package/dist/InputBox-D2ZRTMFP.js.map +1 -0
  15. package/dist/PluginImagesUsed-BVyvFA1_.js +90 -0
  16. package/dist/PluginImagesUsed-BVyvFA1_.js.map +1 -0
  17. package/dist/{PluginPrefSync-CbFuuC19.js → PluginPrefSync-CUKkx4Qk.js} +11 -11
  18. package/dist/{PluginPrefSync-CbFuuC19.js.map → PluginPrefSync-CUKkx4Qk.js.map} +1 -1
  19. package/dist/{PluginStoreApp-MbC3G9tu.js → PluginStoreApp-CoOAw1fr.js} +4 -4
  20. package/dist/{PluginStoreApp-MbC3G9tu.js.map → PluginStoreApp-CoOAw1fr.js.map} +1 -1
  21. package/dist/PluginTemplatesUsed-CdjT1wR4.js +76 -0
  22. package/dist/PluginTemplatesUsed-CdjT1wR4.js.map +1 -0
  23. package/dist/{index-CM_6yF2v.js → Promise.withResolvers-C4chhLB1.js} +17 -11
  24. package/dist/Promise.withResolvers-C4chhLB1.js.map +1 -0
  25. package/dist/{RadioBox-0UuxlcWZ.js → RadioBox-B0z9YHQg.js} +2 -2
  26. package/dist/{RadioBox-0UuxlcWZ.js.map → RadioBox-B0z9YHQg.js.map} +1 -1
  27. package/dist/components/index.js +75 -46
  28. package/dist/components/index.js.map +1 -1
  29. package/dist/{BasePlugin-DD7l-5Xw.js → core.js} +28 -10
  30. package/dist/core.js.map +1 -0
  31. package/dist/{index-De25v1_Q.js → index-1tsXE6ax.js} +11 -10
  32. package/dist/index-1tsXE6ax.js.map +1 -0
  33. package/dist/{index-WfXtYVMt.js → index-B32tFyLB.js} +132 -100
  34. package/dist/index-B32tFyLB.js.map +1 -0
  35. package/dist/index-BPTMltVf.js +170 -0
  36. package/dist/index-BPTMltVf.js.map +1 -0
  37. package/dist/{index-DKCZDN-Q.js → index-BYlcHc-O.js} +23 -25
  38. package/dist/index-BYlcHc-O.js.map +1 -0
  39. package/dist/{index-CnR6CqkM.js → index-C4qm_X_A.js} +11 -11
  40. package/dist/{index-CnR6CqkM.js.map → index-C4qm_X_A.js.map} +1 -1
  41. package/dist/index-CAtPo7xJ.js +793 -0
  42. package/dist/index-CAtPo7xJ.js.map +1 -0
  43. package/dist/{index-DensW9qt.js → index-CVCy0wPP.js} +9 -8
  44. package/dist/index-CVCy0wPP.js.map +1 -0
  45. package/dist/index-CYfkwXRf.js +1631 -0
  46. package/dist/index-CYfkwXRf.js.map +1 -0
  47. package/dist/index-DZa9mxN4.js +168 -0
  48. package/dist/index-DZa9mxN4.js.map +1 -0
  49. package/dist/{index-BpQ6VGMz.js → index-Dm2vgYkZ.js} +89 -67
  50. package/dist/index-Dm2vgYkZ.js.map +1 -0
  51. package/dist/{index-BanevHQ2.js → index-NWWeW3tX.js} +87 -84
  52. package/dist/index-NWWeW3tX.js.map +1 -0
  53. package/dist/index-QnWieXQc.js +4932 -0
  54. package/dist/index-QnWieXQc.js.map +1 -0
  55. package/dist/{index-B3jld2sl.js → index-bQ0CVu3l.js} +13 -17
  56. package/dist/{index-B3jld2sl.js.map → index-bQ0CVu3l.js.map} +1 -1
  57. package/dist/index-ygc4AMy4.js +44 -0
  58. package/dist/index-ygc4AMy4.js.map +1 -0
  59. package/dist/{index-DD5CVCfD.js → index-z_qDGCMT.js} +2 -2
  60. package/dist/{index-DD5CVCfD.js.map → index-z_qDGCMT.js.map} +1 -1
  61. package/dist/index.d.ts +411 -163
  62. package/dist/index.js +24 -26
  63. package/dist/index.js.map +1 -1
  64. package/dist/{makeCallable-LDU0xZMJ.js → makeCallable-Cg4zUG4c.js} +2 -2
  65. package/dist/{makeCallable-LDU0xZMJ.js.map → makeCallable-Cg4zUG4c.js.map} +1 -1
  66. package/dist/models/index.js +7 -7
  67. package/dist/models/index.js.map +1 -1
  68. package/dist/plugins/index.js +18 -14
  69. package/dist/plugins/index.js.map +1 -1
  70. package/dist/services/index.js +11 -9
  71. package/dist/style.css +1 -1
  72. package/dist/{vueHooks-l04s8cIl.js → vueHooks-Bs93iP61.js} +1519 -1492
  73. package/dist/vueHooks-Bs93iP61.js.map +1 -0
  74. package/lib/index.umd.js +19 -13
  75. package/lib/index.umd.js.map +1 -1
  76. package/lib/style.css +1 -1
  77. package/package.json +38 -27
  78. package/dist/BasePlugin-DD7l-5Xw.js.map +0 -1
  79. package/dist/IconQuickEdit-CMCQncyj.js +0 -27
  80. package/dist/IconQuickEdit-CMCQncyj.js.map +0 -1
  81. package/dist/InputBox-nQKtiWtZ.js +0 -30
  82. package/dist/InputBox-nQKtiWtZ.js.map +0 -1
  83. package/dist/Preferences-C10tZMl1.js +0 -2701
  84. package/dist/Preferences-C10tZMl1.js.map +0 -1
  85. package/dist/WatchlistAction-BbNAyryN.js +0 -5
  86. package/dist/WatchlistAction-BbNAyryN.js.map +0 -1
  87. package/dist/index-7R2LfhNn.js +0 -220
  88. package/dist/index-7R2LfhNn.js.map +0 -1
  89. package/dist/index-BXNyXvre.js +0 -116
  90. package/dist/index-BXNyXvre.js.map +0 -1
  91. package/dist/index-BanevHQ2.js.map +0 -1
  92. package/dist/index-BjDTD66_.js +0 -491
  93. package/dist/index-BjDTD66_.js.map +0 -1
  94. package/dist/index-BpQ6VGMz.js.map +0 -1
  95. package/dist/index-CG38LlAh.js +0 -46
  96. package/dist/index-CG38LlAh.js.map +0 -1
  97. package/dist/index-CM_6yF2v.js.map +0 -1
  98. package/dist/index-DKCZDN-Q.js.map +0 -1
  99. package/dist/index-De25v1_Q.js.map +0 -1
  100. package/dist/index-DensW9qt.js.map +0 -1
  101. package/dist/index-DxaqNWv4.js +0 -3090
  102. package/dist/index-DxaqNWv4.js.map +0 -1
  103. package/dist/index-WfXtYVMt.js.map +0 -1
  104. package/dist/vueHooks-l04s8cIl.js.map +0 -1
@@ -1,17 +1,19 @@
1
- import { f as n } from "./Preferences-C10tZMl1.js";
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, h) {
4
- this.ctx = e, this.disposeHandlers = [], this.name = h || "", this.config = t || {};
5
- const { promise: r, resolve: i, reject: o } = Promise.withResolvers();
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(() => i()).catch((a) => {
11
- this.logger.error("start() returns a rejected promise", a), o(a);
12
- }) : i();
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), o(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 B
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=BasePlugin-DD7l-5Xw.js.map
73
+ //# sourceMappingURL=core.js.map
@@ -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 "./index-CM_6yF2v.js";
2
- import { B as h } from "./BasePlugin-DD7l-5Xw.js";
3
- import { T as u } from "./index-DD5CVCfD.js";
4
- import { I as f, C as g } from "./InputBox-nQKtiWtZ.js";
5
- import { S as d } from "./Preferences-C10tZMl1.js";
6
- class y extends h {
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.$, t = window.mw?.config.get("wgPageName") || "", a = window.mw?.config.get("wgIsProbablyEditable");
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.$, a = await this.ctx.preferences.get("quickRedirect.reason");
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
- y as PluginQuickRedirect
172
+ P as PluginQuickRedirect
172
173
  };
173
- //# sourceMappingURL=index-De25v1_Q.js.map
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 _, P as R } from "./index-CM_6yF2v.js";
2
- import { W as h } from "./WatchlistAction-BbNAyryN.js";
3
- import { m as $ } from "./makeCallable-LDU0xZMJ.js";
4
- import { T as U, I as Q, R as W, S as l } from "./Preferences-C10tZMl1.js";
5
- import { B as z } from "./BasePlugin-DD7l-5Xw.js";
6
- import { M as T } from "./index-CG38LlAh.js";
7
- import { I, C } from "./InputBox-nQKtiWtZ.js";
8
- import { R as Y } from "./RadioBox-0UuxlcWZ.js";
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
- const K = (s = 0) => new Promise((e) => setTimeout(e, s));
11
- var H = Object.create, E = Object.defineProperty, G = Object.getOwnPropertyDescriptor, O = (s, e) => (e = Symbol[s]) ? e : Symbol.for("Symbol." + s), M = (s) => {
12
- throw TypeError(s);
13
- }, X = (s, e, t) => e in s ? E(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, J = (s, e) => E(s, "name", { value: e, configurable: !0 }), V = (s) => [, , , H(s?.[O("metadata")] ?? null)], Z = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], B = (s) => s !== void 0 && typeof s != "function" ? M("Function expected") : s, ee = (s, e, t, d, n) => ({ kind: Z[s], name: e, metadata: d, addInitializer: (u) => t._ ? M("Already initialized") : n.push(B(u || null)) }), te = (s, e) => X(e, O("metadata"), s[3]), ie = (s, e, t, d) => {
14
- for (var n = 0, u = s[e >> 1], f = u && u.length; n < f; n++) u[n].call(t);
15
- return d;
16
- }, se = (s, e, t, d, n, u) => {
17
- var f, w, c, o = e & 7, a = !1, v = 0, x = s[v] || (s[v] = []), p = o && (n = n.prototype, o < 5 && (o > 3 || !a) && G(n, t));
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 = d.length - 1; g >= 0; g--)
20
- c = ee(o, t, w = {}, s[3], x), f = (0, d[g])(n, c), w._ = 1, B(f) && (n = f);
21
- return te(s, n), p && E(n, t, p), a ? o ^ 4 ? u : p : n;
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 = [Q(["api", "wikiPage", "wikiTitle", "currentPage", "wiki", "modal", "preferences", "$"]), W(
24
- l.object({
25
- "quickEdit.editSummary": l.string().description("Default edit summary for quick edits").default("[IPE-NEXT] Quick edit"),
26
- "quickEdit.editMinor": l.boolean().description('Default to checking "minor edit" option').default(!1),
27
- "quickEdit.outSideClose": l.boolean().description("Close editor modal by clicking outside").default(!0),
28
- "quickEdit.watchList": l.union([
29
- l.const(h.preferences).description("Follow MW preferences"),
30
- l.const(h.nochange).description("Keep the current watchlist status"),
31
- l.const(h.watch).description("Add the page to watchlist"),
32
- l.const(h.unwatch).description("Remove the page from watchlist")
33
- ]).description("Watchlist options").default(h.preferences),
34
- "quickEdit.keyshortcut.save": l.string().default("ctrl-s").description("save button key shortcut (blank to disable)"),
35
- "quickEdit.editFont": l.union([
36
- l.const("preferences").description("Follow MW preferences"),
37
- l.const("monospace").description("Monospace"),
38
- l.const("sans-serif").description("Sans-serif"),
39
- l.const("serif").description("Serif"),
40
- l.string().description("Custom font (same as CSS `font-family` property)").default("")
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 = z) {
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", $(this, "showModal"));
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 d = await this.ctx.preferences.get("quickEdit.outSideClose"), n = await this.ctx.preferences.get("quickEdit.watchList"), u = typeof e.editSummary == "string" ? e.editSummary : await this.ctx.preferences.get("quickEdit.editSummary"), f = typeof e.editMinor == "boolean" ? e.editMinor : await this.ctx.preferences.get("quickEdit.editMinor"), w = await this.getEditFontOptions(), c = {
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: f,
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 o = this.ctx.modal.createObject({
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: d
97
+ outSideClose: a
96
98
  }).init();
97
- o.setTitle(
98
- /* @__PURE__ */ i(_, { children: [
99
+ s.setTitle(
100
+ /* @__PURE__ */ i(y, { children: [
99
101
  "Loading: ",
100
102
  /* @__PURE__ */ i("u", { children: c.title })
101
103
  ] })
102
- ), o.setContent(
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(R, {})
116
+ children: /* @__PURE__ */ i(Q, {})
115
117
  }
116
118
  )
117
- ), o.addButton({
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
- o.close();
125
+ s.close();
124
126
  }
125
- }), o.show(), this.ctx.emit("quick-edit/show-modal", { ctx: this.ctx, modal: o, options: c });
126
- let a;
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 (a = await this.getWikiPageFromPayload(c), a.pageInfo.special)
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
- o.off(o.Event.Close), o.close(), this.ctx.modal.notify("error", {
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" ? "" : a.revisions[0]?.content || "", x = a.revisions[0]?.revid, p = x && x !== a.lastrevid, g = c.section === "new", N = a.pageid === 0;
137
- o.setTitle(
138
- /* @__PURE__ */ i(_, { children: [
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: a.pageInfo.title }),
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(T, { title: t`Attention`, type: "important", children: /* @__PURE__ */ i("p", { children: t`This page does not exist.` }) })
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(T, { title: t`Attention`, type: "warning", children: /* @__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: o,
159
- wikiPage: a,
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(_, { children: /* @__PURE__ */ i(
171
- I,
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(I, { label: t`Summary`, id: "summary", name: "summary", value: c.editSummary }),
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
- h.preferences,
209
- h.nochange,
210
- h.watch,
211
- h.unwatch
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: { checked: n === r },
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
- o.setContent(b);
233
- let y = !1;
234
- o.addButton(
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
- o.setLoadingState(!0);
252
+ s.setLoadingState(!0);
243
253
  try {
244
254
  await this.handleSubmit({
245
- wikiPage: a,
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: a.pageid === 0 && !y,
253
- recreate: a.pageid === 0 && y
254
- }), o.setOptions({
262
+ createonly: l.pageid === 0 && !E,
263
+ recreate: l.pageid === 0 && E
264
+ }), s.setOptions({
255
265
  beforeClose: F
256
- }), o.close(), this.ctx.modal.notify("success", {
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 K(500), location.reload());
269
+ }), r.get("reloadAfterSave") && (await H(500), location.reload());
260
270
  } catch (m) {
261
- if (o.setLoadingState(!1), U.is(m) && (m.code === "pagedeleted" || m.code === "editconflict" || m.code === "articleexists")) {
262
- y = !0, this.ctx.modal.notify("warning", {
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
- ), o.setOptions({
290
+ ), s.setOptions({
281
291
  beforeClose: () => {
282
- const r = a.revisions[0]?.content || "";
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 && (o.setOptions({
308
+ (j) => (j && (s.setOptions({
299
309
  beforeClose: F
300
- }), o.close()), !0)
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: o,
307
- wikiPage: a
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), o.on(o.Event.Close, () => {
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, ...d } = e;
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
- ...d
329
+ ...a
320
330
  }), t.edit({
321
- ...d
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.$, d = this.ctx.currentPage.wikiTitle, n = d && d.getNamespaceId() >= 0;
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: d?.getPrefixedText(),
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 = V(L);
422
+ P = Z(L);
391
423
  S = se(P, 0, "PluginQuickEdit", A, S);
392
- ie(P, 1, S);
393
- let he = S;
424
+ oe(P, 1, S);
425
+ let ge = S;
394
426
  export {
395
- he as PluginQuickEdit
427
+ ge as PluginQuickEdit
396
428
  };
397
- //# sourceMappingURL=index-WfXtYVMt.js.map
429
+ //# sourceMappingURL=index-B32tFyLB.js.map