From 0f38cc8e3d0d6f2cbfeb2993f32729b9b2be4a10 Mon Sep 17 00:00:00 2001 From: JackLian Date: Thu, 22 Dec 2022 12:44:04 +0800 Subject: [PATCH] chore: merge from develop --- packages/designer/package.json | 1 - packages/designer/src/plugin/plugin-manager.ts | 9 ++++++++- .../editor-skeleton/src/components/settings/main.ts | 6 +++--- .../src/components/settings/settings-primary-pane.tsx | 10 ++++------ packages/engine/src/engine-core.ts | 4 ++-- .../src/inner-plugins/default-panel-registry.tsx | 4 +++- packages/shell/src/api/skeleton.ts | 10 ++++++++-- packages/workspace/src/base-context.ts | 4 ++-- 8 files changed, 30 insertions(+), 18 deletions(-) diff --git a/packages/designer/package.json b/packages/designer/package.json index 4b6279b2a..55fbeafea 100644 --- a/packages/designer/package.json +++ b/packages/designer/package.json @@ -26,7 +26,6 @@ }, "devDependencies": { "@alib/build-scripts": "^0.1.29", - "@alilc/lowcode-shell": "1.1.0-beta.7", "@testing-library/react": "^11.2.2", "@types/classnames": "^2.2.7", "@types/enzyme": "^3.10.12", diff --git a/packages/designer/src/plugin/plugin-manager.ts b/packages/designer/src/plugin/plugin-manager.ts index d56a29403..456124397 100644 --- a/packages/designer/src/plugin/plugin-manager.ts +++ b/packages/designer/src/plugin/plugin-manager.ts @@ -29,6 +29,7 @@ export class LowCodePluginManager implements ILowCodePluginManager { private plugins: ILowCodePluginRuntime[] = []; pluginsMap: Map = new Map(); + pluginContextMap: Map = new Map(); private pluginPreference?: PluginPreference = new Map(); @@ -39,7 +40,13 @@ export class LowCodePluginManager implements ILowCodePluginManager { } _getLowCodePluginContext = (options: IPluginContextOptions) => { - return new LowCodePluginContext(options, this.contextApiAssembler); + const { pluginName } = options; + let context = this.pluginContextMap.get(pluginName); + if (!context) { + context = new LowCodePluginContext(options, this.contextApiAssembler); + this.pluginContextMap.set(pluginName, context); + } + return context; }; isEngineVersionMatched(versionExp: string): boolean { diff --git a/packages/editor-skeleton/src/components/settings/main.ts b/packages/editor-skeleton/src/components/settings/main.ts index a930e1cd3..64b0dbef0 100644 --- a/packages/editor-skeleton/src/components/settings/main.ts +++ b/packages/editor-skeleton/src/components/settings/main.ts @@ -13,7 +13,7 @@ export class SettingsMain { private _sessionId = ''; - @obx.ref private _settings?: SettingTopEntry; + @obx.ref private _settings?: SettingTopEntry | null = null; @computed get length(): number | undefined { return this._settings?.nodes.length; @@ -23,7 +23,7 @@ export class SettingsMain { return this._settings?.componentMeta; } - get settings() { + @computed get settings() { return this._settings; } @@ -48,7 +48,7 @@ export class SettingsMain { this.disposeListener = () => { this.editor.removeListener('designer.selection.change', setupSelection); }; - const designer = await this.editor.onceGot(Designer); + const designer = await this.editor.onceGot('designer'); this.designer = designer; setupSelection(designer.currentSelection); } 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 1ecdc083b..d37915030 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -10,11 +10,11 @@ import { SkeletonContext } from '../../context'; import { createIcon, isSettingField } from '@alilc/lowcode-utils'; @observer -export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any }, { shouldIgnoreRoot: boolean }> { +export class SettingsPrimaryPane extends Component<{ engineEditor: Editor; config: any }, { shouldIgnoreRoot: boolean }> { state = { shouldIgnoreRoot: false, }; - private main; + private main = new SettingsMain(this.props.engineEditor); @obx.ref private _activeKey?: any; @@ -29,8 +29,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any componentDidMount() { this.setShouldIgnoreRoot(); - const workspace = globalContext.get('workspace'); - const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor'); + const editor = this.props.engineEditor; editor.eventBus.on('designer.selection.change', () => { if (!engineConfig.get('stayOnTheSameSettingTab', false)) { @@ -135,8 +134,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any render() { const { settings } = this.main; - const workspace = globalContext.get('workspace'); - const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor'); + const editor = this.props.engineEditor; if (!settings) { // 未选中节点,提示选中 或者 显示根节点设置 return ( diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index bbadbf39e..9913caa39 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -77,7 +77,7 @@ const { project: innerProject } = designer; const innerHotkey = new InnerHotkey(); const hotkey = new Hotkey(innerHotkey); const project = new Project(innerProject); -const skeleton = new Skeleton(innerSkeleton); +const skeleton = new Skeleton(innerSkeleton, 'any', false); const innerSetters = new InnerSetters(); const setters = new Setters(innerSetters); @@ -98,7 +98,7 @@ const pluginContextApiAssembler: ILowCodePluginContextApiAssembler = { assembleApis: (context: ILowCodePluginContextPrivate, pluginName: string, meta: IPublicTypePluginMeta) => { context.hotkey = hotkey; context.project = project; - context.skeleton = skeleton; + context.skeleton = new Skeleton(innerSkeleton, pluginName, false); context.setters = setters; context.material = material; const eventPrefix = meta?.eventPrefix || 'common'; diff --git a/packages/engine/src/inner-plugins/default-panel-registry.tsx b/packages/engine/src/inner-plugins/default-panel-registry.tsx index 309ec5ec3..9ef1db7cb 100644 --- a/packages/engine/src/inner-plugins/default-panel-registry.tsx +++ b/packages/engine/src/inner-plugins/default-panel-registry.tsx @@ -22,7 +22,9 @@ export const defaultPanelRegistry = (editor: any, designer: any) => { area: 'rightArea', name: 'settingsPane', type: 'Panel', - content: SettingsPrimaryPane, + content: , props: { ignoreRoot: true, }, diff --git a/packages/shell/src/api/skeleton.ts b/packages/shell/src/api/skeleton.ts index c3699f194..b8930677b 100644 --- a/packages/shell/src/api/skeleton.ts +++ b/packages/shell/src/api/skeleton.ts @@ -9,6 +9,7 @@ import { IPublicApiSkeleton, IPublicTypeWidgetBaseConfig, IPublicTypeWidgetConfi const innerSkeletonSymbol = Symbol('skeleton'); export class Skeleton implements IPublicApiSkeleton { private readonly [innerSkeletonSymbol]: InnerSkeleton; + private readonly pluginName: string; get [skeletonSymbol]() { if (this.workspaceMode) { @@ -22,8 +23,9 @@ export class Skeleton implements IPublicApiSkeleton { return this[innerSkeletonSymbol]; } - constructor(skeleton: InnerSkeleton, readonly workspaceMode: boolean = false) { + constructor(skeleton: InnerSkeleton, pluginName: string, readonly workspaceMode: boolean = false) { this[innerSkeletonSymbol] = skeleton; + this.pluginName = pluginName; } /** @@ -33,7 +35,11 @@ export class Skeleton implements IPublicApiSkeleton { * @returns */ add(config: IPublicTypeWidgetBaseConfig, extraConfig?: Record) { - return this[skeletonSymbol].add(config, extraConfig); + const configWithName = { + ...config, + pluginName: this.pluginName, + }; + return this[skeletonSymbol].add(configWithName, extraConfig); } /** diff --git a/packages/workspace/src/base-context.ts b/packages/workspace/src/base-context.ts index fce167535..12151b5c1 100644 --- a/packages/workspace/src/base-context.ts +++ b/packages/workspace/src/base-context.ts @@ -82,7 +82,7 @@ export class BasicContext { const config = engineConfig; const event = new Event(editor, { prefix: 'common' }); const logger = getLogger({ level: 'warn', bizName: 'common' }); - const skeleton = new Skeleton(innerSkeleton, true); + const skeleton = new Skeleton(innerSkeleton, 'any', true); editor.set('setters', setters); editor.set('project', project); editor.set('material', material); @@ -110,7 +110,7 @@ export class BasicContext { context.workspace = workspace; context.hotkey = hotkey; context.project = project; - context.skeleton = skeleton; + context.skeleton = new Skeleton(innerSkeleton, pluginName, true); context.setters = setters; context.material = material; const eventPrefix = meta?.eventPrefix || 'common';