From 59e6aff70a288c69197a85f08373abd1400f78a2 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 16 Aug 2022 15:17:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor,stage):=20runtime-api=E4=B8=AD?= =?UTF-8?q?=E7=9A=84add/update/remove=E4=B8=AD=E7=9A=84=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=8A=A0=E4=B8=8AparentId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor/src/services/editor.ts | 23 ++++++++++++++++------- packages/stage/src/types.ts | 5 +++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 8fe619e0..cbd24e43 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -302,11 +302,11 @@ class Editor extends BaseService { const layout = await this.getLayout(toRaw(parent), node as MNode); node.style = getInitPositionStyle(node.style, layout); - await stage?.add({ config: cloneDeep(node), parent: cloneDeep(parent), root: cloneDeep(root) }); + await stage?.add({ config: cloneDeep(node), parentId: parent.id, root: cloneDeep(root) }); node.style = fixNodePosition(node, parent, stage); - await stage?.update({ config: cloneDeep(node), root: cloneDeep(root) }); + await stage?.update({ config: cloneDeep(node), parentId: parent.id, root: cloneDeep(root) }); this.addModifiedNodeId(node.id); @@ -377,7 +377,7 @@ class Editor extends BaseService { parent.items?.splice(index, 1); const stage = this.get('stage'); - stage?.remove({ id: node.id, root: this.get('root') }); + stage?.remove({ id: node.id, parentId: parent.id, root: cloneDeep(root) }); if (node.type === NodeType.PAGE) { this.state.pageLength -= 1; @@ -466,7 +466,11 @@ class Editor extends BaseService { nodes.splice(targetIndex, 1, newConfig); this.set('nodes', nodes); - this.get('stage')?.update({ config: cloneDeep(newConfig), root: cloneDeep(this.get('root')) }); + this.get('stage')?.update({ + config: cloneDeep(newConfig), + parentId: parent.id, + root: cloneDeep(this.get('root')), + }); if (newConfig.type === NodeType.PAGE) { this.set('page', newConfig); @@ -513,7 +517,11 @@ class Editor extends BaseService { await this.update(parent); await this.select(node); - this.get('stage')?.update({ config: cloneDeep(node), root: cloneDeep(this.get('root')) }); + this.get('stage')?.update({ + config: cloneDeep(node), + parentId: parent.id, + root: cloneDeep(this.get('root')), + }); this.addModifiedNodeId(parent.id); this.pushHistoryState(); @@ -612,6 +620,7 @@ class Editor extends BaseService { this.get('stage')?.update({ config: cloneDeep(toRaw(parent)), + parentId: parent.id, root: cloneDeep(this.get('root')), }); } @@ -632,7 +641,7 @@ class Editor extends BaseService { const index = getNodeIndex(node, parent); parent.items?.splice(index, 1); - await stage.remove({ id: node.id, root }); + await stage.remove({ id: node.id, parentId: parent.id, root }); const layout = await this.getLayout(target); @@ -647,7 +656,7 @@ class Editor extends BaseService { await stage.select(targetId); - await stage.update({ config: cloneDeep(target), root }); + await stage.update({ config: cloneDeep(target), parentId: parent.id, root }); await this.select(newConfig); stage.select(newConfig.id); diff --git a/packages/stage/src/types.ts b/packages/stage/src/types.ts index c896dbe3..6c205ed3 100644 --- a/packages/stage/src/types.ts +++ b/packages/stage/src/types.ts @@ -19,7 +19,7 @@ import { MoveableOptions } from 'moveable'; import Core from '@tmagic/core'; -import type { Id, MApp, MContainer, MNode } from '@tmagic/schema'; +import type { Id, MApp, MNode } from '@tmagic/schema'; import { GuidesType } from './const'; import StageCore from './StageCore'; @@ -118,12 +118,13 @@ export interface SortEventData { export interface UpdateData { config: MNode; - parent?: MContainer; + parentId: Id; root: MApp; } export interface RemoveData { id: Id; + parentId: Id; root: MApp; }