findById function

Node? findById(
  1. CanvasSceneDocument doc,
  2. NodeId id
)

Find a node anywhere in the tree.

Implementation

Node? findById(CanvasSceneDocument doc, NodeId id) {
  Node? walk(Node n) {
    if (n.id == id) return n;
    if (!n.isGroup) return null;
    for (final c in n.childrenOrEmpty) {
      final hit = walk(c);
      if (hit != null) return hit;
    }
    return null;
  }

  for (final c in doc.children) {
    final hit = walk(c);
    if (hit != null) return hit;
  }
  return null;
}