diff --git a/src/container/EdgeRenderer/index.tsx b/src/container/EdgeRenderer/index.tsx
index 6e0f0cad..6d6453cf 100644
--- a/src/container/EdgeRenderer/index.tsx
+++ b/src/container/EdgeRenderer/index.tsx
@@ -1,4 +1,4 @@
-import React, { memo, CSSProperties } from 'react';
+import React, { memo, CSSProperties, useCallback } from 'react';
import { useStoreState } from '../../store/hooks';
import ConnectionLine from '../../components/ConnectionLine/index';
@@ -29,21 +29,40 @@ interface EdgeRendererProps {
onEdgeUpdate?: OnEdgeUpdateFunc;
}
-function renderEdge(
- edge: Edge,
- props: EdgeRendererProps,
- nodes: Node[],
- selectedElements: Elements | null,
- elementsSelectable: boolean,
- transform: Transform,
- width: number,
- height: number,
- onlyRenderVisibleElements: boolean
-) {
+interface EdgeWrapperProps {
+ edge: Edge;
+ props: EdgeRendererProps;
+ nodes: Node[];
+ selectedElements: Elements | null;
+ elementsSelectable: boolean;
+ transform: Transform;
+ width: number;
+ height: number;
+ onlyRenderVisibleElements: boolean;
+}
+
+const Edge = ({
+ edge,
+ props,
+ nodes,
+ selectedElements,
+ elementsSelectable,
+ transform,
+ width,
+ height,
+ onlyRenderVisibleElements,
+}: EdgeWrapperProps) => {
const sourceHandleId = edge.sourceHandle || null;
const targetHandleId = edge.targetHandle || null;
const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes);
+ const onConnectEdge = useCallback(
+ (connection: Connection) => {
+ props.onEdgeUpdate?.(edge, connection);
+ },
+ [edge]
+ );
+
if (!sourceNode) {
console.warn(`couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`);
return null;
@@ -100,10 +119,6 @@ function renderEdge(
const isSelected = selectedElements?.some((elm) => isEdge(elm) && elm.id === edge.id) || false;
- const onConnectEdge = (connection: Connection) => {
- props.onEdgeUpdate?.(edge, connection);
- };
-
return (
);
-}
+};
const EdgeRenderer = (props: EdgeRendererProps) => {
const transform = useStoreState((state) => state.transform);
@@ -173,19 +188,20 @@ const EdgeRenderer = (props: EdgeRendererProps) => {