diff --git a/flow-typed.config.json b/flow-typed.config.json index 10b200008371b..8ef437a955c39 100644 --- a/flow-typed.config.json +++ b/flow-typed.config.json @@ -5,6 +5,7 @@ "dom", "geometry", "html", + "jsx", "node", "serviceworkers", "streams", diff --git a/flow-typed/environments/jsx.js b/flow-typed/environments/jsx.js new file mode 100644 index 0000000000000..81aa71cb91f10 --- /dev/null +++ b/flow-typed/environments/jsx.js @@ -0,0 +1,2158 @@ +// flow-typed signature: e51684b7f9618ccda34e09816ddb01da +// flow-typed version: bb4cb83b7a/jsx/flow_>=v0.261.x + +// https://www.w3.org/TR/uievents-key/#keys-modifier +type ModifierKey = + | 'Alt' + | 'AltGraph' + | 'CapsLock' + | 'Control' + | 'Fn' + | 'FnLock' + | 'Hyper' + | 'Meta' + | 'NumLock' + | 'ScrollLock' + | 'Shift' + | 'Super' + | 'Symbol' + | 'SymbolLock'; + +declare class SyntheticEvent<+T: EventTarget = EventTarget, +E: Event = Event> { + bubbles: boolean; + cancelable: boolean; + +currentTarget: T; + defaultPrevented: boolean; + eventPhase: number; + isDefaultPrevented(): boolean; + isPropagationStopped(): boolean; + isTrusted: boolean; + nativeEvent: E; + persist(): void; + preventDefault(): void; + stopPropagation(): void; + // This should not be `T`. Use `currentTarget` instead. See: + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682 + +target: EventTarget; + timeStamp: number; + type: string; +} + +declare class SyntheticAnimationEvent<+T: EventTarget = EventTarget> + extends SyntheticEvent +{ + animationName: string; + elapsedTime: number; + pseudoElement: string; +} + +declare class SyntheticClipboardEvent<+T: EventTarget = EventTarget> + extends SyntheticEvent +{ + clipboardData: any; +} + +declare class SyntheticCompositionEvent<+T: EventTarget = EventTarget> + extends SyntheticEvent +{ + data: any; +} + +declare class SyntheticInputEvent<+T: EventTarget = EventTarget> + extends SyntheticEvent +{ + data: any; + +target: HTMLInputElement; +} + +declare class SyntheticUIEvent<+T: EventTarget = EventTarget, +E: Event = Event> + extends SyntheticEvent +{ + detail: number; + view: any; +} + +declare class SyntheticFocusEvent<+T: EventTarget = EventTarget> + extends SyntheticUIEvent +{ + relatedTarget: EventTarget; +} + +declare class SyntheticKeyboardEvent<+T: EventTarget = EventTarget> + extends SyntheticUIEvent +{ + altKey: boolean; + charCode: number; + ctrlKey: boolean; + getModifierState(key: ModifierKey): boolean; + key: string; + keyCode: number; + locale: string; + location: number; + metaKey: boolean; + repeat: boolean; + shiftKey: boolean; + which: number; +} + +declare class SyntheticMouseEvent< + +T: EventTarget = EventTarget, + +E: Event = MouseEvent, +> extends SyntheticUIEvent +{ + altKey: boolean; + button: number; + buttons: number; + clientX: number; + clientY: number; + ctrlKey: boolean; + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + pageX: number; + pageY: number; + relatedTarget: EventTarget; + screenX: number; + screenY: number; + shiftKey: boolean; +} + +declare class SyntheticDragEvent<+T: EventTarget = EventTarget> + extends SyntheticMouseEvent +{ + dataTransfer: any; +} + +declare class SyntheticWheelEvent<+T: EventTarget = EventTarget> + extends SyntheticMouseEvent +{ + deltaMode: number; + deltaX: number; + deltaY: number; + deltaZ: number; +} + +declare class SyntheticPointerEvent<+T: EventTarget = EventTarget> + extends SyntheticMouseEvent +{ + height: number; + isPrimary: boolean; + pointerId: number; + pointerType: string; + pressure: number; + tangentialPressure: number; + tiltX: number; + tiltY: number; + twist: number; + width: number; +} + +declare class SyntheticTouchEvent<+T: EventTarget = EventTarget> + extends SyntheticUIEvent +{ + altKey: boolean; + changedTouches: TouchList; + ctrlKey: boolean; + getModifierState(key: ModifierKey): boolean; + metaKey: boolean; + shiftKey: boolean; + targetTouches: TouchList; + touches: TouchList; +} + +declare class SyntheticTransitionEvent<+T: EventTarget = EventTarget> + extends SyntheticEvent +{ + elapsedTime: number; + propertyName: string; + pseudoElement: string; +} + +// prettier-ignore +declare type $JSXIntrinsics = { + // Catch-all for custom elements. + [string]: ReactDOM$HTMLElementJSXIntrinsic, + // HTML + a: ReactDOM$HTMLElementJSXIntrinsicTyped, + abbr: ReactDOM$HTMLElementJSXIntrinsicTyped, + address: ReactDOM$HTMLElementJSXIntrinsicTyped, + area: ReactDOM$HTMLElementJSXIntrinsicTyped, + article: ReactDOM$HTMLElementJSXIntrinsicTyped, + aside: ReactDOM$HTMLElementJSXIntrinsicTyped, + audio: ReactDOM$HTMLElementJSXIntrinsicTyped, + b: ReactDOM$HTMLElementJSXIntrinsicTyped, + base: ReactDOM$HTMLElementJSXIntrinsicTyped, + bdi: ReactDOM$HTMLElementJSXIntrinsicTyped, + bdo: ReactDOM$HTMLElementJSXIntrinsicTyped, + big: ReactDOM$HTMLElementJSXIntrinsicTyped, + blockquote: ReactDOM$HTMLElementJSXIntrinsicTyped, + body: ReactDOM$HTMLElementJSXIntrinsicTyped, + br: ReactDOM$HTMLElementJSXIntrinsicTyped, + button: ReactDOM$HTMLElementJSXIntrinsicTyped, + canvas: ReactDOM$HTMLElementJSXIntrinsicTyped, + caption: ReactDOM$HTMLElementJSXIntrinsicTyped, + cite: ReactDOM$HTMLElementJSXIntrinsicTyped, + code: ReactDOM$HTMLElementJSXIntrinsicTyped, + col: ReactDOM$HTMLElementJSXIntrinsicTyped, + colgroup: ReactDOM$HTMLElementJSXIntrinsicTyped, + data: ReactDOM$HTMLElementJSXIntrinsicTyped, + datalist: ReactDOM$HTMLElementJSXIntrinsicTyped, + dd: ReactDOM$HTMLElementJSXIntrinsicTyped, + del: ReactDOM$HTMLElementJSXIntrinsicTyped, + details: ReactDOM$HTMLElementJSXIntrinsicTyped, + dfn: ReactDOM$HTMLElementJSXIntrinsicTyped, + dialog: ReactDOM$HTMLElementJSXIntrinsicTyped, + div: ReactDOM$HTMLElementJSXIntrinsicTyped, + dl: ReactDOM$HTMLElementJSXIntrinsicTyped, + dt: ReactDOM$HTMLElementJSXIntrinsicTyped, + em: ReactDOM$HTMLElementJSXIntrinsicTyped, + embed: ReactDOM$HTMLElementJSXIntrinsicTyped, + fieldset: ReactDOM$HTMLElementJSXIntrinsicTyped, + figcaption: ReactDOM$HTMLElementJSXIntrinsicTyped, + figure: ReactDOM$HTMLElementJSXIntrinsicTyped, + footer: ReactDOM$HTMLElementJSXIntrinsicTyped, + form: ReactDOM$HTMLElementJSXIntrinsicTyped, + h1: ReactDOM$HTMLElementJSXIntrinsicTyped, + h2: ReactDOM$HTMLElementJSXIntrinsicTyped, + h3: ReactDOM$HTMLElementJSXIntrinsicTyped, + h4: ReactDOM$HTMLElementJSXIntrinsicTyped, + h5: ReactDOM$HTMLElementJSXIntrinsicTyped, + h6: ReactDOM$HTMLElementJSXIntrinsicTyped, + head: ReactDOM$HTMLElementJSXIntrinsicTyped, + header: ReactDOM$HTMLElementJSXIntrinsicTyped, + hgroup: ReactDOM$HTMLElementJSXIntrinsicTyped, + hr: ReactDOM$HTMLElementJSXIntrinsicTyped, + html: ReactDOM$HTMLElementJSXIntrinsicTyped, + i: ReactDOM$HTMLElementJSXIntrinsicTyped, + iframe: ReactDOM$HTMLElementJSXIntrinsicTyped, + img: ReactDOM$HTMLElementJSXIntrinsicTyped, + input: ReactDOM$HTMLElementJSXIntrinsicTyped, + ins: ReactDOM$HTMLElementJSXIntrinsicTyped, + kbd: ReactDOM$HTMLElementJSXIntrinsicTyped, + keygen: ReactDOM$HTMLElementJSXIntrinsicTyped, + label: ReactDOM$HTMLElementJSXIntrinsicTyped, + legend: ReactDOM$HTMLElementJSXIntrinsicTyped, + li: ReactDOM$HTMLElementJSXIntrinsicTyped, + link: ReactDOM$HTMLElementJSXIntrinsicTyped, + main: ReactDOM$HTMLElementJSXIntrinsicTyped, + map: ReactDOM$HTMLElementJSXIntrinsicTyped, + mark: ReactDOM$HTMLElementJSXIntrinsicTyped, + media: ReactDOM$HTMLElementJSXIntrinsicTyped, + menu: ReactDOM$HTMLElementJSXIntrinsicTyped, + menuitem: ReactDOM$HTMLElementJSXIntrinsicTyped, + meta: ReactDOM$HTMLElementJSXIntrinsicTyped, + meter: ReactDOM$HTMLElementJSXIntrinsicTyped, + nav: ReactDOM$HTMLElementJSXIntrinsicTyped, + noscript: ReactDOM$HTMLElementJSXIntrinsicTyped, + object: ReactDOM$HTMLElementJSXIntrinsicTyped, + ol: ReactDOM$HTMLElementJSXIntrinsicTyped, + optgroup: ReactDOM$HTMLElementJSXIntrinsicTyped, + option: ReactDOM$HTMLElementJSXIntrinsicTyped, + output: ReactDOM$HTMLElementJSXIntrinsicTyped, + p: ReactDOM$HTMLElementJSXIntrinsicTyped, + param: ReactDOM$HTMLElementJSXIntrinsicTyped, + picture: ReactDOM$HTMLElementJSXIntrinsicTyped, + pre: ReactDOM$HTMLElementJSXIntrinsicTyped, + progress: ReactDOM$HTMLElementJSXIntrinsicTyped, + q: ReactDOM$HTMLElementJSXIntrinsicTyped, + rp: ReactDOM$HTMLElementJSXIntrinsicTyped, + rt: ReactDOM$HTMLElementJSXIntrinsicTyped, + ruby: ReactDOM$HTMLElementJSXIntrinsicTyped, + s: ReactDOM$HTMLElementJSXIntrinsicTyped, + samp: ReactDOM$HTMLElementJSXIntrinsicTyped, + script: ReactDOM$HTMLElementJSXIntrinsicTyped, + section: ReactDOM$HTMLElementJSXIntrinsicTyped, + select: ReactDOM$HTMLElementJSXIntrinsicTyped, + slot: ReactDOM$HTMLElementJSXIntrinsicTyped, + small: ReactDOM$HTMLElementJSXIntrinsicTyped, + source: ReactDOM$HTMLElementJSXIntrinsicTyped, + span: ReactDOM$HTMLElementJSXIntrinsicTyped, + strong: ReactDOM$HTMLElementJSXIntrinsicTyped, + style: ReactDOM$HTMLElementJSXIntrinsicTyped, + sub: ReactDOM$HTMLElementJSXIntrinsicTyped, + summary: ReactDOM$HTMLElementJSXIntrinsicTyped, + sup: ReactDOM$HTMLElementJSXIntrinsicTyped, + table: ReactDOM$HTMLElementJSXIntrinsicTyped, + tbody: ReactDOM$HTMLElementJSXIntrinsicTyped, + td: ReactDOM$HTMLElementJSXIntrinsicTyped, + textarea: ReactDOM$HTMLElementJSXIntrinsicTyped, + tfoot: ReactDOM$HTMLElementJSXIntrinsicTyped, + th: ReactDOM$HTMLElementJSXIntrinsicTyped, + thead: ReactDOM$HTMLElementJSXIntrinsicTyped, + time: ReactDOM$HTMLElementJSXIntrinsicTyped, + title: ReactDOM$HTMLElementJSXIntrinsicTyped, + tr: ReactDOM$HTMLElementJSXIntrinsicTyped, + track: ReactDOM$HTMLElementJSXIntrinsicTyped, + u: ReactDOM$HTMLElementJSXIntrinsicTyped, + ul: ReactDOM$HTMLElementJSXIntrinsicTyped, + 'var': ReactDOM$HTMLElementJSXIntrinsicTyped, + video: ReactDOM$HTMLElementJSXIntrinsicTyped, + wbr: ReactDOM$HTMLElementJSXIntrinsicTyped, + // SVG + svg: ReactDOM$SVGElementJSXIntrinsicTyped, + animate: ReactDOM$SVGElementJSXIntrinsicTyped, + animateMotion: ReactDOM$SVGElementJSXIntrinsicTyped, + animateTransform: ReactDOM$SVGElementJSXIntrinsicTyped, + circle: ReactDOM$SVGElementJSXIntrinsicTyped, + clipPath: ReactDOM$SVGElementJSXIntrinsicTyped, + defs: ReactDOM$SVGElementJSXIntrinsicTyped, + desc: ReactDOM$SVGElementJSXIntrinsicTyped, + ellipse: ReactDOM$SVGElementJSXIntrinsicTyped, + feBlend: ReactDOM$SVGElementJSXIntrinsicTyped, + feColorMatrix: ReactDOM$SVGElementJSXIntrinsicTyped, + feComponentTransfer: ReactDOM$SVGElementJSXIntrinsicTyped, + feComposite: ReactDOM$SVGElementJSXIntrinsicTyped, + feConvolveMatrix: ReactDOM$SVGElementJSXIntrinsicTyped, + feDiffuseLighting: ReactDOM$SVGElementJSXIntrinsicTyped, + feDisplacementMap: ReactDOM$SVGElementJSXIntrinsicTyped, + feDistantLight: ReactDOM$SVGElementJSXIntrinsicTyped, + feDropShadow: ReactDOM$SVGElementJSXIntrinsicTyped, + feFlood: ReactDOM$SVGElementJSXIntrinsicTyped, + feFuncA: ReactDOM$SVGElementJSXIntrinsicTyped, + feFuncB: ReactDOM$SVGElementJSXIntrinsicTyped, + feFuncG: ReactDOM$SVGElementJSXIntrinsicTyped, + feFuncR: ReactDOM$SVGElementJSXIntrinsicTyped, + feGaussianBlur: ReactDOM$SVGElementJSXIntrinsicTyped, + feImage: ReactDOM$SVGElementJSXIntrinsicTyped, + feMerge: ReactDOM$SVGElementJSXIntrinsicTyped, + feMergeNode: ReactDOM$SVGElementJSXIntrinsicTyped, + feMorphology: ReactDOM$SVGElementJSXIntrinsicTyped, + feOffset: ReactDOM$SVGElementJSXIntrinsicTyped, + fePointLight: ReactDOM$SVGElementJSXIntrinsicTyped, + feSpecularLighting: ReactDOM$SVGElementJSXIntrinsicTyped, + feSpotLight: ReactDOM$SVGElementJSXIntrinsicTyped, + feTile: ReactDOM$SVGElementJSXIntrinsicTyped, + feTurbulence: ReactDOM$SVGElementJSXIntrinsicTyped, + filter: ReactDOM$SVGElementJSXIntrinsicTyped, + foreignObject: ReactDOM$SVGElementJSXIntrinsicTyped, + g: ReactDOM$SVGElementJSXIntrinsicTyped, + image: ReactDOM$SVGElementJSXIntrinsicTyped, + line: ReactDOM$SVGElementJSXIntrinsicTyped, + linearGradient: ReactDOM$SVGElementJSXIntrinsicTyped, + marker: ReactDOM$SVGElementJSXIntrinsicTyped, + mask: ReactDOM$SVGElementJSXIntrinsicTyped, + metadata: ReactDOM$SVGElementJSXIntrinsicTyped, + mpath: ReactDOM$SVGElementJSXIntrinsicTyped, + path: ReactDOM$SVGElementJSXIntrinsicTyped, + pattern: ReactDOM$SVGElementJSXIntrinsicTyped, + polygon: ReactDOM$SVGElementJSXIntrinsicTyped, + polyline: ReactDOM$SVGElementJSXIntrinsicTyped, + radialGradient: ReactDOM$SVGElementJSXIntrinsicTyped, + rect: ReactDOM$SVGElementJSXIntrinsicTyped, + set: ReactDOM$SVGElementJSXIntrinsicTyped, + stop: ReactDOM$SVGElementJSXIntrinsicTyped, + switch: ReactDOM$SVGElementJSXIntrinsicTyped, + symbol: ReactDOM$SVGElementJSXIntrinsicTyped, + text: ReactDOM$SVGElementJSXIntrinsicTyped, + textPath: ReactDOM$SVGElementJSXIntrinsicTyped, + tspan: ReactDOM$SVGElementJSXIntrinsicTyped, + use: ReactDOM$SVGElementJSXIntrinsicTyped, + view: ReactDOM$SVGElementJSXIntrinsicTyped, +}; + +type ReactDOM$HTMLElementJSXIntrinsic = { + instance: HTMLElement, + props: { + +[key: string]: any, + +children?: React$Node, + ... + }, + ... +}; + +type ReactDOM$SVGElementJSXIntrinsic = { + instance: Element, + props: { + +[key: string]: any, + +children?: React$Node, + ... + }, + ... +}; + +type ReactDOM$SVGElementJSXIntrinsicTyped = {| + instance: Instance, + props: { + ...Props, + ...ReactDOM$EventHandlers, + // We add data props here to avoid spreading errors + [StringPrefix<'data-'>]: ReactDOM$DataPropValues, + }, +|}; + +// Override this if you want to add custom props to all HTML elements +type ReactDOM$CustomHTMLElementProps = $ReadOnly<{||}>; + +// Override this if you want to change the types accepted by data-prefixed props +type ReactDOM$DataPropValues = ?(string | boolean | number); + +// Override this if you want to change the types accepted for user-visible DOM attributes +type ReactDOM$UserVisibleString = string; + +// Override this if you want to add custom events to all HTML elements +type ReactDOM$CustomEvents<-E> = $ReadOnly<{||}>; + +type ReactDOM$BooleanishString = boolean | 'true' | 'false'; + +type ReactDOM$Style = any; + +type ReactDOM$Number = number | string; + +type ReactDOM$Boolean = AttributeName | boolean; + +type ReactDOM$CrossOrigin = ?('anonymous' | 'use-credentials' | ''); + +// Adapted from https://github.com/DefinitelyTyped/DefinitelyTyped/blob/ffe46d9382e765fc0f54530b4653e57e6ef0921c/types/react/index.d.ts#L2377 +// All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ +type ReactDOM$AriaAttributes = {| + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + 'aria-activedescendant'?: ?string, + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + 'aria-atomic'?: ?ReactDOM$BooleanishString, + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + 'aria-autocomplete'?: ?('none' | 'inline' | 'list' | 'both'), + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + /** + * Defines a string value that labels the current element, which is intended to be converted into Braille. + * @see aria-label. + */ + 'aria-braillelabel'?: ?ReactDOM$UserVisibleString, + /** + * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. + * @see aria-roledescription. + */ + 'aria-brailleroledescription'?: ?ReactDOM$UserVisibleString, + 'aria-busy'?: ?ReactDOM$BooleanishString, + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed @see aria-selected. + */ + 'aria-checked'?: ?(ReactDOM$BooleanishString | 'mixed'), + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + 'aria-colcount'?: ?number, + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount @see aria-colspan. + */ + 'aria-colindex'?: ?number, + /** + * Defines a human readable text alternative of aria-colindex. + * @see aria-rowindextext. + */ + 'aria-colindextext'?: ?ReactDOM$UserVisibleString, + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex @see aria-rowspan. + */ + 'aria-colspan'?: ?number, + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + 'aria-controls'?: ?string, + /** Indicates the element that represents the current item within a container or set of related elements. */ + 'aria-current'?: ?( + | ReactDOM$BooleanishString + | 'page' + | 'step' + | 'location' + | 'date' + | 'time' + ), + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + 'aria-describedby'?: ?string, + /** + * Defines a string value that describes or annotates the current element. + * @see related aria-describedby. + */ + 'aria-description'?: ?ReactDOM$UserVisibleString, + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + 'aria-details'?: ?string, + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden @see aria-readonly. + */ + 'aria-disabled'?: ?ReactDOM$BooleanishString, + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + 'aria-dropeffect'?: ?( + | 'none' + | 'copy' + | 'execute' + | 'link' + | 'move' + | 'popup' + ), + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid @see aria-describedby. + */ + 'aria-errormessage'?: ?string, + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + 'aria-expanded'?: ?ReactDOM$BooleanishString, + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + 'aria-flowto'?: ?string, + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + 'aria-grabbed'?: ?ReactDOM$BooleanishString, + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + 'aria-haspopup'?: ?( + | ReactDOM$BooleanishString + | 'menu' + | 'listbox' + | 'tree' + | 'grid' + | 'dialog' + ), + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + 'aria-hidden'?: ?ReactDOM$BooleanishString, + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + 'aria-invalid'?: ?(ReactDOM$BooleanishString | 'grammar' | 'spelling'), + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + 'aria-keyshortcuts'?: ?string, + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + 'aria-label'?: ?ReactDOM$UserVisibleString, + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + 'aria-labelledby'?: ?string, + /** Defines the hierarchical level of an element within a structure. */ + 'aria-level'?: ?number, + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + 'aria-live'?: ?('off' | 'assertive' | 'polite'), + /** Indicates whether an element is modal when displayed. */ + 'aria-modal'?: ?ReactDOM$BooleanishString, + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + 'aria-multiline'?: ?ReactDOM$BooleanishString, + /** Indicates that the user may select more than one item from the current selectable descendants. */ + 'aria-multiselectable'?: ?ReactDOM$BooleanishString, + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + 'aria-orientation'?: ?('horizontal' | 'vertical'), + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + 'aria-owns'?: ?string, + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + 'aria-placeholder'?: ?ReactDOM$UserVisibleString, + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + 'aria-posinset'?: ?number, + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked @see aria-selected. + */ + 'aria-pressed'?: ?(ReactDOM$BooleanishString | 'mixed'), + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + 'aria-readonly'?: ?ReactDOM$BooleanishString, + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + 'aria-relevant'?: ?( + | 'additions' + | 'additions removals' + | 'additions text' + | 'all' + | 'removals' + | 'removals additions' + | 'removals text' + | 'text' + | 'text additions' + | 'text removals' + ), + /** Indicates that user input is required on the element before a form may be submitted. */ + 'aria-required'?: ?ReactDOM$BooleanishString, + /** Defines a human-readable, author-localized description for the role of an element. */ + 'aria-roledescription'?: ?ReactDOM$UserVisibleString, + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + 'aria-rowcount'?: ?number, + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount @see aria-rowspan. + */ + 'aria-rowindex'?: ?number, + /** + * Defines a human readable text alternative of aria-rowindex. + * @see aria-colindextext. + */ + 'aria-rowindextext'?: ?ReactDOM$UserVisibleString, + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex @see aria-colspan. + */ + 'aria-rowspan'?: ?number, + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked @see aria-pressed. + */ + 'aria-selected'?: ?ReactDOM$BooleanishString, + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + 'aria-setsize'?: ?number, + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + 'aria-sort'?: ?('none' | 'ascending' | 'descending' | 'other'), + /** Defines the maximum allowed value for a range widget. */ + 'aria-valuemax'?: ?number, + /** Defines the minimum allowed value for a range widget. */ + 'aria-valuemin'?: ?number, + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + 'aria-valuenow'?: ?number, + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + 'aria-valuetext'?: ?ReactDOM$UserVisibleString, +|}; + +type ReactDOM$EventHandlers<-E> = $ReadOnly<{| + // Animation Events + onAnimationEnd?: ?(SyntheticAnimationEvent) => mixed, + onAnimationEndCapture?: ?(SyntheticAnimationEvent) => mixed, + onAnimationIteration?: ?(SyntheticAnimationEvent) => mixed, + onAnimationIterationCapture?: ?(SyntheticAnimationEvent) => mixed, + onAnimationStart?: ?(SyntheticAnimationEvent) => mixed, + onAnimationStartCapture?: ?(SyntheticAnimationEvent) => mixed, + + // Clipboard Events + onCopy?: ?(SyntheticEvent) => mixed, + onCopyCapture?: ?(SyntheticEvent) => mixed, + onCut?: ?(SyntheticEvent) => mixed, + onCutCapture?: ?(SyntheticEvent) => mixed, + onPaste?: ?(SyntheticEvent) => mixed, + onPasteCapture?: ?(SyntheticEvent) => mixed, + + // Composition Events + onCompositionEnd?: ?(SyntheticCompositionEvent) => mixed, + onCompositionEndCapture?: ?(SyntheticCompositionEvent) => mixed, + onCompositionStart?: ?(SyntheticCompositionEvent) => mixed, + onCompositionStartCapture?: ?(SyntheticCompositionEvent) => mixed, + onCompositionUpdate?: ?(SyntheticCompositionEvent) => mixed, + onCompositionUpdateCapture?: ?(SyntheticCompositionEvent) => mixed, + + // Focus Events + onFocus?: ?(SyntheticFocusEvent) => mixed, + onFocusCapture?: ?(SyntheticFocusEvent) => mixed, + onBlur?: ?(SyntheticFocusEvent) => mixed, + onBlurCapture?: ?(SyntheticFocusEvent) => mixed, + + // Form Events + onBeforeInput?: ?(SyntheticInputEvent) => mixed, + onBeforeInputCapture?: ?(SyntheticInputEvent) => mixed, + onChange?: ?(SyntheticEvent) => mixed, + onChangeCapture?: ?(SyntheticEvent) => mixed, + onInput?: ?(SyntheticEvent) => mixed, + onInputCapture?: ?(SyntheticEvent) => mixed, + onInvalid?: ?(SyntheticEvent) => mixed, + onInvalidCapture?: ?(SyntheticEvent) => mixed, + onReset?: ?(SyntheticEvent) => mixed, + onResetCapture?: ?(SyntheticEvent) => mixed, + onSubmit?: ?(SyntheticEvent) => mixed, + onSubmitCapture?: ?(SyntheticEvent) => mixed, + + // Image Events + onError?: ?(SyntheticEvent) => mixed, + onErrorCapture?: ?(SyntheticEvent) => mixed, + onLoad?: ?(SyntheticEvent) => mixed, + onLoadCapture?: ?(SyntheticEvent) => mixed, + + // Keyboard Events + onKeyDown?: ?(SyntheticKeyboardEvent) => mixed, + onKeyDownCapture?: ?(SyntheticKeyboardEvent) => mixed, + onKeyPress?: ?(SyntheticKeyboardEvent) => mixed, + onKeyPressCapture?: ?(SyntheticKeyboardEvent) => mixed, + onKeyUp?: ?(SyntheticKeyboardEvent) => mixed, + onKeyUpCapture?: ?(SyntheticKeyboardEvent) => mixed, + + // Media Events + onAbort?: ?(SyntheticEvent) => mixed, + onAbortCapture?: ?(SyntheticEvent) => mixed, + onCanPlay?: ?(SyntheticEvent) => mixed, + onCanPlayCapture?: ?(SyntheticEvent) => mixed, + onCanPlayThrough?: ?(SyntheticEvent) => mixed, + onCanPlayThroughCapture?: ?(SyntheticEvent) => mixed, + onDurationChange?: ?(SyntheticEvent) => mixed, + onDurationChangeCapture?: ?(SyntheticEvent) => mixed, + onEmptied?: ?(SyntheticEvent) => mixed, + onEmptiedCapture?: ?(SyntheticEvent) => mixed, + onEncrypted?: ?(SyntheticEvent) => mixed, + onEncryptedCapture?: ?(SyntheticEvent) => mixed, + onEnded?: ?(SyntheticEvent) => mixed, + onEndedCapture?: ?(SyntheticEvent) => mixed, + onLoadedData?: ?(SyntheticEvent) => mixed, + onLoadedDataCapture?: ?(SyntheticEvent) => mixed, + onLoadedMetadata?: ?(SyntheticEvent) => mixed, + onLoadedMetadataCapture?: ?(SyntheticEvent) => mixed, + onLoadStart?: ?(SyntheticEvent) => mixed, + onLoadStartCapture?: ?(SyntheticEvent) => mixed, + onPause?: ?(SyntheticEvent) => mixed, + onPauseCapture?: ?(SyntheticEvent) => mixed, + onPlay?: ?(SyntheticEvent) => mixed, + onPlayCapture?: ?(SyntheticEvent) => mixed, + onPlaying?: ?(SyntheticEvent) => mixed, + onPlayingCapture?: ?(SyntheticEvent) => mixed, + onProgress?: ?(SyntheticEvent) => mixed, + onProgressCapture?: ?(SyntheticEvent) => mixed, + onRateChange?: ?(SyntheticEvent) => mixed, + onRateChangeCapture?: ?(SyntheticEvent) => mixed, + onResize?: ?(SyntheticEvent) => mixed, + onResizeCapture?: ?(SyntheticEvent) => mixed, + onSeeked?: ?(SyntheticEvent) => mixed, + onSeekedCapture?: ?(SyntheticEvent) => mixed, + onSeeking?: ?(SyntheticEvent) => mixed, + onSeekingCapture?: ?(SyntheticEvent) => mixed, + onStalled?: ?(SyntheticEvent) => mixed, + onStalledCapture?: ?(SyntheticEvent) => mixed, + onSuspend?: ?(SyntheticEvent) => mixed, + onSuspendCapture?: ?(SyntheticEvent) => mixed, + onTimeUpdate?: ?(SyntheticEvent) => mixed, + onTimeUpdateCapture?: ?(SyntheticEvent) => mixed, + onVolumeChange?: ?(SyntheticEvent) => mixed, + onVolumeChangeCapture?: ?(SyntheticEvent) => mixed, + onWaiting?: ?(SyntheticEvent) => mixed, + onWaitingCapture?: ?(SyntheticEvent) => mixed, + + // Mouse Events + onAuxClick?: ?(SyntheticMouseEvent) => mixed, + onAuxClickCapture?: ?(SyntheticMouseEvent) => mixed, + onClick?: ?(SyntheticMouseEvent) => mixed, + onClickCapture?: ?(SyntheticMouseEvent) => mixed, + onContextMenu?: ?(SyntheticMouseEvent) => mixed, + onContextMenuCapture?: ?(SyntheticMouseEvent) => mixed, + onDoubleClick?: ?(SyntheticMouseEvent) => mixed, + onDoubleClickCapture?: ?(SyntheticMouseEvent) => mixed, + onDrag?: ?(SyntheticDragEvent) => mixed, + onDragCapture?: ?(SyntheticDragEvent) => mixed, + onDragEnd?: ?(SyntheticDragEvent) => mixed, + onDragEndCapture?: ?(SyntheticDragEvent) => mixed, + onDragEnter?: ?(SyntheticDragEvent) => mixed, + onDragEnterCapture?: ?(SyntheticDragEvent) => mixed, + onDragExit?: ?(SyntheticDragEvent) => mixed, + onDragExitCapture?: ?(SyntheticDragEvent) => mixed, + onDragLeave?: ?(SyntheticDragEvent) => mixed, + onDragLeaveCapture?: ?(SyntheticDragEvent) => mixed, + onDragOver?: ?(SyntheticDragEvent) => mixed, + onDragOverCapture?: ?(SyntheticDragEvent) => mixed, + onDragStart?: ?(SyntheticDragEvent) => mixed, + onDragStartCapture?: ?(SyntheticDragEvent) => mixed, + onDrop?: ?(SyntheticDragEvent) => mixed, + onDropCapture?: ?(SyntheticDragEvent) => mixed, + onMouseDown?: ?(SyntheticMouseEvent) => mixed, + onMouseDownCapture?: ?(SyntheticMouseEvent) => mixed, + onMouseEnter?: ?(SyntheticMouseEvent) => mixed, + onMouseLeave?: ?(SyntheticMouseEvent) => mixed, + onMouseMove?: ?(SyntheticMouseEvent) => mixed, + onMouseMoveCapture?: ?(SyntheticMouseEvent) => mixed, + onMouseOut?: ?(SyntheticMouseEvent) => mixed, + onMouseOutCapture?: ?(SyntheticMouseEvent) => mixed, + onMouseOver?: ?(SyntheticMouseEvent) => mixed, + onMouseOverCapture?: ?(SyntheticMouseEvent) => mixed, + onMouseUp?: ?(SyntheticMouseEvent) => mixed, + onMouseUpCapture?: ?(SyntheticMouseEvent) => mixed, + + // Pointer Events + onGotPointerCapture?: ?(SyntheticPointerEvent) => mixed, + onGotPointerCaptureCapture?: ?(SyntheticPointerEvent) => mixed, + onLostPointerCapture?: ?(SyntheticPointerEvent) => mixed, + onLostPointerCaptureCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerCancel?: ?(SyntheticPointerEvent) => mixed, + onPointerCancelCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerDown?: ?(SyntheticPointerEvent) => mixed, + onPointerDownCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerEnter?: ?(SyntheticPointerEvent) => mixed, + onPointerLeave?: ?(SyntheticPointerEvent) => mixed, + onPointerMove?: ?(SyntheticPointerEvent) => mixed, + onPointerMoveCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerOut?: ?(SyntheticPointerEvent) => mixed, + onPointerOutCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerOver?: ?(SyntheticPointerEvent) => mixed, + onPointerOverCapture?: ?(SyntheticPointerEvent) => mixed, + onPointerUp?: ?(SyntheticPointerEvent) => mixed, + onPointerUpCapture?: ?(SyntheticPointerEvent) => mixed, + + // Selection Events + onSelect?: ?(SyntheticEvent) => mixed, + onSelectCapture?: ?(SyntheticEvent) => mixed, + + // Toggle Events + onToggle?: ?(SyntheticEvent) => mixed, + onToggleCapture?: ?(SyntheticEvent) => mixed, + + // Touch Events + onTouchCancel?: ?(SyntheticTouchEvent) => mixed, + onTouchCancelCapture?: ?(SyntheticTouchEvent) => mixed, + onTouchEnd?: ?(SyntheticTouchEvent) => mixed, + onTouchEndCapture?: ?(SyntheticTouchEvent) => mixed, + onTouchMove?: ?(SyntheticEvent) => mixed, + onTouchMoveCapture?: ?(SyntheticEvent) => mixed, + onTouchStart?: ?(SyntheticTouchEvent) => mixed, + onTouchStartCapture?: ?(SyntheticTouchEvent) => mixed, + + // Transition Events + onTransitionCancel?: ?(SyntheticTransitionEvent) => mixed, + onTransitionCancelCapture?: ?(SyntheticTransitionEvent) => mixed, + onTransitionEnd?: ?(SyntheticTransitionEvent) => mixed, + onTransitionEndCapture?: ?(SyntheticTransitionEvent) => mixed, + onTransitionRun?: ?(SyntheticTransitionEvent) => mixed, + onTransitionRunCapture?: ?(SyntheticTransitionEvent) => mixed, + onTransitionStart?: ?(SyntheticTransitionEvent) => mixed, + onTransitionStartCapture?: ?(SyntheticTransitionEvent) => mixed, + + // UI Events + onScroll?: ?(SyntheticUIEvent) => mixed, + onScrollCapture?: ?(SyntheticUIEvent) => mixed, + + // Wheel Events + onWheel?: ?(SyntheticWheelEvent) => mixed, + onWheelCapture?: ?(SyntheticWheelEvent) => mixed, + + ...ReactDOM$CustomEvents, +|}>; + +// Special props provided by React +type ReactDOM$ReactSpecificProps = {| + children?: React$Node, + dangerouslySetInnerHTML?: {| + __html: ReactDOM$UserVisibleString, + |}, + defaultChecked?: ?boolean, + defaultValue?: ?(string | number | $ReadOnlyArray), + suppressContentEditableWarning?: ?boolean, + suppressHydrationWarning?: ?boolean, +|}; + +type ReactDOM$HTMLElementProps = {| + ...ReactDOM$ReactSpecificProps, + ...ReactDOM$AriaAttributes, + accessKey?: ?string, + autoCapitalize?: ?( + | 'off' + | 'none' + | 'on' + | 'sentences' + | 'words' + | 'characters' + ), + autoCorrect?: ?('off' | 'on'), + autoFocus?: ?boolean, + className?: ?string, + contentEditable?: ?ReactDOM$BooleanishString, + contextMenu?: ?string, + dir?: ?('ltr' | 'rtl' | 'LTR' | 'RTL' | 'auto'), + draggable?: ?ReactDOM$BooleanishString, + enterKeyHint?: ?( + | 'enter' + | 'done' + | 'go' + | 'next' + | 'previous' + | 'search' + | 'send' + ), + hidden?: ?ReactDOM$Boolean<'hidden'>, + id?: ?string, + inert?: ?ReactDOM$BooleanishString, + inputMode?: ?( + | 'none' + | 'text' + | 'tel' + | 'url' + | 'email' + | 'numeric' + | 'decimal' + | 'search' + ), + is?: ?string, + itemID?: ?string, + itemProp?: ?string, + itemRef?: ?string, + itemScope?: ReactDOM$Boolean<'itemScope' | 'itemscope'>, + itemType?: ?string, + lang?: ?string, + nonce?: ?string, + popover?: ?('' | 'auto' | 'manual'), + role?: ?string, + slot?: ?string, + spellCheck?: ?ReactDOM$BooleanishString, + style?: ?ReactDOM$Style, + suppressContentEditableWarning?: ?boolean, + tabIndex?: ?number, + title?: ?ReactDOM$UserVisibleString, + translate?: ?('yes' | 'no'), + ...ReactDOM$CustomHTMLElementProps, +|}; + +// Self closing tags, like br, do not allow children +type ReactDOM$SelfClosingHTMLElementProps = Omit< + ReactDOM$HTMLElementProps, + 'children' | 'dangerouslySetInnerHTML', +>; + +type ReactDOM$HTMLElementJSXIntrinsicTyped = {| + instance: Instance, + props: { + ...Props, + ...ReactDOM$EventHandlers, + // We add data props here to avoid spreading errors + [StringPrefix<'data-'>]: ReactDOM$DataPropValues, + }, +|}; + +type ReactDOM$HTMLAttributeReferrerPolicy = + | '' + | 'no-referrer' + | 'no-referrer-when-downgrade' + | 'origin' + | 'origin-when-cross-origin' + | 'same-origin' + | 'strict-origin' + | 'strict-origin-when-cross-origin' + | 'unsafe-url'; + +type ReactDOM$HTMLAttributeAnchorTarget = + | '_self' + | '_blank' + | '_parent' + | '_top'; + +type ReactDOM$aProps = {| + ...ReactDOM$HTMLElementProps, + download?: any, + href?: ?string, + hrefLang?: ?string, + media?: ?string, + ping?: ?string, + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + rel?: ?string, + target?: ?ReactDOM$HTMLAttributeAnchorTarget, + type?: ?string, +|}; +type ReactDOM$aInstance = HTMLAnchorElement; + +type ReactDOM$abbrProps = ReactDOM$HTMLElementProps; +type ReactDOM$abbrInstance = HTMLElement; + +type ReactDOM$addressProps = ReactDOM$HTMLElementProps; +type ReactDOM$addressInstance = HTMLElement; + +type ReactDOM$areaProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + alt?: ?ReactDOM$UserVisibleString, + coords?: ?string, + download?: any, + href?: ?string, + hrefLang?: ?string, + media?: ?string, + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + shape?: ?string, + target?: ?string, +|}; +type ReactDOM$areaInstance = HTMLAreaElement; + +type ReactDOM$articleProps = ReactDOM$HTMLElementProps; +type ReactDOM$articleInstance = HTMLElement; + +type ReactDOM$asideProps = ReactDOM$HTMLElementProps; +type ReactDOM$asideInstance = HTMLElement; + +type ReactDOM$audioProps = {| + ...ReactDOM$HTMLElementProps, + autoPlay?: ?boolean, + controls?: ?boolean, + controlsList?: ?string, + crossOrigin?: ?ReactDOM$CrossOrigin, + disableRemotePlayback?: ?boolean, + loop?: ?boolean, + muted?: ?boolean, + preload?: ?string, + src?: ?string, +|}; +type ReactDOM$audioInstance = HTMLAudioElement; + +type ReactDOM$bProps = ReactDOM$HTMLElementProps; +type ReactDOM$bInstance = HTMLElement; + +type ReactDOM$baseProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + href?: ?string, + target?: ?string, +|}; +type ReactDOM$baseInstance = HTMLBaseElement; + +type ReactDOM$bdiProps = ReactDOM$HTMLElementProps; +type ReactDOM$bdiInstance = HTMLElement; + +type ReactDOM$bdoProps = ReactDOM$HTMLElementProps; +type ReactDOM$bdoInstance = HTMLElement; + +type ReactDOM$bigProps = ReactDOM$HTMLElementProps; +type ReactDOM$bigInstance = HTMLElement; + +type ReactDOM$blockquoteProps = ReactDOM$HTMLElementProps; +type ReactDOM$blockquoteInstance = HTMLQuoteElement; + +type ReactDOM$bodyProps = ReactDOM$HTMLElementProps; +type ReactDOM$bodyInstance = HTMLBodyElement; + +type ReactDOM$brProps = ReactDOM$SelfClosingHTMLElementProps; +type ReactDOM$brInstance = HTMLBRElement; + +type ReactDOM$buttonProps = {| + ...ReactDOM$HTMLElementProps, + disabled?: ?boolean, + form?: ?string, + formAction?: ?(string | ((formData: FormData) => void | Promise)), + formEncType?: ?string, + formMethod?: ?string, + formNoValidate?: ?boolean, + formTarget?: ?string, + name?: ?string, + type?: ?('submit' | 'reset' | 'button'), + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$buttonInstance = HTMLButtonElement; + +type ReactDOM$canvasProps = {| + ...ReactDOM$HTMLElementProps, + height?: ?(number | string), + width?: ?(number | string), +|}; +type ReactDOM$canvasInstance = HTMLCanvasElement; + +type ReactDOM$captionProps = ReactDOM$HTMLElementProps; +type ReactDOM$captionInstance = HTMLTableCaptionElement; + +type ReactDOM$citeProps = ReactDOM$HTMLElementProps; +type ReactDOM$citeInstance = HTMLElement; + +type ReactDOM$codeProps = ReactDOM$HTMLElementProps; +type ReactDOM$codeInstance = HTMLElement; + +type ReactDOM$colProps = ReactDOM$SelfClosingHTMLElementProps; +type ReactDOM$colInstance = HTMLTableColElement; + +type ReactDOM$colgroupProps = {| + ...ReactDOM$HTMLElementProps, + span?: ?number, +|}; +type ReactDOM$colgroupInstance = HTMLTableColElement; + +type ReactDOM$dataProps = {| + ...ReactDOM$HTMLElementProps, + value?: ?(string | $ReadOnlyArray | number), +|}; + +type ReactDOM$dataInstance = HTMLDataElement; + +type ReactDOM$datalistProps = ReactDOM$HTMLElementProps; +type ReactDOM$datalistInstance = HTMLDataListElement; + +type ReactDOM$ddProps = ReactDOM$HTMLElementProps; +type ReactDOM$ddInstance = HTMLElement; + +type ReactDOM$delProps = {| + ...ReactDOM$HTMLElementProps, + cite?: ?string, + dateTime?: ?string, +|}; +type ReactDOM$delInstance = HTMLModElement; + +type ReactDOM$detailsProps = {| + ...ReactDOM$HTMLElementProps, + name?: ?string, + open?: ?boolean, +|}; +type ReactDOM$detailsInstance = HTMLDetailsElement; + +type ReactDOM$dfnProps = ReactDOM$HTMLElementProps; +type ReactDOM$dfnInstance = HTMLElement; + +type ReactDOM$dialogProps = {| + ...ReactDOM$HTMLElementProps, + onCancel?: ?(SyntheticEvent) => mixed, + onClose?: ?(SyntheticEvent) => mixed, + open?: ?boolean, +|}; +type ReactDOM$dialogInstance = HTMLDialogElement; + +type ReactDOM$divProps = ReactDOM$HTMLElementProps; +type ReactDOM$divInstance = HTMLDivElement; + +type ReactDOM$dlProps = ReactDOM$HTMLElementProps; +type ReactDOM$dlInstance = HTMLDListElement; + +type ReactDOM$dtProps = ReactDOM$HTMLElementProps; +type ReactDOM$dtInstance = HTMLElement; + +type ReactDOM$emProps = ReactDOM$HTMLElementProps; +type ReactDOM$emInstance = HTMLElement; + +type ReactDOM$embedProps = ReactDOM$SelfClosingHTMLElementProps; +type ReactDOM$embedInstance = HTMLEmbedElement; + +type ReactDOM$fieldsetProps = {| + ...ReactDOM$HTMLElementProps, + disabled?: ?boolean, + form?: ?string, + name?: ?string, +|}; +type ReactDOM$fieldsetInstance = HTMLFieldSetElement; + +type ReactDOM$figcaptionProps = ReactDOM$HTMLElementProps; +type ReactDOM$figcaptionInstance = HTMLElement; + +type ReactDOM$figureProps = ReactDOM$HTMLElementProps; +type ReactDOM$figureInstance = HTMLElement; + +type ReactDOM$footerProps = ReactDOM$HTMLElementProps; +type ReactDOM$footerInstance = HTMLFormElement; + +type ReactDOM$formProps = {| + ...ReactDOM$HTMLElementProps, + acceptCharset?: ?string, + action?: ?(string | ((formData: FormData) => void | Promise)), + autoComplete?: ?string, + encType?: ?string, + method?: ?string, + name?: ?string, + noValidate?: ?boolean, + rel?: string, + target?: ?string, +|}; +type ReactDOM$formInstance = HTMLFormElement; + +type ReactDOM$h1Props = ReactDOM$HTMLElementProps; +type ReactDOM$h1Instance = HTMLHeadingElement; + +type ReactDOM$h2Props = ReactDOM$HTMLElementProps; +type ReactDOM$h2Instance = HTMLHeadingElement; + +type ReactDOM$h3Props = ReactDOM$HTMLElementProps; +type ReactDOM$h3Instance = HTMLHeadingElement; + +type ReactDOM$h4Props = ReactDOM$HTMLElementProps; +type ReactDOM$h4Instance = HTMLHeadingElement; + +type ReactDOM$h5Props = ReactDOM$HTMLElementProps; +type ReactDOM$h5Instance = HTMLHeadingElement; + +type ReactDOM$h6Props = ReactDOM$HTMLElementProps; +type ReactDOM$h6Instance = HTMLHeadingElement; + +type ReactDOM$headProps = ReactDOM$HTMLElementProps; +type ReactDOM$headInstance = HTMLHeadElement; + +type ReactDOM$headerProps = ReactDOM$HTMLElementProps; +type ReactDOM$headerInstance = HTMLElement; + +type ReactDOM$hgroupProps = ReactDOM$HTMLElementProps; +type ReactDOM$hgroupInstance = HTMLElement; + +type ReactDOM$hrProps = ReactDOM$SelfClosingHTMLElementProps; +type ReactDOM$hrInstance = HTMLHRElement; + +type ReactDOM$htmlProps = {| + ...ReactDOM$HTMLElementProps, + manifest?: ?string, +|}; +type ReactDOM$htmlInstance = HTMLHtmlElement; + +type ReactDOM$iProps = ReactDOM$HTMLElementProps; +type ReactDOM$iInstance = HTMLElement; + +type ReactDOM$iframeProps = {| + ...ReactDOM$HTMLElementProps, + allow?: ?string, + allowFullScreen?: ?boolean, + allowTransparency?: ?boolean, + /** @deprecated */ + frameBorder?: ?(number | string), + height?: ?(number | string), + loading?: ?('eager' | 'lazy'), + /** @deprecated */ + marginHeight?: ?number, + /** @deprecated */ + marginWidth?: ?number, + name?: ?string, + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + sandbox?: ?string, + /** @deprecated */ + scrolling?: ?string, + seamless?: ?boolean, + src?: ?string, + srcDoc?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$iframeInstance = HTMLIFrameElement; + +type ReactDOM$imgProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + alt?: ?ReactDOM$UserVisibleString, + crossOrigin?: ?ReactDOM$CrossOrigin, + decoding?: ?('async' | 'auto' | 'sync'), + fetchPriority?: 'high' | 'low' | 'auto', + height?: ?(number | string), + loading?: ?('eager' | 'lazy'), + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + sizes?: ?string, + src?: ?string, + srcSet?: ?string, + useMap?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$imgInstance = HTMLImageElement; + +type ReactDOM$inputProps = {| + ...ReactDOM$HTMLElementProps, + accept?: ?string, + alt?: ?ReactDOM$UserVisibleString, + autoComplete?: ?string, + capture?: ?(boolean | 'user' | 'environment'), + checked?: ?boolean, + disabled?: ?boolean, + form?: ?string, + formAction?: ?(string | ((formData: FormData) => void | Promise)), + formEncType?: ?string, + formMethod?: ?string, + formNoValidate?: ?boolean, + formTarget?: ?string, + height?: ?string, + list?: ?string, + max?: ?(number | string), + maxLength?: ?number, + min?: ?(number | string), + minLength?: ?number, + multiple?: ?boolean, + name?: ?string, + onChange?: ?(SyntheticInputEvent) => mixed, + pattern?: ?string, + placeholder?: ?ReactDOM$UserVisibleString, + readOnly?: ?boolean, + required?: ?boolean, + size?: ?number, + src?: ?string, + step?: ?(number | string), + type?: ?string, + value?: ?(string | $ReadOnlyArray | number), + width?: ?(number | string), +|}; +type ReactDOM$inputInstance = HTMLInputElement; + +type ReactDOM$insProps = {| + ...ReactDOM$HTMLElementProps, + cite?: ?string, + dateTime?: ?string, +|}; +type ReactDOM$insInstance = HTMLModElement; + +type ReactDOM$kbdProps = ReactDOM$HTMLElementProps; +type ReactDOM$kbdInstance = HTMLElement; + +type ReactDOM$keygenProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + challenge?: ?string, + disabled?: ?boolean, + form?: ?string, + keyParams?: ?string, + keyType?: ?string, + name?: ?string, +|}; +type ReactDOM$keygenInstance = HTMLElement; + +type ReactDOM$labelProps = {| + ...ReactDOM$HTMLElementProps, + form?: ?string, + htmlFor?: ?string, +|}; +type ReactDOM$labelInstance = HTMLLabelElement; + +type ReactDOM$legendProps = ReactDOM$HTMLElementProps; +type ReactDOM$legendInstance = HTMLLegendElement; + +type ReactDOM$liProps = {| + ...ReactDOM$HTMLElementProps, + value?: ?(string | $ReadOnlyArray | number), +|}; + +type ReactDOM$liInstance = HTMLLIElement; + +type ReactDOM$linkProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + as?: ?string, + crossOrigin?: ?ReactDOM$CrossOrigin, + fetchPriority?: ?('high' | 'low' | 'auto'), + href?: ?string, + hrefLang?: ?string, + integrity?: ?string, + media?: ?string, + imageSizes?: ?string, + imageSrcSet?: ?string, + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + rel?: ?string, + sizes?: ?string, + type?: ?string, + charSet?: ?string, + + // React props + precedence?: ?string, +|}; +type ReactDOM$linkInstance = HTMLLinkElement; + +type ReactDOM$mainProps = ReactDOM$HTMLElementProps; +type ReactDOM$mainInstance = HTMLElement; + +type ReactDOM$mapProps = {| + ...ReactDOM$HTMLElementProps, + name?: ?string, +|}; +type ReactDOM$mapInstance = HTMLMapElement; + +type ReactDOM$markProps = ReactDOM$HTMLElementProps; +type ReactDOM$markInstance = HTMLElement; + +type ReactDOM$mediaProps = {| + ...ReactDOM$HTMLElementProps, + autoPlay?: ?boolean, + controls?: ?boolean, + controlsList?: ?string, + crossOrigin?: ?ReactDOM$CrossOrigin, + loop?: ?boolean, + mediaGroup?: ?string, + muted?: ?boolean, + playsInline?: ?boolean, + preload?: ?string, + src?: ?string, +|}; +type ReactDOM$mediaInstance = HTMLElement; + +type ReactDOM$menuProps = ReactDOM$HTMLElementProps; +type ReactDOM$menuInstance = HTMLMenuElement; + +type ReactDOM$menuitemProps = ReactDOM$HTMLElementProps; +type ReactDOM$menuitemInstance = HTMLElement; + +type ReactDOM$metaProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + charSet?: ?string, + content?: ?string, + httpEquiv?: ?string, + media?: ?string, + name?: ?string, +|}; +type ReactDOM$metaInstance = HTMLMetaElement; + +type ReactDOM$meterProps = {| + ...ReactDOM$HTMLElementProps, + form?: ?string, + high?: ?number, + low?: ?number, + max?: ?(number | string), + min?: ?(number | string), + optimum?: ?number, + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$meterInstance = HTMLMeterElement; + +type ReactDOM$navProps = ReactDOM$HTMLElementProps; +type ReactDOM$navInstance = HTMLElement; + +type ReactDOM$noscriptProps = ReactDOM$HTMLElementProps; +type ReactDOM$noscriptInstance = HTMLElement; + +type ReactDOM$objectProps = {| + ...ReactDOM$HTMLElementProps, + classID?: ?string, + data?: ?string, + form?: ?string, + height?: ?(number | string), + name?: ?string, + type?: ?string, + useMap?: ?string, + width?: ?(number | string), + wmode?: ?string, +|}; +type ReactDOM$objectInstance = HTMLObjectElement; + +type ReactDOM$olProps = {| + ...ReactDOM$HTMLElementProps, + reversed?: ?boolean, + start?: ?number, + type?: ?('1' | 'a' | 'A' | 'i' | 'I'), +|}; +type ReactDOM$olInstance = HTMLOListElement; + +type ReactDOM$optgroupProps = {| + ...ReactDOM$HTMLElementProps, + disabled?: ?boolean, + label?: ?ReactDOM$UserVisibleString, +|}; + +type ReactDOM$optgroupInstance = HTMLOptGroupElement; + +type ReactDOM$optionProps = {| + ...ReactDOM$HTMLElementProps, + disabled?: ?boolean, + label?: ?ReactDOM$UserVisibleString, + selected?: ?boolean, + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$optionInstance = HTMLOptionElement; + +type ReactDOM$outputProps = {| + ...ReactDOM$HTMLElementProps, + form?: ?string, + htmlFor?: ?string, + name?: ?string, +|}; +type ReactDOM$outputInstance = HTMLElement; + +type ReactDOM$pProps = ReactDOM$HTMLElementProps; +type ReactDOM$pInstance = HTMLParagraphElement; + +type ReactDOM$paramProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + name?: ?string, + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$paramInstance = HTMLParamElement; + +type ReactDOM$pictureProps = ReactDOM$HTMLElementProps; +type ReactDOM$pictureInstance = HTMLPictureElement; + +type ReactDOM$preProps = ReactDOM$HTMLElementProps; +type ReactDOM$preInstance = HTMLPreElement; + +type ReactDOM$progressProps = {| + ...ReactDOM$HTMLElementProps, + max?: ?(number | string), + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$progressInstance = HTMLProgressElement; + +type ReactDOM$qProps = ReactDOM$HTMLElementProps; +type ReactDOM$qInstance = HTMLQuoteElement; + +type ReactDOM$rpProps = ReactDOM$HTMLElementProps; +type ReactDOM$rpInstance = HTMLElement; + +type ReactDOM$rtProps = ReactDOM$HTMLElementProps; +type ReactDOM$rtInstance = HTMLElement; + +type ReactDOM$rubyProps = ReactDOM$HTMLElementProps; +type ReactDOM$rubyInstance = HTMLElement; + +type ReactDOM$sProps = ReactDOM$HTMLElementProps; +type ReactDOM$sInstance = HTMLElement; + +type ReactDOM$sampProps = ReactDOM$HTMLElementProps; +type ReactDOM$sampInstance = HTMLElement; + +type ReactDOM$scriptProps = {| + ...ReactDOM$HTMLElementProps, + async?: ?boolean, + /** @deprecated */ + charSet?: ?string, + crossOrigin?: ?ReactDOM$CrossOrigin, + defer?: ?boolean, + integrity?: ?string, + noModule?: ?boolean, + referrerPolicy?: ?ReactDOM$HTMLAttributeReferrerPolicy, + src?: ?string, + type?: ?string, +|}; +type ReactDOM$scriptInstance = HTMLScriptElement; + +type ReactDOM$sectionProps = ReactDOM$HTMLElementProps; +type ReactDOM$sectionInstance = HTMLElement; + +type ReactDOM$selectProps = {| + ...ReactDOM$HTMLElementProps, + autoComplete?: ?string, + disabled?: ?boolean, + form?: ?string, + multiple?: ?boolean, + name?: ?string, + onChange?: ?(SyntheticEvent) => mixed, + required?: ?boolean, + size?: ?number, + value?: ?(string | $ReadOnlyArray | number), +|}; +type ReactDOM$selectInstance = HTMLSelectElement; + +type ReactDOM$slotProps = {| + ...ReactDOM$HTMLElementProps, + name?: ?string, +|}; +type ReactDOM$slotInstance = HTMLSlotElement; + +type ReactDOM$smallProps = ReactDOM$HTMLElementProps; +type ReactDOM$smallInstance = HTMLElement; + +type ReactDOM$sourceProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + height?: ?(number | string), + media?: ?string, + sizes?: ?string, + src?: ?string, + srcSet?: ?string, + type?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$sourceInstance = HTMLSourceElement; + +type ReactDOM$spanProps = ReactDOM$HTMLElementProps; +type ReactDOM$spanInstance = HTMLSpanElement; + +type ReactDOM$strongProps = ReactDOM$HTMLElementProps; +type ReactDOM$strongInstance = HTMLElement; + +type ReactDOM$styleProps = {| + ...ReactDOM$HTMLElementProps, + href?: ?string, + media?: ?string, + precedence?: ?string, + scoped?: ?boolean, + type?: ?string, +|}; +type ReactDOM$styleInstance = HTMLStyleElement; + +type ReactDOM$subProps = ReactDOM$HTMLElementProps; +type ReactDOM$subInstance = HTMLElement; + +type ReactDOM$summaryProps = ReactDOM$HTMLElementProps; +type ReactDOM$summaryInstance = HTMLElement; + +type ReactDOM$supProps = ReactDOM$HTMLElementProps; +type ReactDOM$supInstance = HTMLElement; + +type ReactDOM$tableProps = {| + ...ReactDOM$HTMLElementProps, + align?: ?('left' | 'center' | 'right'), + bgcolor?: ?string, + border?: ?number, + cellPadding?: ?(number | string), + cellSpacing?: ?(number | string), + frame?: ?boolean, + rules?: ?('none' | 'groups' | 'rows' | 'columns' | 'all'), + summary?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$tableInstance = HTMLTableElement; + +type ReactDOM$tbodyProps = ReactDOM$HTMLElementProps; +type ReactDOM$tbodyInstance = HTMLTableSectionElement; + +type ReactDOM$tdProps = {| + ...ReactDOM$HTMLElementProps, + abbr?: ?string, + align?: ?('left' | 'center' | 'right' | 'justify' | 'char'), + colSpan?: ?number, + headers?: ?string, + height?: ?(number | string), + rowSpan?: ?number, + scope?: ?string, + valign?: ?('top' | 'middle' | 'bottom' | 'baseline'), + width?: ?(number | string), +|}; +type ReactDOM$tdInstance = HTMLTableCellElement; + +type ReactDOM$textareaProps = {| + ...ReactDOM$HTMLElementProps, + autoComplete?: ?string, + cols?: ?number, + dirName?: ?string, + disabled?: ?boolean, + form?: ?string, + maxLength?: ?number, + minLength?: ?number, + name?: ?string, + onChange?: ?(SyntheticEvent) => mixed, + placeholder?: ?ReactDOM$UserVisibleString, + readOnly?: ?boolean, + required?: ?boolean, + rows?: ?number, + value?: ?(string | $ReadOnlyArray | number), + wrap?: ?string, +|}; +type ReactDOM$textareaInstance = HTMLTextAreaElement; + +type ReactDOM$tfootProps = ReactDOM$HTMLElementProps; +type ReactDOM$tfootInstance = HTMLTableSectionElement; + +type ReactDOM$thProps = {| + ...ReactDOM$HTMLElementProps, + abbr?: ?string, + align?: ?('left' | 'center' | 'right' | 'justify' | 'char'), + colSpan?: ?number, + headers?: ?string, + rowSpan?: ?number, + scope?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$thInstance = HTMLTableCellElement; + +type ReactDOM$theadProps = ReactDOM$HTMLElementProps; +type ReactDOM$theadInstance = HTMLTableSectionElement; + +type ReactDOM$timeProps = {| + ...ReactDOM$HTMLElementProps, + dateTime?: ?string, +|}; +type ReactDOM$timeInstance = HTMLTimeElement; + +type ReactDOM$titleProps = ReactDOM$HTMLElementProps; +type ReactDOM$titleInstance = HTMLTitleElement; + +type ReactDOM$trProps = ReactDOM$HTMLElementProps; +type ReactDOM$trInstance = HTMLTableRowElement; + +type ReactDOM$trackProps = {| + ...ReactDOM$SelfClosingHTMLElementProps, + default?: ?boolean, + kind?: ?string, + label?: ?ReactDOM$UserVisibleString, + src?: ?string, + srcLang?: ?string, +|}; +type ReactDOM$trackInstance = HTMLTrackElement; + +type ReactDOM$uProps = ReactDOM$HTMLElementProps; +type ReactDOM$uInstance = HTMLElement; + +type ReactDOM$ulProps = ReactDOM$HTMLElementProps; +type ReactDOM$ulInstance = HTMLUListElement; + +type ReactDOM$varProps = ReactDOM$HTMLElementProps; +type ReactDOM$varInstance = HTMLElement; + +type ReactDOM$videoProps = {| + ...ReactDOM$HTMLElementProps, + autoPlay?: ?boolean, + controls?: ?boolean, + controlsList?: ?string, + crossOrigin?: ?ReactDOM$CrossOrigin, + disablePictureInPicture?: ?boolean, + disableRemotePlayback?: ?boolean, + height?: ?(number | string), + loop?: ?boolean, + muted?: ?boolean, + playsInline?: ?boolean, + poster?: ?string, + preload?: ?string, + src?: ?string, + width?: ?(number | string), +|}; +type ReactDOM$videoInstance = HTMLVideoElement; + +type ReactDOM$wbrProps = ReactDOM$SelfClosingHTMLElementProps; +type ReactDOM$wbrInstance = HTMLElement; + +type ReactDOM$SVGElementProps = {| + ...ReactDOM$ReactSpecificProps, + ...ReactDOM$AriaAttributes, + + // Attributes which also defined in HTMLAttributes + className?: ?string, + color?: ?string, + height?: ?(number | string), + id?: ?string, + lang?: ?string, + max?: ?(number | string), + media?: ?string, + method?: ?string, + min?: ?(number | string), + name?: ?string, + style?: ?any, + target?: ?string, + type?: ?string, + width?: ?(number | string), + + // Other HTML properties supported by SVG elements in browsers + role?: ?string, + tabIndex?: ?number, + crossOrigin?: ?ReactDOM$CrossOrigin, + + // SVG Specific attributes + accentHeight?: ?(number | string), + accumulate?: ?('none' | 'sum'), + additive?: ?('replace' | 'sum'), + alignmentBaseline?: ?( + | 'auto' + | 'baseline' + | 'before-edge' + | 'text-before-edge' + | 'middle' + | 'central' + | 'after-edge' + | 'text-after-edge' + | 'ideographic' + | 'alphabetic' + | 'hanging' + | 'mathematical' + | 'inherit' + ), + allowReorder?: ?('no' | 'yes'), + alphabetic?: ?(number | string), + amplitude?: ?(number | string), + arabicForm?: ?('initial' | 'medial' | 'terminal' | 'isolated'), + ascent?: ?(number | string), + attributeName?: ?string, + attributeType?: ?string, + autoReverse?: ?ReactDOM$BooleanishString, + azimuth?: ?(number | string), + baseFrequency?: ?(number | string), + baselineShift?: ?(number | string), + baseProfile?: ?(number | string), + bbox?: ?(number | string), + begin?: ?(number | string), + bias?: ?(number | string), + by?: ?(number | string), + calcMode?: ?(number | string), + capHeight?: ?(number | string), + clip?: ?(number | string), + clipPath?: ?string, + clipPathUnits?: ?(number | string), + clipRule?: ?(number | string), + colorInterpolation?: ?(number | string), + colorInterpolationFilters?: ?('auto' | 'sRGB' | 'linearRGB' | 'inherit'), + colorProfile?: ?(number | string), + colorRendering?: ?(number | string), + contentScriptType?: ?(number | string), + contentStyleType?: ?(number | string), + cursor?: ?(number | string), + cx?: ?(number | string), + cy?: ?(number | string), + d?: ?string, + decelerate?: ?(number | string), + descent?: ?(number | string), + diffuseConstant?: ?(number | string), + direction?: ?(number | string), + display?: ?(number | string), + divisor?: ?(number | string), + dominantBaseline?: ?(number | string), + dur?: ?(number | string), + dx?: ?(number | string), + dy?: ?(number | string), + edgeMode?: ?(number | string), + elevation?: ?(number | string), + enableBackground?: ?(number | string), + end?: ?(number | string), + exponent?: ?(number | string), + externalResourcesRequired?: ?ReactDOM$BooleanishString, + fill?: ?string, + fillOpacity?: ?(number | string), + fillRule?: ?('nonzero' | 'evenodd' | 'inherit'), + filter?: ?string, + filterRes?: ?(number | string), + filterUnits?: ?(number | string), + floodColor?: ?(number | string), + floodOpacity?: ?(number | string), + focusable?: ?(ReactDOM$BooleanishString | 'auto'), + fontFamily?: ?string, + fontSize?: ?(number | string), + fontSizeAdjust?: ?(number | string), + fontStretch?: ?(number | string), + fontStyle?: ?(number | string), + fontVariant?: ?(number | string), + fontWeight?: ?(number | string), + format?: ?(number | string), + fr?: ?(number | string), + from?: ?(number | string), + fx?: ?(number | string), + fy?: ?(number | string), + g1?: ?(number | string), + g2?: ?(number | string), + glyphName?: ?(number | string), + glyphOrientationHorizontal?: ?(number | string), + glyphOrientationVertical?: ?(number | string), + glyphRef?: ?(number | string), + gradientTransform?: ?string, + gradientUnits?: ?string, + hanging?: ?(number | string), + horizAdvX?: ?(number | string), + horizOriginX?: ?(number | string), + href?: ?string, + ideographic?: ?(number | string), + imageRendering?: ?(number | string), + in?: ?string, + in2?: ?(number | string), + intercept?: ?(number | string), + k?: ?(number | string), + k1?: ?(number | string), + k2?: ?(number | string), + k3?: ?(number | string), + k4?: ?(number | string), + kernelMatrix?: ?(number | string), + kernelUnitLength?: ?(number | string), + kerning?: ?(number | string), + keyPoints?: ?(number | string), + keySplines?: ?(number | string), + keyTimes?: ?(number | string), + lengthAdjust?: ?(number | string), + letterSpacing?: ?(number | string), + lightingColor?: ?(number | string), + limitingConeAngle?: ?(number | string), + local?: ?(number | string), + markerEnd?: ?string, + markerHeight?: ?(number | string), + markerMid?: ?string, + markerStart?: ?string, + markerUnits?: ?(number | string), + markerWidth?: ?(number | string), + mask?: ?string, + maskContentUnits?: ?(number | string), + maskUnits?: ?(number | string), + mathematical?: ?(number | string), + mode?: ?(number | string), + numOctaves?: ?(number | string), + offset?: ?(number | string), + opacity?: ?(number | string), + operator?: ?(number | string), + order?: ?(number | string), + orient?: ?(number | string), + orientation?: ?(number | string), + origin?: ?(number | string), + overflow?: ?(number | string), + overlinePosition?: ?(number | string), + overlineThickness?: ?(number | string), + paintOrder?: ?(number | string), + panose1?: ?(number | string), + path?: ?string, + pathLength?: ?(number | string), + patternContentUnits?: ?string, + patternTransform?: ?(number | string), + patternUnits?: ?string, + pointerEvents?: ?(number | string), + points?: ?string, + pointsAtX?: ?(number | string), + pointsAtY?: ?(number | string), + pointsAtZ?: ?(number | string), + preserveAlpha?: ?ReactDOM$BooleanishString, + preserveAspectRatio?: ?string, + primitiveUnits?: ?(number | string), + r?: ?(number | string), + radius?: ?(number | string), + refX?: ?(number | string), + refY?: ?(number | string), + renderingIntent?: ?(number | string), + repeatCount?: ?(number | string), + repeatDur?: ?(number | string), + requiredExtensions?: ?(number | string), + requiredFeatures?: ?(number | string), + restart?: ?(number | string), + result?: ?string, + rotate?: ?(number | string), + rx?: ?(number | string), + ry?: ?(number | string), + scale?: ?(number | string), + seed?: ?(number | string), + shapeRendering?: ?(number | string), + slope?: ?(number | string), + spacing?: ?(number | string), + specularConstant?: ?(number | string), + specularExponent?: ?(number | string), + speed?: ?(number | string), + spreadMethod?: ?string, + startOffset?: ?(number | string), + stdDeviation?: ?(number | string), + stemh?: ?(number | string), + stemv?: ?(number | string), + stitchTiles?: ?(number | string), + stopColor?: ?string, + stopOpacity?: ?(number | string), + strikethroughPosition?: ?(number | string), + strikethroughThickness?: ?(number | string), + string?: ?(number | string), + stroke?: ?string, + strokeDasharray?: ?(string | number), + strokeDashoffset?: ?(string | number), + strokeLinecap?: ?('butt' | 'round' | 'square' | 'inherit'), + strokeLinejoin?: ?('miter' | 'round' | 'bevel' | 'inherit'), + strokeMiterlimit?: ?(number | string), + strokeOpacity?: ?(number | string), + strokeWidth?: ?(number | string), + surfaceScale?: ?(number | string), + systemLanguage?: ?(number | string), + tableValues?: ?(number | string), + targetX?: ?(number | string), + targetY?: ?(number | string), + textAnchor?: ?string, + textDecoration?: ?(number | string), + textLength?: ?(number | string), + textRendering?: ?(number | string), + to?: ?(number | string), + transform?: ?string, + u1?: ?(number | string), + u2?: ?(number | string), + underlinePosition?: ?(number | string), + underlineThickness?: ?(number | string), + unicode?: ?(number | string), + unicodeBidi?: ?(number | string), + unicodeRange?: ?(number | string), + unitsPerEm?: ?(number | string), + vAlphabetic?: ?(number | string), + values?: ?string, + vectorEffect?: ?(number | string), + version?: ?string, + vertAdvY?: ?(number | string), + vertOriginX?: ?(number | string), + vertOriginY?: ?(number | string), + vHanging?: ?(number | string), + vIdeographic?: ?(number | string), + viewBox?: ?string, + viewTarget?: ?(number | string), + visibility?: ?(number | string), + vMathematical?: ?(number | string), + widths?: ?(number | string), + wordSpacing?: ?(number | string), + writingMode?: ?(number | string), + x?: ?(number | string), + x1?: ?(number | string), + x2?: ?(number | string), + xChannelSelector?: ?string, + xHeight?: ?(number | string), + xlinkActuate?: ?string, + xlinkArcrole?: ?string, + xlinkHref?: ?string, + xlinkRole?: ?string, + xlinkShow?: ?string, + xlinkTitle?: ?string, + xlinkType?: ?string, + xmlBase?: ?string, + xmlLang?: ?string, + xmlns?: ?string, + xmlnsXlink?: ?string, + xmlSpace?: ?string, + y?: ?(number | string), + y1?: ?(number | string), + y2?: ?(number | string), + yChannelSelector?: ?string, + z?: ?(number | string), + zoomAndPan?: ?string, + ...ReactDOM$CustomSVGProps, +|}; + +// SVG Elements + +type ReactDOM$CustomSVGProps = {| + line_height?: ?(number | string), +|}; + +type ReactDOM$svgProps = ReactDOM$SVGElementProps; +type ReactDOM$svgInstance = Element; + +type ReactDOM$animateProps = ReactDOM$SVGElementProps; +type ReactDOM$animateInstance = Element; + +type ReactDOM$animateMotionProps = ReactDOM$SVGElementProps; +type ReactDOM$animateMotionInstance = Element; + +type ReactDOM$animateTransformProps = ReactDOM$SVGElementProps; +type ReactDOM$animateTransformInstance = Element; + +type ReactDOM$circleProps = ReactDOM$SVGElementProps; +type ReactDOM$circleInstance = Element; + +type ReactDOM$clipPathProps = ReactDOM$SVGElementProps; +type ReactDOM$clipPathInstance = Element; + +type ReactDOM$defsProps = ReactDOM$SVGElementProps; +type ReactDOM$defsInstance = Element; + +type ReactDOM$descProps = ReactDOM$SVGElementProps; +type ReactDOM$descInstance = Element; + +type ReactDOM$ellipseProps = ReactDOM$SVGElementProps; +type ReactDOM$ellipseInstance = Element; + +type ReactDOM$feBlendProps = ReactDOM$SVGElementProps; +type ReactDOM$feBlendInstance = Element; + +type ReactDOM$feColorMatrixProps = ReactDOM$SVGElementProps; +type ReactDOM$feColorMatrixInstance = Element; + +type ReactDOM$feComponentTransferProps = ReactDOM$SVGElementProps; +type ReactDOM$feComponentTransferInstance = Element; + +type ReactDOM$feCompositeProps = ReactDOM$SVGElementProps; +type ReactDOM$feCompositeInstance = Element; + +type ReactDOM$feConvolveMatrixProps = ReactDOM$SVGElementProps; +type ReactDOM$feConvolveMatrixInstance = Element; + +type ReactDOM$feDiffuseLightingProps = ReactDOM$SVGElementProps; +type ReactDOM$feDiffuseLightingInstance = Element; + +type ReactDOM$feDisplacementMapProps = ReactDOM$SVGElementProps; +type ReactDOM$feDisplacementMapInstance = Element; + +type ReactDOM$feDistantLightProps = ReactDOM$SVGElementProps; +type ReactDOM$feDistantLightInstance = Element; + +type ReactDOM$feDropShadowProps = ReactDOM$SVGElementProps; +type ReactDOM$feDropShadowInstance = Element; + +type ReactDOM$feFloodProps = ReactDOM$SVGElementProps; +type ReactDOM$feFloodInstance = Element; + +type ReactDOM$feFuncAProps = ReactDOM$SVGElementProps; +type ReactDOM$feFuncAInstance = Element; + +type ReactDOM$feFuncBProps = ReactDOM$SVGElementProps; +type ReactDOM$feFuncBInstance = Element; + +type ReactDOM$feFuncGProps = ReactDOM$SVGElementProps; +type ReactDOM$feFuncGInstance = Element; + +type ReactDOM$feFuncRProps = ReactDOM$SVGElementProps; +type ReactDOM$feFuncRInstance = Element; + +type ReactDOM$feGaussianBlurProps = ReactDOM$SVGElementProps; +type ReactDOM$feGaussianBlurInstance = Element; + +type ReactDOM$feImageProps = ReactDOM$SVGElementProps; +type ReactDOM$feImageInstance = Element; + +type ReactDOM$feMergeProps = ReactDOM$SVGElementProps; +type ReactDOM$feMergeInstance = Element; + +type ReactDOM$feMergeNodeProps = ReactDOM$SVGElementProps; +type ReactDOM$feMergeNodeInstance = Element; + +type ReactDOM$feMorphologyProps = ReactDOM$SVGElementProps; +type ReactDOM$feMorphologyInstance = Element; + +type ReactDOM$feOffsetProps = ReactDOM$SVGElementProps; +type ReactDOM$feOffsetInstance = Element; + +type ReactDOM$fePointLightProps = ReactDOM$SVGElementProps; +type ReactDOM$fePointLightInstance = Element; + +type ReactDOM$feSpecularLightingProps = ReactDOM$SVGElementProps; +type ReactDOM$feSpecularLightingInstance = Element; + +type ReactDOM$feSpotLightProps = ReactDOM$SVGElementProps; +type ReactDOM$feSpotLightInstance = Element; + +type ReactDOM$feTileProps = ReactDOM$SVGElementProps; +type ReactDOM$feTileInstance = Element; + +type ReactDOM$feTurbulenceProps = ReactDOM$SVGElementProps; +type ReactDOM$feTurbulenceInstance = Element; + +type ReactDOM$filterProps = ReactDOM$SVGElementProps; +type ReactDOM$filterInstance = Element; + +type ReactDOM$foreignObjectProps = ReactDOM$SVGElementProps; +type ReactDOM$foreignObjectInstance = Element; + +type ReactDOM$gProps = ReactDOM$SVGElementProps; +type ReactDOM$gInstance = Element; + +type ReactDOM$imageProps = ReactDOM$SVGElementProps; +type ReactDOM$imageInstance = Element; + +type ReactDOM$lineProps = ReactDOM$SVGElementProps; +type ReactDOM$lineInstance = Element; + +type ReactDOM$linearGradientProps = ReactDOM$SVGElementProps; +type ReactDOM$linearGradientInstance = Element; + +type ReactDOM$markerProps = ReactDOM$SVGElementProps; +type ReactDOM$markerInstance = Element; + +type ReactDOM$maskProps = ReactDOM$SVGElementProps; +type ReactDOM$maskInstance = Element; + +type ReactDOM$metadataProps = ReactDOM$SVGElementProps; +type ReactDOM$metadataInstance = Element; + +type ReactDOM$mpathProps = ReactDOM$SVGElementProps; +type ReactDOM$mpathInstance = Element; + +type ReactDOM$pathProps = ReactDOM$SVGElementProps; +type ReactDOM$pathInstance = Element; + +type ReactDOM$patternProps = ReactDOM$SVGElementProps; +type ReactDOM$patternInstance = Element; + +type ReactDOM$polygonProps = ReactDOM$SVGElementProps; +type ReactDOM$polygonInstance = Element; + +type ReactDOM$polylineProps = ReactDOM$SVGElementProps; +type ReactDOM$polylineInstance = Element; + +type ReactDOM$radialGradientProps = ReactDOM$SVGElementProps; +type ReactDOM$radialGradientInstance = Element; + +type ReactDOM$rectProps = ReactDOM$SVGElementProps; +type ReactDOM$rectInstance = Element; + +type ReactDOM$setProps = ReactDOM$SVGElementProps; +type ReactDOM$setInstance = Element; + +type ReactDOM$stopProps = ReactDOM$SVGElementProps; +type ReactDOM$stopInstance = Element; + +type ReactDOM$switchProps = ReactDOM$SVGElementProps; +type ReactDOM$switchInstance = Element; + +type ReactDOM$symbolProps = ReactDOM$SVGElementProps; +type ReactDOM$symbolInstance = Element; + +type ReactDOM$textProps = ReactDOM$SVGElementProps; +type ReactDOM$textInstance = Element; + +type ReactDOM$textPathProps = ReactDOM$SVGElementProps; +type ReactDOM$textPathInstance = Element; + +type ReactDOM$tspanProps = ReactDOM$SVGElementProps; +type ReactDOM$tspanInstance = Element; + +type ReactDOM$useProps = ReactDOM$SVGElementProps; +type ReactDOM$useInstance = Element; + +type ReactDOM$viewProps = ReactDOM$SVGElementProps; +type ReactDOM$viewInstance = Element;