chore: update deleteElements param
This commit is contained in:
@@ -113,18 +113,17 @@ const UseZoomPanHelperFlow = () => {
|
|||||||
console.log('edges', getEdges());
|
console.log('edges', getEdges());
|
||||||
}, [getNodes, getEdges]);
|
}, [getNodes, getEdges]);
|
||||||
|
|
||||||
const deleteSelectedElements1 = useCallback(() => {
|
const deleteSelectedElements = useCallback(() => {
|
||||||
const selectedNodes = nodes.filter(node => node.selected).map(node => node.id);
|
const selectedNodes = nodes.filter(node => node.selected);
|
||||||
const selectedEdges = edges.filter(edge => edge.selected).map(edge => edge.id);
|
const selectedEdges = edges.filter(edge => edge.selected);
|
||||||
deleteElements(selectedNodes, selectedEdges);
|
deleteElements({ nodes: selectedNodes, edges: selectedEdges });
|
||||||
}, [deleteElements, nodes, edges])
|
}, [deleteElements, nodes, edges])
|
||||||
|
|
||||||
const deleteSomeElements = useCallback(() => {
|
const deleteSomeElements = useCallback(() => {
|
||||||
deleteElements(['2'],['e1-3'])
|
deleteElements({ nodes: [{ id: '2' }], edges: [{ id: 'e1-3' }] })
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// called twice in strict mode of development mode
|
|
||||||
addEdges({ id: 'e3-4', source: '3', target: '4' });
|
addEdges({ id: 'e3-4', source: '3', target: '4' });
|
||||||
}, [addEdges]);
|
}, [addEdges]);
|
||||||
|
|
||||||
@@ -150,8 +149,7 @@ const UseZoomPanHelperFlow = () => {
|
|||||||
<button onClick={onAddNode}>add node</button>
|
<button onClick={onAddNode}>add node</button>
|
||||||
<button onClick={onResetNodes}>reset nodes</button>
|
<button onClick={onResetNodes}>reset nodes</button>
|
||||||
<button onClick={logNodes}>useNodes</button>
|
<button onClick={logNodes}>useNodes</button>
|
||||||
<button onClick={deleteSelectedElements1}>deleteSelectedElements1</button>
|
<button onClick={deleteSelectedElements}>deleteSelectedElements</button>
|
||||||
<button onClick={deleteSelectedElements2}>deleteSelectedElements2</button>
|
|
||||||
<button onClick={deleteSomeElements}>deleteSomeElements</button>
|
<button onClick={deleteSomeElements}>deleteSomeElements</button>
|
||||||
</div>
|
</div>
|
||||||
<Background />
|
<Background />
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ export default ({ deleteKeyCode, multiSelectionKeyCode }: HookParams): void => {
|
|||||||
if (deleteKeyPressed) {
|
if (deleteKeyPressed) {
|
||||||
const { nodeInternals, edges } = store.getState();
|
const { nodeInternals, edges } = store.getState();
|
||||||
const nodes = Array.from(nodeInternals.values());
|
const nodes = Array.from(nodeInternals.values());
|
||||||
const nodeIds = nodes.filter((node) => node.selected).map((node) => node.id);
|
const selectedNodes = nodes.filter((node) => node.selected);
|
||||||
const edgeIds = edges.filter((edge) => edge.selected).map((edge) => edge.id);
|
const selectedEdges = edges.filter((edge) => edge.selected);
|
||||||
deleteElements(nodeIds, edgeIds);
|
deleteElements({nodes: selectedNodes, edges: selectedEdges});
|
||||||
store.setState({ nodesSelectionActive: false });
|
store.setState({ nodesSelectionActive: false });
|
||||||
}
|
}
|
||||||
}, [deleteKeyPressed]);
|
}, [deleteKeyPressed]);
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ export default function useReactFlow<NodeData = any, EdgeData = any>(): ReactFlo
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const deleteElements = useCallback<Instance.DeleteElements>((nodeIds, edgeIds) => {
|
const deleteElements = useCallback<Instance.DeleteElements>(({ nodes: nodesDeleted, edges: edgesDeleted }) => {
|
||||||
const {
|
const {
|
||||||
nodeInternals,
|
nodeInternals,
|
||||||
edges,
|
edges,
|
||||||
@@ -126,6 +126,8 @@ export default function useReactFlow<NodeData = any, EdgeData = any>(): ReactFlo
|
|||||||
onEdgesChange,
|
onEdgesChange,
|
||||||
} = store.getState();
|
} = store.getState();
|
||||||
const nodes = Array.from(nodeInternals.values());
|
const nodes = Array.from(nodeInternals.values());
|
||||||
|
const nodeIds = (nodesDeleted || []).map((node) => node.id);
|
||||||
|
const edgeIds = (edgesDeleted || []).map((edge) => edge.id);
|
||||||
const nodesToRemove = nodes.reduce<Node[]>((res, node) => {
|
const nodesToRemove = nodes.reduce<Node[]>((res, node) => {
|
||||||
const parentHit = !nodeIds.includes(node.id) && node.parentNode && res.find((n) => n.id === node.parentNode);
|
const parentHit = !nodeIds.includes(node.id) && node.parentNode && res.find((n) => n.id === node.parentNode);
|
||||||
const deletable = typeof node.deletable === 'boolean' ? node.deletable : true;
|
const deletable = typeof node.deletable === 'boolean' ? node.deletable : true;
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ export type ReactFlowJsonObject<NodeData = any, EdgeData = any> = {
|
|||||||
viewport: Viewport;
|
viewport: Viewport;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type DeleteElementsOptions = {
|
||||||
|
nodes?: (Partial<Node> & { id: Node['id'] })[],
|
||||||
|
edges?: (Partial<Edge> & { id: Edge['id'] })[]
|
||||||
|
};
|
||||||
export namespace Instance {
|
export namespace Instance {
|
||||||
export type GetNodes<NodeData> = () => Node<NodeData>[];
|
export type GetNodes<NodeData> = () => Node<NodeData>[];
|
||||||
export type SetNodes<NodeData> = (
|
export type SetNodes<NodeData> = (
|
||||||
@@ -22,7 +26,7 @@ export namespace Instance {
|
|||||||
export type GetEdge<EdgeData> = (id: string) => Edge<EdgeData> | undefined;
|
export type GetEdge<EdgeData> = (id: string) => Edge<EdgeData> | undefined;
|
||||||
export type AddEdges<EdgeData> = (payload: Edge<EdgeData>[] | Edge<EdgeData>) => void;
|
export type AddEdges<EdgeData> = (payload: Edge<EdgeData>[] | Edge<EdgeData>) => void;
|
||||||
export type ToObject<NodeData = any, EdgeData = any> = () => ReactFlowJsonObject<NodeData, EdgeData>;
|
export type ToObject<NodeData = any, EdgeData = any> = () => ReactFlowJsonObject<NodeData, EdgeData>;
|
||||||
export type DeleteElements = (nodeIds: string[], edgeIds: string[]) => void
|
export type DeleteElements = ({ nodes, edges }: DeleteElementsOptions) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ReactFlowInstance<NodeData = any, EdgeData = any> = {
|
export type ReactFlowInstance<NodeData = any, EdgeData = any> = {
|
||||||
|
|||||||
Reference in New Issue
Block a user