toon_format/tui/
events.rs1use std::time::Duration;
4
5use crossterm::event::{
6 self,
7 Event as CrosstermEvent,
8 KeyEvent,
9};
10
11pub enum Event {
13 Key(KeyEvent),
14 Tick,
15 Resize,
16}
17
18pub struct EventHandler;
19
20impl EventHandler {
21 pub fn poll(timeout: Duration) -> std::io::Result<Option<Event>> {
23 if event::poll(timeout)? {
24 match event::read()? {
25 CrosstermEvent::Key(key) => Ok(Some(Event::Key(key))),
26 CrosstermEvent::Resize(_, _) => Ok(Some(Event::Resize)),
27 _ => Ok(None),
28 }
29 } else {
30 Ok(Some(Event::Tick))
31 }
32 }
33}