pub(crate) mod confirm_dialog;
pub(crate) mod context_menu;
pub(crate) mod file_list;
pub(crate) mod git_graph;
pub(crate) mod path_input;
pub(crate) mod repo_list;
pub(crate) mod status_bar;
use color_eyre::Result;
use crossterm::event::{KeyEvent, MouseEvent};
use ratatui::Frame;
use ratatui::layout::Rect;
use tokio::sync::mpsc::UnboundedSender;
use crate::action::Action;
#[allow(dead_code)]
pub(crate) trait Component {
fn register_action_handler(&mut self, _tx: UnboundedSender<Action>) -> Result<()> {
Ok(())
}
fn init(&mut self) -> Result<()> {
Ok(())
}
fn handle_key_event(&mut self, _key: KeyEvent) -> Result<Option<Action>> {
Ok(None)
}
fn handle_mouse_event(&mut self, _mouse: MouseEvent) -> Result<Option<Action>> {
Ok(None)
}
fn update(&mut self, _action: Action) -> Result<Option<Action>> {
Ok(None)
}
fn draw(&mut self, frame: &mut Frame, area: Rect) -> Result<()>;
}