@inpageedit/core 0.8.1 → 0.9.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 (50) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +55 -55
  3. package/dist/ActionButton-BgbTKTg7.js.map +1 -1
  4. package/dist/CheckBox-D3rHnX7I.js.map +1 -1
  5. package/dist/IconQuickEdit-CAL1HXIb.js.map +1 -1
  6. package/dist/InputBox-BV4m05Xs.js.map +1 -1
  7. package/dist/Preferences-Bg3J5Ur9.js.map +1 -1
  8. package/dist/RadioBox-nJqWsxW2.js.map +1 -1
  9. package/dist/components/index.js.map +1 -1
  10. package/dist/{index-COlXHFRg.js → index-9Z4ds-WM.js} +281 -268
  11. package/dist/index-9Z4ds-WM.js.map +1 -0
  12. package/dist/{index-DwyuBkCK.js → index-BB9MXkUv.js} +3 -3
  13. package/dist/index-BB9MXkUv.js.map +1 -0
  14. package/dist/{index-DBV8FBjA.js → index-BDVcDlsf.js} +2 -2
  15. package/dist/index-BDVcDlsf.js.map +1 -0
  16. package/dist/index-Bh70Udzi.js.map +1 -1
  17. package/dist/{index-C8dOYIIz.js → index-CADkQBg0.js} +2 -2
  18. package/dist/{index-C8dOYIIz.js.map → index-CADkQBg0.js.map} +1 -1
  19. package/dist/{index-CeXR4lOu.js → index-CBQsBfc2.js} +32 -34
  20. package/dist/{index-CeXR4lOu.js.map → index-CBQsBfc2.js.map} +1 -1
  21. package/dist/{index-mntCdHRr.js → index-CNsB3Vcb.js} +3 -3
  22. package/dist/{index-mntCdHRr.js.map → index-CNsB3Vcb.js.map} +1 -1
  23. package/dist/{index-9M1QcjCN.js → index-CYdxWw9g.js} +124 -123
  24. package/dist/index-CYdxWw9g.js.map +1 -0
  25. package/dist/index-CvhkVj_L.js.map +1 -1
  26. package/dist/{index-Ba7Wkale.js → index-D7SQwFxl.js} +2 -2
  27. package/dist/{index-Ba7Wkale.js.map → index-D7SQwFxl.js.map} +1 -1
  28. package/dist/{index-kRdAN8h3.js → index-DMNUP3fg.js} +2 -2
  29. package/dist/{index-kRdAN8h3.js.map → index-DMNUP3fg.js.map} +1 -1
  30. package/dist/{index-Tn22YSmW.js → index-G3k3kjCU.js} +2 -2
  31. package/dist/index-G3k3kjCU.js.map +1 -0
  32. package/dist/{index-OBerV4GU.js → index-dp6_MU68.js} +2 -2
  33. package/dist/index-dp6_MU68.js.map +1 -0
  34. package/dist/index-lZkYoUca.js.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/makeCallable-LDU0xZMJ.js.map +1 -1
  37. package/dist/noop-ClDc6zv4.js.map +1 -1
  38. package/dist/services/CurrentPageService.d.ts +1 -0
  39. package/dist/services/WikiMetadataService.d.ts +1 -1
  40. package/dist/style.css +1 -1
  41. package/lib/index.umd.js +26 -24
  42. package/lib/index.umd.js.map +1 -1
  43. package/lib/style.css +1 -1
  44. package/package.json +3 -3
  45. package/dist/index-9M1QcjCN.js.map +0 -1
  46. package/dist/index-COlXHFRg.js.map +0 -1
  47. package/dist/index-DBV8FBjA.js.map +0 -1
  48. package/dist/index-DwyuBkCK.js.map +0 -1
  49. package/dist/index-OBerV4GU.js.map +0 -1
  50. package/dist/index-Tn22YSmW.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { j as e, P as l } from "./index-CvhkVj_L.js";
2
- import { B as d } from "./index-COlXHFRg.js";
3
- import { T as m } from "./index-Bh70Udzi.js";
4
- import { I as u } from "./InputBox-BV4m05Xs.js";
5
- import { C as h } from "./CheckBox-D3rHnX7I.js";
6
- class x extends d {
1
+ import { j as e, P as c } from "./index-CvhkVj_L.js";
2
+ import { B as l } from "./index-9Z4ds-WM.js";
3
+ import { T as d } from "./index-Bh70Udzi.js";
4
+ import { I as m } from "./InputBox-BV4m05Xs.js";
5
+ import { C as u } from "./CheckBox-D3rHnX7I.js";
6
+ class v extends l {
7
7
  constructor(t) {
8
8
  super(t, {}, "quick-redirect"), this.ctx = t;
9
9
  }
@@ -12,9 +12,9 @@ class x extends d {
12
12
  }
13
13
  start() {
14
14
  this.ctx.set("quickRedirect", this.quickRedirect.bind(this)), this.ctx.set("redirectPage", this.redirectPage.bind(this));
15
- const t = window.mw?.config.get("wgPageName") || "", r = window.mw?.config.get("wgIsProbablyEditable");
16
- this.ctx.inject(["toolbox"], (i) => {
17
- this.ctx = i, i.toolbox.addButton({
15
+ const t = window.mw?.config.get("wgPageName") || "", i = window.mw?.config.get("wgIsProbablyEditable");
16
+ this.ctx.inject(["toolbox"], (r) => {
17
+ this.ctx = r, r.toolbox.addButton({
18
18
  id: "quick-redirect",
19
19
  icon: /* @__PURE__ */ e(
20
20
  "svg",
@@ -43,7 +43,7 @@ class x extends d {
43
43
  index: 2,
44
44
  onClick: () => {
45
45
  this.quickRedirect(
46
- r ? {
46
+ i ? {
47
47
  to: t
48
48
  } : {}
49
49
  );
@@ -56,28 +56,28 @@ class x extends d {
56
56
  stop() {
57
57
  }
58
58
  quickRedirect(t) {
59
- const r = this.ctx.modal.createObject({
59
+ const i = this.ctx.modal.createObject({
60
60
  title: "Quick Redirect",
61
- content: /* @__PURE__ */ e(l, {}),
61
+ content: /* @__PURE__ */ e(c, {}),
62
62
  className: "quick-redirect compact-buttons",
63
63
  sizeClass: "smallToMedium",
64
64
  center: !0
65
65
  }).init();
66
- let i = null;
67
- return r.setContent(
66
+ let r = null;
67
+ return i.setContent(
68
68
  /* @__PURE__ */ e(
69
69
  "form",
70
70
  {
71
- ref: (o) => i = o,
71
+ ref: (o) => r = o,
72
72
  style: {
73
73
  display: "flex",
74
74
  flexDirection: "column",
75
75
  gap: "1rem"
76
76
  },
77
77
  onSubmit: (o) => {
78
- if (o.preventDefault(), i?.checkValidity(), !i?.reportValidity())
78
+ if (o.preventDefault(), r?.checkValidity(), !r?.reportValidity())
79
79
  return;
80
- const a = new FormData(i), s = {
80
+ const a = new FormData(r), s = {
81
81
  from: a.get("from")?.toString().trim(),
82
82
  to: a.get("to")?.toString().trim(),
83
83
  reason: a.get("reason") || "",
@@ -90,13 +90,13 @@ class x extends d {
90
90
  });
91
91
  return;
92
92
  }
93
- r.setLoadingState(!0), this.redirectPage(s).then((n) => {
94
- r.close(), this.ctx.modal.notify("success", {
93
+ i.setLoadingState(!0), this.redirectPage(s).then((n) => {
94
+ i.close(), this.ctx.modal.notify("success", {
95
95
  title: "Redirect successful",
96
96
  content: "The redirect has been created."
97
97
  });
98
98
  }).catch((n) => {
99
- r.setLoadingState(!1), this.ctx.modal.notify("error", {
99
+ i.setLoadingState(!1), this.ctx.modal.notify("error", {
100
100
  title: "Failed to redirect",
101
101
  content: n instanceof Error ? n.message : String(n)
102
102
  });
@@ -104,7 +104,7 @@ class x extends d {
104
104
  },
105
105
  children: [
106
106
  /* @__PURE__ */ e(
107
- m,
107
+ d,
108
108
  {
109
109
  inputs: [
110
110
  {
@@ -122,25 +122,26 @@ class x extends d {
122
122
  ]
123
123
  }
124
124
  ),
125
- /* @__PURE__ */ e(u, { label: "Reason", id: "reason", name: "reason", value: t?.reason }),
126
- /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(h, { name: "overwrite", id: "overwrite", checked: t?.overwrite, children: "Force create redirect even if the from page already exists" }) })
125
+ /* @__PURE__ */ e(m, { label: "Reason", id: "reason", name: "reason", value: t?.reason }),
126
+ /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(u, { name: "overwrite", id: "overwrite", checked: t?.overwrite, children: "Force create redirect even if the from page already exists" }) })
127
127
  ]
128
128
  }
129
129
  )
130
- ), r.setButtons([
130
+ ), i.setButtons([
131
131
  {
132
132
  label: "Create Redirect",
133
133
  className: "is-primary is-ghost",
134
134
  method: () => {
135
- i?.dispatchEvent(new Event("submit"));
135
+ r?.dispatchEvent(new Event("submit"));
136
136
  }
137
137
  }
138
- ]), r.show();
138
+ ]), i.show();
139
139
  }
140
140
  async redirectPage(t) {
141
- const { from: r, to: i, reason: o = "", overwrite: a = !1 } = t, s = await this.ctx.wikiPage.newBlankPage({
142
- title: r
143
- }), n = `#REDIRECT [[:${i}]]`, c = await s.edit(
141
+ const { from: i, to: r, reason: o = "", overwrite: a = !1 } = t, s = await this.ctx.wikiPage.newBlankPage({
142
+ title: i
143
+ }), n = `#REDIRECT [[:${r}]]`;
144
+ return s.edit(
144
145
  {
145
146
  text: n,
146
147
  summary: o
@@ -149,12 +150,9 @@ class x extends d {
149
150
  createonly: !a
150
151
  }
151
152
  );
152
- if (c.data?.errors)
153
- throw new Error(c.data.errors[0].info, { cause: c });
154
- return c;
155
153
  }
156
154
  }
157
155
  export {
158
- x as PluginQuickRedirect
156
+ v as PluginQuickRedirect
159
157
  };
160
- //# sourceMappingURL=index-CeXR4lOu.js.map
158
+ //# sourceMappingURL=index-CBQsBfc2.js.map
@@ -1 +1 @@
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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"}
1
+ {"version":3,"file":"index-CBQsBfc2.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 return wikiPage.edit(\n {\n text: content,\n summary: reason,\n },\n {\n createonly: !overwrite,\n }\n )\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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"}
@@ -1,5 +1,5 @@
1
1
  import { j as Ge, P as Fi, F as Ri } from "./index-CvhkVj_L.js";
2
- import { B as Ni, I as Di } from "./index-COlXHFRg.js";
2
+ import { B as Ni, I as Di } from "./index-9Z4ds-WM.js";
3
3
  /**
4
4
  * @vue/shared v3.5.22
5
5
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -4689,7 +4689,7 @@ const fc = { class: "preferences-ui-app" }, hc = { class: "tabs" }, dc = ["onCli
4689
4689
  for (const [n, r] of t)
4690
4690
  s[n] = r;
4691
4691
  return s;
4692
- }, _c = /* @__PURE__ */ gc(mc, [["__scopeId", "data-v-e89c782f"]]);
4692
+ }, _c = /* @__PURE__ */ gc(mc, [["__scopeId", "data-v-571b939a"]]);
4693
4693
  var vc = Object.create, _n = Object.defineProperty, bc = Object.getOwnPropertyDescriptor, Ti = (e, t) => (t = Symbol[e]) ? t : Symbol.for("Symbol." + e), $i = (e) => {
4694
4694
  throw TypeError(e);
4695
4695
  }, yc = (e, t, s) => t in e ? _n(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, xc = (e, t) => _n(e, "name", { value: t, configurable: !0 }), Cc = (e) => [, , , vc(e?.[Ti("metadata")] ?? null)], Sc = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], Ai = (e) => e !== void 0 && typeof e != "function" ? $i("Function expected") : e, wc = (e, t, s, n, r) => ({ kind: Sc[e], name: t, metadata: n, addInitializer: (i) => s._ ? $i("Already initialized") : r.push(Ai(i || null)) }), Ec = (e, t) => yc(t, Ti("metadata"), e[3]), Tc = (e, t, s, n) => {
@@ -4787,4 +4787,4 @@ Tc(vn, 1, zs);
4787
4787
  export {
4788
4788
  zs as PluginPreferencesUI
4789
4789
  };
4790
- //# sourceMappingURL=index-mntCdHRr.js.map
4790
+ //# sourceMappingURL=index-CNsB3Vcb.js.map