UNPKG

nsn-comp

Version:

NSN核心组件

48 lines (36 loc) 3.25 kB
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } 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; } import { NConst } from 'nsn-const'; import React from 'react'; import { cutStrByFullLength, getStrFullLength } from '../_util'; import { EllipsisTooltip } from './EllipsisTooltip'; var EllipsisText = function EllipsisText(props) { var text = props.text, _props$length = props.length, length = _props$length === void 0 ? text.length : _props$length, tooltip = props.tooltip, fullWidthRecognition = props.fullWidthRecognition, _props$tail = props.tail, tail = _props$tail === void 0 ? '...' : _props$tail, restProps = _objectWithoutProperties(props, ["text", "length", "tooltip", "fullWidthRecognition", "tail"]); var textLength = fullWidthRecognition ? getStrFullLength(text) : text.length; if (textLength <= length || length < 0) { return React.createElement("span", Object.assign({}, restProps), text); } var displayText; if (length - tail.length <= 0) { displayText = NConst.EMPTY; } else { displayText = fullWidthRecognition ? cutStrByFullLength(text, length) : text.slice(0, length); } var spanAttrs = tooltip ? {} : _objectSpread({}, restProps); return React.createElement(EllipsisTooltip, Object.assign({}, { tooltip: tooltip }, { title: text }), React.createElement("span", Object.assign({}, spanAttrs), displayText, tail)); }; export { EllipsisText };