UNPKG

@wordpress/components

Version:
8 lines (7 loc) 3.42 kB
{ "version": 3, "sources": ["../../src/truncate/utils.ts"], "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { isValueDefined } from '../utils/values';\nexport const TRUNCATE_ELLIPSIS = '\u2026';\nexport const TRUNCATE_TYPE = {\n auto: 'auto',\n head: 'head',\n middle: 'middle',\n tail: 'tail',\n none: 'none'\n};\nexport const TRUNCATE_DEFAULT_PROPS = {\n ellipsis: TRUNCATE_ELLIPSIS,\n ellipsizeMode: TRUNCATE_TYPE.auto,\n limit: 0,\n numberOfLines: 0\n};\n\n// Source\n// https://github.com/kahwee/truncate-middle\nexport function truncateMiddle(word, headLength, tailLength, ellipsis) {\n if (typeof word !== 'string') {\n return '';\n }\n const wordLength = word.length;\n // Setting default values\n // eslint-disable-next-line no-bitwise\n const frontLength = ~~headLength; // Will cast to integer\n // eslint-disable-next-line no-bitwise\n const backLength = ~~tailLength;\n /* istanbul ignore next */\n const truncateStr = isValueDefined(ellipsis) ? ellipsis : TRUNCATE_ELLIPSIS;\n if (frontLength === 0 && backLength === 0 || frontLength >= wordLength || backLength >= wordLength || frontLength + backLength >= wordLength) {\n return word;\n } else if (backLength === 0) {\n return word.slice(0, frontLength) + truncateStr;\n }\n return word.slice(0, frontLength) + truncateStr + word.slice(wordLength - backLength);\n}\nexport function truncateContent(words = '', props) {\n const mergedProps = {\n ...TRUNCATE_DEFAULT_PROPS,\n ...props\n };\n const {\n ellipsis,\n ellipsizeMode,\n limit\n } = mergedProps;\n if (ellipsizeMode === TRUNCATE_TYPE.none) {\n return words;\n }\n let truncateHead;\n let truncateTail;\n switch (ellipsizeMode) {\n case TRUNCATE_TYPE.head:\n truncateHead = 0;\n truncateTail = limit;\n break;\n case TRUNCATE_TYPE.middle:\n truncateHead = Math.floor(limit / 2);\n truncateTail = Math.floor(limit / 2);\n break;\n default:\n truncateHead = limit;\n truncateTail = 0;\n }\n const truncatedContent = ellipsizeMode !== TRUNCATE_TYPE.auto ? truncateMiddle(words, truncateHead, truncateTail, ellipsis) : words;\n return truncatedContent;\n}"], "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA+B;AACxB,IAAM,oBAAoB;AAC1B,IAAM,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AACR;AACO,IAAM,yBAAyB;AAAA,EACpC,UAAU;AAAA,EACV,eAAe,cAAc;AAAA,EAC7B,OAAO;AAAA,EACP,eAAe;AACjB;AAIO,SAAS,eAAe,MAAM,YAAY,YAAY,UAAU;AACrE,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,aAAa,KAAK;AAGxB,QAAM,cAAc,CAAC,CAAC;AAEtB,QAAM,aAAa,CAAC,CAAC;AAErB,QAAM,kBAAc,8BAAe,QAAQ,IAAI,WAAW;AAC1D,MAAI,gBAAgB,KAAK,eAAe,KAAK,eAAe,cAAc,cAAc,cAAc,cAAc,cAAc,YAAY;AAC5I,WAAO;AAAA,EACT,WAAW,eAAe,GAAG;AAC3B,WAAO,KAAK,MAAM,GAAG,WAAW,IAAI;AAAA,EACtC;AACA,SAAO,KAAK,MAAM,GAAG,WAAW,IAAI,cAAc,KAAK,MAAM,aAAa,UAAU;AACtF;AACO,SAAS,gBAAgB,QAAQ,IAAI,OAAO;AACjD,QAAM,cAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,MAAI,kBAAkB,cAAc,MAAM;AACxC,WAAO;AAAA,EACT;AACA,MAAI;AACJ,MAAI;AACJ,UAAQ,eAAe;AAAA,IACrB,KAAK,cAAc;AACjB,qBAAe;AACf,qBAAe;AACf;AAAA,IACF,KAAK,cAAc;AACjB,qBAAe,KAAK,MAAM,QAAQ,CAAC;AACnC,qBAAe,KAAK,MAAM,QAAQ,CAAC;AACnC;AAAA,IACF;AACE,qBAAe;AACf,qBAAe;AAAA,EACnB;AACA,QAAM,mBAAmB,kBAAkB,cAAc,OAAO,eAAe,OAAO,cAAc,cAAc,QAAQ,IAAI;AAC9H,SAAO;AACT;", "names": [] }