diff --git a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx index a42bb4848..bd5c71404 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -13,7 +13,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any state = { shouldIgnoreRoot: false, }; - private main = new SettingsMain(this.props.editor); + private main = new SettingsMain(globalContext.get('editor')); @obx.ref private _activeKey?: any; @@ -25,7 +25,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any componentDidMount() { this.setShouldIgnoreRoot(); - this.props.editor.on('designer.selection.change', () => { + globalContext.get('editor').on('designer.selection.change', () => { if (!engineConfig.get('stayOnTheSameSettingTab', false)) { this._activeKey = null; } @@ -33,7 +33,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any } async setShouldIgnoreRoot() { - const designMode = await this.props.editor.get('designMode'); + const designMode = await globalContext.get('editor').get('designMode'); this.setState({ shouldIgnoreRoot: designMode === 'live', }); diff --git a/packages/editor-skeleton/src/widget/dock.ts b/packages/editor-skeleton/src/widget/dock.ts index 4369b07c4..bf287f9cf 100644 --- a/packages/editor-skeleton/src/widget/dock.ts +++ b/packages/editor-skeleton/src/widget/dock.ts @@ -1,6 +1,7 @@ import { ReactNode, createElement } from 'react'; import { makeObservable, obx } from '@ali/lowcode-editor-core'; import { uniqueId, createContent } from '@ali/lowcode-utils'; +import { getEvent } from '@ali/lowcode-shell'; import { DockConfig } from '../types'; import { Skeleton } from '../skeleton'; import { DockView, WidgetView } from '../components/widget-views'; @@ -48,7 +49,7 @@ export default class Dock implements IWidget { this._body = createContent(content, { ...contentProps, config: this.config, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), }); } else { this._body = createElement(DockView, props); diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index c0d6ebff0..181e149c3 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -4,6 +4,7 @@ import { obx, computed, makeObservable } from '@ali/lowcode-editor-core'; import { uniqueId, createContent } from '@ali/lowcode-utils'; import { TitleContent } from '@ali/lowcode-types'; import WidgetContainer from './widget-container'; +import { getEvent } from '@ali/lowcode-shell'; import { PanelConfig, HelpTipConfig } from '../types'; import { TitledPanelView, TabsPanelView, PanelView } from '../components/widget-views'; import { Skeleton } from '../skeleton'; @@ -51,7 +52,7 @@ export default class Panel implements IWidget { const { content, contentProps } = this.config; return createContent(content, { ...contentProps, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), config: this.config, panel: this, pane: this, diff --git a/packages/editor-skeleton/src/widget/widget.ts b/packages/editor-skeleton/src/widget/widget.ts index 9dae8ff1c..ffc32bd41 100644 --- a/packages/editor-skeleton/src/widget/widget.ts +++ b/packages/editor-skeleton/src/widget/widget.ts @@ -1,6 +1,7 @@ import { ReactNode, createElement } from 'react'; import { makeObservable, obx } from '@ali/lowcode-editor-core'; import { createContent, uniqueId } from '@ali/lowcode-utils'; +import { getEvent } from '@ali/lowcode-shell'; import { WidgetConfig, IWidgetBaseConfig } from '../types'; import { Skeleton } from '../skeleton'; import { WidgetView } from '../components/widget-views'; @@ -56,7 +57,7 @@ export default class Widget implements IWidget { this._body = createContent(content, { ...contentProps, config: this.config, - editor: this.skeleton.editor, + editor: getEvent(this.skeleton.editor), }); return this._body; } diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index ac90ba345..435ff8a26 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -40,10 +40,12 @@ globalContext.register(editor, 'editor'); const innerSkeleton = new InnerSkeleton(editor); editor.set(Skeleton, innerSkeleton); editor.set('skeleton' as any, innerSkeleton); +engineConfig.set('skeleton' as any, innerSkeleton); const designer = new Designer({ editor }); editor.set(Designer, designer); editor.set('designer' as any, designer); +engineConfig.set('designer' as any, designer); const plugins = new LowCodePluginManager(editor).toProxy(); editor.set('plugins' as any, plugins); diff --git a/packages/plugin-designer/src/index.tsx b/packages/plugin-designer/src/index.tsx index 15fdd5ac4..86fba3917 100644 --- a/packages/plugin-designer/src/index.tsx +++ b/packages/plugin-designer/src/index.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react'; -import { Editor, engineConfig } from '@ali/lowcode-editor-core'; +import { Editor, engineConfig, globalContext } from '@ali/lowcode-editor-core'; import { DesignerView, Designer } from '@ali/lowcode-designer'; import { Asset } from '@ali/lowcode-utils'; import './index.scss'; @@ -46,7 +46,7 @@ export default class DesignerPlugin extends PureComponent { - const { editor } = this.props; + const editor = globalContext.get('editor'); editor.set('designer', designer); editor.emit('designer.ready', designer); editor.onGot('schema', (schema) => { @@ -94,7 +94,7 @@ export default class DesignerPlugin extends PureComponent { render() { return ( { - private main = new OutlineMain(this.props.editor, this.props.config.name || this.props.config.pluginKey); + private main = new OutlineMain(globalContext.get('editor'), this.props.config.name || this.props.config.pluginKey); componentWillUnmount() { this.main.purge(); diff --git a/packages/shell/src/event.ts b/packages/shell/src/event.ts index 65bc58a88..0856c8313 100644 --- a/packages/shell/src/event.ts +++ b/packages/shell/src/event.ts @@ -1,4 +1,4 @@ -import { Editor as InnerEditor } from '@ali/lowcode-editor-core'; +import { Editor as InnerEditor, globalContext } from '@ali/lowcode-editor-core'; import { getLogger } from '@ali/lowcode-utils'; import { editorSymbol } from './symbols'; @@ -12,6 +12,7 @@ export default class Event { private readonly [editorSymbol]: InnerEditor; private readonly options: EventOptions; + // TODO: /** * 内核触发的事件名 */ @@ -41,3 +42,7 @@ export default class Event { this[editorSymbol].emit(`${this.options.prefix}:${event}`, ...args); } } + +export function getEvent(editor: InnerEditor, options: any = { prefix: 'common' }) { + return new Event(editor, options); +} diff --git a/packages/shell/src/index.ts b/packages/shell/src/index.ts index 3b1338e51..5e55b0c29 100644 --- a/packages/shell/src/index.ts +++ b/packages/shell/src/index.ts @@ -1,7 +1,7 @@ import Detecting from './detecting'; // import Dragon from './dragon'; import DocumentModel from './document-model'; -import Event from './event'; +import Event, { getEvent } from './event'; import History from './history'; import Material from './material'; import Node from './node'; @@ -35,4 +35,5 @@ export { Hotkey, Skeleton, SettingPropEntry, + getEvent, }; \ No newline at end of file