findIntersectingGroup method

GroupAnnotation? findIntersectingGroup(
  1. String nodeId
)

Check if a node intersects with any group annotation Returns the first intersecting group, or null if none found

Implementation

GroupAnnotation? findIntersectingGroup(String nodeId) {
  final node = _parentController.nodes[nodeId];
  if (node == null) return null;

  final nodeRect = Rect.fromLTWH(
    node.visualPosition.value.dx,
    node.visualPosition.value.dy,
    node.size.value.width,
    node.size.value.height,
  );

  for (final annotation in _annotations.values) {
    if (annotation is GroupAnnotation &&
        annotation.currentIsVisible &&
        !annotation.dependencies.contains(nodeId)) {
      final groupRect = Rect.fromLTWH(
        annotation.visualPosition.value.dx,
        annotation.visualPosition.value.dy,
        annotation.size.width,
        annotation.size.height,
      );

      if (nodeRect.overlaps(groupRect)) {
        return annotation;
      }
    }
  }

  return null;
}