diff --git a/packages/core/src/components/Edges/wrapEdge.tsx b/packages/core/src/components/Edges/wrapEdge.tsx index ec018cd5..909d46dc 100644 --- a/packages/core/src/components/Edges/wrapEdge.tsx +++ b/packages/core/src/components/Edges/wrapEdge.tsx @@ -54,6 +54,7 @@ export default (EdgeComponent: ComponentType) => { disableKeyboardA11y, }: WrapEdgeProps): JSX.Element | null => { const edgeRef = useRef(null); + const [updateHover, setUpdateHover] = useState(false); const [updating, setUpdating] = useState(false); const store = useStoreApi(); @@ -92,11 +93,13 @@ export default (EdgeComponent: ComponentType) => { const isTarget = isSourceHandle; const edge = store.getState().edges.find((e) => e.id === id)!; + setUpdating(true); onEdgeUpdateStart?.(event, edge, handleType); - const _onEdgeUpdateEnd = onEdgeUpdateEnd - ? (evt: MouseEvent): void => onEdgeUpdateEnd(evt, edge, handleType) - : undefined; + const _onEdgeUpdateEnd = (evt: MouseEvent) => { + setUpdating(false); + onEdgeUpdateEnd?.(evt, edge, handleType); + }; const onConnectEdge = (connection: Connection) => onEdgeUpdate?.(edge, connection); @@ -119,8 +122,8 @@ export default (EdgeComponent: ComponentType) => { const onEdgeUpdaterTargetMouseDown = (event: React.MouseEvent): void => handleEdgeUpdater(event, false); - const onEdgeUpdaterMouseEnter = () => setUpdating(true); - const onEdgeUpdaterMouseOut = () => setUpdating(false); + const onEdgeUpdaterMouseEnter = () => setUpdateHover(true); + const onEdgeUpdaterMouseOut = () => setUpdateHover(false); const inactive = !elementsSelectable && !onClick; const handleEdgeUpdate = typeof onEdgeUpdate !== 'undefined'; @@ -128,7 +131,7 @@ export default (EdgeComponent: ComponentType) => { 'react-flow__edge', `react-flow__edge-${type}`, className, - { selected, animated, inactive, updating }, + { selected, animated, inactive, updating: updateHover }, ]); const onKeyDown = (event: KeyboardEvent) => { @@ -161,31 +164,34 @@ export default (EdgeComponent: ComponentType) => { aria-describedby={disableKeyboardA11y ? undefined : `${ARIA_EDGE_DESC_KEY}-${rfId}`} ref={edgeRef} > - + {!updating && ( + + )} + {handleEdgeUpdate && (