rsmoji 0.4.1

✨ Gitmojis, now oxidized! 🦀
use crate::globals::MAX_LIST_LENGTH;

pub struct UIState<'a> {
	pub offset: usize,
	pub selection: usize,
	pub user_input: String,
	pub filtered_emojis: Vec<&'a str>,
	pub insert_offset: usize,
}

impl UIState<'_> {
	pub fn emojis_clamp(&self) -> usize {
		return self.filtered_emojis.len().clamp(0, MAX_LIST_LENGTH);
	}

	pub fn filter_emojis(&mut self, emojis: &Vec<&'static str>) {
		self.filtered_emojis = emojis
			.iter()
			.copied()
			.filter(|&emoji| {
				emoji
					.to_lowercase()
					.contains(&self.user_input.to_lowercase())
			})
			.collect();
	}
}