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 srcset: String DEFAULT,
1218 media: String DEFAULT,
1219 sizes: String DEFAULT,
1220 width: usize DEFAULT,
1221 height: usize DEFAULT,
1222 };
1223
1224
1225 // Scripting
1226
1227 /// Build a
1228 /// [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas)
1229 /// element.
1230 canvas None {
1231 height: usize DEFAULT,
1232 width: usize DEFAULT,
1233 };
1234
1235 /// Build a
1236 /// [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript)
1237 /// element.
1238 noscript None {};
1239
1240 /// Build a
1241 /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)
1242 /// element.
1243 ///
1244 /// The script HTML element is used to embed executable code or data; this is typically used to embed or refer to
1245 /// JavaScript code. The script element can also be used with other languages, such as WebGL's GLSL shader
1246 /// programming language and JSON.
1247 script None {
1248 /// Normal script elements pass minimal information to the window.onerror for scripts which do not pass the
1249 /// standard CORS checks. To allow error logging for sites which use a separate domain for static media, use
1250 /// this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments.
1251 crossorigin: CrossOrigin DEFAULT,
1252
1253 /// This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the
1254 /// document has been parsed, but before firing DOMContentLoaded.
1255 ///
1256 /// Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has
1257 /// loaded and finished evaluating.
1258 ///
1259 /// ----
1260 /// ### Warning:
1261 ///
1262 /// This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this
1263 /// case it would have no effect.
1264 ///
1265 /// ----
1266 ///
1267 /// The defer attribute has no effect on module scripts — they defer by default.
1268 /// Scripts with the defer attribute will execute in the order in which they appear in the document.
1269 ///
1270 /// This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and
1271 /// evaluate scripts before continuing to parse. async has a similar effect in this case.
1272 defer: Bool DEFAULT,
1273 integrity: Integrity DEFAULT,
1274 nomodule: Bool DEFAULT,
1275 nonce: Nonce DEFAULT,
1276 src: Uri DEFAULT,
1277 text: String DEFAULT,
1278 fetchpriority: String DEFAULT,
1279 referrerpolicy: String DEFAULT,
1280
1281 r#async: Bool "async",
1282 r#type: String "type", // TODO could be an enum
1283 r#script: String "script",
1284 };
1285
1286
1287 // Demarcating edits
1288
1289 /// Build a
1290 /// [`<del>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del)
1291 /// element.
1292 del None {
1293 cite: Uri DEFAULT,
1294 datetime: Datetime DEFAULT,
1295 };
1296
1297 /// Build a
1298 /// [`<ins>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins)
1299 /// element.
1300 ins None {
1301 cite: Uri DEFAULT,
1302 datetime: Datetime DEFAULT,
1303 };
1304
1305
1306 // Table content
1307
1308 /// Build a
1309 /// [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption)
1310 /// element.
1311 caption None {};
1312
1313 /// Build a
1314 /// [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col)
1315 /// element.
1316 col None {
1317 span: usize DEFAULT,
1318 };
1319
1320 /// Build a
1321 /// [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup)
1322 /// element.
1323 colgroup None {
1324 span: usize DEFAULT,
1325 };
1326
1327 /// Build a
1328 /// [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table)
1329 /// element.
1330 table None {};
1331
1332 /// Build a
1333 /// [`<tbody>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody)
1334 /// element.
1335 tbody None {};
1336
1337 /// Build a
1338 /// [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td)
1339 /// element.
1340 td None {
1341 colspan: usize DEFAULT,
1342 rowspan: usize DEFAULT,
1343 // headers: SpacedSet<Id>,
1344 };
1345
1346 /// Build a
1347 /// [`<tfoot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot)
1348 /// element.
1349 tfoot None {};
1350
1351 /// Build a
1352 /// [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th)
1353 /// element.
1354 th None {
1355 abbr: String DEFAULT,
1356 colspan: usize DEFAULT,
1357 rowspan: usize DEFAULT,
1358 scope: TableHeaderScope DEFAULT,
1359 // headers: SpacedSet<Id>,
1360 };
1361
1362 /// Build a
1363 /// [`<thead>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead)
1364 /// element.
1365 thead None {};
1366
1367 /// Build a
1368 /// [`<tr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr)
1369 /// element.
1370 tr None {};
1371
1372
1373 // Forms
1374
1375 /// Build a
1376 /// [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button)
1377 /// element.
1378 button None {
1379 autofocus: Bool DEFAULT,
1380 disabled: Bool DEFAULT,
1381 form: Id DEFAULT,
1382 formaction: Uri DEFAULT,
1383 formenctype: FormEncodingType DEFAULT,
1384 formmethod: FormMethod DEFAULT,
1385 formnovalidate: Bool DEFAULT,
1386 formtarget: Target DEFAULT,
1387 name: Id DEFAULT,
1388 popovertarget: String DEFAULT,
1389 popovertargetaction: String DEFAULT,
1390 value: String DEFAULT,
1391 r#type: String "type",
1392 };
1393
1394 /// Build a
1395 /// [`<datalist>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist)
1396 /// element.
1397 datalist None {};
1398
1399 /// Build a
1400 /// [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
1401 /// element.
1402 fieldset None {
1403 disabled: Bool DEFAULT,
1404 form: Id DEFAULT,
1405 name: Id DEFAULT,
1406 };
1407
1408 /// Build a
1409 /// [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)
1410 /// element.
1411 form None {
1412 // accept-charset: SpacedList<CharacterEncoding>,
1413 action: Uri DEFAULT,
1414 autocomplete: OnOff DEFAULT,
1415 enctype: FormEncodingType DEFAULT,
1416 method: FormMethod DEFAULT,
1417 name: Id DEFAULT,
1418 novalidate: Bool DEFAULT,
1419 target: Target DEFAULT,
1420 };
1421
1422 /// Build a
1423 /// [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
1424 /// element.
1425 input None {
1426 accept: String DEFAULT,
1427 alt: String DEFAULT,
1428 autocomplete: String DEFAULT,
1429 /// cf. <https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocorrect>
1430 autocorrect: OnOff DEFAULT,
1431 autofocus: Bool DEFAULT,
1432 capture: String DEFAULT,
1433 checked: Bool DEFAULT,
1434 directory: Bool "webkitdirectory",
1435 disabled: Bool DEFAULT,
1436 form: Id DEFAULT,
1437 formaction: Uri DEFAULT,
1438 formenctype: FormEncodingType DEFAULT,
1439 formmethod: FormDialogMethod DEFAULT,
1440 formnovalidate: Bool DEFAULT,
1441 formtarget: Target DEFAULT,
1442 height: isize DEFAULT,
1443 initial_checked: Bool DEFAULT,
1444 list: Id DEFAULT,
1445 max: String DEFAULT,
1446 maxlength: usize DEFAULT,
1447 min: String DEFAULT,
1448 minlength: usize DEFAULT,
1449 multiple: Bool DEFAULT,
1450 name: Id DEFAULT,
1451 pattern: String DEFAULT,
1452 popovertarget: String DEFAULT,
1453 popovertargetaction: String DEFAULT,
1454 placeholder: String DEFAULT,
1455 readonly: Bool DEFAULT,
1456 required: Bool DEFAULT,
1457 size: usize DEFAULT,
1458 spellcheck: Bool DEFAULT,
1459 src: Uri DEFAULT,
1460 step: String DEFAULT,
1461 tabindex: usize DEFAULT,
1462 width: isize DEFAULT,
1463
1464 /// The type of input
1465 ///
1466 /// Here are the different input types you can use in HTML:
1467 ///
1468 /// - `button`
1469 /// - `checkbox`
1470 /// - `color`
1471 /// - `date`
1472 /// - `datetime-local`
1473 /// - `email`
1474 /// - `file`
1475 /// - `hidden`
1476 /// - `image`
1477 /// - `month`
1478 /// - `number`
1479 /// - `password`
1480 /// - `radio`
1481 /// - `range`
1482 /// - `reset`
1483 /// - `search`
1484 /// - `submit`
1485 /// - `tel`
1486 /// - `text`
1487 /// - `time`
1488 /// - `url`
1489 /// - `week`
1490
1491 r#type: InputType "type",
1492 // value: String,
1493 value: String volatile,
1494 initial_value: String DEFAULT,
1495 };
1496
1497 /// Build a
1498 /// [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label)
1499 /// element.
1500 label None {
1501 form: Id DEFAULT,
1502 r#for: Id "for",
1503 };
1504
1505 /// Build a
1506 /// [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend)
1507 /// element.
1508 legend None {};
1509
1510 /// Build a
1511 /// [`<meter>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter)
1512 /// element.
1513 meter None {
1514 value: isize DEFAULT,
1515 min: isize DEFAULT,
1516 max: isize DEFAULT,
1517 low: isize DEFAULT,
1518 high: isize DEFAULT,
1519 optimum: isize DEFAULT,
1520 form: Id DEFAULT,
1521 };
1522
1523 /// Build a
1524 /// [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup)
1525 /// element.
1526 optgroup None {
1527 disabled: Bool DEFAULT,
1528 label: String DEFAULT,
1529 };
1530
1531 /// Build a
1532 /// [`<option>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
1533 /// element.
1534 option None {
1535 disabled: Bool DEFAULT,
1536 label: String DEFAULT,
1537
1538
1539 value: String DEFAULT,
1540
1541 selected: Bool volatile,
1542 initial_selected: Bool DEFAULT,
1543 };
1544
1545 /// Build a
1546 /// [`<output>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output)
1547 /// element.
1548 output None {
1549 form: Id DEFAULT,
1550 name: Id DEFAULT,
1551 // r#for: SpacedSet<Id>,
1552 };
1553
1554 /// Build a
1555 /// [`<progress>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress)
1556 /// element.
1557 progress None {
1558 max: f64 DEFAULT,
1559 value: f64 DEFAULT,
1560 };
1561
1562 /// Build a
1563 /// [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
1564 /// element.
1565 select None {
1566 // defined below
1567 // value: String,
1568 autocomplete: String DEFAULT,
1569 autofocus: Bool DEFAULT,
1570 disabled: Bool DEFAULT,
1571 form: Id DEFAULT,
1572 multiple: Bool DEFAULT,
1573 name: Id DEFAULT,
1574 required: Bool DEFAULT,
1575 size: usize DEFAULT,
1576 value: String volatile,
1577 };
1578
1579 /// Build a
1580 /// [`<textarea>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
1581 /// element.
1582 textarea None {
1583 autocomplete: OnOff DEFAULT,
1584 /// cf. <https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocorrect>
1585 autocorrect: OnOff DEFAULT,
1586 autofocus: Bool DEFAULT,
1587 cols: usize DEFAULT,
1588 disabled: Bool DEFAULT,
1589 form: Id DEFAULT,
1590 maxlength: usize DEFAULT,
1591 minlength: usize DEFAULT,
1592 name: Id DEFAULT,
1593 placeholder: String DEFAULT,
1594 readonly: Bool DEFAULT,
1595 required: Bool DEFAULT,
1596 rows: usize DEFAULT,
1597 spellcheck: BoolOrDefault DEFAULT,
1598 wrap: Wrap DEFAULT,
1599 value: String volatile,
1600
1601 initial_value: String DEFAULT,
1602 };
1603
1604
1605 // Interactive elements
1606
1607 /// Build a
1608 /// [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
1609 /// element.
1610 details None {
1611 open: Bool DEFAULT,
1612 };
1613
1614 /// Build dialog
1615 /// [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
1616 /// element.
1617 dialog None {
1618 open: Bool DEFAULT,
1619 };
1620
1621 /// Build a
1622 /// [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
1623 /// element.
1624 summary None {};
1625
1626 // Web components
1627
1628 /// Build a
1629 /// [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)
1630 /// element.
1631 slot None {
1632 name: String DEFAULT,
1633 };
1634
1635 /// Build a
1636 /// [`<template>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)
1637 /// element.
1638 template None {};
1639
1640 // SVG components
1641 /// Build a
1642 /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1643 /// element.
1644 svg "http://www.w3.org/2000/svg" { };
1645
1646
1647 // /// Build a
1648 // /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a)
1649 // /// element.
1650 // a "http://www.w3.org/2000/svg" {};
1651
1652 /// Build a
1653 /// [`<animate>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate)
1654 /// element.
1655 animate "http://www.w3.org/2000/svg" {};
1656
1657 /// Build a
1658 /// [`<animateMotion>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateMotion)
1659 /// element.
1660 animateMotion "http://www.w3.org/2000/svg" {};
1661
1662 /// Build a
1663 /// [`<animateTransform>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform)
1664 /// element.
1665 animateTransform "http://www.w3.org/2000/svg" {};
1666
1667 /// Build a
1668 /// [`<circle>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle)
1669 /// element.
1670 circle "http://www.w3.org/2000/svg" {};
1671
1672 /// Build a
1673 /// [`<clipPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)
1674 /// element.
1675 clipPath "http://www.w3.org/2000/svg" {};
1676
1677 /// Build a
1678 /// [`<defs>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs)
1679 /// element.
1680 defs "http://www.w3.org/2000/svg" {};
1681
1682 /// Build a
1683 /// [`<desc>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc)
1684 /// element.
1685 desc "http://www.w3.org/2000/svg" {};
1686
1687 /// Build a
1688 /// [`<discard>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/discard)
1689 /// element.
1690 discard "http://www.w3.org/2000/svg" {};
1691
1692 /// Build a
1693 /// [`<ellipse>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse)
1694 /// element.
1695 ellipse "http://www.w3.org/2000/svg" {};
1696
1697 /// Build a
1698 /// [`<feBlend>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feBlend)
1699 /// element.
1700 feBlend "http://www.w3.org/2000/svg" {};
1701
1702 /// Build a
1703 /// [`<feColorMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix)
1704 /// element.
1705 feColorMatrix "http://www.w3.org/2000/svg" {};
1706
1707 /// Build a
1708 /// [`<feComponentTransfer>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComponentTransfer)
1709 /// element.
1710 feComponentTransfer "http://www.w3.org/2000/svg" {};
1711
1712 /// Build a
1713 /// [`<feComposite>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComposite)
1714 /// element.
1715 feComposite "http://www.w3.org/2000/svg" {};
1716
1717 /// Build a
1718 /// [`<feConvolveMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feConvolveMatrix)
1719 /// element.
1720 feConvolveMatrix "http://www.w3.org/2000/svg" {};
1721
1722 /// Build a
1723 /// [`<feDiffuseLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting)
1724 /// element.
1725 feDiffuseLighting "http://www.w3.org/2000/svg" {};
1726
1727 /// Build a
1728 /// [`<feDisplacementMap>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap)
1729 /// element.
1730 feDisplacementMap "http://www.w3.org/2000/svg" {};
1731
1732 /// Build a
1733 /// [`<feDistantLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDistantLight)
1734 /// element.
1735 feDistantLight "http://www.w3.org/2000/svg" {};
1736
1737 /// Build a
1738 /// [`<feDropShadow>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDropShadow)
1739 /// element.
1740 feDropShadow "http://www.w3.org/2000/svg" {};
1741
1742 /// Build a
1743 /// [`<feFlood>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFlood)
1744 /// element.
1745 feFlood "http://www.w3.org/2000/svg" {};
1746
1747 /// Build a
1748 /// [`<feFuncA>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncA)
1749 /// element.
1750 feFuncA "http://www.w3.org/2000/svg" {};
1751
1752 /// Build a
1753 /// [`<feFuncB>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncB)
1754 /// element.
1755 feFuncB "http://www.w3.org/2000/svg" {};
1756
1757 /// Build a
1758 /// [`<feFuncG>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncG)
1759 /// element.
1760 feFuncG "http://www.w3.org/2000/svg" {};
1761
1762 /// Build a
1763 /// [`<feFuncR>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncR)
1764 /// element.
1765 feFuncR "http://www.w3.org/2000/svg" {};
1766
1767 /// Build a
1768 /// [`<feGaussianBlur>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feGaussianBlur)
1769 /// element.
1770 feGaussianBlur "http://www.w3.org/2000/svg" {};
1771
1772 /// Build a
1773 /// [`<feImage>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feImage)
1774 /// element.
1775 feImage "http://www.w3.org/2000/svg" {};
1776
1777 /// Build a
1778 /// [`<feMerge>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge)
1779 /// element.
1780 feMerge "http://www.w3.org/2000/svg" {};
1781
1782 /// Build a
1783 /// [`<feMergeNode>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMergeNode)
1784 /// element.
1785 feMergeNode "http://www.w3.org/2000/svg" {};
1786
1787 /// Build a
1788 /// [`<feMorphology>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology)
1789 /// element.
1790 feMorphology "http://www.w3.org/2000/svg" {};
1791
1792 /// Build a
1793 /// [`<feOffset>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset)
1794 /// element.
1795 feOffset "http://www.w3.org/2000/svg" {};
1796
1797 /// Build a
1798 /// [`<fePointLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/fePointLight)
1799 /// element.
1800 fePointLight "http://www.w3.org/2000/svg" {};
1801
1802 /// Build a
1803 /// [`<feSpecularLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpecularLighting)
1804 /// element.
1805 feSpecularLighting "http://www.w3.org/2000/svg" {};
1806
1807 /// Build a
1808 /// [`<feSpotLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpotLight)
1809 /// element.
1810 feSpotLight "http://www.w3.org/2000/svg" {};
1811
1812 /// Build a
1813 /// [`<feTile>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTile)
1814 /// element.
1815 feTile "http://www.w3.org/2000/svg" {};
1816
1817 /// Build a
1818 /// [`<feTurbulence>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTurbulence)
1819 /// element.
1820 feTurbulence "http://www.w3.org/2000/svg" {};
1821
1822 /// Build a
1823 /// [`<filter>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter)
1824 /// element.
1825 filter "http://www.w3.org/2000/svg" {};
1826
1827 /// Build a
1828 /// [`<foreignObject>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject)
1829 /// element.
1830 foreignObject "http://www.w3.org/2000/svg" {};
1831
1832 /// Build a
1833 /// [`<g>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g)
1834 /// element.
1835 g "http://www.w3.org/2000/svg" {};
1836
1837 /// Build a
1838 /// [`<hatch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatch)
1839 /// element.
1840 hatch "http://www.w3.org/2000/svg" {};
1841
1842 /// Build a
1843 /// [`<hatchpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatchpath)
1844 /// element.
1845 hatchpath "http://www.w3.org/2000/svg" {};
1846
1847 /// Build a
1848 /// [`<image>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image)
1849 /// element.
1850 image "http://www.w3.org/2000/svg" {};
1851
1852 /// Build a
1853 /// [`<line>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line)
1854 /// element.
1855 line "http://www.w3.org/2000/svg" {};
1856
1857 /// Build a
1858 /// [`<linearGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient)
1859 /// element.
1860 linearGradient "http://www.w3.org/2000/svg" {};
1861
1862 /// Build a
1863 /// [`<marker>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker)
1864 /// element.
1865 marker "http://www.w3.org/2000/svg" {};
1866
1867 /// Build a
1868 /// [`<mask>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask)
1869 /// element.
1870 mask "http://www.w3.org/2000/svg" {};
1871
1872 /// Build a
1873 /// [`<metadata>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/metadata)
1874 /// element.
1875 metadata "http://www.w3.org/2000/svg" {};
1876
1877 /// Build a
1878 /// [`<mpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mpath)
1879 /// element.
1880 mpath "http://www.w3.org/2000/svg" {};
1881
1882 /// Build a
1883 /// [`<path>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path)
1884 /// element.
1885 path "http://www.w3.org/2000/svg" {};
1886
1887 /// Build a
1888 /// [`<pattern>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern)
1889 /// element.
1890 pattern "http://www.w3.org/2000/svg" {};
1891
1892 /// Build a
1893 /// [`<polygon>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon)
1894 /// element.
1895 polygon "http://www.w3.org/2000/svg" {};
1896
1897 /// Build a
1898 /// [`<polyline>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline)
1899 /// element.
1900 polyline "http://www.w3.org/2000/svg" {};
1901
1902 /// Build a
1903 /// [`<radialGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/radialGradient)
1904 /// element.
1905 radialGradient "http://www.w3.org/2000/svg" {};
1906
1907 /// Build a
1908 /// [`<rect>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect)
1909 /// element.
1910 rect "http://www.w3.org/2000/svg" {};
1911
1912 // /// Build a
1913 // /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/script)
1914 // /// element.
1915 // script "http://www.w3.org/2000/svg" {};
1916
1917 /// Build a
1918 /// [`<set>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/set)
1919 /// element.
1920 set "http://www.w3.org/2000/svg" {};
1921
1922 /// Build a
1923 /// [`<stop>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/stop)
1924 /// element.
1925 stop "http://www.w3.org/2000/svg" {};
1926
1927 // /// Build a
1928 // /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style)
1929 // /// element.
1930 // style "http://www.w3.org/2000/svg" {};
1931
1932 // /// Build a
1933 // /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1934 // /// element.
1935 // svg "http://www.w3.org/2000/svg" {};
1936
1937 /// Build a
1938 /// [`<switch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/switch)
1939 /// element.
1940 switch "http://www.w3.org/2000/svg" {};
1941
1942 /// Build a
1943 /// [`<symbol>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol)
1944 /// element.
1945 symbol "http://www.w3.org/2000/svg" {};
1946
1947 /// Build a
1948 /// [`<text>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text)
1949 /// element.
1950 text "http://www.w3.org/2000/svg" {};
1951
1952 /// Build a
1953 /// [`<textPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath)
1954 /// element.
1955 textPath "http://www.w3.org/2000/svg" {};
1956
1957 // /// Build a
1958 // /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title)
1959 // /// element.
1960 // title "http://www.w3.org/2000/svg" {};
1961
1962 /// Build a
1963 /// [`<tspan>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/tspan)
1964 /// element.
1965 tspan "http://www.w3.org/2000/svg" {};
1966
1967 /// Build a
1968 /// [`<view>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/view)
1969 /// element.
1970 view "http://www.w3.org/2000/svg" {};
1971
1972 // /// Build a
1973 // /// [`<use>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)
1974 // /// element.
1975 r#use ["use", "http://www.w3.org/2000/svg"] {
1976 href: String DEFAULT,
1977 };
1978
1979 // MathML elements
1980
1981 /// Build a
1982 /// [`<annotation>`](https://w3c.github.io/mathml-core/#dfn-annotation)
1983 /// element.
1984 annotation "http://www.w3.org/1998/Math/MathML" {
1985 encoding: String DEFAULT,
1986 };
1987
1988 /// Build a
1989 /// [`<annotation-xml>`](https://w3c.github.io/mathml-core/#dfn-annotation-xml)
1990 /// element.
1991 annotationXml ["annotation-xml", "http://www.w3.org/1998/Math/MathML"] {
1992 encoding: String DEFAULT,
1993 };
1994
1995 /// Build a
1996 /// [`<merror>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/merror)
1997 /// element.
1998 merror "http://www.w3.org/1998/Math/MathML" {};
1999
2000 /// Build a
2001 /// [`<math>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/math)
2002 /// element.
2003 math "http://www.w3.org/1998/Math/MathML" {
2004 display: String DEFAULT,
2005 };
2006
2007 /// Build a
2008 /// [`<mfrac>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac)
2009 /// element.
2010 mfrac "http://www.w3.org/1998/Math/MathML" {
2011 linethickness: usize DEFAULT,
2012 };
2013
2014 /// Build a
2015 /// [`<mi>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi)
2016 /// element.
2017 mi "http://www.w3.org/1998/Math/MathML" {
2018 mathvariant: String DEFAULT,
2019 };
2020
2021 /// Build a
2022 /// [`<mmultiscripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts)
2023 /// element.
2024 mmultiscripts "http://www.w3.org/1998/math/mathml" {};
2025
2026 /// Build a
2027 /// [`<mn>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mn)
2028 /// element.
2029 mn "http://www.w3.org/1998/Math/MathML" {};
2030
2031 /// Build a
2032 /// [`<mo>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo)
2033 /// element.
2034 mo "http://www.w3.org/1998/Math/MathML" {
2035 fence: Bool DEFAULT,
2036 largeop: Bool DEFAULT,
2037 lspace: usize DEFAULT,
2038 maxsize: usize DEFAULT,
2039 minsize: usize DEFAULT,
2040 movablelimits: Bool DEFAULT,
2041 rspace: usize DEFAULT,
2042 separator: Bool DEFAULT,
2043 stretchy: Bool DEFAULT,
2044 symmetric: Bool DEFAULT,
2045 };
2046
2047 /// Build a
2048 /// [`<mover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mover)
2049 /// element.
2050 mover "http://www.w3.org/1998/Math/MathML" {
2051 accent: Bool DEFAULT,
2052 };
2053
2054 /// Build a
2055 /// [`<mpadded>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mpadded)
2056 /// element.
2057 mpadded "http://www.w3.org/1998/Math/MathML" {
2058 depth: usize DEFAULT,
2059 height: usize DEFAULT,
2060 lspace: usize DEFAULT,
2061 voffset: usize DEFAULT,
2062 width: usize DEFAULT,
2063 };
2064
2065 /// Build a
2066 /// [`<mphantom>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mphantom)
2067 /// element.
2068 mphantom "http://www.w3.org/1998/Math/MathML" {};
2069
2070 /// Build a
2071 /// [`<mprescripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mprescripts)
2072 /// element.
2073 mprescripts "http://www.w3.org/1998/Math/MathML" {};
2074
2075 /// Build a
2076 /// [`<mroot>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mroot)
2077 /// element.
2078 mroot "http://www.w3.org/1998/Math/MathML" {};
2079
2080 /// Build a
2081 /// [`<mrow>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mrow)
2082 /// element.
2083 mrow "http://www.w3.org/1998/Math/MathML" {
2084
2085 };
2086
2087 /// Build a
2088 /// [`<ms>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms)
2089 /// element.
2090 ms "http://www.w3.org/1998/Math/MathML" {
2091 lquote: String DEFAULT,
2092 rquote: String DEFAULT,
2093 };
2094
2095 /// Build a
2096 /// [`<mspace>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mspace)
2097 /// element.
2098 mspace "http://www.w3.org/1998/Math/MathML" {
2099 depth: usize DEFAULT,
2100 height: usize DEFAULT,
2101 width: usize DEFAULT,
2102 };
2103
2104 /// Build a
2105 /// [`<msqrt>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msqrt)
2106 /// element.
2107 msqrt "http://www.w3.org/1998/Math/MathML" {};
2108
2109 /// Build a
2110 /// [`<mstyle>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle)
2111 /// element.
2112 mstyle "http://www.w3.org/1998/Math/MathML" {};
2113
2114 /// Build a
2115 /// [`<msub>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub)
2116 /// element.
2117 msub "http://www.w3.org/1998/Math/MathML" {};
2118
2119 /// Build a
2120 /// [`<msubsup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup)
2121 /// element.
2122 msubsup "http://www.w3.org/1998/Math/MathML" {};
2123
2124 /// Build a
2125 /// [`<msup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup)
2126 /// element.
2127 msup "http://www.w3.org/1998/Math/MathML" {};
2128
2129 /// Build a
2130 /// [`<mtable>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable)
2131 /// element.
2132 mtable "http://www.w3.org/1998/Math/MathML" {};
2133
2134 /// Build a
2135 /// [`<mtd>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd)
2136 /// element.
2137 mtd "http://www.w3.org/1998/Math/MathML" {
2138 columnspan: usize DEFAULT,
2139 rowspan: usize DEFAULT,
2140 };
2141
2142 /// Build a
2143 /// [`<mtext>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtext)
2144 /// element.
2145 mtext "http://www.w3.org/1998/Math/MathML" {};
2146
2147 /// Build a
2148 /// [`<mtr>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr)
2149 /// element.
2150 mtr "http://www.w3.org/1998/Math/MathML" {};
2151
2152 /// Build a
2153 /// [`<munder>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munder)
2154 /// element.
2155 munder "http://www.w3.org/1998/Math/MathML" {
2156 accentunder: Bool DEFAULT,
2157 };
2158
2159 /// Build a
2160 /// [`<munderover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munderover)
2161 /// element.
2162 munderover "http://www.w3.org/1998/Math/MathML" {
2163 accent: Bool DEFAULT,
2164 accentunder: Bool DEFAULT,
2165 };
2166
2167 /// Build a
2168 /// [`<semantics>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics)
2169 /// element.
2170 semantics "http://www.w3.org/1998/Math/MathML" {
2171 encoding: String DEFAULT,
2172 };
2173}