summaryrefslogtreecommitdiff
path: root/std/types/react-dom.d.ts
blob: 3be59411fb25bca668219bd55b262943f52b5adf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// These types are adapted from
// https://github.com/DefinitelyTyped/DefinitelyTyped to work under Deno.
//
// Type definitions for React (react-dom) 16.9
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>
//                 AssureSign <http://www.assuresign.com>
//                 Microsoft <https://microsoft.com>
//                 MartynasZilinskas <https://github.com/MartynasZilinskas>
//                 Josh Rutherford <https://github.com/theruther4d>
//                 Jessica Franco <https://github.com/Jessidhia>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8

// NOTE: Users of the `experimental` builds of React should add a reference
// to 'react-dom/experimental' in their project. See experimental.d.ts's top comment
// for reference and documentation on how exactly to do it.

/* eslint-disable */

export as namespace ReactDOM;

import {
  ReactInstance,
  Component,
  ComponentState,
  ReactElement,
  SFCElement,
  CElement,
  DOMAttributes,
  DOMElement,
  ReactNode,
  ReactPortal,
} from "./react.d.ts";

export function findDOMNode(
  instance: ReactInstance | null | undefined
): Element | null | Text;
export function unmountComponentAtNode(container: Element): boolean;

export function createPortal(
  children: ReactNode,
  container: Element,
  key?: null | string
): ReactPortal;

export const version: string;
export const render: Renderer;
export const hydrate: Renderer;

export function unstable_batchedUpdates<A, B>(
  callback: (a: A, b: B) => any,
  a: A,
  b: B
): void;
export function unstable_batchedUpdates<A>(callback: (a: A) => any, a: A): void;
export function unstable_batchedUpdates(callback: () => any): void;

export function unstable_renderSubtreeIntoContainer<T extends Element>(
  parentComponent: Component<any>,
  element: DOMElement<DOMAttributes<T>, T>,
  container: Element,
  callback?: (element: T) => any
): T;
export function unstable_renderSubtreeIntoContainer<
  P,
  T extends Component<P, ComponentState>
>(
  parentComponent: Component<any>,
  element: CElement<P, T>,
  container: Element,
  callback?: (component: T) => any
): T;
export function unstable_renderSubtreeIntoContainer<P>(
  parentComponent: Component<any>,
  element: ReactElement<P>,
  container: Element,
  callback?: (component?: Component<P, ComponentState> | Element) => any
): Component<P, ComponentState> | Element | void;

export interface Renderer {
  // Deprecated(render): The return value is deprecated.
  // In future releases the render function's return type will be void.

  <T extends Element>(
    element: DOMElement<DOMAttributes<T>, T>,
    container: Element | null,
    callback?: () => void
  ): T;

  (
    element: Array<DOMElement<DOMAttributes<any>, any>>,
    container: Element | null,
    callback?: () => void
  ): Element;

  (
    element: SFCElement<any> | Array<SFCElement<any>>,
    container: Element | null,
    callback?: () => void
  ): void;

  <P, T extends Component<P, ComponentState>>(
    element: CElement<P, T>,
    container: Element | null,
    callback?: () => void
  ): T;

  (
    element: Array<CElement<any, Component<any, ComponentState>>>,
    container: Element | null,
    callback?: () => void
  ): Component<any, ComponentState>;

  <P>(
    element: ReactElement<P>,
    container: Element | null,
    callback?: () => void
  ): Component<P, ComponentState> | Element | void;

  (element: ReactElement[], container: Element | null, callback?: () => void):
    | Component<any, ComponentState>
    | Element
    | void;
}