From f0bcb3c2c602907e6d7a8e6e90efeff364876dd0 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Sun, 19 Mar 2023 07:14:35 -0500 Subject: [PATCH] make dioxus intigration generic over custom value type --- packages/native-core/src/dioxus.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/native-core/src/dioxus.rs b/packages/native-core/src/dioxus.rs index d288883b0..3e9ff9ee0 100644 --- a/packages/native-core/src/dioxus.rs +++ b/packages/native-core/src/dioxus.rs @@ -27,7 +27,7 @@ pub struct DioxusState { impl DioxusState { /// Initialize the DioxusState in the RealDom - pub fn create(rdom: &mut RealDom) -> Self { + pub fn create(rdom: &mut RealDom) -> Self { let root_id = rdom.root_id(); let mut root = rdom.get_mut(root_id).unwrap(); root.insert(ElementIdComponent(ElementId(0))); @@ -48,7 +48,11 @@ impl DioxusState { self.node_id_mapping.get(element_id.0).copied().flatten() } - fn set_element_id(&mut self, mut node: NodeMut, element_id: ElementId) { + fn set_element_id( + &mut self, + mut node: NodeMut, + element_id: ElementId, + ) { let node_id = node.id(); node.insert(ElementIdComponent(element_id)); if self.node_id_mapping.len() <= element_id.0 { @@ -57,7 +61,7 @@ impl DioxusState { self.node_id_mapping[element_id.0] = Some(node_id); } - fn load_child(&self, rdom: &RealDom, path: &[u8]) -> NodeId { + fn load_child(&self, rdom: &RealDom, path: &[u8]) -> NodeId { let mut current = rdom.get(*self.stack.last().unwrap()).unwrap(); for i in path { let new_id = current.child_ids()[*i as usize]; @@ -67,7 +71,11 @@ impl DioxusState { } /// Updates the dom with some mutations and return a set of nodes that were updated. Pass the dirty nodes to update_state. - pub fn apply_mutations(&mut self, rdom: &mut RealDom, mutations: Mutations) { + pub fn apply_mutations( + &mut self, + rdom: &mut RealDom, + mutations: Mutations, + ) { for template in mutations.templates { let mut template_root_ids = Vec::new(); for root in template.roots { @@ -222,7 +230,10 @@ impl DioxusState { } } -fn create_template_node(rdom: &mut RealDom, node: &TemplateNode) -> NodeId { +fn create_template_node( + rdom: &mut RealDom, + node: &TemplateNode, +) -> NodeId { match node { TemplateNode::Element { tag,