moveSelectedNodes method
Moves all selected nodes by the specified delta.
Does nothing if no nodes are selected.
Implementation
void moveSelectedNodes(Offset delta) {
final nodeIds = _selectedNodeIds.toList();
if (nodeIds.isEmpty) return;
// Capture previous positions for events
final previousPositions = <String, Offset>{};
for (final nodeId in nodeIds) {
final node = _nodes[nodeId];
if (node != null) {
previousPositions[nodeId] = node.position.value;
}
}
runInAction(() {
for (final nodeId in nodeIds) {
final node = _nodes[nodeId];
if (node != null) {
final newPosition = node.position.value + delta;
node.position.value = newPosition;
// Update visual position with snapping
node.setVisualPosition(_config.snapToGridIfEnabled(newPosition));
}
}
});
internalMarkNodesDirty(nodeIds);
// Emit extension events for each moved node
for (final nodeId in nodeIds) {
final node = _nodes[nodeId];
final previousPosition = previousPositions[nodeId];
if (node != null && previousPosition != null) {
_emitEvent(NodeMoved<T>(node, previousPosition));
}
}
}