diff --git a/dynatos-html/src/lib.rs b/dynatos-html/src/lib.rs
index 7373e8e..eecfdd9 100644
--- a/dynatos-html/src/lib.rs
+++ b/dynatos-html/src/lib.rs
@@ -4,12 +4,8 @@
#![feature(decl_macro)]
// Modules
-mod event_listener;
pub mod html;
-// Exports
-pub use event_listener::{ev, ElementEventListener, EventListener};
-
// Imports
use wasm_bindgen::JsValue;
diff --git a/dynatos-router/src/anchor.rs b/dynatos-router/src/anchor.rs
index d73ac72..0b7d2ea 100644
--- a/dynatos-router/src/anchor.rs
+++ b/dynatos-router/src/anchor.rs
@@ -3,8 +3,8 @@
// Imports
use {
crate::Location,
- dynatos_html::{ev, html, ElementEventListener, ElementWithAttr},
- dynatos_util::JsResultContext,
+ dynatos_html::{html, ElementWithAttr},
+ dynatos_util::{ev, EventTargetAddListener, JsResultContext},
web_sys::{Element, PointerEvent},
};
diff --git a/dynatos-html/src/event_listener.rs b/dynatos-util/src/event_listener.rs
similarity index 84%
rename from dynatos-html/src/event_listener.rs
rename to dynatos-util/src/event_listener.rs
index 2ebe831..38a0d3c 100644
--- a/dynatos-html/src/event_listener.rs
+++ b/dynatos-util/src/event_listener.rs
@@ -6,9 +6,9 @@ use wasm_bindgen::{
JsCast,
};
-/// Extension trait to define an event listener on an element with a closure
-#[extend::ext_sized(name = ElementEventListener)]
-pub impl web_sys::Element {
+/// Extension trait to define an event listener on an event target with a closure
+#[extend::ext_sized(name = EventTargetAddListener)]
+pub impl> T {
fn add_event_listener(&self, f: F)
where
E: EventListener,
@@ -22,7 +22,8 @@ pub impl web_sys::Element {
// Then add it
// TODO: Can this fail? On MDN, nothing seems to mention it can throw.
- self.add_event_listener_with_callback(E::name(), &closure)
+ self.as_ref()
+ .add_event_listener_with_callback(E::name(), &closure)
.expect("Unable to add event listener");
}
diff --git a/dynatos-util/src/lib.rs b/dynatos-util/src/lib.rs
index 643ed11..35e529a 100644
--- a/dynatos-util/src/lib.rs
+++ b/dynatos-util/src/lib.rs
@@ -3,6 +3,12 @@
// Features
#![feature(decl_macro)]
+// Modules
+mod event_listener;
+
+// Exports
+pub use event_listener::{ev, EventListener, EventTargetAddListener};
+
// Imports
use {
std::fmt,
diff --git a/examples/counter/src/main.rs b/examples/counter/src/main.rs
index c34171b..f0b9ece 100644
--- a/examples/counter/src/main.rs
+++ b/examples/counter/src/main.rs
@@ -4,9 +4,9 @@
use {
anyhow::Context,
dynatos::ElementDynText,
- dynatos_html::{ev, html, ElementEventListener, ElementWithChildren, ElementWithTextContent},
+ dynatos_html::{html, ElementWithChildren, ElementWithTextContent},
dynatos_reactive::{Signal, SignalGet, SignalSet, SignalUpdate},
- dynatos_util::JsResultContext,
+ dynatos_util::{ev, EventTargetAddListener, JsResultContext},
web_sys::Element,
};
diff --git a/examples/query/src/main.rs b/examples/query/src/main.rs
index 16802c9..215f436 100644
--- a/examples/query/src/main.rs
+++ b/examples/query/src/main.rs
@@ -8,10 +8,10 @@ use {
anyhow::Context,
dynatos::ElementDynText,
dynatos_context::Handle,
- dynatos_html::{ev, html, ElementEventListener, ElementWithChildren, ElementWithTextContent},
+ dynatos_html::{html, ElementWithChildren, ElementWithTextContent},
dynatos_reactive::{SignalGet, SignalSet, SignalUpdate, SignalWithDefault},
dynatos_router::{Location, QuerySignal},
- dynatos_util::{JsResultContext, ObjectDefineProperty},
+ dynatos_util::{ev, EventTargetAddListener, JsResultContext, ObjectDefineProperty},
wasm_bindgen::prelude::wasm_bindgen,
web_sys::Element,
};