From cf6a74c13c75c4c207c0d466e329cdc241e754a5 Mon Sep 17 00:00:00 2001 From: Bhsd <2545473905@qq.com> Date: Thu, 20 Nov 2025 12:45:46 +0800 Subject: [PATCH 1/3] fix(wiki-editor): no duplicate buttons WikiEditor toolbars are automatically loaded for textareas with `id="wpTextbox1"`. close #11 --- packages/wiki-editor/src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/wiki-editor/src/index.ts b/packages/wiki-editor/src/index.ts index d3425a6..2c9582e 100644 --- a/packages/wiki-editor/src/index.ts +++ b/packages/wiki-editor/src/index.ts @@ -27,9 +27,10 @@ export default defineIPEPlugin({ if (!textarea || !registered) { return } - await mw.loader.using(['ext.wikiEditor']) if (typeof window.mw?.addWikiEditor === 'function') { window.mw.addWikiEditor($(textarea)) + } else { + await mw.loader.using(['ext.wikiEditor']) } }) }, From 639d4263f11e7a094c1ebe9d226241abfa53fed8 Mon Sep 17 00:00:00 2001 From: Bhsd <2545473905@qq.com> Date: Thu, 20 Nov 2025 12:49:48 +0800 Subject: [PATCH 2/3] refactor(wiki-editor): no need for async functions --- packages/wiki-editor/src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wiki-editor/src/index.ts b/packages/wiki-editor/src/index.ts index 2c9582e..a9ad003 100644 --- a/packages/wiki-editor/src/index.ts +++ b/packages/wiki-editor/src/index.ts @@ -19,7 +19,7 @@ export default defineIPEPlugin({ name: 'wiki-editor', apply(ctx) { ctx.set('plugin:wiki-editor', ctx.scope) - ctx.on('quick-edit/wiki-page', async (payload) => { + ctx.on('quick-edit/wiki-page', (payload) => { const textarea = payload.modal .get$content() .querySelector('textarea[name="text"]')! @@ -30,7 +30,7 @@ export default defineIPEPlugin({ if (typeof window.mw?.addWikiEditor === 'function') { window.mw.addWikiEditor($(textarea)) } else { - await mw.loader.using(['ext.wikiEditor']) + mw.loader.load(['ext.wikiEditor']) } }) }, From 59c8acc7985988eecf4fc07c0e8d55d48eec3abe Mon Sep 17 00:00:00 2001 From: Bhsd <2545473905@qq.com> Date: Thu, 20 Nov 2025 13:06:12 +0800 Subject: [PATCH 3/3] refactor(code-mirror): do not load `@bhsd/codemirror-mediawiki` twice There are two entries of `@bhsd/codemirror-mediawiki`: [wiki.min.js](https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/wiki.min.js) is IIFE and [mw.min.js](https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/mw.min.js) is ESM. Wikiplus uses wiki.min.js while IPE uses mw.min.js, which means the package may be loaded twice on the same page. --- packages/code-mirror/src/index.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/code-mirror/src/index.ts b/packages/code-mirror/src/index.ts index 07c2bba..a7b55d8 100644 --- a/packages/code-mirror/src/index.ts +++ b/packages/code-mirror/src/index.ts @@ -21,11 +21,16 @@ export default defineIPEPlugin({ ctx.on( 'quick-edit/wiki-page', async ({ modal, wikiPage: { contentmodel, ns, title } }) => { - const pkg = await import( - // @ts-ignore - /* @vite-ignore */ 'https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/mw.min.js' - ) - const { CodeMirror } = pkg + let CodeMirror + if (typeof CodeMirror6 === 'function') { + CodeMirror = CodeMirror6 + } else { + const pkg = await import( + // @ts-ignore + /* @vite-ignore */ 'https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/mw.min.js' + ); + ({ CodeMirror } = pkg) + } CodeMirror.fromTextArea( modal .get$content()