RN: Remove DeprecatedPropTypes

Summary:
Removes all of the `DeprecatedPropTypes` modules from React Native.

Any call sites that were deep-linking to these modules and still requires them can instead import them from the `deprecated-react-native-prop-types` package.

Since this also removes the last reference to `prop-types`, this diff also removes the `prop-types` dependency from `react-native`. 🥳

Changelog:
[General][Removed] DeprecatedPropTypes (deep-link) modules removed from React Native.

Reviewed By: kacieb

Differential Revision: D33671645

fbshipit-source-id: 91829a556b272bbd17ee94806fc548af753593db
This commit is contained in:
Tim Yung authored and Facebook GitHub Bot committed 2022-01-20 18:17:03 -08:00
1 parent f12c8fba60
commit 23717c6381
21 files changed
-2511

No files matched your search

-1
View File
@@ -729,7 +729,6 @@ rn_library(
"//xplat/js:node_modules__nullthrows",
"//xplat/js:node_modules__pretty_19format",
"//xplat/js:node_modules__promise",
"//xplat/js:node_modules__prop_19types",
"//xplat/js:node_modules__react_19devtools_19core",
"//xplat/js:node_modules__react_19refresh",
"//xplat/js:node_modules__react_19shallow_19renderer",
@@ -1,76 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
'use strict';
const normalizeColor = require('../StyleSheet/normalizeColor');
const colorPropType = function (
isRequired,
props,
propName,
componentName,
location,
propFullName,
) {
const color = props[propName];
if (color === undefined || color === null) {
if (isRequired) {
return new Error(
'Required ' +
location +
' `' +
(propFullName || propName) +
'` was not specified in `' +
componentName +
'`.',
);
}
return;
}
if (typeof color === 'number') {
// Developers should not use a number, but we are using the prop type
// both for user provided colors and for transformed ones. This isn't ideal
// and should be fixed but will do for now...
return;
}
if (normalizeColor(color) === null) {
return new Error(
'Invalid ' +
location +
' `' +
(propFullName || propName) +
'` supplied to `' +
componentName +
'`: ' +
color +
'\n' +
`Valid color formats are
- '#f0f' (#rgb)
- '#f0fc' (#rgba)
- '#ff00ff' (#rrggbb)
- '#ff00ff00' (#rrggbbaa)
- 'rgb(255, 255, 255)'
- 'rgba(255, 255, 255, 1.0)'
- 'hsl(360, 100%, 100%)'
- 'hsla(360, 100%, 100%, 1.0)'
- 'transparent'
- 'red'
- 0xff00ff00 (0xrrggbbaa)
`,
);
}
};
const ColorPropType = colorPropType.bind(null, false /* isRequired */);
ColorPropType.isRequired = colorPropType.bind(null, true /* isRequired */);
module.exports = ColorPropType;
@@ -1,28 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict
*/
'use strict';
const PropTypes = require('prop-types');
const DeprecatedEdgeInsetsPropType: React$PropType$Primitive<{
bottom?: number,
left?: number,
right?: number,
top?: number,
...
}> = PropTypes.shape({
top: PropTypes.number,
left: PropTypes.number,
bottom: PropTypes.number,
right: PropTypes.number,
});
module.exports = DeprecatedEdgeInsetsPropType;
@@ -1,131 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedImageStylePropTypes = require('./DeprecatedImageStylePropTypes');
const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
const DeprecatedViewPropTypes = require('./DeprecatedViewPropTypes');
const PropTypes = require('prop-types');
const DeprecatedImagePropType = {
...DeprecatedViewPropTypes,
style: (DeprecatedStyleSheetPropType(
DeprecatedImageStylePropTypes,
): ReactPropsCheckType),
/**
* See https://reactnative.dev/docs/image#source
*/
source: (PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
headers: PropTypes.objectOf(PropTypes.string),
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
// Multiple sources
PropTypes.arrayOf(
PropTypes.shape({
uri: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
headers: PropTypes.objectOf(PropTypes.string),
}),
),
]): React$PropType$Primitive<
| {
headers?: {[string]: string, ...},
uri?: string,
...
}
| number
| Array<{
headers?: {[string]: string, ...},
height?: number,
uri?: string,
width?: number,
...
}>,
>),
/**
* blurRadius: the blur radius of the blur filter added to the image
*
* See https://reactnative.dev/docs/image#blurradius
*/
blurRadius: PropTypes.number,
/**
* See https://reactnative.dev/docs/image#defaultsource
*/
defaultSource: PropTypes.number,
/**
* See https://reactnative.dev/docs/image#loadingindicatorsource
*/
loadingIndicatorSource: (PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
]): React$PropType$Primitive<{uri?: string, ...} | number>),
progressiveRenderingEnabled: PropTypes.bool,
fadeDuration: PropTypes.number,
/**
* Analytics Tag used by this Image
*/
internal_analyticTag: PropTypes.string,
/**
* Invoked on load start
*/
onLoadStart: PropTypes.func,
/**
* Invoked on load error
*/
onError: PropTypes.func,
/**
* Invoked when load completes successfully
*/
onLoad: PropTypes.func,
/**
* Invoked when load either succeeds or fails
*/
onLoadEnd: PropTypes.func,
/**
* Used to locate this view in end-to-end tests.
*/
testID: PropTypes.string,
/**
* The mechanism that should be used to resize the image when the image's dimensions
* differ from the image view's dimensions. Defaults to `auto`.
*
* See https://reactnative.dev/docs/image#resizemethod
*/
resizeMethod: (PropTypes.oneOf([
'auto',
'resize',
'scale',
]): React$PropType$Primitive<'auto' | 'resize' | 'scale'>),
/**
* Determines how to resize the image when the frame doesn't match the raw
* image dimensions.
*
* See https://reactnative.dev/docs/image#resizemode
*/
resizeMode: (PropTypes.oneOf([
'cover',
'contain',
'stretch',
'repeat',
'center',
]): React$PropType$Primitive<
'cover' | 'contain' | 'stretch' | 'repeat' | 'center',
>),
};
module.exports = DeprecatedImagePropType;
@@ -1,82 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');
const DeprecatedImageSourcePropType = require('./DeprecatedImageSourcePropType');
const DeprecatedImageStylePropTypes = require('./DeprecatedImageStylePropTypes');
const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
const PropTypes = require('prop-types');
module.exports = {
style: (DeprecatedStyleSheetPropType(
DeprecatedImageStylePropTypes,
): ReactPropsCheckType),
source: DeprecatedImageSourcePropType,
defaultSource: (PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
scale: PropTypes.number,
}),
PropTypes.number,
]): React$PropType$Primitive<
| {
height?: number,
scale?: number,
uri?: string,
width?: number,
...
}
| number,
>),
accessible: PropTypes.bool,
accessibilityLabel: PropTypes.node,
blurRadius: PropTypes.number,
capInsets: DeprecatedEdgeInsetsPropType,
resizeMethod: (PropTypes.oneOf([
'auto',
'resize',
'scale',
]): React$PropType$Primitive<'auto' | 'resize' | 'scale'>),
resizeMode: (PropTypes.oneOf([
'cover',
'contain',
'stretch',
'repeat',
'center',
]): React$PropType$Primitive<
'cover' | 'contain' | 'stretch' | 'repeat' | 'center',
>),
testID: PropTypes.string,
onLayout: PropTypes.func,
onLoadStart: PropTypes.func,
onProgress: PropTypes.func,
onError: PropTypes.func,
onPartialLoad: PropTypes.func,
onLoad: PropTypes.func,
onLoadEnd: PropTypes.func,
};
@@ -1,40 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @no-flow
* @format
*/
'use strict';
const PropTypes = require('prop-types');
const ImageURISourcePropType = PropTypes.shape({
uri: PropTypes.string,
bundle: PropTypes.string,
method: PropTypes.string,
headers: PropTypes.objectOf(PropTypes.string),
body: PropTypes.string,
cache: PropTypes.oneOf([
'default',
'reload',
'force-cache',
'only-if-cached',
]),
width: PropTypes.number,
height: PropTypes.number,
scale: PropTypes.number,
});
const ImageSourcePropType = PropTypes.oneOfType([
ImageURISourcePropType,
// Opaque type returned by require('./image.jpg')
PropTypes.number,
// Multiple sources
PropTypes.arrayOf(ImageURISourcePropType),
]);
module.exports = ImageSourcePropType;
@@ -1,76 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');
const DeprecatedShadowPropTypesIOS = require('./DeprecatedShadowPropTypesIOS');
const DeprecatedTransformPropTypes = require('./DeprecatedTransformPropTypes');
const ReactPropTypes = require('prop-types');
const ImageStylePropTypes = {
...DeprecatedLayoutPropTypes,
...DeprecatedShadowPropTypesIOS,
...DeprecatedTransformPropTypes,
resizeMode: (ReactPropTypes.oneOf([
'center',
'contain',
'cover',
'repeat',
'stretch',
]): 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',
]): React$PropType$Primitive<'visible' | 'hidden'>),
/**
* Changes the color of all the non-transparent pixels to the tintColor.
*/
tintColor: DeprecatedColorPropType,
opacity: ReactPropTypes.number,
/**
* When the image has rounded corners, specifying an overlayColor will
* cause the remaining space in the corners to be filled with a solid color.
* This is useful in cases which are not supported by the Android
* implementation of rounded corners:
* - Certain resize modes, such as 'contain'
* - Animated GIFs
*
* A typical way to use this prop is with images displayed on a solid
* background and setting the `overlayColor` to the same color
* as the background.
*
* For details of how this works under the hood, see
* http://frescolib.org/docs/rounded-corners-and-circles.html
*
* @platform android
*/
overlayColor: ReactPropTypes.string,
// Android-Specific styles
borderTopLeftRadius: ReactPropTypes.number,
borderTopRightRadius: ReactPropTypes.number,
borderBottomLeftRadius: ReactPropTypes.number,
borderBottomRightRadius: ReactPropTypes.number,
};
module.exports = ImageStylePropTypes;
@@ -1,233 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict
*/
'use strict';
const ReactPropTypes = require('prop-types');
const LayoutPropTypes = {
display: (ReactPropTypes.oneOf(['none', 'flex']): React$PropType$Primitive<
'none' | 'flex',
>),
width: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
height: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
start: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
end: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
top: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
left: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
right: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
bottom: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
minWidth: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
maxWidth: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
minHeight: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
maxHeight: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
margin: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginVertical: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginHorizontal: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginTop: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginBottom: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginLeft: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginRight: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginStart: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
marginEnd: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
padding: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
paddingVertical: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
paddingHorizontal: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
paddingTop: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
paddingBottom: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
paddingLeft: (ReactPropTypes.oneOfType([
ReactPropTypes.number,
ReactPropTypes.string,
]): 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,
borderEndWidth: ReactPropTypes.number,
borderRightWidth: ReactPropTypes.number,
borderBottomWidth: ReactPropTypes.number,
borderLeftWidth: ReactPropTypes.number,
position: (ReactPropTypes.oneOf([
'absolute',
'relative',
]): React$PropType$Primitive<'absolute' | 'relative'>),
flexDirection: (ReactPropTypes.oneOf([
'row',
'row-reverse',
'column',
'column-reverse',
]): 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',
]): React$PropType$Primitive<
| 'flex-start'
| 'flex-end'
| 'center'
| 'space-between'
| 'space-around'
| 'space-evenly',
>),
alignItems: (ReactPropTypes.oneOf([
'flex-start',
'flex-end',
'center',
'stretch',
'baseline',
]): React$PropType$Primitive<
'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',
>),
alignSelf: (ReactPropTypes.oneOf([
'auto',
'flex-start',
'flex-end',
'center',
'stretch',
'baseline',
]): React$PropType$Primitive<
'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',
>),
alignContent: (ReactPropTypes.oneOf([
'flex-start',
'flex-end',
'center',
'stretch',
'space-between',
'space-around',
]): 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([
ReactPropTypes.number,
ReactPropTypes.string,
]): React$PropType$Primitive<number | string>),
aspectRatio: ReactPropTypes.number,
zIndex: ReactPropTypes.number,
direction: (ReactPropTypes.oneOf([
'inherit',
'ltr',
'rtl',
]): React$PropType$Primitive<'inherit' | 'ltr' | 'rtl'>),
};
module.exports = LayoutPropTypes;
@@ -1,24 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict
*/
'use strict';
const PropTypes = require('prop-types');
const PointPropType: React$PropType$Primitive<{
x?: number,
y?: number,
...
}> = PropTypes.shape({
x: PropTypes.number,
y: PropTypes.number,
});
module.exports = PointPropType;
@@ -1,30 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const ReactPropTypes = require('prop-types');
const DeprecatedShadowPropTypesIOS = {
shadowColor: DeprecatedColorPropType,
shadowOffset: (ReactPropTypes.shape({
width: ReactPropTypes.number,
height: ReactPropTypes.number,
}): React$PropType$Primitive<{
height?: number,
width?: number,
...
}>),
shadowOpacity: ReactPropTypes.number,
shadowRadius: ReactPropTypes.number,
};
module.exports = DeprecatedShadowPropTypesIOS;
@@ -1,32 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict-local
*/
'use strict';
const deprecatedCreateStrictShapeTypeChecker = require('./deprecatedCreateStrictShapeTypeChecker');
const flattenStyle = require('../StyleSheet/flattenStyle');
function DeprecatedStyleSheetPropType(shape: {
[key: string]: ReactPropsCheckType,
...
}): ReactPropsCheckType {
const shapePropType = deprecatedCreateStrictShapeTypeChecker(shape);
return function (props, propName, componentName, location?, ...rest) {
let newProps = props;
if (props[propName]) {
// Just make a dummy prop object with only the flattened style
newProps = {};
newProps[propName] = flattenStyle(props[propName]);
}
return shapePropType(newProps, propName, componentName, location, ...rest);
};
}
module.exports = DeprecatedStyleSheetPropType;
@@ -1,693 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const DeprecatedTextPropTypes = require('./DeprecatedTextPropTypes');
const DeprecatedViewPropTypes = require('./DeprecatedViewPropTypes');
const PropTypes = require('prop-types');
const DataDetectorTypes = [
'phoneNumber',
'link',
'address',
'calendarEvent',
'none',
'all',
];
module.exports = {
...DeprecatedViewPropTypes,
/**
* Can tell `TextInput` to automatically capitalize certain characters.
*
* - `characters`: all characters.
* - `words`: first letter of each word.
* - `sentences`: first letter of each sentence (*default*).
* - `none`: don't auto capitalize anything.
*/
autoCapitalize: (PropTypes.oneOf([
'none',
'sentences',
'words',
'characters',
]): React$PropType$Primitive<'none' | 'sentences' | 'words' | 'characters'>),
/**
* Specifies autocomplete hints for the system, so it can provide autofill. On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content.
* To disable autocomplete, set `autoComplete` to `off`.
*
* *Android Only*
*
* Possible values for `autoComplete` are:
*
* - `birthdate-day`
* - `birthdate-full`
* - `birthdate-month`
* - `birthdate-year`
* - `cc-csc`
* - `cc-exp`
* - `cc-exp-day`
* - `cc-exp-month`
* - `cc-exp-year`
* - `cc-number`
* - `email`
* - `gender`
* - `name`
* - `name-family`
* - `name-given`
* - `name-middle`
* - `name-middle-initial`
* - `name-prefix`
* - `name-suffix`
* - `password`
* - `password-new`
* - `postal-address`
* - `postal-address-country`
* - `postal-address-extended`
* - `postal-address-extended-postal-code`
* - `postal-address-locality`
* - `postal-address-region`
* - `postal-code`
* - `street-address`
* - `sms-otp`
* - `tel`
* - `tel-country-code`
* - `tel-national`
* - `tel-device`
* - `username`
* - `username-new`
* - `off`
*
* @platform android
*/
autoComplete: (PropTypes.oneOf([
'birthdate-day',
'birthdate-full',
'birthdate-month',
'birthdate-year',
'cc-csc',
'cc-exp',
'cc-exp-day',
'cc-exp-month',
'cc-exp-year',
'cc-number',
'email',
'gender',
'name',
'name-family',
'name-given',
'name-middle',
'name-middle-initial',
'name-prefix',
'name-suffix',
'password',
'password-new',
'postal-address',
'postal-address-country',
'postal-address-extended',
'postal-address-extended-postal-code',
'postal-address-locality',
'postal-address-region',
'postal-code',
'street-address',
'sms-otp',
'tel',
'tel-country-code',
'tel-national',
'tel-device',
'username',
'username-new',
'off',
]): React$PropType$Primitive<
| 'birthdate-day'
| 'birthdate-full'
| 'birthdate-month'
| 'birthdate-year'
| 'cc-csc'
| 'cc-exp'
| 'cc-exp-day'
| 'cc-exp-month'
| 'cc-exp-year'
| 'cc-number'
| 'email'
| 'gender'
| 'name'
| 'name-family'
| 'name-given'
| 'name-middle'
| 'name-middle-initial'
| 'name-prefix'
| 'name-suffix'
| 'password'
| 'password-new'
| 'postal-address'
| 'postal-address-country'
| 'postal-address-extended'
| 'postal-address-extended-postal-code'
| 'postal-address-locality'
| 'postal-address-region'
| 'postal-code'
| 'street-address'
| 'sms-otp'
| 'tel'
| 'tel-country-code'
| 'tel-national'
| 'tel-device'
| 'username'
| 'username-new'
| 'off',
>),
/**
* If `false`, disables auto-correct. The default value is `true`.
*/
autoCorrect: PropTypes.bool,
/**
* If `false`, disables spell-check style (i.e. red underlines).
* The default value is inherited from `autoCorrect`.
* @platform ios
*/
spellCheck: PropTypes.bool,
/**
* If `true`, focuses the input on `componentDidMount`.
* The default value is `false`.
*/
autoFocus: PropTypes.bool,
/**
* Specifies whether fonts should scale to respect Text Size accessibility settings. The
* default is `true`.
*/
allowFontScaling: PropTypes.bool,
/**
* Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.
* Possible values:
* `null/undefined` (default): inherit from the parent node or the global default (0)
* `0`: no max, ignore parent/global default
* `>= 1`: sets the maxFontSizeMultiplier of this node to this value
*/
maxFontSizeMultiplier: PropTypes.number,
/**
* If `false`, text is not editable. The default value is `true`.
*/
editable: PropTypes.bool,
/**
* Determines which keyboard to open, e.g.`numeric`.
*
* The following values work across platforms:
*
* - `default`
* - `numeric`
* - `number-pad`
* - `decimal-pad`
* - `email-address`
* - `phone-pad`
* - `url`
*
* *iOS Only*
*
* The following values work on iOS only:
*
* - `ascii-capable`
* - `numbers-and-punctuation`
* - `name-phone-pad`
* - `twitter`
* - `web-search`
* - `ascii-capable-number-pad`
*
* *Android Only*
*
* The following values work on Android only:
*
* - `visible-password`
*/
keyboardType: (PropTypes.oneOf([
// Cross-platform
'default',
'email-address',
'numeric',
'phone-pad',
'number-pad',
'url',
// iOS-only
'ascii-capable',
'numbers-and-punctuation',
'name-phone-pad',
'decimal-pad',
'twitter',
'web-search',
// iOS 10+ only
'ascii-capable-number-pad',
// Android-only
'visible-password',
]): React$PropType$Primitive<
| 'default'
| 'email-address'
| 'numeric'
| 'phone-pad'
| 'number-pad'
| 'ascii-capable'
| 'numbers-and-punctuation'
| 'url'
| 'name-phone-pad'
| 'decimal-pad'
| 'twitter'
| 'web-search'
| 'ascii-capable-number-pad'
| 'visible-password',
>),
/**
* Determines the color of the keyboard.
* @platform ios
*/
keyboardAppearance: (PropTypes.oneOf([
'default',
'light',
'dark',
]): React$PropType$Primitive<'default' | 'light' | 'dark'>),
/**
* Determines how the return key should look. On Android you can also use
* `returnKeyLabel`.
*
* *Cross platform*
*
* The following values work across platforms:
*
* - `done`
* - `go`
* - `next`
* - `search`
* - `send`
*
* *Android Only*
*
* The following values work on Android only:
*
* - `none`
* - `previous`
*
* *iOS Only*
*
* The following values work on iOS only:
*
* - `default`
* - `emergency-call`
* - `google`
* - `join`
* - `route`
* - `yahoo`
*/
returnKeyType: (PropTypes.oneOf([
// Cross-platform
'done',
'go',
'next',
'search',
'send',
// Android-only
'none',
'previous',
// iOS-only
'default',
'emergency-call',
'google',
'join',
'route',
'yahoo',
]): React$PropType$Primitive<
| 'done'
| 'go'
| 'next'
| 'search'
| 'send'
| 'none'
| 'previous'
| 'default'
| 'emergency-call'
| 'google'
| 'join'
| 'route'
| 'yahoo',
>),
/**
* Sets the return key to the label. Use it instead of `returnKeyType`.
* @platform android
*/
returnKeyLabel: PropTypes.string,
/**
* Limits the maximum number of characters that can be entered. Use this
* instead of implementing the logic in JS to avoid flicker.
*/
maxLength: PropTypes.number,
/**
* Sets the number of lines for a `TextInput`. Use it with multiline set to
* `true` to be able to fill the lines.
* @platform android
*/
numberOfLines: PropTypes.number,
/**
* When `false`, if there is a small amount of space available around a text input
* (e.g. landscape orientation on a phone), the OS may choose to have the user edit
* the text inside of a full screen text input mode. When `true`, this feature is
* disabled and users will always edit the text directly inside of the text input.
* Defaults to `false`.
* @platform android
*/
disableFullscreenUI: PropTypes.bool,
/**
* If `true`, the keyboard disables the return key when there is no text and
* automatically enables it when there is text. The default value is `false`.
* @platform ios
*/
enablesReturnKeyAutomatically: PropTypes.bool,
/**
* If `true`, the text input can be multiple lines.
* The default value is `false`.
*/
multiline: PropTypes.bool,
/**
* Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`
* The default value is `simple`.
* @platform android
*/
textBreakStrategy: (PropTypes.oneOf([
'simple',
'highQuality',
'balanced',
]): React$PropType$Primitive<'simple' | 'highQuality' | 'balanced'>),
/**
* Callback that is called when the text input is blurred.
*/
onBlur: PropTypes.func,
/**
* Callback that is called when the text input is focused.
*/
onFocus: PropTypes.func,
/**
* Callback that is called when the text input's text changes.
*/
onChange: PropTypes.func,
/**
* Callback that is called when the text input's text changes.
* Changed text is passed as an argument to the callback handler.
*/
onChangeText: PropTypes.func,
/**
* Callback that is called when the text input's content size changes.
* This will be called with
* `{ nativeEvent: { contentSize: { width, height } } }`.
*
* Only called for multiline text inputs.
*/
onContentSizeChange: PropTypes.func,
onTextInput: PropTypes.func,
/**
* Callback that is called when text input ends.
*/
onEndEditing: PropTypes.func,
/**
* Callback that is called when the text input selection is changed.
* This will be called with
* `{ nativeEvent: { selection: { start, end } } }`.
*/
onSelectionChange: PropTypes.func,
/**
* Callback that is called when the text input's submit button is pressed.
* Invalid if `multiline={true}` is specified.
*/
onSubmitEditing: PropTypes.func,
/**
* Callback that is called when a key is pressed.
* This will be called with `{ nativeEvent: { key: keyValue } }`
* where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and
* the typed-in character otherwise including `' '` for space.
* Fires before `onChange` callbacks.
*/
onKeyPress: PropTypes.func,
/**
* Invoked on mount and layout changes with `{x, y, width, height}`.
*/
onLayout: PropTypes.func,
/**
* Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.
* May also contain other properties from ScrollEvent but on Android contentSize
* is not provided for performance reasons.
*/
onScroll: PropTypes.func,
/**
* The string that will be rendered before text input has been entered.
*/
placeholder: PropTypes.string,
/**
* The text color of the placeholder string.
*/
placeholderTextColor: DeprecatedColorPropType,
/**
* If `false`, scrolling of the text view will be disabled.
* The default value is `true`. Does only work with 'multiline={true}'.
* @platform ios
*/
scrollEnabled: PropTypes.bool,
/**
* If `true`, the text input obscures the text entered so that sensitive text
* like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.
*/
secureTextEntry: PropTypes.bool,
/**
* The highlight and cursor color of the text input.
*/
selectionColor: DeprecatedColorPropType,
/**
* The start and end of the text input's selection. Set start and end to
* the same value to position the cursor.
*/
selection: (PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number,
}): React$PropType$Primitive<{
end?: number,
start: number,
...
}>),
/**
* The value to show for the text input. `TextInput` is a controlled
* component, which means the native value will be forced to match this
* value prop if provided. For most uses, this works great, but in some
* cases this may cause flickering - one common cause is preventing edits
* by keeping value the same. In addition to simply setting the same value,
* either set `editable={false}`, or set/update `maxLength` to prevent
* unwanted edits without flicker.
*/
value: PropTypes.string,
/**
* Provides an initial value that will change when the user starts typing.
* Useful for simple use-cases where you do not want to deal with listening
* to events and updating the value prop to keep the controlled state in sync.
*/
defaultValue: PropTypes.string,
/**
* When the clear button should appear on the right side of the text view.
* This property is supported only for single-line TextInput component.
* @platform ios
*/
clearButtonMode: (PropTypes.oneOf([
'never',
'while-editing',
'unless-editing',
'always',
]): React$PropType$Primitive<
'never' | 'while-editing' | 'unless-editing' | 'always',
>),
/**
* If `true`, clears the text field automatically when editing begins.
* @platform ios
*/
clearTextOnFocus: PropTypes.bool,
/**
* If `true`, all text will automatically be selected on focus.
*/
selectTextOnFocus: PropTypes.bool,
/**
* If `true`, the text field will blur when submitted.
* The default value is true for single-line fields and false for
* multiline fields. Note that for multiline fields, setting `blurOnSubmit`
* to `true` means that pressing return will blur the field and trigger the
* `onSubmitEditing` event instead of inserting a newline into the field.
*/
blurOnSubmit: PropTypes.bool,
/**
* Note that not all Text styles are supported, an incomplete list of what is not supported includes:
*
* - `borderLeftWidth`
* - `borderTopWidth`
* - `borderRightWidth`
* - `borderBottomWidth`
* - `borderTopLeftRadius`
* - `borderTopRightRadius`
* - `borderBottomRightRadius`
* - `borderBottomLeftRadius`
*
* see [Issue#7070](https://github.com/facebook/react-native/issues/7070)
* for more detail.
*
* [Styles](docs/style.html)
*/
style: DeprecatedTextPropTypes.style,
/**
* The color of the `TextInput` underline.
* @platform android
*/
underlineColorAndroid: DeprecatedColorPropType,
/**
* If defined, the provided image resource will be rendered on the left.
* The image resource must be inside `/android/app/src/main/res/drawable` and referenced
* like
* ```
* <TextInput
* inlineImageLeft='search_icon'
* />
* ```
* @platform android
*/
inlineImageLeft: PropTypes.string,
/**
* Padding between the inline image, if any, and the text input itself.
* @platform android
*/
inlineImagePadding: PropTypes.number,
/**
* If `true`, allows TextInput to pass touch events to the parent component.
* This allows components such as SwipeableListView to be swipeable from the TextInput on iOS,
* as is the case on Android by default.
* If `false`, TextInput always asks to handle the input (except when disabled).
* @platform ios
*/
rejectResponderTermination: PropTypes.bool,
/**
* Determines the types of data converted to clickable URLs in the text input.
* Only valid if `multiline={true}` and `editable={false}`.
* By default no data types are detected.
*
* You can provide one type or an array of many types.
*
* Possible values for `dataDetectorTypes` are:
*
* - `'phoneNumber'`
* - `'link'`
* - `'address'`
* - `'calendarEvent'`
* - `'none'`
* - `'all'`
*
* @platform ios
*/
dataDetectorTypes: (PropTypes.oneOfType([
PropTypes.oneOf(DataDetectorTypes),
PropTypes.arrayOf(PropTypes.oneOf(DataDetectorTypes)),
]): React$PropType$Primitive<
| 'phoneNumber'
| 'link'
| 'address'
| 'calendarEvent'
| 'none'
| 'all'
| Array<
'phoneNumber' | 'link' | 'address' | 'calendarEvent' | 'none' | 'all',
>,
>),
/**
* If `true`, caret is hidden. The default value is `false`.
* This property is supported only for single-line TextInput component on iOS.
*/
caretHidden: PropTypes.bool,
/*
* If `true`, contextMenuHidden is hidden. The default value is `false`.
*/
contextMenuHidden: PropTypes.bool,
/**
* An optional identifier which links a custom InputAccessoryView to
* this text input. The InputAccessoryView is rendered above the
* keyboard when this text input is focused.
* @platform ios
*/
inputAccessoryViewID: PropTypes.string,
/**
* Give the keyboard and the system information about the
* expected semantic meaning for the content that users enter.
* @platform ios
*/
textContentType: (PropTypes.oneOf([
'none',
'URL',
'addressCity',
'addressCityAndState',
'addressState',
'countryName',
'creditCardNumber',
'emailAddress',
'familyName',
'fullStreetAddress',
'givenName',
'jobTitle',
'location',
'middleName',
'name',
'namePrefix',
'nameSuffix',
'nickname',
'organizationName',
'postalCode',
'streetAddressLine1',
'streetAddressLine2',
'sublocality',
'telephoneNumber',
'username',
'password',
'newPassword',
'oneTimeCode',
]): React$PropType$Primitive<
| 'none'
| 'URL'
| 'addressCity'
| 'addressCityAndState'
| 'addressState'
| 'countryName'
| 'creditCardNumber'
| 'emailAddress'
| 'familyName'
| 'fullStreetAddress'
| 'givenName'
| 'jobTitle'
| 'location'
| 'middleName'
| 'name'
| 'namePrefix'
| 'nameSuffix'
| 'nickname'
| 'organizationName'
| 'postalCode'
| 'streetAddressLine1'
| 'streetAddressLine2'
| 'sublocality'
| 'telephoneNumber'
| 'username'
| 'password'
| 'newPassword'
| 'oneTimeCode',
>),
/**
* When `false`, it will prevent the soft keyboard from showing when the field is focused.
* Defaults to `true`.
*/
showSoftInputOnFocus: PropTypes.bool,
};
@@ -1,158 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');
const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
const PropTypes = require('prop-types');
const DeprecatedTextStylePropTypes = require('./DeprecatedTextStylePropTypes');
const stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(
DeprecatedTextStylePropTypes,
);
const DataDetectorTypes = ['phoneNumber', 'link', 'email', 'none', 'all'];
module.exports = {
/**
* When `numberOfLines` is set, this prop defines how text will be
* truncated.
*
* See https://reactnative.dev/docs/text#ellipsizemode
*/
ellipsizeMode: (PropTypes.oneOf([
'head',
'middle',
'tail',
'clip',
]): React$PropType$Primitive<'head' | 'middle' | 'tail' | 'clip'>),
/**
* Used to truncate the text with an ellipsis.
*
* See https://reactnative.dev/docs/text#numberoflines
*/
numberOfLines: PropTypes.number,
/**
* Set text break strategy on Android.
*
* See https://reactnative.dev/docs/text#textbreakstrategy
*/
textBreakStrategy: (PropTypes.oneOf([
'simple',
'highQuality',
'balanced',
]): React$PropType$Primitive<'simple' | 'highQuality' | 'balanced'>),
/**
* Invoked on mount and layout changes.
*
* See https://reactnative.dev/docs/text#onlayout
*/
onLayout: PropTypes.func,
/**
* This function is called on press.
*
* See https://reactnative.dev/docs/text#onpress
*/
onPress: PropTypes.func,
/**
* This function is called on long press.
*
* See https://reactnative.dev/docs/text#onlongpress
*/
onLongPress: PropTypes.func,
/**
* Defines how far your touch may move off of the button, before
* deactivating the button.
*
* See https://reactnative.dev/docs/text#pressretentionoffset
*/
pressRetentionOffset: DeprecatedEdgeInsetsPropType,
/**
* Lets the user select text.
*
* See https://reactnative.dev/docs/text#selectable
*/
selectable: PropTypes.bool,
/**
* The highlight color of the text.
*
* See https://reactnative.dev/docs/text#selectioncolor
*/
selectionColor: DeprecatedColorPropType,
/**
* When `true`, no visual change is made when text is pressed down.
*
* See https://reactnative.dev/docs/text#supperhighlighting
*/
suppressHighlighting: PropTypes.bool,
style: stylePropType,
/**
* Used to locate this view in end-to-end tests.
*
* See https://reactnative.dev/docs/text#testid
*/
testID: PropTypes.string,
/**
* Used to locate this view from native code.
*
* See https://reactnative.dev/docs/text#nativeid
*/
nativeID: PropTypes.string,
/**
* Whether fonts should scale to respect Text Size accessibility settings.
*
* See https://reactnative.dev/docs/text#allowfontscaling
*/
allowFontScaling: PropTypes.bool,
/**
* Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.
* Possible values:
* `null/undefined` (default): inherit from the parent node or the global default (0)
* `0`: no max, ignore parent/global default
* `>= 1`: sets the maxFontSizeMultiplier of this node to this value
*/
maxFontSizeMultiplier: PropTypes.number,
/**
* Indicates whether the view is an accessibility element.
*
* See https://reactnative.dev/docs/text#accessible
*/
accessible: PropTypes.bool,
/**
* Whether font should be scaled down automatically.
*
* See https://reactnative.dev/docs/text#adjustsfontsizetofit
*/
adjustsFontSizeToFit: PropTypes.bool,
/**
* Smallest possible scale a font can reach.
*
* See https://reactnative.dev/docs/text#minimumfontscale
*/
minimumFontScale: PropTypes.number,
/**
* Specifies the disabled state of the text view for testing purposes.
*
* See https://reactnative.dev/docs/text#disabled
*/
disabled: PropTypes.bool,
/**
* Determines the types of data converted to clickable URLs in text.
*
* See https://reactnative.dev/docs/text#dataDetectorType
*/
dataDetectorType: (PropTypes.oneOf(
DataDetectorTypes,
): React$PropType$Primitive<
'phoneNumber' | 'link' | 'email' | 'none' | 'all',
>),
};
@@ -1,157 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const DeprecatedViewStylePropTypes = require('./DeprecatedViewStylePropTypes');
const ReactPropTypes = require('prop-types');
const DeprecatedTextStylePropTypes = {
...DeprecatedViewStylePropTypes,
color: DeprecatedColorPropType,
fontFamily: ReactPropTypes.string,
fontSize: ReactPropTypes.number,
fontStyle: (ReactPropTypes.oneOf([
'normal',
'italic',
]): React$PropType$Primitive<'normal' | 'italic'>),
/**
* Specifies font weight. The values 'normal' and 'bold' are supported for
* most fonts. Not all fonts have a variant for each of the numeric values,
* in that case the closest one is chosen.
*/
fontWeight: (ReactPropTypes.oneOf([
'normal' /*default*/,
'bold',
'100',
'200',
'300',
'400',
'500',
'600',
'700',
'800',
'900',
]): React$PropType$Primitive<
| 'normal'
| 'bold'
| '100'
| '200'
| '300'
| '400'
| '500'
| '600'
| '700'
| '800'
| '900',
>),
fontVariant: (ReactPropTypes.arrayOf(
ReactPropTypes.oneOf([
'small-caps',
'oldstyle-nums',
'lining-nums',
'tabular-nums',
'proportional-nums',
]),
): React$PropType$Primitive<
Array<
| 'small-caps'
| 'oldstyle-nums'
| 'lining-nums'
| 'tabular-nums'
| 'proportional-nums',
>,
>),
textShadowOffset: (ReactPropTypes.shape({
width: ReactPropTypes.number,
height: ReactPropTypes.number,
}): React$PropType$Primitive<{
height?: number,
width?: number,
...
}>),
textShadowRadius: ReactPropTypes.number,
textShadowColor: DeprecatedColorPropType,
/**
* @platform ios
*/
letterSpacing: ReactPropTypes.number,
lineHeight: ReactPropTypes.number,
/**
* Specifies text alignment. The value 'justify' is only supported on iOS and
* fallbacks to `left` on Android.
*/
textAlign: (ReactPropTypes.oneOf([
'auto' /*default*/,
'left',
'right',
'center',
'justify',
]): React$PropType$Primitive<
'auto' | 'left' | 'right' | 'center' | 'justify',
>),
/**
* @platform android
*/
textAlignVertical: (ReactPropTypes.oneOf([
'auto' /*default*/,
'top',
'bottom',
'center',
]): React$PropType$Primitive<'auto' | 'top' | 'bottom' | 'center'>),
/**
* Set to `false` to remove extra font padding intended to make space for certain ascenders / descenders.
* With some fonts, this padding can make text look slightly misaligned when centered vertically.
* For best results also set `textAlignVertical` to `center`. Default is true.
* @platform android
*/
includeFontPadding: ReactPropTypes.bool,
textDecorationLine: (ReactPropTypes.oneOf([
'none' /*default*/,
'underline',
'line-through',
'underline line-through',
]): React$PropType$Primitive<
'none' | 'underline' | 'line-through' | 'underline line-through',
>),
/**
* @platform ios
*/
textDecorationStyle: (ReactPropTypes.oneOf([
'solid' /*default*/,
'double',
'dotted',
'dashed',
]): React$PropType$Primitive<'solid' | 'double' | 'dotted' | 'dashed'>),
/**
* @platform ios
*/
textDecorationColor: DeprecatedColorPropType,
textTransform: (ReactPropTypes.oneOf([
'none' /*default*/,
'capitalize',
'uppercase',
'lowercase',
]): React$PropType$Primitive<
'none' | 'capitalize' | 'uppercase' | 'lowercase',
>),
/**
* @platform ios
*/
writingDirection: (ReactPropTypes.oneOf([
'auto' /*default*/,
'ltr',
'rtl',
]): React$PropType$Primitive<'auto' | 'ltr' | 'rtl'>),
};
module.exports = DeprecatedTextStylePropTypes;
@@ -1,99 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const ReactPropTypes = require('prop-types');
const deprecatedPropType = require('../Utilities/deprecatedPropType');
const TransformMatrixPropType = function (
props: Object,
propName: string,
componentName: string,
): ?Error {
if (props[propName]) {
return new Error(
'The transformMatrix style property is deprecated. ' +
'Use `transform: [{ matrix: ... }]` instead.',
);
}
};
const DecomposedMatrixPropType = function (
props: Object,
propName: string,
componentName: string,
): ?Error {
if (props[propName]) {
return new Error(
'The decomposedMatrix style property is deprecated. ' +
'Use `transform: [...]` instead.',
);
}
};
const DeprecatedTransformPropTypes = {
transform: (ReactPropTypes.arrayOf(
ReactPropTypes.oneOfType([
ReactPropTypes.shape({perspective: ReactPropTypes.number}),
ReactPropTypes.shape({rotate: ReactPropTypes.string}),
ReactPropTypes.shape({rotateX: ReactPropTypes.string}),
ReactPropTypes.shape({rotateY: ReactPropTypes.string}),
ReactPropTypes.shape({rotateZ: ReactPropTypes.string}),
ReactPropTypes.shape({scale: ReactPropTypes.number}),
ReactPropTypes.shape({scaleX: ReactPropTypes.number}),
ReactPropTypes.shape({scaleY: ReactPropTypes.number}),
ReactPropTypes.shape({translateX: ReactPropTypes.number}),
ReactPropTypes.shape({translateY: ReactPropTypes.number}),
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(
ReactPropTypes.number,
'Use the transform prop instead.',
): ReactPropsCheckType),
scaleY: (deprecatedPropType(
ReactPropTypes.number,
'Use the transform prop instead.',
): ReactPropsCheckType),
rotation: (deprecatedPropType(
ReactPropTypes.number,
'Use the transform prop instead.',
): ReactPropsCheckType),
translateX: (deprecatedPropType(
ReactPropTypes.number,
'Use the transform prop instead.',
): ReactPropsCheckType),
translateY: (deprecatedPropType(
ReactPropTypes.number,
'Use the transform prop instead.',
): ReactPropsCheckType),
};
module.exports = DeprecatedTransformPropTypes;
@@ -1,46 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict
*/
'use strict';
module.exports = {
// This must be kept in sync with the AccessibilityRolesMask in RCTViewManager.m
DeprecatedAccessibilityRoles: [
'none',
'button',
'togglebutton',
'link',
'search',
'image',
'keyboardkey',
'text',
'adjustable',
'imagebutton',
'header',
'summary',
'alert',
'checkbox',
'combobox',
'menu',
'menubar',
'menuitem',
'progressbar',
'radio',
'radiogroup',
'scrollbar',
'spinbutton',
'switch',
'tab',
'tablist',
'timer',
'list',
'toolbar',
],
};
@@ -1,408 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict-local
*/
'use strict';
const DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');
const DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');
const DeprecatedViewStylePropTypes = require('./DeprecatedViewStylePropTypes');
const PropTypes = require('prop-types');
const {DeprecatedAccessibilityRoles} = require('./DeprecatedViewAccessibility');
const stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(
DeprecatedViewStylePropTypes,
);
module.exports = {
/**
* When `true`, indicates that the view is an accessibility element.
* By default, all the touchable elements are accessible.
*
* See https://reactnative.dev/docs/view#accessible
*/
accessible: PropTypes.bool,
/**
* Overrides the text that's read by the screen reader when the user interacts
* with the element. By default, the label is constructed by traversing all
* the children and accumulating all the `Text` nodes separated by space.
*
* See https://reactnative.dev/docs/view#accessibilitylabel
*/
accessibilityLabel: PropTypes.node,
/**
* An accessibility hint helps users understand what will happen when they perform
* an action on the accessibility element when that result is not obvious from the
* accessibility label.
*
*
* See https://reactnative.dev/docs/view#accessibilityHint
*/
accessibilityHint: PropTypes.string,
/**
* Provides an array of custom actions available for accessibility.
*
* @platform ios
*/
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.
*
* @platform ios
*/
accessibilityIgnoresInvertColors: PropTypes.bool,
/**
* Indicates to accessibility services to treat UI component like a specific role.
*/
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',
>),
accessibilityState: PropTypes.object,
accessibilityValue: PropTypes.object,
/**
* Indicates to accessibility services whether the user should be notified
* when this view changes. Works for Android API >= 19 only.
*
* @platform android
*
* See https://reactnative.dev/docs/view#accessibilityliveregion
*/
accessibilityLiveRegion: (PropTypes.oneOf([
'none',
'polite',
'assertive',
]): React$PropType$Primitive<'none' | 'polite' | 'assertive'>),
/**
* Controls how view is important for accessibility which is if it
* fires accessibility events and if it is reported to accessibility services
* that query the screen. Works for Android only.
*
* @platform android
*
* See https://reactnative.dev/docs/view#importantforaccessibility
*/
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
* within views that are siblings of the receiver.
* Default is `false`.
*
* @platform ios
*
* See https://reactnative.dev/docs/view#accessibilityviewismodal
*/
accessibilityViewIsModal: PropTypes.bool,
/**
* A value indicating whether the accessibility elements contained within
* this accessibility element are hidden.
*
* @platform ios
*
* See https://reactnative.dev/docs/view#accessibilityElementsHidden
*/
accessibilityElementsHidden: PropTypes.bool,
/**
* When `accessible` is true, the system will try to invoke this function
* when the user performs an accessibility custom action.
*
* @platform ios
*/
onAccessibilityAction: PropTypes.func,
/**
* When `accessible` is true, the system will try to invoke this function
* when the user performs accessibility tap gesture.
*
* See https://reactnative.dev/docs/view#onaccessibilitytap
*/
onAccessibilityTap: PropTypes.func,
/**
* When `accessible` is `true`, the system will invoke this function when the
* user performs the magic tap gesture.
*
* See https://reactnative.dev/docs/view#onmagictap
*/
onMagicTap: PropTypes.func,
/**
* Used to locate this view in end-to-end tests.
*
* > This disables the 'layout-only view removal' optimization for this view!
*
* See https://reactnative.dev/docs/view#testid
*/
testID: PropTypes.string,
/**
* Used to locate this view from native classes.
*
* > This disables the 'layout-only view removal' optimization for this view!
*
* See https://reactnative.dev/docs/view#nativeid
*/
nativeID: PropTypes.string,
/**
* For most touch interactions, you'll simply want to wrap your component in
* `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,
* `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.
*/
/**
* The View is now responding for touch events. This is the time to highlight
* and show the user what is happening.
*
* `View.props.onResponderGrant: (event) => {}`, where `event` is a synthetic
* touch event as described above.
*
* See https://reactnative.dev/docs/view#onrespondergrant
*/
onResponderGrant: PropTypes.func,
/**
* The user is moving their finger.
*
* `View.props.onResponderMove: (event) => {}`, where `event` is a synthetic
* touch event as described above.
*
* See https://reactnative.dev/docs/view#onrespondermove
*/
onResponderMove: PropTypes.func,
/**
* Another responder is already active and will not release it to that `View`
* asking to be the responder.
*
* `View.props.onResponderReject: (event) => {}`, where `event` is a
* synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onresponderreject
*/
onResponderReject: PropTypes.func,
/**
* Fired at the end of the touch.
*
* `View.props.onResponderRelease: (event) => {}`, where `event` is a
* synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onresponderrelease
*/
onResponderRelease: PropTypes.func,
/**
* The responder has been taken from the `View`. Might be taken by other
* views after a call to `onResponderTerminationRequest`, or might be taken
* by the OS without asking (e.g., happens with control center/ notification
* center on iOS)
*
* `View.props.onResponderTerminate: (event) => {}`, where `event` is a
* synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onresponderterminate
*/
onResponderTerminate: PropTypes.func,
/**
* Some other `View` wants to become responder and is asking this `View` to
* release its responder. Returning `true` allows its release.
*
* `View.props.onResponderTerminationRequest: (event) => {}`, where `event`
* is a synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onresponderterminationrequest
*/
onResponderTerminationRequest: PropTypes.func,
/**
* Does this view want to become responder on the start of a touch?
*
* `View.props.onStartShouldSetResponder: (event) => [true | false]`, where
* `event` is a synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onstartshouldsetresponder
*/
onStartShouldSetResponder: PropTypes.func,
/**
* If a parent `View` wants to prevent a child `View` from becoming responder
* on a touch start, it should have this handler which returns `true`.
*
* `View.props.onStartShouldSetResponderCapture: (event) => [true | false]`,
* where `event` is a synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onstartshouldsetrespondercapture
*/
onStartShouldSetResponderCapture: PropTypes.func,
/**
* Does this view want to "claim" touch responsiveness? This is called for
* every touch move on the `View` when it is not the responder.
*
* `View.props.onMoveShouldSetResponder: (event) => [true | false]`, where
* `event` is a synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onmoveshouldsetresponder
*/
onMoveShouldSetResponder: PropTypes.func,
/**
* If a parent `View` wants to prevent a child `View` from becoming responder
* on a move, it should have this handler which returns `true`.
*
* `View.props.onMoveShouldSetResponderCapture: (event) => [true | false]`,
* where `event` is a synthetic touch event as described above.
*
* See https://reactnative.dev/docs/view#onMoveShouldsetrespondercapture
*/
onMoveShouldSetResponderCapture: PropTypes.func,
/**
* This defines how far a touch event can start away from the view.
* Typical interface guidelines recommend touch targets that are at least
* 30 - 40 points/density-independent pixels.
*
* > The touch area never extends past the parent view bounds and the Z-index
* > of sibling views always takes precedence if a touch hits two overlapping
* > views.
*
* See https://reactnative.dev/docs/view#hitslop
*/
hitSlop: DeprecatedEdgeInsetsPropType,
/**
* Invoked on mount and layout changes with:
*
* `{nativeEvent: { layout: {x, y, width, height}}}`
*
* This event is fired immediately once the layout has been calculated, but
* the new layout may not yet be reflected on the screen at the time the
* event is received, especially if a layout animation is in progress.
*
* See https://reactnative.dev/docs/view#onlayout
*/
onLayout: PropTypes.func,
/**
* Controls whether the `View` can be the target of touch events.
*
* See https://reactnative.dev/docs/view#pointerevents
*/
pointerEvents: (PropTypes.oneOf([
'box-none',
'none',
'box-only',
'auto',
]): React$PropType$Primitive<'box-none' | 'none' | 'box-only' | 'auto'>),
/**
* See https://reactnative.dev/docs/style
*/
style: stylePropType,
/**
* This is a special performance property exposed by `RCTView` and is useful
* for scrolling content when there are many subviews, most of which are
* offscreen. For this property to be effective, it must be applied to a
* view that contains many subviews that extend outside its bound. The
* subviews must also have `overflow: hidden`, as should the containing view
* (or one of its superviews).
*
* See https://reactnative.dev/docs/view#removeclippedsubviews
*/
removeClippedSubviews: PropTypes.bool,
/**
* Whether this `View` should render itself (and all of its children) into a
* single hardware texture on the GPU.
*
* @platform android
*
* See https://reactnative.dev/docs/view#rendertohardwaretextureandroid
*/
renderToHardwareTextureAndroid: PropTypes.bool,
/**
* Whether this `View` should be rendered as a bitmap before compositing.
*
* @platform ios
*
* See https://reactnative.dev/docs/view#shouldrasterizeios
*/
shouldRasterizeIOS: PropTypes.bool,
/**
* Views that are only used to layout their children or otherwise don't draw
* anything may be automatically removed from the native hierarchy as an
* optimization. Set this property to `false` to disable this optimization and
* ensure that this `View` exists in the native view hierarchy.
*
* @platform android
*
* See https://reactnative.dev/docs/view#collapsable
*/
collapsable: PropTypes.bool,
/**
* Whether this `View` needs to rendered offscreen and composited with an
* alpha in order to preserve 100% correct colors and blending behavior.
*
* @platform android
*
* See https://reactnative.dev/docs/view#needsoffscreenalphacompositing
*/
needsOffscreenAlphaCompositing: PropTypes.bool,
};
@@ -1,68 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const DeprecatedColorPropType = require('./DeprecatedColorPropType');
const DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');
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.
*/
const DeprecatedViewStylePropTypes = {
...DeprecatedLayoutPropTypes,
...DeprecatedShadowPropTypesIOS,
...DeprecatedTransformPropTypes,
backfaceVisibility: (ReactPropTypes.oneOf([
'visible',
'hidden',
]): React$PropType$Primitive<'visible' | 'hidden'>),
backgroundColor: DeprecatedColorPropType,
borderColor: DeprecatedColorPropType,
borderTopColor: DeprecatedColorPropType,
borderRightColor: DeprecatedColorPropType,
borderBottomColor: DeprecatedColorPropType,
borderLeftColor: DeprecatedColorPropType,
borderStartColor: DeprecatedColorPropType,
borderEndColor: DeprecatedColorPropType,
borderRadius: ReactPropTypes.number,
borderTopLeftRadius: ReactPropTypes.number,
borderTopRightRadius: ReactPropTypes.number,
borderTopStartRadius: ReactPropTypes.number,
borderTopEndRadius: ReactPropTypes.number,
borderBottomLeftRadius: ReactPropTypes.number,
borderBottomRightRadius: ReactPropTypes.number,
borderBottomStartRadius: ReactPropTypes.number,
borderBottomEndRadius: ReactPropTypes.number,
borderStyle: (ReactPropTypes.oneOf([
'solid',
'dotted',
'dashed',
]): React$PropType$Primitive<'solid' | 'dotted' | 'dashed'>),
borderWidth: ReactPropTypes.number,
borderTopWidth: ReactPropTypes.number,
borderRightWidth: ReactPropTypes.number,
borderBottomWidth: ReactPropTypes.number,
borderLeftWidth: ReactPropTypes.number,
opacity: ReactPropTypes.number,
/**
* (Android-only) Sets the elevation of a view, using Android's underlying
* [elevation API](https://developer.android.com/training/material/shadows-clipping.html#Elevation).
* This adds a drop shadow to the item and affects z-order for overlapping views.
* Only supported on Android 5.0+, has no effect on earlier versions.
* @platform android
*/
elevation: ReactPropTypes.number,
};
module.exports = DeprecatedViewStylePropTypes;
@@ -1,86 +0,0 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const invariant = require('invariant');
function deprecatedCreateStrictShapeTypeChecker(shapeTypes: {
[key: string]: ReactPropsCheckType,
...
}): ReactPropsChainableTypeChecker {
function checkType(
isRequired,
props,
propName,
componentName,
location?,
...rest
) {
if (!props[propName]) {
if (isRequired) {
invariant(
false,
`Required object \`${propName}\` was not specified in ` +
`\`${componentName}\`.`,
);
}
return;
}
const propValue = props[propName];
const propType = typeof propValue;
const locationName = location || '(unknown)';
if (propType !== 'object') {
invariant(
false,
`Invalid ${locationName} \`${propName}\` of type \`${propType}\` ` +
`supplied to \`${componentName}\`, expected \`object\`.`,
);
}
// We need to check all keys in case some are required but missing from
// props.
const allKeys = {...props[propName], ...shapeTypes};
for (const key in allKeys) {
const checker = shapeTypes[key];
if (!checker) {
invariant(
false,
`Invalid props.${propName} key \`${key}\` supplied to \`${componentName}\`.` +
'\nBad object: ' +
JSON.stringify(props[propName], null, ' ') +
'\nValid keys: ' +
JSON.stringify(Object.keys(shapeTypes), null, ' '),
);
}
const error = checker(propValue, key, componentName, location, ...rest);
if (error) {
invariant(
false,
error.message +
'\nBad object: ' +
JSON.stringify(props[propName], null, ' '),
);
}
}
}
function chainedCheckType(
props: {[key: string]: any, ...},
propName: string,
componentName: string,
location?: string,
...rest
): ?Error {
return checkType(false, props, propName, componentName, location, ...rest);
}
chainedCheckType.isRequired = checkType.bind(null, true);
return chainedCheckType;
}
module.exports = deprecatedCreateStrictShapeTypeChecker;
-42
View File
@@ -1,42 +0,0 @@
/**
* @flow strict
* @nolint
* @format
*/
// flow-typed signature: d9a983bb1ac458a256c31c139047bdbb
// flow-typed version: 927687984d/prop-types_v15.x.x/flow_>=v0.41.x
type $npm$propTypes$ReactPropsCheckType = (
props: any,
propName: string,
componentName: string,
href?: string,
) => ?Error;
declare module 'prop-types' {
declare var array: React$PropType$Primitive<Array<any>>;
declare var bool: React$PropType$Primitive<boolean>;
declare var func: React$PropType$Primitive<Function>;
declare var number: React$PropType$Primitive<number>;
declare var object: React$PropType$Primitive<Object>;
declare var string: React$PropType$Primitive<string>;
declare var symbol: React$PropType$Primitive<Symbol>;
declare var any: React$PropType$Primitive<any>;
declare var arrayOf: React$PropType$ArrayOf;
declare var element: React$PropType$Primitive<any>; /* TODO */
declare var instanceOf: React$PropType$InstanceOf;
declare var node: React$PropType$Primitive<any>; /* TODO */
declare var objectOf: React$PropType$ObjectOf;
declare var oneOf: React$PropType$OneOf;
declare var oneOfType: React$PropType$OneOfType;
declare var shape: React$PropType$Shape;
declare function checkPropTypes<V>(
propTypes: {[_: $Keys<V>]: $npm$propTypes$ReactPropsCheckType, ...},
values: V,
location: string,
componentName: string,
getStack: ?() => ?string,
): void;
}
-1
View File
@@ -112,7 +112,6 @@
"nullthrows": "^1.1.1",
"pretty-format": "^26.5.2",
"promise": "^8.0.3",
"prop-types": "^15.7.2",
"react-devtools-core": "4.22.1",
"react-refresh": "^0.4.0",
"react-shallow-renderer": "16.14.1",