Spaces:
Running
Running
| 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)); | |
| }; | |