use super::NoAction;
#[derive(Clone, Debug, PartialEq)]
pub struct InteractionEvents<A = NoAction> {
pub click: Option<A>,
pub doubleClick: Option<A>,
pub rightClick: Option<A>,
pub hover: Option<A>,
pub unhover: Option<A>,
pub pointerDown: Option<A>,
pub pointerUp: Option<A>,
pub pointerMove: Option<A>,
pub scroll: Option<A>,
pub focus: Option<A>,
pub blur: Option<A>,
pub key: Option<A>,
}
impl<A> Default for InteractionEvents<A> {
fn default() -> Self {
Self {
click: None,
doubleClick: None,
rightClick: None,
hover: None,
unhover: None,
pointerDown: None,
pointerUp: None,
pointerMove: None,
scroll: None,
focus: None,
blur: None,
key: None,
}
}
}
impl<A> InteractionEvents<A> {
pub fn hasLocalInput(&self) -> bool {
self.click.is_some()
|| self.doubleClick.is_some()
|| self.rightClick.is_some()
|| self.hover.is_some()
|| self.unhover.is_some()
|| self.pointerDown.is_some()
|| self.pointerUp.is_some()
|| self.pointerMove.is_some()
|| self.scroll.is_some()
|| self.focus.is_some()
|| self.blur.is_some()
|| self.key.is_some()
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum CursorIcon {
Default,
Pointer,
Text,
Grab,
Grabbing,
}