rtlibs-tui 0.1.5

rtools library: ratatui widgets
Documentation
mod config;
mod handle;
mod state;
mod widget;

pub use config::*;
// pub use handle::*;
pub use state::*;
pub use widget::*;

use crate::Result;

use crossterm::event::KeyCode;
use crossterm::event::KeyModifiers;
use ratatui::buffer::Buffer;
use ratatui::layout::Position;
use ratatui::layout::Rect;

pub trait Modal<RESPONSE, EVENT>: std::fmt::Debug
{
    fn config(&self) -> ModalConfig;
    fn render(
        &mut self,
        area: Rect,
        buf: &mut Buffer,
    );
    fn handle_key_event(
        &mut self,
        code: KeyCode,
        modifiers: KeyModifiers,
        event: EVENT,
    ) -> Result<RESPONSE>;
    fn cursor(&self) -> Option<Position>;
}

pub trait ModalService<RESPONSE, EVENT>
{
    fn modal(&mut self) -> Option<Box<dyn Modal<RESPONSE, EVENT>>>;
    fn modal_event(&mut self) -> Option<EVENT>;
}