1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
use crate::virtualdom::models::{ vdom_component::VDomComponent, vdom_element::VDomElement, vdom_text::VDomText, node_attr::NodeAttr, }; pub enum VDomNode { Element { node: VDomElement, }, Text { node: VDomText, }, Component { node: VDomComponent, }, } impl VDomNode { pub fn node(name: &'static str, attr_list: Vec<NodeAttr>, children: Vec<Self>) -> Self { VDomNode::Element { node: VDomElement::new(name, attr_list, children) } } pub fn text<T: Into<String>>(value: T) -> Self { Self::Text { node: VDomText::new(value) } } pub fn component(value: VDomComponent) -> Self { Self::Component { node: value } } } impl From<VDomComponent> for VDomNode { fn from(node: VDomComponent) -> Self { Self::Component { node } } } impl From<VDomElement> for VDomNode { fn from(node: VDomElement) -> Self { Self::Element { node } } }