use rat_focus::HasFocus;
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
pub mod table;
pub mod vec;
pub trait TableEditor {
type State: TableEditorState;
fn render(&self, area: Rect, cell_areas: &[Rect], buf: &mut Buffer, state: &mut Self::State);
}
pub trait TableEditorState: HasFocus {
type Context<'a>;
type Value: Clone;
type Err;
fn create_value<'a>(&self, ctx: &'a Self::Context<'a>) -> Result<Self::Value, Self::Err>;
fn set_value<'a>(
&mut self,
value: Self::Value,
ctx: &'a Self::Context<'a>,
) -> Result<(), Self::Err>;
fn value<'a>(&mut self, ctx: &'a Self::Context<'a>) -> Result<Option<Self::Value>, Self::Err>;
fn focused_col(&self) -> Option<usize>;
fn set_focused_col(&self, col: usize);
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Mode {
View,
Edit,
Insert,
}