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