diff --git a/example/src/DraggableEdge/index.js b/example/src/DraggableEdge/index.js index 3c01f098..2b7ffdca 100644 --- a/example/src/DraggableEdge/index.js +++ b/example/src/DraggableEdge/index.js @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import ReactFlow, { MiniMap, Controls, Background, updateEdge } from 'react-flow-renderer'; +import ReactFlow, { MiniMap, Controls, Background, updateEdge, addEdge } from 'react-flow-renderer'; const onLoad = (reactFlowInstance) => { console.log('flow loaded:', reactFlowInstance); @@ -52,7 +52,8 @@ const DragEdge = () => { const [elements, setElements] = useState(initialElements); const onEdgeUpdate = (oldEdge, newConnection) => { setElements((els) => updateEdge(oldEdge, newConnection, els)); - } + }; + const onConnect = (params) => setElements((els) => addEdge(params, els)); return ( { snapToGrid={true} snapGrid={snapGrid} onEdgeUpdate={onEdgeUpdate} + onConnect={onConnect} > { diff --git a/src/components/Edges/wrapEdge.tsx b/src/components/Edges/wrapEdge.tsx index a6611c15..0c6537cd 100644 --- a/src/components/Edges/wrapEdge.tsx +++ b/src/components/Edges/wrapEdge.tsx @@ -63,10 +63,10 @@ export default (EdgeComponent: ComponentType) => { [elementsSelectable, id, source, target, type, data, onClick] ); - const handleEitherEndOfEdgePress = useCallback( + const handleEdgeUpdaterMouseDown = useCallback( (event: React.MouseEvent, isEdgeHeader?: boolean): void => { if (elementsSelectable) { - setSelectedElements({ id, source, target }); + addSelectedElements({ id, source, target }); } const edgeElement: Edge = { id, source, target, type }; @@ -80,18 +80,18 @@ export default (EdgeComponent: ComponentType) => { [elementsSelectable, id, source, target, type, data, onEitherEndOfEdgePress] ); - const handleEdgeHeaderPress = useCallback( + const handleEdgeTargetMouseDown = useCallback( (event: React.MouseEvent): void => { - handleEitherEndOfEdgePress(event, true); + handleEdgeUpdaterMouseDown(event, true); }, - [handleEitherEndOfEdgePress], + [handleEdgeUpdaterMouseDown] ); - const handleEdgeFooterPress = useCallback( + const handleEdgeSourceMouseDown = useCallback( (event: React.MouseEvent): void => { - handleEitherEndOfEdgePress(event); + handleEdgeUpdaterMouseDown(event); }, - [handleEitherEndOfEdgePress], + [handleEdgeUpdaterMouseDown] ); if (isHidden) { @@ -100,9 +100,9 @@ export default (EdgeComponent: ComponentType) => { return ( - + ) => { targetPosition={targetPosition} markerEndId={markerEndId} /> - + void, + setPosition: (pos: XYPosition) => void ) { const sourceId = edge.source; const sourceHandleId = edge.sourceHandle || null; @@ -197,7 +197,7 @@ function renderEdge( if (onEdgeUpdate) { onEdgeUpdate(edge, connection); } - } + }; const handleEitherEndOfEdgePress = (event: React.MouseEvent, edge: Edge, isEdgeHeader = false) => { const { source, target } = edge; @@ -205,16 +205,8 @@ function renderEdge( const isValidConnection = () => true; const isTarget = !isEdgeHeader; - onMouseDown( - event, - nodeId, - setConnectionNodeId, - setPosition, - onConnect, - isTarget, - isValidConnection, - ) - } + onMouseDown(event, null, nodeId, setConnectionNodeId, setPosition, onConnect, isTarget, isValidConnection); + }; return ( { {edges.map((edge: Edge) => - renderEdge( - edge, - props, - nodes, - selectedElements, - elementsSelectable, - setConnectionNodeId, - setPosition, - ))} + renderEdge(edge, props, nodes, selectedElements, elementsSelectable, setConnectionNodeId, setPosition) + )} {renderConnectionLine && ( ({ x: 0, y: 0, width: state.width, height: state.height })), transform: [0, 0, 1], elements: [], - nodes: computed((state) => state.elements.filter((el) => isNode(el)) as Node[]), - edges: computed((state) => state.elements.filter((el) => isEdge(el)) as Edge[]), + nodes: computed((state) => state.elements.filter(isNode)), + edges: computed((state) => state.elements.filter(isEdge)), selectedElements: null, selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 }, diff --git a/src/style.css b/src/style.css index b4cdb987..9f6191e9 100644 --- a/src/style.css +++ b/src/style.css @@ -237,6 +237,6 @@ transform: translate(0, -50%); } -.move-handler { +.react-flow__edgeupdater { cursor: move; -} \ No newline at end of file +}