@faire/mjml-react
Version:
React component library to generate the HTML emails on the fly
65 lines (64 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.trimContent = exports.noop = exports.escapeTextForBrowser = exports.escapeHtml = void 0;
const matchHtmlRegExp = /["'&<>$]/;
function escapeHtml(string) {
const str = "" + string;
const match = matchHtmlRegExp.exec(str);
if (!match) {
return str;
}
let escape;
let html = "";
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34: // "
escape = """;
break;
case 36: // $
escape = "$";
break;
case 38: // &
escape = "&";
break;
case 39: // '
escape = "'"; // modified from escape-html; used to be '''
break;
case 60: // <
escape = "<";
break;
case 62: // >
escape = ">";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.substring(lastIndex, index);
}
lastIndex = index + 1;
html += escape;
}
return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
}
exports.escapeHtml = escapeHtml;
function escapeTextForBrowser(text) {
if (typeof text === "boolean" || typeof text === "number") {
return "" + text;
}
return escapeHtml(text);
}
exports.escapeTextForBrowser = escapeTextForBrowser;
function noop() { }
exports.noop = noop;
function trimContent(child) {
if (child.content) {
child.content = child.content.trim();
}
else if (child.children) {
child.children.forEach(trimContent);
}
}
exports.trimContent = trimContent;