From bbfff14eb8221bfda78ce1e11395918409ba5bc3 Mon Sep 17 00:00:00 2001 From: jiuqingsong Date: Tue, 4 Feb 2025 15:47:57 -0800 Subject: [PATCH] Fix bridge plugin to be able to handle new event --- .../lib/corePlugins/BridgePlugin.ts | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts b/packages/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts index 5ddc1f36732..43804e5f667 100644 --- a/packages/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts +++ b/packages/roosterjs-editor-adapter/lib/corePlugins/BridgePlugin.ts @@ -126,15 +126,15 @@ export class BridgePlugin implements ContextMenuProvider { onPluginEvent(event: PluginEvent) { const oldEvent = this.cacheGetOldEvent(event); - if (oldEvent) { - const exclusivelyHandleEventPlugin = this.cacheGetExclusivelyHandlePlugin(event); + const exclusivelyHandleEventPlugin = this.cacheGetExclusivelyHandlePlugin(event); - if (exclusivelyHandleEventPlugin) { - this.handleEvent(exclusivelyHandleEventPlugin, oldEvent, event); - } else { - this.legacyPlugins.forEach(plugin => this.handleEvent(plugin, oldEvent, event)); - } + if (exclusivelyHandleEventPlugin) { + this.handleEvent(exclusivelyHandleEventPlugin, oldEvent, event); + } else { + this.legacyPlugins.forEach(plugin => this.handleEvent(plugin, oldEvent, event)); + } + if (oldEvent) { Object.assign(event, oldEventToNewEvent(oldEvent, event)); } } @@ -165,17 +165,15 @@ export class BridgePlugin implements ContextMenuProvider { return cacheGetEventData(event, ExclusivelyHandleEventPluginKey, event => { const oldEvent = this.cacheGetOldEvent(event); - if (oldEvent) { - for (let i = 0; i < this.legacyPlugins.length; i++) { - const plugin = this.legacyPlugins[i]; + for (let i = 0; i < this.legacyPlugins.length; i++) { + const plugin = this.legacyPlugins[i]; - if (plugin.willHandleEventExclusively?.(oldEvent)) { - return plugin; - } + if (oldEvent && plugin.willHandleEventExclusively?.(oldEvent)) { + return plugin; + } - if (isMixedPlugin(plugin) && plugin.willHandleEventExclusivelyV9?.(event)) { - return plugin; - } + if (isMixedPlugin(plugin) && plugin.willHandleEventExclusivelyV9?.(event)) { + return plugin; } } @@ -200,10 +198,12 @@ export class BridgePlugin implements ContextMenuProvider { private handleEvent( plugin: LegacyEditorPlugin, - oldEvent: LegacyPluginEvent, + oldEvent: LegacyPluginEvent | undefined, newEvent: PluginEvent ) { - plugin.onPluginEvent?.(oldEvent); + if (oldEvent && plugin.onPluginEvent) { + plugin.onPluginEvent(oldEvent); + } if (isMixedPlugin(plugin)) { plugin.onPluginEventV9?.(newEvent);