use crate::*;
#[derive(Clone)]
pub enum Tag {
Element(String),
Component(String),
}
#[derive(Clone)]
pub enum Attribute {
AccessKey,
Action,
Alt,
AriaLabel,
AutoComplete,
AutoFocus,
Checked,
Class,
Cols,
ContentEditable,
Data(String),
Dir,
Disabled,
Draggable,
EncType,
For,
Form,
Height,
Hidden,
Href,
Id,
Lang,
Max,
MaxLength,
Method,
Min,
MinLength,
Multiple,
Name,
Pattern,
Placeholder,
ReadOnly,
Required,
Rows,
Selected,
Size,
SpellCheck,
Src,
Step,
Style,
TabIndex,
Target,
Title,
Type,
Value,
Width,
Other(String),
}
#[derive(Clone)]
pub enum AttributeValue {
Text(String),
Signal(Signal<String>),
Event(crate::event::NativeEventHandler),
Dynamic(String),
Css(CssClass),
}
#[derive(Clone, Default)]
pub enum VirtualNode {
Element {
tag: Tag,
attributes: Vec<AttributeEntry>,
children: Vec<VirtualNode>,
key: Option<String>,
},
Text(TextNode),
Fragment(Vec<VirtualNode>),
Dynamic(DynamicNode),
#[default]
Empty,
}