UNPKG

react-native-inlight

Version:

A framework for building native apps using React

132 lines (115 loc) 3.53 kB
/** * Copyright (c) 2015-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. * * @format * @flow */ import React from 'react'; export type MeasureOnSuccessCallback = ( x: number, y: number, width: number, height: number, pageX: number, pageY: number, ) => void; export type MeasureInWindowOnSuccessCallback = ( x: number, y: number, width: number, height: number, ) => void; export type MeasureLayoutOnSuccessCallback = ( left: number, top: number, width: number, height: number, ) => void; type BubblingEventType = { phasedRegistrationNames: { captured: string, bubbled: string, }, }; type DirectEventType = { registrationName: string, }; export type ReactNativeBaseComponentViewConfig = { validAttributes: Object, uiViewClassName: string, bubblingEventTypes?: {[topLevelType: string]: BubblingEventType}, directEventTypes?: {[topLevelType: string]: DirectEventType}, propTypes?: Object, }; export type ViewConfigGetter = () => ReactNativeBaseComponentViewConfig; /** * Class only exists for its Flow type. */ class ReactNativeComponent<Props> extends React.Component<Props> { blur(): void {} focus(): void {} measure(callback: MeasureOnSuccessCallback): void {} measureInWindow(callback: MeasureInWindowOnSuccessCallback): void {} measureLayout( relativeToNativeNode: number, onSuccess: MeasureLayoutOnSuccessCallback, onFail?: () => void, ): void {} setNativeProps(nativeProps: Object): void {} } /** * This type keeps ReactNativeFiberHostComponent and NativeMethodsMixin in sync. * It can also provide types for ReactNative applications that use NMM or refs. */ export type NativeMethodsMixinType = { blur(): void, focus(): void, measure(callback: MeasureOnSuccessCallback): void, measureInWindow(callback: MeasureInWindowOnSuccessCallback): void, measureLayout( relativeToNativeNode: number, onSuccess: MeasureLayoutOnSuccessCallback, onFail: () => void, ): void, setNativeProps(nativeProps: Object): void, }; type SecretInternalsType = { NativeMethodsMixin: NativeMethodsMixinType, computeComponentStackForErrorReporting(tag: number): string, // TODO (bvaughn) Decide which additional types to expose here? // And how much information to fill in for the above types. }; type SecretInternalsFabricType = { NativeMethodsMixin: NativeMethodsMixinType, }; /** * Flat ReactNative renderer bundles are too big for Flow to parse efficiently. * Provide minimal Flow typing for the high-level RN API and call it a day. */ export type ReactNativeType = { NativeComponent: typeof ReactNativeComponent, findNodeHandle(componentOrHandle: any): ?number, render( element: React$Element<any>, containerTag: any, callback: ?Function, ): any, unmountComponentAtNode(containerTag: number): any, unmountComponentAtNodeAndRemoveContainer(containerTag: number): any, unstable_batchedUpdates: any, // TODO (bvaughn) Add types __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: SecretInternalsType, }; export type ReactFabricType = { NativeComponent: typeof ReactNativeComponent, findNodeHandle(componentOrHandle: any): ?number, render( element: React$Element<any>, containerTag: any, callback: ?Function, ): any, unmountComponentAtNode(containerTag: number): any, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: SecretInternalsFabricType, };