1
- #![ allow( unused) ]
2
1
use crate :: dom:: component:: StatelessModel ;
3
2
use crate :: dom:: DomAttr ;
4
3
use crate :: dom:: GroupedDomAttrValues ;
@@ -259,7 +258,7 @@ impl DomNode {
259
258
DomInner :: Element {
260
259
element, children, ..
261
260
} => {
262
- for mut child in for_append. into_iter ( ) {
261
+ for child in for_append. into_iter ( ) {
263
262
if let Some ( symbol) = child. as_symbol ( ) {
264
263
element
265
264
. insert_adjacent_html ( intern ( "beforeend" ) , symbol)
@@ -276,7 +275,7 @@ impl DomNode {
276
275
DomInner :: Fragment {
277
276
fragment, children, ..
278
277
} => {
279
- for mut child in for_append. into_iter ( ) {
278
+ for child in for_append. into_iter ( ) {
280
279
fragment
281
280
. append_child ( & child. as_node ( ) )
282
281
. expect ( "append child" ) ;
@@ -353,7 +352,7 @@ impl DomNode {
353
352
}
354
353
355
354
/// Replace the child `child` DomNode with a replacement DomNode `replacement`
356
- pub ( crate ) fn replace_child ( & self , target_child : & DomNode , mut replacement : DomNode ) {
355
+ pub ( crate ) fn replace_child ( & self , target_child : & DomNode , replacement : DomNode ) {
357
356
match & self . inner {
358
357
DomInner :: Element { children, .. } => {
359
358
let mut child_index = None ;
@@ -648,22 +647,14 @@ where
648
647
APP : Application + ' static ,
649
648
{
650
649
/// Create a dom node
651
- pub fn create_dom_node (
652
- & self ,
653
- parent_node : Rc < Option < DomNode > > ,
654
- node : & vdom:: Node < APP :: MSG > ,
655
- ) -> DomNode {
650
+ pub fn create_dom_node ( & self , node : & vdom:: Node < APP :: MSG > ) -> DomNode {
656
651
match node {
657
- vdom:: Node :: Element ( elm) => self . create_element_node ( parent_node , elm) ,
658
- vdom:: Node :: Leaf ( leaf) => self . create_leaf_node ( parent_node , leaf) ,
652
+ vdom:: Node :: Element ( elm) => self . create_element_node ( elm) ,
653
+ vdom:: Node :: Leaf ( leaf) => self . create_leaf_node ( leaf) ,
659
654
}
660
655
}
661
656
662
- fn create_element_node (
663
- & self ,
664
- parent_node : Rc < Option < DomNode > > ,
665
- elm : & vdom:: Element < APP :: MSG > ,
666
- ) -> DomNode {
657
+ fn create_element_node ( & self , elm : & vdom:: Element < APP :: MSG > ) -> DomNode {
667
658
let document = document ( ) ;
668
659
let element = if let Some ( namespace) = elm. namespace ( ) {
669
660
document
@@ -688,21 +679,16 @@ where
688
679
} ;
689
680
let dom_attrs = attrs. iter ( ) . map ( |a| self . convert_attr ( a) ) ;
690
681
dom_node. set_dom_attrs ( dom_attrs) . expect ( "set dom attrs" ) ;
691
- let dom_node_rc = Rc :: new ( Some ( dom_node. clone ( ) ) ) ;
692
682
let children: Vec < DomNode > = elm
693
683
. children ( )
694
684
. iter ( )
695
- . map ( |child| self . create_dom_node ( Rc :: clone ( & dom_node_rc ) , child) )
685
+ . map ( |child| self . create_dom_node ( child) )
696
686
. collect ( ) ;
697
687
dom_node. append_children ( children) ;
698
688
dom_node
699
689
}
700
690
701
- fn create_leaf_node (
702
- & self ,
703
- parent_node : Rc < Option < DomNode > > ,
704
- leaf : & vdom:: Leaf < APP :: MSG > ,
705
- ) -> DomNode {
691
+ fn create_leaf_node ( & self , leaf : & vdom:: Leaf < APP :: MSG > ) -> DomNode {
706
692
match leaf {
707
693
Leaf :: Text ( txt) => DomNode {
708
694
inner : DomInner :: Text ( document ( ) . create_text_node ( txt) ) ,
@@ -713,30 +699,28 @@ where
713
699
Leaf :: Comment ( comment) => DomNode {
714
700
inner : DomInner :: Comment ( document ( ) . create_comment ( comment) ) ,
715
701
} ,
716
- Leaf :: Fragment ( nodes) => self . create_fragment_node ( parent_node , nodes) ,
702
+ Leaf :: Fragment ( nodes) => self . create_fragment_node ( nodes) ,
717
703
// NodeList that goes here is only possible when it is the root_node,
718
704
// since node_list as children will be unrolled into as child_elements of the parent
719
705
// We need to wrap this node_list into doc_fragment since root_node is only 1 element
720
- Leaf :: NodeList ( nodes) => self . create_fragment_node ( parent_node , nodes) ,
706
+ Leaf :: NodeList ( nodes) => self . create_fragment_node ( nodes) ,
721
707
Leaf :: StatefulComponent ( comp) => {
722
708
//TODO: also put the children and attributes here
723
709
DomNode {
724
710
inner : DomInner :: StatefulComponent {
725
711
comp : Rc :: clone ( & comp. comp ) ,
726
- dom_node : Rc :: new (
727
- self . create_stateful_component ( Rc :: clone ( & parent_node) , comp) ,
728
- ) ,
712
+ dom_node : Rc :: new ( self . create_stateful_component ( comp) ) ,
729
713
} ,
730
714
}
731
715
}
732
716
Leaf :: StatelessComponent ( comp) => {
733
717
#[ cfg( feature = "use-template" ) ]
734
718
{
735
- self . create_stateless_component_with_template ( parent_node , comp)
719
+ self . create_stateless_component_with_template ( comp)
736
720
}
737
721
#[ cfg( not( feature = "use-template" ) ) ]
738
722
{
739
- self . create_stateless_component ( parent_node , comp)
723
+ self . create_stateless_component ( comp)
740
724
}
741
725
}
742
726
Leaf :: TemplatedView ( view) => {
@@ -748,7 +732,6 @@ where
748
732
749
733
fn create_fragment_node < ' a > (
750
734
& self ,
751
- parent_node : Rc < Option < DomNode > > ,
752
735
nodes : impl IntoIterator < Item = & ' a vdom:: Node < APP :: MSG > > ,
753
736
) -> DomNode {
754
737
let fragment = document ( ) . create_document_fragment ( ) ;
@@ -758,10 +741,9 @@ where
758
741
children : Rc :: new ( RefCell :: new ( vec ! [ ] ) ) ,
759
742
} ,
760
743
} ;
761
- let dom_node_rc = Rc :: new ( Some ( dom_node. clone ( ) ) ) ;
762
744
let children = nodes
763
745
. into_iter ( )
764
- . map ( |node| self . create_dom_node ( Rc :: clone ( & dom_node_rc ) , node) )
746
+ . map ( |node| self . create_dom_node ( node) )
765
747
. collect ( ) ;
766
748
dom_node. append_children ( children) ;
767
749
dom_node
@@ -786,20 +768,13 @@ where
786
768
/// The attributes affects the Stateful component state.
787
769
/// The attributes can be diff and send the patches to the StatefulComponent
788
770
/// - Changes to the attributes will call on attribute_changed of the StatefulComponent
789
- fn create_stateful_component (
790
- & self ,
791
- parent_node : Rc < Option < DomNode > > ,
792
- comp : & StatefulModel < APP :: MSG > ,
793
- ) -> DomNode {
794
- let comp_node = self . create_dom_node (
795
- Rc :: clone ( & parent_node) ,
796
- & crate :: html:: div (
797
- [ crate :: html:: attributes:: class ( "component" ) ]
798
- . into_iter ( )
799
- . chain ( comp. attrs . clone ( ) ) ,
800
- [ ] ,
801
- ) ,
802
- ) ;
771
+ fn create_stateful_component ( & self , comp : & StatefulModel < APP :: MSG > ) -> DomNode {
772
+ let comp_node = self . create_dom_node ( & crate :: html:: div (
773
+ [ crate :: html:: attributes:: class ( "component" ) ]
774
+ . into_iter ( )
775
+ . chain ( comp. attrs . clone ( ) ) ,
776
+ [ ] ,
777
+ ) ) ;
803
778
804
779
let dom_attrs: Vec < DomAttr > = comp. attrs . iter ( ) . map ( |a| self . convert_attr ( a) ) . collect ( ) ;
805
780
for dom_attr in dom_attrs. into_iter ( ) {
@@ -813,21 +788,17 @@ where
813
788
let created_children = comp
814
789
. children
815
790
. iter ( )
816
- . map ( |child| self . create_dom_node ( Rc :: clone ( & parent_node ) , child) )
791
+ . map ( |child| self . create_dom_node ( child) )
817
792
. collect ( ) ;
818
793
comp. comp . borrow_mut ( ) . append_children ( created_children) ;
819
794
comp_node
820
795
}
821
796
822
797
#[ allow( unused) ]
823
- pub ( crate ) fn create_stateless_component (
824
- & self ,
825
- parent_node : Rc < Option < DomNode > > ,
826
- comp : & StatelessModel < APP :: MSG > ,
827
- ) -> DomNode {
798
+ pub ( crate ) fn create_stateless_component ( & self , comp : & StatelessModel < APP :: MSG > ) -> DomNode {
828
799
let comp_view = & comp. view ;
829
800
let real_comp_view = comp_view. unwrap_template_ref ( ) ;
830
- self . create_dom_node ( parent_node , real_comp_view)
801
+ self . create_dom_node ( real_comp_view)
831
802
}
832
803
}
833
804
0 commit comments