Skip to main content

matrixcode_tui/
lib.rs

1mod types;
2mod utils;
3mod markdown;
4mod app;
5mod draw;
6
7use anyhow::Result;
8use std::io::Stdout;
9use ratatui::{
10    backend::CrosstermBackend,
11    crossterm::{
12        event,
13        terminal::{disable_raw_mode, enable_raw_mode, Clear, ClearType},
14        execute, cursor::Show,
15    },
16    Terminal,
17};
18
19pub use matrixcode_core::{AgentEvent, EventData, EventType, cancel::CancellationToken};
20pub use app::TuiApp;
21
22pub(crate) const ANIM_MS: u64 = 80;
23pub(crate) const SPINNER: [&str; 10] = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
24
25pub fn setup_terminal() -> Result<Terminal<CrosstermBackend<Stdout>>> {
26    enable_raw_mode()?;
27    execute!(std::io::stdout(), event::EnableMouseCapture)?;
28    let mut t = Terminal::new(CrosstermBackend::new(std::io::stdout()))?;
29    t.clear()?;
30    Ok(t)
31}
32
33pub fn restore_terminal() -> Result<()> {
34    disable_raw_mode()?;
35    execute!(std::io::stdout(), event::DisableMouseCapture, Clear(ClearType::All), Show)?;
36    Ok(())
37}