afia_component/dom/
event.rs1use std::sync::Arc;
4
5use crate::dom::element::DomElement;
6use crate::ComponentImports;
7
8#[derive(Clone)]
10pub struct DomEvent {
11 inner: Arc<DomEventInner>,
12}
13struct DomEventInner {
14 event: i64,
15 imports: &'static ComponentImports,
16}
17impl DomEvent {
18 #[doc(hidden)]
20 pub fn _private_new(event_handle: i64, imports: &'static ComponentImports) -> Self {
21 Self {
22 inner: Arc::new(DomEventInner {
23 event: event_handle,
24 imports,
25 }),
26 }
27 }
28
29 pub fn target(&self) -> Option<DomElement> {
31 let element = unsafe {
32 afia_component_sys::dom_event_target(
33 self.inner.imports.component_imports_ptr,
34 self.inner.event,
35 )
36 };
37
38 DomElement::maybe_new(element, self.inner.imports.clone())
39 }
40
41 pub fn prevent_default(&self) {
43 unsafe {
44 afia_component_sys::dom_event_prevent_default(
45 self.inner.imports.component_imports_ptr,
46 self.inner.event,
47 )
48 }
49 }
50
51 pub fn temporary_way_to_get_i64(&self) -> i64 {
53 self.inner.event
54 }
55}
56impl Drop for DomEventInner {
57 fn drop(&mut self) {
58 }
60}