UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

46 lines (33 loc) 1.53 kB
"use strict"; 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;