/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ export type ReactNode = | React$Element | ReactPortal | ReactText | ReactFragment | ReactProvider | ReactConsumer; export type ReactEmpty = null | void | boolean; export type ReactFragment = ReactEmpty | Iterable; export type ReactNodeList = ReactEmpty | React$Node; export type ReactText = string | number; export type ReactProvider = { $$typeof: Symbol | number, type: ReactProviderType, key: null | string, ref: null, props: { value: T, children?: ReactNodeList, }, }; export type ReactProviderType = { $$typeof: Symbol | number, _context: ReactContext, }; export type ReactConsumer = { $$typeof: Symbol | number, type: ReactContext, key: null | string, ref: null, props: { children: (value: T) => ReactNodeList, unstable_observedBits?: number, }, }; export type ReactContext = { $$typeof: Symbol | number, Consumer: ReactContext, Provider: ReactProviderType, _calculateChangedBits: ((a: T, b: T) => number) | null, _currentValue: T, _currentValue2: T, _threadCount: number, // DEV only _currentRenderer?: Object | null, _currentRenderer2?: Object | null, }; export type ReactPortal = { $$typeof: Symbol | number, key: null | string, containerInfo: any, children: ReactNodeList, // TODO: figure out the API for cross-renderer implementation. implementation: any, }; export type RefObject = {| current: any, |}; export type ReactEventResponderInstance = {| fiber: Object, props: Object, responder: ReactEventResponder, rootEventTypes: null | Set, state: Object, |}; export type ReactEventResponderListener = {| props: Object, responder: ReactEventResponder, |}; export type ReactEventResponder = { $$typeof: Symbol | number, displayName: string, targetEventTypes: null | Array, targetPortalPropagation: boolean, rootEventTypes: null | Array, getInitialState: null | ((props: Object) => Object), onEvent: | null | ((event: E, context: C, props: Object, state: Object) => void), onRootEvent: | null | ((event: E, context: C, props: Object, state: Object) => void), onMount: null | ((context: C, props: Object, state: Object) => void), onUnmount: null | ((context: C, props: Object, state: Object) => void), }; export type EventPriority = 0 | 1 | 2; export const DiscreteEvent: EventPriority = 0; export const UserBlockingEvent: EventPriority = 1; export const ContinuousEvent: EventPriority = 2; export type ReactFundamentalComponentInstance = {| currentFiber: mixed, instance: mixed, prevProps: null | Object, props: Object, impl: ReactFundamentalImpl, state: Object, |}; export type ReactFundamentalImpl = { displayName: string, reconcileChildren: boolean, getInitialState?: (props: Object) => Object, getInstance: (context: C, props: Object, state: Object) => H, getServerSideString?: (context: C, props: Object) => string, getServerSideStringClose?: (context: C, props: Object) => string, onMount: (context: C, instance: mixed, props: Object, state: Object) => void, shouldUpdate?: ( context: C, prevProps: null | Object, nextProps: Object, state: Object, ) => boolean, onUpdate?: ( context: C, instance: mixed, prevProps: null | Object, nextProps: Object, state: Object, ) => void, onUnmount?: ( context: C, instance: mixed, props: Object, state: Object, ) => void, onHydrate?: (context: C, props: Object, state: Object) => boolean, onFocus?: (context: C, props: Object, state: Object) => boolean, }; export type ReactFundamentalComponent = {| $$typeof: Symbol | number, impl: ReactFundamentalImpl, |}; export type ReactScope = {| $$typeof: Symbol | number, |}; export type ReactScopeMethods = {| getChildren(): null | Array, getChildrenFromRoot(): null | Array, getParent(): null | ReactScopeMethods, getProps(): Object, queryAllNodes( (type: string | Object, props: Object, instance: Object) => boolean, ): null | Array, queryFirstNode( (type: string | Object, props: Object, instance: Object) => boolean, ): null | Object, containsNode(Object): boolean, |}; export type ReactScopeInstance = {| fiber: Object, methods: null | ReactScopeMethods, |};