use vize_l0::{Span, Vec};
use super::{BindingOp, Region};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum Namespace {
#[default]
Html,
Svg,
MathMl,
}
#[derive(Debug)]
pub struct Attribute<'a> {
pub name: &'a str,
pub value: Option<&'a str>,
pub span: Span,
}
#[derive(Debug)]
pub struct ElementOp<'a> {
pub tag: &'a str,
pub namespace: Namespace,
pub attributes: Vec<'a, Attribute<'a>>,
pub bindings: Vec<'a, BindingOp<'a>>,
pub children: Region<'a>,
pub span: Span,
}
#[derive(Debug)]
pub struct ComponentOp<'a> {
pub name: &'a str,
pub attributes: Vec<'a, Attribute<'a>>,
pub bindings: Vec<'a, BindingOp<'a>>,
pub children: Region<'a>,
pub span: Span,
}
#[cfg(target_pointer_width = "64")]
const _: () = {
assert!(core::mem::size_of::<Attribute<'_>>() == 40);
assert!(core::mem::size_of::<ElementOp<'_>>() == 104);
assert!(core::mem::size_of::<ComponentOp<'_>>() == 96);
};