UNPKG

ghost

Version:

The professional publishing platform

42 lines (34 loc) 1.27 kB
const {escapeHtml} = require('./escape-html'); function truncateText(text, maxLength) { if (text && text.length > maxLength) { return text.substring(0, maxLength - 1).trim() + '…'; } else { return text ?? ''; } } function truncateHtml(text, maxLength, maxLengthMobile) { // If no mobile length specified or mobile length is larger than desktop, // just do a simple truncate if (!maxLengthMobile || maxLength <= maxLengthMobile) { return escapeHtml(truncateText(text, maxLength)); } // Handle text shorter than mobile length if (text.length <= maxLengthMobile) { return escapeHtml(text); } if (text && text.length > maxLengthMobile) { let ellipsis = ''; if (text.length > maxLengthMobile && text.length <= maxLength) { ellipsis = '<span class="hide-desktop">…</span>'; } else if (text.length > maxLength) { ellipsis = '…'; } return escapeHtml(text.substring(0, maxLengthMobile - 1)) + '<span class="desktop-only">' + escapeHtml(text.substring(maxLengthMobile - 1, maxLength - 1)) + '</span>' + ellipsis; } else { return escapeHtml(text ?? ''); } } module.exports = { truncateText, truncateHtml };