@pisell/layout
Version:
基于 Fusion 设计系统的自然布局体系
93 lines (91 loc) • 4.68 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _context = _interopRequireDefault(require("./common/context"));
var _constant = require("./common/constant");
var _excluded = ["className", "type", "style", "component", "strong", "underline", "delete", "code", "mark", "color", "align", "backgroundColor", "children"];
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/**
* 文字 包含:字号、字重、行高
* @param props
*/
var Text = function Text(props) {
var _classNames;
var className = props.className,
type = props.type,
style = props.style,
_props$component = props.component,
component = _props$component === void 0 ? 'span' : _props$component,
strong = props.strong,
underline = props.underline,
deleteProp = props["delete"],
code = props.code,
mark = props.mark,
color = props.color,
align = props.align,
backgroundColor = props.backgroundColor,
children = props.children,
others = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
var _useContext = (0, _react.useContext)(_context["default"]),
prefix = _useContext.prefix;
// @ts-ignore
var newType = _constant.TEXT_TYPE_MAP[type] || type;
var cls = (0, _classnames["default"])(className, (_classNames = {}, _classNames[prefix + "text"] = true, _classNames[prefix + "text-" + newType] = newType, _classNames));
var memorizedChildren = (0, _react.useMemo)(function () {
var _children = children;
if (typeof _children === 'string' && _children.indexOf('\n') !== -1) {
var childrenList = _children.split('\n');
var newChildren = [];
childrenList.forEach(function (child) {
newChildren.push(child);
newChildren.push( /*#__PURE__*/_react["default"].createElement("br", null));
});
newChildren.pop();
_children = newChildren;
}
if (strong) {
_children = /*#__PURE__*/_react["default"].createElement("strong", null, _children);
}
if (underline) {
_children = /*#__PURE__*/_react["default"].createElement("u", null, _children);
}
if (deleteProp) {
_children = /*#__PURE__*/_react["default"].createElement("del", null, _children);
}
if (code) {
_children = /*#__PURE__*/_react["default"].createElement("code", null, _children);
}
if (mark) {
_children = /*#__PURE__*/_react["default"].createElement("mark", null, _children);
}
return _children;
}, [children, mark, code, deleteProp, underline, strong]);
var newStyle = (0, _react.useMemo)(function () {
return (0, _extends2["default"])({}, color ? {
color: color
} : null, backgroundColor ? {
backgroundColor: backgroundColor
} : null, {
textAlign: align
}, style);
}, [color, backgroundColor, align, style]);
return /*#__PURE__*/(0, _react.createElement)(component, (0, _extends2["default"])({}, others, {
style: newStyle,
className: cls
}), memorizedChildren);
};
Text.displayName = 'Text';
Text.typeMark = 'Text';
Text.defaultProps = {
align: 'left',
type: 'body2',
component: 'span'
};
var _default = Text;
exports["default"] = _default;