1use crate::element::Element;
2
3macro_rules! define_element {
4 (($ns:expr, $ty_name:ident, $name:ident, $dom_interface:ident)) => {
5 #[doc = concat!("`", stringify!($name), "`")]
7 pub const fn $name<A, C>(attrs: A, children: C) -> Element<A, C> {
9 Element::new(stringify!($name), attrs, children)
10 }
11 };
12}
13
14macro_rules! define_elements {
15 ($($element_def:tt,)*) => {
16 $(define_element!($element_def);)*
17 };
18}
19
20define_elements!(
21 (HTML_NS, Address, address, HtmlElement),
27 (HTML_NS, Article, article, HtmlElement),
28 (HTML_NS, Aside, aside, HtmlElement),
29 (HTML_NS, Footer, footer, HtmlElement),
30 (HTML_NS, Header, header, HtmlElement),
31 (HTML_NS, H1, h1, HtmlHeadingElement),
32 (HTML_NS, H2, h2, HtmlHeadingElement),
33 (HTML_NS, H3, h3, HtmlHeadingElement),
34 (HTML_NS, H4, h4, HtmlHeadingElement),
35 (HTML_NS, H5, h5, HtmlHeadingElement),
36 (HTML_NS, H6, h6, HtmlHeadingElement),
37 (HTML_NS, Hgroup, hgroup, HtmlElement),
38 (HTML_NS, Main, main, HtmlElement),
39 (HTML_NS, Nav, nav, HtmlElement),
40 (HTML_NS, Section, section, HtmlElement),
41 (HTML_NS, Blockquote, blockquote, HtmlQuoteElement),
43 (HTML_NS, Dd, dd, HtmlElement),
44 (HTML_NS, Div, div, HtmlDivElement),
45 (HTML_NS, Dl, dl, HtmlDListElement),
46 (HTML_NS, Dt, dt, HtmlElement),
47 (HTML_NS, Figcaption, figcaption, HtmlElement),
48 (HTML_NS, Figure, figure, HtmlElement),
49 (HTML_NS, Hr, hr, HtmlHrElement),
50 (HTML_NS, Li, li, HtmlLiElement),
51 (HTML_NS, Link, link, HtmlLinkElement),
52 (HTML_NS, Menu, menu, HtmlMenuElement),
53 (HTML_NS, Ol, ol, HtmlOListElement),
54 (HTML_NS, P, p, HtmlParagraphElement),
55 (HTML_NS, Pre, pre, HtmlPreElement),
56 (HTML_NS, Ul, ul, HtmlUListElement),
57 (HTML_NS, A, a, HtmlAnchorElement),
59 (HTML_NS, Abbr, abbr, HtmlElement),
60 (HTML_NS, B, b, HtmlElement),
61 (HTML_NS, Bdi, bdi, HtmlElement),
62 (HTML_NS, Bdo, bdo, HtmlElement),
63 (HTML_NS, Br, br, HtmlBrElement),
64 (HTML_NS, Cite, cite, HtmlElement),
65 (HTML_NS, Code, code, HtmlElement),
66 (HTML_NS, Data, data, HtmlDataElement),
67 (HTML_NS, Dfn, dfn, HtmlElement),
68 (HTML_NS, Em, em, HtmlElement),
69 (HTML_NS, I, i, HtmlElement),
70 (HTML_NS, Kbd, kbd, HtmlElement),
71 (HTML_NS, Mark, mark, HtmlElement),
72 (HTML_NS, Q, q, HtmlQuoteElement),
73 (HTML_NS, Rp, rp, HtmlElement),
74 (HTML_NS, Rt, rt, HtmlElement),
75 (HTML_NS, Ruby, ruby, HtmlElement),
76 (HTML_NS, S, s, HtmlElement),
77 (HTML_NS, Samp, samp, HtmlElement),
78 (HTML_NS, Small, small, HtmlElement),
79 (HTML_NS, Span, span, HtmlSpanElement),
80 (HTML_NS, Strong, strong, HtmlElement),
81 (HTML_NS, Sub, sub, HtmlElement),
82 (HTML_NS, Sup, sup, HtmlElement),
83 (HTML_NS, Time, time, HtmlTimeElement),
84 (HTML_NS, U, u, HtmlElement),
85 (HTML_NS, Var, var, HtmlElement),
86 (HTML_NS, Wbr, wbr, HtmlElement),
87 (HTML_NS, Area, area, HtmlAreaElement),
89 (HTML_NS, Audio, audio, HtmlAudioElement),
90 (HTML_NS, Canvas, canvas, HtmlCanvasElement),
91 (HTML_NS, Img, img, HtmlImageElement),
92 (HTML_NS, Map, map, HtmlMapElement),
93 (HTML_NS, Track, track, HtmlTrackElement),
94 (HTML_NS, Video, video, HtmlVideoElement),
95 (HTML_NS, Embed, embed, HtmlEmbedElement),
97 (HTML_NS, Iframe, iframe, HtmlIFrameElement),
98 (HTML_NS, Object, object, HtmlObjectElement),
99 (HTML_NS, Picture, picture, HtmlPictureElement),
100 (HTML_NS, Portal, portal, HtmlElement),
101 (HTML_NS, Source, source, HtmlSourceElement),
102 (HTML_NS, Noscript, noscript, HtmlElement),
104 (HTML_NS, Script, script, HtmlScriptElement),
105 (HTML_NS, Del, del, HtmlModElement),
107 (HTML_NS, Ins, ins, HtmlModElement),
108 (HTML_NS, Caption, caption, HtmlTableCaptionElement),
110 (HTML_NS, Col, col, HtmlTableColElement),
111 (HTML_NS, Colgroup, colgroup, HtmlTableColElement),
112 (HTML_NS, Table, table, HtmlTableElement),
113 (HTML_NS, Tbody, tbody, HtmlTableSectionElement),
114 (HTML_NS, Td, td, HtmlTableCellElement),
115 (HTML_NS, Tfoot, tfoot, HtmlTableSectionElement),
116 (HTML_NS, Th, th, HtmlTableCellElement),
117 (HTML_NS, Thead, thead, HtmlTableSectionElement),
118 (HTML_NS, Tr, tr, HtmlTableRowElement),
119 (HTML_NS, Button, button, HtmlButtonElement),
121 (HTML_NS, Datalist, datalist, HtmlDataListElement),
122 (HTML_NS, Fieldset, fieldset, HtmlFieldSetElement),
123 (HTML_NS, Form, form, HtmlFormElement),
124 (HTML_NS, Input, input, HtmlInputElement),
125 (HTML_NS, Label, label, HtmlLabelElement),
126 (HTML_NS, Legend, legend, HtmlLegendElement),
127 (HTML_NS, Meter, meter, HtmlMeterElement),
128 (HTML_NS, Optgroup, optgroup, HtmlOptGroupElement),
129 (HTML_NS, OptionElement, option, HtmlOptionElement), (HTML_NS, Output, output, HtmlOutputElement),
131 (HTML_NS, Progress, progress, HtmlProgressElement),
132 (HTML_NS, Select, select, HtmlSelectElement),
133 (HTML_NS, Textarea, textarea, HtmlTextAreaElement),
134 (HTML_NS, Details, details, HtmlDetailsElement),
136 (HTML_NS, Dialog, dialog, HtmlDialogElement),
137 (HTML_NS, Summary, summary, HtmlElement),
138 (HTML_NS, Slot, slot, HtmlSlotElement),
140 (HTML_NS, Template, template, HtmlTemplateElement),
141 (SVG_NS, Svg, svg, SvgElement),
143 (MATHML_NS, Math, math, Element),
144);