aboutsummaryrefslogtreecommitdiff
path: root/src/component.rs
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2024-03-05 23:34:55 -0500
committerShav Kinderlehrer <[email protected]>2024-03-05 23:34:55 -0500
commit022574877dbabc1fbb386dc3b59765de528107c9 (patch)
treee662b3808cd9903ecb76d6a61029ac69de701aa8 /src/component.rs
downloadmolehole-022574877dbabc1fbb386dc3b59765de528107c9.tar.gz
molehole-022574877dbabc1fbb386dc3b59765de528107c9.zip
Initial commit
Diffstat (limited to 'src/component.rs')
-rw-r--r--src/component.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/component.rs b/src/component.rs
new file mode 100644
index 0000000..1896bc2
--- /dev/null
+++ b/src/component.rs
@@ -0,0 +1,43 @@
+use crossterm::event::{KeyEvent, MouseEvent};
+use eyre::Result;
+use ratatui::prelude::{Frame, Rect};
+
+use crate::action::Action;
+use crate::app_event::AppEvent;
+
+pub trait Component {
+ fn init(&mut self) -> Result<()> {
+ Ok(())
+ }
+
+ #[allow(unused)]
+ fn handle_event(&mut self, event: AppEvent) -> Result<Option<Action>> {
+ match event {
+ AppEvent::Key(key_event) => Ok(self.handle_key_event(key_event)?),
+ AppEvent::Mouse(mouse_event) => {
+ Ok(self.handle_mouse_event(mouse_event)?)
+ }
+ _ => Ok(None),
+ }
+ }
+
+ #[allow(unused)]
+ fn handle_key_event(&mut self, key: KeyEvent) -> Result<Option<Action>> {
+ Ok(None)
+ }
+
+ #[allow(unused)]
+ fn handle_mouse_event(
+ &mut self,
+ mouse: MouseEvent,
+ ) -> Result<Option<Action>> {
+ Ok(None)
+ }
+
+ #[allow(unused)]
+ fn update(&mut self, action: Action) -> Result<Option<Action>> {
+ Ok(None)
+ }
+
+ fn render(&mut self, frame: &mut Frame, rect: Rect);
+}