use crate::{GlobalAttributes, SvgAttributes};
use dioxus_core::*;
macro_rules! builder_constructors {
(
$(
$(#[$attr:meta])*
$name:ident {
$(
$(#[$attr_method:meta])*
$fil:ident: $vil:ident,
)*
};
)*
) => {
$(
#[allow(non_camel_case_types)]
$(#[$attr])*
pub struct $name;
impl DioxusElement for $name {
const TAG_NAME: &'static str = stringify!($name);
const NAME_SPACE: Option<&'static str> = None;
}
impl GlobalAttributes for $name {}
impl $name {
$(
#[allow(non_upper_case_globals)]
pub const $fil: AttributeDiscription = AttributeDiscription{
name: stringify!($fil),
namespace: None,
volatile: false
};
)*
}
)*
};
( $(
$(#[$attr:meta])*
$name:ident <> $namespace:tt {
$($fil:ident: $vil:ident,)*
};
)* ) => {
$(
#[allow(non_camel_case_types)]
$(#[$attr])*
pub struct $name;
impl DioxusElement for $name {
const TAG_NAME: &'static str = stringify!($name);
const NAME_SPACE: Option<&'static str> = Some($namespace);
}
impl SvgAttributes for $name {}
impl $name {
$(
#[allow(non_upper_case_globals)]
pub const $fil: AttributeDiscription = AttributeDiscription{
name: stringify!($fil),
namespace: Some(stringify!($namespace)),
volatile: false
};
)*
}
)*
};
}
// Organized in the same order as
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
//
// Does not include obsolete elements.
//
// This namespace represents a collection of modern HTML-5 compatiable elements.
//
// This list does not include obsolete, deprecated, experimental, or poorly supported elements.
builder_constructors! {
// Document metadata
/// Build a
/// [`