UNPKG

hastx

Version:

JSX Transform emitting Rehype syntax trees (HAST)

1,302 lines (1,301 loc) 118 kB
import type * as hast from "hast"; export type HTMLChild = string | number | boolean | undefined | null | hast.Element | hast.Root | hast.Text; export type HTMLChildren = HTMLChild | Iterable<HTMLChildren>; export interface HTMLVoidElement extends HTMLElement { children?: never; } export interface HTMLElement extends HTMLAttributes { children?: HTMLChildren; } export interface HTMLAttributes { accesskey?: string; "aria-activedescendant"?: string; "aria-atomic"?: "true" | "false"; "aria-autocomplete"?: "inline" | "list" | "both"; "aria-braillelabel"?: string; "aria-brailleroledescription"?: string; "aria-busy"?: "true" | "false"; "aria-checked"?: "true" | "false" | "mixed"; "aria-colcount"?: number; "aria-colindex"?: number; "aria-colindextext"?: string; "aria-colspan"?: number; "aria-controls"?: string; "aria-current"?: "page" | "step" | "location" | "date" | "time" | "true" | "false"; "aria-describedby"?: string; "aria-description"?: string; "aria-details"?: string; "aria-disabled"?: "true" | "false"; "aria-dropeffect"?: string; "aria-errormessage"?: string; "aria-expanded"?: "true" | "false"; "aria-flowto"?: string; "aria-grabbed"?: "true" | "false"; "aria-haspopup"?: "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog"; "aria-hidden"?: "true" | "false"; "aria-invalid"?: "grammar" | "false" | "spelling" | "true"; "aria-keyshortcuts"?: string; "aria-label"?: string; "aria-labelledby"?: string; "aria-level"?: number; "aria-live"?: "assertive" | "off" | "polite"; "aria-modal"?: "true" | "false"; "aria-multiline"?: "true" | "false"; "aria-multiselectable"?: "true" | "false"; "aria-orientation"?: "horizontal" | "undefined" | "vertical"; "aria-owns"?: string; "aria-placeholder"?: string; "aria-posinset"?: number; "aria-pressed"?: "true" | "false" | "mixed"; "aria-readonly"?: "true" | "false"; "aria-relevant"?: string; "aria-required"?: "true" | "false"; "aria-roledescription"?: string; "aria-rowcount"?: number; "aria-rowindex"?: number; "aria-rowindextext"?: string; "aria-rowspan"?: number; "aria-selected"?: "true" | "false"; "aria-setsize"?: number; "aria-sort"?: "ascending" | "descending" | "none" | "other"; "aria-valuemax"?: number; "aria-valuemin"?: number; "aria-valuenow"?: number; "aria-valuetext"?: string; autocapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters"; autocorrect?: "on" | "off" | "" | boolean; autofocus?: boolean; class?: string; contenteditable?: "true" | "false" | "plaintext-only" | "" | boolean; dir?: "ltr" | "rtl" | "auto"; draggable?: "true" | "false"; enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send"; headingoffset?: number; headingreset?: boolean; hidden?: "hidden" | "until-found" | "" | boolean; id?: string; inert?: boolean; inputmode?: "none" | "text" | "decimal" | "numeric" | "tel" | "search" | "email" | "url"; is?: string; itemid?: string; itemprop?: string; itemref?: string; itemscope?: boolean; itemtype?: string; lang?: string; nonce?: string; onauxclick?: string; onbeforeinput?: string; onbeforematch?: string; onbeforetoggle?: string; onblur?: string; oncancel?: string; oncanplay?: string; oncanplaythrough?: string; onchange?: string; onclick?: string; onclose?: string; oncommand?: string; oncontextlost?: string; oncontextmenu?: string; oncontextrestored?: string; oncopy?: string; oncuechange?: string; oncut?: string; ondblclick?: string; ondrag?: string; ondragend?: string; ondragenter?: string; ondragleave?: string; ondragover?: string; ondragstart?: string; ondrop?: string; ondurationchange?: string; onemptied?: string; onended?: string; onerror?: string; onfocus?: string; onformdata?: string; oninput?: string; oninvalid?: string; onkeydown?: string; onkeypress?: string; onkeyup?: string; onload?: string; onloadeddata?: string; onloadedmetadata?: string; onloadstart?: string; onmousedown?: string; onmouseenter?: string; onmouseleave?: string; onmousemove?: string; onmouseout?: string; onmouseover?: string; onmouseup?: string; onpaste?: string; onpause?: string; onplay?: string; onplaying?: string; onprogress?: string; onratechange?: string; onreset?: string; onresize?: string; onscroll?: string; onscrollend?: string; onsecuritypolicyviolation?: string; onseeked?: string; onseeking?: string; onselect?: string; onslotchange?: string; onstalled?: string; onsubmit?: string; onsuspend?: string; ontimeupdate?: string; ontoggle?: string; onvolumechange?: string; onwaiting?: string; onwheel?: string; popover?: "auto" | "manual" | "hint" | "" | boolean; role?: string; slot?: string; spellcheck?: "true" | "false" | "" | boolean; style?: string; tabindex?: number; title?: string; translate?: "yes" | "no" | "" | boolean; writingsuggestions?: "true" | "false" | "" | boolean; } export interface HTMLHTML extends HTMLElement { /** * Specifies the XML Namespace of the document. Default value is * "http://www.w3.org/1999/xhtml". This is required in documents parsed with * XML parsers, and optional in text/html documents. */ xmlns?: string; } export interface HTMLArea extends HTMLVoidElement { /** * A text string alternative to display on browsers that do not * display images. The text should be phrased so that it presents * the user with the same kind of choice as the image would offer * when displayed without the alternative text. This attribute is * required only if the href attribute is used. */ alt?: string; /** * The coords attribute details the coordinates of the shape * attribute in size, shape, and placement of an <area>. This * attribute must not be used if shape is set to default. */ coords?: string; /** * This attribute, if present, indicates that the author intends the * hyperlink to be used for downloading a resource. See <a> for a * full description of the download attribute. */ download?: string; /** * The hyperlink target for the area. Its value is a valid URL. This * attribute may be omitted; if so, the <area> element does not * represent a hyperlink. */ href?: string; /** * Contains a space-separated list of URLs to which, when the * hyperlink is followed, POST requests with the body PING will be * sent by the browser (in the background). Typically used for * tracking. */ ping?: string; /** * A string indicating which referrer to use when fetching the * resource: */ referrerpolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; /** * For anchors containing the href attribute, this attribute * specifies the relationship of the target object to the link * object. The value is a space-separated list of link types. The * values and their semantics will be registered by some authority * that might have meaning to the document author. The default * relationship, if no other is given, is void. Use this attribute * only if the href attribute is present. */ rel?: string; /** * The shape of the associated hot spot. The specifications for HTML * defines the values rect, which defines a rectangular region; * circle, which defines a circular region; poly, which defines a * polygon; and default, which indicates the entire region beyond * any defined shapes. */ shape?: "rect" | "circle" | "poly" | "default"; /** * A keyword or author-defined name of the browsing context to * display the linked resource. */ target?: "_self" | "_blank" | "_parent" | "_top" | string; } export interface HTMLBase extends HTMLVoidElement { /** * The base URL to be used throughout the document for relative URLs. Absolute * and relative URLs are allowed. * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html */ href?: string; /** * A keyword or author-defined name of the default browsing context * to show the results of navigation from <a>, <area>, or <form> * elements without explicit target attributes. The following * keywords have special meanings */ target?: "_self" | "_blank" | "_parent" | "_top" | string; } export interface HTMLHead extends HTMLElement { } export interface HTMLLink extends HTMLVoidElement { /** * This attribute is only used when rel="preload" or rel="prefetch" * has been set on the <link> element. It specifies the type of * content being loaded by the <link>, which is necessary for * request matching, application of correct content security policy, * and setting of correct Accept request header. Furthermore, * rel="preload" uses this as a signal for request * prioritization. The table below lists the valid values for this * attribute and the elements or resources they apply to. */ as?: "audio" | "audioworklet" | "document" | "embed" | "fetch" | "font" | "frame" | "iframe" | "image" | "json" | "manifest" | "object" | "paintworklet" | "report" | "script" | "serviceworker" | "sharedworker" | "style" | "track" | "video" | "webidentity" | "worker" | "xslt"; /** * For the mask-icon link type, defines suggested color that user * agents can use to customize the display of the icon that the user * sees when they pin your site. */ color?: string; /** * This enumerated attribute indicates whether CORS must be used when fetching * the resource. CORS-enabled images can be reused in the <canvas> element * without being tainted. */ crossorigin?: "anonymous" | "use-credentials" | "" | boolean; /** * For rel="stylesheet" only, the disabled Boolean attribute * indicates whether the described stylesheet should be loaded and * applied to the document. If disabled is specified in the HTML * when it is loaded, the stylesheet will not be loaded during page * load. Instead, the stylesheet will be loaded on-demand, if and * when the disabled attribute is changed to false or removed. */ disabled?: boolean; /** * Provides a hint of the relative priority to use when fetching a preloaded * resource. */ fetchpriority?: "high" | "low" | "auto"; /** * This attribute specifies the URL of the linked resource. A URL can be * absolute or relative. */ href?: string; /** * This attribute indicates the language of the linked resource. It * is purely advisory. Allowed values are specified by RFC 5646: * Tags for Identifying Languages (also known as BCP 47). Use this * attribute only if the href attribute is present. */ hreflang?: string; /** * For rel="preload" and as="image" only, the imagesizes attribute * is a sizes attribute that indicates to preload the appropriate * resource used by an img element with corresponding values for its * srcset and sizes attributes. */ imagesizes?: string; /** * For rel="preload" and as="image" only, the imagesrcset attribute * is a sourceset attribute that indicates to preload the * appropriate resource used by an img element with corresponding * values for its srcset and sizes attributes. */ imagesrcset?: string; /** * Contains inline metadata — a base64-encoded cryptographic hash of * the resource (file) you're telling the browser to fetch. The * browser can use this to verify that the fetched resource has been * delivered free of unexpected manipulation. See Subresource * Integrity. */ integrity?: string; /** * This attribute specifies the media that the linked resource * applies to. Its value must be a media type / media query. This * attribute is mainly useful when linking to external stylesheets — * it allows the user agent to pick the best adapted one for the * device it runs on. */ media?: string; /** * Identifies a resource that might be required by the next * navigation and that the user agent should retrieve it. This allows * the user agent to respond faster when the resource is requested in * the future. */ prefetch?: boolean; /** * A string indicating which referrer to use when fetching the resource: */ referrerpolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "unsafe-url"; /** * This attribute names a relationship of the linked document to the * current document. The attribute must be a space-separated list of * link type values. */ rel?: string; /** * This attribute defines the sizes of the icons for visual media * contained in the resource. It must be present only if the rel * contains a value of icon or a non-standard type such as Apple's * apple-touch-icon. It may have the following values: */ sizes?: string; /** * The title attribute has special semantics on the <link> * element. When used on a <link rel="stylesheet"> it defines a * default or an alternate stylesheet. */ title?: string; /** * This attribute is used to define the type of the content linked * to. The value of the attribute should be a MIME type such as * text/html, text/css, and so on. The common use of this attribute * is to define the type of stylesheet being referenced (such as * text/css), but given that CSS is the only stylesheet language * used on the web, not only is it possible to omit the type * attribute, but is actually now recommended practice. It is also * used on rel="preload" link types, to make sure the browser only * downloads file types that it supports. */ type?: string; /** * This attribute explicitly indicates that certain operations * should be blocked on the fetching of an external resource. The * operations that are to be blocked must be a space-separated list * of blocking attributes listed below. */ blocking?: "render"; } export interface HTMLMeta extends HTMLVoidElement { /** * This attribute declares the document's character encoding. If the * attribute is present, its value must be an ASCII case-insensitive * match for the string "utf-8", because UTF-8 is the only valid * encoding for HTML5 documents. <meta> elements which declare a * character encoding must be located entirely within the first 1024 * bytes of the document. */ charset?: "utf-8" | "UTF-8"; /** * This attribute contains the value for the http-equiv or name attribute, * depending on which is used. */ content?: string; /** * Defines a pragma directive. The attribute is named * http-equiv(alent) because all the allowed values are names of * particular HTTP headers: */ "http-equiv"?: "content-security-policy" | "content-type" | "default-style" | "x-ua-compatible" | "refresh"; /** * The media attribute defines which media the theme color defined * in the content attribute should be applied to. Its value is a * media query, which defaults to all if the attribute is * missing. This attribute is only relevant when the element's name * attribute is set to theme-color. Otherwise, it has no effect, and * should not be included. */ media?: string; /** * The name and content attributes can be used together to provide * document metadata in terms of name-value pairs, with the name * attribute giving the metadata name, and the content attribute * giving the value. */ name?: string; /** * The name and content attributes can be used together to provide * document metadata in terms of name-value pairs, with the name * attribute giving the metadata name, and the content attribute * giving the value. */ property?: string; } export interface HTMLStyle extends HTMLElement { /** * This attribute defines which media the style should be applied * to. Its value is a media query, which defaults to all if the * attribute is missing. */ media?: string; /** * A cryptographic nonce (number used once) used to allow inline * styles in a style-src Content-Security-Policy. The server must * generate a unique nonce value each time it transmits a policy. It * is critical to provide a nonce that cannot be guessed as * bypassing a resource's policy is otherwise trivial. */ nonce?: string; /** * This attribute specifies alternative style sheet sets. */ title?: string; /** * This attribute explicitly indicates that certain operations * should be blocked on the fetching of critical * subresources. @import-ed stylesheets are generally considered as * critical subresources, whereas background-image and fonts are * not. */ blocking?: "render"; } export interface HTMLTitle extends HTMLElement { } export interface HTMLBody extends HTMLElement { onafterprint?: string; onbeforeprint?: string; onbeforeunload?: string; onhashchange?: string; onlanguagechange?: string; onmessage?: string; onmessageerror?: string; onoffline?: string; ononline?: string; onpagehide?: string; onpagereveal?: string; onpageshow?: string; onpageswap?: string; onpopstate?: string; onrejectionhandled?: string; onstorage?: string; onunhandledrejection?: string; onunload?: string; } export interface HTMLBlockquote extends HTMLElement { /** * A URL that designates a source document or message for the * information quoted. This attribute is intended to point to * information explaining the context or the reference for the * quote. */ cite?: string; } export interface HTMListItem extends HTMLElement { /** * This integer attribute indicates the current ordinal value of the * list item as defined by the <ol> element. The only allowed value * for this attribute is a number, even if the list is displayed * with Roman numerals or letters. List items that follow this one * continue numbering from the value set. The value attribute has no * meaning for unordered lists (<ul>) or for menus (<menu>). */ value?: number; } export interface HTMLOrderedList extends HTMLElement { /** * This Boolean attribute specifies that the list's items are in * reverse order. Items will be numbered from high to low. */ reversed?: boolean; /** * An integer to start counting from for the list items. Always an * Arabic numeral (1, 2, 3, etc.), even when the numbering type is * letters or Roman numerals. For example, to start numbering * elements from the letter "d" or the Roman numeral "iv," use * start="4". */ start?: number; /** * Sets the numbering type: * * a for lowercase letters * A for uppercase letters * i for lowercase Roman numerals * I for uppercase Roman numerals * 1 for numbers (default) * * The specified type is used for the entire list unless a different * type attribute is used on an enclosed <li> element. */ type?: "a" | "A" | "i" | "I" | "1"; } export interface HTMLAnchor extends HTMLElement { /** * Causes the browser to treat the linked URL as a download. Can be * used with or without a filename value: */ download?: string | boolean; /** * The URL that the hyperlink points to. Links are not restricted to * HTTP-based URLs — they can use any URL scheme supported by * browsers: */ href?: string; /** * Hints at the human language of the linked URL. No built-in * functionality. Allowed values are the same as the global lang * attribute. */ hreflang?: string; /** * A space-separated list of URLs. When the link is followed, the * browser will send POST requests with the body PING to the * URLs. Typically for tracking. */ ping?: string; /** * How much of the referrer to send when following the link. */ referrerpolicy?: "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; /** * The relationship of the linked URL as space-separated link types. */ rel?: string; /** * Where to display the linked URL, as the name for a browsing * context (a tab, window, or <iframe>). The following keywords have * special meanings for where to load the URL: */ target?: "_self" | "_blank" | "_parent" | "_top" | string; /** * Hints at the linked URL's format with a MIME type. No built-in * functionality. */ type?: string; } export interface HTMLTime extends HTMLElement { /** * This attribute indicates the time and/or date of the element * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time#valid_datetime_values */ datetime?: string; } export interface HTMLBDO extends HTMLElement { /** * The direction in which text should be rendered in this element's * contents. */ dir: "rtl" | "ltr"; } export interface HTMLData extends HTMLElement { /** * This attribute specifies the machine-readable translation of the * content of the element. */ value: string; } export interface HTMLAudio extends HTMLElement { /** * A Boolean attribute: if specified, the audio will automatically * begin playback as soon as it can do so, without waiting for the * entire audio file to finish downloading. */ autoplay?: boolean; /** * If this attribute is present, the browser will offer controls to * allow the user to control audio playback, including volume, * seeking, and pause/resume playback. */ controls?: boolean; /** * The controlslist attribute, when specified, helps the browser * select what controls to show for the audio element whenever the * browser shows its own set of controls (that is, when the controls * attribute is specified). */ controlslist?: string; /** * This enumerated attribute indicates whether to use CORS to fetch * the related audio file. CORS-enabled resources can be reused in * the <canvas> element without being tainted. */ crossorigin?: "anonymous" | "use-credentials" | "" | boolean; /** * A Boolean attribute used to disable the capability of remote * playback in devices that are attached using wired (HDMI, DVI, * etc.) and wireless technologies (Miracast, Chromecast, DLNA, * AirPlay, etc.). See this proposed specification for more * information. */ disableremotplayback?: boolean; /** * A Boolean attribute: if specified, the audio player will * automatically seek back to the start upon reaching the end of the * audio. */ loop?: boolean; /** * A Boolean attribute that indicates whether the audio will be * initially silenced. Its default value is false. */ muted?: boolean; /** * This enumerated attribute is intended to provide a hint to the * browser about what the author thinks will lead to the best user * experience. It may have one of the following values: */ preload?: "none" | "metadata" | "auto" | "" | boolean; /** * The URL of the audio to embed. This is subject to HTTP access * controls. This is optional; you may instead use the <source> * element within the audio block to specify the audio to embed. */ src?: string; } export interface HTMLImage extends HTMLVoidElement { /** * Defines an alternative text description of the image. */ alt?: string; /** * Indicates if the fetching of the image must be done using a CORS * request. Image data from a CORS-enabled image returned from a * CORS request can be reused in the <canvas> element without being * marked "tainted". * * If the crossorigin attribute is not specified, then a non-CORS * request is sent (without the Origin request header), and the * browser marks the image as tainted and restricts access to its * image data, preventing its usage in <canvas> elements. * * If the crossorigin attribute is specified, then a CORS request is * sent (with the Origin request header); but if the server does not * opt into allowing cross-origin access to the image data by the * origin site (by not sending any Access-Control-Allow-Origin * response header, or by not including the site's origin in any * Access-Control-Allow-Origin response header it does send), then the * browser blocks the image from loading, and logs a CORS error to the * devtools console. */ crossorigin?: "anonymous" | "use-credentials" | "" | boolean; /** * Provides an image decoding hint to the browser. Allowed values: */ decoding?: "sync" | "async" | "auto"; /** * Marks the image for observation by the PerformanceElementTiming * API. The value given becomes an identifier for the observed image * element. See also the elementtiming attribute page. */ elementiming?: boolean; /** * Provides a hint of the relative priority to use when fetching the * image */ fetchpriority?: "high" | "low" | "auto"; /** * The intrinsic height of the image, in pixels. Must be an integer * without a unit. */ height?: number; /** * This Boolean attribute indicates that the image is part of a * server-side map. If so, the coordinates where the user clicked on * the image are sent to the server. */ ismap?: boolean; /** * Indicates how the browser should load the image */ loading?: "eager" | "lazy"; /** * A string indicating which referrer to use when fetching the * resource: */ referrerpolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; /** * One or more strings separated by commas, indicating a set of source sizes. * Each source size consists of: * * 1. A media condition. This must be omitted for the last item in the list. * 2. A source size value. * * Media Conditions describe properties of the viewport, not of the * image. For example, (max-height: 500px) 1000px proposes to use a * source of 1000px width, if the viewport is not higher than 500px. * * Source size values specify the intended display size of the * image. User agents use the current source size to select one of the * sources supplied by the srcset attribute, when those sources are * described using width (w) descriptors. The selected source size * affects the intrinsic size of the image (the image's display size * if no CSS styling is applied). If the srcset attribute is absent, * or contains no values with a width descriptor, then the sizes * attribute has no effect. */ sizes?: string; /** * The image URL. Mandatory for the <img> element. On browsers * supporting srcset, src is treated like a candidate image with a * pixel density descriptor 1x, unless an image with this pixel * density descriptor is already defined in srcset, or unless srcset * contains w descriptors. */ src?: string; /** * One or more strings separated by commas, indicating possible * image sources for the user agent to use. Each string is composed * of: * * 1. A URL to an image * 2. Optionally, whitespace followed by one of: * - A width descriptor (a positive integer directly followed by * w). The width descriptor is divided by the source size * given in the sizes attribute to calculate the effective * pixel density. * - A pixel density descriptor (a positive floating point number * directly followed by x). * If no descriptor is specified, the source is assigned the default descriptor of 1x. * * It is incorrect to mix width descriptors and pixel density * descriptors in the same srcset attribute. Duplicate descriptors * (for instance, two sources in the same srcset which are both * described with 2x) are also invalid. * If the srcset attribute uses width descriptors, the sizes * attribute must also be present, or the srcset itself will be * ignored. * * The user agent selects any of the available sources at its * discretion. This provides them with significant leeway to tailor their * selection based on things like user preferences or bandwidth * conditions. See our Responsive images tutorial for an example. */ srcset?: string; /** * The intrinsic width of the image in pixels. Must be an integer * without a unit. */ width?: number; /** * The partial URL (starting with #) of an image map associated with * the element. */ usemap?: string; } export interface HTMLMap extends HTMLElement { /** * The name attribute gives the map a name so that it can be * referenced. The attribute must be present and must have a * non-empty value with no space characters. The value of the name * attribute must not be equal to the value of the name attribute of * another <map> element in the same document. If the id attribute * is also specified, both attributes must have the same value. */ name: string; } export interface HTMLTrack extends HTMLVoidElement { /** * This attribute indicates that the track should be enabled unless * the user's preferences indicate that another track is more * appropriate. This may only be used on one track element per media * element. */ default?: boolean; /** * How the text track is meant to be used. If omitted the default * kind is subtitles. If the attribute contains an invalid value, it * will use metadata (Versions of Chrome earlier than 52 treated an * invalid value as subtitles). The following keywords are allowed: */ kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata"; /** * A user-readable title of the text track which is used by the * browser when listing available text tracks. */ label?: string; /** * Address of the track (.vtt file). Must be a valid URL. This * attribute must be specified and its URL value must have the same * origin as the document — unless the <audio> or <video> parent * element of the track element has a crossorigin attribute. */ src: string; /** * Language of the track text data. It must be a valid BCP 47 * language tag. If the kind attribute is set to subtitles, then * srclang must be defined */ srclang?: string; } export interface HTMLVideo extends HTMLElement { /** * A Boolean attribute; if specified, the video automatically begins * to play back as soon as it can do so without stopping to finish * loading the data. */ autoplay?: boolean; /** * If this attribute is present, the browser will offer controls to * allow the user to control video playback, including volume, * seeking, and pause/resume playback. */ controls?: boolean; /** * The controlslist attribute, when specified, helps the browser * select what controls to show for the video element whenever the * browser shows its own set of controls (that is, when the controls * attribute is specified). */ controlslist?: string; /** * This enumerated attribute indicates whether to use CORS to fetch * the related video. CORS-enabled resources can be reused in the * <canvas> element without being tainted. */ crossorigin?: "anonymous" | "use-credentials" | "" | boolean; /** * Prevents the browser from suggesting a Picture-in-Picture context * menu or to request Picture-in-Picture automatically in some * cases. */ disablepictureinpicture?: boolean; /** * A Boolean attribute used to disable the capability of remote * playback in devices that are attached using wired (HDMI, DVI, * etc.) and wireless technologies (Miracast, Chromecast, DLNA, * AirPlay, etc.). */ disableremoteplayback?: boolean; /** * The height of the video's display area, in CSS pixels (absolute * values only; no percentages). */ height?: number; /** * A Boolean attribute; if specified, the browser will automatically * seek back to the start upon reaching the end of the video. */ loop?: boolean; /** * A Boolean attribute that indicates the default setting of the * audio contained in the video. If set, the audio will be initially * silenced. Its default value is false, meaning that the audio will * be played when the video is played. */ muted?: boolean; /** * A Boolean attribute indicating that the video is to be played * "inline", that is within the element's playback area. Note that * the absence of this attribute does not imply that the video will * always be played in fullscreen. */ playsinline?: boolean; /** * A URL for an image to be shown while the video is downloading. If * this attribute isn't specified, nothing is displayed until the * first frame is available, then the first frame is shown as the * poster frame. */ poster?: string; /** * This enumerated attribute is intended to provide a hint to the * browser about what the author thinks will lead to the best user * experience regarding what content is loaded before the video is * played. */ preload?: "none" | "metadata" | "auto"; /** * The URL of the video to embed. This is optional; you may instead * use the <source> element within the video block to specify the * video to embed. */ src?: string; /** * The width of the video's display area, in CSS pixels (absolute * values only; no percentages). */ width?: number; } export interface HTMLEmbed extends HTMLVoidElement { /** * The displayed height of the resource, in CSS pixels. This must be * an absolute value; percentages are not allowed. */ height?: number; /** * The URL of the resource being embedded. */ src?: string; /** * The MIME type to use to select the plug-in to instantiate. */ type?: string; /** * The displayed width of the resource, in CSS pixels. This must be * an absolute value; percentages are not allowed. */ width?: number; } export interface HTMLIFrame extends HTMLVoidElement { /** * Specifies a Permissions Policy for the <iframe>. The policy * defines what features are available to the <iframe> (for example, * access to the microphone, camera, battery, web-share, etc.) based * on the origin of the request. */ allow?: string; /** * Set to true if the <iframe> can activate fullscreen mode by * calling the requestFullscreen() method. */ allowfullscreen?: boolean; /** * Set to true if a cross-origin <iframe> should be allowed to * invoke the Payment Request API. */ allowpaymentrequest?: boolean; /** * Set to true to make the <iframe> credentialless, meaning that its * content will be loaded in a new, ephemeral context. It doesn't * have access to the network, cookies, and storage data associated * with its origin. It uses a new context local to the top-level * document lifetime. In return, the Cross-Origin-Embedder-Policy * (COEP) embedding rules can be lifted, so documents with COEP set * can embed third-party documents that do not. See IFrame * credentialless for more details. */ credentialless?: boolean; /** * A Content Security Policy enforced for the embedded resource. See * HTMLIFrameElement.csp for details. */ csp?: string; /** * The height of the frame in CSS pixels. Default is 150. */ height?: number; /** * Indicates how the browser should load the iframe */ loading?: "eager" | "lazy"; /** * A targetable name for the embedded browsing context. This can be * used in the target attribute of the <a>, <form>, or <base> * elements; the formtarget attribute of the <input> or <button> * elements; or the windowName parameter in the window.open() * method. */ name?: string; /** * Indicates which referrer to send when fetching the frame's * resource */ referrerpolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "scrict-origin-when-cross-origin" | "unsafe-url"; /** * Controls the restrictions applied to the content embedded in the * <iframe>. The value of the attribute can either be empty to apply * all restrictions, or space-separated tokens to lift particular * restrictions */ sandbox?: string; /** * The URL of the page to embed. Use a value of about:blank to embed * an empty page that conforms to the same-origin policy. Also note * that programmatically removing an <iframe>'s src attribute * (e.g. via Element.removeAttribute()) causes about:blank to be * loaded in the frame in Firefox (from version 65), Chromium-based * browsers, and Safari/iOS. */ src?: string; /** * Inline HTML to embed, overriding the src attribute. If a browser * does not support the srcdoc attribute, it will fall back to the * URL in the src attribute. */ srcdoc?: string; /** * The width of the frame in CSS pixels. Default is 300. */ width?: number; } export interface HTMLObject extends HTMLVoidElement { /** * The address of the resource as a valid URL. At least one of data * and type must be defined. */ data?: string; /** * The form element, if any, that the object element is associated * with (its form owner). The value of the attribute must be an ID * of a <form> element in the same document. */ form?: string; /** * The height of the displayed resource, in CSS pixels. — (Absolute * values only. NO percentages) */ height?: number; /** * The name of valid browsing context (HTML5), or the name of the * control (HTML 4). */ name?: string; /** * The content type of the resource specified by data. At least one * of data and type must be defined. */ type?: string; /** * A hash-name reference to a <map> element; that is a '#' followed * by the value of a name of a map element. */ usemap?: string; /** * The width of the display resource, in CSS pixels. — (Absolute * values only. NO percentages) */ width?: number; } export interface HTMLPortal extends HTMLVoidElement { /** * Sets the referrer policy to use when requesting the page at the * URL given as the value of the src attribute. */ referrerpolicy?: string; /** * The URL of the page to embed. */ src: string; } export interface HTMLSource extends HTMLVoidElement { /** * The MIME media type of the image or other media type, optionally * with a codecs parameter. */ type?: string; /** * Required if the source element's parent is an <audio> and <video> * element, but not allowed if the source element's parent is a * <picture> element. * * Address of the media resource. */ src?: string; /** * A list of one or more strings, separated by commas, indicating a * set of possible images represented by the source for the browser to * use. * * Required if the source element's parent is a <picture> element, * but not allowed if the source element's parent is an <audio> or * <video> element. */ srcset?: string; /** * Allowed if the source element's parent is a <picture> element, * but not allowed if the source element's parent is an <audio> or * <video> element. * * A list of source sizes that describes the final rendered width of * the image represented by the source. Each source size consists of a * comma-separated list of media condition-length pairs. Before laying * the page out, the browser uses this information to determine which * image is defined in srcset to use. Please note that sizes will have * its effect only if width dimension descriptors are provided with * srcset instead of pixel ratio values (200w instead of 2x for * example). */ /** * Media query of the resource's intended media. * * Allowed if the source element's parent is a <picture> element, * but not allowed if the source element's parent is an <audio> or * <video> element. */ media?: string; /** * The intrinsic height of the image, in pixels. Must be an integer * without a unit. * * Allowed if the source element's parent is a <picture> element, * but not allowed if the source element's parent is an <audio> or * <video> element. */ height?: number; /** * The intrinsic width of the image, in pixels. Must be an integer * without a unit. * * Allowed if the source element's parent is a <picture> element, * but not allowed if the source element's parent is an <audio> or * <video> element. */ width?: number; } export interface HTMLCanvas extends HTMLElement { /** * The height of the coordinate space in CSS pixels. Defaults to * 150. */ height?: number; /** * The width of the coordinate space in CSS pixels. Defaults to 300. */ width?: number; } export interface HTMLScript extends HTMLElement { /** * For classic scripts, if the async attribute is present, then the * classic script will be fetched in parallel to parsing and * evaluated as soon as it is available. * * For module scripts, if the async attribute is present then the * scripts and all their dependencies will be executed in the defer * queue, therefore they will get fetched in parallel to parsing and * evaluated as soon as they are available. * * This attribute allows the elimination of parser-blocking JavaScript * where the browser would have to load and evaluate scripts before * continuing to parse. defer has a similar effect in this case. * * This is a boolean attribute: the presence of a boolean attribute on * an element represents the true value, and the absence of the * attribute represents the false value. */ async?: boolean; /** * Normal script elements pass minimal information to the * window.onerror for scripts which do not pass the standard CORS * checks. To allow error logging for sites which use a separate * domain for static media, use this attribute. See CORS settings * attributes for a more descriptive explanation of its valid * arguments. */ crossorigin?: "anonymous" | "use-credentials" | "" | boolean; /** * This Boolean attribute is set to indicate to a browser that the * script is meant to be executed after the document has been * parsed, but before firing DOMContentLoaded. * * Scripts with the defer attribute will prevent the DOMContentLoaded * event from firing until the script has loaded and finished * evaluating. */ defer?: boolean; /** * Provides a hint of the relative priority to use when fetching an * external script. */ fetchpriority?: "high" | "low" | "auto"; /** * This attribute contains inline metadata that a user agent can use * to verify that a fetched resource has been delivered free of * unexpected manipulation. See */ integrity?: string; /** * This Boolean attribute is set to indicate that the script should * not be executed in browsers that support ES modules — in effect, * this can be used to serve fallback scripts to older browsers that * do not support modular JavaScript code. */ nomodule?: boolean; /** * A cryptographic nonce (number used once) to allow scripts in a * script-src Content-Security-Policy. The server must generate a * unique nonce value each time it transmits a policy. It is * critical to provide a nonce that cannot be guessed as bypassing a * resource's policy is otherwise trivial. */ nonce?: string; /** * Indicates which referrer to send when fetching the script, or * resources fetched by the script */ referrerpolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "scrict-origin-when-cross-origin" | "unsafe-url"; /** * This attribute specifies the URI of an external script; this can * be used as an alternative to embedding a script directly within a * document. */ src?: string; /** * This attribute indicates the type of script represented. The * value of this attribute will be one of the following: */ type?: "module" | "importmap" | string; /** * This attribute explicitly indicates that certain operations * should be blocked on the fetching of the script. The operations * that are to be blocked must be a space-separated list of blocking * attributes listed below. */ blocking?: "render"; } interface HTMLEdit extends HTMLElement { /** * A URI for a resource that explains the change (for example, * meeting minutes). */ cite?: string; /** * This attribute indicates the time and date of the change and must * be a valid date string with an optional time. If the value cannot * be parsed as a date with an optional time string, the element * does not have an associated timestamp. For the format of the * string without a time, see Date strings. The format of the string * if it includes both date and time is covered in Local date and * time strings. */ /** * This attribute indicates the time and date of the change and must * be a valid date string with an optional time. If the value cannot * be parsed as a date with an optional time string, the element * does not have an associated timestamp. For the format of the * string without a time, see Date strings. The format of the string * if it includes both date and time is covered in Local date and * time strings. */ datetime?: string; } export interface HTMLCol extends HTMLVoidElement { /** * This attribute contains a positive integer indicating the number * of consecutive columns the <col> element spans. If not present, * its default value is 1. */ span?: number; } export interface HTMLTd extends HTMLElement { /** * This attribute contains a non-negative integer value that * indicates for how many columns the cell extends. Its default * value is 1. Values higher than 1000 will be considered as * incorrect and will be set to the default value (1). */ colspan?: number; /** * This attribute contains a list of space-separated strings, each * corresponding to the id attribute of the <th> elements that apply * to this element. */ headers?: string; /** * This attribute contains a non-negative integer value that * indicates for how many rows the cell extends. Its default value * is 1; if its value is set to 0, it extends until the end of the * table section (<thead>, <tbody>, <tfoot>, even if implicitly * defined), that the cell belongs to. Values higher than 65534 are * clipped down to 65534. */ rowspan?: number; } export interface HTMLTh extends HTMLElement { /** * This attribute contains a short abbreviated description of the * cell's content. Some user-agents, such as speech readers, may * present this description before the content itself. */ abbr?: string; /** * This attribute contains a non-negative integer value that * indicates for how many columns the cell extends. Its default * value is 1. Values higher than 1000 will be considered as * incorrect an