Skip to content

Commit 0d7ae43

Browse files
liujupingJackLian
authored andcommitted
fix: refactor splice method to remove and purge nodes***
1 parent 71f9e08 commit 0d7ae43

3 files changed

Lines changed: 12 additions & 5 deletions

File tree

packages/designer/src/document/node/node-children.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,16 @@ export class NodeChildren implements Omit<IPublicModelNodeChildren<INode>,
307307
*
308308
*/
309309
splice(start: number, deleteCount: number, node?: INode): INode[] {
310+
let removedNode;
310311
if (node) {
311-
return this.children.splice(start, deleteCount, node);
312+
removedNode = this.children.splice(start, deleteCount, node);
313+
} else {
314+
removedNode = this.children.splice(start, deleteCount);
312315
}
313-
return this.children.splice(start, deleteCount);
316+
317+
removedNode.forEach(d => d?.purge());
318+
319+
return removedNode;
314320
}
315321

316322
/**

packages/shell/src/model/node-children.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,9 @@ export class NodeChildren implements IPublicModelNodeChildren {
9797
* @param deleteCount
9898
* @param node
9999
*/
100-
splice(start: number, deleteCount: number, node?: IPublicModelNode): any {
101-
this[nodeChildrenSymbol].splice(start, deleteCount, (node as any)?.[nodeSymbol]);
100+
splice(start: number, deleteCount: number, node?: IPublicModelNode): IPublicModelNode[] {
101+
const removedNode = this[nodeChildrenSymbol].splice(start, deleteCount, (node as any)?.[nodeSymbol]);
102+
return removedNode.map((item: InnerNode) => ShellNode.create(item)!);
102103
}
103104

104105
/**

packages/types/src/shell/model/node-children.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export interface IPublicModelNodeChildren<
7878
* @param deleteCount
7979
* @param node
8080
*/
81-
splice(start: number, deleteCount: number, node?: Node): any;
81+
splice(start: number, deleteCount: number, node?: Node): Node[];
8282

8383
/**
8484
* 返回指定下标的节点

0 commit comments

Comments
 (0)