mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-11-08 22:04:13 +00:00
73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
|
|
import {
|
|||
|
|
BaseEdge,
|
|||
|
|
EdgeLabelRenderer,
|
|||
|
|
EdgeProps,
|
|||
|
|
getBezierPath,
|
|||
|
|
} from 'reactflow';
|
|||
|
|
import useStore from '../../store';
|
|||
|
|
|
|||
|
|
import { useMemo } from 'react';
|
|||
|
|
import styles from './index.less';
|
|||
|
|
|
|||
|
|
export function ButtonEdge({
|
|||
|
|
id,
|
|||
|
|
sourceX,
|
|||
|
|
sourceY,
|
|||
|
|
targetX,
|
|||
|
|
targetY,
|
|||
|
|
sourcePosition,
|
|||
|
|
targetPosition,
|
|||
|
|
style = {},
|
|||
|
|
markerEnd,
|
|||
|
|
selected,
|
|||
|
|
}: EdgeProps) {
|
|||
|
|
const deleteEdgeById = useStore((state) => state.deleteEdgeById);
|
|||
|
|
const [edgePath, labelX, labelY] = getBezierPath({
|
|||
|
|
sourceX,
|
|||
|
|
sourceY,
|
|||
|
|
sourcePosition,
|
|||
|
|
targetX,
|
|||
|
|
targetY,
|
|||
|
|
targetPosition,
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const selectedStyle = useMemo(() => {
|
|||
|
|
return selected ? { strokeWidth: 1, stroke: '#1677ff' } : {};
|
|||
|
|
}, [selected]);
|
|||
|
|
|
|||
|
|
const onEdgeClick = () => {
|
|||
|
|
deleteEdgeById(id);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<>
|
|||
|
|
<BaseEdge
|
|||
|
|
path={edgePath}
|
|||
|
|
markerEnd={markerEnd}
|
|||
|
|
style={{ ...style, ...selectedStyle }}
|
|||
|
|
/>
|
|||
|
|
<EdgeLabelRenderer>
|
|||
|
|
<div
|
|||
|
|
style={{
|
|||
|
|
position: 'absolute',
|
|||
|
|
transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,
|
|||
|
|
fontSize: 12,
|
|||
|
|
// everything inside EdgeLabelRenderer has no pointer events by default
|
|||
|
|
// if you have an interactive element, set pointer-events: all
|
|||
|
|
pointerEvents: 'all',
|
|||
|
|
}}
|
|||
|
|
className="nodrag nopan"
|
|||
|
|
>
|
|||
|
|
<button
|
|||
|
|
className={styles.edgeButton}
|
|||
|
|
type="button"
|
|||
|
|
onClick={onEdgeClick}
|
|||
|
|
>
|
|||
|
|
×
|
|||
|
|
</button>
|
|||
|
|
</div>
|
|||
|
|
</EdgeLabelRenderer>
|
|||
|
|
</>
|
|||
|
|
);
|
|||
|
|
}
|