refactor(delete): only trigger when some node or edge is selected #1987

This commit is contained in:
moklick
2022-03-22 18:29:34 +01:00
parent d5c89a1d8f
commit 903b795762
2 changed files with 32 additions and 24 deletions
-1
View File
@@ -200,7 +200,6 @@ const OverviewFlow = () => {
maxZoom={Infinity} maxZoom={Infinity}
onNodesDelete={onNodesDelete} onNodesDelete={onNodesDelete}
onEdgesDelete={onEdgesDelete} onEdgesDelete={onEdgesDelete}
deleteKeyCode={null}
> >
<MiniMap nodeStrokeColor={nodeStrokeColor} nodeColor={nodeColor} nodeBorderRadius={2} /> <MiniMap nodeStrokeColor={nodeStrokeColor} nodeColor={nodeColor} nodeBorderRadius={2} />
<Controls /> <Controls />
+32 -23
View File
@@ -43,34 +43,43 @@ export default ({ deleteKeyCode, multiSelectionKeyCode }: HookParams): void => {
const edgesToRemove = [...selectedEdges, ...connectedEdges]; const edgesToRemove = [...selectedEdges, ...connectedEdges];
const edgeIdsToRemove = edgesToRemove.map((e) => e.id); const edgeIdsToRemove = edgesToRemove.map((e) => e.id);
if (hasDefaultNodes) { if (hasDefaultEdges || hasDefaultNodes) {
nodesToRemove.forEach((node) => { if (hasDefaultEdges) {
nodeInternals.delete(node.id); store.setState({
}); edges: edges.filter((e) => !edgeIdsToRemove.includes(e.id)),
});
}
if (hasDefaultNodes) {
nodesToRemove.forEach((node) => {
nodeInternals.delete(node.id);
});
store.setState({
nodeInternals: new Map(nodeInternals),
});
}
} }
if (hasDefaultEdges) { if (edgeIdsToRemove.length > 0) {
store.setState({ onEdgesDelete?.(edgesToRemove);
nodeInternals: new Map(nodeInternals),
edges: edges.filter((e) => !edgeIdsToRemove.includes(e.id)), if (onEdgesChange) {
}); const edgeChanges: EdgeChange[] = edgeIdsToRemove.map((id) => ({
id,
type: 'remove',
}));
onEdgesChange(edgeChanges);
}
} }
onEdgesDelete?.(edgesToRemove); if (nodesToRemove.length > 0) {
onNodesDelete?.(nodesToRemove); onNodesDelete?.(nodesToRemove);
if (onEdgesChange) { if (onNodesChange) {
const edgeChanges: EdgeChange[] = edgeIdsToRemove.map((id) => ({ const nodeChanges: NodeChange[] = nodesToRemove.map((n) => ({ id: n.id, type: 'remove' }));
id, onNodesChange(nodeChanges);
type: 'remove', }
}));
onEdgesChange(edgeChanges);
}
if (onNodesChange) {
const nodeChanges: NodeChange[] = nodesToRemove.map((n) => ({ id: n.id, type: 'remove' }));
onNodesChange(nodeChanges);
} }
store.setState({ nodesSelectionActive: false }); store.setState({ nodesSelectionActive: false });