diff --git a/packages/designer/src/builtin-simulator/host.ts b/packages/designer/src/builtin-simulator/host.ts index cdb7642a5..5e6fc06a6 100644 --- a/packages/designer/src/builtin-simulator/host.ts +++ b/packages/designer/src/builtin-simulator/host.ts @@ -4,7 +4,6 @@ import { reaction, computed, getPublicPath, - focusTracker, engineConfig, globalLocale, IReactionPublic, @@ -519,7 +518,8 @@ export class BuiltinSimulatorHost implements ISimulatorHost { let editor: Editor; @@ -45,6 +48,8 @@ describe('Host 测试', () => { const innerPlugins = new LowCodePluginManager(pluginContextApiAssembler); const innerWorkspace = new InnerWorkspace(() => {}, {}); const workspace = new Workspace(innerWorkspace); + const innerSkeleton = new InnerSkeleton(editor); + editor.set('skeleton' as any, innerSkeleton); editor.set('innerHotkey', new InnerHotkey()) editor.set('setters', new Setters(new InnerSetters())); editor.set('innerPlugins' as any, innerPlugins); diff --git a/packages/editor-core/src/utils/focus-tracker.ts b/packages/editor-core/src/utils/focus-tracker.ts index cb88dfc56..23d509053 100644 --- a/packages/editor-core/src/utils/focus-tracker.ts +++ b/packages/editor-core/src/utils/focus-tracker.ts @@ -1,4 +1,8 @@ export class FocusTracker { + private actives: Focusable[] = []; + + private modals: Array<{ checkDown: (e: MouseEvent) => boolean; checkOpen: () => boolean }> = []; + mount(win: Window) { const checkDown = (e: MouseEvent) => { if (this.checkModalDown(e)) { @@ -16,14 +20,10 @@ export class FocusTracker { }; } - private actives: Focusable[] = []; - get first() { return this.actives[0]; } - private modals: Array<{ checkDown: (e: MouseEvent) => boolean; checkOpen: () => boolean }> = []; - addModal(checkDown: (e: MouseEvent) => boolean, checkOpen: () => boolean) { this.modals.push({ checkDown, @@ -154,7 +154,3 @@ export class Focusable { } } } - -export const focusTracker = new FocusTracker(); - -focusTracker.mount(window); diff --git a/packages/editor-skeleton/src/layouts/left-float-pane.tsx b/packages/editor-skeleton/src/layouts/left-float-pane.tsx index 0be5ea6c3..7df6993bb 100644 --- a/packages/editor-skeleton/src/layouts/left-float-pane.tsx +++ b/packages/editor-skeleton/src/layouts/left-float-pane.tsx @@ -1,6 +1,6 @@ import { Component, Fragment } from 'react'; import classNames from 'classnames'; -import { observer, Focusable, focusTracker } from '@alilc/lowcode-editor-core'; +import { observer, Focusable } from '@alilc/lowcode-editor-core'; import { Area } from '../area'; import { Panel } from '../widget/panel'; import { PanelConfig } from '../types'; @@ -31,7 +31,7 @@ export default class LeftFloatPane extends Component<{ area: Area { const target = e.target as HTMLElement; if (!target) { diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts index 616e7f017..883643404 100644 --- a/packages/editor-skeleton/src/skeleton.ts +++ b/packages/editor-skeleton/src/skeleton.ts @@ -1,4 +1,4 @@ -import { action, makeObservable, obx, engineConfig, IEditor } from '@alilc/lowcode-editor-core'; +import { action, makeObservable, obx, engineConfig, IEditor, FocusTracker } from '@alilc/lowcode-editor-core'; import { DockConfig, PanelConfig, @@ -83,6 +83,8 @@ export interface ISkeleton extends Omit }> area.skeleton.editor.removeListener('designer.drag', triggerClose); }; - this.focusing = focusTracker.create({ + this.focusing = area.skeleton.focusTracker.create({ range: (e) => { const target = e.target as HTMLElement; if (!target) {