1mod keyboard_input;
2mod mouse_wheel;
3mod pointer_button;
4mod pointer_moved;
5
6pub(crate) mod internal;
7pub(crate) mod resource_event;
8pub mod update_queue_entry;
9
10pub use keyboard_input::KeyboardInput;
11pub use mouse_wheel::MouseWheel;
12pub use pointer_button::PointerButton;
13pub use pointer_moved::PointerMoved;
14pub use winit::event::ButtonSource;
15pub use winit::event::ElementState;
16
17use crate::components::ComponentId;
18use crate::events::CraftMessage::PointerButtonEvent;
19use std::any::Any;
20use winit::event::Ime;
21pub use winit::event::MouseButton;
22
23#[derive(Clone, Copy, Debug)]
24pub enum EventDispatchType {
25 Bubbling,
26 Direct(ComponentId),
27}
28
29#[derive(Clone, Debug)]
30pub enum CraftMessage {
31 Initialized,
32 PointerButtonEvent(PointerButton),
33 KeyboardInputEvent(KeyboardInput),
34 PointerMovedEvent(PointerMoved),
35 MouseWheelEvent(MouseWheel),
36 ModifiersChangedEvent(winit::event::Modifiers),
37 ImeEvent(Ime),
38 TextInputChanged(String),
39 DropdownToggled(bool),
41 DropdownItemSelected(usize),
44 SwitchToggled(bool),
46 SliderValueChanged(f64),
47}
48
49impl CraftMessage {
50 pub fn clicked(&self) -> bool {
51 if let PointerButtonEvent(pointer_button) = self {
52 if pointer_button.button.mouse_button() == MouseButton::Left
53 && pointer_button.state == ElementState::Released
54 {
55 return true;
56 }
57 }
58
59 false
60 }
61}
62
63impl PointerButton {
64 pub fn clicked(&self) -> bool {
65 self.button.mouse_button() == MouseButton::Left && self.state == ElementState::Released
66 }
67}
68
69#[cfg(target_arch = "wasm32")]
70pub type UserMessage = dyn Any;
71#[cfg(not(target_arch = "wasm32"))]
72pub type UserMessage = dyn Any + Send + Sync;
73
74pub enum Message {
75 CraftMessage(CraftMessage),
76 #[cfg(target_arch = "wasm32")]
77 UserMessage(Box<UserMessage>),
78 #[cfg(not(target_arch = "wasm32"))]
79 UserMessage(Box<UserMessage>),
80}
81
82impl Message {
83 pub fn clicked(&self) -> bool {
84 if let Message::CraftMessage(message) = self {
85 return message.clicked();
86 }
87
88 false
89 }
90}