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