/** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @nolint * @format */ declare module 'react-dom' { declare function findDOMNode( componentOrElement: Element | ?React$Component, ): null | Element | Text; declare function render( element: React$Element, container: Element, callback?: () => void, ): React$ElementRef; declare function hydrate( element: React$Element, container: Element, callback?: () => void, ): React$ElementRef; declare function createPortal( node: React$Node, container: Element, ): React$Portal; declare function unmountComponentAtNode(container: any): boolean; declare var version: string; declare function unstable_batchedUpdates( callback: (a: A, b: B, c: C, d: D, e: E) => mixed, a: A, b: B, c: C, d: D, e: E, ): void; declare function unstable_renderSubtreeIntoContainer< ElementType: React$ElementType, >( parentComponent: React$Component, nextElement: React$Element, container: any, callback?: () => void, ): React$ElementRef; } declare module 'react-dom/server' { declare function renderToString(element: React$Node): string; declare function renderToStaticMarkup(element: React$Node): string; declare function renderToNodeStream(element: React$Node): stream$Readable; declare function renderToStaticNodeStream( element: React$Node, ): stream$Readable; declare var version: string; } declare module 'react-dom/test-utils' { declare var Simulate: { [eventName: string]: (element: Element, eventData?: Object) => void, }; declare function renderIntoDocument( instance: React$Element, ): React$Component; declare function mockComponent( componentClass: React$ElementType, mockTagName?: string, ): Object; declare function isElement(element: React$Element): boolean; declare function isElementOfType( element: React$Element, componentClass: React$ElementType, ): boolean; declare function isDOMComponent(instance: any): boolean; declare function isCompositeComponent( instance: React$Component, ): boolean; declare function isCompositeComponentWithType( instance: React$Component, componentClass: React$ElementType, ): boolean; declare function findAllInRenderedTree( tree: React$Component, test: (child: React$Component) => boolean, ): Array>; declare function scryRenderedDOMComponentsWithClass( tree: React$Component, className: string, ): Array; declare function findRenderedDOMComponentWithClass( tree: React$Component, className: string, ): ?Element; declare function scryRenderedDOMComponentsWithTag( tree: React$Component, tagName: string, ): Array; declare function findRenderedDOMComponentWithTag( tree: React$Component, tagName: string, ): ?Element; declare function scryRenderedComponentsWithType( tree: React$Component, componentClass: React$ElementType, ): Array>; declare function findRenderedComponentWithType( tree: React$Component, componentClass: React$ElementType, ): ?React$Component; } 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; 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; persist(): void; } 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 { +target: HTMLInputElement; data: any; } 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: any; key: string; keyCode: number; locale: string; location: number; metaKey: boolean; repeat: boolean; shiftKey: boolean; which: number; } declare class SyntheticMouseEvent< +T: EventTarget = EventTarget, > extends SyntheticUIEvent { altKey: boolean; button: number; buttons: number; clientX: number; clientY: number; ctrlKey: boolean; getModifierState: any; 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 { pointerId: number; width: number; height: number; pressure: number; tangentialPressure: number; tiltX: number; tiltY: number; twist: number; pointerType: string; isPrimary: boolean; } declare class SyntheticTouchEvent< +T: EventTarget = EventTarget, > extends SyntheticUIEvent { altKey: boolean; changedTouches: any; ctrlKey: boolean; getModifierState: any; metaKey: boolean; shiftKey: boolean; targetTouches: any; touches: any; } declare class SyntheticTransitionEvent< +T: EventTarget = EventTarget, > extends SyntheticEvent { propertyName: string; elapsedTime: number; pseudoElement: string; } // prettier-ignore declare type $JSXIntrinsics = { // HTML a: {instance: HTMLAnchorElement, props: {children?: React$Node, [key: string]: any}}, abbr: ReactDOM$HTMLElementJSXIntrinsic, address: ReactDOM$HTMLElementJSXIntrinsic, area: ReactDOM$HTMLElementJSXIntrinsic, article: ReactDOM$HTMLElementJSXIntrinsic, aside: ReactDOM$HTMLElementJSXIntrinsic, audio: {instance: HTMLAudioElement, props: {children?: React$Node, [key: string]: any}}, b: ReactDOM$HTMLElementJSXIntrinsic, base: ReactDOM$HTMLElementJSXIntrinsic, bdi: ReactDOM$HTMLElementJSXIntrinsic, bdo: ReactDOM$HTMLElementJSXIntrinsic, big: ReactDOM$HTMLElementJSXIntrinsic, blockquote: ReactDOM$HTMLElementJSXIntrinsic, body: ReactDOM$HTMLElementJSXIntrinsic, br: {instance: HTMLBRElement, props: {children?: React$Node, [key: string]: any}}, button: {instance: HTMLButtonElement, props: {children?: React$Node, [key: string]: any}}, canvas: {instance: HTMLCanvasElement, props: {children?: React$Node, [key: string]: any}}, caption: {instance: HTMLTableCaptionElement, props: {children?: React$Node, [key: string]: any}}, cite: ReactDOM$HTMLElementJSXIntrinsic, code: ReactDOM$HTMLElementJSXIntrinsic, col: ReactDOM$HTMLElementJSXIntrinsic, colgroup: ReactDOM$HTMLElementJSXIntrinsic, data: ReactDOM$HTMLElementJSXIntrinsic, datalist: ReactDOM$HTMLElementJSXIntrinsic, dd: ReactDOM$HTMLElementJSXIntrinsic, del: ReactDOM$HTMLElementJSXIntrinsic, details: {instance: HTMLDetailsElement, props: {children?: React$Node, [key: string]: any}}, dfn: ReactDOM$HTMLElementJSXIntrinsic, dialog: ReactDOM$HTMLElementJSXIntrinsic, div: {instance: HTMLDivElement, props: {children?: React$Node, [key: string]: any}}, dl: {instance: HTMLDListElement, props: {children?: React$Node, [key: string]: any}}, dt: ReactDOM$HTMLElementJSXIntrinsic, em: ReactDOM$HTMLElementJSXIntrinsic, embed: ReactDOM$HTMLElementJSXIntrinsic, fieldset: {instance: HTMLFieldSetElement, props: {children?: React$Node, [key: string]: any}}, figcaption: ReactDOM$HTMLElementJSXIntrinsic, figure: ReactDOM$HTMLElementJSXIntrinsic, footer: ReactDOM$HTMLElementJSXIntrinsic, form: {instance: HTMLFormElement, props: {children?: React$Node, [key: string]: any}}, h1: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, h2: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, h3: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, h4: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, h5: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, h6: {instance: HTMLHeadingElement, props: {children?: React$Node, [key: string]: any}}, head: ReactDOM$HTMLElementJSXIntrinsic, header: ReactDOM$HTMLElementJSXIntrinsic, hgroup: ReactDOM$HTMLElementJSXIntrinsic, hr: {instance: HTMLHRElement, props: {children?: React$Node, [key: string]: any}}, html: ReactDOM$HTMLElementJSXIntrinsic, i: ReactDOM$HTMLElementJSXIntrinsic, iframe: {instance: HTMLIFrameElement, props: {children?: React$Node, [key: string]: any}}, img: {instance: HTMLImageElement, props: {children?: React$Node, [key: string]: any}}, ins: ReactDOM$HTMLElementJSXIntrinsic, kbd: ReactDOM$HTMLElementJSXIntrinsic, keygen: ReactDOM$HTMLElementJSXIntrinsic, label: {instance: HTMLLabelElement, props: {children?: React$Node, [key: string]: any}}, legend: {instance: HTMLLegendElement, props: {children?: React$Node, [key: string]: any}}, li: {instance: HTMLLIElement, props: {children?: React$Node, [key: string]: any}}, link: {instance: HTMLLinkElement, props: {children?: React$Node, [key: string]: any}}, main: ReactDOM$HTMLElementJSXIntrinsic, map: ReactDOM$HTMLElementJSXIntrinsic, mark: ReactDOM$HTMLElementJSXIntrinsic, menu: ReactDOM$HTMLElementJSXIntrinsic, menuitem: ReactDOM$HTMLElementJSXIntrinsic, meta: {instance: HTMLMetaElement, props: {children?: React$Node, [key: string]: any}}, meter: ReactDOM$HTMLElementJSXIntrinsic, nav: ReactDOM$HTMLElementJSXIntrinsic, noscript: ReactDOM$HTMLElementJSXIntrinsic, object: ReactDOM$HTMLElementJSXIntrinsic, ol: {instance: HTMLOListElement, props: {children?: React$Node, [key: string]: any}}, optgroup: {instance: HTMLOptGroupElement, props: {children?: React$Node, [key: string]: any}}, option: {instance: HTMLOptionElement, props: {children?: React$Node, [key: string]: any}}, output: ReactDOM$HTMLElementJSXIntrinsic, p: {instance: HTMLParagraphElement, props: {children?: React$Node, [key: string]: any}}, param: ReactDOM$HTMLElementJSXIntrinsic, picture: ReactDOM$HTMLElementJSXIntrinsic, pre: {instance: HTMLPreElement, props: {children?: React$Node, [key: string]: any}}, progress: ReactDOM$HTMLElementJSXIntrinsic, q: ReactDOM$HTMLElementJSXIntrinsic, rp: ReactDOM$HTMLElementJSXIntrinsic, rt: ReactDOM$HTMLElementJSXIntrinsic, ruby: ReactDOM$HTMLElementJSXIntrinsic, s: ReactDOM$HTMLElementJSXIntrinsic, samp: ReactDOM$HTMLElementJSXIntrinsic, script: {instance: HTMLScriptElement, props: {children?: React$Node, [key: string]: any}}, section: ReactDOM$HTMLElementJSXIntrinsic, small: ReactDOM$HTMLElementJSXIntrinsic, source: {instance: HTMLSourceElement, props: {children?: React$Node, [key: string]: any}}, span: {instance: HTMLSpanElement, props: {children?: React$Node, [key: string]: any}}, strong: ReactDOM$HTMLElementJSXIntrinsic, style: {instance: HTMLStyleElement, props: {children?: React$Node, [key: string]: any}}, sub: ReactDOM$HTMLElementJSXIntrinsic, summary: ReactDOM$HTMLElementJSXIntrinsic, sup: ReactDOM$HTMLElementJSXIntrinsic, table: {instance: HTMLTableElement, props: {children?: React$Node, [key: string]: any}}, tbody: {instance: HTMLTableSectionElement, props: {children?: React$Node, [key: string]: any}}, td: {instance: HTMLTableCellElement, props: {children?: React$Node, [key: string]: any}}, tfoot: {instance: HTMLTableSectionElement, props: {children?: React$Node, [key: string]: any}}, th: {instance: HTMLTableCellElement, props: {children?: React$Node, [key: string]: any}}, thead: {instance: HTMLTableSectionElement, props: {children?: React$Node, [key: string]: any}}, time: ReactDOM$HTMLElementJSXIntrinsic, title: ReactDOM$HTMLElementJSXIntrinsic, tr: {instance: HTMLTableRowElement, props: {children?: React$Node, [key: string]: any}}, track: ReactDOM$HTMLElementJSXIntrinsic, u: ReactDOM$HTMLElementJSXIntrinsic, ul: {instance: HTMLUListElement, props: {children?: React$Node, [key: string]: any}}, 'var': ReactDOM$HTMLElementJSXIntrinsic, video: {instance: HTMLVideoElement, props: {children?: React$Node, [key: string]: any}}, wbr: ReactDOM$HTMLElementJSXIntrinsic, // SVG svg: ReactDOM$SVGElementJSXIntrinsic, animate: ReactDOM$SVGElementJSXIntrinsic, circle: ReactDOM$SVGElementJSXIntrinsic, defs: ReactDOM$SVGElementJSXIntrinsic, ellipse: ReactDOM$SVGElementJSXIntrinsic, g: ReactDOM$SVGElementJSXIntrinsic, image: ReactDOM$SVGElementJSXIntrinsic, line: ReactDOM$SVGElementJSXIntrinsic, linearGradient: ReactDOM$SVGElementJSXIntrinsic, mask: ReactDOM$SVGElementJSXIntrinsic, path: ReactDOM$SVGElementJSXIntrinsic, pattern: ReactDOM$SVGElementJSXIntrinsic, polygon: ReactDOM$SVGElementJSXIntrinsic, polyline: ReactDOM$SVGElementJSXIntrinsic, radialGradient: ReactDOM$SVGElementJSXIntrinsic, rect: ReactDOM$SVGElementJSXIntrinsic, stop: ReactDOM$SVGElementJSXIntrinsic, symbol: ReactDOM$SVGElementJSXIntrinsic, text: ReactDOM$SVGElementJSXIntrinsic, tspan: ReactDOM$SVGElementJSXIntrinsic, use: ReactDOM$SVGElementJSXIntrinsic, // Elements React adds extra props for. input: {instance: HTMLInputElement, props: {children?: React$Node, [key: string]: any}}, textarea: {instance: HTMLTextAreaElement, props: {children?: React$Node, [key: string]: any}}, select: {instance: HTMLSelectElement, props: {children?: React$Node, [key: string]: any}}, // Catch-all for custom elements. [string]: ReactDOM$HTMLElementJSXIntrinsic, }; type ReactDOM$HTMLElementJSXIntrinsic = { instance: HTMLElement, props: {children?: React$Node, [key: string]: any}, }; type ReactDOM$SVGElementJSXIntrinsic = { instance: Element, props: {children?: React$Node, [key: string]: any}, };