rush_sync_server/ui/
widget.rs1use crate::core::prelude::*;
2use crate::input::state::InputStateBackup;
3use ratatui::widgets::Paragraph;
4
5pub trait Widget {
6 fn render(&self) -> Paragraph;
7
8 fn render_with_cursor(&self) -> (Paragraph, Option<(u16, u16)>) {
9 (self.render(), None) }
11
12 fn handle_input(&mut self, key: KeyEvent) -> Option<String>;
13 fn as_input_state(&mut self) -> Option<&mut dyn InputWidget> {
14 None
15 }
16
17 fn get_backup_data(&self) -> Option<InputStateBackup> {
19 None
20 }
21
22 fn restore_backup_data(&mut self, _backup: InputStateBackup) {
24 }
26}
27
28pub trait InputWidget {
29 fn update_cursor_blink(&mut self);
30}