use std::io;
use super::Area;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Request {
Grab { grab_offset: usize },
DragTo { target: usize, grab_offset: usize },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Gesture {
Press,
Drag,
}
pub(crate) trait Component {
fn area(&self, boxed: Area) -> Area;
fn render(&self, area: Area, out: &mut dyn io::Write) -> io::Result<()>;
fn press(
&self,
_area: Area,
_at: (u16, u16),
_max_offset: usize,
_gesture: Gesture,
) -> Option<Request> {
None
}
}