From 1b0790e79f2d7ef310a88158cf9c062457ef5df4 Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 5 Oct 2023 13:00:20 +0200 Subject: [PATCH] refactor(xyflow) improved performance of getOutgoersBase & getIncomersBase --- packages/system/src/utils/graph.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/system/src/utils/graph.ts b/packages/system/src/utils/graph.ts index dca0dacc..e72642be 100644 --- a/packages/system/src/utils/graph.ts +++ b/packages/system/src/utils/graph.ts @@ -43,8 +43,14 @@ export const getOutgoersBase = e.source === node.id).map((e) => e.target); - return nodes.filter((n) => outgoerIds.includes(n.id)); + const outgoerIds = new Set(); + edges.forEach((edge) => { + if (edge.source === node.id) { + outgoerIds.add(edge.target); + } + }); + + return nodes.filter((n) => outgoerIds.has(n.id)); }; export const getIncomersBase = ( @@ -55,9 +61,14 @@ export const getIncomersBase = { + if (edge.target === node.id) { + incomersIds.add(edge.source); + } + }); - const incomersIds = edges.filter((e) => e.target === node.id).map((e) => e.source); - return nodes.filter((n) => incomersIds.includes(n.id)); + return nodes.filter((n) => incomersIds.has(n.id)); }; export const getNodePositionWithOrigin = (