flattenCarpenterTree<T> function
List<CarpenterTreeFlatNode<T> >
flattenCarpenterTree<T>(
- List<
CarpenterTreeNode< roots,T> > - Set<
Object> expandedIds
Implementation
List<CarpenterTreeFlatNode<T>> flattenCarpenterTree<T>(
List<CarpenterTreeNode<T>> roots,
Set<Object> expandedIds,
) {
final result = <CarpenterTreeFlatNode<T>>[];
void visit(
Iterable<CarpenterTreeNode<T>> nodes,
int depth,
Object? parentId,
) {
for (final node in nodes) {
result.add(
CarpenterTreeFlatNode<T>(node: node, depth: depth, parentId: parentId),
);
if (expandedIds.contains(node.id) && node.children.isNotEmpty) {
visit(node.children, depth + 1, node.id);
}
}
}
visit(roots, 0, null);
return List.unmodifiable(result);
}