"use strict";
exports.__esModule = true;
exports.default = void 0;
var _applyLayout = _interopRequireDefault(require("../../modules/applyLayout"));
var _applyNativeMethods = _interopRequireDefault(require("../../modules/applyNativeMethods"));
var _propTypes = require("prop-types");
var _react = require("react");
var _createElement = _interopRequireDefault(require("../createElement"));
var _css = _interopRequireDefault(require("../StyleSheet/css"));
var _warning = _interopRequireDefault(require("fbjs/lib/warning"));
var _StyleSheet = _interopRequireDefault(require("../StyleSheet"));
var _TextPropTypes = _interopRequireDefault(require("./TextPropTypes"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Text =
/*#__PURE__*/
function (_Component) {
_inheritsLoose(Text, _Component);
function Text() {
return _Component.apply(this, arguments) || this;
}
var _proto = Text.prototype;
_proto.getChildContext = function getChildContext() {
return {
isInAParentText: true
};
};
_proto.render = function render() {
var _this$props = this.props,
dir = _this$props.dir,
numberOfLines = _this$props.numberOfLines,
onPress = _this$props.onPress,
selectable = _this$props.selectable,
style = _this$props.style,
adjustsFontSizeToFit = _this$props.adjustsFontSizeToFit,
allowFontScaling = _this$props.allowFontScaling,
ellipsizeMode = _this$props.ellipsizeMode,
lineBreakMode = _this$props.lineBreakMode,
maxFontSizeMultiplier = _this$props.maxFontSizeMultiplier,
minimumFontScale = _this$props.minimumFontScale,
onLayout = _this$props.onLayout,
onLongPress = _this$props.onLongPress,
pressRetentionOffset = _this$props.pressRetentionOffset,
selectionColor = _this$props.selectionColor,
suppressHighlighting = _this$props.suppressHighlighting,
textBreakStrategy = _this$props.textBreakStrategy,
tvParallaxProperties = _this$props.tvParallaxProperties,
otherProps = _objectWithoutPropertiesLoose(_this$props, ["dir", "numberOfLines", "onPress", "selectable", "style", "adjustsFontSizeToFit", "allowFontScaling", "ellipsizeMode", "lineBreakMode", "maxFontSizeMultiplier", "minimumFontScale", "onLayout", "onLongPress", "pressRetentionOffset", "selectionColor", "suppressHighlighting", "textBreakStrategy", "tvParallaxProperties"]);
var isInAParentText = this.context.isInAParentText;
if (process.env.NODE_ENV !== 'production') {
(0, _warning.default)(this.props.className == null, 'Using the "className" prop on <Text> is deprecated.');
}
if (onPress) {
otherProps.accessible = true;
otherProps.onClick = this._createPressHandler(onPress);
otherProps.onKeyDown = this._createEnterHandler(onPress);
}
otherProps.classList = [this.props.className, classes.text, this.context.isInAParentText === true && classes.textHasAncestor, numberOfLines === 1 && classes.textOneLine, numberOfLines > 1 && classes.textMultiLine]; // allow browsers to automatically infer the language writing direction
otherProps.dir = dir !== undefined ? dir : 'auto';
otherProps.style = [style, numberOfLines > 1 && {
WebkitLineClamp: numberOfLines
}, selectable === false && styles.notSelectable, onPress && styles.pressable];
var component = isInAParentText ? 'span' : 'div';
return (0, _createElement.default)(component, otherProps);
};
_proto._createEnterHandler = function _createEnterHandler(fn) {
return function (e) {
if (e.keyCode === 13) {
fn && fn(e);
}
};
};
_proto._createPressHandler = function _createPressHandler(fn) {
return function (e) {
e.stopPropagation();
fn && fn(e);
};
};
return Text;
}(_react.Component);
Text.displayName = 'Text';
Text.childContextTypes = {
isInAParentText: _propTypes.bool
};
Text.contextTypes = {
isInAParentText: _propTypes.bool
};
Text.propTypes = process.env.NODE_ENV !== "production" ? _TextPropTypes.default : {};
var classes = _css.default.create({
text: {
border: '0 solid black',
boxSizing: 'border-box',
color: 'black',
display: 'inline',
font: '14px System',
margin: 0,
padding: 0,
whiteSpace: 'pre-wrap',
wordWrap: 'break-word'
},
textHasAncestor: {
color: 'inherit',
font: 'inherit',
whiteSpace: 'inherit'
},
textOneLine: {
maxWidth: '100%',
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap'
},
// See #13
textMultiLine: {
display: '-webkit-box',
maxWidth: '100%',
overflow: 'hidden',
textOverflow: 'ellipsis',
WebkitBoxOrient: 'vertical'
}
});
var styles = _StyleSheet.default.create({
notSelectable: {
userSelect: 'none'
},
pressable: {
cursor: 'pointer'
}
});
var _default = (0, _applyLayout.default)((0, _applyNativeMethods.default)(Text));
exports.default = _default;
module.exports = exports.default;