From d16ec742368085a92e0994509cae786c074000ff Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Fri, 28 Sep 2018 00:48:05 -0700 Subject: [PATCH] RN: Replace `ImageResizeMode` w/ Flow Type Summary: Replaces `ImageResizeMode` with a Flow type. JavaScript enums provide little value when you have a type system. Reviewed By: bvaughn, TheSavior Differential Revision: D10057237 fbshipit-source-id: f108b60795a6d82a6786421e4ac72aeedc53bee8 --- Libraries/Image/ImageResizeMode.js | 60 ++++++++++---------------- Libraries/Image/ImageStylePropTypes.js | 9 +++- 2 files changed, 29 insertions(+), 40 deletions(-) diff --git a/Libraries/Image/ImageResizeMode.js b/Libraries/Image/ImageResizeMode.js index b3f3b0878..1dad3309b 100644 --- a/Libraries/Image/ImageResizeMode.js +++ b/Libraries/Image/ImageResizeMode.js @@ -4,49 +4,33 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @flow + * @flow strict * @format */ + 'use strict'; -/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error - * found when Flow v0.54 was deployed. To see the error delete this comment and - * run Flow. */ -const keyMirror = require('fbjs/lib/keyMirror'); - /** - * ImageResizeMode - Enum for different image resizing modes, set via - * `resizeMode` style property on `` components. + * ImageResizeMode defines valid values for different image resizing modes set + * via the `resizeMode` style property on ``. */ -const ImageResizeMode = keyMirror({ - /** - * contain - The image will be resized such that it will be completely - * visible, contained within the frame of the View. - */ - contain: null, - /** - * cover - The image will be resized such that the entire area of the view - * is covered by the image, potentially clipping parts of the image. - */ - cover: null, - /** - * stretch - The image will be stretched to fill the entire frame of the - * view without clipping. This may change the aspect ratio of the image, - * distorting it. - */ - stretch: null, - /** - * center - The image will be scaled down such that it is completely visible, - * if bigger than the area of the view. - * The image will not be scaled up. - */ - center: null, +export type ImageResizeMode = + // Resize by scaling down such that it is completely visible, if bigger than + // the area of the view. The image will not be scaled up. + | 'center' - /** - * repeat - The image will be repeated to cover the frame of the View. The - * image will keep it's size and aspect ratio. - */ - repeat: null, -}); + // Resize such that it will be completely visible, contained within the frame + // of the View. + | 'contain' -module.exports = ImageResizeMode; + // Resize such that the entire area of the view is covered by the image, + // potentially clipping parts of the image. + | 'cover' + + // Resize by repeating to cover the frame of the View. The image will keep its + // size and aspect ratio. + | 'repeat' + + // Resize by stretching it to fill the entire frame of the view without + // clipping. This may change the aspect ratio of the image, distorting it. + | 'stretch'; diff --git a/Libraries/Image/ImageStylePropTypes.js b/Libraries/Image/ImageStylePropTypes.js index 20088ace1..be1d08201 100644 --- a/Libraries/Image/ImageStylePropTypes.js +++ b/Libraries/Image/ImageStylePropTypes.js @@ -10,7 +10,6 @@ 'use strict'; const DeprecatedColorPropType = require('DeprecatedColorPropType'); -const ImageResizeMode = require('ImageResizeMode'); const LayoutPropTypes = require('LayoutPropTypes'); const ReactPropTypes = require('prop-types'); const DeprecatedShadowPropTypesIOS = require('DeprecatedShadowPropTypesIOS'); @@ -20,7 +19,13 @@ const ImageStylePropTypes = { ...LayoutPropTypes, ...DeprecatedShadowPropTypesIOS, ...DeprecatedTransformPropTypes, - resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)), + resizeMode: ReactPropTypes.oneOf([ + 'center', + 'contain', + 'cover', + 'repeat', + 'stretch', + ]), backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']), backgroundColor: DeprecatedColorPropType, borderColor: DeprecatedColorPropType,