Require all Android View Attributes are defined in flow prop types
Summary: This caught a few flow types that weren't defined for attributes that Android exposes. Ensuring that these stay in sync will be necessary for codegen in the future. Reviewed By: sahrens Differential Revision: D9444165 fbshipit-source-id: 8ee00af7b732c35d7f6befcdf79f77b73eac6a1b
This commit is contained in:
parent
158e9c4dde
commit
f5be89b8b9
|
@ -14,9 +14,18 @@ const ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');
|
|||
|
||||
const processColor = require('processColor');
|
||||
|
||||
import type {ViewProps} from 'ViewPropTypes';
|
||||
import type {____ViewStyle_Internal} from 'StyleSheetTypes';
|
||||
import type {ReactNativeBaseComponentViewConfig} from 'ReactNativeTypes';
|
||||
|
||||
const colorHandler = {diff: null, process: processColor};
|
||||
|
||||
const ViewNativeComponentAndroidConfig = {
|
||||
type Config = ReactNativeBaseComponentViewConfig<
|
||||
$Keys<ViewProps> | $Keys<____ViewStyle_Internal>,
|
||||
$Keys<____ViewStyle_Internal>,
|
||||
>;
|
||||
|
||||
const ViewNativeComponentAndroidConfig: Config = {
|
||||
bubblingEventTypes: {
|
||||
topChange: {
|
||||
phasedRegistrationNames: {
|
||||
|
|
|
@ -72,10 +72,27 @@ type GestureResponderEventProps = $ReadOnly<{|
|
|||
onStartShouldSetResponderCapture?: ?Function,
|
||||
|}>;
|
||||
|
||||
type AndroidViewProps = $ReadOnly<{|
|
||||
nativeBackgroundAndroid?: ?Object,
|
||||
nativeForegroundAndroid?: ?Object,
|
||||
|
||||
/* Deprecated transform prop. Use the transform style prop instead */
|
||||
rotation?: empty,
|
||||
/* Deprecated transform prop. Use the transform style prop instead */
|
||||
scaleX?: empty,
|
||||
/* Deprecated transform prop. Use the transform style prop instead */
|
||||
scaleY?: empty,
|
||||
/* Deprecated transform prop. Use the transform style prop instead */
|
||||
translateX?: empty,
|
||||
/* Deprecated transform prop. Use the transform style prop instead */
|
||||
translateY?: empty,
|
||||
|}>;
|
||||
|
||||
export type ViewProps = $ReadOnly<{|
|
||||
...DirectEventProps,
|
||||
...GestureResponderEventProps,
|
||||
...TouchEventProps,
|
||||
...AndroidViewProps,
|
||||
|
||||
// There's no easy way to create a different type if (Platform.isTV):
|
||||
// so we must include TVViewProps
|
||||
|
|
|
@ -51,7 +51,10 @@ type AttributeType =
|
|||
process: ?(arg1: any) => any,
|
||||
|}>;
|
||||
|
||||
export type ReactNativeBaseComponentViewConfig = $ReadOnly<{|
|
||||
export type ReactNativeBaseComponentViewConfig<
|
||||
TProps = string,
|
||||
TStyleProps = string,
|
||||
> = $ReadOnly<{|
|
||||
baseModuleName?: string,
|
||||
bubblingEventTypes?: $ReadOnly<{
|
||||
[eventName: string]: $ReadOnly<{|
|
||||
|
@ -74,14 +77,14 @@ export type ReactNativeBaseComponentViewConfig = $ReadOnly<{|
|
|||
}>,
|
||||
uiViewClassName: string,
|
||||
validAttributes: $ReadOnly<{
|
||||
[propName: string]: AttributeType,
|
||||
[propName: TProps]: AttributeType,
|
||||
style: $ReadOnly<{
|
||||
[propName: string]: AttributeType,
|
||||
[propName: TStyleProps]: AttributeType,
|
||||
}>,
|
||||
}>,
|
||||
|}>;
|
||||
|
||||
export type ViewConfigGetter = () => ReactNativeBaseComponentViewConfig;
|
||||
export type ViewConfigGetter = () => ReactNativeBaseComponentViewConfig<>;
|
||||
|
||||
/**
|
||||
* Class only exists for its Flow type.
|
||||
|
|
|
@ -30,7 +30,7 @@ const viewConfigCallbacks = new Map();
|
|||
const viewConfigs = new Map();
|
||||
|
||||
function processEventTypes(
|
||||
viewConfig: ReactNativeBaseComponentViewConfig,
|
||||
viewConfig: ReactNativeBaseComponentViewConfig<>,
|
||||
): void {
|
||||
const {bubblingEventTypes, directEventTypes} = viewConfig;
|
||||
|
||||
|
@ -86,7 +86,7 @@ exports.register = function(name: string, callback: ViewConfigGetter): string {
|
|||
* If this is the first time the view has been used,
|
||||
* This configuration will be lazy-loaded from UIManager.
|
||||
*/
|
||||
exports.get = function(name: string): ReactNativeBaseComponentViewConfig {
|
||||
exports.get = function(name: string): ReactNativeBaseComponentViewConfig<> {
|
||||
let viewConfig;
|
||||
if (!viewConfigs.has(name)) {
|
||||
const callback = viewConfigCallbacks.get(name);
|
||||
|
|
Loading…
Reference in New Issue