From cca99913d7ff354298c9c4db0b4c99ea2bdbad9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=87=B1=E9=B5=AC?= Date: Wed, 26 Nov 2025 17:26:05 +0800 Subject: [PATCH 1/2] Fix (Saving Images): Fixed a window proxy issue when saving images in the micro-frontend framework. Added the `pickEventView` function to handle the window proxy issue in the micro-frontend framework, ensuring that the save image event is triggered correctly in different environments. --- src/component/toolbox/feature/SaveAsImage.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/component/toolbox/feature/SaveAsImage.ts b/src/component/toolbox/feature/SaveAsImage.ts index 815d4c1755..691236a2fd 100644 --- a/src/component/toolbox/feature/SaveAsImage.ts +++ b/src/component/toolbox/feature/SaveAsImage.ts @@ -42,6 +42,21 @@ export interface ToolboxSaveAsImageFeatureOption extends ToolboxFeatureOption { lang?: string[] } +function pickEventView(): Window { + try { + void new MouseEvent("click", { view: window?.rawWindow || window }); + return window?.rawWindow || window; + } catch { + if (document.defaultView) { + try { + void new MouseEvent("click", { view: document.defaultView }); + return document.defaultView; + } catch {} + } + return window; + } +} + class SaveAsImage extends ToolboxFeature { onclick(ecModel: GlobalModel, api: ExtensionAPI) { @@ -66,7 +81,7 @@ class SaveAsImage extends ToolboxFeature { $a.href = url; const evt = new MouseEvent('click', { // some micro front-end framework, window maybe is a Proxy - view: document.defaultView, + view: pickEventView(), bubbles: true, cancelable: false }); From 62c847f59fc586fb8f8e5b844994b9cdaa220a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=87=B1=E9=B5=AC?= Date: Thu, 27 Nov 2025 11:14:55 +0800 Subject: [PATCH 2/2] fix(toolbox): Fixes the window type check issue in SaveAsImage. --- src/component/toolbox/feature/SaveAsImage.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/component/toolbox/feature/SaveAsImage.ts b/src/component/toolbox/feature/SaveAsImage.ts index 691236a2fd..b7ac5ba718 100644 --- a/src/component/toolbox/feature/SaveAsImage.ts +++ b/src/component/toolbox/feature/SaveAsImage.ts @@ -42,10 +42,14 @@ export interface ToolboxSaveAsImageFeatureOption extends ToolboxFeatureOption { lang?: string[] } +interface ProxyWindow extends Window { + rawWindow?: Window +} + function pickEventView(): Window { try { - void new MouseEvent("click", { view: window?.rawWindow || window }); - return window?.rawWindow || window; + void new MouseEvent("click", { view: (window as ProxyWindow)?.rawWindow || window }); + return (window as ProxyWindow)?.rawWindow || window; } catch { if (document.defaultView) { try {