update: pass store state as props to edge-renderer and edge

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
Braks
2021-11-22 13:40:25 +01:00
parent ebd0f9e738
commit 2b065b4e56
14 changed files with 152 additions and 143 deletions
+24 -18
View File
@@ -1,5 +1,15 @@
import { rectToBox } from './graph'
import { Edge, EdgePositions, ElementId, GraphNode, HandleElement, Position, Transform, XYPosition } from '~/types'
import {
Edge,
EdgePositions,
ElementId,
GraphNode,
HandleElement,
Position,
SourceTargetNode,
Transform,
XYPosition,
} from '~/types'
export function getHandlePosition(position: Position, node: GraphNode, handle: any | null = null): XYPosition {
const x = (handle?.x || 0) + node.__vf.position.x
@@ -103,22 +113,18 @@ export function isEdgeVisible({ sourcePos, targetPos, width, height, transform }
return overlappingArea > 0
}
type SourceTargetNode = {
sourceNode: GraphNode
targetNode: GraphNode
}
export const getSourceTargetNodes = (edge: Edge, nodes: GraphNode[]): SourceTargetNode => {
return nodes.reduce(
(res, node) => {
if (node.id === edge.source) {
res.sourceNode = node
}
if (node.id === edge.target) {
res.targetNode = node
}
return res
},
{ sourceNode: null, targetNode: null } as any,
)
let { sourceNode, targetNode }: any = {
sourceNode: null,
targetNode: null,
}
for (const node of nodes) {
if (!sourceNode || !targetNode) {
if (node.id === edge.source) sourceNode = node
if (node.id === edge.target) targetNode = node
} else {
break
}
}
return { sourceNode, targetNode }
}