mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-28 12:15:37 +08:00
[ReactNative] Pull out some OSS modules into separate libs
This commit is contained in:
@@ -1,161 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule Image
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var EdgeInsetsPropType = require('EdgeInsetsPropType');
|
||||
var NativeMethodsMixin = require('NativeMethodsMixin');
|
||||
var NativeModulesDeprecated = require('NativeModulesDeprecated');
|
||||
var PropTypes = require('ReactPropTypes');
|
||||
var ImageResizeMode = require('ImageResizeMode');
|
||||
var ImageSourcePropType = require('ImageSourcePropType');
|
||||
var ImageStylePropTypes = require('ImageStylePropTypes');
|
||||
var React = require('React');
|
||||
var ReactIOSViewAttributes = require('ReactIOSViewAttributes');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var StyleSheetPropType = require('StyleSheetPropType');
|
||||
|
||||
var createReactIOSNativeComponentClass = require('createReactIOSNativeComponentClass');
|
||||
var flattenStyle = require('flattenStyle');
|
||||
var insetsDiffer = require('insetsDiffer');
|
||||
var invariant = require('invariant');
|
||||
var merge = require('merge');
|
||||
var warning = require('warning');
|
||||
|
||||
/**
|
||||
* <Image> - A react component for displaying different types of images,
|
||||
* including network images, static resources, temporary local images, and
|
||||
* images from local disk, such as the camera roll. Example usage:
|
||||
*
|
||||
* renderImages: function() {
|
||||
* return (
|
||||
* <View>
|
||||
* <Image
|
||||
* style={styles.icon}
|
||||
* source={ix('myIcon')}
|
||||
* />
|
||||
* <Image
|
||||
* style={styles.logo}
|
||||
* source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}}
|
||||
* />
|
||||
* </View>
|
||||
* );
|
||||
* },
|
||||
*
|
||||
* More example code in ImageExample.js
|
||||
*/
|
||||
|
||||
var Image = React.createClass({
|
||||
propTypes: {
|
||||
source: ImageSourcePropType,
|
||||
/**
|
||||
* accessible - Whether this element should be revealed as an accessible
|
||||
* element.
|
||||
*/
|
||||
accessible: PropTypes.bool,
|
||||
/**
|
||||
* accessibilityLabel - Custom string to display for accessibility.
|
||||
*/
|
||||
accessibilityLabel: PropTypes.string,
|
||||
/**
|
||||
* capInsets - When the image is resized, the corners of the size specified
|
||||
* by capInsets will stay a fixed size, but the center content and borders
|
||||
* of the image will be stretched. This is useful for creating resizable
|
||||
* rounded buttons, shadows, and other resizable assets. More info:
|
||||
*
|
||||
* https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/index.html#//apple_ref/occ/instm/UIImage/resizableImageWithCapInsets:
|
||||
*/
|
||||
capInsets: EdgeInsetsPropType,
|
||||
style: StyleSheetPropType(ImageStylePropTypes),
|
||||
/**
|
||||
* testID - A unique identifier for this element to be used in UI Automation
|
||||
* testing scripts.
|
||||
*/
|
||||
testID: PropTypes.string,
|
||||
},
|
||||
|
||||
statics: {
|
||||
resizeMode: ImageResizeMode,
|
||||
sourcePropType: ImageSourcePropType,
|
||||
},
|
||||
|
||||
mixins: [NativeMethodsMixin],
|
||||
|
||||
/**
|
||||
* `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We
|
||||
* make `this` look like an actual native component class.
|
||||
*/
|
||||
viewConfig: {
|
||||
uiViewClassName: 'UIView',
|
||||
validAttributes: ReactIOSViewAttributes.UIView
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var style = flattenStyle([styles.base, this.props.style]);
|
||||
var source = this.props.source;
|
||||
var isNetwork = source.uri && source.uri.match(/^https?:/);
|
||||
invariant(
|
||||
!(isNetwork && source.isStatic),
|
||||
'static image uris cannot start with "http": "' + source.uri + '"'
|
||||
);
|
||||
var isStored = !source.isStatic && !isNetwork;
|
||||
var RawImage = isNetwork ? RKNetworkImage : RKStaticImage;
|
||||
|
||||
if (this.props.style && this.props.style.tintColor) {
|
||||
warning(RawImage === RKStaticImage, 'tintColor style only supported on static images.');
|
||||
}
|
||||
|
||||
var contentModes = NativeModulesDeprecated.RKUIManager.UIView.ContentMode;
|
||||
var resizeMode;
|
||||
if (style.resizeMode === ImageResizeMode.stretch) {
|
||||
resizeMode = contentModes.ScaleToFill;
|
||||
} else if (style.resizeMode === ImageResizeMode.contain) {
|
||||
resizeMode = contentModes.ScaleAspectFit;
|
||||
} else { // ImageResizeMode.cover or undefined
|
||||
resizeMode = contentModes.ScaleAspectFill;
|
||||
}
|
||||
|
||||
var nativeProps = merge(this.props, {
|
||||
style,
|
||||
resizeMode,
|
||||
tintColor: style.tintColor,
|
||||
});
|
||||
|
||||
if (isStored) {
|
||||
nativeProps.imageTag = source.uri;
|
||||
} else {
|
||||
nativeProps.src = source.uri;
|
||||
}
|
||||
return <RawImage {...nativeProps} />;
|
||||
}
|
||||
});
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
base: {
|
||||
overflow: 'hidden',
|
||||
},
|
||||
});
|
||||
|
||||
var CommonImageViewAttributes = merge(ReactIOSViewAttributes.UIView, {
|
||||
accessible: true,
|
||||
accessibilityLabel: true,
|
||||
capInsets: {diff: insetsDiffer}, // UIEdgeInsets=UIEdgeInsetsZero
|
||||
imageTag: true,
|
||||
resizeMode: true,
|
||||
src: true,
|
||||
testID: PropTypes.string,
|
||||
});
|
||||
|
||||
var RKStaticImage = createReactIOSNativeComponentClass({
|
||||
validAttributes: merge(CommonImageViewAttributes, { tintColor: true }),
|
||||
uiViewClassName: 'RCTStaticImage',
|
||||
});
|
||||
|
||||
var RKNetworkImage = createReactIOSNativeComponentClass({
|
||||
validAttributes: merge(CommonImageViewAttributes, { defaultImageSrc: true }),
|
||||
uiViewClassName: 'RCTNetworkImageView',
|
||||
});
|
||||
|
||||
module.exports = Image;
|
||||
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule ImageResizeMode
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var keyMirror = require('keyMirror');
|
||||
|
||||
/**
|
||||
* ImageResizeMode - Enum for different image resizing modes, set via
|
||||
* `resizeMode` style property on `<Image>` components.
|
||||
*/
|
||||
var 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,
|
||||
* distoring it. Only supported on iOS.
|
||||
*/
|
||||
stretch: null,
|
||||
});
|
||||
|
||||
module.exports = ImageResizeMode;
|
||||
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule ImageSourcePropType
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var { PropTypes } = require('React');
|
||||
|
||||
var ImageSourcePropType = PropTypes.shape({
|
||||
/**
|
||||
* uri - A string representing the resource identifier for the image, which
|
||||
* could be an http address, a local file path, or the name of a static image
|
||||
* resource (which should be wrapped in the `ix` function).
|
||||
*/
|
||||
uri: PropTypes.string.isRequired,
|
||||
/**
|
||||
* width/height - Used to store the size of the image itself, but unused by
|
||||
* the <Image> component - use normal style layout properties to define the
|
||||
* size of the frame.
|
||||
*/
|
||||
width: PropTypes.number,
|
||||
height: PropTypes.number,
|
||||
});
|
||||
|
||||
module.exports = ImageSourcePropType;
|
||||
@@ -1,45 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule ImageStylePropTypes
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var ImageResizeMode = require('ImageResizeMode');
|
||||
var LayoutPropTypes = require('LayoutPropTypes');
|
||||
var ReactPropTypes = require('ReactPropTypes');
|
||||
|
||||
var merge = require('merge');
|
||||
|
||||
var ImageStylePropTypes = merge(
|
||||
LayoutPropTypes,
|
||||
{
|
||||
resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),
|
||||
backgroundColor: ReactPropTypes.string,
|
||||
borderColor: ReactPropTypes.string,
|
||||
borderWidth: ReactPropTypes.number,
|
||||
borderRadius: ReactPropTypes.number,
|
||||
|
||||
// iOS-Specific style to "tint" an image.
|
||||
// It changes the color of all the non-transparent pixels to the tintColor
|
||||
tintColor: ReactPropTypes.string,
|
||||
opacity: ReactPropTypes.number,
|
||||
}
|
||||
);
|
||||
|
||||
// Image doesn't support padding correctly (#4841912)
|
||||
var unsupportedProps = Object.keys({
|
||||
padding: null,
|
||||
paddingTop: null,
|
||||
paddingLeft: null,
|
||||
paddingRight: null,
|
||||
paddingBottom: null,
|
||||
paddingVertical: null,
|
||||
paddingHorizontal: null,
|
||||
});
|
||||
|
||||
for (var key in unsupportedProps) {
|
||||
delete ImageStylePropTypes[key];
|
||||
}
|
||||
|
||||
module.exports = ImageStylePropTypes;
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule ix
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* This function is used to mark string literals that are image paths. The
|
||||
* return value is a blob of data that core image components understand how to
|
||||
* render.
|
||||
*
|
||||
* The arguments to ix() must be string literals so that they can be parsed
|
||||
* statically.
|
||||
*
|
||||
* @param string Image path to render
|
||||
* @return object Data blob to be used by core UI components
|
||||
*/
|
||||
function ix(path) {
|
||||
return {
|
||||
uri: path,
|
||||
isStatic: true,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = ix;
|
||||
@@ -1,120 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule ExpandingText
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var React = require('React');
|
||||
var StyleSheet = require('StyleSheet');
|
||||
var Text = require('Text');
|
||||
var TouchableWithoutFeedback = require('TouchableWithoutFeedback');
|
||||
var View = require('View');
|
||||
|
||||
var truncate = require('truncate');
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
boldText: {
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* <ExpandingText> - A react component for displaying text which supports truncating
|
||||
* based on a set truncLength. In the following example, the text will truncate
|
||||
* to show only the first 17 characters plus '...' with a See More button to
|
||||
* expand the text to its full length
|
||||
*
|
||||
* renderText: function() {
|
||||
* return <ExpandingText truncLength={20} text={EXAMPLE_TEXT} />;
|
||||
* },
|
||||
*
|
||||
* More example code in `ExpandingTextExample.js`
|
||||
*/
|
||||
var ExpandingText = React.createClass({
|
||||
PropTypes: {
|
||||
/**
|
||||
* Text to be displayed. Text will be truncated if the character length
|
||||
* is greater than the truncLength property.
|
||||
*/
|
||||
text: React.PropTypes.string.isRequired,
|
||||
/**
|
||||
* The styles that will be applied to the text (both truncated and expanded).
|
||||
*/
|
||||
textStyle: Text.stylePropType,
|
||||
/**
|
||||
* The styles that will be applied to the See More button
|
||||
*/
|
||||
seeMoreStyle: Text.stylePropType,
|
||||
/**
|
||||
* The maximum character length for the text that will
|
||||
* be displayed by default. Note that ... will be
|
||||
* appended to the truncated text which is counted towards
|
||||
* the total truncLength of the default displayed string
|
||||
*/
|
||||
truncLength: React.PropTypes.number
|
||||
},
|
||||
|
||||
getDefaultProps: function() {
|
||||
return {
|
||||
truncLength: 130,
|
||||
seeMoreText: 'See More',
|
||||
seeMoreStyle: styles.boldText,
|
||||
};
|
||||
},
|
||||
|
||||
getInitialState: function() {
|
||||
return {
|
||||
truncated: true,
|
||||
};
|
||||
},
|
||||
|
||||
onTapSeeMore: function() {
|
||||
this.setState({
|
||||
truncated: !this.state.truncated,
|
||||
});
|
||||
},
|
||||
|
||||
isTruncated: function() {
|
||||
return (
|
||||
this.props.text.length > this.props.truncLength &&
|
||||
this.state.truncated
|
||||
);
|
||||
},
|
||||
|
||||
getText: function() {
|
||||
var text = this.props.text;
|
||||
if (!this.isTruncated()) {
|
||||
return text;
|
||||
}
|
||||
|
||||
return truncate(text, this.props.truncLength) + ' ';
|
||||
},
|
||||
|
||||
renderSeeMore: function() {
|
||||
if (!this.isTruncated()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Text style={this.props.seeMoreStyle}>
|
||||
{this.props.seeMoreText}
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<TouchableWithoutFeedback onPress={this.onTapSeeMore}>
|
||||
<View>
|
||||
<Text style={this.props.textStyle}>
|
||||
{this.getText()}
|
||||
{this.renderSeeMore()}
|
||||
</Text>
|
||||
</View>
|
||||
</TouchableWithoutFeedback>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = ExpandingText;
|
||||
@@ -1,195 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule Text
|
||||
* @typechecks static-only
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var NativeMethodsMixin = require('NativeMethodsMixin');
|
||||
var React = require('React');
|
||||
var ReactIOSViewAttributes = require('ReactIOSViewAttributes');
|
||||
var StyleSheetPropType = require('StyleSheetPropType');
|
||||
var TextStylePropTypes = require('TextStylePropTypes');
|
||||
var Touchable = require('Touchable');
|
||||
|
||||
var createReactIOSNativeComponentClass =
|
||||
require('createReactIOSNativeComponentClass');
|
||||
var merge = require('merge');
|
||||
|
||||
var stylePropType = StyleSheetPropType(TextStylePropTypes);
|
||||
|
||||
var viewConfig = {
|
||||
validAttributes: merge(ReactIOSViewAttributes.UIView, {
|
||||
isHighlighted: true,
|
||||
numberOfLines: true,
|
||||
}),
|
||||
uiViewClassName: 'RCTText',
|
||||
};
|
||||
|
||||
/**
|
||||
* <Text> - A react component for displaying text which supports nesting,
|
||||
* styling, and touch handling. In the following example, the nested title and
|
||||
* body text will inherit the `fontFamily` from `styles.baseText`, but the title
|
||||
* provides its own additional styles. The title and body will stack on top of
|
||||
* each other on account of the literal newlines:
|
||||
*
|
||||
* renderText: function() {
|
||||
* return (
|
||||
* <Text style={styles.baseText}>
|
||||
* <Text style={styles.titleText} onPress={this._onPressTitle}>
|
||||
* {this.state.titleText + '\n\n'}
|
||||
* </Text>
|
||||
* <Text numberOfLines={5}>
|
||||
* {this.state.bodyText}
|
||||
* </Text>
|
||||
* </Text>
|
||||
* );
|
||||
* },
|
||||
* ...
|
||||
* var styles = StyleSheet.create({
|
||||
* baseText: {
|
||||
* fontFamily: 'Cochin',
|
||||
* },
|
||||
* titleText: {
|
||||
* fontSize: 20,
|
||||
* fontWeight: 'bold',
|
||||
* },
|
||||
* };
|
||||
*
|
||||
* More example code in `TextExample.ios.js`
|
||||
*/
|
||||
|
||||
var Text = React.createClass({
|
||||
|
||||
mixins: [Touchable.Mixin, NativeMethodsMixin],
|
||||
|
||||
statics: {
|
||||
stylePropType: stylePropType,
|
||||
},
|
||||
|
||||
propTypes: {
|
||||
/**
|
||||
* Used to truncate the text with an elipsis after computing the text
|
||||
* layout, including line wrapping, such that the total number of lines does
|
||||
* not exceed this number.
|
||||
*/
|
||||
numberOfLines: React.PropTypes.number,
|
||||
/**
|
||||
* This function is called on press. Text intrinsically supports press
|
||||
* handling with a default highlight state (which can be disabled with
|
||||
* `suppressHighlighting`).
|
||||
*/
|
||||
onPress: React.PropTypes.func,
|
||||
/**
|
||||
* When true, no visual change is made when text is pressed down. By
|
||||
* default, a gray oval highlights the text on press down.
|
||||
*/
|
||||
suppressHighlighting: React.PropTypes.bool,
|
||||
style: stylePropType,
|
||||
},
|
||||
|
||||
viewConfig: viewConfig,
|
||||
|
||||
getInitialState: function() {
|
||||
return merge(this.touchableGetInitialState(), {
|
||||
isHighlighted: false,
|
||||
});
|
||||
},
|
||||
|
||||
onStartShouldSetResponder: function() {
|
||||
var shouldSetFromProps = this.props.onStartShouldSetResponder &&
|
||||
this.props.onStartShouldSetResponder();
|
||||
return shouldSetFromProps || !!this.props.onPress;
|
||||
},
|
||||
|
||||
/*
|
||||
* Returns true to allow responder termination
|
||||
*/
|
||||
handleResponderTerminationRequest: function() {
|
||||
// Allow touchable or props.onResponderTerminationRequest to deny
|
||||
// the request
|
||||
var allowTermination = this.touchableHandleResponderTerminationRequest();
|
||||
if (allowTermination && this.props.onResponderTerminationRequest) {
|
||||
allowTermination = this.props.onResponderTerminationRequest();
|
||||
}
|
||||
return allowTermination;
|
||||
},
|
||||
|
||||
handleResponderGrant: function(e, dispatchID) {
|
||||
this.touchableHandleResponderGrant(e, dispatchID);
|
||||
this.props.onResponderGrant &&
|
||||
this.props.onResponderGrant.apply(this, arguments);
|
||||
},
|
||||
|
||||
handleResponderMove: function(e) {
|
||||
this.touchableHandleResponderMove(e);
|
||||
this.props.onResponderMove &&
|
||||
this.props.onResponderMove.apply(this, arguments);
|
||||
},
|
||||
|
||||
handleResponderRelease: function(e) {
|
||||
this.touchableHandleResponderRelease(e);
|
||||
this.props.onResponderRelease &&
|
||||
this.props.onResponderRelease.apply(this, arguments);
|
||||
},
|
||||
|
||||
handleResponderTerminate: function(e) {
|
||||
this.touchableHandleResponderTerminate(e);
|
||||
this.props.onResponderTerminate &&
|
||||
this.props.onResponderTerminate.apply(this, arguments);
|
||||
},
|
||||
|
||||
touchableHandleActivePressIn: function() {
|
||||
if (this.props.suppressHighlighting || !this.props.onPress) {
|
||||
return;
|
||||
}
|
||||
this.setState({
|
||||
isHighlighted: true,
|
||||
});
|
||||
},
|
||||
|
||||
touchableHandleActivePressOut: function() {
|
||||
if (this.props.suppressHighlighting || !this.props.onPress) {
|
||||
return;
|
||||
}
|
||||
this.setState({
|
||||
isHighlighted: false,
|
||||
});
|
||||
},
|
||||
|
||||
touchableHandlePress: function() {
|
||||
this.props.onPress && this.props.onPress();
|
||||
},
|
||||
|
||||
touchableGetPressRectOffset: function() {
|
||||
return PRESS_RECT_OFFSET;
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var props = {};
|
||||
for (var key in this.props) {
|
||||
props[key] = this.props[key];
|
||||
}
|
||||
props.ref = this.getNodeHandle();
|
||||
// Text is accessible by default
|
||||
if (props.accessible !== false) {
|
||||
props.accessible = true;
|
||||
}
|
||||
props.isHighlighted = this.state.isHighlighted;
|
||||
props.onStartShouldSetResponder = this.onStartShouldSetResponder;
|
||||
props.onResponderTerminationRequest =
|
||||
this.handleResponderTerminationRequest;
|
||||
props.onResponderGrant = this.handleResponderGrant;
|
||||
props.onResponderMove = this.handleResponderMove;
|
||||
props.onResponderRelease = this.handleResponderRelease;
|
||||
props.onResponderTerminate = this.handleResponderTerminate;
|
||||
return <RKText {...props} />;
|
||||
},
|
||||
});
|
||||
|
||||
var PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};
|
||||
|
||||
var RKText = createReactIOSNativeComponentClass(viewConfig);
|
||||
|
||||
module.exports = Text;
|
||||
@@ -1,46 +0,0 @@
|
||||
/**
|
||||
* Copyright 2004-present Facebook. All Rights Reserved.
|
||||
*
|
||||
* @providesModule TextStylePropTypes
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var ReactPropTypes = require('ReactPropTypes');
|
||||
var ViewStylePropTypes = require('ViewStylePropTypes');
|
||||
|
||||
var merge = require('merge');
|
||||
|
||||
var TextStylePropTypes = merge(
|
||||
ViewStylePropTypes, {
|
||||
fontFamily: ReactPropTypes.string,
|
||||
fontSize: ReactPropTypes.number,
|
||||
fontWeight: ReactPropTypes.oneOf(['normal' /*default*/, 'bold']),
|
||||
fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),
|
||||
lineHeight: ReactPropTypes.number,
|
||||
color: ReactPropTypes.string,
|
||||
containerBackgroundColor: ReactPropTypes.string,
|
||||
textAlign: ReactPropTypes.oneOf(
|
||||
['auto' /*default*/, 'left', 'right', 'center']
|
||||
),
|
||||
writingDirection: ReactPropTypes.oneOf(
|
||||
['auto' /*default*/, 'ltr', 'rtl']
|
||||
),
|
||||
}
|
||||
);
|
||||
|
||||
// Text doesn't support padding correctly (#4841912)
|
||||
var unsupportedProps = Object.keys({
|
||||
padding: null,
|
||||
paddingTop: null,
|
||||
paddingLeft: null,
|
||||
paddingRight: null,
|
||||
paddingBottom: null,
|
||||
paddingVertical: null,
|
||||
paddingHorizontal: null,
|
||||
});
|
||||
|
||||
for (var key in unsupportedProps) {
|
||||
delete TextStylePropTypes[key];
|
||||
}
|
||||
|
||||
module.exports = TextStylePropTypes;
|
||||
Reference in New Issue
Block a user