use bevy_derive::{Deref, DerefMut};
use bevy_ecs::prelude::*;
use crossflow::Service;
use crate::SelectionCandidate;
#[derive(Debug, Clone, Copy, Event)]
pub struct RunSelector {
pub selector: Service<Option<Entity>, ()>,
pub input: Option<Entity>,
}
#[derive(Default, Debug, Clone, Copy, Deref, DerefMut, Event)]
pub struct Hover(pub Option<Entity>);
#[derive(Default, Debug, Clone, Copy, Deref, DerefMut, Event)]
pub struct Select(pub Option<SelectionCandidate>);
impl Select {
pub fn new(candidate: Option<Entity>) -> Select {
Select(candidate.map(|c| SelectionCandidate::new(c)))
}
pub fn provisional(candidate: Entity) -> Select {
Select(Some(SelectionCandidate::provisional(candidate)))
}
}
#[derive(Debug, Clone, Copy, Deref, DerefMut, Event)]
pub struct DoubleClickSelect(pub Entity);