import React, { useState } from 'react'; import { EdgeLabelRenderer, BaseEdge } from 'reactflow'; import { X } from 'lucide-react'; export default function RemovableEdge({ id, sourceX, sourceY, targetX, targetY, style = {}, markerEnd, data, }) { const [isHovered, setIsHovered] = useState(false); // Cubic Bezier with horizontal control points max(50, |dx|/2) const dx = Math.max(50, Math.abs(targetX - sourceX) / 2); const edgePath = `M${sourceX},${sourceY} C${sourceX + dx},${sourceY} ${targetX - dx},${targetY} ${targetX},${targetY}`; const midX = (sourceX + targetX) / 2; const midY = (sourceY + targetY) / 2; const handleDelete = (evt) => { if (evt) evt.stopPropagation(); if (data && data.onDeleteEdge) { data.onDeleteEdge(id); } }; const handleDoubleClick = (evt) => { evt.stopPropagation(); handleDelete(evt); }; return ( <> {/* VISIBLE BEZIER EDGE */} {/* INVISIBLE WIDE HIT AREA FOR HOVER AND DOUBLE CLICK TO DELETE */} setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} onDoubleClick={handleDoubleClick} /> {/* OPTIONAL HOVER DELETE BUTTON IN CENTER */} {isHovered && (
setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} >
)} ); }