arrangeNodesHierarchically method

void arrangeNodesHierarchically()

Arranges nodes hierarchically by type.

Groups nodes by their type property and arranges each type group in rows, with 200 pixels horizontal spacing and 150 pixels vertical spacing between groups.

Example:

controller.arrangeNodesHierarchically();

Implementation

void arrangeNodesHierarchically() {
  // Simple implementation - arrange by type
  final nodesByType = <String, List<Node<T>>>{};
  for (final node in _nodes.values) {
    nodesByType.putIfAbsent(node.type, () => []).add(node);
  }

  runInAction(() {
    double y = 0;
    for (final entry in nodesByType.entries) {
      double x = 0;
      for (final node in entry.value) {
        final newPosition = Offset(x, y);
        node.position.value = newPosition;
        // Update visual position with snapping
        node.setVisualPosition(_config.snapToGridIfEnabled(newPosition));
        x += 200;
      }
      y += 150;
    }
  });
}