ratata 0.1.1

A tiny application builder for ratatui that includes everything you need to get started.
Documentation
use crossterm::event::{Event, KeyCode, KeyEventState, KeyModifiers, MouseEvent};

pub type KeyState = KeyEventState;

pub struct KeyMsg {
    pub code: KeyCode,
    pub modifiers: KeyModifiers,
    pub state: KeyState,
}

pub type MouseMsg = MouseEvent;

pub enum Message {
    Key(KeyMsg),
    Mouse(MouseMsg),
    Resize(u16, u16),
    FocusGained,
    FocusLost,
    #[cfg(feature = "paste")]
    Paste(String),
    Shutdown,
    Tick,
}

impl From<Event> for Message {
    fn from(value: Event) -> Self {
        match value {
            Event::FocusGained => Message::FocusGained,
            Event::FocusLost => Message::FocusLost,
            Event::Key(key) => Message::Key(KeyMsg {
                code: key.code,
                modifiers: key.modifiers,
                state: key.state,
            }),
            Event::Mouse(mouse) => Message::Mouse(mouse),
            #[cfg(feature = "paste")]
            Event::Paste(value) => Message::Paste(value),
            Event::Resize(x, y) => Message::Resize(x, y),
        }
    }
}