use crate::brain::skills::Skill;
#[derive(Debug, Clone, Default)]
pub struct SkillsDialogState {
pub filter: String,
pub selected_index: usize,
pub scroll_offset: u16,
}
impl SkillsDialogState {
pub fn reset(&mut self) {
self.filter.clear();
self.selected_index = 0;
self.scroll_offset = 0;
}
}
pub fn matching<'a>(skills: &'a [Skill], query: &str) -> Vec<&'a Skill> {
if query.is_empty() {
return skills.iter().collect();
}
let q = query.to_lowercase();
skills
.iter()
.filter(|s| s.name.to_lowercase().contains(&q) || s.description.to_lowercase().contains(&q))
.collect()
}