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
This commit is contained in:
Tim Yung 2018-09-28 00:48:05 -07:00 committed by Facebook Github Bot
parent 9104b04261
commit d16ec74236
2 changed files with 29 additions and 40 deletions

View File

@ -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 `<Image>` components.
* ImageResizeMode defines valid values for different image resizing modes set
* via the `resizeMode` style property on `<Image>`.
*/
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';

View File

@ -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,