From 88961aa6409c52ebd7af67efd5134baf3c8ab424 Mon Sep 17 00:00:00 2001 From: liujuping Date: Wed, 8 Mar 2023 18:07:36 +0800 Subject: [PATCH] feat: optimize ts definition --- packages/designer/src/document/document-model.ts | 2 +- .../designer/src/document/node/modal-nodes-manager.ts | 2 +- packages/engine/src/engine-core.ts | 1 + packages/shell/src/model/resource.ts | 4 ++-- packages/types/src/shell/model/document-model.ts | 4 ++-- packages/types/src/shell/model/resource.ts | 6 +++++- packages/types/src/shell/type/on-change-options.ts | 6 ++++-- packages/types/src/shell/type/prop-change-options.ts | 6 ++++-- packages/types/src/shell/type/resource-list.ts | 9 ++++++++- packages/workspace/src/resource.ts | 4 ++-- 10 files changed, 30 insertions(+), 14 deletions(-) diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 7c4344c31..89856d2eb 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -326,7 +326,7 @@ export class DocumentModel implements IDocumentModel { }; } - onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable { + onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable { this.designer.editor?.eventBus.on(EDITOR_EVENT.NODE_VISIBLE_CHANGE, fn); return () => { diff --git a/packages/designer/src/document/node/modal-nodes-manager.ts b/packages/designer/src/document/node/modal-nodes-manager.ts index 8e04f72fc..21c31ab46 100644 --- a/packages/designer/src/document/node/modal-nodes-manager.ts +++ b/packages/designer/src/document/node/modal-nodes-manager.ts @@ -83,7 +83,7 @@ export class ModalNodesManager implements IModalNodesManager { } private addNode(node: INode) { - if (node.componentMeta.isModal) { + if (node?.componentMeta.isModal) { this.hideModalNodes(); this.modalNodes.push(node); this.addNodeEvent(node); diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index ea0554cad..b038df818 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -119,6 +119,7 @@ const pluginContextApiAssembler: ILowCodePluginContextApiAssembler = { context.canvas = canvas; context.plugins = plugins; context.logger = new Logger({ level: 'warn', bizName: `plugin:${pluginName}` }); + context.workspace = workspace; }, }; diff --git a/packages/shell/src/model/resource.ts b/packages/shell/src/model/resource.ts index 1f037c606..63435cdea 100644 --- a/packages/shell/src/model/resource.ts +++ b/packages/shell/src/model/resource.ts @@ -37,7 +37,7 @@ export class Resource implements IPublicModelResource { return this[resourceSymbol].children.map((child) => new Resource(child)); } - get viewType() { - return this[resourceSymbol].viewType; + get viewName() { + return this[resourceSymbol].viewName; } } \ No newline at end of file diff --git a/packages/types/src/shell/model/document-model.ts b/packages/types/src/shell/model/document-model.ts index 99086d20d..b11ac6f08 100644 --- a/packages/types/src/shell/model/document-model.ts +++ b/packages/types/src/shell/model/document-model.ts @@ -179,13 +179,13 @@ export interface IPublicModelDocumentModel< * 当前 document 的节点 children 变更事件 * @param fn */ - onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable; + onChangeNodeChildren(fn: (info: IPublicTypeOnChangeOptions) => void): IPublicTypeDisposable; /** * 当前 document 节点属性修改事件 * @param fn */ - onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable; + onChangeNodeProp(fn: (info: IPublicTypePropChangeOptions) => void): IPublicTypeDisposable; /** * import schema event diff --git a/packages/types/src/shell/model/resource.ts b/packages/types/src/shell/model/resource.ts index 5f26c8d7b..c81776659 100644 --- a/packages/types/src/shell/model/resource.ts +++ b/packages/types/src/shell/model/resource.ts @@ -5,11 +5,15 @@ export interface IPublicModelResource { get icon(): ReactElement | undefined; - get options(): Object; + get options(): Record; get name(): string | undefined; get type(): string | undefined; get category(): string | undefined; + + get children(): IPublicModelResource[]; + + get viewName(): string | undefined; } \ No newline at end of file diff --git a/packages/types/src/shell/type/on-change-options.ts b/packages/types/src/shell/type/on-change-options.ts index a1b0c314d..47b88d72f 100644 --- a/packages/types/src/shell/type/on-change-options.ts +++ b/packages/types/src/shell/type/on-change-options.ts @@ -1,6 +1,8 @@ import { IPublicModelNode } from '..'; -export interface IPublicTypeOnChangeOptions { +export interface IPublicTypeOnChangeOptions< + Node = IPublicModelNode +> { type: string; - node: IPublicModelNode; + node: Node; } diff --git a/packages/types/src/shell/type/prop-change-options.ts b/packages/types/src/shell/type/prop-change-options.ts index 2a351a2d6..b515aec53 100644 --- a/packages/types/src/shell/type/prop-change-options.ts +++ b/packages/types/src/shell/type/prop-change-options.ts @@ -3,10 +3,12 @@ import { IPublicModelProp, } from '../model'; -export interface IPublicTypePropChangeOptions { +export interface IPublicTypePropChangeOptions< + Node = IPublicModelNode +> { key?: string | number; prop?: IPublicModelProp; - node: IPublicModelNode; + node: Node; newValue: any; oldValue: any; } diff --git a/packages/types/src/shell/type/resource-list.ts b/packages/types/src/shell/type/resource-list.ts index bd5e4a3b0..db5e33dc8 100644 --- a/packages/types/src/shell/type/resource-list.ts +++ b/packages/types/src/shell/type/resource-list.ts @@ -1,14 +1,21 @@ import { ReactElement } from 'react'; export interface IPublicResourceData { + /** 资源名字 */ resourceName: string; + /** 资源标题 */ title: string; + /** 分类 */ category?: string; - viewType?: string; + /** 资源视图 */ + viewName?: string; + /** 资源 icon */ icon?: ReactElement; + /** 资源其他配置 */ options: { [key: string]: any; }; + /** 资源子元素 */ children?: IPublicResourceData[]; } diff --git a/packages/workspace/src/resource.ts b/packages/workspace/src/resource.ts index 119bcc488..ffb60ff6a 100644 --- a/packages/workspace/src/resource.ts +++ b/packages/workspace/src/resource.ts @@ -17,8 +17,8 @@ export class Resource implements IPublicModelResource { return this.resourceType.name; } - get viewType() { - return this.resourceData.viewType; + get viewName() { + return this.resourceData.viewName || (this.resourceData as any).viewType; } get description() {