use std::collections::HashSet;
use std::path::PathBuf;
use crate::node::TreeNode;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SelectionMode {
Replace,
Toggle,
ExtendRange,
}
pub(crate) fn sync_flags(root: &mut TreeNode, selected_paths: &[PathBuf]) {
let set: HashSet<&PathBuf> = selected_paths.iter().collect();
sync_node(root, &set);
}
fn sync_node(node: &mut TreeNode, selected: &HashSet<&PathBuf>) {
node.is_selected = selected.contains(&node.path);
for child in &mut node.children {
sync_node(child, selected);
}
}