use std::sync::Arc;
use crate::dom::element::DomElement;
use crate::ComponentImports;
#[derive(Clone)]
pub struct DomEvent {
inner: Arc<DomEventInner>,
}
struct DomEventInner {
event: i64,
imports: &'static ComponentImports,
}
impl DomEvent {
#[doc(hidden)]
pub fn _private_new(event_handle: i64, imports: &'static ComponentImports) -> Self {
Self {
inner: Arc::new(DomEventInner {
event: event_handle,
imports,
}),
}
}
pub fn target(&self) -> Option<DomElement> {
let element = unsafe {
afia_component_sys::dom_event_target(
self.inner.imports.component_imports_ptr,
self.inner.event,
)
};
DomElement::maybe_new(element, self.inner.imports.clone())
}
pub fn prevent_default(&self) {
unsafe {
afia_component_sys::dom_event_prevent_default(
self.inner.imports.component_imports_ptr,
self.inner.event,
)
}
}
pub fn temporary_way_to_get_i64(&self) -> i64 {
self.inner.event
}
}
impl Drop for DomEventInner {
fn drop(&mut self) {
}
}