UNPKG

@contentstack/utils

Version:
188 lines 15 kB
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