dioxus_html/elements.rs
1#![allow(non_upper_case_globals)]
2
3use dioxus_core::HasAttributes;
4use dioxus_core::IntoAttributeValue;
5#[cfg(feature = "hot-reload-context")]
6use dioxus_core_types::HotReloadingContext;
7use dioxus_html_internal_macro::impl_extension_attributes;
8
9#[cfg(feature = "hot-reload-context")]
10use crate::{map_global_attributes, map_svg_attributes};
11
12pub type AttributeDescription = (&'static str, Option<&'static str>, bool);
13
14macro_rules! impl_attribute {
15 (
16 $element:ident {
17 $(#[$attr_method:meta])*
18 $fil:ident: $vil:ident (DEFAULT),
19 }
20 ) => {
21 $(#[$attr_method])*
22 ///
23 /// ## Usage in rsx
24 ///
25 /// ```rust, no_run
26 /// # use dioxus::prelude::*;
27 #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
28 ///
29 /// rsx! {
30 /// // Attributes need to be under the element they modify
31 #[doc = concat!(" ", stringify!($element), " {")]
32 /// // Attributes are followed by a colon and then the value of the attribute
33 #[doc = concat!(" ", stringify!($fil), ": \"value\"")]
34 /// }
35 #[doc = concat!(" ", stringify!($element), " {")]
36 /// // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
37 #[doc = concat!(" ", stringify!($fil), ",")]
38 /// }
39 /// };
40 /// ```
41 pub const $fil: AttributeDescription = (stringify!($fil), None, false);
42 };
43
44 (
45 $element:ident {
46 $(#[$attr_method:meta])*
47 $fil:ident: $vil:ident ($name:literal),
48 }
49 ) => {
50 $(#[$attr_method])*
51 ///
52 /// ## Usage in rsx
53 ///
54 /// ```rust, no_run
55 /// # use dioxus::prelude::*;
56 #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
57 ///
58 /// rsx! {
59 /// // Attributes need to be under the element they modify
60 #[doc = concat!(" ", stringify!($element), " {")]
61 /// // Attributes are followed by a colon and then the value of the attribute
62 #[doc = concat!(" ", stringify!($fil), ": \"value\"")]
63 /// }
64 #[doc = concat!(" ", stringify!($element), " {")]
65 /// // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
66 #[doc = concat!(" ", stringify!($fil), ",")]
67 /// }
68 /// };
69 /// ```
70 pub const $fil: AttributeDescription = ($name, None, false);
71 };
72
73 (
74 $element:ident {
75 $(#[$attr_method:meta])*
76 $fil:ident: $vil:ident (volatile),
77 }
78 ) => {
79 $(#[$attr_method])*
80 ///
81 /// ## Usage in rsx
82 ///
83 /// ```rust, no_run
84 /// # use dioxus::prelude::*;
85 #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
86 ///
87 /// rsx! {
88 /// // Attributes need to be under the element they modify
89 #[doc = concat!(" ", stringify!($element), " {")]
90 /// // Attributes are followed by a colon and then the value of the attribute
91 #[doc = concat!(" ", stringify!($fil), ": \"value\"")]
92 /// }
93 #[doc = concat!(" ", stringify!($element), " {")]
94 /// // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
95 #[doc = concat!(" ", stringify!($fil), ",")]
96 /// }
97 /// };
98 /// ```
99 pub const $fil: AttributeDescription = (stringify!($fil), None, true);
100 };
101
102 (
103 $element:ident {
104 $(#[$attr_method:meta])*
105 $fil:ident: $vil:ident (in $ns:literal),
106 }
107 ) => {
108 $(#[$attr_method])*
109 ///
110 /// ## Usage in rsx
111 ///
112 /// ```rust, no_run
113 /// # use dioxus::prelude::*;
114 #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
115 ///
116 /// rsx! {
117 /// // Attributes need to be under the element they modify
118 #[doc = concat!(" ", stringify!($element), " {")]
119 /// // Attributes are followed by a colon and then the value of the attribute
120 #[doc = concat!(" ", stringify!($fil), ": \"value\"")]
121 /// }
122 #[doc = concat!(" ", stringify!($element), " {")]
123 /// // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
124 #[doc = concat!(" ", stringify!($fil), ",")]
125 /// }
126 /// };
127 /// ```
128 pub const $fil: AttributeDescription = (stringify!($fil), Some($ns), false)
129 };
130
131 (
132 $element:ident {
133 $(#[$attr_method:meta])*
134 $fil:ident: $vil:ident (in $ns:literal : volatile),
135 }
136 ) => {
137 $(#[$attr_method])*
138 ///
139 /// ## Usage in rsx
140 ///
141 /// ```rust, no_run
142 /// # use dioxus::prelude::*;
143 #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
144 ///
145 /// rsx! {
146 /// // Attributes need to be under the element they modify
147 #[doc = concat!(" ", stringify!($element), " {")]
148 /// // Attributes are followed by a colon and then the value of the attribute
149 #[doc = concat!(" ", stringify!($fil), ": \"value\"")]
150 /// }
151 #[doc = concat!(" ", stringify!($element), " {")]
152 /// // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
153 #[doc = concat!(" ", stringify!($fil), ",")]
154 /// }
155 /// };
156 /// ```
157 pub const $fil: AttributeDescription = (stringify!($fil), Some($ns), true)
158 };
159}
160
161#[cfg(feature = "hot-reload-context")]
162macro_rules! impl_attribute_match {
163 (
164 $attr:ident $fil:ident: $vil:ident (DEFAULT),
165 ) => {
166 if $attr == stringify!($fil) {
167 return Some((stringify!($fil), None));
168 }
169 };
170
171 (
172 $attr:ident $fil:ident: $vil:ident (volatile),
173 ) => {
174 if $attr == stringify!($fil) {
175 return Some((stringify!($fil), None));
176 }
177 };
178
179 (
180 $attr:ident $fil:ident: $vil:ident ($name:literal),
181 ) => {
182 if $attr == stringify!($fil) {
183 return Some(($name, None));
184 }
185 };
186
187 (
188 $attr:ident $fil:ident: $vil:ident (in $ns:literal),
189 ) => {
190 if $attr == stringify!($fil) {
191 return Some((stringify!($fil), Some($ns)));
192 }
193 };
194}
195
196#[cfg(feature = "html-to-rsx")]
197macro_rules! impl_html_to_rsx_attribute_match {
198 (
199 $attr:ident $fil:ident $name:literal
200 ) => {
201 if $attr == $name {
202 return Some(stringify!($fil));
203 }
204 };
205
206 (
207 $attr:ident $fil:ident $_:tt
208 ) => {
209 if $attr == stringify!($fil) {
210 return Some(stringify!($fil));
211 }
212 };
213}
214
215macro_rules! impl_element {
216 (
217 $(#[$attr:meta])*
218 $name:ident None {
219 $(
220 $(#[$attr_method:meta])*
221 $fil:ident: $vil:ident $extra:tt,
222 )*
223 }
224 ) => {
225 #[allow(non_camel_case_types)]
226 $(#[$attr])*
227 ///
228 /// ## Usage in rsx
229 ///
230 /// ```rust, no_run
231 /// # use dioxus::prelude::*;
232 /// # let attributes = vec![];
233 /// # fn ChildComponent() -> Element { unimplemented!() }
234 /// # let raw_expression: Element = rsx! {};
235 /// rsx! {
236 /// // Elements are followed by braces that surround any attributes and children for that element
237 #[doc = concat!(" ", stringify!($name), " {")]
238 /// // Add any attributes first
239 /// class: "my-class",
240 /// "custom-attribute-name": "value",
241 /// // Then add any attributes you are spreading into this element
242 /// ..attributes,
243 /// // Then add any children elements, components, text nodes, or raw expressions
244 /// div {}
245 /// ChildComponent {}
246 /// "child text"
247 /// {raw_expression}
248 /// }
249 /// };
250 /// ```
251 pub mod $name {
252 #[allow(unused)]
253 use super::*;
254 pub use crate::attribute_groups::global_attributes::*;
255
256 pub const TAG_NAME: &'static str = stringify!($name);
257 pub const NAME_SPACE: Option<&'static str> = None;
258
259 $(
260 impl_attribute!(
261 $name {
262 $(#[$attr_method])*
263 $fil: $vil ($extra),
264 }
265 );
266 )*
267 }
268 };
269
270 (
271 $(#[$attr:meta])*
272 $name:ident $namespace:literal {
273 $(
274 $(#[$attr_method:meta])*
275 $fil:ident: $vil:ident $extra:tt,
276 )*
277 }
278 ) => {
279 $(#[$attr])*
280 ///
281 /// ## Usage in rsx
282 ///
283 /// ```rust, no_run
284 /// # use dioxus::prelude::*;
285 /// # let attributes = vec![];
286 /// # fn ChildComponent() -> Element { unimplemented!() }
287 /// # let raw_expression: Element = rsx! {};
288 /// rsx! {
289 /// // Elements are followed by braces that surround any attributes and children for that element
290 #[doc = concat!(" ", stringify!($name), " {")]
291 /// // Add any attributes first
292 /// color: "red",
293 /// "custom-attribute-name": "value",
294 /// // Then add any attributes you are spreading into this element
295 /// ..attributes,
296 /// // Then add any children elements, components, text nodes, or raw expressions
297 /// circle { cx: "10", cy: "10", r: "2", fill: "red" }
298 /// ChildComponent {}
299 /// "child text"
300 /// {raw_expression}
301 /// }
302 /// };
303 /// ```
304 pub mod $name {
305 #[allow(unused)]
306 use super::*;
307 pub use crate::attribute_groups::svg_attributes::*;
308
309 pub const TAG_NAME: &'static str = stringify!($name);
310 pub const NAME_SPACE: Option<&'static str> = Some($namespace);
311
312 $(
313 impl_attribute!(
314 $name {
315 $(#[$attr_method])*
316 $fil: $vil ($extra),
317 }
318 );
319 )*
320 }
321 };
322
323 (
324 $(#[$attr:meta])*
325 $element:ident [$name:literal, $namespace:tt] {
326 $(
327 $(#[$attr_method:meta])*
328 $fil:ident: $vil:ident $extra:tt,
329 )*
330 }
331 ) => {
332 #[allow(non_camel_case_types)]
333 $(#[$attr])*
334 ///
335 /// ## Usage in rsx
336 ///
337 /// ```rust, no_run
338 /// # use dioxus::prelude::*;
339 /// # let attributes = vec![];
340 /// # fn ChildComponent() -> Element { unimplemented!() }
341 /// # let raw_expression: Element = rsx! {};
342 /// rsx! {
343 /// // Elements are followed by braces that surround any attributes and children for that element
344 #[doc = concat!(" ", stringify!($element), " {")]
345 /// // Add any attributes first
346 /// color: "red",
347 /// "custom-attribute-name": "value",
348 /// // Then add any attributes you are spreading into this element
349 /// ..attributes,
350 /// // Then add any children elements, components, text nodes, or raw expressions
351 /// circle { cx: "10", cy: "10", r: "2", fill: "red" }
352 /// ChildComponent {}
353 /// "child text"
354 /// {raw_expression}
355 /// }
356 /// };
357 /// ```
358 pub mod $element {
359 #[allow(unused)]
360 use super::*;
361 pub use crate::attribute_groups::svg_attributes::*;
362
363 pub const TAG_NAME: &'static str = $name;
364 pub const NAME_SPACE: Option<&'static str> = Some($namespace);
365
366 $(
367 impl_attribute!(
368 $element {
369 $(#[$attr_method])*
370 $fil: $vil ($extra),
371 }
372 );
373 )*
374 }
375 }
376}
377
378#[cfg(feature = "hot-reload-context")]
379macro_rules! impl_element_match {
380 (
381 $el:ident $name:ident None {
382 $(
383 $fil:ident: $vil:ident $extra:tt,
384 )*
385 }
386 ) => {
387 if $el == stringify!($name) {
388 return Some((stringify!($name), None));
389 }
390 };
391
392 (
393 $el:ident $name:ident $namespace:literal {
394 $(
395 $fil:ident: $vil:ident $extra:tt,
396 )*
397 }
398 ) => {
399 if $el == stringify!($name) {
400 return Some((stringify!($name), Some($namespace)));
401 }
402 };
403
404 (
405 $el:ident $name:ident [$_:literal, $namespace:tt] {
406 $(
407 $fil:ident: $vil:ident $extra:tt,
408 )*
409 }
410 ) => {
411 if $el == stringify!($name) {
412 return Some((stringify!($name), Some($namespace)));
413 }
414 };
415}
416
417#[cfg(feature = "hot-reload-context")]
418macro_rules! impl_element_match_attributes {
419 (
420 $el:ident $attr:ident $name:ident None {
421 $(
422 $fil:ident: $vil:ident $extra:tt,
423 )*
424 }
425 ) => {
426 if $el == stringify!($name) {
427 $(
428 impl_attribute_match!(
429 $attr $fil: $vil ($extra),
430 );
431 )*
432
433 return impl_map_global_attributes!($el $attr $name None);
434 }
435 };
436
437 (
438 $el:ident $attr:ident $name:ident $namespace:tt {
439 $(
440 $fil:ident: $vil:ident $extra:tt,
441 )*
442 }
443 ) => {
444 if $el == stringify!($name) {
445 $(
446 impl_attribute_match!(
447 $attr $fil: $vil ($extra),
448 );
449 )*
450
451 return impl_map_global_attributes!($el $attr $name $namespace);
452 }
453 }
454}
455
456#[cfg(feature = "hot-reload-context")]
457macro_rules! impl_map_global_attributes {
458 (
459 $el:ident $attr:ident $element:ident None
460 ) => {
461 map_global_attributes($attr)
462 };
463
464 (
465 $el:ident $attr:ident $element:ident $namespace:literal
466 ) => {
467 if $namespace == "http://www.w3.org/2000/svg" {
468 map_svg_attributes($attr)
469 } else {
470 map_global_attributes($attr)
471 }
472 };
473
474 (
475 $el:ident $attr:ident $element:ident [$name:literal, $namespace:tt]
476 ) => {
477 if $namespace == "http://www.w3.org/2000/svg" {
478 map_svg_attributes($attr)
479 } else {
480 map_global_attributes($attr)
481 }
482 };
483}
484
485macro_rules! builder_constructors {
486 (
487 $(
488 $(#[$attr:meta])*
489 $name:ident $namespace:tt {
490 $(
491 $(#[$attr_method:meta])*
492 $fil:ident: $vil:ident $extra:tt,
493 )*
494 };
495 )*
496 ) => {
497 #[cfg(feature = "hot-reload-context")]
498 pub struct HtmlCtx;
499
500 #[cfg(feature = "hot-reload-context")]
501 impl HotReloadingContext for HtmlCtx {
502 fn map_attribute(element: &str, attribute: &str) -> Option<(&'static str, Option<&'static str>)> {
503 $(
504 impl_element_match_attributes!(
505 element attribute $name $namespace {
506 $(
507 $fil: $vil $extra,
508 )*
509 }
510 );
511 )*
512 None
513 }
514
515 fn map_element(element: &str) -> Option<(&'static str, Option<&'static str>)> {
516 $(
517 impl_element_match!(
518 element $name $namespace {
519 $(
520 $fil: $vil $extra,
521 )*
522 }
523 );
524 )*
525 None
526 }
527 }
528
529 #[cfg(feature = "html-to-rsx")]
530 pub fn map_html_attribute_to_rsx(html: &str) -> Option<&'static str> {
531 $(
532 $(
533 impl_html_to_rsx_attribute_match!(
534 html $fil $extra
535 );
536 )*
537 )*
538
539 if let Some(name) = crate::map_html_global_attributes_to_rsx(html) {
540 return Some(name);
541 }
542
543 if let Some(name) = crate::map_html_svg_attributes_to_rsx(html) {
544 return Some(name);
545 }
546
547 None
548 }
549
550 #[cfg(feature = "html-to-rsx")]
551 pub fn map_html_element_to_rsx(html: &str) -> Option<&'static str> {
552 $(
553 if html == stringify!($name) {
554 return Some(stringify!($name));
555 }
556 )*
557
558 None
559 }
560
561 $(
562 impl_element!(
563 $(#[$attr])*
564 $name $namespace {
565 $(
566 $(#[$attr_method])*
567 $fil: $vil $extra,
568 )*
569 }
570 );
571 )*
572
573 /// This module contains helpers for rust analyzer autocompletion
574 #[doc(hidden)]
575 pub mod completions {
576 /// This helper tells rust analyzer that it should autocomplete the element name with braces.
577 #[allow(non_camel_case_types)]
578 pub enum CompleteWithBraces {
579 $(
580 $(#[$attr])*
581 ///
582 /// ## Usage in rsx
583 ///
584 /// ```rust, no_run
585 /// # use dioxus::prelude::*;
586 /// # let attributes = vec![];
587 /// # fn ChildComponent() -> Element { unimplemented!() }
588 /// # let raw_expression: Element = rsx! {};
589 /// rsx! {
590 /// // Elements are followed by braces that surround any attributes and children for that element
591 #[doc = concat!(" ", stringify!($name), " {")]
592 /// // Add any attributes first
593 /// class: "my-class",
594 /// "custom-attribute-name": "value",
595 /// // Then add any attributes you are spreading into this element
596 /// ..attributes,
597 /// // Then add any children elements, components, text nodes, or raw expressions
598 /// div {}
599 /// ChildComponent {}
600 /// "child text"
601 /// {raw_expression}
602 /// }
603 /// };
604 /// ```
605 $name {}
606 ),*
607 }
608 }
609
610 pub(crate) mod extensions {
611 use super::*;
612 $(
613 impl_extension_attributes![$name { $($fil,)* }];
614 )*
615 }
616 };
617}
618
619// Organized in the same order as
620// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
621//
622// Does not include obsolete elements.
623//
624// This namespace represents a collection of modern HTML-5 compatible elements.
625//
626// This list does not include obsolete, deprecated, experimental, or poorly supported elements.
627builder_constructors! {
628 // Document metadata
629
630 /// Build a
631 /// [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base)
632 /// element.
633 ///
634 base None {
635 href: Uri DEFAULT,
636 target: Target DEFAULT,
637 };
638
639 /// Build a
640 /// [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)
641 /// element.
642 head None {};
643
644 /// Build a
645 /// [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)
646 /// element.
647 link None {
648 // as: Mime,
649 crossorigin: CrossOrigin DEFAULT,
650 href: Uri DEFAULT,
651 hreflang: LanguageTag DEFAULT,
652 media: String DEFAULT, // FIXME media query
653 rel: LinkType DEFAULT,
654 sizes: String DEFAULT, // FIXME
655 title: String DEFAULT, // FIXME
656 r#type: Mime "type",
657 integrity: String DEFAULT,
658 disabled: Bool DEFAULT,
659 referrerpolicy: ReferrerPolicy DEFAULT,
660 fetchpriority: FetchPriority DEFAULT,
661 blocking: Blocking DEFAULT,
662 r#as: As "as",
663 };
664
665 /// Build a
666 /// [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)
667 /// element.
668 meta None {
669 charset: String DEFAULT, // FIXME IANA standard names
670 content: String DEFAULT,
671 http_equiv: String "http-equiv",
672 name: Metadata DEFAULT,
673 property: Metadata DEFAULT,
674 };
675
676 /// Build a
677 /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style)
678 /// element.
679 style None {
680 r#type: Mime "type",
681 media: String DEFAULT, // FIXME media query
682 nonce: Nonce DEFAULT,
683 title: String DEFAULT, // FIXME
684 };
685
686 /// Build a
687 /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)
688 /// element.
689 title None { };
690
691 // Sectioning root
692
693 /// Build a
694 /// [`<body>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)
695 /// element.
696 body None {};
697
698 // ------------------
699 // Content sectioning
700 // ------------------
701
702 /// Build a
703 /// [`<address>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address)
704 /// element.
705 address None {};
706
707 /// Build a
708 /// [`<article>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article)
709 /// element.
710 article None {};
711
712 /// Build a
713 /// [`<aside>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside)
714 /// element.
715 aside None {};
716
717 /// Build a
718 /// [`<footer>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer)
719 /// element.
720 footer None {};
721
722 /// Build a
723 /// [`<header>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header)
724 /// element.
725 header None {};
726
727 /// Build a
728 /// [`<hgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup)
729 /// element.
730 hgroup None {};
731
732 /// Build a
733 /// [`<h1>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h1)
734 /// element.
735 ///
736 /// # About
737 /// - The HTML `<h1>` element is found within the `<body>` tag.
738 /// - Headings can range from `<h1>` to `<h6>`.
739 /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
740 /// - The `<h1>` heading is the first heading in the document.
741 /// - The `<h1>` heading is usually a large bolded font.
742 h1 None {};
743
744 /// Build a
745 /// [`<h2>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h2)
746 /// element.
747 ///
748 /// # About
749 /// - The HTML `<h2>` element is found within the `<body>` tag.
750 /// - Headings can range from `<h1>` to `<h6>`.
751 /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
752 /// - The `<h2>` heading is the second heading in the document.
753 /// - The `<h2>` heading is usually a large bolded font.
754 h2 None {};
755
756 /// Build a
757 /// [`<h3>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h3)
758 /// element.
759 ///
760 /// # About
761 /// - The HTML `<h1>` element is found within the `<body>` tag.
762 /// - Headings can range from `<h1>` to `<h6>`.
763 /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
764 /// - The `<h1>` heading is the first heading in the document.
765 /// - The `<h1>` heading is usually a large bolded font.
766 h3 None {};
767
768 /// Build a
769 /// [`<h4>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h4)
770 /// element.
771 h4 None {};
772
773 /// Build a
774 /// [`<h5>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h5)
775 /// element.
776 h5 None {};
777
778 /// Build a
779 /// [`<h6>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h6)
780 /// element.
781 h6 None {};
782
783 /// Build a
784 /// [`<main>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main)
785 /// element.
786 main None {};
787
788 /// Build a
789 /// [`<nav>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav)
790 /// element.
791 nav None {};
792
793 /// Build a
794 /// [`<section>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section)
795 /// element.
796 section None {};
797
798 // Text content
799
800 /// Build a
801 /// [`<blockquote>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote)
802 /// element.
803 blockquote None {
804 cite: Uri DEFAULT,
805 };
806 /// Build a
807 /// [`<dd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd)
808 /// element.
809 dd None {};
810
811 /// Build a
812 /// [`<div>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div)
813 /// element.
814 ///
815 /// Part of the HTML namespace. Only works in HTML-compatible renderers
816 ///
817 /// ## Definition and Usage
818 /// - The `<div>` tag defines a division or a section in an HTML document.
819 /// - The `<div>` tag is used as a container for HTML elements - which is then styled with CSS or manipulated with JavaScript.
820 /// - The `<div>` tag is easily styled by using the class or id attribute.
821 /// - Any sort of content can be put inside the `<div>` tag!
822 ///
823 /// Note: By default, browsers always place a line break before and after the `<div>` element.
824 ///
825 /// ## References:
826 /// - <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div>
827 /// - <https://www.w3schools.com/tags/tag_div.asp>
828 div None {};
829
830 /// Build a
831 /// [`<dl>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl)
832 /// element.
833 dl None {};
834
835 /// Build a
836 /// [`<dt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt)
837 /// element.
838 dt None {};
839
840 /// Build a
841 /// [`<figcaption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption)
842 /// element.
843 figcaption None {};
844
845 /// Build a
846 /// [`<figure>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure)
847 /// element.
848 figure None {};
849
850 /// Build a
851 /// [`<hr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr)
852 /// element.
853 hr None {};
854
855 /// Build a
856 /// [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li)
857 /// element.
858 li None {
859 value: isize DEFAULT,
860 };
861
862 /// Build a
863 /// [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol)
864 /// element.
865 ol None {
866 reversed: Bool DEFAULT,
867 start: isize DEFAULT,
868 r#type: OrderedListType "type",
869 };
870
871 /// Build a
872 /// [`<p>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p)
873 /// element.
874 p None {};
875
876 /// Build a
877 /// [`<pre>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre)
878 /// element.
879 pre None {};
880
881 /// Build a
882 /// [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul)
883 /// element.
884 ul None {};
885
886
887 // Inline text semantics
888
889 /// Build a
890 /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a)
891 /// element.
892 a None {
893 download: String DEFAULT,
894 href: Uri DEFAULT,
895 hreflang: LanguageTag DEFAULT,
896 target: Target DEFAULT,
897 r#type: Mime "type",
898 // ping: SpacedList<Uri>,
899 // rel: SpacedList<LinkType>,
900 ping: SpacedList DEFAULT,
901 rel: SpacedList DEFAULT,
902 };
903
904 /// Build a
905 /// [`<abbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr)
906 /// element.
907 abbr None {};
908
909 /// Build a
910 /// [`<b>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b)
911 /// element.
912 b None {};
913
914 /// Build a
915 /// [`<bdi>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi)
916 /// element.
917 bdi None {};
918
919 /// Build a
920 /// [`<bdo>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo)
921 /// element.
922 bdo None {};
923
924 /// Build a
925 /// [`<br>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br)
926 /// element.
927 br None {};
928
929 /// Build a
930 /// [`<cite>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite)
931 /// element.
932 cite None {};
933
934 /// Build a
935 /// [`<code>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code)
936 /// element.
937 code None {
938 language: String DEFAULT,
939 };
940
941 /// Build a
942 /// [`<data>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data)
943 /// element.
944 data None {
945 value: String DEFAULT,
946 };
947
948 /// Build a
949 /// [`<dfn>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn)
950 /// element.
951 dfn None {};
952
953 /// Build a
954 /// [`<em>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em)
955 /// element.
956 em None {};
957
958 /// Build a
959 /// [`<i>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i)
960 /// element.
961 i None {};
962
963 /// Build a
964 /// [`<kbd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd)
965 /// element.
966 kbd None {};
967
968 /// Build a
969 /// [`<mark>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark)
970 /// element.
971 mark None {};
972
973 /// Build a
974 /// [`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu)
975 /// element.
976 menu None {};
977
978 /// Build a
979 /// [`<q>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q)
980 /// element.
981 q None {
982 cite: Uri DEFAULT,
983 };
984
985
986 /// Build a
987 /// [`<rp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp)
988 /// element.
989 rp None {};
990
991
992 /// Build a
993 /// [`<rt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt)
994 /// element.
995 rt None {};
996
997
998 /// Build a
999 /// [`<ruby>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby)
1000 /// element.
1001 ruby None {};
1002
1003 /// Build a
1004 /// [`<s>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s)
1005 /// element.
1006 s None {};
1007
1008 /// Build a
1009 /// [`<samp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp)
1010 /// element.
1011 samp None {};
1012
1013 /// Build a
1014 /// [`<small>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small)
1015 /// element.
1016 small None {};
1017
1018 /// Build a
1019 /// [`<span>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span)
1020 /// element.
1021 span None {};
1022
1023 /// Build a
1024 /// [`<strong>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong)
1025 /// element.
1026 strong None {};
1027
1028 /// Build a
1029 /// [`<sub>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub)
1030 /// element.
1031 sub None {};
1032
1033 /// Build a
1034 /// [`<sup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup)
1035 /// element.
1036 sup None {};
1037
1038 /// Build a
1039 /// [`<time>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time)
1040 /// element.
1041 time None {
1042 datetime: Datetime DEFAULT,
1043 };
1044
1045 /// Build a
1046 /// [`<u>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u)
1047 /// element.
1048 u None {};
1049
1050 /// Build a
1051 /// [`<var>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var)
1052 /// element.
1053 var None {};
1054
1055 /// Build a
1056 /// [`<wbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr)
1057 /// element.
1058 wbr None {};
1059
1060
1061 // Image and multimedia
1062
1063 /// Build a
1064 /// [`<area>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area)
1065 /// element.
1066 area None {
1067 alt: String DEFAULT,
1068 coords: String DEFAULT, // TODO could perhaps be validated
1069 download: Bool DEFAULT,
1070 href: Uri DEFAULT,
1071 hreflang: LanguageTag DEFAULT,
1072 shape: AreaShape DEFAULT,
1073 target: Target DEFAULT,
1074 // ping: SpacedList<Uri>,
1075 // rel: SpacedSet<LinkType>,
1076 };
1077
1078 /// Build a
1079 /// [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio)
1080 /// element.
1081 audio None {
1082 autoplay: Bool DEFAULT,
1083 controls: Bool DEFAULT,
1084 crossorigin: CrossOrigin DEFAULT,
1085 muted: Bool DEFAULT,
1086 preload: Preload DEFAULT,
1087 src: Uri DEFAULT,
1088 r#loop: Bool "loop",
1089 };
1090
1091 /// Build a
1092 /// [`<img>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img)
1093 /// element.
1094 img None {
1095 alt: String DEFAULT,
1096 crossorigin: CrossOrigin DEFAULT,
1097 decoding: ImageDecoding DEFAULT,
1098 height: usize DEFAULT,
1099 ismap: Bool DEFAULT,
1100 loading: String DEFAULT,
1101 src: Uri DEFAULT,
1102 srcset: String DEFAULT, // FIXME this is much more complicated
1103 usemap: String DEFAULT, // FIXME should be a fragment starting with '#'
1104 width: usize DEFAULT,
1105 referrerpolicy: String DEFAULT,
1106 sizes: String DEFAULT, // FIXME
1107 elementtiming: String DEFAULT,
1108 fetchpriority: String DEFAULT,
1109 attributionsrc: String DEFAULT,
1110 };
1111
1112 /// Build a
1113 /// [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map)
1114 /// element.
1115 map None {
1116 name: Id DEFAULT,
1117 };
1118
1119 /// Build a
1120 /// [`<track>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track)
1121 /// element.
1122 track None {
1123 default: Bool DEFAULT,
1124 kind: VideoKind DEFAULT,
1125 label: String DEFAULT,
1126 src: Uri DEFAULT,
1127 srclang: LanguageTag DEFAULT,
1128 };
1129
1130 /// Build a
1131 /// [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video)
1132 /// element.
1133 video None {
1134 autoplay: Bool DEFAULT,
1135 controls: Bool DEFAULT,
1136 crossorigin: CrossOrigin DEFAULT,
1137 height: usize DEFAULT,
1138 r#loop: Bool "loop",
1139 muted: Bool DEFAULT,
1140 preload: Preload DEFAULT,
1141 playsinline: Bool DEFAULT,
1142 poster: Uri DEFAULT,
1143 src: Uri DEFAULT,
1144 width: usize DEFAULT,
1145 };
1146
1147
1148 // Embedded content
1149
1150 /// Build a
1151 /// [`<embed>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed)
1152 /// element.
1153 embed None {
1154 height: usize DEFAULT,
1155 src: Uri DEFAULT,
1156 r#type: Mime "type",
1157 width: usize DEFAULT,
1158 };
1159
1160 /// Build a
1161 /// [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)
1162 /// element.
1163 iframe None {
1164 allow: FeaturePolicy DEFAULT,
1165 allowfullscreen: Bool DEFAULT,
1166 allowpaymentrequest: Bool DEFAULT,
1167 height: usize DEFAULT,
1168 name: Id DEFAULT,
1169 referrerpolicy: ReferrerPolicy DEFAULT,
1170 src: Uri DEFAULT,
1171 srcdoc: Uri DEFAULT,
1172 width: usize DEFAULT,
1173
1174 margin_width: String "marginWidth",
1175 align: String DEFAULT,
1176 longdesc: String DEFAULT,
1177
1178 scrolling: String DEFAULT,
1179 margin_height: String "marginHeight",
1180 frame_border: String "frameBorder",
1181 // sandbox: SpacedSet<Sandbox>,
1182 };
1183
1184 /// Build a
1185 /// [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object)
1186 /// element.
1187 object None {
1188 data: Uri DEFAULT,
1189 form: Id DEFAULT,
1190 height: usize DEFAULT,
1191 name: Id DEFAULT,
1192 r#type: Mime "type",
1193 typemustmatch: Bool DEFAULT,
1194 usemap: String DEFAULT, // TODO should be a fragment starting with '#'
1195 width: usize DEFAULT,
1196 };
1197
1198 /// Build a
1199 /// [`<param>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param)
1200 /// element.
1201 param None {
1202 name: String DEFAULT,
1203 value: String DEFAULT,
1204 };
1205
1206 /// Build a
1207 /// [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture)
1208 /// element.
1209 picture None {};
1210
1211 /// Build a
1212 /// [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source)
1213 /// element.
1214 source None {
1215 src: Uri DEFAULT,
1216 r#type: Mime "type",
1217 };
1218
1219
1220 // Scripting
1221
1222 /// Build a
1223 /// [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas)
1224 /// element.
1225 canvas None {
1226 height: usize DEFAULT,
1227 width: usize DEFAULT,
1228 };
1229
1230 /// Build a
1231 /// [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript)
1232 /// element.
1233 noscript None {};
1234
1235 /// Build a
1236 /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)
1237 /// element.
1238 ///
1239 /// The script HTML element is used to embed executable code or data; this is typically used to embed or refer to
1240 /// JavaScript code. The script element can also be used with other languages, such as WebGL's GLSL shader
1241 /// programming language and JSON.
1242 script None {
1243 /// Normal script elements pass minimal information to the window.onerror for scripts which do not pass the
1244 /// standard CORS checks. To allow error logging for sites which use a separate domain for static media, use
1245 /// this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments.
1246 crossorigin: CrossOrigin DEFAULT,
1247
1248 /// This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the
1249 /// document has been parsed, but before firing DOMContentLoaded.
1250 ///
1251 /// Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has
1252 /// loaded and finished evaluating.
1253 ///
1254 /// ----
1255 /// ### Warning:
1256 ///
1257 /// This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this
1258 /// case it would have no effect.
1259 ///
1260 /// ----
1261 ///
1262 /// The defer attribute has no effect on module scripts — they defer by default.
1263 /// Scripts with the defer attribute will execute in the order in which they appear in the document.
1264 ///
1265 /// This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and
1266 /// evaluate scripts before continuing to parse. async has a similar effect in this case.
1267 defer: Bool DEFAULT,
1268 integrity: Integrity DEFAULT,
1269 nomodule: Bool DEFAULT,
1270 nonce: Nonce DEFAULT,
1271 src: Uri DEFAULT,
1272 text: String DEFAULT,
1273 fetchpriority: String DEFAULT,
1274 referrerpolicy: String DEFAULT,
1275
1276 r#async: Bool "async",
1277 r#type: String "type", // TODO could be an enum
1278 r#script: String "script",
1279 };
1280
1281
1282 // Demarcating edits
1283
1284 /// Build a
1285 /// [`<del>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del)
1286 /// element.
1287 del None {
1288 cite: Uri DEFAULT,
1289 datetime: Datetime DEFAULT,
1290 };
1291
1292 /// Build a
1293 /// [`<ins>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins)
1294 /// element.
1295 ins None {
1296 cite: Uri DEFAULT,
1297 datetime: Datetime DEFAULT,
1298 };
1299
1300
1301 // Table content
1302
1303 /// Build a
1304 /// [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption)
1305 /// element.
1306 caption None {};
1307
1308 /// Build a
1309 /// [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col)
1310 /// element.
1311 col None {
1312 span: usize DEFAULT,
1313 };
1314
1315 /// Build a
1316 /// [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup)
1317 /// element.
1318 colgroup None {
1319 span: usize DEFAULT,
1320 };
1321
1322 /// Build a
1323 /// [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table)
1324 /// element.
1325 table None {};
1326
1327 /// Build a
1328 /// [`<tbody>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody)
1329 /// element.
1330 tbody None {};
1331
1332 /// Build a
1333 /// [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td)
1334 /// element.
1335 td None {
1336 colspan: usize DEFAULT,
1337 rowspan: usize DEFAULT,
1338 // headers: SpacedSet<Id>,
1339 };
1340
1341 /// Build a
1342 /// [`<tfoot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot)
1343 /// element.
1344 tfoot None {};
1345
1346 /// Build a
1347 /// [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th)
1348 /// element.
1349 th None {
1350 abbr: String DEFAULT,
1351 colspan: usize DEFAULT,
1352 rowspan: usize DEFAULT,
1353 scope: TableHeaderScope DEFAULT,
1354 // headers: SpacedSet<Id>,
1355 };
1356
1357 /// Build a
1358 /// [`<thead>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead)
1359 /// element.
1360 thead None {};
1361
1362 /// Build a
1363 /// [`<tr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr)
1364 /// element.
1365 tr None {};
1366
1367
1368 // Forms
1369
1370 /// Build a
1371 /// [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button)
1372 /// element.
1373 button None {
1374 autofocus: Bool DEFAULT,
1375 disabled: Bool DEFAULT,
1376 form: Id DEFAULT,
1377 formaction: Uri DEFAULT,
1378 formenctype: FormEncodingType DEFAULT,
1379 formmethod: FormMethod DEFAULT,
1380 formnovalidate: Bool DEFAULT,
1381 formtarget: Target DEFAULT,
1382 name: Id DEFAULT,
1383 popovertarget: String DEFAULT,
1384 popovertargetaction: String DEFAULT,
1385 value: String DEFAULT,
1386 r#type: String "type",
1387 };
1388
1389 /// Build a
1390 /// [`<datalist>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist)
1391 /// element.
1392 datalist None {};
1393
1394 /// Build a
1395 /// [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
1396 /// element.
1397 fieldset None {
1398 disabled: Bool DEFAULT,
1399 form: Id DEFAULT,
1400 name: Id DEFAULT,
1401 };
1402
1403 /// Build a
1404 /// [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)
1405 /// element.
1406 form None {
1407 // accept-charset: SpacedList<CharacterEncoding>,
1408 action: Uri DEFAULT,
1409 autocomplete: OnOff DEFAULT,
1410 enctype: FormEncodingType DEFAULT,
1411 method: FormMethod DEFAULT,
1412 name: Id DEFAULT,
1413 novalidate: Bool DEFAULT,
1414 target: Target DEFAULT,
1415 };
1416
1417 /// Build a
1418 /// [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
1419 /// element.
1420 input None {
1421 accept: String DEFAULT,
1422 alt: String DEFAULT,
1423 autocomplete: String DEFAULT,
1424 autofocus: Bool DEFAULT,
1425 capture: String DEFAULT,
1426 checked: Bool DEFAULT,
1427 directory: Bool "webkitdirectory",
1428 disabled: Bool DEFAULT,
1429 form: Id DEFAULT,
1430 formaction: Uri DEFAULT,
1431 formenctype: FormEncodingType DEFAULT,
1432 formmethod: FormDialogMethod DEFAULT,
1433 formnovalidate: Bool DEFAULT,
1434 formtarget: Target DEFAULT,
1435 height: isize DEFAULT,
1436 initial_checked: Bool DEFAULT,
1437 list: Id DEFAULT,
1438 max: String DEFAULT,
1439 maxlength: usize DEFAULT,
1440 min: String DEFAULT,
1441 minlength: usize DEFAULT,
1442 multiple: Bool DEFAULT,
1443 name: Id DEFAULT,
1444 pattern: String DEFAULT,
1445 popovertarget: String DEFAULT,
1446 popovertargetaction: String DEFAULT,
1447 placeholder: String DEFAULT,
1448 readonly: Bool DEFAULT,
1449 required: Bool DEFAULT,
1450 size: usize DEFAULT,
1451 spellcheck: Bool DEFAULT,
1452 src: Uri DEFAULT,
1453 step: String DEFAULT,
1454 tabindex: usize DEFAULT,
1455 width: isize DEFAULT,
1456
1457 /// The type of input
1458 ///
1459 /// Here are the different input types you can use in HTML:
1460 ///
1461 /// - `button`
1462 /// - `checkbox`
1463 /// - `color`
1464 /// - `date`
1465 /// - `datetime-local`
1466 /// - `email`
1467 /// - `file`
1468 /// - `hidden`
1469 /// - `image`
1470 /// - `month`
1471 /// - `number`
1472 /// - `password`
1473 /// - `radio`
1474 /// - `range`
1475 /// - `reset`
1476 /// - `search`
1477 /// - `submit`
1478 /// - `tel`
1479 /// - `text`
1480 /// - `time`
1481 /// - `url`
1482 /// - `week`
1483
1484 r#type: InputType "type",
1485 // value: String,
1486 value: String volatile,
1487 initial_value: String DEFAULT,
1488 };
1489
1490 /// Build a
1491 /// [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label)
1492 /// element.
1493 label None {
1494 form: Id DEFAULT,
1495 r#for: Id "for",
1496 };
1497
1498 /// Build a
1499 /// [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend)
1500 /// element.
1501 legend None {};
1502
1503 /// Build a
1504 /// [`<meter>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter)
1505 /// element.
1506 meter None {
1507 value: isize DEFAULT,
1508 min: isize DEFAULT,
1509 max: isize DEFAULT,
1510 low: isize DEFAULT,
1511 high: isize DEFAULT,
1512 optimum: isize DEFAULT,
1513 form: Id DEFAULT,
1514 };
1515
1516 /// Build a
1517 /// [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup)
1518 /// element.
1519 optgroup None {
1520 disabled: Bool DEFAULT,
1521 label: String DEFAULT,
1522 };
1523
1524 /// Build a
1525 /// [`<option>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
1526 /// element.
1527 option None {
1528 disabled: Bool DEFAULT,
1529 label: String DEFAULT,
1530
1531
1532 value: String DEFAULT,
1533
1534 selected: Bool volatile,
1535 initial_selected: Bool DEFAULT,
1536 };
1537
1538 /// Build a
1539 /// [`<output>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output)
1540 /// element.
1541 output None {
1542 form: Id DEFAULT,
1543 name: Id DEFAULT,
1544 // r#for: SpacedSet<Id>,
1545 };
1546
1547 /// Build a
1548 /// [`<progress>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress)
1549 /// element.
1550 progress None {
1551 max: f64 DEFAULT,
1552 value: f64 DEFAULT,
1553 };
1554
1555 /// Build a
1556 /// [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
1557 /// element.
1558 select None {
1559 // defined below
1560 // value: String,
1561 autocomplete: String DEFAULT,
1562 autofocus: Bool DEFAULT,
1563 disabled: Bool DEFAULT,
1564 form: Id DEFAULT,
1565 multiple: Bool DEFAULT,
1566 name: Id DEFAULT,
1567 required: Bool DEFAULT,
1568 size: usize DEFAULT,
1569 value: String volatile,
1570 };
1571
1572 /// Build a
1573 /// [`<textarea>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
1574 /// element.
1575 textarea None {
1576 autocomplete: OnOff DEFAULT,
1577 autofocus: Bool DEFAULT,
1578 cols: usize DEFAULT,
1579 disabled: Bool DEFAULT,
1580 form: Id DEFAULT,
1581 maxlength: usize DEFAULT,
1582 minlength: usize DEFAULT,
1583 name: Id DEFAULT,
1584 placeholder: String DEFAULT,
1585 readonly: Bool DEFAULT,
1586 required: Bool DEFAULT,
1587 rows: usize DEFAULT,
1588 spellcheck: BoolOrDefault DEFAULT,
1589 wrap: Wrap DEFAULT,
1590 value: String volatile,
1591
1592 initial_value: String DEFAULT,
1593 };
1594
1595
1596 // Interactive elements
1597
1598 /// Build a
1599 /// [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
1600 /// element.
1601 details None {
1602 open: Bool DEFAULT,
1603 };
1604
1605 /// Build dialog
1606 /// [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
1607 /// element.
1608 dialog None {
1609 open: Bool DEFAULT,
1610 };
1611
1612 /// Build a
1613 /// [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
1614 /// element.
1615 summary None {};
1616
1617 // Web components
1618
1619 /// Build a
1620 /// [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)
1621 /// element.
1622 slot None {
1623 name: String DEFAULT,
1624 };
1625
1626 /// Build a
1627 /// [`<template>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)
1628 /// element.
1629 template None {};
1630
1631 // SVG components
1632 /// Build a
1633 /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1634 /// element.
1635 svg "http://www.w3.org/2000/svg" { };
1636
1637
1638 // /// Build a
1639 // /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a)
1640 // /// element.
1641 // a "http://www.w3.org/2000/svg" {};
1642
1643 /// Build a
1644 /// [`<animate>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate)
1645 /// element.
1646 animate "http://www.w3.org/2000/svg" {};
1647
1648 /// Build a
1649 /// [`<animateMotion>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateMotion)
1650 /// element.
1651 animateMotion "http://www.w3.org/2000/svg" {};
1652
1653 /// Build a
1654 /// [`<animateTransform>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform)
1655 /// element.
1656 animateTransform "http://www.w3.org/2000/svg" {};
1657
1658 /// Build a
1659 /// [`<circle>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle)
1660 /// element.
1661 circle "http://www.w3.org/2000/svg" {};
1662
1663 /// Build a
1664 /// [`<clipPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)
1665 /// element.
1666 clipPath "http://www.w3.org/2000/svg" {};
1667
1668 /// Build a
1669 /// [`<defs>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs)
1670 /// element.
1671 defs "http://www.w3.org/2000/svg" {};
1672
1673 /// Build a
1674 /// [`<desc>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc)
1675 /// element.
1676 desc "http://www.w3.org/2000/svg" {};
1677
1678 /// Build a
1679 /// [`<discard>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/discard)
1680 /// element.
1681 discard "http://www.w3.org/2000/svg" {};
1682
1683 /// Build a
1684 /// [`<ellipse>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse)
1685 /// element.
1686 ellipse "http://www.w3.org/2000/svg" {};
1687
1688 /// Build a
1689 /// [`<feBlend>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feBlend)
1690 /// element.
1691 feBlend "http://www.w3.org/2000/svg" {};
1692
1693 /// Build a
1694 /// [`<feColorMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix)
1695 /// element.
1696 feColorMatrix "http://www.w3.org/2000/svg" {};
1697
1698 /// Build a
1699 /// [`<feComponentTransfer>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComponentTransfer)
1700 /// element.
1701 feComponentTransfer "http://www.w3.org/2000/svg" {};
1702
1703 /// Build a
1704 /// [`<feComposite>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComposite)
1705 /// element.
1706 feComposite "http://www.w3.org/2000/svg" {};
1707
1708 /// Build a
1709 /// [`<feConvolveMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feConvolveMatrix)
1710 /// element.
1711 feConvolveMatrix "http://www.w3.org/2000/svg" {};
1712
1713 /// Build a
1714 /// [`<feDiffuseLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting)
1715 /// element.
1716 feDiffuseLighting "http://www.w3.org/2000/svg" {};
1717
1718 /// Build a
1719 /// [`<feDisplacementMap>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap)
1720 /// element.
1721 feDisplacementMap "http://www.w3.org/2000/svg" {};
1722
1723 /// Build a
1724 /// [`<feDistantLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDistantLight)
1725 /// element.
1726 feDistantLight "http://www.w3.org/2000/svg" {};
1727
1728 /// Build a
1729 /// [`<feDropShadow>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDropShadow)
1730 /// element.
1731 feDropShadow "http://www.w3.org/2000/svg" {};
1732
1733 /// Build a
1734 /// [`<feFlood>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFlood)
1735 /// element.
1736 feFlood "http://www.w3.org/2000/svg" {};
1737
1738 /// Build a
1739 /// [`<feFuncA>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncA)
1740 /// element.
1741 feFuncA "http://www.w3.org/2000/svg" {};
1742
1743 /// Build a
1744 /// [`<feFuncB>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncB)
1745 /// element.
1746 feFuncB "http://www.w3.org/2000/svg" {};
1747
1748 /// Build a
1749 /// [`<feFuncG>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncG)
1750 /// element.
1751 feFuncG "http://www.w3.org/2000/svg" {};
1752
1753 /// Build a
1754 /// [`<feFuncR>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncR)
1755 /// element.
1756 feFuncR "http://www.w3.org/2000/svg" {};
1757
1758 /// Build a
1759 /// [`<feGaussianBlur>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feGaussianBlur)
1760 /// element.
1761 feGaussianBlur "http://www.w3.org/2000/svg" {};
1762
1763 /// Build a
1764 /// [`<feImage>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feImage)
1765 /// element.
1766 feImage "http://www.w3.org/2000/svg" {};
1767
1768 /// Build a
1769 /// [`<feMerge>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge)
1770 /// element.
1771 feMerge "http://www.w3.org/2000/svg" {};
1772
1773 /// Build a
1774 /// [`<feMergeNode>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMergeNode)
1775 /// element.
1776 feMergeNode "http://www.w3.org/2000/svg" {};
1777
1778 /// Build a
1779 /// [`<feMorphology>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology)
1780 /// element.
1781 feMorphology "http://www.w3.org/2000/svg" {};
1782
1783 /// Build a
1784 /// [`<feOffset>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset)
1785 /// element.
1786 feOffset "http://www.w3.org/2000/svg" {};
1787
1788 /// Build a
1789 /// [`<fePointLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/fePointLight)
1790 /// element.
1791 fePointLight "http://www.w3.org/2000/svg" {};
1792
1793 /// Build a
1794 /// [`<feSpecularLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpecularLighting)
1795 /// element.
1796 feSpecularLighting "http://www.w3.org/2000/svg" {};
1797
1798 /// Build a
1799 /// [`<feSpotLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpotLight)
1800 /// element.
1801 feSpotLight "http://www.w3.org/2000/svg" {};
1802
1803 /// Build a
1804 /// [`<feTile>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTile)
1805 /// element.
1806 feTile "http://www.w3.org/2000/svg" {};
1807
1808 /// Build a
1809 /// [`<feTurbulence>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTurbulence)
1810 /// element.
1811 feTurbulence "http://www.w3.org/2000/svg" {};
1812
1813 /// Build a
1814 /// [`<filter>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter)
1815 /// element.
1816 filter "http://www.w3.org/2000/svg" {};
1817
1818 /// Build a
1819 /// [`<foreignObject>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject)
1820 /// element.
1821 foreignObject "http://www.w3.org/2000/svg" {};
1822
1823 /// Build a
1824 /// [`<g>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g)
1825 /// element.
1826 g "http://www.w3.org/2000/svg" {};
1827
1828 /// Build a
1829 /// [`<hatch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatch)
1830 /// element.
1831 hatch "http://www.w3.org/2000/svg" {};
1832
1833 /// Build a
1834 /// [`<hatchpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatchpath)
1835 /// element.
1836 hatchpath "http://www.w3.org/2000/svg" {};
1837
1838 /// Build a
1839 /// [`<image>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image)
1840 /// element.
1841 image "http://www.w3.org/2000/svg" {};
1842
1843 /// Build a
1844 /// [`<line>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line)
1845 /// element.
1846 line "http://www.w3.org/2000/svg" {};
1847
1848 /// Build a
1849 /// [`<linearGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient)
1850 /// element.
1851 linearGradient "http://www.w3.org/2000/svg" {};
1852
1853 /// Build a
1854 /// [`<marker>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker)
1855 /// element.
1856 marker "http://www.w3.org/2000/svg" {};
1857
1858 /// Build a
1859 /// [`<mask>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask)
1860 /// element.
1861 mask "http://www.w3.org/2000/svg" {};
1862
1863 /// Build a
1864 /// [`<metadata>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/metadata)
1865 /// element.
1866 metadata "http://www.w3.org/2000/svg" {};
1867
1868 /// Build a
1869 /// [`<mpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mpath)
1870 /// element.
1871 mpath "http://www.w3.org/2000/svg" {};
1872
1873 /// Build a
1874 /// [`<path>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path)
1875 /// element.
1876 path "http://www.w3.org/2000/svg" {};
1877
1878 /// Build a
1879 /// [`<pattern>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern)
1880 /// element.
1881 pattern "http://www.w3.org/2000/svg" {};
1882
1883 /// Build a
1884 /// [`<polygon>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon)
1885 /// element.
1886 polygon "http://www.w3.org/2000/svg" {};
1887
1888 /// Build a
1889 /// [`<polyline>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline)
1890 /// element.
1891 polyline "http://www.w3.org/2000/svg" {};
1892
1893 /// Build a
1894 /// [`<radialGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/radialGradient)
1895 /// element.
1896 radialGradient "http://www.w3.org/2000/svg" {};
1897
1898 /// Build a
1899 /// [`<rect>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect)
1900 /// element.
1901 rect "http://www.w3.org/2000/svg" {};
1902
1903 // /// Build a
1904 // /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/script)
1905 // /// element.
1906 // script "http://www.w3.org/2000/svg" {};
1907
1908 /// Build a
1909 /// [`<set>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/set)
1910 /// element.
1911 set "http://www.w3.org/2000/svg" {};
1912
1913 /// Build a
1914 /// [`<stop>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/stop)
1915 /// element.
1916 stop "http://www.w3.org/2000/svg" {};
1917
1918 // /// Build a
1919 // /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style)
1920 // /// element.
1921 // style "http://www.w3.org/2000/svg" {};
1922
1923 // /// Build a
1924 // /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1925 // /// element.
1926 // svg "http://www.w3.org/2000/svg" {};
1927
1928 /// Build a
1929 /// [`<switch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/switch)
1930 /// element.
1931 switch "http://www.w3.org/2000/svg" {};
1932
1933 /// Build a
1934 /// [`<symbol>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol)
1935 /// element.
1936 symbol "http://www.w3.org/2000/svg" {};
1937
1938 /// Build a
1939 /// [`<text>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text)
1940 /// element.
1941 text "http://www.w3.org/2000/svg" {};
1942
1943 /// Build a
1944 /// [`<textPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath)
1945 /// element.
1946 textPath "http://www.w3.org/2000/svg" {};
1947
1948 // /// Build a
1949 // /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title)
1950 // /// element.
1951 // title "http://www.w3.org/2000/svg" {};
1952
1953 /// Build a
1954 /// [`<tspan>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/tspan)
1955 /// element.
1956 tspan "http://www.w3.org/2000/svg" {};
1957
1958 /// Build a
1959 /// [`<view>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/view)
1960 /// element.
1961 view "http://www.w3.org/2000/svg" {};
1962
1963 // /// Build a
1964 // /// [`<use>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)
1965 // /// element.
1966 r#use ["use", "http://www.w3.org/2000/svg"] {
1967 href: String DEFAULT,
1968 };
1969
1970 // MathML elements
1971
1972 /// Build a
1973 /// [`<annotation>`](https://w3c.github.io/mathml-core/#dfn-annotation)
1974 /// element.
1975 annotation "http://www.w3.org/1998/Math/MathML" {
1976 encoding: String DEFAULT,
1977 };
1978
1979 /// Build a
1980 /// [`<annotation-xml>`](https://w3c.github.io/mathml-core/#dfn-annotation-xml)
1981 /// element.
1982 annotationXml ["annotation-xml", "http://www.w3.org/1998/Math/MathML"] {
1983 encoding: String DEFAULT,
1984 };
1985
1986 /// Build a
1987 /// [`<merror>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/merror)
1988 /// element.
1989 merror "http://www.w3.org/1998/Math/MathML" {};
1990
1991 /// Build a
1992 /// [`<math>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/math)
1993 /// element.
1994 math "http://www.w3.org/1998/Math/MathML" {
1995 display: String DEFAULT,
1996 };
1997
1998 /// Build a
1999 /// [`<mfrac>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac)
2000 /// element.
2001 mfrac "http://www.w3.org/1998/Math/MathML" {
2002 linethickness: usize DEFAULT,
2003 };
2004
2005 /// Build a
2006 /// [`<mi>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi)
2007 /// element.
2008 mi "http://www.w3.org/1998/Math/MathML" {
2009 mathvariant: String DEFAULT,
2010 };
2011
2012 /// Build a
2013 /// [`<mmultiscripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts)
2014 /// element.
2015 mmultiscripts "http://www.w3.org/1998/math/mathml" {};
2016
2017 /// Build a
2018 /// [`<mn>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mn)
2019 /// element.
2020 mn "http://www.w3.org/1998/Math/MathML" {};
2021
2022 /// Build a
2023 /// [`<mo>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo)
2024 /// element.
2025 mo "http://www.w3.org/1998/Math/MathML" {
2026 fence: Bool DEFAULT,
2027 largeop: Bool DEFAULT,
2028 lspace: usize DEFAULT,
2029 maxsize: usize DEFAULT,
2030 minsize: usize DEFAULT,
2031 movablelimits: Bool DEFAULT,
2032 rspace: usize DEFAULT,
2033 separator: Bool DEFAULT,
2034 stretchy: Bool DEFAULT,
2035 symmetric: Bool DEFAULT,
2036 };
2037
2038 /// Build a
2039 /// [`<mover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mover)
2040 /// element.
2041 mover "http://www.w3.org/1998/Math/MathML" {
2042 accent: Bool DEFAULT,
2043 };
2044
2045 /// Build a
2046 /// [`<mpadded>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mpadded)
2047 /// element.
2048 mpadded "http://www.w3.org/1998/Math/MathML" {
2049 depth: usize DEFAULT,
2050 height: usize DEFAULT,
2051 lspace: usize DEFAULT,
2052 voffset: usize DEFAULT,
2053 width: usize DEFAULT,
2054 };
2055
2056 /// Build a
2057 /// [`<mphantom>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mphantom)
2058 /// element.
2059 mphantom "http://www.w3.org/1998/Math/MathML" {};
2060
2061 /// Build a
2062 /// [`<mprescripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mprescripts)
2063 /// element.
2064 mprescripts "http://www.w3.org/1998/Math/MathML" {};
2065
2066 /// Build a
2067 /// [`<mroot>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mroot)
2068 /// element.
2069 mroot "http://www.w3.org/1998/Math/MathML" {};
2070
2071 /// Build a
2072 /// [`<mrow>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mrow)
2073 /// element.
2074 mrow "http://www.w3.org/1998/Math/MathML" {
2075
2076 };
2077
2078 /// Build a
2079 /// [`<ms>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms)
2080 /// element.
2081 ms "http://www.w3.org/1998/Math/MathML" {
2082 lquote: String DEFAULT,
2083 rquote: String DEFAULT,
2084 };
2085
2086 /// Build a
2087 /// [`<mspace>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mspace)
2088 /// element.
2089 mspace "http://www.w3.org/1998/Math/MathML" {
2090 depth: usize DEFAULT,
2091 height: usize DEFAULT,
2092 width: usize DEFAULT,
2093 };
2094
2095 /// Build a
2096 /// [`<msqrt>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msqrt)
2097 /// element.
2098 msqrt "http://www.w3.org/1998/Math/MathML" {};
2099
2100 /// Build a
2101 /// [`<mstyle>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle)
2102 /// element.
2103 mstyle "http://www.w3.org/1998/Math/MathML" {};
2104
2105 /// Build a
2106 /// [`<msub>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub)
2107 /// element.
2108 msub "http://www.w3.org/1998/Math/MathML" {};
2109
2110 /// Build a
2111 /// [`<msubsup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup)
2112 /// element.
2113 msubsup "http://www.w3.org/1998/Math/MathML" {};
2114
2115 /// Build a
2116 /// [`<msup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup)
2117 /// element.
2118 msup "http://www.w3.org/1998/Math/MathML" {};
2119
2120 /// Build a
2121 /// [`<mtable>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable)
2122 /// element.
2123 mtable "http://www.w3.org/1998/Math/MathML" {};
2124
2125 /// Build a
2126 /// [`<mtd>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd)
2127 /// element.
2128 mtd "http://www.w3.org/1998/Math/MathML" {
2129 columnspan: usize DEFAULT,
2130 rowspan: usize DEFAULT,
2131 };
2132
2133 /// Build a
2134 /// [`<mtext>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtext)
2135 /// element.
2136 mtext "http://www.w3.org/1998/Math/MathML" {};
2137
2138 /// Build a
2139 /// [`<mtr>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr)
2140 /// element.
2141 mtr "http://www.w3.org/1998/Math/MathML" {};
2142
2143 /// Build a
2144 /// [`<munder>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munder)
2145 /// element.
2146 munder "http://www.w3.org/1998/Math/MathML" {
2147 accentunder: Bool DEFAULT,
2148 };
2149
2150 /// Build a
2151 /// [`<munderover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munderover)
2152 /// element.
2153 munderover "http://www.w3.org/1998/Math/MathML" {
2154 accent: Bool DEFAULT,
2155 accentunder: Bool DEFAULT,
2156 };
2157
2158 /// Build a
2159 /// [`<semantics>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics)
2160 /// element.
2161 semantics "http://www.w3.org/1998/Math/MathML" {
2162 encoding: String DEFAULT,
2163 };
2164}