use crate::primitives::tree_view::{TreeNode, TreeViewState};
pub fn get_visible_paths<T>(nodes: &[TreeNode<T>], state: &TreeViewState) -> Vec<Vec<usize>> {
let mut paths = Vec::new();
fn traverse<T>(
nodes: &[TreeNode<T>],
current_path: Vec<usize>,
state: &TreeViewState,
paths: &mut Vec<Vec<usize>>,
) {
for (idx, node) in nodes.iter().enumerate() {
let mut path = current_path.clone();
path.push(idx);
paths.push(path.clone());
if state.is_expanded(&path) && !node.children.is_empty() {
traverse(&node.children, path, state, paths);
}
}
}
traverse(nodes, Vec::new(), state, &mut paths);
paths
}