feat(edgeUpdate): add onEdgeUpdateStart handler closes #1120
This commit is contained in:
@@ -49,6 +49,7 @@ const initialElements: Elements = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const onLoad = (reactFlowInstance: OnLoadParams) => reactFlowInstance.fitView();
|
const onLoad = (reactFlowInstance: OnLoadParams) => reactFlowInstance.fitView();
|
||||||
|
const onEdgeUpdateStart = (_: React.MouseEvent, edge: Edge) => console.log('start update', edge);
|
||||||
|
|
||||||
const UpdatableEdge = () => {
|
const UpdatableEdge = () => {
|
||||||
const [elements, setElements] = useState<Elements>(initialElements);
|
const [elements, setElements] = useState<Elements>(initialElements);
|
||||||
@@ -57,7 +58,14 @@ const UpdatableEdge = () => {
|
|||||||
const onConnect = (params: Connection | Edge) => setElements((els) => addEdge(params, els));
|
const onConnect = (params: Connection | Edge) => setElements((els) => addEdge(params, els));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ReactFlow elements={elements} onLoad={onLoad} snapToGrid={true} onEdgeUpdate={onEdgeUpdate} onConnect={onConnect}>
|
<ReactFlow
|
||||||
|
elements={elements}
|
||||||
|
onLoad={onLoad}
|
||||||
|
snapToGrid={true}
|
||||||
|
onEdgeUpdate={onEdgeUpdate}
|
||||||
|
onConnect={onConnect}
|
||||||
|
onEdgeUpdateStart={onEdgeUpdateStart}
|
||||||
|
>
|
||||||
<Controls />
|
<Controls />
|
||||||
</ReactFlow>
|
</ReactFlow>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
onMouseMove,
|
onMouseMove,
|
||||||
onMouseLeave,
|
onMouseLeave,
|
||||||
edgeUpdaterRadius,
|
edgeUpdaterRadius,
|
||||||
|
onEdgeUpdateStart,
|
||||||
}: WrapEdgeProps): JSX.Element | null => {
|
}: WrapEdgeProps): JSX.Element | null => {
|
||||||
const addSelectedElements = useStoreActions((actions) => actions.addSelectedElements);
|
const addSelectedElements = useStoreActions((actions) => actions.addSelectedElements);
|
||||||
const setConnectionNodeId = useStoreActions((actions) => actions.setConnectionNodeId);
|
const setConnectionNodeId = useStoreActions((actions) => actions.setConnectionNodeId);
|
||||||
@@ -138,6 +139,8 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
const isValidConnection = () => true;
|
const isValidConnection = () => true;
|
||||||
const isTarget = isSourceHandle;
|
const isTarget = isSourceHandle;
|
||||||
|
|
||||||
|
onEdgeUpdateStart?.(event, edgeElement);
|
||||||
|
|
||||||
onMouseDown(
|
onMouseDown(
|
||||||
event,
|
event,
|
||||||
handleId,
|
handleId,
|
||||||
@@ -150,7 +153,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
connectionMode
|
connectionMode
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[id, source, target, type, sourceHandleId, targetHandleId, setConnectionNodeId, setPosition]
|
[id, source, target, type, sourceHandleId, targetHandleId, setConnectionNodeId, setPosition, edgeElement]
|
||||||
);
|
);
|
||||||
|
|
||||||
const onEdgeUpdaterSourceMouseDown = useCallback(
|
const onEdgeUpdaterSourceMouseDown = useCallback(
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ interface EdgeRendererProps {
|
|||||||
onEdgeMouseEnter?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseEnter?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
onEdgeMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeUpdateStart?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,6 +176,7 @@ const Edge = ({
|
|||||||
onMouseLeave={props.onEdgeMouseLeave}
|
onMouseLeave={props.onEdgeMouseLeave}
|
||||||
edgeUpdaterRadius={props.edgeUpdaterRadius}
|
edgeUpdaterRadius={props.edgeUpdaterRadius}
|
||||||
onEdgeDoubleClick={props.onEdgeDoubleClick}
|
onEdgeDoubleClick={props.onEdgeDoubleClick}
|
||||||
|
onEdgeUpdateStart={props.onEdgeUpdateStart}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ const GraphView = ({
|
|||||||
onEdgeMouseMove,
|
onEdgeMouseMove,
|
||||||
onEdgeMouseLeave,
|
onEdgeMouseLeave,
|
||||||
edgeUpdaterRadius,
|
edgeUpdaterRadius,
|
||||||
|
onEdgeUpdateStart,
|
||||||
}: GraphViewProps) => {
|
}: GraphViewProps) => {
|
||||||
const isInitialized = useRef<boolean>(false);
|
const isInitialized = useRef<boolean>(false);
|
||||||
const setOnConnect = useStoreActions((actions) => actions.setOnConnect);
|
const setOnConnect = useStoreActions((actions) => actions.setOnConnect);
|
||||||
@@ -275,6 +276,7 @@ const GraphView = ({
|
|||||||
onEdgeMouseEnter={onEdgeMouseEnter}
|
onEdgeMouseEnter={onEdgeMouseEnter}
|
||||||
onEdgeMouseMove={onEdgeMouseMove}
|
onEdgeMouseMove={onEdgeMouseMove}
|
||||||
onEdgeMouseLeave={onEdgeMouseLeave}
|
onEdgeMouseLeave={onEdgeMouseLeave}
|
||||||
|
onEdgeUpdateStart={onEdgeUpdateStart}
|
||||||
edgeUpdaterRadius={edgeUpdaterRadius}
|
edgeUpdaterRadius={edgeUpdaterRadius}
|
||||||
/>
|
/>
|
||||||
</FlowRenderer>
|
</FlowRenderer>
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
|
|||||||
onEdgeMouseMove?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeMouseMove?: (event: MouseEvent, edge: Edge) => void;
|
||||||
onEdgeMouseLeave?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeMouseLeave?: (event: MouseEvent, edge: Edge) => void;
|
||||||
onEdgeDoubleClick?: (event: MouseEvent, edge: Edge) => void;
|
onEdgeDoubleClick?: (event: MouseEvent, edge: Edge) => void;
|
||||||
|
onEdgeUpdateStart?: (event: MouseEvent, edge: Edge) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
nodeTypesId?: string;
|
nodeTypesId?: string;
|
||||||
edgeTypesId?: string;
|
edgeTypesId?: string;
|
||||||
@@ -192,6 +193,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
|
|||||||
onEdgeMouseEnter,
|
onEdgeMouseEnter,
|
||||||
onEdgeMouseMove,
|
onEdgeMouseMove,
|
||||||
onEdgeMouseLeave,
|
onEdgeMouseLeave,
|
||||||
|
onEdgeUpdateStart,
|
||||||
edgeUpdaterRadius = 10,
|
edgeUpdaterRadius = 10,
|
||||||
nodeTypesId = '1',
|
nodeTypesId = '1',
|
||||||
edgeTypesId = '1',
|
edgeTypesId = '1',
|
||||||
@@ -270,6 +272,7 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
|
|||||||
onEdgeMouseEnter={onEdgeMouseEnter}
|
onEdgeMouseEnter={onEdgeMouseEnter}
|
||||||
onEdgeMouseMove={onEdgeMouseMove}
|
onEdgeMouseMove={onEdgeMouseMove}
|
||||||
onEdgeMouseLeave={onEdgeMouseLeave}
|
onEdgeMouseLeave={onEdgeMouseLeave}
|
||||||
|
onEdgeUpdateStart={onEdgeUpdateStart}
|
||||||
edgeUpdaterRadius={edgeUpdaterRadius}
|
edgeUpdaterRadius={edgeUpdaterRadius}
|
||||||
/>
|
/>
|
||||||
<ElementUpdater elements={elements} />
|
<ElementUpdater elements={elements} />
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ export interface WrapEdgeProps<T = any> {
|
|||||||
onMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
onMouseMove?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
onMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
onMouseLeave?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
edgeUpdaterRadius?: number;
|
edgeUpdaterRadius?: number;
|
||||||
|
onEdgeUpdateStart?: (event: React.MouseEvent, edge: Edge) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EdgeProps<T = any> {
|
export interface EdgeProps<T = any> {
|
||||||
|
|||||||
Reference in New Issue
Block a user