refactor(xyflow) improved performance of getOutgoersBase & getIncomersBase
This commit is contained in:
@@ -43,8 +43,14 @@ export const getOutgoersBase = <NodeType extends NodeBase = NodeBase, EdgeType e
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
const outgoerIds = edges.filter((e) => e.source === node.id).map((e) => e.target);
|
const outgoerIds = new Set();
|
||||||
return nodes.filter((n) => outgoerIds.includes(n.id));
|
edges.forEach((edge) => {
|
||||||
|
if (edge.source === node.id) {
|
||||||
|
outgoerIds.add(edge.target);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return nodes.filter((n) => outgoerIds.has(n.id));
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getIncomersBase = <NodeType extends NodeBase = NodeBase, EdgeType extends EdgeBase = EdgeBase>(
|
export const getIncomersBase = <NodeType extends NodeBase = NodeBase, EdgeType extends EdgeBase = EdgeBase>(
|
||||||
@@ -55,9 +61,14 @@ export const getIncomersBase = <NodeType extends NodeBase = NodeBase, EdgeType e
|
|||||||
if (!isNodeBase(node)) {
|
if (!isNodeBase(node)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
const incomersIds = new Set();
|
||||||
|
edges.forEach((edge) => {
|
||||||
|
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.has(n.id));
|
||||||
return nodes.filter((n) => incomersIds.includes(n.id));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getNodePositionWithOrigin = (
|
export const getNodePositionWithOrigin = (
|
||||||
|
|||||||
Reference in New Issue
Block a user