@@ -5,25 +5,33 @@ import { extend, noop } from 'belter/src';
5
5
6
6
import type { ComponentDriverType } from '../component' ;
7
7
import { CONTEXT } from '../constants' ;
8
+ import { ZoidComponentInstance } from "../component" ;
8
9
9
10
// eslint-disable-next-line flowtype/require-exact-type
10
11
declare class ReactClassType { }
11
12
12
13
// eslint-disable-next-line flowtype/require-exact-type
13
- declare class __ReactComponent { }
14
+ declare class __ReactComponent {
15
+ state : { | parent ? : ZoidComponentInstance < * > | } ,
16
+ props : mixed ,
17
+ setState : ( newStateOrFn : mixed ) = > void
18
+ }
19
+
20
+ // eslint-disable-next-line flowtype/require-exact-type
21
+ type Class < T > = { new ( ) : T } ;
14
22
15
23
type ReactElementType = { |
16
24
17
25
| } ;
18
26
19
27
type ReactType = { |
20
- Component : __ReactComponent ,
28
+ Component : typeof __ReactComponent ,
21
29
createClass : ( { | render : ( ) => ReactElementType , componentDidMount : ( ) => void , componentDidUpdate : ( ) => void | } ) => ( typeof ReactClassType ) ,
22
30
createElement : ( string , ?{ [ string ] : mixed } , ...children : $ReadOnlyArray < ReactElementType > ) => ReactElementType
23
31
| } ;
24
32
25
33
type ReactDomType = { |
26
- findDOMNode : ( typeof ReactClassType ) => HTMLElement
34
+ findDOMNode : ( __ReactComponent ) => HTMLElement
27
35
| } ;
28
36
29
37
type ReactLibraryType = { |
@@ -35,7 +43,7 @@ type ReactLibraryType = {|
35
43
/**
36
44
* Util to check if component is currently mounted
37
45
*/
38
- function isMounted ( component : typeof ReactClassType , ReactDOM : ReactDomType ) : boolean {
46
+ function isMounted ( component : __ReactComponent , ReactDOM : ReactDomType ) : boolean {
39
47
try {
40
48
return Boolean ( ReactDOM . findDOMNode ( component ) ) ;
41
49
}
@@ -45,19 +53,16 @@ function isMounted(component : typeof ReactClassType, ReactDOM : ReactDomType) :
45
53
}
46
54
}
47
55
56
+ export const react : ComponentDriverType < * , ReactLibraryType, Class < __ReactComponent > > = {
48
57
49
- export const react : ComponentDriverType < * , ReactLibraryType, typeof ReactClassType > = {
50
-
51
- register : ( tag , propsDef , init , { React, ReactDOM } ) => {
58
+ register : ( tag , propsDef , init , { React, ReactDOM } ) : Class < __ReactComponent > => {
52
59
53
- // $FlowFixMe
54
- return class extends React . Component {
60
+ return class ZoidReactComponent extends React . Component {
55
61
render ( ) : ReactElementType {
56
62
return React . createElement ( 'div' , null) ;
57
63
}
58
64
59
65
componentDidMount ( ) {
60
- // $FlowFixMe
61
66
const el = ReactDOM . findDOMNode ( this ) ;
62
67
const parent = init ( extend ( { } , this . props ) ) ;
63
68
parent . render ( el , CONTEXT . IFRAME )
0 commit comments