Prevent unnecessary updates when selectNodesOnDrag = false

This commit is contained in:
artemtam
2026-01-22 13:43:56 +01:00
parent cf2d4be3f5
commit 904c2081fe

View File

@@ -304,8 +304,16 @@ const createStore = ({
const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();
const nodesToUnselect = nodes ? nodes : storeNodes; const nodesToUnselect = nodes ? nodes : storeNodes;
const edgesToUnselect = edges ? edges : storeEdges; const edgesToUnselect = edges ? edges : storeEdges;
const nodeChanges = nodesToUnselect.map((n) => {
const nodeChanges: NodeSelectionChange[] = [];
for (const n of nodesToUnselect) {
if (!n.selected) {
continue; // skip changing nodes that are not selected
}
const internalNode = nodeLookup.get(n.id); const internalNode = nodeLookup.get(n.id);
if (internalNode) { if (internalNode) {
/* /*
* we need to unselect the internal node that was selected previously before we * we need to unselect the internal node that was selected previously before we
@@ -314,9 +322,18 @@ const createStore = ({
internalNode.selected = false; internalNode.selected = false;
} }
return createSelectionChange(n.id, false); nodeChanges.push(createSelectionChange(n.id, false));
}); }
const edgeChanges = edgesToUnselect.map((edge) => createSelectionChange(edge.id, false));
const edgeChanges: EdgeSelectionChange[] = [];
for (const e of edgesToUnselect) {
if (!e.selected) {
continue; // skip changing edges that are not selected
}
edgeChanges.push(createSelectionChange(e.id, false));
}
triggerNodeChanges(nodeChanges); triggerNodeChanges(nodeChanges);
triggerEdgeChanges(edgeChanges); triggerEdgeChanges(edgeChanges);