diff --git a/dynatos/src/lib.rs b/dynatos/src/lib.rs index f0a73e9..f5373cc 100644 --- a/dynatos/src/lib.rs +++ b/dynatos/src/lib.rs @@ -15,7 +15,7 @@ mod object_dyn_prop; pub use self::{ element_dyn_attr::{ElementDynAttr, ElementWithDynAttr}, node_dyn_child::{NodeDynChild, NodeWithDynChild, ToDynNode}, - node_dyn_text::{NodeDynText, WithDynText}, + node_dyn_text::{NodeDynText, NodeWithDynText, WithDynText}, object_attach_context::{ObjectAttachContext, ObjectWithContext}, object_attach_effect::{ObjectAttachEffect, ObjectWithEffect}, object_dyn_prop::ObjectDynProp, diff --git a/dynatos/src/node_dyn_text.rs b/dynatos/src/node_dyn_text.rs index fa319d8..1e3bc43 100644 --- a/dynatos/src/node_dyn_text.rs +++ b/dynatos/src/node_dyn_text.rs @@ -9,20 +9,17 @@ use { /// Extension trait to add reactive text to a node #[extend::ext(name = NodeDynText)] -pub impl T -where - T: AsRef, -{ +pub impl web_sys::Node { /// Adds dynamic text to this node - fn set_dyn_text(&self, text: U) + fn set_dyn_text(&self, text: T) where - U: WithDynText + 'static, + T: WithDynText + 'static, { // Create the value to attach // Note: It's important that we only keep a `WeakRef` to the node. // Otherwise, the node will be keeping us alive, while we keep // the node alive, causing a leak. - let node = WeakRef::new(self.as_ref()); + let node = WeakRef::new(self); let text_effect = Effect::try_new(move || { // Try to get the node let node = node.get().or_return()?; @@ -33,17 +30,24 @@ where .or_return()?; // Then set it - self.as_ref().attach_effect(text_effect); + self.attach_effect(text_effect); } +} +/// Extension trait to add reactive text to a node +#[extend::ext(name = NodeWithDynText)] +pub impl N +where + N: AsRef, +{ /// Adds dynamic text to this node. /// /// Returns the node, for chaining - fn with_dyn_text(self, text: U) -> Self + fn with_dyn_text(self, text: T) -> Self where - U: WithDynText + 'static, + T: WithDynText + 'static, { - self.set_dyn_text(text); + self.as_ref().set_dyn_text(text); self } } diff --git a/examples/counter/src/main.rs b/examples/counter/src/main.rs index e7348d9..37cf223 100644 --- a/examples/counter/src/main.rs +++ b/examples/counter/src/main.rs @@ -2,7 +2,7 @@ // Imports use { - dynatos::{ElementWithDynAttr, NodeDynText}, + dynatos::{ElementWithDynAttr, NodeWithDynText}, dynatos_html::{html, NodeWithChildren, NodeWithText}, dynatos_reactive::{Signal, SignalGet, SignalSet, SignalUpdate}, dynatos_util::{ev, EventTargetWithListener, JsResultContext}, diff --git a/examples/query/src/main.rs b/examples/query/src/main.rs index 29f82b4..e8fec61 100644 --- a/examples/query/src/main.rs +++ b/examples/query/src/main.rs @@ -5,7 +5,7 @@ // Imports use { - dynatos::{NodeDynText, ObjectWithContext}, + dynatos::{NodeWithDynText, ObjectWithContext}, dynatos_html::{html, NodeWithChildren, NodeWithText}, dynatos_reactive::{SignalGet, SignalSet, SignalUpdate, SignalWithDefault}, dynatos_router::{Location, QuerySignal},