contentful-rich-text-html-parser
Version:
Convert any HTML to the Contentful Rich Text format
105 lines • 3.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertTextNodeToParagraphedText = exports.convertTextNodeToText = exports.convertTagToChildren = exports.convertTagToMark = exports.convertTagToHyperlink = exports.convertTagToInline = exports.convertTagToBlock = void 0;
var rich_text_types_1 = require("@contentful/rich-text-types");
var utils_js_1 = require("./utils.js");
var DEFAULT_NODE_TYPE_FOR_HTML_TAG = {
h1: rich_text_types_1.BLOCKS.HEADING_1,
h2: rich_text_types_1.BLOCKS.HEADING_2,
h3: rich_text_types_1.BLOCKS.HEADING_3,
h4: rich_text_types_1.BLOCKS.HEADING_4,
h5: rich_text_types_1.BLOCKS.HEADING_5,
h6: rich_text_types_1.BLOCKS.HEADING_6,
hr: rich_text_types_1.BLOCKS.HR,
li: rich_text_types_1.BLOCKS.LIST_ITEM,
ol: rich_text_types_1.BLOCKS.OL_LIST,
p: rich_text_types_1.BLOCKS.PARAGRAPH,
blockquote: rich_text_types_1.BLOCKS.QUOTE,
table: rich_text_types_1.BLOCKS.TABLE,
td: rich_text_types_1.BLOCKS.TABLE_CELL,
th: rich_text_types_1.BLOCKS.TABLE_HEADER_CELL,
tr: rich_text_types_1.BLOCKS.TABLE_ROW,
ul: rich_text_types_1.BLOCKS.UL_LIST,
b: rich_text_types_1.MARKS.BOLD,
strong: rich_text_types_1.MARKS.BOLD,
pre: rich_text_types_1.MARKS.CODE,
i: rich_text_types_1.MARKS.ITALIC,
em: rich_text_types_1.MARKS.ITALIC,
sub: rich_text_types_1.MARKS.SUBSCRIPT,
sup: rich_text_types_1.MARKS.SUPERSCRIPT,
u: rich_text_types_1.MARKS.UNDERLINE,
a: rich_text_types_1.INLINES.HYPERLINK,
img: rich_text_types_1.BLOCKS.EMBEDDED_ASSET,
video: rich_text_types_1.BLOCKS.EMBEDDED_ASSET,
audio: rich_text_types_1.BLOCKS.EMBEDDED_ASSET,
};
var getDefaultNodeTypeForHtmlTag = function (tagName) {
return DEFAULT_NODE_TYPE_FOR_HTML_TAG[tagName];
};
var convertTagToBlock = function (node, next) {
var nodeType = getDefaultNodeTypeForHtmlTag(node.tagName);
if (!nodeType || !(0, utils_js_1.isBlockType)(nodeType)) {
return [];
}
return {
nodeType: nodeType,
content: next(node),
data: {},
};
};
exports.convertTagToBlock = convertTagToBlock;
var convertTagToInline = function (node, next) {
var nodeType = getDefaultNodeTypeForHtmlTag(node.tagName);
if (!nodeType || !(0, utils_js_1.isInlineType)(nodeType)) {
return [];
}
return {
nodeType: nodeType,
content: next(node),
data: {},
};
};
exports.convertTagToInline = convertTagToInline;
var convertTagToHyperlink = function (node, next) {
return {
nodeType: rich_text_types_1.INLINES.HYPERLINK,
content: next(node),
data: {
uri: node.attrs.href,
},
};
};
exports.convertTagToHyperlink = convertTagToHyperlink;
var convertTagToMark = function (node, next) {
var nodeType = getDefaultNodeTypeForHtmlTag(node.tagName);
if (!nodeType || !(0, utils_js_1.isMarkType)(nodeType)) {
return [];
}
var mark = {
type: nodeType,
};
return next(node, mark);
};
exports.convertTagToMark = convertTagToMark;
var convertTagToChildren = function (node, next) {
return next(node);
};
exports.convertTagToChildren = convertTagToChildren;
var convertTextNodeToText = function (node, marks) {
return {
nodeType: "text",
marks: marks,
value: node.value,
data: {},
};
};
exports.convertTextNodeToText = convertTextNodeToText;
var convertTextNodeToParagraphedText = function (node, next) {
return {
nodeType: rich_text_types_1.BLOCKS.PARAGRAPH,
data: {},
content: next(node),
};
};
exports.convertTextNodeToParagraphedText = convertTextNodeToParagraphedText;
//# sourceMappingURL=converters.js.map