"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;