inference-playground / src /lib /helpers /getNodesAssociatedWith.ts
enzostvs's picture
enzostvs HF Staff
add a way to delete node
98c5a87
import type { Edge, Node } from '@xyflow/svelte';
export const getNodesAssociatedWith = (nodeId: string, allNodes: Node[], allEdges: Edge[]) => {
const nodeIdsToDelete = new Set<string>();
const queue = [nodeId];
while (queue.length > 0) {
const currentId = queue.shift()!;
const outgoingEdges = allEdges.filter((e) => e.source === currentId);
for (const edge of outgoingEdges) {
if (!nodeIdsToDelete.has(edge.target)) {
nodeIdsToDelete.add(edge.target);
queue.push(edge.target);
}
}
}
return allNodes.filter((node) => nodeIdsToDelete.has(node.id));
};