1
0

elements.rs 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592
  1. #![allow(non_upper_case_globals)]
  2. use crate::{GlobalAttributes, SvgAttributes};
  3. use dioxus_rsx::HotReloadingContext;
  4. pub type AttributeDiscription = (&'static str, Option<&'static str>, bool);
  5. macro_rules! impl_attribute {
  6. (
  7. $(#[$attr_method:meta])*
  8. $fil:ident: $vil:ident (DEFAULT),
  9. ) => {
  10. pub const $fil: AttributeDiscription = (stringify!($fil), None, false);
  11. };
  12. (
  13. $(#[$attr_method:meta])*
  14. $fil:ident: $vil:ident ($name:literal),
  15. ) => {
  16. pub const $fil: AttributeDiscription = ($name, None, false);
  17. };
  18. (
  19. $(#[$attr_method:meta])*
  20. $fil:ident: $vil:ident (volatile),
  21. ) => {
  22. pub const $fil: AttributeDiscription = (stringify!($fil), None, true);
  23. };
  24. (
  25. $(#[$attr_method:meta])*
  26. $fil:ident: $vil:ident (in $ns:ident),
  27. ) => {
  28. pub const $fil: AttributeDiscription = (stringify!($fil), Some(stringify!($ns)), false)
  29. };
  30. (
  31. $(#[$attr_method:meta])*
  32. $fil:ident: $vil:ident (in $ns:ident : volatile),
  33. ) => {
  34. pub const $fil: AttributeDiscription = (stringify!($fil), Some(stringify!($ns)), true)
  35. };
  36. }
  37. macro_rules! impl_attribute_match {
  38. (
  39. $attr:ident $fil:ident: $vil:ident (DEFAULT),
  40. ) => {
  41. if $attr == stringify!($fil) {
  42. return Some((stringify!($fil), None));
  43. }
  44. };
  45. (
  46. $attr:ident $fil:ident: $vil:ident (volatile),
  47. ) => {
  48. if $attr == stringify!($fil) {
  49. return Some((stringify!($fil), None));
  50. }
  51. };
  52. (
  53. $attr:ident $fil:ident: $vil:ident ($name:literal),
  54. ) => {
  55. if $attr == stringify!($fil) {
  56. return Some(($name, None));
  57. }
  58. };
  59. (
  60. $attr:ident $fil:ident: $vil:ident (in $ns:ident),
  61. ) => {
  62. if $attr == stringify!($fil) {
  63. return Some((stringify!(fil), Some(stringify!(ns))));
  64. }
  65. };
  66. }
  67. macro_rules! impl_element {
  68. (
  69. $(#[$attr:meta])*
  70. $name:ident None {
  71. $(
  72. $(#[$attr_method:meta])*
  73. $fil:ident: $vil:ident $extra:tt,
  74. )*
  75. }
  76. ) => {
  77. #[allow(non_camel_case_types)]
  78. $(#[$attr])*
  79. pub struct $name;
  80. impl $name {
  81. pub const TAG_NAME: &'static str = stringify!($name);
  82. pub const NAME_SPACE: Option<&'static str> = None;
  83. $(
  84. impl_attribute!(
  85. $(#[$attr_method])*
  86. $fil: $vil ($extra),
  87. );
  88. )*
  89. }
  90. impl GlobalAttributes for $name {}
  91. };
  92. (
  93. $(#[$attr:meta])*
  94. $name:ident $namespace:tt {
  95. $(
  96. $(#[$attr_method:meta])*
  97. $fil:ident: $vil:ident $extra:tt,
  98. )*
  99. }
  100. ) => {
  101. #[allow(non_camel_case_types)]
  102. $(#[$attr])*
  103. pub struct $name;
  104. impl SvgAttributes for $name {}
  105. impl $name {
  106. pub const TAG_NAME: &'static str = stringify!($name);
  107. pub const NAME_SPACE: Option<&'static str> = Some($namespace);
  108. $(
  109. impl_attribute!(
  110. $(#[$attr_method])*
  111. $fil: $vil in $namespace $extra
  112. );
  113. )*
  114. }
  115. }
  116. }
  117. macro_rules! impl_element_match {
  118. (
  119. $el:ident $name:ident None {
  120. $(
  121. $fil:ident: $vil:ident $extra:tt,
  122. )*
  123. }
  124. ) => {
  125. if $el == stringify!($name) {
  126. return Some((stringify!($name), None));
  127. }
  128. };
  129. (
  130. $el:ident $name:ident $namespace:tt {
  131. $(
  132. $fil:ident: $vil:ident $extra:tt,
  133. )*
  134. }
  135. ) => {
  136. if $el == stringify!($name) {
  137. return Some((stringify!($name), Some(stringify!($namespace))));
  138. }
  139. };
  140. }
  141. macro_rules! impl_element_match_attributes {
  142. (
  143. $el:ident $attr:ident $name:ident None {
  144. $(
  145. $fil:ident: $vil:ident $extra:tt,
  146. )*
  147. }
  148. ) => {
  149. if $el == stringify!($name) {
  150. $(
  151. impl_attribute_match!(
  152. $attr $fil: $vil ($extra),
  153. );
  154. )*
  155. }
  156. };
  157. (
  158. $el:ident $attr:ident $name:ident $namespace:tt {
  159. $(
  160. $fil:ident: $vil:ident $extra:tt,
  161. )*
  162. }
  163. ) => {
  164. if $el == stringify!($name) {
  165. $(
  166. impl_attribute_match!(
  167. $attr $fil: $vil in $namespace $extra
  168. );
  169. )*
  170. }
  171. }
  172. }
  173. macro_rules! builder_constructors {
  174. (
  175. $(
  176. $(#[$attr:meta])*
  177. $name:ident $namespace:tt {
  178. $(
  179. $(#[$attr_method:meta])*
  180. $fil:ident: $vil:ident $extra:tt,
  181. )*
  182. };
  183. )*
  184. ) => {
  185. pub struct Html;
  186. impl HotReloadingContext for Html {
  187. fn map_attribute(element: &str, attribute: &str) -> Option<(&'static str, Option<&'static str>)> {
  188. $(
  189. impl_element_match_attributes!(
  190. element attribute $name $namespace {
  191. $(
  192. $fil: $vil $extra,
  193. )*
  194. }
  195. );
  196. )*
  197. None
  198. }
  199. fn map_element(element: &str) -> Option<(&'static str, Option<&'static str>)> {
  200. $(
  201. impl_element_match!(
  202. element $name $namespace {
  203. $(
  204. $fil: $vil $extra,
  205. )*
  206. }
  207. );
  208. )*
  209. None
  210. }
  211. }
  212. $(
  213. impl_element!(
  214. $(#[$attr])*
  215. $name $namespace {
  216. $(
  217. $(#[$attr_method])*
  218. $fil: $vil $extra,
  219. )*
  220. }
  221. );
  222. )*
  223. };
  224. }
  225. // Organized in the same order as
  226. // https://developer.mozilla.org/en-US/docs/Web/HTML/Element
  227. //
  228. // Does not include obsolete elements.
  229. //
  230. // This namespace represents a collection of modern HTML-5 compatiable elements.
  231. //
  232. // This list does not include obsolete, deprecated, experimental, or poorly supported elements.
  233. builder_constructors! {
  234. // Document metadata
  235. /// Build a
  236. /// [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base)
  237. /// element.
  238. ///
  239. base None {
  240. href: Uri DEFAULT,
  241. target: Target DEFAULT,
  242. };
  243. /// Build a
  244. /// [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)
  245. /// element.
  246. head None {};
  247. /// Build a
  248. /// [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)
  249. /// element.
  250. link None {
  251. // as: Mime,
  252. crossorigin: CrossOrigin DEFAULT,
  253. href: Uri DEFAULT,
  254. hreflang: LanguageTag DEFAULT,
  255. media: String DEFAULT, // FIXME media query
  256. rel: LinkType DEFAULT,
  257. sizes: String DEFAULT, // FIXME
  258. title: String DEFAULT, // FIXME
  259. r#type: Mime DEFAULT,
  260. integrity: String DEFAULT,
  261. };
  262. /// Build a
  263. /// [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)
  264. /// element.
  265. meta None {
  266. charset: String DEFAULT, // FIXME IANA standard names
  267. content: String DEFAULT,
  268. http_equiv: HTTPEquiv DEFAULT,
  269. name: Metadata DEFAULT,
  270. };
  271. /// Build a
  272. /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style)
  273. /// element.
  274. style None {
  275. r#type: Mime DEFAULT,
  276. media: String DEFAULT, // FIXME media query
  277. nonce: Nonce DEFAULT,
  278. title: String DEFAULT, // FIXME
  279. };
  280. /// Build a
  281. /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)
  282. /// element.
  283. title None { };
  284. // Sectioning root
  285. /// Build a
  286. /// [`<body>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)
  287. /// element.
  288. body None {};
  289. // ------------------
  290. // Content sectioning
  291. // ------------------
  292. /// Build a
  293. /// [`<address>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address)
  294. /// element.
  295. address None {};
  296. /// Build a
  297. /// [`<article>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article)
  298. /// element.
  299. article None {};
  300. /// Build a
  301. /// [`<aside>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside)
  302. /// element.
  303. aside None {};
  304. /// Build a
  305. /// [`<footer>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer)
  306. /// element.
  307. footer None {};
  308. /// Build a
  309. /// [`<header>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header)
  310. /// element.
  311. header None {};
  312. /// Build a
  313. /// [`<h1>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h1)
  314. /// element.
  315. ///
  316. /// # About
  317. /// - The HTML `<h1>` element is found within the `<body>` tag.
  318. /// - Headings can range from `<h1>` to `<h6>`.
  319. /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
  320. /// - The `<h1>` heading is the first heading in the document.
  321. /// - The `<h1>` heading is usually a large bolded font.
  322. ///
  323. /// # Usage
  324. ///
  325. /// ```rust, ignore
  326. /// html!(<h1> A header element </h1>)
  327. /// rsx!(h1 { "A header element" })
  328. /// LazyNodes::new(|f| f.el(h1).children([f.text("A header element")]).finish())
  329. /// ```
  330. h1 None {};
  331. /// Build a
  332. /// [`<h2>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h2)
  333. /// element.
  334. ///
  335. /// # About
  336. /// - The HTML `<h2>` element is found within the `<body>` tag.
  337. /// - Headings can range from `<h1>` to `<h6>`.
  338. /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
  339. /// - The `<h2>` heading is the second heading in the document.
  340. /// - The `<h2>` heading is usually a large bolded font.
  341. ///
  342. /// # Usage
  343. /// ```rust, ignore
  344. /// html!(<h2> A header element </h2>)
  345. /// rsx!(h2 { "A header element" })
  346. /// LazyNodes::new(|f| f.el(h2).children([f.text("A header element")]).finish())
  347. /// ```
  348. h2 None {};
  349. /// Build a
  350. /// [`<h3>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h3)
  351. /// element.
  352. ///
  353. /// # About
  354. /// - The HTML <h1> element is found within the <body> tag.
  355. /// - Headings can range from <h1> to <h6>.
  356. /// - The most important heading is <h1> and the least important heading is <h6>.
  357. /// - The <h1> heading is the first heading in the document.
  358. /// - The <h1> heading is usually a large bolded font.
  359. h3 None {};
  360. /// Build a
  361. /// [`<h4>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h4)
  362. /// element.
  363. h4 None {};
  364. /// Build a
  365. /// [`<h5>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h5)
  366. /// element.
  367. h5 None {};
  368. /// Build a
  369. /// [`<h6>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h6)
  370. /// element.
  371. h6 None {};
  372. /// Build a
  373. /// [`<main>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main)
  374. /// element.
  375. main None {};
  376. /// Build a
  377. /// [`<nav>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav)
  378. /// element.
  379. nav None {};
  380. /// Build a
  381. /// [`<section>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section)
  382. /// element.
  383. section None {};
  384. // Text content
  385. /// Build a
  386. /// [`<blockquote>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote)
  387. /// element.
  388. blockquote None {
  389. cite: Uri DEFAULT,
  390. };
  391. /// Build a
  392. /// [`<dd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd)
  393. /// element.
  394. dd None {};
  395. /// Build a
  396. /// [`<div>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div)
  397. /// element.
  398. ///
  399. /// Part of the HTML namespace. Only works in HTML-compatible renderers
  400. ///
  401. /// ## Definition and Usage
  402. /// - The <div> tag defines a division or a section in an HTML document.
  403. /// - The <div> tag is used as a container for HTML elements - which is then styled with CSS or manipulated with JavaScript.
  404. /// - The <div> tag is easily styled by using the class or id attribute.
  405. /// - Any sort of content can be put inside the <div> tag!
  406. ///
  407. /// Note: By default, browsers always place a line break before and after the <div> element.
  408. ///
  409. /// ## Usage
  410. /// ```rust, ignore
  411. /// html!(<div> A header element </div>)
  412. /// rsx!(div { "A header element" })
  413. /// LazyNodes::new(|f| f.element(div, &[], &[], &[], None))
  414. /// ```
  415. ///
  416. /// ## References:
  417. /// - <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div>
  418. /// - <https://www.w3schools.com/tags/tag_div.asp>
  419. div None {};
  420. /// Build a
  421. /// [`<dl>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl)
  422. /// element.
  423. dl None {};
  424. /// Build a
  425. /// [`<dt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt)
  426. /// element.
  427. dt None {};
  428. /// Build a
  429. /// [`<figcaption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption)
  430. /// element.
  431. figcaption None {};
  432. /// Build a
  433. /// [`<figure>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure)
  434. /// element.
  435. figure None {};
  436. /// Build a
  437. /// [`<hr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr)
  438. /// element.
  439. hr None {};
  440. /// Build a
  441. /// [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li)
  442. /// element.
  443. li None {
  444. value: isize DEFAULT,
  445. };
  446. /// Build a
  447. /// [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol)
  448. /// element.
  449. ol None {
  450. reversed: Bool DEFAULT,
  451. start: isize DEFAULT,
  452. r#type: OrderedListType DEFAULT,
  453. };
  454. /// Build a
  455. /// [`<p>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p)
  456. /// element.
  457. p None {};
  458. /// Build a
  459. /// [`<pre>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre)
  460. /// element.
  461. pre None {};
  462. /// Build a
  463. /// [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul)
  464. /// element.
  465. ul None {};
  466. // Inline text semantics
  467. /// Build a
  468. /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a)
  469. /// element.
  470. a None {
  471. download: String DEFAULT,
  472. href: Uri DEFAULT,
  473. hreflang: LanguageTag DEFAULT,
  474. target: Target DEFAULT,
  475. r#type: Mime DEFAULT,
  476. // ping: SpacedList<Uri>,
  477. // rel: SpacedList<LinkType>,
  478. ping: SpacedList DEFAULT,
  479. rel: SpacedList DEFAULT,
  480. };
  481. /// Build a
  482. /// [`<abbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr)
  483. /// element.
  484. abbr None {};
  485. /// Build a
  486. /// [`<b>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b)
  487. /// element.
  488. b None {};
  489. /// Build a
  490. /// [`<bdi>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi)
  491. /// element.
  492. bdi None {};
  493. /// Build a
  494. /// [`<bdo>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo)
  495. /// element.
  496. bdo None {};
  497. /// Build a
  498. /// [`<br>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br)
  499. /// element.
  500. br None {};
  501. /// Build a
  502. /// [`<cite>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite)
  503. /// element.
  504. cite None {};
  505. /// Build a
  506. /// [`<code>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code)
  507. /// element.
  508. code None {
  509. language: String DEFAULT,
  510. };
  511. /// Build a
  512. /// [`<data>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data)
  513. /// element.
  514. data None {
  515. value: String DEFAULT,
  516. };
  517. /// Build a
  518. /// [`<dfn>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn)
  519. /// element.
  520. dfn None {};
  521. /// Build a
  522. /// [`<em>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em)
  523. /// element.
  524. em None {};
  525. /// Build a
  526. /// [`<i>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i)
  527. /// element.
  528. i None {};
  529. /// Build a
  530. /// [`<kbd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd)
  531. /// element.
  532. kbd None {};
  533. /// Build a
  534. /// [`<mark>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark)
  535. /// element.
  536. mark None {};
  537. /// Build a
  538. /// [`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu)
  539. /// element.
  540. menu None {};
  541. /// Build a
  542. /// [`<q>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q)
  543. /// element.
  544. q None {
  545. cite: Uri DEFAULT,
  546. };
  547. /// Build a
  548. /// [`<rp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp)
  549. /// element.
  550. rp None {};
  551. /// Build a
  552. /// [`<rt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt)
  553. /// element.
  554. rt None {};
  555. /// Build a
  556. /// [`<ruby>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby)
  557. /// element.
  558. ruby None {};
  559. /// Build a
  560. /// [`<s>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s)
  561. /// element.
  562. s None {};
  563. /// Build a
  564. /// [`<samp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp)
  565. /// element.
  566. samp None {};
  567. /// Build a
  568. /// [`<small>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small)
  569. /// element.
  570. small None {};
  571. /// Build a
  572. /// [`<span>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span)
  573. /// element.
  574. span None {};
  575. /// Build a
  576. /// [`<strong>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong)
  577. /// element.
  578. strong None {};
  579. /// Build a
  580. /// [`<sub>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub)
  581. /// element.
  582. sub None {};
  583. /// Build a
  584. /// [`<sup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup)
  585. /// element.
  586. sup None {};
  587. /// Build a
  588. /// [`<time>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time)
  589. /// element.
  590. time None {
  591. datetime: Datetime DEFAULT,
  592. };
  593. /// Build a
  594. /// [`<u>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u)
  595. /// element.
  596. u None {};
  597. /// Build a
  598. /// [`<var>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var)
  599. /// element.
  600. var None {};
  601. /// Build a
  602. /// [`<wbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr)
  603. /// element.
  604. wbr None {};
  605. // Image and multimedia
  606. /// Build a
  607. /// [`<area>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area)
  608. /// element.
  609. area None {
  610. alt: String DEFAULT,
  611. coords: String DEFAULT, // TODO could perhaps be validated
  612. download: Bool DEFAULT,
  613. href: Uri DEFAULT,
  614. hreflang: LanguageTag DEFAULT,
  615. shape: AreaShape DEFAULT,
  616. target: Target DEFAULT,
  617. // ping: SpacedList<Uri>,
  618. // rel: SpacedSet<LinkType>,
  619. };
  620. /// Build a
  621. /// [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio)
  622. /// element.
  623. audio None {
  624. autoplay: Bool DEFAULT,
  625. controls: Bool DEFAULT,
  626. crossorigin: CrossOrigin DEFAULT,
  627. muted: Bool DEFAULT,
  628. preload: Preload DEFAULT,
  629. src: Uri DEFAULT,
  630. r#loop: Bool DEFAULT,
  631. };
  632. /// Build a
  633. /// [`<img>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img)
  634. /// element.
  635. img None {
  636. alt: String DEFAULT,
  637. crossorigin: CrossOrigin DEFAULT,
  638. decoding: ImageDecoding DEFAULT,
  639. height: usize DEFAULT,
  640. ismap: Bool DEFAULT,
  641. src: Uri DEFAULT,
  642. srcset: String DEFAULT, // FIXME this is much more complicated
  643. usemap: String DEFAULT, // FIXME should be a fragment starting with '#'
  644. width: usize DEFAULT,
  645. referrerpolicy: String DEFAULT,
  646. // sizes: SpacedList<String>, // FIXME it's not really just a string
  647. };
  648. /// Build a
  649. /// [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map)
  650. /// element.
  651. map None {
  652. name: Id DEFAULT,
  653. };
  654. /// Build a
  655. /// [`<track>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track)
  656. /// element.
  657. track None {
  658. default: Bool DEFAULT,
  659. kind: VideoKind DEFAULT,
  660. label: String DEFAULT,
  661. src: Uri DEFAULT,
  662. srclang: LanguageTag DEFAULT,
  663. };
  664. /// Build a
  665. /// [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video)
  666. /// element.
  667. video None {
  668. autoplay: Bool DEFAULT,
  669. controls: Bool DEFAULT,
  670. crossorigin: CrossOrigin DEFAULT,
  671. height: usize DEFAULT,
  672. r#loop: Bool DEFAULT,
  673. muted: Bool DEFAULT,
  674. preload: Preload DEFAULT,
  675. playsinline: Bool DEFAULT,
  676. poster: Uri DEFAULT,
  677. src: Uri DEFAULT,
  678. width: usize DEFAULT,
  679. };
  680. // Embedded content
  681. /// Build a
  682. /// [`<embed>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed)
  683. /// element.
  684. embed None {
  685. height: usize DEFAULT,
  686. src: Uri DEFAULT,
  687. r#type: Mime DEFAULT,
  688. width: usize DEFAULT,
  689. };
  690. /// Build a
  691. /// [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)
  692. /// element.
  693. iframe None {
  694. allow: FeaturePolicy DEFAULT,
  695. allowfullscreen: Bool DEFAULT,
  696. allowpaymentrequest: Bool DEFAULT,
  697. height: usize DEFAULT,
  698. name: Id DEFAULT,
  699. referrerpolicy: ReferrerPolicy DEFAULT,
  700. src: Uri DEFAULT,
  701. srcdoc: Uri DEFAULT,
  702. width: usize DEFAULT,
  703. marginWidth: String DEFAULT,
  704. align: String DEFAULT,
  705. longdesc: String DEFAULT,
  706. scrolling: String DEFAULT,
  707. marginHeight: String DEFAULT,
  708. frameBorder: String DEFAULT,
  709. // sandbox: SpacedSet<Sandbox>,
  710. };
  711. /// Build a
  712. /// [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object)
  713. /// element.
  714. object None {
  715. data: Uri DEFAULT,
  716. form: Id DEFAULT,
  717. height: usize DEFAULT,
  718. name: Id DEFAULT,
  719. r#type: Mime DEFAULT,
  720. typemustmatch: Bool DEFAULT,
  721. usemap: String DEFAULT, // TODO should be a fragment starting with '#'
  722. width: usize DEFAULT,
  723. };
  724. /// Build a
  725. /// [`<param>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param)
  726. /// element.
  727. param None {
  728. name: String DEFAULT,
  729. value: String DEFAULT,
  730. };
  731. /// Build a
  732. /// [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture)
  733. /// element.
  734. picture None {};
  735. /// Build a
  736. /// [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source)
  737. /// element.
  738. source None {
  739. src: Uri DEFAULT,
  740. r#type: Mime DEFAULT,
  741. };
  742. // Scripting
  743. /// Build a
  744. /// [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas)
  745. /// element.
  746. canvas None {
  747. height: usize DEFAULT,
  748. width: usize DEFAULT,
  749. };
  750. /// Build a
  751. /// [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript)
  752. /// element.
  753. noscript None {};
  754. /// Build a
  755. /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)
  756. /// element.
  757. ///
  758. /// The [`script`] HTML element is used to embed executable code or data; this is typically used to embed or refer to
  759. /// JavaScript code. The [`script`] element can also be used with other languages, such as WebGL's GLSL shader
  760. /// programming language and JSON.
  761. script None {
  762. /// Normal script elements pass minimal information to the window.onerror for scripts which do not pass the
  763. /// standard CORS checks. To allow error logging for sites which use a separate domain for static media, use
  764. /// this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments.
  765. crossorigin: CrossOrigin DEFAULT,
  766. /// This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the
  767. /// document has been parsed, but before firing DOMContentLoaded.
  768. ///
  769. /// Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has
  770. /// loaded and finished evaluating.
  771. ///
  772. /// ----
  773. /// ### Warning:
  774. ///
  775. /// This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this
  776. /// case it would have no effect.
  777. ///
  778. /// ----
  779. ///
  780. /// The defer attribute has no effect on module scripts — they defer by default.
  781. /// Scripts with the defer attribute will execute in the order in which they appear in the document.
  782. ///
  783. /// This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and
  784. /// evaluate scripts before continuing to parse. async has a similar effect in this case.
  785. defer: Bool DEFAULT,
  786. integrity: Integrity DEFAULT,
  787. nomodule: Bool DEFAULT,
  788. nonce: Nonce DEFAULT,
  789. src: Uri DEFAULT,
  790. text: String DEFAULT,
  791. // r#async: Bool,
  792. // r#type: String, // TODO could be an enum
  793. r#type: String "type",
  794. r#script: String "script",
  795. };
  796. // Demarcating edits
  797. /// Build a
  798. /// [`<del>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del)
  799. /// element.
  800. del None {
  801. cite: Uri DEFAULT,
  802. datetime: Datetime DEFAULT,
  803. };
  804. /// Build a
  805. /// [`<ins>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins)
  806. /// element.
  807. ins None {
  808. cite: Uri DEFAULT,
  809. datetime: Datetime DEFAULT,
  810. };
  811. // Table content
  812. /// Build a
  813. /// [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption)
  814. /// element.
  815. caption None {};
  816. /// Build a
  817. /// [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col)
  818. /// element.
  819. col None {
  820. span: usize DEFAULT,
  821. };
  822. /// Build a
  823. /// [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup)
  824. /// element.
  825. colgroup None {
  826. span: usize DEFAULT,
  827. };
  828. /// Build a
  829. /// [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table)
  830. /// element.
  831. table None {};
  832. /// Build a
  833. /// [`<tbody>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody)
  834. /// element.
  835. tbody None {};
  836. /// Build a
  837. /// [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td)
  838. /// element.
  839. td None {
  840. colspan: usize DEFAULT,
  841. rowspan: usize DEFAULT,
  842. // headers: SpacedSet<Id>,
  843. };
  844. /// Build a
  845. /// [`<tfoot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot)
  846. /// element.
  847. tfoot None {};
  848. /// Build a
  849. /// [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th)
  850. /// element.
  851. th None {
  852. abbr: String DEFAULT,
  853. colspan: usize DEFAULT,
  854. rowspan: usize DEFAULT,
  855. scope: TableHeaderScope DEFAULT,
  856. // headers: SpacedSet<Id>,
  857. };
  858. /// Build a
  859. /// [`<thead>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead)
  860. /// element.
  861. thead None {};
  862. /// Build a
  863. /// [`<tr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr)
  864. /// element.
  865. tr None {};
  866. // Forms
  867. /// Build a
  868. /// [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button)
  869. /// element.
  870. button None {
  871. autofocus: Bool DEFAULT,
  872. disabled: Bool DEFAULT,
  873. form: Id DEFAULT,
  874. formaction: Uri DEFAULT,
  875. formenctype: FormEncodingType DEFAULT,
  876. formmethod: FormMethod DEFAULT,
  877. formnovalidate: Bool DEFAULT,
  878. formtarget: Target DEFAULT,
  879. name: Id DEFAULT,
  880. value: String DEFAULT,
  881. r#type: String "type",
  882. };
  883. /// Build a
  884. /// [`<datalist>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist)
  885. /// element.
  886. datalist None {};
  887. /// Build a
  888. /// [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
  889. /// element.
  890. fieldset None {};
  891. /// Build a
  892. /// [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)
  893. /// element.
  894. form None {
  895. // accept-charset: SpacedList<CharacterEncoding>,
  896. action: Uri DEFAULT,
  897. autocomplete: OnOff DEFAULT,
  898. enctype: FormEncodingType DEFAULT,
  899. method: FormMethod DEFAULT,
  900. name: Id DEFAULT,
  901. novalidate: Bool DEFAULT,
  902. target: Target DEFAULT,
  903. };
  904. /// Build a
  905. /// [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
  906. /// element.
  907. input None {
  908. accept: String DEFAULT,
  909. alt: String DEFAULT,
  910. autocomplete: String DEFAULT,
  911. autofocus: Bool DEFAULT,
  912. capture: String DEFAULT,
  913. checked: Bool DEFAULT,
  914. disabled: Bool DEFAULT,
  915. form: Id DEFAULT,
  916. formaction: Uri DEFAULT,
  917. formenctype: FormEncodingType DEFAULT,
  918. formmethod: FormDialogMethod DEFAULT,
  919. formnovalidate: Bool DEFAULT,
  920. formtarget: Target DEFAULT,
  921. height: isize DEFAULT,
  922. list: Id DEFAULT,
  923. max: String DEFAULT,
  924. maxlength: usize DEFAULT,
  925. min: String DEFAULT,
  926. minlength: usize DEFAULT,
  927. multiple: Bool DEFAULT,
  928. name: Id DEFAULT,
  929. pattern: String DEFAULT,
  930. placeholder: String DEFAULT,
  931. readonly: Bool DEFAULT,
  932. required: Bool DEFAULT,
  933. size: usize DEFAULT,
  934. spellcheck: Bool DEFAULT,
  935. src: Uri DEFAULT,
  936. step: String DEFAULT,
  937. tabindex: usize DEFAULT,
  938. width: isize DEFAULT,
  939. /// The type of input
  940. ///
  941. /// Here are the different input types you can use in HTML:
  942. ///
  943. /// - `button`
  944. /// - `checkbox`
  945. /// - `color`
  946. /// - `date`
  947. /// - `datetime-local`
  948. /// - `email`
  949. /// - `file`
  950. /// - `hidden`
  951. /// - `image`
  952. /// - `month`
  953. /// - `number`
  954. /// - `password`
  955. /// - `radio`
  956. /// - `range`
  957. /// - `reset`
  958. /// - `search`
  959. /// - `submit`
  960. /// - `tel`
  961. /// - `text`
  962. /// - `time`
  963. /// - `url`
  964. /// - `week`
  965. r#type: InputType "type",
  966. // value: String,
  967. value: String volatile,
  968. };
  969. /// Build a
  970. /// [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label)
  971. /// element.
  972. label None {
  973. form: Id DEFAULT,
  974. r#for: Id "for",
  975. };
  976. /// Build a
  977. /// [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend)
  978. /// element.
  979. legend None {};
  980. /// Build a
  981. /// [`<meter>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter)
  982. /// element.
  983. meter None {
  984. value: isize DEFAULT,
  985. min: isize DEFAULT,
  986. max: isize DEFAULT,
  987. low: isize DEFAULT,
  988. high: isize DEFAULT,
  989. optimum: isize DEFAULT,
  990. form: Id DEFAULT,
  991. };
  992. /// Build a
  993. /// [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup)
  994. /// element.
  995. optgroup None {
  996. disabled: Bool DEFAULT,
  997. label: String DEFAULT,
  998. };
  999. /// Build a
  1000. /// [`<option>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
  1001. /// element.
  1002. option None {
  1003. disabled: Bool DEFAULT,
  1004. label: String DEFAULT,
  1005. value: String DEFAULT,
  1006. selected: Bool volatile,
  1007. };
  1008. /// Build a
  1009. /// [`<output>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output)
  1010. /// element.
  1011. output None {
  1012. form: Id DEFAULT,
  1013. name: Id DEFAULT,
  1014. // r#for: SpacedSet<Id>,
  1015. };
  1016. /// Build a
  1017. /// [`<progress>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress)
  1018. /// element.
  1019. progress None {
  1020. max: f64 DEFAULT,
  1021. value: f64 DEFAULT,
  1022. };
  1023. /// Build a
  1024. /// [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
  1025. /// element.
  1026. select None {
  1027. // defined below
  1028. // value: String,
  1029. autocomplete: String DEFAULT,
  1030. autofocus: Bool DEFAULT,
  1031. disabled: Bool DEFAULT,
  1032. form: Id DEFAULT,
  1033. multiple: Bool DEFAULT,
  1034. name: Id DEFAULT,
  1035. required: Bool DEFAULT,
  1036. size: usize DEFAULT,
  1037. value: String volatile,
  1038. };
  1039. /// Build a
  1040. /// [`<textarea>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
  1041. /// element.
  1042. textarea None {
  1043. autocomplete: OnOff DEFAULT,
  1044. autofocus: Bool DEFAULT,
  1045. cols: usize DEFAULT,
  1046. disabled: Bool DEFAULT,
  1047. form: Id DEFAULT,
  1048. maxlength: usize DEFAULT,
  1049. minlength: usize DEFAULT,
  1050. name: Id DEFAULT,
  1051. placeholder: String DEFAULT,
  1052. readonly: Bool DEFAULT,
  1053. required: Bool DEFAULT,
  1054. rows: usize DEFAULT,
  1055. spellcheck: BoolOrDefault DEFAULT,
  1056. wrap: Wrap DEFAULT,
  1057. value: Strign volatile,
  1058. };
  1059. // Interactive elements
  1060. /// Build a
  1061. /// [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
  1062. /// element.
  1063. details None {
  1064. open: Bool DEFAULT,
  1065. };
  1066. /// Build dialog
  1067. /// [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
  1068. /// element.
  1069. dialog None {
  1070. open: Bool DEFAULT,
  1071. };
  1072. /// Build a
  1073. /// [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
  1074. /// element.
  1075. summary None {};
  1076. // Web components
  1077. /// Build a
  1078. /// [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)
  1079. /// element.
  1080. slot None {};
  1081. /// Build a
  1082. /// [`<template>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)
  1083. /// element.
  1084. template None {};
  1085. // SVG components
  1086. /// Build a
  1087. /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
  1088. /// element.
  1089. svg "http://www.w3.org/2000/svg" { };
  1090. // /// Build a
  1091. // /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a)
  1092. // /// element.
  1093. // a "http://www.w3.org/2000/svg" {};
  1094. /// Build a
  1095. /// [`<animate>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate)
  1096. /// element.
  1097. animate "http://www.w3.org/2000/svg" {};
  1098. /// Build a
  1099. /// [`<animateMotion>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateMotion)
  1100. /// element.
  1101. animateMotion "http://www.w3.org/2000/svg" {};
  1102. /// Build a
  1103. /// [`<animateTransform>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform)
  1104. /// element.
  1105. animateTransform "http://www.w3.org/2000/svg" {};
  1106. /// Build a
  1107. /// [`<circle>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle)
  1108. /// element.
  1109. circle "http://www.w3.org/2000/svg" {};
  1110. /// Build a
  1111. /// [`<clipPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)
  1112. /// element.
  1113. clipPath "http://www.w3.org/2000/svg" {};
  1114. /// Build a
  1115. /// [`<defs>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs)
  1116. /// element.
  1117. defs "http://www.w3.org/2000/svg" {};
  1118. /// Build a
  1119. /// [`<desc>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc)
  1120. /// element.
  1121. desc "http://www.w3.org/2000/svg" {};
  1122. /// Build a
  1123. /// [`<discard>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/discard)
  1124. /// element.
  1125. discard "http://www.w3.org/2000/svg" {};
  1126. /// Build a
  1127. /// [`<ellipse>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse)
  1128. /// element.
  1129. ellipse "http://www.w3.org/2000/svg" {};
  1130. /// Build a
  1131. /// [`<feBlend>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feBlend)
  1132. /// element.
  1133. feBlend "http://www.w3.org/2000/svg" {};
  1134. /// Build a
  1135. /// [`<feColorMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix)
  1136. /// element.
  1137. feColorMatrix "http://www.w3.org/2000/svg" {};
  1138. /// Build a
  1139. /// [`<feComponentTransfer>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComponentTransfer)
  1140. /// element.
  1141. feComponentTransfer "http://www.w3.org/2000/svg" {};
  1142. /// Build a
  1143. /// [`<feComposite>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComposite)
  1144. /// element.
  1145. feComposite "http://www.w3.org/2000/svg" {};
  1146. /// Build a
  1147. /// [`<feConvolveMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feConvolveMatrix)
  1148. /// element.
  1149. feConvolveMatrix "http://www.w3.org/2000/svg" {};
  1150. /// Build a
  1151. /// [`<feDiffuseLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting)
  1152. /// element.
  1153. feDiffuseLighting "http://www.w3.org/2000/svg" {};
  1154. /// Build a
  1155. /// [`<feDisplacementMap>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap)
  1156. /// element.
  1157. feDisplacementMap "http://www.w3.org/2000/svg" {};
  1158. /// Build a
  1159. /// [`<feDistantLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDistantLight)
  1160. /// element.
  1161. feDistantLight "http://www.w3.org/2000/svg" {};
  1162. /// Build a
  1163. /// [`<feDropShadow>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDropShadow)
  1164. /// element.
  1165. feDropShadow "http://www.w3.org/2000/svg" {};
  1166. /// Build a
  1167. /// [`<feFlood>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFlood)
  1168. /// element.
  1169. feFlood "http://www.w3.org/2000/svg" {};
  1170. /// Build a
  1171. /// [`<feFuncA>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncA)
  1172. /// element.
  1173. feFuncA "http://www.w3.org/2000/svg" {};
  1174. /// Build a
  1175. /// [`<feFuncB>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncB)
  1176. /// element.
  1177. feFuncB "http://www.w3.org/2000/svg" {};
  1178. /// Build a
  1179. /// [`<feFuncG>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncG)
  1180. /// element.
  1181. feFuncG "http://www.w3.org/2000/svg" {};
  1182. /// Build a
  1183. /// [`<feFuncR>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncR)
  1184. /// element.
  1185. feFuncR "http://www.w3.org/2000/svg" {};
  1186. /// Build a
  1187. /// [`<feGaussianBlur>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feGaussianBlur)
  1188. /// element.
  1189. feGaussianBlur "http://www.w3.org/2000/svg" {};
  1190. /// Build a
  1191. /// [`<feImage>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feImage)
  1192. /// element.
  1193. feImage "http://www.w3.org/2000/svg" {};
  1194. /// Build a
  1195. /// [`<feMerge>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge)
  1196. /// element.
  1197. feMerge "http://www.w3.org/2000/svg" {};
  1198. /// Build a
  1199. /// [`<feMergeNode>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMergeNode)
  1200. /// element.
  1201. feMergeNode "http://www.w3.org/2000/svg" {};
  1202. /// Build a
  1203. /// [`<feMorphology>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology)
  1204. /// element.
  1205. feMorphology "http://www.w3.org/2000/svg" {};
  1206. /// Build a
  1207. /// [`<feOffset>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset)
  1208. /// element.
  1209. feOffset "http://www.w3.org/2000/svg" {};
  1210. /// Build a
  1211. /// [`<fePointLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/fePointLight)
  1212. /// element.
  1213. fePointLight "http://www.w3.org/2000/svg" {};
  1214. /// Build a
  1215. /// [`<feSpecularLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpecularLighting)
  1216. /// element.
  1217. feSpecularLighting "http://www.w3.org/2000/svg" {};
  1218. /// Build a
  1219. /// [`<feSpotLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpotLight)
  1220. /// element.
  1221. feSpotLight "http://www.w3.org/2000/svg" {};
  1222. /// Build a
  1223. /// [`<feTile>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTile)
  1224. /// element.
  1225. feTile "http://www.w3.org/2000/svg" {};
  1226. /// Build a
  1227. /// [`<feTurbulence>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTurbulence)
  1228. /// element.
  1229. feTurbulence "http://www.w3.org/2000/svg" {};
  1230. /// Build a
  1231. /// [`<filter>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter)
  1232. /// element.
  1233. filter "http://www.w3.org/2000/svg" {};
  1234. /// Build a
  1235. /// [`<foreignObject>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject)
  1236. /// element.
  1237. foreignObject "http://www.w3.org/2000/svg" {};
  1238. /// Build a
  1239. /// [`<g>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g)
  1240. /// element.
  1241. g "http://www.w3.org/2000/svg" {};
  1242. /// Build a
  1243. /// [`<hatch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatch)
  1244. /// element.
  1245. hatch "http://www.w3.org/2000/svg" {};
  1246. /// Build a
  1247. /// [`<hatchpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatchpath)
  1248. /// element.
  1249. hatchpath "http://www.w3.org/2000/svg" {};
  1250. // /// Build a
  1251. // /// [`<image>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image)
  1252. // /// element.
  1253. // image "http://www.w3.org/2000/svg" {};
  1254. /// Build a
  1255. /// [`<line>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line)
  1256. /// element.
  1257. line "http://www.w3.org/2000/svg" {};
  1258. /// Build a
  1259. /// [`<linearGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient)
  1260. /// element.
  1261. linearGradient "http://www.w3.org/2000/svg" {};
  1262. /// Build a
  1263. /// [`<marker>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker)
  1264. /// element.
  1265. marker "http://www.w3.org/2000/svg" {};
  1266. /// Build a
  1267. /// [`<mask>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask)
  1268. /// element.
  1269. mask "http://www.w3.org/2000/svg" {};
  1270. /// Build a
  1271. /// [`<metadata>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/metadata)
  1272. /// element.
  1273. metadata "http://www.w3.org/2000/svg" {};
  1274. /// Build a
  1275. /// [`<mpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mpath)
  1276. /// element.
  1277. mpath "http://www.w3.org/2000/svg" {};
  1278. /// Build a
  1279. /// [`<path>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path)
  1280. /// element.
  1281. path "http://www.w3.org/2000/svg" {};
  1282. /// Build a
  1283. /// [`<pattern>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern)
  1284. /// element.
  1285. pattern "http://www.w3.org/2000/svg" {};
  1286. /// Build a
  1287. /// [`<polygon>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon)
  1288. /// element.
  1289. polygon "http://www.w3.org/2000/svg" {};
  1290. /// Build a
  1291. /// [`<polyline>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline)
  1292. /// element.
  1293. polyline "http://www.w3.org/2000/svg" {};
  1294. /// Build a
  1295. /// [`<radialGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/radialGradient)
  1296. /// element.
  1297. radialGradient "http://www.w3.org/2000/svg" {};
  1298. /// Build a
  1299. /// [`<rect>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect)
  1300. /// element.
  1301. rect "http://www.w3.org/2000/svg" {};
  1302. // /// Build a
  1303. // /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/script)
  1304. // /// element.
  1305. // script "http://www.w3.org/2000/svg" {};
  1306. /// Build a
  1307. /// [`<set>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/set)
  1308. /// element.
  1309. set "http://www.w3.org/2000/svg" {};
  1310. /// Build a
  1311. /// [`<stop>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/stop)
  1312. /// element.
  1313. stop "http://www.w3.org/2000/svg" {};
  1314. // /// Build a
  1315. // /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style)
  1316. // /// element.
  1317. // style "http://www.w3.org/2000/svg" {};
  1318. // /// Build a
  1319. // /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
  1320. // /// element.
  1321. // svg "http://www.w3.org/2000/svg" {};
  1322. /// Build a
  1323. /// [`<switch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/switch)
  1324. /// element.
  1325. switch "http://www.w3.org/2000/svg" {};
  1326. /// Build a
  1327. /// [`<symbol>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol)
  1328. /// element.
  1329. symbol "http://www.w3.org/2000/svg" {};
  1330. /// Build a
  1331. /// [`<text>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text)
  1332. /// element.
  1333. text "http://www.w3.org/2000/svg" {};
  1334. /// Build a
  1335. /// [`<textPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath)
  1336. /// element.
  1337. textPath "http://www.w3.org/2000/svg" {};
  1338. // /// Build a
  1339. // /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title)
  1340. // /// element.
  1341. // title "http://www.w3.org/2000/svg" {};
  1342. /// Build a
  1343. /// [`<tspan>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/tspan)
  1344. /// element.
  1345. tspan "http://www.w3.org/2000/svg" {};
  1346. /// Build a
  1347. /// [`<view>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/view)
  1348. /// element.
  1349. view "http://www.w3.org/2000/svg" {};
  1350. // /// Build a
  1351. // /// [`<use>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)
  1352. // /// element.
  1353. // use "http://www.w3.org/2000/svg" {};
  1354. }