UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

58 lines 2.38 kB
var removeMiddleVowels = function removeMiddleVowels(word) { if (/\d/.test(word) || word.length < 4) return word; var middle = word.substring(1, word.length - 1); return [word.charAt(0), middle.replace(/([aeiou])/gi, ""), word.charAt(word.length - 1)].join(""); }; var removeDuplicateLetters = function removeDuplicateLetters(word) { return word.replace(/(\w)\1+/g, "$1"); }; var ellipsisInMiddle = function ellipsisInMiddle(text, length) { var partLength = Math.floor((text.length - length) / 2); var prefix = text.substring(0, partLength); var suffix = text.substring(text.length - partLength); return "".concat(prefix, "...").concat(suffix); }; var _replaceIfNeeded = function replaceIfNeeded(text, func) { for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } if (!text) return ""; return text.replace(/([\w\d].+?)([\s-_@])([\w\d].+)+?/, function (_, word, sep, word2) { return "".concat(func.apply(void 0, [word].concat(args))).concat(sep).concat(_replaceIfNeeded.apply(void 0, [word2, func].concat(args))); }); }; var shorten = function shorten(string) { var round = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (!string || typeof string !== "string") return string; switch (round) { case 0: return string.trim(); case 1: return _replaceIfNeeded(string, removeDuplicateLetters); case 2: return _replaceIfNeeded(string, removeMiddleVowels); default: return ellipsisInMiddle(string, round); } }; export var shortForLength = function shortForLength(string) { var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30; if (!string || typeof string !== "string") return string; var round = 0; while (string.length > maxLength) { var next = shorten(string, round); round = round + 1; if (next === string) { if (round > 3) break; } else { string = next; } } return string; }; export var shortenToWidth = function shortenToWidth(text, contentWidth, containerWidth) { if (!text || contentWidth <= 0 || contentWidth <= containerWidth) return text; var targetChars = Math.max(3, Math.floor(text.length * (containerWidth / contentWidth))); return shortForLength(text, targetChars); }; export default shorten;