use std::collections::HashMap;
use std::collections::HashSet;
use indexmap::IndexMap;
use super::app::FinderState;
use super::app::SelectionPaths;
use super::app::SelectionSync;
use super::columns::ProjectListWidths;
use super::project_list::ExpandKey;
use super::project_list::VisibleRow;
use crate::project::AbsolutePath;
use crate::project::ProjectEntry;
pub(super) enum SyncResolution {
Unresolved,
Resolved(Option<(usize, usize)>),
}
pub(super) struct LintRuntimeRootEntry {
pub(super) path: AbsolutePath,
pub(super) linked_primary_root: Option<AbsolutePath>,
}
#[derive(Default)]
pub(super) struct ProjectList {
pub(super) roots: IndexMap<AbsolutePath, ProjectEntry>,
pub(super) paths: SelectionPaths,
pub(super) sync: SelectionSync,
pub(super) expanded: HashSet<ExpandKey>,
pub(super) finder: FinderState,
pub(super) cached_visible_rows: Vec<VisibleRow>,
pub(super) cached_root_sorted: Vec<u64>,
pub(super) cached_child_sorted: HashMap<usize, Vec<u64>>,
pub(super) cached_fit_widths: ProjectListWidths,
pub(super) cursor: usize,
}