rush_sync_server/ui/
widget.rs

1use crate::core::prelude::*;
2use crate::input::input::InputStateBackup;
3use ratatui::widgets::Paragraph;
4
5pub trait Widget {
6    fn render(&self) -> Paragraph;
7    fn handle_input(&mut self, key: KeyEvent) -> Option<String>;
8    fn as_input_state(&mut self) -> Option<&mut dyn InputWidget> {
9        None
10    }
11
12    /// ✅ NEU: Get backup data (default: empty)
13    fn get_backup_data(&self) -> Option<InputStateBackup> {
14        None
15    }
16
17    /// ✅ NEU: Restore from backup data (default: do nothing)
18    fn restore_backup_data(&mut self, _backup: InputStateBackup) {
19        // Default implementation: do nothing
20    }
21}
22
23pub trait InputWidget {
24    fn update_cursor_blink(&mut self);
25}