refactor(edgerenderer): cleanup edge utils
This commit is contained in:
@@ -249,6 +249,7 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
|
|||||||
<MarkerDefinitions defaultColor={defaultMarkerColor} />
|
<MarkerDefinitions defaultColor={defaultMarkerColor} />
|
||||||
<g transform={`translate(${transform[0]},${transform[1]}) scale(${transform[2]})`}>
|
<g transform={`translate(${transform[0]},${transform[1]}) scale(${transform[2]})`}>
|
||||||
{edges.map((edge: Edge) => {
|
{edges.map((edge: Edge) => {
|
||||||
|
// @todo: getSourceTargetNodes is called many times during dragging/creating edges
|
||||||
const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes);
|
const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes);
|
||||||
return (
|
return (
|
||||||
<Edge
|
<Edge
|
||||||
|
|||||||
@@ -172,26 +172,18 @@ type SourceTargetNode = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getSourceTargetNodes = (edge: Edge, nodes: Node[]): SourceTargetNode => {
|
export const getSourceTargetNodes = (edge: Edge, nodes: Node[]): SourceTargetNode => {
|
||||||
const sourceNode = nodeHelper(nodes).find((n) => n.id === edge.source) || null;
|
return nodeHelper(nodes)
|
||||||
const targetNode = nodeHelper(nodes).find((n) => n.id === edge.target) || null;
|
.flatten()
|
||||||
|
.reduce(
|
||||||
return {
|
(res, node) => {
|
||||||
sourceNode,
|
if (node.id === edge.source) {
|
||||||
targetNode,
|
res.sourceNode = node;
|
||||||
};
|
}
|
||||||
|
if (node.id === edge.target) {
|
||||||
// return nodeHelper(nodes)
|
res.targetNode = node;
|
||||||
// .flatten()
|
}
|
||||||
// .reduce(
|
return res;
|
||||||
// (res, node) => {
|
},
|
||||||
// if (node.id === edge.source) {
|
{ sourceNode: null, targetNode: null } as SourceTargetNode
|
||||||
// res.sourceNode = node;
|
);
|
||||||
// }
|
|
||||||
// if (node.id === edge.target) {
|
|
||||||
// res.targetNode = node;
|
|
||||||
// }
|
|
||||||
// return res;
|
|
||||||
// },
|
|
||||||
// { sourceNode: null, targetNode: null } as SourceTargetNode
|
|
||||||
// );
|
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-2
@@ -2,10 +2,9 @@ import { Node } from '../types';
|
|||||||
|
|
||||||
function flat(arr: Node[], target: Node[]) {
|
function flat(arr: Node[], target: Node[]) {
|
||||||
arr.forEach(function (el) {
|
arr.forEach(function (el) {
|
||||||
|
target.push(el);
|
||||||
if (el.childNodes) {
|
if (el.childNodes) {
|
||||||
flat(el.childNodes, target);
|
flat(el.childNodes, target);
|
||||||
} else {
|
|
||||||
target.push(el);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user