// we don't want to necessarily adhere to the spec for dioxus core
// 3rd party libs can implement their own builders if they want
// macro_rules! builder_constructors {
// ( $(
// $(#[$attr:meta])*
// $name:ident;
// )* ) => {
// $(
// $(#[$attr])*
// #[inline]
// pub fn $name<'a, B>(
// bump: B,
// ) -> ElementBuilder<
// 'a,
// bumpalo::collections::Vec<'a, Listener<'a>>,
// bumpalo::collections::Vec<'a, Attribute<'a>>,
// bumpalo::collections::Vec<'a, VNode<'a>>,
// >
// where
// B: Into<&'a Bump>
// {
// ElementBuilder::new(bump, stringify!($name))
// }
// )*
// };
// ( $(
// $(#[$attr:meta])*
// $name:ident <> $namespace:tt;
// )* ) => {
// $(
// $(#[$attr])*
// #[inline]
// pub fn $name<'a>(
// bump: &'a Bump,
// ) -> ElementBuilder<
// 'a,
// bumpalo::collections::Vec<'a, Listener<'a>>,
// bumpalo::collections::Vec<'a, Attribute<'a>>,
// bumpalo::collections::Vec<'a, VNode<'a>>,
// > {
// let builder = ElementBuilder::new(bump, stringify!($name));
// builder.namespace(Some($namespace))
// }
// )*
// }
// }
// // Organized in the same order as
// // https://developer.mozilla.org/en-US/docs/Web/HTML/Element
// //
// // Does not include obsolete elements.
// builder_constructors! {
// // Document metadata
// /// Build a
// /// [`