nsn-comp
Version:
NSN核心组件
48 lines (36 loc) • 3.25 kB
JavaScript
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 };