mod app;
pub mod event;
mod ui;
pub mod widgets;
pub use app::{App, AppState};
pub use event::{handle_key_event, Event, EventHandler};
pub use ui::draw;
use std::io::{self, Stdout};
use crossterm::{
execute,
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
};
use ratatui::prelude::*;
pub type Tui = Terminal<CrosstermBackend<Stdout>>;
pub fn init_terminal() -> io::Result<Tui> {
enable_raw_mode()?;
let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen)?;
let backend = CrosstermBackend::new(stdout);
Terminal::new(backend)
}
pub fn restore_terminal(terminal: &mut Tui) -> io::Result<()> {
disable_raw_mode()?;
execute!(terminal.backend_mut(), LeaveAlternateScreen)?;
terminal.show_cursor()?;
Ok(())
}