diff --git a/docs/docs/api/canvas.md b/docs/docs/api/canvas.md index 8340bd348..344223bcb 100644 --- a/docs/docs/api/canvas.md +++ b/docs/docs/api/canvas.md @@ -42,7 +42,7 @@ get dragon(): IPublicModelDragon | null; get activeTracker(): IPublicModelActiveTracker | null; ``` -## 方法签名 +## 方法 ### createLocation 创建一个文档插入位置对象,该对象用来描述一个即将插入的节点在文档中的位置 diff --git a/docs/docs/api/common.md b/docs/docs/api/common.md index a6b21974d..e5bfa8629 100644 --- a/docs/docs/api/common.md +++ b/docs/docs/api/common.md @@ -20,7 +20,7 @@ sidebar_position: 11 #### skeletonCabin 面板扩展相关,详见下方方法签名 -## 方法签名 +## 方法 ### utils #### isNodeSchema 是否为合法的 schema 结构 diff --git a/docs/docs/api/config.md b/docs/docs/api/config.md index fee26d436..ea4c7dbfc 100644 --- a/docs/docs/api/config.md +++ b/docs/docs/api/config.md @@ -10,7 +10,7 @@ sidebar_position: 8 ## 模块简介 配置模块,负责配置的读、写等操作。 -## 方法签名 +## 方法 ### get 获取指定 key 的值 diff --git a/docs/docs/api/event.md b/docs/docs/api/event.md index be3c768e0..0eb8b9738 100644 --- a/docs/docs/api/event.md +++ b/docs/docs/api/event.md @@ -10,7 +10,7 @@ sidebar_position: 7 ## 模块简介 负责事件处理 API,支持自定义监听事件、触发事件。 -## 方法签名 +## 方法 ### on 监听事件 diff --git a/docs/docs/api/hotkey.md b/docs/docs/api/hotkey.md index a8c717342..a244b94c2 100644 --- a/docs/docs/api/hotkey.md +++ b/docs/docs/api/hotkey.md @@ -9,7 +9,7 @@ sidebar_position: 5 ## 模块简介 绑定快捷键 API,可以自定义项目快捷键使用。 -## 方法签名 +## 方法 ### bind 绑定快捷键 diff --git a/docs/docs/api/init.md b/docs/docs/api/init.md index 185e76355..f8bf2cdbe 100644 --- a/docs/docs/api/init.md +++ b/docs/docs/api/init.md @@ -8,7 +8,7 @@ sidebar_position: 10 ## 模块简介 提供 init 等方法 -## 方法签名 +## 方法 #### 1. init 初始化引擎 diff --git a/docs/docs/api/logger.md b/docs/docs/api/logger.md index 68681438b..7493f34dc 100644 --- a/docs/docs/api/logger.md +++ b/docs/docs/api/logger.md @@ -12,7 +12,7 @@ sidebar_position: 9 > 注:日志级别可以通过 url query 动态调整,详见下方[查看示例](#查看示例)。
> 参考 [zen-logger](https://web.npm.alibaba-inc.com/package/zen-logger) 实现进行封装 -## 方法签名 +## 方法 日志记录方法 diff --git a/docs/docs/api/material.md b/docs/docs/api/material.md index c060b9bef..0732c568e 100644 --- a/docs/docs/api/material.md +++ b/docs/docs/api/material.md @@ -22,7 +22,7 @@ get componentsMap(): { [key: string]: IPublicTypeNpmInfo | ComponentType | ``` 相关类型:[IPublicTypeNpmInfo](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/npm-info.ts) -## 方法签名 +## 方法 ### 资产包 #### setAssets diff --git a/docs/docs/api/model/detecting.md b/docs/docs/api/model/detecting.md index 15e1cfca7..c7a20ddcb 100644 --- a/docs/docs/api/model/detecting.md +++ b/docs/docs/api/model/detecting.md @@ -9,7 +9,7 @@ sidebar_position: 6 画布节点悬停模型 -## 变量 +## 属性 ### current @@ -28,7 +28,7 @@ sidebar_position: 6 `@type {boolean}` -## 方法签名 +## 方法 ### capture hover 指定节点 diff --git a/docs/docs/api/model/document-model.md b/docs/docs/api/model/document-model.md index 9e5064371..c9f338609 100644 --- a/docs/docs/api/model/document-model.md +++ b/docs/docs/api/model/document-model.md @@ -9,7 +9,7 @@ sidebar_position: 0 文档模型 -## 变量 +## 属性 ### id @@ -95,7 +95,7 @@ sidebar_position: 0 **@since v1.1.0** -## 方法签名 +## 方法 ### getNodeById 根据 nodeId 返回 [Node](./node) 实例 diff --git a/docs/docs/api/model/dragon.md b/docs/docs/api/model/dragon.md index 82884224b..995fd1b1f 100644 --- a/docs/docs/api/model/dragon.md +++ b/docs/docs/api/model/dragon.md @@ -18,7 +18,7 @@ import { IPublicModelDragon } from '@alilc/lowcode-types'; **@since** v1.1.0 -## 变量 +## 属性 ### dragging @@ -31,7 +31,7 @@ import { IPublicModelDragon } from '@alilc/lowcode-types'; get dragging(): boolean; ``` -## 方法签名 +## 方法 ### onDragstart diff --git a/docs/docs/api/model/drop-location.md b/docs/docs/api/model/drop-location.md index 37497741c..853da842c 100644 --- a/docs/docs/api/model/drop-location.md +++ b/docs/docs/api/model/drop-location.md @@ -11,7 +11,7 @@ sidebar_position: 13 拖拽放置位置模型 -## 变量 +## 属性 ### target @@ -37,7 +37,7 @@ sidebar_position: 13 相关类型:[IPublicModelLocateEvent](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/location-event.ts) -## 方法签名 +## 方法 ### clone diff --git a/docs/docs/api/model/history.md b/docs/docs/api/model/history.md index db6800850..b8c4d791b 100644 --- a/docs/docs/api/model/history.md +++ b/docs/docs/api/model/history.md @@ -9,7 +9,7 @@ sidebar_position: 5 操作历史记录模型 -## 方法签名 +## 方法 ### go 历史记录跳转到指定位置 diff --git a/docs/docs/api/model/modal-nodes-manager.md b/docs/docs/api/model/modal-nodes-manager.md index ed89ce31b..acff26734 100644 --- a/docs/docs/api/model/modal-nodes-manager.md +++ b/docs/docs/api/model/modal-nodes-manager.md @@ -9,40 +9,86 @@ sidebar_position: 7 模态节点管理器模型 -## 方法签名 +## 方法 ### setNodes -setNodes() - 设置模态节点,触发内部事件 +```typescript +/** + * 设置模态节点,触发内部事件 + * set modal nodes, trigger internal events + */ +setNodes(): void; +``` + ### getModalNodes -getModalNodes() - 获取模态节点(们) +```typescript +/** + * 获取模态节点(们) + * get modal nodes + */ +getModalNodes(): IPublicModelNode[]; +``` + +相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) + ### getVisibleModalNode -getVisibleModalNode() - 获取当前可见的模态节点 +```typescript +/** + * 获取当前可见的模态节点 + * get current visible modal node + */ +getVisibleModalNode(): IPublicModelNode | null; +``` + +相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) + ### hideModalNodes -hideModalNodes() - 隐藏模态节点(们) +```typescript +/** + * 隐藏模态节点(们) + * hide modal nodes + */ +hideModalNodes(): void; +``` + ### setVisible -setVisible(node: Node) - 设置指定节点为可见态 +```typescript +/** + * 设置指定节点为可见态 + * set specfic model node as visible + * @param node Node + */ +setVisible(node: IPublicModelNode): void; +``` + +相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) + ### setInvisible -setInvisible(node: Node) - 设置指定节点为不可见态 + +```typescript +/** + * 设置指定节点为不可见态 + * set specfic model node as invisible + * @param node Node + */ +setInvisible(node: IPublicModelNode): void; +``` + +相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) diff --git a/docs/docs/api/model/node-children.md b/docs/docs/api/model/node-children.md index 2e8769411..10488a733 100644 --- a/docs/docs/api/model/node-children.md +++ b/docs/docs/api/model/node-children.md @@ -8,7 +8,7 @@ sidebar_position: 2 ## 基本介绍 节点孩子模型 -## 变量 +## 属性 ### owner 返回当前 children 实例所属的节点实例 @@ -41,7 +41,7 @@ children 内的节点实例数 **@since v1.1.0** -## 方法签名 +## 方法 ### delete 删除指定节点 diff --git a/docs/docs/api/model/node.md b/docs/docs/api/model/node.md index 60678ad34..fbc88034b 100644 --- a/docs/docs/api/model/node.md +++ b/docs/docs/api/model/node.md @@ -9,7 +9,7 @@ sidebar_position: 1 节点模型 -## 变量 +## 属性 ### id 节点 id @@ -263,7 +263,7 @@ sidebar_position: 1 **@since v1.1.0** -## 方法签名 +## 方法 ### getRect diff --git a/docs/docs/api/model/plugin-instance.md b/docs/docs/api/model/plugin-instance.md index 8f764c68b..14ce38837 100644 --- a/docs/docs/api/model/plugin-instance.md +++ b/docs/docs/api/model/plugin-instance.md @@ -17,38 +17,24 @@ sidebar_position: 12 插件名字 -```typescript -get name(): string; -``` +`@type {string}` ### dep 插件依赖 -```typescript -get dep(): string[]; -``` +`@type {string[]}` ### disabled 插件是否禁用 -```typescript -get disabled(): boolean - -set disabled(disabled: boolean): void; - -``` +`@type {boolean}` ### meta 插件 meta 信息 -```typescript -get meta(): IPublicTypePluginMeta - -``` - -- [IPublicTypePluginMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-meta.ts) - +`@type {IPublicTypePluginMeta}` +相关类型:[IPublicTypePluginMeta](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/plugin-meta.ts) diff --git a/docs/docs/api/model/prop.md b/docs/docs/api/model/prop.md index e619cdc33..d9b0d14f4 100644 --- a/docs/docs/api/model/prop.md +++ b/docs/docs/api/model/prop.md @@ -9,7 +9,7 @@ sidebar_position: 3 属性模型 -## 变量 +## 属性 ### id @@ -46,7 +46,7 @@ key 值 相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -## 方法签名 +## 方法 ### setValue diff --git a/docs/docs/api/model/props.md b/docs/docs/api/model/props.md index f76919d49..9bd6eaa66 100644 --- a/docs/docs/api/model/props.md +++ b/docs/docs/api/model/props.md @@ -9,7 +9,7 @@ sidebar_position: 4 属性集模型 -## 变量 +## 属性 ### id id @@ -32,7 +32,7 @@ id 相关类型:[IPublicModelNode](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/node.ts) -## 方法签名 +## 方法 ### getProp 获取指定 path 的属性模型实例 diff --git a/docs/docs/api/model/resource.md b/docs/docs/api/model/resource.md index 33a6e3119..30b1e9f41 100644 --- a/docs/docs/api/model/resource.md +++ b/docs/docs/api/model/resource.md @@ -7,7 +7,7 @@ sidebar_position: 12 > **@types** [IPublicModelWindow](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/model/resource.ts)
> **@since** v1.1.0 -## 变量 +## 属性 ### title diff --git a/docs/docs/api/model/selection.md b/docs/docs/api/model/selection.md index 529a3e5a2..9fc2e3a1c 100644 --- a/docs/docs/api/model/selection.md +++ b/docs/docs/api/model/selection.md @@ -9,7 +9,7 @@ sidebar_position: 6 画布节点选中模型 -## 变量 +## 属性 ### selected 返回选中的节点 id @@ -25,7 +25,7 @@ sidebar_position: 6 **@since v1.1.0** -## 方法签名 +## 方法 ### select 选中指定节点(覆盖方式) diff --git a/docs/docs/api/model/window.md b/docs/docs/api/model/window.md index f70c33e4d..7814ae6ea 100644 --- a/docs/docs/api/model/window.md +++ b/docs/docs/api/model/window.md @@ -12,7 +12,7 @@ sidebar_position: 12 低代码设计器窗口模型 -## 变量 +## 属性 ### id @@ -38,7 +38,7 @@ sidebar_position: 12 关联模型 [IPublicModelResource](./resource) -## 方法签名 +## 方法 ### importSchema 当前窗口导入 schema, 会调用当前窗口对应资源的 import 钩子 diff --git a/docs/docs/api/plugins.md b/docs/docs/api/plugins.md index 9b1993b10..58be1fde0 100644 --- a/docs/docs/api/plugins.md +++ b/docs/docs/api/plugins.md @@ -8,7 +8,7 @@ sidebar_position: 4 ## 模块简介 插件管理器,提供编排模块中管理插件的能力。 -## 方法签名 +## 方法 ### register 注册插件 diff --git a/docs/docs/api/project.md b/docs/docs/api/project.md index 15fb3cb7e..0c7213aac 100644 --- a/docs/docs/api/project.md +++ b/docs/docs/api/project.md @@ -69,7 +69,7 @@ get simulatorHost(): IPublicApiSimulatorHost | null; 相关类型:[IPublicApiSimulatorHost](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/simulator-host.ts) -## 方法签名 +## 方法 ### openDocument 打开一个 document diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md index 3c5fd9f75..92d24f4e1 100644 --- a/docs/docs/api/setters.md +++ b/docs/docs/api/setters.md @@ -8,7 +8,7 @@ sidebar_position: 6 ## 模块简介 负责注册设置器、管理设置器的 API。注册自定义设置器之后可以在物料中进行使用。 -## 方法签名 +## 方法 ### getSetter 获取指定 setter diff --git a/docs/docs/api/skeleton.md b/docs/docs/api/skeleton.md index 5ad82accf..e7ae391eb 100644 --- a/docs/docs/api/skeleton.md +++ b/docs/docs/api/skeleton.md @@ -135,7 +135,7 @@ skeleton.add({ }); ``` -## 方法签名 +## 方法 ### add diff --git a/docs/docs/api/workspace.md b/docs/docs/api/workspace.md index 138693cfa..81301d110 100644 --- a/docs/docs/api/workspace.md +++ b/docs/docs/api/workspace.md @@ -57,7 +57,7 @@ get resourceList(): IPublicModelResource; 关联模型 [IPublicModelResource](./model/resource) -## 方法签名 +## 方法 ### registerResourceType 注册资源 diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index 8bccde2ef..cb345cc82 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -753,7 +753,7 @@ export class DocumentModel implements IDocumentModel { })); } - onNodeCreate(func: (node: Node) => void) { + onNodeCreate(func: (node: INode) => void) { const wrappedFunc = wrapWithEventSwitch(func); this.emitter.on('nodecreate', wrappedFunc); return () => { @@ -761,7 +761,7 @@ export class DocumentModel implements IDocumentModel { }; } - onNodeDestroy(func: (node: Node) => void) { + onNodeDestroy(func: (node: INode) => void) { const wrappedFunc = wrapWithEventSwitch(func); this.emitter.on('nodedestroy', wrappedFunc); return () => { diff --git a/packages/designer/src/document/node/modal-nodes-manager.ts b/packages/designer/src/document/node/modal-nodes-manager.ts index 68bca607b..585b52f5f 100644 --- a/packages/designer/src/document/node/modal-nodes-manager.ts +++ b/packages/designer/src/document/node/modal-nodes-manager.ts @@ -1,15 +1,15 @@ -import { Node } from './node'; +import { INode, Node } from './node'; import { DocumentModel } from '../document-model'; import { IPublicModelModalNodesManager } from '@alilc/lowcode-types'; import { createModuleEventBus, IEventBus } from '@alilc/lowcode-editor-core'; -export function getModalNodes(node: Node) { +export function getModalNodes(node: INode | Node) { if (!node) return []; let nodes: any = []; if (node.componentMeta.isModal) { nodes.push(node); } - const children = node.getChildren(); + const { children } = node; if (children) { children.forEach((child) => { nodes = nodes.concat(getModalNodes(child)); @@ -20,14 +20,17 @@ export function getModalNodes(node: Node) { export interface IModalNodesManager extends IPublicModelModalNodesManager { + getModalNodes(): INode[]; + + getVisibleModalNode(): INode | null; } export class ModalNodesManager implements IModalNodesManager { - public willDestroy: any; + willDestroy: any; private page: DocumentModel; - private modalNodes: Node[]; + private modalNodes: INode[]; private nodeRemoveEvents: any; @@ -45,26 +48,27 @@ export class ModalNodesManager implements IModalNodesManager { ]; } - getModalNodes() { + getModalNodes(): INode[] { return this.modalNodes; } - getVisibleModalNode() { - return this.getModalNodes().find((node: Node) => node.getVisible()); + getVisibleModalNode(): INode | null { + const visibleNode = this.getModalNodes().find((node: INode) => node.getVisible()); + return visibleNode || null; } hideModalNodes() { - this.modalNodes.forEach((node: Node) => { + this.modalNodes.forEach((node: INode) => { node.setVisible(false); }); } - setVisible(node: Node) { + setVisible(node: INode) { this.hideModalNodes(); node.setVisible(true); } - setInvisible(node: Node) { + setInvisible(node: INode) { node.setVisible(false); } @@ -82,7 +86,7 @@ export class ModalNodesManager implements IModalNodesManager { }; } - private addNode(node: Node) { + private addNode(node: INode) { if (node.componentMeta.isModal) { this.hideModalNodes(); this.modalNodes.push(node); @@ -92,7 +96,7 @@ export class ModalNodesManager implements IModalNodesManager { } } - private removeNode(node: Node) { + private removeNode(node: INode) { if (node.componentMeta.isModal) { const index = this.modalNodes.indexOf(node); if (index >= 0) { @@ -106,24 +110,24 @@ export class ModalNodesManager implements IModalNodesManager { } } - private addNodeEvent(node: Node) { - this.nodeRemoveEvents[node.getId()] = + private addNodeEvent(node: INode) { + this.nodeRemoveEvents[node.id] = node.onVisibleChange(() => { this.emitter.emit('visibleChange'); }); } - private removeNodeEvent(node: Node) { - if (this.nodeRemoveEvents[node.getId()]) { - this.nodeRemoveEvents[node.getId()](); - delete this.nodeRemoveEvents[node.getId()]; + private removeNodeEvent(node: INode) { + if (this.nodeRemoveEvents[node.id]) { + this.nodeRemoveEvents[node.id](); + delete this.nodeRemoveEvents[node.id]; } } setNodes() { - const nodes = getModalNodes(this.page.getRoot()!); + const nodes = getModalNodes(this.page.rootNode!); this.modalNodes = nodes; - this.modalNodes.forEach((node: Node) => { + this.modalNodes.forEach((node: INode) => { this.addNodeEvent(node); }); diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index ef837a329..8a7e9732a 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -36,6 +36,11 @@ export interface NodeStatus { export interface INode extends IPublicModelNode { + /** + * 当前节点子集 + */ + get children(): INodeChildren | null; + setVisible(flag: boolean): void; getVisible(): boolean; @@ -70,6 +75,10 @@ export interface INode extends IPublicModelNode { internalSetSlotFor(slotFor: Prop | null | undefined): void; addSlot(slotNode: INode): void; + + get componentMeta(): ComponentMeta; + + onVisibleChange(func: (flag: boolean) => any): () => void; } /** @@ -204,6 +213,74 @@ export class Node isInited = false; + _settingEntry: SettingTopEntry; + + get settingEntry(): SettingTopEntry { + if (this._settingEntry) return this._settingEntry; + this._settingEntry = this.document.designer.createSettingEntry([this]); + return this._settingEntry; + } + + private autoruns?: Array<() => void>; + + private _isRGLContainer = false; + + set isRGLContainer(status: boolean) { + this._isRGLContainer = status; + } + + get isRGLContainer(): boolean { + return !!this._isRGLContainer; + } + + set isRGLContainerNode(status: boolean) { + this._isRGLContainer = status; + } + + get isRGLContainerNode(): boolean { + return !!this._isRGLContainer; + } + + private _slotFor?: Prop | null = null; + + @obx.shallow _slots: INode[] = []; + + get slots() { + return this._slots; + } + + /* istanbul ignore next */ + @obx.ref private _conditionGroup: IPublicModelExclusiveGroup | null = null; + + /* istanbul ignore next */ + get conditionGroup(): IPublicModelExclusiveGroup | null { + return this._conditionGroup; + } + + private purged = false; + + /** + * 是否已销毁 + */ + get isPurged() { + return this.purged; + } + + private purging: boolean = false; + + /** + * 是否正在销毁 + */ + get isPurging() { + return this.purging; + } + + @obx.shallow status: NodeStatus = { + inPlaceEditing: false, + locking: false, + pseudo: false, + }; + constructor(readonly document: IDocumentModel, nodeSchema: Schema, options: any = {}) { makeObservable(this); const { componentName, id, children, props, ...extras } = nodeSchema; @@ -237,14 +314,6 @@ export class Node }); } - _settingEntry: SettingTopEntry; - - get settingEntry(): SettingTopEntry { - if (this._settingEntry) return this._settingEntry; - this._settingEntry = this.document.designer.createSettingEntry([this]); - return this._settingEntry; - } - /** * 节点初始化期间就把内置的一些 prop 初始化好,避免后续不断构造实例导致 reaction 执行多次 */ @@ -268,8 +337,6 @@ export class Node return this.document.designer.transformProps(props, this, IPublicEnumTransformStage.Upgrade); } - private autoruns?: Array<() => void>; - private setupAutoruns() { const autoruns = this.componentMeta.getMetadata().configure.advanced?.autoruns; if (!autoruns || autoruns.length < 1) { @@ -296,24 +363,6 @@ export class Node return children || []; } - private _isRGLContainer = false; - - set isRGLContainer(status: boolean) { - this._isRGLContainer = status; - } - - get isRGLContainer(): boolean { - return !!this._isRGLContainer; - } - - set isRGLContainerNode(status: boolean) { - this._isRGLContainer = status; - } - - get isRGLContainerNode(): boolean { - return !!this._isRGLContainer; - } - isContainer(): boolean { return this.isContainerNode; } @@ -449,8 +498,6 @@ export class Node } } - private _slotFor?: Prop | null = null; - internalSetSlotFor(slotFor: Prop | null | undefined) { this._slotFor = slotFor; } @@ -536,24 +583,10 @@ export class Node return this.props.export(IPublicEnumTransformStage.Serilize).props || null; } - @obx.shallow _slots: INode[] = []; - hasSlots() { return this._slots.length > 0; } - get slots() { - return this._slots; - } - - /* istanbul ignore next */ - @obx.ref private _conditionGroup: IPublicModelExclusiveGroup | null = null; - - /* istanbul ignore next */ - get conditionGroup(): IPublicModelExclusiveGroup | null { - return this._conditionGroup; - } - /* istanbul ignore next */ setConditionGroup(grp: IPublicModelExclusiveGroup | string | null) { if (!grp) { @@ -929,15 +962,6 @@ export class Node this.children?.delete(node); } - private purged = false; - - /** - * 是否已销毁 - */ - get isPurged() { - return this.purged; - } - /** * 销毁 */ @@ -952,18 +976,10 @@ export class Node // this.document.destroyNode(this); } - private purging: boolean = false; internalPurgeStart() { this.purging = true; } - /** - * 是否正在销毁 - */ - get isPurging() { - return this.purging; - } - /** * 是否可执行某action */ @@ -1044,12 +1060,6 @@ export class Node this.children?.mergeChildren(remover, adder, sorter); } - @obx.shallow status: NodeStatus = { - inPlaceEditing: false, - locking: false, - pseudo: false, - }; - /** * @deprecated */ diff --git a/packages/shell/src/model/modal-nodes-manager.ts b/packages/shell/src/model/modal-nodes-manager.ts index 71c94666c..b1e27596f 100644 --- a/packages/shell/src/model/modal-nodes-manager.ts +++ b/packages/shell/src/model/modal-nodes-manager.ts @@ -1,6 +1,9 @@ -import { ModalNodesManager as InnerModalNodesManager } from '@alilc/lowcode-designer'; +import { + IModalNodesManager as InnerModalNodesManager, + INode as InnerNode, +} from '@alilc/lowcode-designer'; import { IPublicModelModalNodesManager, IPublicModelNode } from '@alilc/lowcode-types'; -import { Node } from './node'; +import { Node as ShellNode } from './node'; import { nodeSymbol, modalNodesManagerSymbol } from '../symbols'; export class ModalNodesManager implements IPublicModelModalNodesManager { @@ -28,18 +31,24 @@ export class ModalNodesManager implements IPublicModelModalNodesManager { /** * 获取模态节点(们) - * @returns */ - getModalNodes(): any { - return this[modalNodesManagerSymbol].getModalNodes().map((node) => Node.create(node)); + getModalNodes(): IPublicModelNode[] { + const innerNodes = this[modalNodesManagerSymbol].getModalNodes(); + const shellNodes: IPublicModelNode[] = []; + innerNodes?.forEach((node: InnerNode) => { + const shellNode = ShellNode.create(node); + if (shellNode) { + shellNodes.push(shellNode); + } + }); + return shellNodes; } /** * 获取当前可见的模态节点 - * @returns */ - getVisibleModalNode(): any { - return Node.create(this[modalNodesManagerSymbol].getVisibleModalNode()); + getVisibleModalNode(): IPublicModelNode | null { + return ShellNode.create(this[modalNodesManagerSymbol].getVisibleModalNode()); } /** @@ -54,7 +63,7 @@ export class ModalNodesManager implements IPublicModelModalNodesManager { * @param node Node */ setVisible(node: IPublicModelNode): void { - this[modalNodesManagerSymbol].setVisible(node[nodeSymbol]); + this[modalNodesManagerSymbol].setVisible((node as any)[nodeSymbol]); } /** @@ -62,6 +71,6 @@ export class ModalNodesManager implements IPublicModelModalNodesManager { * @param node Node */ setInvisible(node: IPublicModelNode): void { - this[modalNodesManagerSymbol].setInvisible(node[nodeSymbol]); + this[modalNodesManagerSymbol].setInvisible((node as any)[nodeSymbol]); } } \ No newline at end of file diff --git a/packages/types/src/shell/model/modal-nodes-manager.ts b/packages/types/src/shell/model/modal-nodes-manager.ts index d24a3d037..bfbba50ec 100644 --- a/packages/types/src/shell/model/modal-nodes-manager.ts +++ b/packages/types/src/shell/model/modal-nodes-manager.ts @@ -1,36 +1,41 @@ import { IPublicModelNode } from './'; export interface IPublicModelModalNodesManager { + /** * 设置模态节点,触发内部事件 + * set modal nodes, trigger internal events */ setNodes(): void; /** * 获取模态节点(们) - * @returns + * get modal nodes */ - getModalNodes(): any; + getModalNodes(): IPublicModelNode[]; /** * 获取当前可见的模态节点 - * @returns + * get current visible modal node */ - getVisibleModalNode(): any; + getVisibleModalNode(): IPublicModelNode | null; /** * 隐藏模态节点(们) + * hide modal nodes */ hideModalNodes(): void; /** * 设置指定节点为可见态 + * set specfic model node as visible * @param node Node */ setVisible(node: IPublicModelNode): void; /** * 设置指定节点为不可见态 + * set specfic model node as invisible * @param node Node */ setInvisible(node: IPublicModelNode): void;