@inpageedit/core 0.14.2 → 0.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BasePlugin-YOi2_vUo.js → BasePlugin-DD7l-5Xw.js} +2 -2
- package/dist/{BasePlugin-YOi2_vUo.js.map → BasePlugin-DD7l-5Xw.js.map} +1 -1
- package/dist/{PluginPrefSync-jTNlRQE-.js → PluginPrefSync-CbFuuC19.js} +3 -3
- package/dist/{PluginPrefSync-jTNlRQE-.js.map → PluginPrefSync-CbFuuC19.js.map} +1 -1
- package/dist/{PluginStoreApp-CGNxKXAN.js → PluginStoreApp-MbC3G9tu.js} +89 -85
- package/dist/PluginStoreApp-MbC3G9tu.js.map +1 -0
- package/dist/Preferences-C10tZMl1.js +2701 -0
- package/dist/Preferences-C10tZMl1.js.map +1 -0
- package/dist/{index-QtEF2mzS.js → index-B3jld2sl.js} +4 -4
- package/dist/{index-QtEF2mzS.js.map → index-B3jld2sl.js.map} +1 -1
- package/dist/{index-3NZkG2a3.js → index-BXNyXvre.js} +3 -3
- package/dist/{index-3NZkG2a3.js.map → index-BXNyXvre.js.map} +1 -1
- package/dist/{index-Dclp60EO.js → index-BanevHQ2.js} +3 -3
- package/dist/{index-Dclp60EO.js.map → index-BanevHQ2.js.map} +1 -1
- package/dist/index-BdHmr8jw.js +3090 -0
- package/dist/index-BdHmr8jw.js.map +1 -0
- package/dist/index-BjDTD66_.js +491 -0
- package/dist/index-BjDTD66_.js.map +1 -0
- package/dist/{index-D97lUU3h.js → index-BpQ6VGMz.js} +55 -55
- package/dist/index-BpQ6VGMz.js.map +1 -0
- package/dist/{index-D-fW3ESK.js → index-CnR6CqkM.js} +2 -2
- package/dist/{index-D-fW3ESK.js.map → index-CnR6CqkM.js.map} +1 -1
- package/dist/{index-DELHsLHS.js → index-DKCZDN-Q.js} +4 -4
- package/dist/{index-DELHsLHS.js.map → index-DKCZDN-Q.js.map} +1 -1
- package/dist/{index-BBNseJXG.js → index-DVOc6fB6.js} +3 -3
- package/dist/{index-BBNseJXG.js.map → index-DVOc6fB6.js.map} +1 -1
- package/dist/{index-D6zFqL2u.js → index-De25v1_Q.js} +3 -3
- package/dist/{index-D6zFqL2u.js.map → index-De25v1_Q.js.map} +1 -1
- package/dist/{index-BrYKe18j.js → index-DensW9qt.js} +3 -3
- package/dist/{index-BrYKe18j.js.map → index-DensW9qt.js.map} +1 -1
- package/dist/{index-DmLoihN1.js → index-WfXtYVMt.js} +134 -131
- package/dist/index-WfXtYVMt.js.map +1 -0
- package/dist/index.d.ts +21 -14
- package/dist/index.js +5 -5
- package/dist/models/index.js +7 -503
- package/dist/models/index.js.map +1 -1
- package/dist/plugins/index.js +10 -10
- package/dist/services/index.js +1 -1
- package/dist/style.css +1 -1
- package/lib/index.umd.js +11 -11
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +1 -1
- package/dist/PluginStoreApp-CGNxKXAN.js.map +0 -1
- package/dist/Preferences-BF2fcXrn.js +0 -1539
- package/dist/Preferences-BF2fcXrn.js.map +0 -1
- package/dist/index-C3m6ng6b.js +0 -4245
- package/dist/index-C3m6ng6b.js.map +0 -1
- package/dist/index-D97lUU3h.js.map +0 -1
- package/dist/index-DmLoihN1.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-D6zFqL2u.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
|
+
{"version":3,"file":"index-De25v1_Q.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,6 +1,6 @@
|
|
|
1
1
|
import { j as a, P as S } from "./index-CM_6yF2v.js";
|
|
2
|
-
import { R as E, I as j, S as k } from "./Preferences-
|
|
3
|
-
import { B as q } from "./BasePlugin-
|
|
2
|
+
import { R as E, I as j, S as k } from "./Preferences-C10tZMl1.js";
|
|
3
|
+
import { B as q } from "./BasePlugin-DD7l-5Xw.js";
|
|
4
4
|
import { T as F } from "./index-DD5CVCfD.js";
|
|
5
5
|
import { C as v, I } from "./InputBox-nQKtiWtZ.js";
|
|
6
6
|
var T = Object.create, p = Object.defineProperty, B = Object.getOwnPropertyDescriptor, b = (t, e) => (e = Symbol[t]) ? e : Symbol.for("Symbol." + t), _ = (t) => {
|
|
@@ -176,4 +176,4 @@ R(g, 1, h);
|
|
|
176
176
|
export {
|
|
177
177
|
h as PluginQuickMove
|
|
178
178
|
};
|
|
179
|
-
//# sourceMappingURL=index-
|
|
179
|
+
//# sourceMappingURL=index-DensW9qt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BrYKe18j.js","sources":["../src/plugins/quick-move/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickMove: PluginQuickMove\n }\n interface Events {\n 'quick-move/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickMoveOptions>\n }): void\n 'quick-move/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-move/submit'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n payload: MovePageOptions\n }): void\n }\n interface PreferencesMap {\n 'quickMove.reason': string\n }\n}\n\nexport interface MovePageOptions {\n from: string\n to: string\n reason?: string\n movetalk?: boolean\n movesubpages?: boolean\n noredirect?: boolean\n}\nexport interface QuickMoveOptions extends Partial<MovePageOptions> {\n lockFromField?: boolean\n lockToField?: boolean\n}\n\n@RegisterPreferences(\n Schema.object({\n 'quickMove.reason': Schema.string().default('[IPE-NEXT] Quick move'),\n })\n .description('Quick move options')\n .extra('category', 'editor')\n)\n@Inject(['modal', 'wiki', '$'])\nexport class PluginQuickMove extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-move')\n ctx.set('quickMove', this)\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n })\n }\n\n private injectToolbox(ctx: InPageEdit) {\n const $ = ctx.$\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n ctx.toolbox.addButton({\n id: 'quick-move',\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-forms\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3\" />\n <path d=\"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3\" />\n <path d=\"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7\" />\n <path d=\"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1\" />\n <path d=\"M17 12h.01\" />\n <path d=\"M13 12h.01\" />\n </svg>\n ),\n tooltip: () => $`Quick Move`,\n group: 'group1',\n index: 1,\n onClick: () => {\n this.showModal(\n canEdit\n ? {\n lockFromField: true,\n from: curPageName,\n }\n : {}\n )\n },\n })\n }\n\n async showModal(options?: Partial<QuickMoveOptions>) {\n const $ = this.ctx.$\n const reason = await this.ctx.preferences.get('quickMove.reason')\n const modal = this.ctx.modal\n .createObject({\n title: $`Quick Move`,\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-move 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 movetalk: formData.get('movetalk') === 'on',\n movesubpages: formData.get('movesubpages') === 'on',\n noredirect: formData.get('noredirect') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: 'From and to are required.',\n })\n return\n }\n this.ctx.emit('quick-move/submit', { ctx: this.ctx, modal, payload: options })\n modal.setLoadingState(true)\n this.movePage(options)\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: $`Move from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Move to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <div>\n <CheckBox name=\"movetalk\" id=\"movetalk\" checked={options?.movetalk}>\n {$`Move talk page`}\n </CheckBox>\n </div>\n <div>\n <CheckBox name=\"movesubpages\" id=\"movesubpages\" checked={options?.movesubpages}>\n {$`Move subpages (up to 100)`}\n </CheckBox>\n </div>\n {this.ctx.wiki.hasRight('suppressredirect') && (\n <div>\n <CheckBox name=\"noredirect\" id=\"noredirect\" checked={options?.noredirect}>\n {$`Move without leaving a redirect`}\n </CheckBox>\n </div>\n )}\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\n </form>\n ) as HTMLElement\n )\n\n modal.setButtons([\n {\n label: $`Move`,\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 movePage(options: MovePageOptions) {\n const { from, to, reason = '', ...rest } = options\n\n if (!from || !to) {\n throw new Error('From and to titles are required.')\n }\n if (from === to) {\n throw new Error('From and to titles cannot be the same.')\n }\n\n const wikiPage = await this.ctx.wikiPage.newFromTitle(from)\n return wikiPage.moveTo(to, reason, rest)\n }\n}\n"],"names":["_PluginQuickMove_decorators","_init","_a","RegisterPreferences","Schema","Inject","PluginQuickMove","BasePlugin","ctx","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","error","TwinSwapInput","CheckBox","InputBox","from","to","rest","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-DensW9qt.js","sources":["../src/plugins/quick-move/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickMove: PluginQuickMove\n }\n interface Events {\n 'quick-move/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickMoveOptions>\n }): void\n 'quick-move/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-move/submit'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n payload: MovePageOptions\n }): void\n }\n interface PreferencesMap {\n 'quickMove.reason': string\n }\n}\n\nexport interface MovePageOptions {\n from: string\n to: string\n reason?: string\n movetalk?: boolean\n movesubpages?: boolean\n noredirect?: boolean\n}\nexport interface QuickMoveOptions extends Partial<MovePageOptions> {\n lockFromField?: boolean\n lockToField?: boolean\n}\n\n@RegisterPreferences(\n Schema.object({\n 'quickMove.reason': Schema.string().default('[IPE-NEXT] Quick move'),\n })\n .description('Quick move options')\n .extra('category', 'editor')\n)\n@Inject(['modal', 'wiki', '$'])\nexport class PluginQuickMove extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-move')\n ctx.set('quickMove', this)\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n })\n }\n\n private injectToolbox(ctx: InPageEdit) {\n const $ = ctx.$\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n ctx.toolbox.addButton({\n id: 'quick-move',\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-forms\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3\" />\n <path d=\"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3\" />\n <path d=\"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7\" />\n <path d=\"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1\" />\n <path d=\"M17 12h.01\" />\n <path d=\"M13 12h.01\" />\n </svg>\n ),\n tooltip: () => $`Quick Move`,\n group: 'group1',\n index: 1,\n onClick: () => {\n this.showModal(\n canEdit\n ? {\n lockFromField: true,\n from: curPageName,\n }\n : {}\n )\n },\n })\n }\n\n async showModal(options?: Partial<QuickMoveOptions>) {\n const $ = this.ctx.$\n const reason = await this.ctx.preferences.get('quickMove.reason')\n const modal = this.ctx.modal\n .createObject({\n title: $`Quick Move`,\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-move 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 movetalk: formData.get('movetalk') === 'on',\n movesubpages: formData.get('movesubpages') === 'on',\n noredirect: formData.get('noredirect') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: 'From and to are required.',\n })\n return\n }\n this.ctx.emit('quick-move/submit', { ctx: this.ctx, modal, payload: options })\n modal.setLoadingState(true)\n this.movePage(options)\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: $`Move from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Move to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <div>\n <CheckBox name=\"movetalk\" id=\"movetalk\" checked={options?.movetalk}>\n {$`Move talk page`}\n </CheckBox>\n </div>\n <div>\n <CheckBox name=\"movesubpages\" id=\"movesubpages\" checked={options?.movesubpages}>\n {$`Move subpages (up to 100)`}\n </CheckBox>\n </div>\n {this.ctx.wiki.hasRight('suppressredirect') && (\n <div>\n <CheckBox name=\"noredirect\" id=\"noredirect\" checked={options?.noredirect}>\n {$`Move without leaving a redirect`}\n </CheckBox>\n </div>\n )}\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\n </form>\n ) as HTMLElement\n )\n\n modal.setButtons([\n {\n label: $`Move`,\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 movePage(options: MovePageOptions) {\n const { from, to, reason = '', ...rest } = options\n\n if (!from || !to) {\n throw new Error('From and to titles are required.')\n }\n if (from === to) {\n throw new Error('From and to titles cannot be the same.')\n }\n\n const wikiPage = await this.ctx.wikiPage.newFromTitle(from)\n return wikiPage.moveTo(to, reason, rest)\n }\n}\n"],"names":["_PluginQuickMove_decorators","_init","_a","RegisterPreferences","Schema","Inject","PluginQuickMove","BasePlugin","ctx","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","error","TwinSwapInput","CheckBox","InputBox","from","to","rest","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { j as i, F as _, P as
|
|
1
|
+
import { j as i, F as _, P as R } from "./index-CM_6yF2v.js";
|
|
2
2
|
import { W as h } from "./WatchlistAction-BbNAyryN.js";
|
|
3
|
-
import { m as
|
|
4
|
-
import { I as
|
|
5
|
-
import { B as
|
|
6
|
-
import { M as
|
|
7
|
-
import { I
|
|
8
|
-
import { R as
|
|
9
|
-
import { n as
|
|
10
|
-
const
|
|
11
|
-
var
|
|
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";
|
|
9
|
+
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
12
|
throw TypeError(s);
|
|
13
|
-
},
|
|
14
|
-
for (var
|
|
15
|
-
return
|
|
16
|
-
},
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
for (var g =
|
|
20
|
-
c =
|
|
21
|
-
return
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"quickEdit.editSummary":
|
|
26
|
-
"quickEdit.editMinor":
|
|
27
|
-
"quickEdit.outSideClose":
|
|
28
|
-
"quickEdit.watchList":
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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));
|
|
18
|
+
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;
|
|
22
|
+
}, 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
33
|
]).description("Watchlist options").default(h.preferences),
|
|
34
|
-
"quickEdit.keyshortcut.save":
|
|
35
|
-
"quickEdit.editFont":
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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("")
|
|
41
41
|
]).description("Font to use in quick edit's textarea").default("preferences")
|
|
42
42
|
}).description("Quick edit options").extra("category", "editor")
|
|
43
43
|
)];
|
|
44
|
-
let S = class
|
|
44
|
+
let S = class D extends (L = z) {
|
|
45
45
|
constructor(e) {
|
|
46
46
|
super(e, {}, "quick-edit"), this.ctx = e, this.DEFAULT_OPTIONS = {
|
|
47
47
|
title: "",
|
|
@@ -52,7 +52,7 @@ let S = class L extends (A = Q) {
|
|
|
52
52
|
editSummary: "",
|
|
53
53
|
createOnly: !1,
|
|
54
54
|
reloadAfterSave: !0
|
|
55
|
-
}, this.ctx.root.set("quickEdit",
|
|
55
|
+
}, this.ctx.root.set("quickEdit", $(this, "showModal"));
|
|
56
56
|
}
|
|
57
57
|
start() {
|
|
58
58
|
this.ctx.inject(["toolbox"], (e) => {
|
|
@@ -67,22 +67,22 @@ let S = class L extends (A = Q) {
|
|
|
67
67
|
title: e
|
|
68
68
|
}), e?.page && (e.title = e.page, delete e.page), !e.title && !e.pageId && !e.revision) {
|
|
69
69
|
this.logger.warn("None of the title, pageId or revision provided. Using defaults.");
|
|
70
|
-
const
|
|
70
|
+
const r = new URLSearchParams(window.location.search), m = this.ctx.currentPage.wikiTitle;
|
|
71
71
|
e = {
|
|
72
72
|
...e,
|
|
73
|
-
title:
|
|
74
|
-
revision:
|
|
75
|
-
pageId:
|
|
73
|
+
title: m?.getPrefixedDBKey(),
|
|
74
|
+
revision: r.has("oldid") ? Number(r.get("oldid")) : void 0,
|
|
75
|
+
pageId: r.has("curid") ? Number(r.get("curid")) : void 0
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
if (!e.revision && !e.pageId && e.title) {
|
|
79
|
-
const
|
|
80
|
-
|
|
79
|
+
const r = this.ctx.wikiTitle.resolveSpecialPageTarget(e.title);
|
|
80
|
+
r && r.title.getNamespaceId() >= 0 && (e.title = r.title.getPrefixedDBKey(), e.section ??= r.section);
|
|
81
81
|
}
|
|
82
|
-
const
|
|
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 = {
|
|
83
83
|
...this.DEFAULT_OPTIONS,
|
|
84
|
-
editSummary:
|
|
85
|
-
editMinor:
|
|
84
|
+
editSummary: u,
|
|
85
|
+
editMinor: f,
|
|
86
86
|
...e
|
|
87
87
|
};
|
|
88
88
|
c.editSummary || (c.editSummary = await this.ctx.preferences.get("quickEdit.editSummary") || ""), this.ctx.emit("quick-edit/init-options", { ctx: this.ctx, options: c });
|
|
@@ -92,7 +92,7 @@ let S = class L extends (A = Q) {
|
|
|
92
92
|
// backdrop: false,
|
|
93
93
|
// draggable: true,
|
|
94
94
|
center: !1,
|
|
95
|
-
outSideClose:
|
|
95
|
+
outSideClose: d
|
|
96
96
|
}).init();
|
|
97
97
|
o.setTitle(
|
|
98
98
|
/* @__PURE__ */ i(_, { children: [
|
|
@@ -111,7 +111,7 @@ let S = class L extends (A = Q) {
|
|
|
111
111
|
justifyContent: "center",
|
|
112
112
|
alignItems: "center"
|
|
113
113
|
},
|
|
114
|
-
children: /* @__PURE__ */ i(
|
|
114
|
+
children: /* @__PURE__ */ i(R, {})
|
|
115
115
|
}
|
|
116
116
|
)
|
|
117
117
|
), o.addButton({
|
|
@@ -123,30 +123,30 @@ let S = class L extends (A = Q) {
|
|
|
123
123
|
o.close();
|
|
124
124
|
}
|
|
125
125
|
}), o.show(), this.ctx.emit("quick-edit/show-modal", { ctx: this.ctx, modal: o, options: c });
|
|
126
|
-
let
|
|
126
|
+
let a;
|
|
127
127
|
try {
|
|
128
|
-
if (
|
|
128
|
+
if (a = await this.getWikiPageFromPayload(c), a.pageInfo.special)
|
|
129
129
|
throw new Error(t`Special page is not editable.`);
|
|
130
|
-
} catch (
|
|
130
|
+
} catch (r) {
|
|
131
131
|
o.off(o.Event.Close), o.close(), this.ctx.modal.notify("error", {
|
|
132
|
-
content:
|
|
132
|
+
content: r instanceof Error ? r.message : String(r)
|
|
133
133
|
});
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
|
-
const v = c.section === "new" ? "" :
|
|
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
137
|
o.setTitle(
|
|
138
138
|
/* @__PURE__ */ i(_, { children: [
|
|
139
|
-
g ? t`New Section` : t`Quick ${
|
|
139
|
+
g ? t`New Section` : t`Quick ${N ? "Create" : "Edit"}`,
|
|
140
140
|
": ",
|
|
141
|
-
/* @__PURE__ */ i("u", { children:
|
|
141
|
+
/* @__PURE__ */ i("u", { children: a.pageInfo.title }),
|
|
142
142
|
p ? ` (${t`Revision`} ${x})` : ""
|
|
143
143
|
] })
|
|
144
144
|
);
|
|
145
145
|
const k = [];
|
|
146
|
-
|
|
147
|
-
/* @__PURE__ */ i(
|
|
146
|
+
N && k.push(
|
|
147
|
+
/* @__PURE__ */ i(T, { title: t`Attention`, type: "important", children: /* @__PURE__ */ i("p", { children: t`This page does not exist.` }) })
|
|
148
148
|
), p && k.push(
|
|
149
|
-
/* @__PURE__ */ i(
|
|
149
|
+
/* @__PURE__ */ i(T, { title: t`Attention`, type: "warning", children: /* @__PURE__ */ i(
|
|
150
150
|
"p",
|
|
151
151
|
{
|
|
152
152
|
innerHTML: t`You are editing a <em>historical version</em>; the content is not the latest!`
|
|
@@ -156,7 +156,7 @@ let S = class L extends (A = Q) {
|
|
|
156
156
|
ctx: this.ctx,
|
|
157
157
|
options: c,
|
|
158
158
|
modal: o,
|
|
159
|
-
wikiPage:
|
|
159
|
+
wikiPage: a,
|
|
160
160
|
editNotices: k
|
|
161
161
|
});
|
|
162
162
|
const b = /* @__PURE__ */ i("form", { className: "ipe-quickEdit__form", children: [
|
|
@@ -168,7 +168,7 @@ let S = class L extends (A = Q) {
|
|
|
168
168
|
style: { display: "flex", flexDirection: "column", gap: "1rem" },
|
|
169
169
|
children: [
|
|
170
170
|
c.section === "new" && /* @__PURE__ */ i(_, { children: /* @__PURE__ */ i(
|
|
171
|
-
|
|
171
|
+
I,
|
|
172
172
|
{
|
|
173
173
|
label: t`Section title`,
|
|
174
174
|
id: "summary",
|
|
@@ -180,8 +180,8 @@ let S = class L extends (A = Q) {
|
|
|
180
180
|
/* @__PURE__ */ i(
|
|
181
181
|
"textarea",
|
|
182
182
|
{
|
|
183
|
-
className: `ipe-quickEdit__textarea ${
|
|
184
|
-
style: { fontFamily:
|
|
183
|
+
className: `ipe-quickEdit__textarea ${w.className}`,
|
|
184
|
+
style: { fontFamily: w.fontFamily },
|
|
185
185
|
name: "text",
|
|
186
186
|
id: "wpTextbox1",
|
|
187
187
|
children: v
|
|
@@ -201,7 +201,7 @@ let S = class L extends (A = Q) {
|
|
|
201
201
|
marginTop: "1rem"
|
|
202
202
|
},
|
|
203
203
|
children: [
|
|
204
|
-
!g && /* @__PURE__ */ i(
|
|
204
|
+
!g && /* @__PURE__ */ i(I, { label: t`Summary`, id: "summary", name: "summary", value: c.editSummary }),
|
|
205
205
|
/* @__PURE__ */ i("div", { className: "ipe-input-box", children: [
|
|
206
206
|
/* @__PURE__ */ i("label", { htmlFor: "watchlist", style: { display: "block" }, children: t`Watchlist` }),
|
|
207
207
|
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
|
|
@@ -209,62 +209,78 @@ let S = class L extends (A = Q) {
|
|
|
209
209
|
h.nochange,
|
|
210
210
|
h.watch,
|
|
211
211
|
h.unwatch
|
|
212
|
-
].map((
|
|
213
|
-
|
|
212
|
+
].map((r) => /* @__PURE__ */ i(
|
|
213
|
+
Y,
|
|
214
214
|
{
|
|
215
215
|
name: "watchlist",
|
|
216
|
-
value:
|
|
217
|
-
inputProps: { checked:
|
|
218
|
-
children: t`watchlist.${
|
|
216
|
+
value: r,
|
|
217
|
+
inputProps: { checked: n === r },
|
|
218
|
+
children: t`watchlist.${r}`
|
|
219
219
|
},
|
|
220
|
-
|
|
220
|
+
r
|
|
221
221
|
)) })
|
|
222
222
|
] }),
|
|
223
223
|
/* @__PURE__ */ i("div", { style: { display: "flex", gap: "1rem" }, children: [
|
|
224
|
-
/* @__PURE__ */ i(
|
|
225
|
-
/* @__PURE__ */ i(
|
|
224
|
+
/* @__PURE__ */ i(C, { name: "minor", id: "minor", checked: c.editMinor, children: t`Minor edit` }),
|
|
225
|
+
/* @__PURE__ */ i(C, { name: "reloadAfterSave", id: "reloadAfterSave", checked: c.reloadAfterSave, children: t`Reload after save` })
|
|
226
226
|
] })
|
|
227
227
|
]
|
|
228
228
|
}
|
|
229
229
|
),
|
|
230
230
|
!1
|
|
231
231
|
] });
|
|
232
|
-
o.setContent(b)
|
|
232
|
+
o.setContent(b);
|
|
233
|
+
let y = !1;
|
|
234
|
+
o.addButton(
|
|
233
235
|
{
|
|
234
236
|
side: "left",
|
|
235
237
|
className: "is-primary submit-btn",
|
|
236
238
|
label: t`Submit`,
|
|
237
239
|
keyPress: await this.ctx.preferences.get("quickEdit.keyshortcut.save") || void 0,
|
|
238
|
-
method: () => {
|
|
239
|
-
const
|
|
240
|
-
o.setLoadingState(!0)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
240
|
+
method: async () => {
|
|
241
|
+
const r = new FormData(b);
|
|
242
|
+
o.setLoadingState(!0);
|
|
243
|
+
try {
|
|
244
|
+
await this.handleSubmit({
|
|
245
|
+
wikiPage: a,
|
|
246
|
+
text: r.get("text"),
|
|
247
|
+
summary: r.get("summary"),
|
|
248
|
+
minor: r.get("minor") === "on",
|
|
249
|
+
section: c.section,
|
|
250
|
+
watchlist: n,
|
|
251
|
+
// 如果无视风险,那么就不再尝试解决冲突,直接重建页面
|
|
252
|
+
createonly: a.pageid === 0 && !y,
|
|
253
|
+
recreate: a.pageid === 0 && y
|
|
254
|
+
}), o.setOptions({
|
|
255
|
+
beforeClose: F
|
|
251
256
|
}), o.close(), this.ctx.modal.notify("success", {
|
|
252
257
|
title: t`Submission Successful`,
|
|
253
258
|
content: t`Your changes have been saved.`
|
|
254
|
-
}),
|
|
255
|
-
}
|
|
259
|
+
}), r.get("reloadAfterSave") && (await K(500), location.reload());
|
|
260
|
+
} 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", {
|
|
263
|
+
title: t`Submission Error`,
|
|
264
|
+
content: /* @__PURE__ */ i("div", { children: [
|
|
265
|
+
/* @__PURE__ */ i("p", { children: /* @__PURE__ */ i("strong", { children: m.message }) }),
|
|
266
|
+
/* @__PURE__ */ i("p", { children: t`You can try to submit again to dismiss the warnings.` })
|
|
267
|
+
] }),
|
|
268
|
+
closeAfter: 15 * 1e3
|
|
269
|
+
});
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
256
272
|
this.ctx.modal.notify("error", {
|
|
257
273
|
title: t`Submission Error`,
|
|
258
|
-
content:
|
|
259
|
-
})
|
|
260
|
-
}
|
|
274
|
+
content: m instanceof Error ? m.message : String(m)
|
|
275
|
+
});
|
|
276
|
+
}
|
|
261
277
|
}
|
|
262
278
|
},
|
|
263
279
|
0
|
|
264
280
|
), o.setOptions({
|
|
265
281
|
beforeClose: () => {
|
|
266
|
-
const
|
|
267
|
-
return (b.querySelector("textarea")?.value || "") ===
|
|
282
|
+
const r = a.revisions[0]?.content || "";
|
|
283
|
+
return (b.querySelector("textarea")?.value || "") === r ? !0 : (this.ctx.modal.confirm(
|
|
268
284
|
{
|
|
269
285
|
className: "is-primary",
|
|
270
286
|
title: t`Unsaved Changes`,
|
|
@@ -279,8 +295,8 @@ let S = class L extends (A = Q) {
|
|
|
279
295
|
className: "is-primary is-ghost"
|
|
280
296
|
}
|
|
281
297
|
},
|
|
282
|
-
(
|
|
283
|
-
beforeClose:
|
|
298
|
+
(j) => (j && (o.setOptions({
|
|
299
|
+
beforeClose: F
|
|
284
300
|
}), o.close()), !0)
|
|
285
301
|
), !1);
|
|
286
302
|
}
|
|
@@ -288,42 +304,29 @@ let S = class L extends (A = Q) {
|
|
|
288
304
|
ctx: this.ctx,
|
|
289
305
|
options: c,
|
|
290
306
|
modal: o,
|
|
291
|
-
wikiPage:
|
|
307
|
+
wikiPage: a
|
|
292
308
|
});
|
|
293
|
-
const
|
|
294
|
-
window.addEventListener("beforeunload",
|
|
295
|
-
window.removeEventListener("beforeunload",
|
|
309
|
+
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, () => {
|
|
311
|
+
window.removeEventListener("beforeunload", q);
|
|
296
312
|
});
|
|
297
313
|
}
|
|
298
314
|
async handleSubmit(e) {
|
|
299
|
-
const
|
|
315
|
+
const { wikiPage: t, ...d } = e;
|
|
300
316
|
return this.ctx.emit("quick-edit/submit", {
|
|
301
317
|
ctx: this.ctx,
|
|
302
318
|
wikiPage: t,
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
watchlist: f
|
|
308
|
-
}), t.edit(
|
|
309
|
-
{
|
|
310
|
-
summary: l,
|
|
311
|
-
text: r,
|
|
312
|
-
watchlist: f,
|
|
313
|
-
section: c
|
|
314
|
-
},
|
|
315
|
-
{
|
|
316
|
-
minor: d,
|
|
317
|
-
createonly: m
|
|
318
|
-
}
|
|
319
|
-
);
|
|
319
|
+
...d
|
|
320
|
+
}), t.edit({
|
|
321
|
+
...d
|
|
322
|
+
});
|
|
320
323
|
}
|
|
321
324
|
static {
|
|
322
325
|
this.BUILT_IN_FONT_OPTIONS = ["preferences", "monospace", "sans-serif", "serif"];
|
|
323
326
|
}
|
|
324
327
|
async getEditFontOptions() {
|
|
325
328
|
const e = await this.ctx.preferences.get("quickEdit.editFont");
|
|
326
|
-
return
|
|
329
|
+
return D.BUILT_IN_FONT_OPTIONS.includes(e) ? {
|
|
327
330
|
className: `mw-editfont-${e === "preferences" ? this.ctx.wiki.userOptions?.editfont || "monospace" : e}`,
|
|
328
331
|
fontFamily: ""
|
|
329
332
|
} : {
|
|
@@ -341,7 +344,7 @@ let S = class L extends (A = Q) {
|
|
|
341
344
|
throw new Error("Invalid payload");
|
|
342
345
|
}
|
|
343
346
|
async injectToolbox(e) {
|
|
344
|
-
const t = this.ctx.$,
|
|
347
|
+
const t = this.ctx.$, d = this.ctx.currentPage.wikiTitle, n = d && d.getNamespaceId() >= 0;
|
|
345
348
|
e.toolbox.addButton({
|
|
346
349
|
id: "quick-edit",
|
|
347
350
|
group: "group1",
|
|
@@ -368,14 +371,14 @@ let S = class L extends (A = Q) {
|
|
|
368
371
|
}
|
|
369
372
|
),
|
|
370
373
|
buttonProps: {
|
|
371
|
-
disabled: !
|
|
374
|
+
disabled: !n
|
|
372
375
|
},
|
|
373
|
-
tooltip: () =>
|
|
376
|
+
tooltip: () => n ? t`Quick Edit` : t`Not editable`,
|
|
374
377
|
onClick: () => {
|
|
375
|
-
const
|
|
378
|
+
const u = new URLSearchParams(window.location.search).get("oldid");
|
|
376
379
|
this.showModal({
|
|
377
|
-
title:
|
|
378
|
-
revision:
|
|
380
|
+
title: d?.getPrefixedText(),
|
|
381
|
+
revision: u ? Number(u) : void 0
|
|
379
382
|
});
|
|
380
383
|
}
|
|
381
384
|
});
|
|
@@ -384,11 +387,11 @@ let S = class L extends (A = Q) {
|
|
|
384
387
|
e.toolbox.removeButton("quick-edit");
|
|
385
388
|
}
|
|
386
389
|
};
|
|
387
|
-
|
|
388
|
-
S =
|
|
389
|
-
|
|
390
|
-
let
|
|
390
|
+
P = V(L);
|
|
391
|
+
S = se(P, 0, "PluginQuickEdit", A, S);
|
|
392
|
+
ie(P, 1, S);
|
|
393
|
+
let he = S;
|
|
391
394
|
export {
|
|
392
|
-
|
|
395
|
+
he as PluginQuickEdit
|
|
393
396
|
};
|
|
394
|
-
//# sourceMappingURL=index-
|
|
397
|
+
//# sourceMappingURL=index-WfXtYVMt.js.map
|