@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
46 lines (33 loc) • 1.53 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.truncateMiddle = exports.TRUNCATED_CLASSNAMES = exports.TRUNCATED_COMPONENT_KEY = void 0;
var _lodash = _interopRequireDefault(require("lodash.isstring"));
var _lodash2 = _interopRequireDefault(require("lodash.isnil"));
var TRUNCATED_COMPONENT_KEY = 'c-Truncate__content__chunks';
exports.TRUNCATED_COMPONENT_KEY = TRUNCATED_COMPONENT_KEY;
var TRUNCATED_CLASSNAMES = {
component: TRUNCATED_COMPONENT_KEY,
withSplitter: 'with-splitter',
firstChunk: TRUNCATED_COMPONENT_KEY + "__first",
secondChunk: TRUNCATED_COMPONENT_KEY + "__second"
}; // Source
// https://github.com/kahwee/truncate-middle
exports.TRUNCATED_CLASSNAMES = TRUNCATED_CLASSNAMES;
var truncateMiddle = function truncateMiddle(word, startLen, endLen, ellip) {
var wordLen = (0, _lodash2.default)(word) ? 0 : word.length;
if (!(0, _lodash.default)(word) && !wordLen) {
return '';
} // Setting default values
var frontLen = ~~startLen; // will cast to integer
var backLen = ~~endLen;
var truncateStr = ellip !== undefined ? ellip : '…';
if (frontLen === 0 && backLen === 0 || frontLen >= wordLen || backLen >= wordLen || frontLen + backLen >= wordLen) {
return word;
} else if (backLen === 0) {
return word.slice(0, frontLen) + truncateStr;
} else {
return word.slice(0, frontLen) + truncateStr + word.slice(wordLen - backLen);
}
};
exports.truncateMiddle = truncateMiddle;
;