rax-text
Version:
Text component for Rax.
137 lines (105 loc) • 4.09 kB
JavaScript
exports.__esModule = true;
exports.default = void 0;
var _rax = require("rax");
var _wrapDefaultProperties = _interopRequireDefault(require("../utils/wrapDefaultProperties"));
var _index = _interopRequireDefault(require("../index.css"));
var _excluded = ["className", "style", "numberOfLines", "children", "onPress", "onClick"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
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; }
var _styleSheet = _index.default;
function _getClassName() {
var className = [];
var args = arguments[0];
var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();
if (type === 'string') {
args = args.trim();
args && className.push(args);
} else if (type === 'array') {
args.forEach(function (cls) {
cls = _getClassName(cls).trim();
cls && className.push(cls);
});
} else if (type === 'object') {
for (var k in args) {
k = k.trim();
if (k && args.hasOwnProperty(k) && args[k]) {
className.push(k);
}
}
}
return className.join(' ').trim();
}
function _getStyle(classNameExpression) {
var cache = _styleSheet.__cache || (_styleSheet.__cache = {});
var className = _getClassName(classNameExpression);
var classNameArr = className.split(/\s+/);
var style = cache[className];
if (!style) {
style = {};
if (classNameArr.length === 1) {
style = _styleSheet[classNameArr[0].trim()];
} else {
classNameArr.forEach(function (cls) {
var value = _styleSheet[cls.trim()];
if (typeof value === 'object') {
style = Object.assign(style, _styleSheet[cls.trim()]);
}
});
}
cache[className] = style;
}
return style;
}
var prefixCls = 'rax-text-v2';
var Text = (0, _rax.forwardRef)(function (props, ref) {
var className = props.className,
style = props.style,
numberOfLines = props.numberOfLines,
children = props.children,
onPress = props.onPress,
onClick = props.onClick,
rest = _objectWithoutPropertiesLoose(props, _excluded);
var handleClick = onClick || onPress;
var lines = typeof numberOfLines === 'string' ? parseInt(numberOfLines, 10) : numberOfLines;
var textString = '';
if (children != null) {
textString = Array.isArray(children) ? children.join('') : children.toString();
}
/* global __weex_v2__ */
if (typeof __weex_v2__ === 'object') {
var classNames = [className];
if (lines) {
classNames.push(prefixCls + "--overflow-hidden");
if (lines === 1) {
classNames.push(prefixCls + "--singleline");
} else {
classNames.push(prefixCls + "--multiline");
}
}
var lineClamp = lines > 1 ? lines : undefined;
return (// @ts-ignore
(0, _rax.createElement)("text", _extends({}, rest, {
ref: ref,
className: classNames.join(' '),
style: Object.assign({}, _getStyle(classNames.join(' ')), _extends({}, style, {
lineClamp: lineClamp
})),
onClick: handleClick
}), textString)
);
}
return (// @ts-ignore
(0, _rax.createElement)("text", _extends({}, rest, {
ref: ref,
className: className,
style: Object.assign({}, _getStyle(className), _extends({
lines: lines
}, style)),
onClick: handleClick
}), textString)
);
});
var _default = (0, _wrapDefaultProperties.default)(Text);
exports.default = _default;
;