diff --git a/packages/core/src/any_props.rs b/packages/core/src/any_props.rs index 199d5cc5b..60187e458 100644 --- a/packages/core/src/any_props.rs +++ b/packages/core/src/any_props.rs @@ -1,11 +1,9 @@ -use std::cell::Cell; - use futures_util::Future; use crate::{ component::{Component, ComponentFn, Dummy, IntoComponent}, - element::Element, scopes::{Scope, ScopeState}, + Element, }; pub trait AnyProps { diff --git a/packages/core/src/arena.rs b/packages/core/src/arena.rs index 02b9ad994..b475bf077 100644 --- a/packages/core/src/arena.rs +++ b/packages/core/src/arena.rs @@ -1,9 +1,4 @@ -use std::num::NonZeroUsize; - -use crate::{ - nodes::{Template, VNode}, - virtualdom::VirtualDom, -}; +use crate::{nodes::VNode, virtualdom::VirtualDom}; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] pub struct ElementId(pub usize); diff --git a/packages/core/src/component.rs b/packages/core/src/component.rs index 153a562e3..75b9e6b2d 100644 --- a/packages/core/src/component.rs +++ b/packages/core/src/component.rs @@ -4,7 +4,7 @@ use futures_util::Future; -use crate::{element::Element, scopes::Scope}; +use crate::{scopes::Scope, Element}; pub type Component = fn(Scope) -> Element; @@ -38,7 +38,7 @@ impl Future for Dummy { fn poll( self: std::pin::Pin<&mut Self>, - cx: &mut std::task::Context<'_>, + _cx: &mut std::task::Context<'_>, ) -> std::task::Poll { unreachable!() } diff --git a/packages/core/src/element.rs b/packages/core/src/element.rs deleted file mode 100644 index 33764e126..000000000 --- a/packages/core/src/element.rs +++ /dev/null @@ -1,3 +0,0 @@ -use crate::nodes::{Template, VNode}; - -pub type Element<'a> = Option>; diff --git a/packages/core/src/events.rs b/packages/core/src/events.rs index dec1f405f..32cbed5a8 100644 --- a/packages/core/src/events.rs +++ b/packages/core/src/events.rs @@ -1,6 +1,5 @@ -use std::{any::Any, cell::Cell}; - -use crate::{arena::ElementId, scopes::ScopeId, virtualdom::VirtualDom, Attribute, AttributeValue}; +use crate::{arena::ElementId, virtualdom::VirtualDom, Attribute, AttributeValue}; +use std::cell::Cell; /// User Events are events that are shuttled from the renderer into the [`VirtualDom`] through the scheduler channel. /// @@ -122,9 +121,12 @@ impl VirtualDom { .dynamic_attrs .iter() .enumerate() - .filter(|(idx, attr)| is_path_ascendant(parent.template.node_paths[*idx], path)) - .filter(|(idx, attr)| attr.name == event.name) - .map(|(_, attr)| attr), + .filter_map(|(idx, attr)| { + match is_path_ascendant(parent.template.node_paths[idx], path) { + true if attr.name == event.name => Some(attr), + _ => None, + } + }), ); index = parent.parent; diff --git a/packages/core/src/lib.rs b/packages/core/src/lib.rs index 521f8da00..1f99ab43b 100644 --- a/packages/core/src/lib.rs +++ b/packages/core/src/lib.rs @@ -4,7 +4,6 @@ mod bump_frame; mod component; mod create; mod diff; -mod element; mod events; mod factory; mod future_container; @@ -18,7 +17,7 @@ mod scopes; mod virtualdom; pub(crate) mod innerlude { - pub use crate::element::Element; + pub use crate::arena::*; pub use crate::events::*; pub use crate::future_container::*; pub use crate::lazynodes::*; @@ -28,10 +27,10 @@ pub(crate) mod innerlude { pub use crate::scopes::*; pub use crate::virtualdom::*; - // /// An [`Element`] is a possibly-none [`VNode`] created by calling `render` on [`Scope`] or [`ScopeState`]. - // /// - // /// Any [`None`] [`Element`] will automatically be coerced into a placeholder [`VNode`] with the [`VNode::Placeholder`] variant. - // pub type Element<'a> = Option>; + /// An [`Element`] is a possibly-none [`VNode`] created by calling `render` on [`Scope`] or [`ScopeState`]. + /// + /// Any [`None`] [`Element`] will automatically be coerced into a placeholder [`VNode`] with the [`VNode::Placeholder`] variant. + pub type Element<'a> = Option>; /// A [`Component`] is a function that takes a [`Scope`] and returns an [`Element`]. /// @@ -67,12 +66,16 @@ pub(crate) mod innerlude { } pub use crate::innerlude::{ + // AnyAttributeValue, AnyEvent, fc_to_builder, - // AnyAttributeValue, AnyEvent, Attribute, AttributeValue, Component, Element, ElementId, Attribute, AttributeValue, + Attributes, + Component, DynamicNode, Element, + ElementId, + ElementPath, EventPriority, LazyNodes, NodeFactory, @@ -88,9 +91,6 @@ pub use crate::innerlude::{ VNode, VirtualDom, }; -// EventHandler, EventPriority, IntoVNode, LazyNodes, Listener, NodeFactory, Properties, Renderer, -// SchedulerMsg, Scope, ScopeId, ScopeState, TaskId, Template, TemplateAttribute, TemplateNode, -// UiEvent, UserEvent, VComponent, VElement, VNode, VTemplate, VText, VirtualDom, /// The purpose of this module is to alleviate imports of many common types /// diff --git a/packages/core/src/virtualdom.rs b/packages/core/src/virtualdom.rs index d0d8e1fcc..b393d2b26 100644 --- a/packages/core/src/virtualdom.rs +++ b/packages/core/src/virtualdom.rs @@ -1,6 +1,6 @@ use crate::any_props::VComponentProps; use crate::arena::ElementPath; -use crate::component::{Component, IntoComponent}; +use crate::component::Component; use crate::diff::DirtyScope; use crate::future_container::FutureQueue; use crate::innerlude::SchedulerMsg; diff --git a/packages/rsx/src/lib.rs b/packages/rsx/src/lib.rs index ea255d19f..97731d162 100644 --- a/packages/rsx/src/lib.rs +++ b/packages/rsx/src/lib.rs @@ -13,16 +13,12 @@ #[macro_use] mod errors; -// #[cfg(any(feature = "hot-reload", debug_assertions))] -// mod attributes; mod component; mod element; mod ifmt; mod node; mod template; -use std::collections::HashMap; - // Re-export the namespaces into each other pub use component::*; pub use element::*; @@ -108,6 +104,7 @@ impl<'a> ToTokens for TemplateRenderer<'a> { Some(BodyNode::Component(comp)) if self.roots.len() == 1 => comp.key().cloned(), _ => None, }; + let key_tokens = match key { Some(tok) => quote! { Some( __cx.raw_text_inline(#tok) ) }, None => quote! { None }, @@ -124,15 +121,8 @@ impl<'a> ToTokens for TemplateRenderer<'a> { let roots = quote! { #( #root_printer ),* }; let node_printer = &context.dynamic_nodes; let dyn_attr_printer = &context.dynamic_attributes; - let node_paths = context - .node_paths - .iter() - .map(|items| quote!(&[#(#items),*])); - - let attr_paths = context - .attr_paths - .iter() - .map(|items| quote!(&[#(#items),*])); + let node_paths = context.node_paths.iter().map(|it| quote!(&[#(#it),*])); + let attr_paths = context.attr_paths.iter().map(|it| quote!(&[#(#it),*])); out_tokens.append_all(quote! { static TEMPLATE: ::dioxus::core::Template = ::dioxus::core::Template { diff --git a/packages/rsx/src/template.rs b/packages/rsx/src/template.rs index 005afe5fa..22c73ae33 100644 --- a/packages/rsx/src/template.rs +++ b/packages/rsx/src/template.rs @@ -1,7 +1,7 @@ -use proc_macro2::TokenStream; -use quote::TokenStreamExt; -use quote::{quote, ToTokens}; -use syn::{Expr, Ident, LitStr}; +// use proc_macro2::TokenStream; +// use quote::TokenStreamExt; +// use quote::{quote, ToTokens}; +// use syn::{Expr, Ident, LitStr}; // #[cfg(any(feature = "hot-reload", debug_assertions))] // pub fn try_parse_template(