xplat/js/react-native-github
Reviewed By: panagosg7 Differential Revision: D16657770 fbshipit-source-id: 4e260842c838a35317515044c54ccf55a083da33
This commit is contained in:
Родитель
9127fb51fc
Коммит
91f139b941
|
@ -36,7 +36,7 @@ class AppEventsTest extends React.Component<{}, State> {
|
|||
this.setState({sent: event});
|
||||
}
|
||||
|
||||
receiveEvent = (event: any) => {
|
||||
receiveEvent: (event: any) => void = (event: any) => {
|
||||
if (deepDiffer(event.data, TEST_PAYLOAD)) {
|
||||
throw new Error('Received wrong event: ' + JSON.stringify(event));
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ class AppEventsTest extends React.Component<{}, State> {
|
|||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>{JSON.stringify(this.state, null, ' ')}</Text>
|
||||
|
|
|
@ -172,7 +172,7 @@ function testOptimizedMultiGet() {
|
|||
}
|
||||
|
||||
class AsyncStorageTest extends React.Component<{}, $FlowFixMeState> {
|
||||
state = {
|
||||
state: any | $TEMPORARY$object<{|done: boolean, messages: string|}> = {
|
||||
messages: 'Initializing...',
|
||||
done: false,
|
||||
};
|
||||
|
@ -189,7 +189,7 @@ class AsyncStorageTest extends React.Component<{}, $FlowFixMeState> {
|
|||
AsyncStorage.clear(testSetAndGet);
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>
|
||||
|
|
|
@ -36,9 +36,9 @@ type State = {
|
|||
};
|
||||
|
||||
class ImageCachePolicyTest extends React.Component<Props, $FlowFixMeState> {
|
||||
state = {};
|
||||
state: $FlowFixMe | $TEMPORARY$object<{||}> = {};
|
||||
|
||||
shouldComponentUpdate(nextProps: Props, nextState: State) {
|
||||
shouldComponentUpdate(nextProps: Props, nextState: State): boolean {
|
||||
const results: Array<?boolean> = TESTS.map(x => nextState[x]);
|
||||
|
||||
if (!results.includes(undefined)) {
|
||||
|
@ -56,7 +56,7 @@ class ImageCachePolicyTest extends React.Component<Props, $FlowFixMeState> {
|
|||
this.setState({[name]: pass});
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>Hello</Text>
|
||||
|
|
|
@ -22,11 +22,11 @@ class ImageSnapshotTest extends React.Component<{}> {
|
|||
}
|
||||
}
|
||||
|
||||
done = (success: boolean) => {
|
||||
done: (success: boolean) => void = (success: boolean) => {
|
||||
TestModule.markTestPassed(success);
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<Image
|
||||
source={require('./blue_square.png')}
|
||||
|
|
|
@ -10,9 +10,10 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const requestAnimationFrame = require('fbjs/lib/requestAnimationFrame');
|
||||
const React = require('react');
|
||||
const ReactNative = require('react-native');
|
||||
|
||||
const requestAnimationFrame = require('fbjs/lib/requestAnimationFrame');
|
||||
const {Text, View, StyleSheet} = ReactNative;
|
||||
const {TestModule} = ReactNative.NativeModules;
|
||||
|
||||
|
@ -26,7 +27,7 @@ type State = {|
|
|||
|};
|
||||
|
||||
class IntegrationTestHarnessTest extends React.Component<Props, State> {
|
||||
state = {
|
||||
state: State = {
|
||||
done: false,
|
||||
};
|
||||
|
||||
|
@ -38,7 +39,7 @@ class IntegrationTestHarnessTest extends React.Component<Props, State> {
|
|||
}
|
||||
}
|
||||
|
||||
runTest = () => {
|
||||
runTest: () => void = () => {
|
||||
if (this.props.shouldThrow) {
|
||||
throw new Error('Throwing error because shouldThrow');
|
||||
}
|
||||
|
@ -52,7 +53,7 @@ class IntegrationTestHarnessTest extends React.Component<Props, State> {
|
|||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>
|
||||
|
|
|
@ -58,7 +58,7 @@ class LayoutEventsTest extends React.Component<Props, State> {
|
|||
this.setState({viewStyle: {margin: 60}});
|
||||
}
|
||||
|
||||
addWrapText = () => {
|
||||
addWrapText: () => void = () => {
|
||||
debug('addWrapText invoked');
|
||||
this.setState(
|
||||
{extraText: ' And a bunch more text to wrap around a few lines.'},
|
||||
|
@ -66,14 +66,14 @@ class LayoutEventsTest extends React.Component<Props, State> {
|
|||
);
|
||||
};
|
||||
|
||||
changeContainer = () => {
|
||||
changeContainer: () => void = () => {
|
||||
debug('changeContainer invoked');
|
||||
this.setState({containerStyle: {width: 280}}, () =>
|
||||
this.checkLayout(TestModule.markTestCompleted),
|
||||
);
|
||||
};
|
||||
|
||||
checkLayout = (next?: ?() => void) => {
|
||||
checkLayout: (next?: ?() => void) => void = (next?: ?() => void) => {
|
||||
const view = this._view;
|
||||
const txt = this._txt;
|
||||
const img = this._img;
|
||||
|
@ -117,22 +117,22 @@ class LayoutEventsTest extends React.Component<Props, State> {
|
|||
}
|
||||
}
|
||||
|
||||
onViewLayout = (e: LayoutEvent) => {
|
||||
onViewLayout: (e: LayoutEvent) => void = (e: LayoutEvent) => {
|
||||
debug('received view layout event\n', e.nativeEvent);
|
||||
this.setState({viewLayout: e.nativeEvent.layout}, this.checkLayout);
|
||||
};
|
||||
|
||||
onTextLayout = (e: LayoutEvent) => {
|
||||
onTextLayout: (e: LayoutEvent) => void = (e: LayoutEvent) => {
|
||||
debug('received text layout event\n', e.nativeEvent);
|
||||
this.setState({textLayout: e.nativeEvent.layout}, this.checkLayout);
|
||||
};
|
||||
|
||||
onImageLayout = (e: LayoutEvent) => {
|
||||
onImageLayout: (e: LayoutEvent) => void = (e: LayoutEvent) => {
|
||||
debug('received image layout event\n', e.nativeEvent);
|
||||
this.setState({imageLayout: e.nativeEvent.layout}, this.checkLayout);
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const viewStyle = [styles.view, this.state.viewStyle];
|
||||
const textLayout = this.state.textLayout || {width: '?', height: '?'};
|
||||
const imageLayout = this.state.imageLayout || {x: '?', y: '?'};
|
||||
|
|
|
@ -16,10 +16,10 @@ const {View} = ReactNative;
|
|||
const {TestModule} = ReactNative.NativeModules;
|
||||
|
||||
class PromiseTest extends React.Component<{}> {
|
||||
shouldResolve = false;
|
||||
shouldReject = false;
|
||||
shouldSucceedAsync = false;
|
||||
shouldThrowAsync = false;
|
||||
shouldResolve: boolean = false;
|
||||
shouldReject: boolean = false;
|
||||
shouldSucceedAsync: boolean = false;
|
||||
shouldThrowAsync: boolean = false;
|
||||
|
||||
componentDidMount() {
|
||||
Promise.all([
|
||||
|
@ -37,19 +37,19 @@ class PromiseTest extends React.Component<{}> {
|
|||
);
|
||||
}
|
||||
|
||||
testShouldResolve = () => {
|
||||
testShouldResolve: () => any = () => {
|
||||
return TestModule.shouldResolve()
|
||||
.then(() => (this.shouldResolve = true))
|
||||
.catch(() => (this.shouldResolve = false));
|
||||
};
|
||||
|
||||
testShouldReject = () => {
|
||||
testShouldReject: () => any = () => {
|
||||
return TestModule.shouldReject()
|
||||
.then(() => (this.shouldReject = false))
|
||||
.catch(() => (this.shouldReject = true));
|
||||
};
|
||||
|
||||
testShouldSucceedAsync = async (): Promise<any> => {
|
||||
testShouldSucceedAsync: () => Promise<any> = async (): Promise<any> => {
|
||||
try {
|
||||
await TestModule.shouldResolve();
|
||||
this.shouldSucceedAsync = true;
|
||||
|
@ -58,7 +58,7 @@ class PromiseTest extends React.Component<{}> {
|
|||
}
|
||||
};
|
||||
|
||||
testShouldThrowAsync = async (): Promise<any> => {
|
||||
testShouldThrowAsync: () => Promise<any> = async (): Promise<any> => {
|
||||
try {
|
||||
await TestModule.shouldReject();
|
||||
this.shouldThrowAsync = false;
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const RCTNativeAppEventEmitter = require('react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter');
|
||||
const React = require('react');
|
||||
const ReactNative = require('react-native');
|
||||
const RCTNativeAppEventEmitter = require('react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter');
|
||||
|
||||
const {View} = ReactNative;
|
||||
|
||||
|
@ -35,7 +35,7 @@ class ReactContentSizeUpdateTest extends React.Component<Props, State> {
|
|||
_timeoutID: ?TimeoutID = null;
|
||||
_subscription: ?EmitterSubscription = null;
|
||||
|
||||
state = {
|
||||
state: State = {
|
||||
height: reactViewHeight,
|
||||
width: reactViewWidth,
|
||||
};
|
||||
|
@ -70,7 +70,9 @@ class ReactContentSizeUpdateTest extends React.Component<Props, State> {
|
|||
});
|
||||
}
|
||||
|
||||
rootViewDidChangeIntrinsicSize = (intrinsicSize: State) => {
|
||||
rootViewDidChangeIntrinsicSize: (intrinsicSize: State) => void = (
|
||||
intrinsicSize: State,
|
||||
) => {
|
||||
if (
|
||||
intrinsicSize.height === newReactViewHeight &&
|
||||
intrinsicSize.width === newReactViewWidth
|
||||
|
@ -79,7 +81,7 @@ class ReactContentSizeUpdateTest extends React.Component<Props, State> {
|
|||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={{height: this.state.height, width: this.state.width}} />
|
||||
);
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
const React = require('react');
|
||||
const ReactNative = require('react-native');
|
||||
|
||||
const requestAnimationFrame = require('fbjs/lib/requestAnimationFrame');
|
||||
|
||||
const {StyleSheet, View} = ReactNative;
|
||||
|
@ -25,11 +26,11 @@ class SimpleSnapshotTest extends React.Component<{}> {
|
|||
requestAnimationFrame(() => TestModule.verifySnapshot(this.done));
|
||||
}
|
||||
|
||||
done = (success: boolean) => {
|
||||
done: (success: boolean) => void = (success: boolean) => {
|
||||
TestModule.markTestPassed(success);
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={styles.box1} />
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const RCTNativeAppEventEmitter = require('react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter');
|
||||
const React = require('react');
|
||||
const ReactNative = require('react-native');
|
||||
const RCTNativeAppEventEmitter = require('react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter');
|
||||
const {View} = ReactNative;
|
||||
|
||||
const {TestModule} = ReactNative.NativeModules;
|
||||
|
@ -46,15 +46,15 @@ class SizeFlexibilityUpdateTest extends React.Component<Props> {
|
|||
}
|
||||
}
|
||||
|
||||
markPassed = () => {
|
||||
markPassed: () => void = () => {
|
||||
TestModule.markTestPassed(true);
|
||||
finalState = true;
|
||||
};
|
||||
|
||||
rootViewDidChangeIntrinsicSize = (intrinsicSize: {
|
||||
width: number,
|
||||
rootViewDidChangeIntrinsicSize: (intrinsicSize: {
|
||||
height: number,
|
||||
}) => {
|
||||
width: number,
|
||||
}) => void = (intrinsicSize: {width: number, height: number}) => {
|
||||
if (finalState) {
|
||||
// If a test reaches its final state, it is not expected to do anything more
|
||||
TestModule.markTestPassed(false);
|
||||
|
@ -99,7 +99,7 @@ class SizeFlexibilityUpdateTest extends React.Component<Props> {
|
|||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return <View style={{height: reactViewHeight, width: reactViewWidth}} />;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ class TimersTest extends React.Component<Props, State> {
|
|||
_immediateIDs: Set<ImmediateID> = new Set();
|
||||
_animationFrameIDs: Set<AnimationFrameID> = new Set();
|
||||
|
||||
state = {
|
||||
state: State = {
|
||||
count: 0,
|
||||
done: false,
|
||||
};
|
||||
|
@ -228,7 +228,7 @@ class TimersTest extends React.Component<Props, State> {
|
|||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text>
|
||||
|
|
|
@ -113,7 +113,7 @@ class WebSocketTest extends React.Component<{}, State> {
|
|||
this.testConnect();
|
||||
}
|
||||
|
||||
testConnect = () => {
|
||||
testConnect: () => void = () => {
|
||||
this._connect();
|
||||
this._waitFor(this._socketIsConnected, 5, connectSucceeded => {
|
||||
if (!connectSucceeded) {
|
||||
|
@ -124,7 +124,7 @@ class WebSocketTest extends React.Component<{}, State> {
|
|||
});
|
||||
};
|
||||
|
||||
testSendAndReceive = () => {
|
||||
testSendAndReceive: () => void = () => {
|
||||
this._sendTestMessage();
|
||||
this._waitFor(this._receivedTestExpectedResponse, 5, messageReceived => {
|
||||
if (!messageReceived) {
|
||||
|
@ -135,7 +135,7 @@ class WebSocketTest extends React.Component<{}, State> {
|
|||
});
|
||||
};
|
||||
|
||||
testDisconnect = () => {
|
||||
testDisconnect: () => void = () => {
|
||||
this._disconnect();
|
||||
this._waitFor(this._socketIsDisconnected, 5, disconnectSucceeded => {
|
||||
TestModule.markTestPassed(disconnectSucceeded);
|
||||
|
|
|
@ -47,4 +47,4 @@ export interface Spec extends TurboModule {
|
|||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('ActionSheetManager');
|
||||
export default (TurboModuleRegistry.get<Spec>('ActionSheetManager'): ?Spec);
|
||||
|
|
|
@ -31,4 +31,4 @@ export interface Spec extends TurboModule {
|
|||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('AlertManager');
|
||||
export default (TurboModuleRegistry.get<Spec>('AlertManager'): ?Spec);
|
||||
|
|
|
@ -14,6 +14,7 @@ const NativeAnimatedHelper = require('./NativeAnimatedHelper');
|
|||
const ReactNative = require('../../Renderer/shims/ReactNative');
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
const {shouldUseNativeDriver} = require('./NativeAnimatedHelper');
|
||||
|
||||
export type Mapping = {[key: string]: Mapping} | AnimatedValue;
|
||||
|
@ -26,7 +27,7 @@ function attachNativeEvent(
|
|||
viewRef: any,
|
||||
eventName: string,
|
||||
argMapping: Array<?Mapping>,
|
||||
) {
|
||||
): $TEMPORARY$object<{|detach: () => void|}> {
|
||||
// Find animated values in `argMapping` and create an array representing their
|
||||
// key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].
|
||||
const eventMappings = [];
|
||||
|
@ -130,7 +131,7 @@ class AnimatedEvent {
|
|||
this._attachedEvent && this._attachedEvent.detach();
|
||||
}
|
||||
|
||||
__getHandler() {
|
||||
__getHandler(): any | ((...args: any) => void) {
|
||||
if (this.__isNative) {
|
||||
return this._callListeners;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ const AnimatedImplementation = require('./AnimatedImplementation');
|
|||
|
||||
module.exports = {
|
||||
...AnimatedImplementation,
|
||||
div: AnimatedImplementation.createAnimatedComponent('div'),
|
||||
span: AnimatedImplementation.createAnimatedComponent('span'),
|
||||
img: AnimatedImplementation.createAnimatedComponent('img'),
|
||||
div: (AnimatedImplementation.createAnimatedComponent('div'): $FlowFixMe),
|
||||
span: (AnimatedImplementation.createAnimatedComponent('span'): $FlowFixMe),
|
||||
img: (AnimatedImplementation.createAnimatedComponent('img'): $FlowFixMe),
|
||||
};
|
||||
|
|
|
@ -61,14 +61,14 @@ class Easing {
|
|||
/**
|
||||
* A stepping function, returns 1 for any positive value of `n`.
|
||||
*/
|
||||
static step0(n: number) {
|
||||
static step0(n: number): number {
|
||||
return n > 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* A stepping function, returns 1 if `n` is greater than or equal to 1.
|
||||
*/
|
||||
static step1(n: number) {
|
||||
static step1(n: number): number {
|
||||
return n >= 1 ? 1 : 0;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ class Easing {
|
|||
*
|
||||
* http://cubic-bezier.com/#0,0,1,1
|
||||
*/
|
||||
static linear(t: number) {
|
||||
static linear(t: number): number {
|
||||
return t;
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ class Easing {
|
|||
*
|
||||
* http://easings.net/#easeInQuad
|
||||
*/
|
||||
static quad(t: number) {
|
||||
static quad(t: number): number {
|
||||
return t * t;
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ class Easing {
|
|||
*
|
||||
* http://easings.net/#easeInCubic
|
||||
*/
|
||||
static cubic(t: number) {
|
||||
static cubic(t: number): number {
|
||||
return t * t * t;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ class Easing {
|
|||
* n = 4: http://easings.net/#easeInQuart
|
||||
* n = 5: http://easings.net/#easeInQuint
|
||||
*/
|
||||
static poly(n: number) {
|
||||
static poly(n: number): (t: number) => number {
|
||||
return (t: number) => Math.pow(t, n);
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ class Easing {
|
|||
*
|
||||
* http://easings.net/#easeInSine
|
||||
*/
|
||||
static sin(t: number) {
|
||||
static sin(t: number): number {
|
||||
return 1 - Math.cos((t * Math.PI) / 2);
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ class Easing {
|
|||
*
|
||||
* http://easings.net/#easeInCirc
|
||||
*/
|
||||
static circle(t: number) {
|
||||
static circle(t: number): number {
|
||||
return 1 - Math.sqrt(1 - t * t);
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ class Easing {
|
|||
*
|
||||
* http://easings.net/#easeInExpo
|
||||
*/
|
||||
static exp(t: number) {
|
||||
static exp(t: number): number {
|
||||
return Math.pow(2, 10 * (t - 1));
|
||||
}
|
||||
|
||||
|
|
|
@ -10,17 +10,16 @@
|
|||
'use strict';
|
||||
|
||||
import NativeEventEmitter from '../../EventEmitter/NativeEventEmitter';
|
||||
import type {EventConfig} from './AnimatedEvent';
|
||||
import NativeAnimatedModule from './NativeAnimatedModule';
|
||||
import type {
|
||||
EventMapping,
|
||||
AnimatedNodeConfig,
|
||||
AnimatingNodeConfig,
|
||||
} from './NativeAnimatedModule';
|
||||
import NativeAnimatedModule from './NativeAnimatedModule';
|
||||
import invariant from 'invariant';
|
||||
|
||||
import type {AnimationConfig, EndCallback} from './animations/Animation';
|
||||
import type {InterpolationConfigType} from './nodes/AnimatedInterpolation';
|
||||
import type {EventConfig} from './AnimatedEvent';
|
||||
import invariant from 'invariant';
|
||||
|
||||
let __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */
|
||||
let __nativeAnimationIdCount = 1; /* used for started animations */
|
||||
|
@ -312,7 +311,7 @@ module.exports = {
|
|||
shouldUseNativeDriver,
|
||||
transformDataType,
|
||||
// $FlowExpectedError - unsafe getter lint suppresion
|
||||
get nativeEventEmitter() {
|
||||
get nativeEventEmitter(): NativeEventEmitter {
|
||||
if (!nativeEventEmitter) {
|
||||
nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);
|
||||
}
|
||||
|
|
|
@ -67,4 +67,4 @@ export interface Spec extends TurboModule {
|
|||
+removeListeners: (count: number) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('NativeAnimatedModule');
|
||||
export default (TurboModuleRegistry.get<Spec>('NativeAnimatedModule'): ?Spec);
|
||||
|
|
|
@ -13,8 +13,8 @@ const Animation = require('./Animation');
|
|||
|
||||
const {shouldUseNativeDriver} = require('../NativeAnimatedHelper');
|
||||
|
||||
import type {AnimationConfig, EndCallback} from './Animation';
|
||||
import type AnimatedValue from '../nodes/AnimatedValue';
|
||||
import type {AnimationConfig, EndCallback} from './Animation';
|
||||
|
||||
export type DecayAnimationConfig = AnimationConfig & {
|
||||
velocity: number | {x: number, y: number},
|
||||
|
@ -45,7 +45,12 @@ class DecayAnimation extends Animation {
|
|||
this.__iterations = config.iterations ?? 1;
|
||||
}
|
||||
|
||||
__getNativeAnimationConfig() {
|
||||
__getNativeAnimationConfig(): $TEMPORARY$object<{|
|
||||
deceleration: number,
|
||||
iterations: number,
|
||||
type: $TEMPORARY$string<'decay'>,
|
||||
velocity: number,
|
||||
|}> {
|
||||
return {
|
||||
type: 'decay',
|
||||
deceleration: this._deceleration,
|
||||
|
|
|
@ -15,6 +15,7 @@ const Animation = require('./Animation');
|
|||
const SpringConfig = require('../SpringConfig');
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
const {shouldUseNativeDriver} = require('../NativeAnimatedHelper');
|
||||
|
||||
import type {AnimationConfig, EndCallback} from './Animation';
|
||||
|
@ -137,7 +138,18 @@ class SpringAnimation extends Animation {
|
|||
invariant(this._mass > 0, 'Mass value must be greater than 0');
|
||||
}
|
||||
|
||||
__getNativeAnimationConfig() {
|
||||
__getNativeAnimationConfig(): $TEMPORARY$object<{|
|
||||
damping: number,
|
||||
initialVelocity: number,
|
||||
iterations: number,
|
||||
mass: number,
|
||||
overshootClamping: boolean,
|
||||
restDisplacementThreshold: number,
|
||||
restSpeedThreshold: number,
|
||||
stiffness: number,
|
||||
toValue: any,
|
||||
type: $TEMPORARY$string<'spring'>,
|
||||
|}> {
|
||||
return {
|
||||
type: 'spring',
|
||||
overshootClamping: this._overshootClamping,
|
||||
|
|
|
@ -84,7 +84,7 @@ module.exports = function bezier(
|
|||
mY1: number,
|
||||
mX2: number,
|
||||
mY2: number,
|
||||
) {
|
||||
): (x: number) => number {
|
||||
if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {
|
||||
throw new Error('bezier x values must be in [0, 1] range');
|
||||
}
|
||||
|
|
|
@ -14,6 +14,6 @@ const FlatList = require('../../../Lists/FlatList');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(FlatList, {
|
||||
module.exports = (createAnimatedComponent(FlatList, {
|
||||
scrollEventThrottle: 0.0001,
|
||||
});
|
||||
}): $FlowFixMe);
|
||||
|
|
|
@ -14,4 +14,4 @@ const Image = require('../../../Image/Image');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(Image);
|
||||
module.exports = (createAnimatedComponent(Image): $FlowFixMe);
|
||||
|
|
|
@ -14,6 +14,6 @@ const ScrollView = require('../../../Components/ScrollView/ScrollView');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(ScrollView, {
|
||||
module.exports = (createAnimatedComponent(ScrollView, {
|
||||
scrollEventThrottle: 0.0001,
|
||||
});
|
||||
}): $FlowFixMe);
|
||||
|
|
|
@ -14,6 +14,6 @@ const SectionList = require('../../../Lists/SectionList');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(SectionList, {
|
||||
module.exports = (createAnimatedComponent(SectionList, {
|
||||
scrollEventThrottle: 0.0001,
|
||||
});
|
||||
}): $FlowFixMe);
|
||||
|
|
|
@ -14,4 +14,4 @@ const Text = require('../../../Text/Text');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(Text);
|
||||
module.exports = (createAnimatedComponent(Text): $FlowFixMe);
|
||||
|
|
|
@ -14,4 +14,4 @@ const View = require('../../../Components/View/View');
|
|||
|
||||
const createAnimatedComponent = require('../createAnimatedComponent');
|
||||
|
||||
module.exports = createAnimatedComponent(View);
|
||||
module.exports = (createAnimatedComponent(View): $FlowFixMe);
|
||||
|
|
|
@ -27,4 +27,4 @@ export interface Spec extends TurboModule {
|
|||
+removeListeners: (count: number) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('AppState');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>('AppState'): Spec);
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
const MessageQueue = require('./MessageQueue');
|
||||
|
||||
const BatchedBridge = new MessageQueue();
|
||||
const BatchedBridge: MessageQueue = new MessageQueue();
|
||||
|
||||
// Wire up the batched bridge on the global object so that we can call into it.
|
||||
// Ideally, this would be the inverse relationship. I.e. the native environment
|
||||
|
|
|
@ -101,7 +101,11 @@ class MessageQueue {
|
|||
}
|
||||
}
|
||||
|
||||
callFunctionReturnFlushedQueue(module: string, method: string, args: any[]) {
|
||||
callFunctionReturnFlushedQueue(
|
||||
module: string,
|
||||
method: string,
|
||||
args: any[],
|
||||
): null | [Array<number>, Array<number>, Array<any>, number] {
|
||||
this.__guard(() => {
|
||||
this.__callFunction(module, method, args);
|
||||
});
|
||||
|
@ -113,7 +117,7 @@ class MessageQueue {
|
|||
module: string,
|
||||
method: string,
|
||||
args: any[],
|
||||
) {
|
||||
): $TEMPORARY$array<?[Array<number>, Array<number>, Array<any>, number]> {
|
||||
let result;
|
||||
this.__guard(() => {
|
||||
result = this.__callFunction(module, method, args);
|
||||
|
@ -122,7 +126,10 @@ class MessageQueue {
|
|||
return [result, this.flushedQueue()];
|
||||
}
|
||||
|
||||
invokeCallbackAndReturnFlushedQueue(cbID: number, args: any[]) {
|
||||
invokeCallbackAndReturnFlushedQueue(
|
||||
cbID: number,
|
||||
args: any[],
|
||||
): null | [Array<number>, Array<number>, Array<any>, number] {
|
||||
this.__guard(() => {
|
||||
this.__invokeCallback(cbID, args);
|
||||
});
|
||||
|
@ -130,7 +137,7 @@ class MessageQueue {
|
|||
return this.flushedQueue();
|
||||
}
|
||||
|
||||
flushedQueue() {
|
||||
flushedQueue(): null | [Array<number>, Array<number>, Array<any>, number] {
|
||||
this.__guard(() => {
|
||||
this.__callImmediates();
|
||||
});
|
||||
|
@ -140,7 +147,7 @@ class MessageQueue {
|
|||
return queue[0].length ? queue : null;
|
||||
}
|
||||
|
||||
getEventLoopRunningTime() {
|
||||
getEventLoopRunningTime(): number {
|
||||
return Date.now() - this._eventLoopStartTime;
|
||||
}
|
||||
|
||||
|
@ -160,7 +167,7 @@ class MessageQueue {
|
|||
};
|
||||
}
|
||||
|
||||
getCallableModule(name: string) {
|
||||
getCallableModule(name: string): any | null {
|
||||
const getValue = this._lazyCallableModules[name];
|
||||
return getValue ? getValue() : null;
|
||||
}
|
||||
|
@ -171,7 +178,7 @@ class MessageQueue {
|
|||
params: any[],
|
||||
onFail: ?Function,
|
||||
onSucc: ?Function,
|
||||
) {
|
||||
): any {
|
||||
if (__DEV__) {
|
||||
invariant(
|
||||
global.nativeCallSyncHook,
|
||||
|
@ -383,7 +390,7 @@ class MessageQueue {
|
|||
// This makes stacktraces to be placed at MessageQueue rather than at where they were launched
|
||||
// The parameter DebuggerInternal.shouldPauseOnThrow is used to check before catching all exceptions and
|
||||
// can be configured by the VM or any Inspector
|
||||
__shouldPauseOnThrow() {
|
||||
__shouldPauseOnThrow(): boolean {
|
||||
return (
|
||||
// $FlowFixMe
|
||||
typeof DebuggerInternal !== 'undefined' &&
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
|
||||
const Blob = require('./Blob');
|
||||
const BlobRegistry = require('./BlobRegistry');
|
||||
import NativeBlobModule from './NativeBlobModule';
|
||||
import invariant from 'invariant';
|
||||
|
||||
import type {BlobData, BlobOptions, BlobCollector} from './BlobTypes';
|
||||
import NativeBlobModule from './NativeBlobModule';
|
||||
import invariant from 'invariant';
|
||||
|
||||
/*eslint-disable no-bitwise */
|
||||
/*eslint-disable eqeqeq */
|
||||
|
@ -54,7 +54,7 @@ class BlobManager {
|
|||
/**
|
||||
* If the native blob module is available.
|
||||
*/
|
||||
static isAvailable = !!NativeBlobModule;
|
||||
static isAvailable: boolean = !!NativeBlobModule;
|
||||
|
||||
/**
|
||||
* Create blob from existing array of blobs.
|
||||
|
|
|
@ -27,7 +27,7 @@ const unregister = (id: string) => {
|
|||
}
|
||||
};
|
||||
|
||||
const has = (id: string) => {
|
||||
const has = (id: string): number | boolean => {
|
||||
return registry[id] && registry[id] > 0;
|
||||
};
|
||||
|
||||
|
|
|
@ -10,8 +10,9 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const EventTarget = require('event-target-shim');
|
||||
const Blob = require('./Blob');
|
||||
const EventTarget = require('event-target-shim');
|
||||
|
||||
import NativeFileReaderModule from './NativeFileReaderModule';
|
||||
|
||||
type ReadyState =
|
||||
|
@ -34,14 +35,14 @@ const EMPTY = 0;
|
|||
const LOADING = 1;
|
||||
const DONE = 2;
|
||||
|
||||
class FileReader extends EventTarget(...READER_EVENTS) {
|
||||
static EMPTY = EMPTY;
|
||||
static LOADING = LOADING;
|
||||
static DONE = DONE;
|
||||
class FileReader extends (EventTarget(...READER_EVENTS): any) {
|
||||
static EMPTY: number = EMPTY;
|
||||
static LOADING: number = LOADING;
|
||||
static DONE: number = DONE;
|
||||
|
||||
EMPTY = EMPTY;
|
||||
LOADING = LOADING;
|
||||
DONE = DONE;
|
||||
EMPTY: number = EMPTY;
|
||||
LOADING: number = LOADING;
|
||||
DONE: number = DONE;
|
||||
|
||||
_readyState: ReadyState;
|
||||
_error: ?Error;
|
||||
|
|
|
@ -23,4 +23,4 @@ export interface Spec extends TurboModule {
|
|||
+release: (blobId: string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('BlobModule');
|
||||
export default (TurboModuleRegistry.get<Spec>('BlobModule'): ?Spec);
|
||||
|
|
|
@ -18,4 +18,6 @@ export interface Spec extends TurboModule {
|
|||
+readAsText: (data: Object, encoding: string) => Promise<string>;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('FileReaderModule');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>(
|
||||
'FileReaderModule',
|
||||
): Spec);
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
* @format
|
||||
*/
|
||||
const FileReaderModule = {
|
||||
async readAsText() {
|
||||
async readAsText(): Promise<string> {
|
||||
return '';
|
||||
},
|
||||
async readAsDataURL() {
|
||||
async readAsDataURL(): Promise<string> {
|
||||
return 'data:text/plain;base64,NDI=';
|
||||
},
|
||||
};
|
||||
|
|
|
@ -23,7 +23,7 @@ const MAX_STRING_LENGTH = 50;
|
|||
* it best to get the content but ultimately relies on implementation details
|
||||
* of React and will fail in future versions.
|
||||
*/
|
||||
function dumpReactTree() {
|
||||
function dumpReactTree(): string {
|
||||
try {
|
||||
return getReactTree();
|
||||
} catch (e) {
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
import NativeAccessibilityManager from './NativeAccessibilityManager';
|
||||
|
||||
const Promise = require('../../Promise');
|
||||
const RCTDeviceEventEmitter = require('../../EventEmitter/RCTDeviceEventEmitter');
|
||||
|
||||
import NativeAccessibilityManager from './NativeAccessibilityManager';
|
||||
|
||||
const CHANGE_EVENT_NAME = {
|
||||
announcementFinished: 'announcementFinished',
|
||||
boldTextChanged: 'boldTextChanged',
|
||||
|
@ -164,7 +164,7 @@ const AccessibilityInfo = {
|
|||
*
|
||||
* Same as `isScreenReaderEnabled`
|
||||
*/
|
||||
get fetch() {
|
||||
get fetch(): $FlowFixMe {
|
||||
return this.isScreenReaderEnabled;
|
||||
},
|
||||
|
||||
|
|
|
@ -24,4 +24,4 @@ export interface Spec extends TurboModule {
|
|||
+announceForAccessibility: (announcement: string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('AccessibilityInfo');
|
||||
export default (TurboModuleRegistry.get<Spec>('AccessibilityInfo'): ?Spec);
|
||||
|
|
|
@ -42,4 +42,4 @@ export interface Spec extends TurboModule {
|
|||
+announceForAccessibility: (announcement: string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('AccessibilityManager');
|
||||
export default (TurboModuleRegistry.get<Spec>('AccessibilityManager'): ?Spec);
|
||||
|
|
|
@ -18,4 +18,6 @@ export interface Spec extends TurboModule {
|
|||
+removeListeners: (count: number) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('TVNavigationEventEmitter');
|
||||
export default (TurboModuleRegistry.get<Spec>(
|
||||
'TVNavigationEventEmitter',
|
||||
): ?Spec);
|
||||
|
|
|
@ -19,4 +19,4 @@ export interface Spec extends TurboModule {
|
|||
+setString: (content: string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('Clipboard');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>('Clipboard'): Spec);
|
||||
|
|
|
@ -13,16 +13,15 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const RCTDatePickerNativeComponent = require('./RCTDatePickerNativeComponent');
|
||||
const React = require('react');
|
||||
const StyleSheet = require('../../StyleSheet/StyleSheet');
|
||||
const View = require('../View/View');
|
||||
|
||||
const invariant = require('invariant');
|
||||
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import type {SyntheticEvent} from '../../Types/CoreEventTypes';
|
||||
|
||||
const RCTDatePickerNativeComponent = require('./RCTDatePickerNativeComponent');
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
|
||||
type Event = SyntheticEvent<
|
||||
$ReadOnly<{|
|
||||
|
@ -113,7 +112,9 @@ type Props = $ReadOnly<{|
|
|||
* source of truth.
|
||||
*/
|
||||
class DatePickerIOS extends React.Component<Props> {
|
||||
static DefaultProps = {
|
||||
static DefaultProps: $TEMPORARY$object<{|
|
||||
mode: $TEMPORARY$string<'datetime'>,
|
||||
|}> = {
|
||||
mode: 'datetime',
|
||||
};
|
||||
|
||||
|
@ -137,7 +138,7 @@ class DatePickerIOS extends React.Component<Props> {
|
|||
this.props.onChange && this.props.onChange(event);
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const props = this.props;
|
||||
invariant(
|
||||
props.date || props.initialDate,
|
||||
|
|
|
@ -17,4 +17,6 @@ export interface Spec extends TurboModule {
|
|||
+open: (options: Object) => Promise<Object>;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('DatePickerAndroid');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>(
|
||||
'DatePickerAndroid',
|
||||
): Spec);
|
||||
|
|
|
@ -10,17 +10,17 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
|
||||
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
||||
import * as React from 'react';
|
||||
import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes';
|
||||
import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes';
|
||||
import type {
|
||||
WithDefault,
|
||||
DirectEventHandler,
|
||||
Int32,
|
||||
Float,
|
||||
} from 'react-native/Libraries/Types/CodegenTypes';
|
||||
import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes';
|
||||
import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
|
||||
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
||||
import * as React from 'react';
|
||||
|
||||
type DrawerStateEvent = $ReadOnly<{|
|
||||
drawerState: Int32,
|
||||
|
@ -113,7 +113,7 @@ type NativeProps = $ReadOnly<{|
|
|||
statusBarBackgroundColor?: ?ColorValue,
|
||||
|}>;
|
||||
|
||||
export const Commands = codegenNativeCommands<NativeCommands>({
|
||||
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
||||
supportedCommands: ['openDrawer', 'closeDrawer'],
|
||||
});
|
||||
|
||||
|
|
|
@ -11,9 +11,10 @@
|
|||
'use strict';
|
||||
|
||||
const LayoutAnimation = require('../../LayoutAnimation/LayoutAnimation');
|
||||
const invariant = require('invariant');
|
||||
const NativeEventEmitter = require('../../EventEmitter/NativeEventEmitter');
|
||||
|
||||
const dismissKeyboard = require('../../Utilities/dismissKeyboard');
|
||||
const invariant = require('invariant');
|
||||
|
||||
import NativeKeyboardObserver from './NativeKeyboardObserver';
|
||||
const KeyboardEventEmitter = new NativeEventEmitter(NativeKeyboardObserver);
|
||||
|
@ -108,7 +109,21 @@ type KeyboardEventListener = (e: KeyboardEvent) => void;
|
|||
*```
|
||||
*/
|
||||
|
||||
let Keyboard = {
|
||||
let Keyboard:
|
||||
| NativeEventEmitter
|
||||
| $TEMPORARY$object<{|
|
||||
addListener: (
|
||||
eventName: KeyboardEventName,
|
||||
callback: KeyboardEventListener,
|
||||
) => $FlowFixMe,
|
||||
dismiss: () => $FlowFixMe,
|
||||
removeAllListeners: (eventName: KeyboardEventName) => $FlowFixMe,
|
||||
removeListener: (
|
||||
eventName: KeyboardEventName,
|
||||
callback: KeyboardEventListener,
|
||||
) => $FlowFixMe,
|
||||
scheduleLayoutAnimation: (event: KeyboardEvent) => $FlowFixMe,
|
||||
|}> = {
|
||||
/**
|
||||
* The `addListener` function connects a JavaScript function to an identified native
|
||||
* keyboard notification event.
|
||||
|
|
|
@ -17,8 +17,8 @@ const React = require('react');
|
|||
const StyleSheet = require('../../StyleSheet/StyleSheet');
|
||||
const View = require('../View/View');
|
||||
|
||||
import type EmitterSubscription from '../../vendor/emitter/EmitterSubscription';
|
||||
import type {ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
||||
import type EmitterSubscription from '../../vendor/emitter/EmitterSubscription';
|
||||
import type {
|
||||
ViewProps,
|
||||
ViewLayout,
|
||||
|
@ -61,7 +61,10 @@ type State = {|
|
|||
* adjusting its height, position, or bottom padding.
|
||||
*/
|
||||
class KeyboardAvoidingView extends React.Component<Props, State> {
|
||||
static defaultProps = {
|
||||
static defaultProps: $TEMPORARY$object<{|
|
||||
enabled: boolean,
|
||||
keyboardVerticalOffset: number,
|
||||
|}> = {
|
||||
enabled: true,
|
||||
keyboardVerticalOffset: 0,
|
||||
};
|
||||
|
|
|
@ -18,4 +18,4 @@ export interface Spec extends TurboModule {
|
|||
+removeListeners: (count: number) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('KeyboardObserver');
|
||||
export default (TurboModuleRegistry.get<Spec>('KeyboardObserver'): ?Spec);
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
const React = require('react');
|
||||
const StyleSheet = require('../../StyleSheet/StyleSheet');
|
||||
const View = require('../View/View');
|
||||
import RCTMaskedViewNativeComponent from './RCTMaskedViewNativeComponent';
|
||||
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import RCTMaskedViewNativeComponent from './RCTMaskedViewNativeComponent';
|
||||
|
||||
type Props = $ReadOnly<{|
|
||||
...ViewProps,
|
||||
|
@ -65,7 +65,7 @@ type Props = $ReadOnly<{|
|
|||
class MaskedViewIOS extends React.Component<Props> {
|
||||
_hasWarnedInvalidRenderMask = false;
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const {maskElement, children, ...otherViewProps} = this.props;
|
||||
|
||||
if (!React.isValidElement(maskElement)) {
|
||||
|
|
|
@ -121,20 +121,22 @@ class Picker extends React.Component<PickerProps> {
|
|||
/**
|
||||
* On Android, display the options in a dialog.
|
||||
*/
|
||||
static MODE_DIALOG = MODE_DIALOG;
|
||||
static MODE_DIALOG: $TEMPORARY$string<'dialog'> = MODE_DIALOG;
|
||||
|
||||
/**
|
||||
* On Android, display the options in a dropdown (this is the default).
|
||||
*/
|
||||
static MODE_DROPDOWN = MODE_DROPDOWN;
|
||||
static MODE_DROPDOWN: $TEMPORARY$string<'dropdown'> = MODE_DROPDOWN;
|
||||
|
||||
static Item = PickerItem;
|
||||
static Item: typeof PickerItem = PickerItem;
|
||||
|
||||
static defaultProps = {
|
||||
static defaultProps: $TEMPORARY$object<{|
|
||||
mode: $TEMPORARY$string<'dialog'>,
|
||||
|}> = {
|
||||
mode: MODE_DIALOG,
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
if (Platform.OS === 'ios') {
|
||||
/* $FlowFixMe(>=0.81.0 site=react_native_ios_fb) This suppression was
|
||||
* added when renaming suppression sites. */
|
||||
|
|
|
@ -13,17 +13,18 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const RCTPickerNativeComponent = require('./RCTPickerNativeComponent');
|
||||
const React = require('react');
|
||||
const ReactNative = require('../../Renderer/shims/ReactNative');
|
||||
const StyleSheet = require('../../StyleSheet/StyleSheet');
|
||||
const View = require('../View/View');
|
||||
const processColor = require('../../StyleSheet/processColor');
|
||||
const RCTPickerNativeComponent = require('./RCTPickerNativeComponent');
|
||||
|
||||
import type {SyntheticEvent} from '../../Types/CoreEventTypes';
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
const processColor = require('../../StyleSheet/processColor');
|
||||
|
||||
import type {TextStyleProp} from '../../StyleSheet/StyleSheet';
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
import type {SyntheticEvent} from '../../Types/CoreEventTypes';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
|
||||
type PickerIOSChangeEvent = SyntheticEvent<
|
||||
$ReadOnly<{|
|
||||
|
@ -74,19 +75,19 @@ type ItemProps = $ReadOnly<{|
|
|||
color?: ?ColorValue,
|
||||
|}>;
|
||||
|
||||
const PickerIOSItem = (props: ItemProps) => {
|
||||
const PickerIOSItem = (props: ItemProps): null => {
|
||||
return null;
|
||||
};
|
||||
|
||||
class PickerIOS extends React.Component<Props, State> {
|
||||
_picker: ?React.ElementRef<RCTPickerIOSType> = null;
|
||||
|
||||
state = {
|
||||
state: State = {
|
||||
selectedIndex: 0,
|
||||
items: [],
|
||||
};
|
||||
|
||||
static Item = PickerIOSItem;
|
||||
static Item: (props: ItemProps) => null = PickerIOSItem;
|
||||
|
||||
static getDerivedStateFromProps(props: Props): State {
|
||||
let selectedIndex = 0;
|
||||
|
@ -106,7 +107,7 @@ class PickerIOS extends React.Component<Props, State> {
|
|||
return {selectedIndex, items};
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
return (
|
||||
<View style={this.props.style}>
|
||||
<RCTPickerNativeComponent
|
||||
|
|
|
@ -21,7 +21,7 @@ class RefreshControlMock extends React.Component<{}> {
|
|||
componentDidMount() {
|
||||
RefreshControlMock.latestRef = this;
|
||||
}
|
||||
render() {
|
||||
render(): React.Element<string> {
|
||||
return <RCTRefreshControl />;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,15 +12,15 @@ const Platform = require('../../Utilities/Platform');
|
|||
const React = require('react');
|
||||
const View = require('../View/View');
|
||||
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import type {NativeComponent} from '../../Renderer/shims/ReactNative';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
|
||||
type Props = $ReadOnly<{|
|
||||
...ViewProps,
|
||||
emulateUnlessSupported?: boolean,
|
||||
|}>;
|
||||
|
||||
let exported;
|
||||
let exported: Class<React$Component<Props>> | Class<NativeComponent<Props>>;
|
||||
|
||||
/**
|
||||
* Renders nested content and automatically applies paddings reflect the portion
|
||||
|
|
|
@ -27,20 +27,19 @@ const requireNativeComponent = require('../../ReactNative/requireNativeComponent
|
|||
const resolveAssetSource = require('../../Image/resolveAssetSource');
|
||||
const splitLayoutProps = require('../../StyleSheet/splitLayoutProps');
|
||||
|
||||
import type {NativeMethodsMixinType} from '../../Renderer/shims/ReactNativeTypes';
|
||||
import type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';
|
||||
import type {PointProp} from '../../StyleSheet/PointPropType';
|
||||
import type {ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
import type {
|
||||
PressEvent,
|
||||
ScrollEvent,
|
||||
LayoutEvent,
|
||||
} from '../../Types/CoreEventTypes';
|
||||
import type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';
|
||||
import type {NativeMethodsMixinType} from '../../Renderer/shims/ReactNativeTypes';
|
||||
import type {ViewStyleProp} from '../../StyleSheet/StyleSheet';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import type {PointProp} from '../../StyleSheet/PointPropType';
|
||||
import type {Props as ScrollViewStickyHeaderProps} from './ScrollViewStickyHeader';
|
||||
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
import type {State as ScrollResponderState} from '../ScrollResponder';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import type {Props as ScrollViewStickyHeaderProps} from './ScrollViewStickyHeader';
|
||||
|
||||
let AndroidScrollView;
|
||||
let AndroidHorizontalScrollContentView;
|
||||
|
@ -628,7 +627,7 @@ const standardVerticalContext: ContextType = Object.freeze({horizontal: false});
|
|||
* supports out of the box.
|
||||
*/
|
||||
class ScrollView extends React.Component<Props, State> {
|
||||
static Context = Context;
|
||||
static Context: React$Context<ContextType> = Context;
|
||||
/**
|
||||
* Part 1: Removing ScrollResponder.Mixin:
|
||||
*
|
||||
|
@ -688,7 +687,7 @@ class ScrollView extends React.Component<Props, State> {
|
|||
_stickyHeaderRefs: Map<string, StickyHeaderComponentType> = new Map();
|
||||
_headerLayoutYs: Map<string, number> = new Map();
|
||||
|
||||
state = {
|
||||
state: State = {
|
||||
layoutHeight: null,
|
||||
...ScrollResponder.Mixin.scrollResponderMixinGetInitialState(),
|
||||
};
|
||||
|
@ -941,7 +940,7 @@ class ScrollView extends React.Component<Props, State> {
|
|||
this._innerViewRef = ref;
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node | React.Element<string> {
|
||||
let ScrollViewClass;
|
||||
let ScrollContentContainerViewClass;
|
||||
if (Platform.OS === 'android') {
|
||||
|
|
|
@ -38,7 +38,7 @@ type State = {
|
|||
};
|
||||
|
||||
class ScrollViewStickyHeader extends React.Component<Props, State> {
|
||||
state = {
|
||||
state: State = {
|
||||
measured: false,
|
||||
layoutY: 0,
|
||||
layoutHeight: 0,
|
||||
|
@ -63,7 +63,7 @@ class ScrollViewStickyHeader extends React.Component<Props, State> {
|
|||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const {inverted, scrollViewHeight} = this.props;
|
||||
const {measured, layoutHeight, layoutY, nextHeaderLayoutY} = this.state;
|
||||
const inputRange: Array<number> = [-1, 0];
|
||||
|
|
|
@ -19,10 +19,10 @@ const requireNativeComponent = require('../../../ReactNative/requireNativeCompon
|
|||
|
||||
const RCTScrollView = requireNativeComponent('RCTScrollView');
|
||||
|
||||
const ScrollViewComponent = jest.genMockFromModule('../ScrollView');
|
||||
const ScrollViewComponent: $FlowFixMe = jest.genMockFromModule('../ScrollView');
|
||||
|
||||
class ScrollViewMock extends ScrollViewComponent {
|
||||
render() {
|
||||
render(): React.Element<string> {
|
||||
return (
|
||||
<RCTScrollView {...this.props}>
|
||||
{this.props.refreshControl}
|
||||
|
|
|
@ -20,4 +20,4 @@ export interface Spec extends TurboModule {
|
|||
+playTouchSound: () => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('SoundManager');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>('SoundManager'): Spec);
|
||||
|
|
|
@ -43,7 +43,7 @@ class StaticContainer extends React.Component<Props> {
|
|||
return !!nextProps.shouldUpdate;
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): null | React$Node {
|
||||
const child = this.props.children;
|
||||
return child === null || child === false
|
||||
? null
|
||||
|
|
|
@ -45,4 +45,6 @@ export interface Spec extends TurboModule {
|
|||
+setHidden: (hidden: boolean, withAnimation?: ?string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('StatusBarManager');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>(
|
||||
'StatusBarManager',
|
||||
): Spec);
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const React = require('react');
|
||||
const Platform = require('../../Utilities/Platform');
|
||||
const React = require('react');
|
||||
|
||||
const processColor = require('../../StyleSheet/processColor');
|
||||
|
||||
import NativeStatusBarManager from './NativeStatusBarManager';
|
||||
|
||||
/**
|
||||
|
@ -245,7 +246,7 @@ class StatusBar extends React.Component<Props> {
|
|||
*
|
||||
* @platform android
|
||||
*/
|
||||
static currentHeight = NativeStatusBarManager.getConstants().HEIGHT;
|
||||
static currentHeight: number = NativeStatusBarManager.getConstants().HEIGHT;
|
||||
|
||||
// Provide an imperative API as static functions of the component.
|
||||
// See the corresponding prop for more detail.
|
||||
|
@ -339,7 +340,7 @@ class StatusBar extends React.Component<Props> {
|
|||
*
|
||||
* @param props Object containing the StatusBar props to use in the stack entry.
|
||||
*/
|
||||
static pushStackEntry(props: any) {
|
||||
static pushStackEntry(props: any): any {
|
||||
const entry = createStackEntry(props);
|
||||
StatusBar._propsStack.push(entry);
|
||||
StatusBar._updatePropsStack();
|
||||
|
@ -365,7 +366,7 @@ class StatusBar extends React.Component<Props> {
|
|||
* @param entry Entry returned from `pushStackEntry` to replace.
|
||||
* @param props Object containing the StatusBar props to use in the replacement stack entry.
|
||||
*/
|
||||
static replaceStackEntry(entry: any, props: any) {
|
||||
static replaceStackEntry(entry: any, props: any): any {
|
||||
const newEntry = createStackEntry(props);
|
||||
const index = StatusBar._propsStack.indexOf(entry);
|
||||
if (index !== -1) {
|
||||
|
@ -375,7 +376,10 @@ class StatusBar extends React.Component<Props> {
|
|||
return newEntry;
|
||||
}
|
||||
|
||||
static defaultProps = {
|
||||
static defaultProps: $TEMPORARY$object<{|
|
||||
animated: boolean,
|
||||
showHideTransition: $TEMPORARY$string<'fade'>,
|
||||
|}> = {
|
||||
animated: false,
|
||||
showHideTransition: 'fade',
|
||||
};
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
'use strict';
|
||||
|
||||
const NativeEventEmitter = require('../../EventEmitter/NativeEventEmitter');
|
||||
|
||||
import NativeStatusBarManager from './NativeStatusBarManager';
|
||||
|
||||
/**
|
||||
|
@ -18,4 +19,4 @@ import NativeStatusBarManager from './NativeStatusBarManager';
|
|||
*/
|
||||
class StatusBarIOS extends NativeEventEmitter {}
|
||||
|
||||
module.exports = new StatusBarIOS(NativeStatusBarManager);
|
||||
module.exports = (new StatusBarIOS(NativeStatusBarManager): StatusBarIOS);
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
import SwitchNativeComponent from './SwitchNativeComponent';
|
||||
const AndroidSwitchNativeComponent = require('./AndroidSwitchNativeComponent');
|
||||
const Platform = require('../../Utilities/Platform');
|
||||
const React = require('react');
|
||||
const StyleSheet = require('../../StyleSheet/StyleSheet');
|
||||
|
||||
import type {SyntheticEvent} from '../../Types/CoreEventTypes';
|
||||
import type {ColorValue} from '../../StyleSheet/StyleSheetTypes';
|
||||
import type {SyntheticEvent} from '../../Types/CoreEventTypes';
|
||||
import type {ViewProps} from '../View/ViewPropTypes';
|
||||
import SwitchNativeComponent from './SwitchNativeComponent';
|
||||
|
||||
type SwitchChangeEvent = SyntheticEvent<
|
||||
$ReadOnly<{|
|
||||
|
@ -93,7 +93,7 @@ class Switch extends React.Component<Props> {
|
|||
typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,
|
||||
>;
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const {
|
||||
disabled,
|
||||
ios_backgroundColor,
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
import {requireNativeComponent} from 'react-native';
|
||||
|
||||
const AndroidTextInputNativeComponent = requireNativeComponent(
|
||||
const AndroidTextInputNativeComponent: string = requireNativeComponent(
|
||||
'AndroidTextInput',
|
||||
);
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ function unregisterInput(textFieldID: number) {
|
|||
inputs.delete(textFieldID);
|
||||
}
|
||||
|
||||
function isTextInput(textFieldID: number) {
|
||||
function isTextInput(textFieldID: number): boolean {
|
||||
return inputs.has(textFieldID);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,4 +30,4 @@ export interface Spec extends TurboModule {
|
|||
+open: (options: TimePickerOptions) => Promise<TimePickerResult>;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('TimePickerAndroid');
|
||||
export default (TurboModuleRegistry.get<Spec>('TimePickerAndroid'): ?Spec);
|
||||
|
|
|
@ -36,4 +36,4 @@ export interface Spec extends TurboModule {
|
|||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('ToastAndroid');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>('ToastAndroid'): Spec);
|
||||
|
|
|
@ -23,8 +23,8 @@ const View = require('../View/View');
|
|||
const keyMirror = require('fbjs/lib/keyMirror');
|
||||
const normalizeColor = require('../../Color/normalizeColor');
|
||||
|
||||
import type {PressEvent} from '../../Types/CoreEventTypes';
|
||||
import type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';
|
||||
import type {PressEvent} from '../../Types/CoreEventTypes';
|
||||
|
||||
const extractSingleTouch = nativeEvent => {
|
||||
const touches = nativeEvent.touches;
|
||||
|
@ -409,7 +409,9 @@ const TouchableMixin = {
|
|||
* @return {object} State object to be placed inside of
|
||||
* `this.state.touchable`.
|
||||
*/
|
||||
touchableGetInitialState: function() {
|
||||
touchableGetInitialState: function(): $TEMPORARY$object<{|
|
||||
touchable: $TEMPORARY$object<{|responderID: null, touchState: void|}>,
|
||||
|}> {
|
||||
return {
|
||||
touchable: {touchState: undefined, responderID: null},
|
||||
};
|
||||
|
@ -419,21 +421,21 @@ const TouchableMixin = {
|
|||
/**
|
||||
* Must return true if embedded in a native platform scroll view.
|
||||
*/
|
||||
touchableHandleResponderTerminationRequest: function() {
|
||||
touchableHandleResponderTerminationRequest: function(): any {
|
||||
return !this.props.rejectResponderTermination;
|
||||
},
|
||||
|
||||
/**
|
||||
* Must return true to start the process of `Touchable`.
|
||||
*/
|
||||
touchableHandleStartShouldSetResponder: function() {
|
||||
touchableHandleStartShouldSetResponder: function(): any {
|
||||
return !this.props.disabled;
|
||||
},
|
||||
|
||||
/**
|
||||
* Return true to cancel press on long press.
|
||||
*/
|
||||
touchableLongPressCancelsPress: function() {
|
||||
touchableLongPressCancelsPress: function(): boolean {
|
||||
return true;
|
||||
},
|
||||
|
||||
|
@ -784,7 +786,7 @@ const TouchableMixin = {
|
|||
this.longPressDelayTimeout = null;
|
||||
},
|
||||
|
||||
_isHighlight: function(state: State) {
|
||||
_isHighlight: function(state: State): boolean {
|
||||
return (
|
||||
state === States.RESPONDER_ACTIVE_PRESS_IN ||
|
||||
state === States.RESPONDER_ACTIVE_LONG_PRESS_IN
|
||||
|
@ -805,7 +807,7 @@ const TouchableMixin = {
|
|||
aY: number,
|
||||
bX: number,
|
||||
bY: number,
|
||||
) {
|
||||
): number {
|
||||
const deltaX = aX - bX;
|
||||
const deltaY = aY - bY;
|
||||
return Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
||||
|
@ -907,7 +909,7 @@ const TouchableMixin = {
|
|||
}
|
||||
},
|
||||
|
||||
withoutDefaultFocusAndBlur: {},
|
||||
withoutDefaultFocusAndBlur: ({}: $TEMPORARY$object<{||}>),
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -935,7 +937,7 @@ const Touchable = {
|
|||
}: {
|
||||
color: string | number,
|
||||
hitSlop: EdgeInsetsProp,
|
||||
}) => {
|
||||
}): null | React.Node => {
|
||||
if (!Touchable.TOUCH_TARGET_DEBUG) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class UnimplementedView extends React.Component<$FlowFixMeProps> {
|
|||
// See ensureComponentIsNative.js for more info
|
||||
}
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
// Workaround require cycle from requireNativeComponent
|
||||
const View = require('../View/View');
|
||||
return (
|
||||
|
|
|
@ -15,8 +15,8 @@ const ReactNativeViewConfig = {
|
|||
uiViewClassName: 'RCTView',
|
||||
baseModuleName: null,
|
||||
Manager: 'ViewManager',
|
||||
Commands: {},
|
||||
Constants: {},
|
||||
Commands: ({}: $TEMPORARY$object<{||}>),
|
||||
Constants: ({}: $TEMPORARY$object<{||}>),
|
||||
bubblingEventTypes: {
|
||||
...ReactNativeViewViewConfigAndroid.bubblingEventTypes,
|
||||
topBlur: {
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
const ReactNative = require('../../Renderer/shims/ReactNative');
|
||||
const Platform = require('../../Utilities/Platform');
|
||||
const registerGeneratedViewConfig = require('../../Utilities/registerGeneratedViewConfig');
|
||||
const ReactNative = require('../../Renderer/shims/ReactNative');
|
||||
const ReactNativeViewViewConfigAndroid = require('./ReactNativeViewViewConfigAndroid');
|
||||
|
||||
const registerGeneratedViewConfig = require('../../Utilities/registerGeneratedViewConfig');
|
||||
const requireNativeComponent = require('../../ReactNative/requireNativeComponent');
|
||||
|
||||
import type {ViewProps} from './ViewPropTypes';
|
||||
|
@ -23,7 +24,30 @@ export type ViewNativeComponentType = Class<
|
|||
>;
|
||||
|
||||
let NativeViewComponent;
|
||||
let viewConfig;
|
||||
let viewConfig:
|
||||
| $TEMPORARY$object<{||}>
|
||||
| $TEMPORARY$object<{|
|
||||
bubblingEventTypes?: $ReadOnly<{
|
||||
[eventName: string]: $ReadOnly<{|
|
||||
phasedRegistrationNames: $ReadOnly<{|
|
||||
bubbled: string,
|
||||
captured: string,
|
||||
|}>,
|
||||
|}>,
|
||||
}>,
|
||||
directEventTypes?: $ReadOnly<{
|
||||
[eventName: string]: $ReadOnly<{|registrationName: string|}>,
|
||||
}>,
|
||||
uiViewClassName: string,
|
||||
validAttributes?: {
|
||||
[propName: string]:
|
||||
| true
|
||||
| $ReadOnly<{|
|
||||
diff?: <T>(arg1: any, arg2: any) => boolean,
|
||||
process?: (arg1: any) => any,
|
||||
|}>,
|
||||
},
|
||||
|}>;
|
||||
|
||||
// Only use the JS view config in DEV
|
||||
if (__DEV__) {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
import type {ExtendedError} from './Devtools/parseErrorStack';
|
||||
|
||||
class SyntheticError extends Error {
|
||||
name = '';
|
||||
name: string = '';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,4 +25,4 @@ export interface Spec extends TurboModule {
|
|||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.getEnforcing<Spec>('SegmentFetcher');
|
||||
export default (TurboModuleRegistry.getEnforcing<Spec>('SegmentFetcher'): Spec);
|
||||
|
|
|
@ -9,15 +9,14 @@
|
|||
*/
|
||||
'use strict';
|
||||
|
||||
const BatchedBridge = require('../../BatchedBridge/BatchedBridge');
|
||||
const Platform = require('../../Utilities/Platform');
|
||||
const Systrace = require('../../Performance/Systrace');
|
||||
|
||||
const invariant = require('invariant');
|
||||
const BatchedBridge = require('../../BatchedBridge/BatchedBridge');
|
||||
|
||||
import NativeTiming from './NativeTiming';
|
||||
|
||||
import type {ExtendedError} from '../Devtools/parseErrorStack';
|
||||
import NativeTiming from './NativeTiming';
|
||||
|
||||
let _performanceNow = null;
|
||||
function performanceNow() {
|
||||
|
@ -498,7 +497,22 @@ function setSendIdleEvents(sendIdleEvents: boolean): void {
|
|||
NativeTiming.setSendIdleEvents(sendIdleEvents);
|
||||
}
|
||||
|
||||
let ExportedJSTimers;
|
||||
let ExportedJSTimers: $TEMPORARY$object<{|
|
||||
callIdleCallbacks: (frameTime: number) => any | void,
|
||||
callImmediates: () => void,
|
||||
callTimers: (timersToCall: Array<number>) => any | void,
|
||||
cancelAnimationFrame: (timerID: number) => void,
|
||||
cancelIdleCallback: (timerID: number) => void,
|
||||
clearImmediate: (timerID: number) => void,
|
||||
clearInterval: (timerID: number) => void,
|
||||
clearTimeout: (timerID: number) => void,
|
||||
emitTimeDriftWarning: (warningMessage: string) => any | void,
|
||||
requestAnimationFrame: (func: any) => any | number,
|
||||
requestIdleCallback: (func: any, options: ?any) => any | number,
|
||||
setImmediate: (func: any, ...args: any) => number,
|
||||
setInterval: (func: any, duration: number, ...args: any) => number,
|
||||
setTimeout: (func: any, duration: number, ...args: any) => number,
|
||||
|}>;
|
||||
if (!NativeTiming) {
|
||||
console.warn("Timing native module is not available, can't set timers.");
|
||||
// $FlowFixMe: we can assume timers are generally available
|
||||
|
|
|
@ -24,4 +24,4 @@ export interface Spec extends TurboModule {
|
|||
+setSendIdleEvents: (sendIdleEvents: boolean) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('Timing');
|
||||
export default (TurboModuleRegistry.get<Spec>('Timing'): ?Spec);
|
||||
|
|
|
@ -12,7 +12,12 @@
|
|||
|
||||
const PropTypes = require('prop-types');
|
||||
|
||||
const DeprecatedEdgeInsetsPropType = PropTypes.shape({
|
||||
const DeprecatedEdgeInsetsPropType: React$PropType$Primitive<{
|
||||
bottom?: number,
|
||||
left?: number,
|
||||
right?: number,
|
||||
top?: number,
|
||||
}> = PropTypes.shape({
|
||||
top: PropTypes.number,
|
||||
left: PropTypes.number,
|
||||
bottom: PropTypes.number,
|
||||
|
|
|
@ -17,9 +17,11 @@ const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
|
|||
const PropTypes = require('prop-types');
|
||||
|
||||
module.exports = {
|
||||
style: DeprecatedStyleSheetPropType(DeprecatedImageStylePropTypes),
|
||||
style: (DeprecatedStyleSheetPropType(
|
||||
DeprecatedImageStylePropTypes,
|
||||
): ReactPropsCheckType),
|
||||
source: DeprecatedImageSourcePropType,
|
||||
defaultSource: PropTypes.oneOfType([
|
||||
defaultSource: (PropTypes.oneOfType([
|
||||
PropTypes.shape({
|
||||
uri: PropTypes.string,
|
||||
width: PropTypes.number,
|
||||
|
@ -27,7 +29,9 @@ module.exports = {
|
|||
scale: PropTypes.number,
|
||||
}),
|
||||
PropTypes.number,
|
||||
]),
|
||||
]): React$PropType$Primitive<
|
||||
{height?: number, scale?: number, uri?: string, width?: number} | number,
|
||||
>),
|
||||
|
||||
accessible: PropTypes.bool,
|
||||
|
||||
|
@ -37,15 +41,21 @@ module.exports = {
|
|||
|
||||
capInsets: DeprecatedEdgeInsetsPropType,
|
||||
|
||||
resizeMethod: PropTypes.oneOf(['auto', 'resize', 'scale']),
|
||||
resizeMethod: (PropTypes.oneOf([
|
||||
'auto',
|
||||
'resize',
|
||||
'scale',
|
||||
]): React$PropType$Primitive<'auto' | 'resize' | 'scale'>),
|
||||
|
||||
resizeMode: PropTypes.oneOf([
|
||||
resizeMode: (PropTypes.oneOf([
|
||||
'cover',
|
||||
'contain',
|
||||
'stretch',
|
||||
'repeat',
|
||||
'center',
|
||||
]),
|
||||
]): React$PropType$Primitive<
|
||||
'cover' | 'contain' | 'stretch' | 'repeat' | 'center',
|
||||
>),
|
||||
|
||||
testID: PropTypes.string,
|
||||
|
||||
|
|
|
@ -11,27 +11,35 @@
|
|||
|
||||
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
|
||||
const DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');
|
||||
const ReactPropTypes = require('prop-types');
|
||||
const DeprecatedShadowPropTypesIOS = require('./DeprecatedShadowPropTypesIOS');
|
||||
const DeprecatedTransformPropTypes = require('./DeprecatedTransformPropTypes');
|
||||
const ReactPropTypes = require('prop-types');
|
||||
|
||||
const ImageStylePropTypes = {
|
||||
...DeprecatedLayoutPropTypes,
|
||||
...DeprecatedShadowPropTypesIOS,
|
||||
...DeprecatedTransformPropTypes,
|
||||
resizeMode: ReactPropTypes.oneOf([
|
||||
resizeMode: (ReactPropTypes.oneOf([
|
||||
'center',
|
||||
'contain',
|
||||
'cover',
|
||||
'repeat',
|
||||
'stretch',
|
||||
]),
|
||||
backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),
|
||||
]): React$PropType$Primitive<
|
||||
'center' | 'contain' | 'cover' | 'repeat' | 'stretch',
|
||||
>),
|
||||
backfaceVisibility: (ReactPropTypes.oneOf([
|
||||
'visible',
|
||||
'hidden',
|
||||
]): React$PropType$Primitive<'visible' | 'hidden'>),
|
||||
backgroundColor: DeprecatedColorPropType,
|
||||
borderColor: DeprecatedColorPropType,
|
||||
borderWidth: ReactPropTypes.number,
|
||||
borderRadius: ReactPropTypes.number,
|
||||
overflow: ReactPropTypes.oneOf(['visible', 'hidden']),
|
||||
overflow: (ReactPropTypes.oneOf([
|
||||
'visible',
|
||||
'hidden',
|
||||
]): React$PropType$Primitive<'visible' | 'hidden'>),
|
||||
|
||||
/**
|
||||
* Changes the color of all the non-transparent pixels to the tintColor.
|
||||
|
|
|
@ -13,121 +13,129 @@
|
|||
const ReactPropTypes = require('prop-types');
|
||||
|
||||
const LayoutPropTypes = {
|
||||
display: ReactPropTypes.oneOf(['none', 'flex']),
|
||||
width: ReactPropTypes.oneOfType([
|
||||
display: (ReactPropTypes.oneOf(['none', 'flex']): React$PropType$Primitive<
|
||||
'none' | 'flex',
|
||||
>),
|
||||
width: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
height: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
height: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
start: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
start: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
end: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
|
||||
top: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
|
||||
left: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
end: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
right: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
top: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
bottom: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
left: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
minWidth: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
right: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
maxWidth: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
bottom: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
minHeight: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
minWidth: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
maxHeight: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
maxWidth: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
margin: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
minHeight: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginVertical: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
maxHeight: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginHorizontal: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
margin: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginTop: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginVertical: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginBottom: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginHorizontal: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginLeft: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginTop: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginRight: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginBottom: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginStart: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginLeft: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
marginEnd: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginRight: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
padding: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginStart: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingVertical: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
marginEnd: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingHorizontal: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
padding: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingTop: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingVertical: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingBottom: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingHorizontal: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingLeft: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingTop: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingRight: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingBottom: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingStart: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingLeft: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
paddingEnd: ReactPropTypes.oneOfType([
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingRight: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingStart: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
paddingEnd: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
borderWidth: ReactPropTypes.number,
|
||||
borderTopWidth: ReactPropTypes.number,
|
||||
borderStartWidth: ReactPropTypes.number,
|
||||
|
@ -135,56 +143,91 @@ const LayoutPropTypes = {
|
|||
borderRightWidth: ReactPropTypes.number,
|
||||
borderBottomWidth: ReactPropTypes.number,
|
||||
borderLeftWidth: ReactPropTypes.number,
|
||||
position: ReactPropTypes.oneOf(['absolute', 'relative']),
|
||||
flexDirection: ReactPropTypes.oneOf([
|
||||
position: (ReactPropTypes.oneOf([
|
||||
'absolute',
|
||||
'relative',
|
||||
]): React$PropType$Primitive<'absolute' | 'relative'>),
|
||||
flexDirection: (ReactPropTypes.oneOf([
|
||||
'row',
|
||||
'row-reverse',
|
||||
'column',
|
||||
'column-reverse',
|
||||
]),
|
||||
flexWrap: ReactPropTypes.oneOf(['wrap', 'nowrap', 'wrap-reverse']),
|
||||
justifyContent: ReactPropTypes.oneOf([
|
||||
]): React$PropType$Primitive<
|
||||
'row' | 'row-reverse' | 'column' | 'column-reverse',
|
||||
>),
|
||||
flexWrap: (ReactPropTypes.oneOf([
|
||||
'wrap',
|
||||
'nowrap',
|
||||
'wrap-reverse',
|
||||
]): React$PropType$Primitive<'wrap' | 'nowrap' | 'wrap-reverse'>),
|
||||
justifyContent: (ReactPropTypes.oneOf([
|
||||
'flex-start',
|
||||
'flex-end',
|
||||
'center',
|
||||
'space-between',
|
||||
'space-around',
|
||||
'space-evenly',
|
||||
]),
|
||||
alignItems: ReactPropTypes.oneOf([
|
||||
]): React$PropType$Primitive<
|
||||
| 'flex-start'
|
||||
| 'flex-end'
|
||||
| 'center'
|
||||
| 'space-between'
|
||||
| 'space-around'
|
||||
| 'space-evenly',
|
||||
>),
|
||||
alignItems: (ReactPropTypes.oneOf([
|
||||
'flex-start',
|
||||
'flex-end',
|
||||
'center',
|
||||
'stretch',
|
||||
'baseline',
|
||||
]),
|
||||
alignSelf: ReactPropTypes.oneOf([
|
||||
]): React$PropType$Primitive<
|
||||
'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',
|
||||
>),
|
||||
alignSelf: (ReactPropTypes.oneOf([
|
||||
'auto',
|
||||
'flex-start',
|
||||
'flex-end',
|
||||
'center',
|
||||
'stretch',
|
||||
'baseline',
|
||||
]),
|
||||
alignContent: ReactPropTypes.oneOf([
|
||||
]): React$PropType$Primitive<
|
||||
'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',
|
||||
>),
|
||||
alignContent: (ReactPropTypes.oneOf([
|
||||
'flex-start',
|
||||
'flex-end',
|
||||
'center',
|
||||
'stretch',
|
||||
'space-between',
|
||||
'space-around',
|
||||
]),
|
||||
overflow: ReactPropTypes.oneOf(['visible', 'hidden', 'scroll']),
|
||||
]): React$PropType$Primitive<
|
||||
| 'flex-start'
|
||||
| 'flex-end'
|
||||
| 'center'
|
||||
| 'stretch'
|
||||
| 'space-between'
|
||||
| 'space-around',
|
||||
>),
|
||||
overflow: (ReactPropTypes.oneOf([
|
||||
'visible',
|
||||
'hidden',
|
||||
'scroll',
|
||||
]): React$PropType$Primitive<'visible' | 'hidden' | 'scroll'>),
|
||||
flex: ReactPropTypes.number,
|
||||
flexGrow: ReactPropTypes.number,
|
||||
flexShrink: ReactPropTypes.number,
|
||||
flexBasis: ReactPropTypes.oneOfType([
|
||||
flexBasis: (ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.number,
|
||||
ReactPropTypes.string,
|
||||
]),
|
||||
]): React$PropType$Primitive<number | string>),
|
||||
aspectRatio: ReactPropTypes.number,
|
||||
zIndex: ReactPropTypes.number,
|
||||
direction: ReactPropTypes.oneOf(['inherit', 'ltr', 'rtl']),
|
||||
direction: (ReactPropTypes.oneOf([
|
||||
'inherit',
|
||||
'ltr',
|
||||
'rtl',
|
||||
]): React$PropType$Primitive<'inherit' | 'ltr' | 'rtl'>),
|
||||
};
|
||||
|
||||
module.exports = LayoutPropTypes;
|
||||
|
|
|
@ -12,7 +12,10 @@
|
|||
|
||||
const PropTypes = require('prop-types');
|
||||
|
||||
const PointPropType = PropTypes.shape({
|
||||
const PointPropType: React$PropType$Primitive<{
|
||||
x?: number,
|
||||
y?: number,
|
||||
}> = PropTypes.shape({
|
||||
x: PropTypes.number,
|
||||
y: PropTypes.number,
|
||||
});
|
||||
|
|
|
@ -14,10 +14,10 @@ const ReactPropTypes = require('prop-types');
|
|||
|
||||
const DeprecatedShadowPropTypesIOS = {
|
||||
shadowColor: DeprecatedColorPropType,
|
||||
shadowOffset: ReactPropTypes.shape({
|
||||
shadowOffset: (ReactPropTypes.shape({
|
||||
width: ReactPropTypes.number,
|
||||
height: ReactPropTypes.number,
|
||||
}),
|
||||
}): React$PropType$Primitive<{height?: number, width?: number}>),
|
||||
shadowOpacity: ReactPropTypes.number,
|
||||
shadowRadius: ReactPropTypes.number,
|
||||
};
|
||||
|
|
|
@ -16,12 +16,23 @@ const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
|
|||
const PropTypes = require('prop-types');
|
||||
const TextStylePropTypes = require('../Text/TextStylePropTypes');
|
||||
|
||||
const stylePropType = DeprecatedStyleSheetPropType(TextStylePropTypes);
|
||||
const stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(
|
||||
TextStylePropTypes,
|
||||
);
|
||||
|
||||
module.exports = {
|
||||
ellipsizeMode: PropTypes.oneOf(['head', 'middle', 'tail', 'clip']),
|
||||
ellipsizeMode: (PropTypes.oneOf([
|
||||
'head',
|
||||
'middle',
|
||||
'tail',
|
||||
'clip',
|
||||
]): React$PropType$Primitive<'head' | 'middle' | 'tail' | 'clip'>),
|
||||
numberOfLines: PropTypes.number,
|
||||
textBreakStrategy: PropTypes.oneOf(['simple', 'highQuality', 'balanced']),
|
||||
textBreakStrategy: (PropTypes.oneOf([
|
||||
'simple',
|
||||
'highQuality',
|
||||
'balanced',
|
||||
]): React$PropType$Primitive<'simple' | 'highQuality' | 'balanced'>),
|
||||
onLayout: PropTypes.func,
|
||||
onPress: PropTypes.func,
|
||||
onLongPress: PropTypes.func,
|
||||
|
|
|
@ -41,7 +41,7 @@ const DecomposedMatrixPropType = function(
|
|||
};
|
||||
|
||||
const DeprecatedTransformPropTypes = {
|
||||
transform: ReactPropTypes.arrayOf(
|
||||
transform: (ReactPropTypes.arrayOf(
|
||||
ReactPropTypes.oneOfType([
|
||||
ReactPropTypes.shape({perspective: ReactPropTypes.number}),
|
||||
ReactPropTypes.shape({rotate: ReactPropTypes.string}),
|
||||
|
@ -56,29 +56,44 @@ const DeprecatedTransformPropTypes = {
|
|||
ReactPropTypes.shape({skewX: ReactPropTypes.string}),
|
||||
ReactPropTypes.shape({skewY: ReactPropTypes.string}),
|
||||
]),
|
||||
),
|
||||
): React$PropType$Primitive<
|
||||
Array<
|
||||
| {perspective?: number}
|
||||
| {rotate?: string}
|
||||
| {rotateX?: string}
|
||||
| {rotateY?: string}
|
||||
| {rotateZ?: string}
|
||||
| {scale?: number}
|
||||
| {scaleX?: number}
|
||||
| {scaleY?: number}
|
||||
| {translateX?: number}
|
||||
| {translateY?: number}
|
||||
| {skewX?: string}
|
||||
| {skewY?: string},
|
||||
>,
|
||||
>),
|
||||
transformMatrix: TransformMatrixPropType,
|
||||
decomposedMatrix: DecomposedMatrixPropType,
|
||||
scaleX: deprecatedPropType(
|
||||
scaleX: (deprecatedPropType(
|
||||
ReactPropTypes.number,
|
||||
'Use the transform prop instead.',
|
||||
),
|
||||
scaleY: deprecatedPropType(
|
||||
): ReactPropsCheckType),
|
||||
scaleY: (deprecatedPropType(
|
||||
ReactPropTypes.number,
|
||||
'Use the transform prop instead.',
|
||||
),
|
||||
rotation: deprecatedPropType(
|
||||
): ReactPropsCheckType),
|
||||
rotation: (deprecatedPropType(
|
||||
ReactPropTypes.number,
|
||||
'Use the transform prop instead.',
|
||||
),
|
||||
translateX: deprecatedPropType(
|
||||
): ReactPropsCheckType),
|
||||
translateX: (deprecatedPropType(
|
||||
ReactPropTypes.number,
|
||||
'Use the transform prop instead.',
|
||||
),
|
||||
translateY: deprecatedPropType(
|
||||
): ReactPropsCheckType),
|
||||
translateY: (deprecatedPropType(
|
||||
ReactPropTypes.number,
|
||||
'Use the transform prop instead.',
|
||||
),
|
||||
): ReactPropsCheckType),
|
||||
};
|
||||
|
||||
module.exports = DeprecatedTransformPropTypes;
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
'use strict';
|
||||
|
||||
const DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');
|
||||
const PlatformViewPropTypes = require('../Components/View/PlatformViewPropTypes');
|
||||
const PropTypes = require('prop-types');
|
||||
const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
|
||||
const DeprecatedViewStylePropTypes = require('./DeprecatedViewStylePropTypes');
|
||||
const PlatformViewPropTypes = require('../Components/View/PlatformViewPropTypes');
|
||||
const PropTypes = require('prop-types');
|
||||
|
||||
const {
|
||||
DeprecatedAccessibilityRoles,
|
||||
DeprecatedAccessibilityStates,
|
||||
} = require('./DeprecatedViewAccessibility');
|
||||
|
||||
const stylePropType = DeprecatedStyleSheetPropType(
|
||||
const stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(
|
||||
DeprecatedViewStylePropTypes,
|
||||
);
|
||||
|
||||
|
@ -58,7 +58,9 @@ module.exports = {
|
|||
*
|
||||
* @platform ios
|
||||
*/
|
||||
accessibilityActions: PropTypes.arrayOf(PropTypes.string),
|
||||
accessibilityActions: (PropTypes.arrayOf(
|
||||
PropTypes.string,
|
||||
): React$PropType$Primitive<Array<string>>),
|
||||
|
||||
/**
|
||||
* Prevents view from being inverted if set to true and color inversion is turned on.
|
||||
|
@ -70,14 +72,55 @@ module.exports = {
|
|||
/**
|
||||
* Indicates to accessibility services to treat UI component like a specific role.
|
||||
*/
|
||||
accessibilityRole: PropTypes.oneOf(DeprecatedAccessibilityRoles),
|
||||
accessibilityRole: (PropTypes.oneOf(
|
||||
DeprecatedAccessibilityRoles,
|
||||
): React$PropType$Primitive<
|
||||
| 'none'
|
||||
| 'button'
|
||||
| 'link'
|
||||
| 'search'
|
||||
| 'image'
|
||||
| 'keyboardkey'
|
||||
| 'text'
|
||||
| 'adjustable'
|
||||
| 'imagebutton'
|
||||
| 'header'
|
||||
| 'summary'
|
||||
| 'alert'
|
||||
| 'checkbox'
|
||||
| 'combobox'
|
||||
| 'menu'
|
||||
| 'menubar'
|
||||
| 'menuitem'
|
||||
| 'progressbar'
|
||||
| 'radio'
|
||||
| 'radiogroup'
|
||||
| 'scrollbar'
|
||||
| 'spinbutton'
|
||||
| 'switch'
|
||||
| 'tab'
|
||||
| 'tablist'
|
||||
| 'timer'
|
||||
| 'toolbar',
|
||||
>),
|
||||
|
||||
/**
|
||||
* Indicates to accessibility services that UI Component is in a specific State.
|
||||
*/
|
||||
accessibilityStates: PropTypes.arrayOf(
|
||||
accessibilityStates: (PropTypes.arrayOf(
|
||||
PropTypes.oneOf(DeprecatedAccessibilityStates),
|
||||
),
|
||||
): React$PropType$Primitive<
|
||||
Array<
|
||||
| 'selected'
|
||||
| 'disabled'
|
||||
| 'checked'
|
||||
| 'unchecked'
|
||||
| 'busy'
|
||||
| 'expanded'
|
||||
| 'collapsed'
|
||||
| 'hasPopup',
|
||||
>,
|
||||
>),
|
||||
accessibilityState: PropTypes.object,
|
||||
/**
|
||||
* Indicates to accessibility services whether the user should be notified
|
||||
|
@ -87,7 +130,11 @@ module.exports = {
|
|||
*
|
||||
* See http://facebook.github.io/react-native/docs/view.html#accessibilityliveregion
|
||||
*/
|
||||
accessibilityLiveRegion: PropTypes.oneOf(['none', 'polite', 'assertive']),
|
||||
accessibilityLiveRegion: (PropTypes.oneOf([
|
||||
'none',
|
||||
'polite',
|
||||
'assertive',
|
||||
]): React$PropType$Primitive<'none' | 'polite' | 'assertive'>),
|
||||
|
||||
/**
|
||||
* Controls how view is important for accessibility which is if it
|
||||
|
@ -98,12 +145,12 @@ module.exports = {
|
|||
*
|
||||
* See http://facebook.github.io/react-native/docs/view.html#importantforaccessibility
|
||||
*/
|
||||
importantForAccessibility: PropTypes.oneOf([
|
||||
importantForAccessibility: (PropTypes.oneOf([
|
||||
'auto',
|
||||
'yes',
|
||||
'no',
|
||||
'no-hide-descendants',
|
||||
]),
|
||||
]): React$PropType$Primitive<'auto' | 'yes' | 'no' | 'no-hide-descendants'>),
|
||||
|
||||
/**
|
||||
* A value indicating whether VoiceOver should ignore the elements
|
||||
|
@ -314,7 +361,12 @@ module.exports = {
|
|||
*
|
||||
* See http://facebook.github.io/react-native/docs/view.html#pointerevents
|
||||
*/
|
||||
pointerEvents: PropTypes.oneOf(['box-none', 'none', 'box-only', 'auto']),
|
||||
pointerEvents: (PropTypes.oneOf([
|
||||
'box-none',
|
||||
'none',
|
||||
'box-only',
|
||||
'auto',
|
||||
]): React$PropType$Primitive<'box-none' | 'none' | 'box-only' | 'auto'>),
|
||||
|
||||
/**
|
||||
* See http://facebook.github.io/react-native/docs/style.html
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
|
||||
const DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');
|
||||
const ReactPropTypes = require('prop-types');
|
||||
const DeprecatedShadowPropTypesIOS = require('./DeprecatedShadowPropTypesIOS');
|
||||
const DeprecatedTransformPropTypes = require('./DeprecatedTransformPropTypes');
|
||||
const ReactPropTypes = require('prop-types');
|
||||
|
||||
/**
|
||||
* Warning: Some of these properties may not be supported in all releases.
|
||||
|
@ -23,7 +23,10 @@ const DeprecatedViewStylePropTypes = {
|
|||
...DeprecatedLayoutPropTypes,
|
||||
...DeprecatedShadowPropTypesIOS,
|
||||
...DeprecatedTransformPropTypes,
|
||||
backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),
|
||||
backfaceVisibility: (ReactPropTypes.oneOf([
|
||||
'visible',
|
||||
'hidden',
|
||||
]): React$PropType$Primitive<'visible' | 'hidden'>),
|
||||
backgroundColor: DeprecatedColorPropType,
|
||||
borderColor: DeprecatedColorPropType,
|
||||
borderTopColor: DeprecatedColorPropType,
|
||||
|
@ -41,7 +44,11 @@ const DeprecatedViewStylePropTypes = {
|
|||
borderBottomRightRadius: ReactPropTypes.number,
|
||||
borderBottomStartRadius: ReactPropTypes.number,
|
||||
borderBottomEndRadius: ReactPropTypes.number,
|
||||
borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']),
|
||||
borderStyle: (ReactPropTypes.oneOf([
|
||||
'solid',
|
||||
'dotted',
|
||||
'dashed',
|
||||
]): React$PropType$Primitive<'solid' | 'dotted' | 'dashed'>),
|
||||
borderWidth: ReactPropTypes.number,
|
||||
borderTopWidth: ReactPropTypes.number,
|
||||
borderRightWidth: ReactPropTypes.number,
|
||||
|
|
|
@ -81,4 +81,4 @@ class RCTDeviceEventEmitter extends EventEmitter {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = new RCTDeviceEventEmitter();
|
||||
module.exports = (new RCTDeviceEventEmitter(): RCTDeviceEventEmitter);
|
||||
|
|
|
@ -11,9 +11,8 @@
|
|||
'use strict';
|
||||
|
||||
const InteractionManager = require('../Interaction/InteractionManager');
|
||||
const React = require('react');
|
||||
|
||||
const PropTypes = require('prop-types');
|
||||
const React = require('react');
|
||||
|
||||
const infoLog = require('../Utilities/infoLog');
|
||||
|
||||
|
@ -104,11 +103,16 @@ class Incremental extends React.Component<Props, State> {
|
|||
_mounted: boolean;
|
||||
_rendered: boolean;
|
||||
|
||||
static defaultProps = {
|
||||
static defaultProps: $TEMPORARY$object<{|name: string|}> = {
|
||||
name: '',
|
||||
};
|
||||
|
||||
static contextTypes = {
|
||||
static contextTypes:
|
||||
| any
|
||||
| $TEMPORARY$object<{|
|
||||
incrementalGroup: React$PropType$Primitive<any>,
|
||||
incrementalGroupEnabled: React$PropType$Primitive<boolean>,
|
||||
|}> = {
|
||||
incrementalGroup: PropTypes.object,
|
||||
incrementalGroupEnabled: PropTypes.bool,
|
||||
};
|
||||
|
|
|
@ -93,8 +93,9 @@ function Block(props: Object) {
|
|||
const Row = (props: Object) => <View style={styles.row} {...props} />;
|
||||
|
||||
class IncrementalExample extends React.Component<mixed, {stats: ?Object}> {
|
||||
static title = '<Incremental*>';
|
||||
static description = 'Enables incremental rendering of complex components.';
|
||||
static title: string = '<Incremental*>';
|
||||
static description: string =
|
||||
'Enables incremental rendering of complex components.';
|
||||
start: number;
|
||||
constructor(props: mixed, context: mixed) {
|
||||
super(props, context);
|
||||
|
|
|
@ -15,9 +15,9 @@ const PropTypes = require('prop-types');
|
|||
const React = require('react');
|
||||
const View = require('../Components/View/View');
|
||||
|
||||
import type {Context} from './Incremental';
|
||||
import type {ViewStyleProp} from '../StyleSheet/StyleSheet';
|
||||
import type {LayoutEvent} from '../Types/CoreEventTypes';
|
||||
import type {Context} from './Incremental';
|
||||
|
||||
/**
|
||||
* WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will
|
||||
|
@ -44,7 +44,12 @@ class IncrementalPresenter extends React.Component<Props> {
|
|||
context: Context;
|
||||
_isDone: boolean;
|
||||
|
||||
static contextTypes = {
|
||||
static contextTypes:
|
||||
| any
|
||||
| $TEMPORARY$object<{|
|
||||
incrementalGroup: React$PropType$Primitive<any>,
|
||||
incrementalGroupEnabled: React$PropType$Primitive<boolean>,
|
||||
|}> = {
|
||||
incrementalGroup: PropTypes.object,
|
||||
incrementalGroupEnabled: PropTypes.bool,
|
||||
};
|
||||
|
@ -67,7 +72,7 @@ class IncrementalPresenter extends React.Component<Props> {
|
|||
}
|
||||
this.props.onDone && this.props.onDone();
|
||||
}
|
||||
render() {
|
||||
render(): React.Node {
|
||||
let style: ViewStyleProp;
|
||||
if (
|
||||
this.props.disabled !== true &&
|
||||
|
|
|
@ -170,7 +170,15 @@ class WindowedListView extends React.Component<Props, State> {
|
|||
_scrollRef: ?ScrollView;
|
||||
_viewabilityHelper: ViewabilityHelper;
|
||||
|
||||
static defaultProps = {
|
||||
static defaultProps: $TEMPORARY$object<{|
|
||||
disableIncrementalRendering: boolean,
|
||||
initialNumToRender: number,
|
||||
maxNumToRender: number,
|
||||
numToRenderAhead: number,
|
||||
recomputeRowsBatchingPeriod: number,
|
||||
renderScrollComponent: (props: any) => React.Node,
|
||||
viewablePercentThreshold: number,
|
||||
|}> = {
|
||||
initialNumToRender: 10,
|
||||
maxNumToRender: 30,
|
||||
numToRenderAhead: 10,
|
||||
|
|
|
@ -21,4 +21,4 @@ export interface Spec extends TurboModule {
|
|||
+captureComplete: (path: string, error: ?string) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('HeapCapture');
|
||||
export default (TurboModuleRegistry.get<Spec>('HeapCapture'): ?Spec);
|
||||
|
|
|
@ -47,7 +47,7 @@ function getSizeWithHeaders(
|
|||
headers: {[string]: string},
|
||||
success: (width: number, height: number) => void,
|
||||
failure?: (error: any) => void,
|
||||
) {
|
||||
): any {
|
||||
return ImageViewManager.getSizeWithHeaders({uri, headers})
|
||||
.then(function(sizes) {
|
||||
success(sizes.width, sizes.height);
|
||||
|
@ -60,7 +60,7 @@ function getSizeWithHeaders(
|
|||
);
|
||||
}
|
||||
|
||||
function prefetch(url: string) {
|
||||
function prefetch(url: string): any {
|
||||
return ImageViewManager.prefetchImage(url);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ class ImageBackground extends React.Component<$FlowFixMeProps> {
|
|||
this._viewRef = ref;
|
||||
};
|
||||
|
||||
render() {
|
||||
render(): React.Node {
|
||||
const {children, style, imageStyle, imageRef, ...props} = this.props;
|
||||
|
||||
return (
|
||||
|
|
|
@ -14,11 +14,11 @@ import NativeImagePickerIOS from './NativeImagePickerIOS';
|
|||
import invariant from 'invariant';
|
||||
|
||||
const ImagePickerIOS = {
|
||||
canRecordVideos: function(callback: (result: boolean) => void) {
|
||||
canRecordVideos: function(callback: (result: boolean) => void): void {
|
||||
invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');
|
||||
return NativeImagePickerIOS.canRecordVideos(callback);
|
||||
},
|
||||
canUseCamera: function(callback: (result: boolean) => void) {
|
||||
canUseCamera: function(callback: (result: boolean) => void): void {
|
||||
invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');
|
||||
return NativeImagePickerIOS.canUseCamera(callback);
|
||||
},
|
||||
|
@ -29,7 +29,7 @@ const ImagePickerIOS = {
|
|||
|}>,
|
||||
successCallback: (imageURL: string, height: number, width: number) => void,
|
||||
cancelCallback: () => void,
|
||||
) {
|
||||
): void {
|
||||
invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');
|
||||
|
||||
var newConfig = {
|
||||
|
@ -58,7 +58,7 @@ const ImagePickerIOS = {
|
|||
|}>,
|
||||
successCallback: (imageURL: string, height: number, width: number) => void,
|
||||
cancelCallback: () => void,
|
||||
) {
|
||||
): void {
|
||||
invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');
|
||||
|
||||
var newConfig = {
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
|
||||
const requireNativeComponent = require('../ReactNative/requireNativeComponent');
|
||||
|
||||
const ImageViewNativeComponent = requireNativeComponent('RCTImageView');
|
||||
const ImageViewNativeComponent: string = requireNativeComponent('RCTImageView');
|
||||
|
||||
module.exports = ImageViewNativeComponent;
|
||||
|
|
|
@ -35,4 +35,4 @@ export interface Spec extends TurboModule {
|
|||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('ImagePickerIOS');
|
||||
export default (TurboModuleRegistry.get<Spec>('ImagePickerIOS'): ?Spec);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
const AssetRegistry = require('./AssetRegistry');
|
||||
|
||||
module.exports = AssetRegistry.registerAsset({
|
||||
module.exports = (AssetRegistry.registerAsset({
|
||||
__packager_asset: true,
|
||||
fileSystemLocation: '/full/path/to/directory',
|
||||
httpServerLocation: '/assets/full/path/to/directory',
|
||||
|
@ -25,4 +25,4 @@ module.exports = AssetRegistry.registerAsset({
|
|||
hash: 'nonsense',
|
||||
name: 'icon',
|
||||
type: 'png',
|
||||
});
|
||||
}): number);
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
|
||||
const requireNativeComponent = require('../ReactNative/requireNativeComponent');
|
||||
|
||||
const TextInlineImage = requireNativeComponent('RCTTextInlineImage');
|
||||
const TextInlineImage: string = requireNativeComponent('RCTTextInlineImage');
|
||||
|
||||
module.exports = TextInlineImage;
|
||||
|
|
|
@ -44,7 +44,10 @@ const drawableFileTypes = new Set([
|
|||
'xml',
|
||||
]);
|
||||
|
||||
function getAndroidResourceFolderName(asset: PackagerAsset, scale: number) {
|
||||
function getAndroidResourceFolderName(
|
||||
asset: PackagerAsset,
|
||||
scale: number,
|
||||
): string | $TEMPORARY$string<'raw'> {
|
||||
if (!drawableFileTypes.has(asset.type)) {
|
||||
return 'raw';
|
||||
}
|
||||
|
@ -63,7 +66,7 @@ function getAndroidResourceFolderName(asset: PackagerAsset, scale: number) {
|
|||
return androidFolder;
|
||||
}
|
||||
|
||||
function getAndroidResourceIdentifier(asset: PackagerAsset) {
|
||||
function getAndroidResourceIdentifier(asset: PackagerAsset): string {
|
||||
var folderPath = getBasePath(asset);
|
||||
return (folderPath + '/' + asset.name)
|
||||
.toLowerCase()
|
||||
|
@ -72,7 +75,7 @@ function getAndroidResourceIdentifier(asset: PackagerAsset) {
|
|||
.replace(/^assets_/, ''); // Remove "assets_" prefix
|
||||
}
|
||||
|
||||
function getBasePath(asset: PackagerAsset) {
|
||||
function getBasePath(asset: PackagerAsset): string {
|
||||
var basePath = asset.httpServerLocation;
|
||||
if (basePath[0] === '/') {
|
||||
basePath = basePath.substr(1);
|
||||
|
|
|
@ -14,7 +14,7 @@ const React = require('react');
|
|||
const View = require('../Components/View/View');
|
||||
|
||||
class BorderBox extends React.Component<$FlowFixMeProps> {
|
||||
render() {
|
||||
render(): $FlowFixMe | React.Node {
|
||||
const box = this.props.box;
|
||||
if (!box) {
|
||||
return this.props.children;
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче