use crate::view::selection::Direction;
use crossterm::event::KeyEvent;
pub enum UiEvent {
Key(KeyEvent),
Paste(String),
Mouse(MouseAction, (u16, u16)),
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum MouseAction {
ScrollUp,
ScrollDown,
Click,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) enum Nav {
Close,
Activate,
Clicked,
Moved,
Unhandled,
}
impl MouseAction {
pub fn from_event(kind: crossterm::event::MouseEventKind) -> Option<Self> {
use crossterm::event::MouseEventKind;
match kind {
MouseEventKind::ScrollUp => Some(Self::ScrollUp),
MouseEventKind::ScrollDown => Some(Self::ScrollDown),
MouseEventKind::Down(_) => Some(Self::Click),
_ => None,
}
}
pub fn direction(self) -> Option<Direction> {
match self {
Self::ScrollUp => Some(Direction::Backward),
Self::ScrollDown => Some(Direction::Forward),
Self::Click => None,
}
}
}