titik 0.3.1

A cross platform text ui widget
Documentation
use crate::Value;
pub use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, MouseEvent};

#[derive(Debug, Clone, PartialEq)]
pub struct InputEvent {
    pub value: Value,
}

impl From<Value> for InputEvent {
    fn from(value: Value) -> Self {
        InputEvent { value }
    }
}

#[derive(Debug, Clone, PartialEq)]
pub enum Event {
    Key(KeyEvent),
    Mouse(MouseEvent),
    InputEvent(InputEvent),
    Resize(u16, u16),
}

impl From<InputEvent> for Event {
    fn from(ie: InputEvent) -> Self {
        Event::InputEvent(ie)
    }
}

impl Event {
    pub fn from_crossterm(c_event: crossterm::event::Event) -> Self {
        match c_event {
            crossterm::event::Event::Key(ke) => Event::Key(ke),
            crossterm::event::Event::Mouse(me) => Event::Mouse(me),
            crossterm::event::Event::Resize(width, height) => {
                Event::Resize(width, height)
            }
        }
    }

    pub fn is_mouse_click(&self) -> bool {
        match self {
            Event::Mouse(me) => match me {
                MouseEvent::Down(_, _, _, _) => true,
                _ => false,
            },
            _ => false,
        }
    }
}