@contentstack/utils
Version:
Contentstack utilities for Javascript
188 lines • 15 kB
JavaScript
var _a;
import MarkType from "../nodes/mark-type";
import NodeType from "../nodes/node-type";
import { sanitizeHTML } from "../helper/sanitize";
export var defaultNodeOption = (_a = {},
_a[NodeType.DOCUMENT] = function (node) {
return "";
},
_a[NodeType.PARAGRAPH] = function (node, next) {
return "<p".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</p>");
},
_a[NodeType.LINK] = function (node, next) {
var sanitizedHref = sanitizeHTML(node.attrs.href || node.attrs.url);
if (node.attrs.target) {
return "<a".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", " href=\"").concat(sanitizedHref, "\" target=\"").concat(node.attrs.target, "\">").concat(sanitizeHTML(next(node.children)), "</a>");
}
return "<a".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", " href=\"").concat(sanitizedHref, "\">").concat(sanitizeHTML(next(node.children)), "</a>");
},
_a[NodeType.IMAGE] = function (node, next) {
var sanitizedSrc = encodeURI(sanitizeHTML(node.attrs.src || node.attrs.url));
return "<img".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", " src=\"").concat(sanitizedSrc, "\" />").concat(sanitizeHTML(next(node.children)));
},
_a[NodeType.EMBED] = function (node, next) {
var sanitizedSrc = encodeURI(sanitizeHTML(node.attrs.src || node.attrs.url));
return "<iframe".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", " src=\"").concat(sanitizedSrc, "\">").concat(sanitizeHTML(next(node.children)), "</iframe>");
},
_a[NodeType.HEADING_1] = function (node, next) {
return "<h1".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h1>");
},
_a[NodeType.HEADING_2] = function (node, next) {
return "<h2".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h2>");
},
_a[NodeType.HEADING_3] = function (node, next) {
return "<h3".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h3>");
},
_a[NodeType.HEADING_4] = function (node, next) {
return "<h4".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h4>");
},
_a[NodeType.HEADING_5] = function (node, next) {
return "<h5".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h5>");
},
_a[NodeType.HEADING_6] = function (node, next) {
return "<h6".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</h6>");
},
_a[NodeType.ORDER_LIST] = function (node, next) {
return "<ol".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</ol>");
},
_a[NodeType.FRAGMENT] = function (node, next) {
return "<fragment>".concat(sanitizeHTML(next(node.children)), "</fragment>");
},
_a[NodeType.UNORDER_LIST] = function (node, next) {
return "<ul".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</ul>");
},
_a[NodeType.LIST_ITEM] = function (node, next) {
return "<li".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</li>");
},
_a[NodeType.HR] = function (node, next) {
return "<hr>";
},
_a[NodeType.TABLE] = function (node, next) {
// Generate colgroup if colWidths attribute is present
var colgroupHTML = '';
if (node.attrs.colWidths && Array.isArray(node.attrs.colWidths)) {
var totalWidth_1 = node.attrs.colWidths.reduce(function (sum, width) { return sum + width; }, 0);
colgroupHTML = "<".concat(NodeType.COL_GROUP, " data-width=\"").concat(totalWidth_1, "\">");
node.attrs.colWidths.forEach(function (colWidth) {
var widthPercentage = (colWidth / totalWidth_1) * 100;
colgroupHTML += "<".concat(NodeType.COL, " style=\"width:").concat(widthPercentage.toFixed(2), "%\"/>");
});
colgroupHTML += "</".concat(NodeType.COL_GROUP, ">");
}
// Generate table with colgroup and other attributes
return "<table".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "") +
"".concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "") +
"".concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">") +
"".concat(colgroupHTML) +
"".concat(sanitizeHTML(next(node.children))) +
"</table>";
},
_a[NodeType.TABLE_HEADER] = function (node, next) {
return "<thead".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</thead>");
},
_a[NodeType.TABLE_BODY] = function (node, next) {
return "<tbody".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</tbody>");
},
_a[NodeType.TABLE_FOOTER] = function (node, next) {
return "<tfoot".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</tfoot>");
},
_a[NodeType.TABLE_ROW] = function (node, next) {
return "<tr".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</tr>");
},
_a[NodeType.TABLE_HEAD] = function (node, next) {
if (node.attrs.void)
return '';
return "<th" +
"".concat(node.attrs.rowSpan ? " rowspan=\"".concat(node.attrs.rowSpan, "\"") : "") +
"".concat(node.attrs.colSpan ? " colspan=\"".concat(node.attrs.colSpan, "\"") : "") +
"".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "") +
"".concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "") +
"".concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children))) +
"</th>";
},
_a[NodeType.TABLE_DATA] = function (node, next) {
if (node.attrs.void)
return '';
return "<td" +
"".concat(node.attrs.rowSpan ? " rowspan=\"".concat(node.attrs.rowSpan, "\"") : "") +
"".concat(node.attrs.colSpan ? " colspan=\"".concat(node.attrs.colSpan, "\"") : "") +
"".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "") +
"".concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "") +
"".concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children))) +
"</td>";
},
_a[NodeType.BLOCK_QUOTE] = function (node, next) {
return "<blockquote".concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</blockquote>");
},
_a[NodeType.CODE] = function (node, next) {
return "<code".concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", ">").concat(sanitizeHTML(next(node.children)), "</code>");
},
_a['reference'] = function (node, next) {
var _a, _b, _c, _d, _e;
if ((node.attrs.type === 'entry' || node.attrs.type === 'asset') && node.attrs['display-type'] === 'link') {
var aTagAttrs = "".concat(node.attrs.style ? " style=\"".concat(node.attrs.style, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(node.attrs['class-name'], "\"") : "").concat(node.attrs.id ? " id=\"".concat(node.attrs.id, "\"") : "", " href=\"").concat(node.attrs.href || node.attrs.url, "\"");
if (node.attrs.target) {
aTagAttrs += " target=\"".concat(node.attrs.target, "\"");
}
if (node.attrs.type == 'asset') {
aTagAttrs += " type=\"asset\" content-type-uid=\"sys_assets\" ".concat(node.attrs['asset-uid'] ? "data-sys-asset-uid=\"".concat(node.attrs['asset-uid'], "\"") : "", " sys-style-type=\"download\"");
}
var aTag = "<a".concat(aTagAttrs, ">").concat(sanitizeHTML(next(node.children)), "</a>");
return aTag;
}
if (node.attrs.type === 'asset') {
var src = encodeURI(node.attrs['asset-link']);
var alt = (_b = (_a = node.attrs) === null || _a === void 0 ? void 0 : _a['redactor-attributes']) === null || _b === void 0 ? void 0 : _b['alt'];
var link = node.attrs.link;
var target = node.attrs.target || "";
var caption = ((_d = (_c = node.attrs) === null || _c === void 0 ? void 0 : _c['redactor-attributes']) === null || _d === void 0 ? void 0 : _d['asset-caption']) || ((_e = node.attrs) === null || _e === void 0 ? void 0 : _e['asset-caption']) || "";
var style = node.attrs.style;
var asset_uid = node.attrs['asset-uid'];
var imageTag = "<img".concat(asset_uid ? " asset_uid=\"".concat(asset_uid, "\"") : "").concat(node.attrs['class-name'] ? " class=\"".concat(sanitizeHTML(node.attrs['class-name']), "\"") : "").concat(src ? " src=\"".concat(sanitizeHTML(src), "\"") : "").concat(alt ? " alt=\"".concat(alt, "\"") : "").concat(target === "_blank" ? " target=\"_blank\"" : "").concat(style ? " style=\"".concat(style, "\"") : "", " />");
return "<figure".concat(style ? " style=\"".concat(style, "\"") : '', ">") +
(link ? "<a href=\"".concat(link, "\" target=\"").concat(target || "", "\">") : "") +
imageTag +
(link ? "</a>" : "") +
(caption ? "<figcaption>".concat(caption, "</figcaption>") : "") +
"</figure>";
}
return "";
},
_a['default'] = function (node, next) {
return sanitizeHTML(next(node.children));
},
_a[MarkType.BOLD] = function (text) {
return "<strong>".concat(sanitizeHTML(text), "</strong>");
},
_a[MarkType.ITALIC] = function (text) {
return "<em>".concat(sanitizeHTML(text), "</em>");
},
_a[MarkType.UNDERLINE] = function (text) {
return "<u>".concat(sanitizeHTML(text), "</u>");
},
_a[MarkType.STRIKE_THROUGH] = function (text) {
return "<strike>".concat(sanitizeHTML(text), "</strike>");
},
_a[MarkType.INLINE_CODE] = function (text) {
return "<span data-type='inlineCode'>".concat(sanitizeHTML(text), "</span>");
},
_a[MarkType.SUBSCRIPT] = function (text) {
return "<sub>".concat(sanitizeHTML(text), "</sub>");
},
_a[MarkType.SUPERSCRIPT] = function (text) {
return "<sup>".concat(sanitizeHTML(text), "</sup>");
},
_a[MarkType.BREAK] = function (text) {
// Check if text is only newlines (which will be converted to <br /> by sanitizeHTML)
// If so, don't add an extra <br /> to avoid duplication
var onlyNewlines = /^\n+$/.test(text);
if (onlyNewlines) {
return sanitizeHTML(text);
}
return "<br />".concat(sanitizeHTML(text));
},
_a[MarkType.CLASSNAME_OR_ID] = function (text, classname, id) {
return "<span".concat(classname ? " class=\"".concat(classname, "\"") : "").concat(id ? " id=\"".concat(id, "\"") : "", ">").concat(sanitizeHTML(text), "</span>");
},
_a);
//# sourceMappingURL=default-node-options.js.map