diff --git a/packages/ui/src/views/agentflowsv2/AgentFlowEdge.jsx b/packages/ui/src/views/agentflowsv2/AgentFlowEdge.jsx index 56e73908..ad34ccf6 100644 --- a/packages/ui/src/views/agentflowsv2/AgentFlowEdge.jsx +++ b/packages/ui/src/views/agentflowsv2/AgentFlowEdge.jsx @@ -1,6 +1,10 @@ import { EdgeLabelRenderer, getBezierPath } from 'reactflow' -import { memo } from 'react' +import { memo, useState, useContext } from 'react' import PropTypes from 'prop-types' +import { useDispatch } from 'react-redux' +import { SET_DIRTY } from '@/store/actions' +import { flowContext } from '@/store/context/ReactFlowContext' +import { IconX } from '@tabler/icons-react' function EdgeLabel({ transform, isHumanInput, label, color }) { return ( @@ -30,11 +34,23 @@ EdgeLabel.propTypes = { color: PropTypes.string } +const foreignObjectSize = 40 + const AgentFlowEdge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, data, markerEnd, selected }) => { + const [isHovered, setIsHovered] = useState(false) + const { deleteEdge } = useContext(flowContext) + const dispatch = useDispatch() + + const onEdgeClick = (evt, id) => { + evt.stopPropagation() + deleteEdge(id) + dispatch({ type: SET_DIRTY }) + } + const xEqual = sourceX === targetX const yEqual = sourceY === targetY - const [edgePath] = getBezierPath({ + const [edgePath, edgeCenterX, edgeCenterY] = getBezierPath({ // we need this little hack in order to display the gradient for a straight line sourceX: xEqual ? sourceX + 0.0001 : sourceX, sourceY: yEqual ? sourceY + 0.0001 : sourceY, @@ -63,6 +79,8 @@ const AgentFlowEdge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, cursor: 'pointer' }} d={edgePath} + onMouseEnter={() => setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} /> setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} /> {data?.edgeLabel && ( @@ -88,6 +108,70 @@ const AgentFlowEdge = ({ id, sourceX, sourceY, targetX, targetY, sourcePosition, /> )} + {isHovered && ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > +
+ +
+
+ )} ) }