Skip to content

Commit fb6bdb4

Browse files
author
mazhaobo
committed
feat(engine): 开放workbench自定义
init参数增加WorkSpaceWorkbench和Workspace,以替换内置的框架结构
1 parent 5f5f60e commit fb6bdb4

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

packages/engine/src/engine-core.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ import {
3030
PluginPreference,
3131
IDesigner,
3232
} from '@felce/lowcode-designer';
33-
import { Skeleton as InnerSkeleton, registerDefaults } from '@felce/lowcode-editor-skeleton';
33+
import {
34+
Skeleton as InnerSkeleton,
35+
registerDefaults,
36+
ISkeleton,
37+
} from '@felce/lowcode-editor-skeleton';
3438
import {
3539
Workspace as InnerWorkspace,
3640
Workbench as WorkSpaceWorkbench,
@@ -108,10 +112,10 @@ globalContext.register(innerWorkspace, 'workspace');
108112

109113
const engineContext: Partial<ILowCodePluginContextPrivate> = {};
110114

111-
const innerSkeleton = new InnerSkeleton(editor);
115+
const innerSkeleton: ISkeleton = new InnerSkeleton(editor);
112116
editor.set('skeleton' as any, innerSkeleton);
113117

114-
const designer = new Designer({ editor, shellModelFactory });
118+
const designer: IDesigner = new Designer({ editor, shellModelFactory });
115119
editor.set('designer' as any, designer);
116120

117121
const { project: innerProject } = designer;
@@ -248,7 +252,7 @@ export async function init(
248252
const disposeFun = await pluginPromise;
249253
disposeFun && disposeFun();
250254
render(
251-
createElement(WorkSpaceWorkbench, {
255+
createElement(options?.WorkSpaceWorkbench || WorkSpaceWorkbench, {
252256
workspace: innerWorkspace,
253257
// skeleton: workspace.skeleton,
254258
className: 'engine-main',
@@ -267,7 +271,7 @@ export async function init(
267271
await plugins.init(pluginPreference as any);
268272

269273
render(
270-
createElement(Workbench, {
274+
createElement(options?.Workbench || Workbench, {
271275
skeleton: innerSkeleton,
272276
className: 'engine-main',
273277
topAreaItemClassName: 'engine-actionitem',

packages/shell/src/api/common.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ import {
5959
Workbench as InnerWorkbench,
6060
SettingsPrimaryPane as InnerSettingsPrimaryPane,
6161
registerDefaults as InnerRegisterDefaults,
62+
ISkeleton,
6263
} from '@felce/lowcode-editor-skeleton';
6364
import {
6465
Editor,
@@ -180,11 +181,11 @@ class DesignerCabin implements IPublicApiCommonDesignerCabin {
180181
}
181182

182183
class SkeletonCabin implements IPublicApiCommonSkeletonCabin {
183-
private readonly [skeletonSymbol]: InnerSkeleton;
184+
private readonly [skeletonSymbol]: ISkeleton;
184185

185186
readonly [skeletonCabinSymbol]: any;
186187

187-
constructor(skeleton: InnerSkeleton) {
188+
constructor(skeleton: ISkeleton) {
188189
this[skeletonSymbol] = skeleton;
189190
this[skeletonCabinSymbol] = {
190191
Workbench: InnerWorkbench,
@@ -430,7 +431,7 @@ export class Common implements IPublicApiCommon {
430431
private readonly __editorCabin: any;
431432
private readonly __utils: Utils;
432433

433-
constructor(editor: Editor, skeleton: InnerSkeleton) {
434+
constructor(editor: Editor, skeleton: ISkeleton) {
434435
this.__designerCabin = new DesignerCabin(editor);
435436
this.__skeletonCabin = new SkeletonCabin(skeleton);
436437
this.__editorCabin = new EditorCabin(editor);

packages/types/src/shell/type/engine-options.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { RequestHandlersMap } from '@alilc/lowcode-datasource-types';
2-
import { ComponentType } from 'react';
2+
import { ComponentType, ReactNode } from 'react';
33

44
export interface IPublicTypeEngineOptions {
5-
65
/**
76
* 是否开启 condition 的能力,默认在设计器中不管 condition 是啥都正常展示
87
* when this is true, node that configured as conditional not renderring
@@ -75,7 +74,10 @@ export interface IPublicTypeEngineOptions {
7574
/**
7675
* 定制画布中点击被忽略的 selectors,默认值:undefined
7776
*/
78-
customizeIgnoreSelectors?: (defaultIgnoreSelectors: string[], e: MouseEvent) => string[];
77+
customizeIgnoreSelectors?: (
78+
defaultIgnoreSelectors: string[],
79+
e: MouseEvent,
80+
) => string[];
7981

8082
/**
8183
* 禁止默认的设置面板,默认值:false
@@ -137,7 +139,6 @@ export interface IPublicTypeEngineOptions {
137139
* 与 react-renderer 的 appHelper 一致,https://lowcode-engine.cn/site/docs/guide/expand/runtime/renderer#apphelper
138140
*/
139141
appHelper?: {
140-
141142
/** 全局公共函数 */
142143
utils?: Record<string, any>;
143144

@@ -189,11 +190,19 @@ export interface IPublicTypeEngineOptions {
189190
* 隐藏设计器辅助层
190191
*/
191192
hideComponentAction?: boolean;
193+
194+
/**
195+
* 自定义的 WorkSpaceWorkbench
196+
*/
197+
WorkSpaceWorkbench?: ReactNode;
198+
199+
/**
200+
* 自定义的 Workbench
201+
*/
202+
Workbench?: ReactNode;
192203
}
193204

194205
/**
195206
* @deprecated use IPublicTypeEngineOptions instead
196207
*/
197-
export interface EngineOptions {
198-
199-
}
208+
export interface EngineOptions {}

0 commit comments

Comments
 (0)