getOutgoers.ts 526 B

1234567891011121314151617181920
  1. import { NodeData, EdgeData } from "reaflow/dist/types";
  2. export const getOutgoers = (
  3. nodeId: string,
  4. nodes: NodeData[],
  5. edges: EdgeData[]
  6. ): NodeData[] => {
  7. const allOutgoers: NodeData[] = [];
  8. const runner = (nodeId: string) => {
  9. const outgoerIds = edges.filter((e) => e.from === nodeId).map((e) => e.to);
  10. const nodeList = nodes.filter((n) => outgoerIds.includes(n.id));
  11. allOutgoers.push(...nodeList);
  12. nodeList.forEach((node) => runner(node.id));
  13. };
  14. runner(nodeId);
  15. return allOutgoers;
  16. };