UNPKG

@difizen/ai-flow

Version:

Scalable, out-of-the-box, agent-oriented flow

53 lines 1.5 kB
import dagre from '@dagrejs/dagre'; import { cloneDeep } from 'lodash'; import { v4 } from 'uuid'; export function cleanEdges(nodes, edges) { var newEdges = cloneDeep(edges); return newEdges; } export function getNodeId(nodeType) { return nodeType + '-' + v4(); } export var getLayoutByDagre = function getLayoutByDagre(originNodes, originEdges) { var dagreGraph = new dagre.graphlib.Graph(); dagreGraph.setDefaultEdgeLabel(function () { return {}; }); var nodes = cloneDeep(originNodes).filter(function (node) { return !node.parentId; }); var edges = cloneDeep(originEdges); dagreGraph.setGraph({ rankdir: 'LR', align: 'UL', nodesep: 120, ranksep: 120 // ranker: 'tight-tree', // marginx: 1300, // marginy: 1200, }); nodes.forEach(function (node) { dagreGraph.setNode(node.id, { width: node.measured.width, height: node.measured.height }); }); edges.forEach(function (edge) { dagreGraph.setEdge(edge.source, edge.target); }); dagre.layout(dagreGraph); return dagreGraph; }; export var findNodes = function findNodes(nodeId, nodes, edge, onlyParent) { if (onlyParent) { return nodes.filter(function (node) { var _edge$filter; return (_edge$filter = edge.filter(function (item) { return item.target === nodeId; })) === null || _edge$filter === void 0 ? void 0 : _edge$filter.map(function (item) { return item.source; }).includes(node.id); }); } return; };