UNPKG

contentful-rich-text-html-parser

Version:
105 lines 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertTextNodeToParagraphedText = exports.convertTextNodeToText = exports.convertTagToChildren = exports.convertTagToMark = exports.convertTagToHyperlink = exports.convertTagToInline = exports.convertTagToBlock = void 0; const rich_text_types_1 = require("@contentful/rich-text-types"); const utils_js_1 = require("./utils.js"); const 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, }; const getDefaultNodeTypeForHtmlTag = (tagName) => { return DEFAULT_NODE_TYPE_FOR_HTML_TAG[tagName]; }; const convertTagToBlock = (node, next) => { const nodeType = getDefaultNodeTypeForHtmlTag(node.tagName); if (!nodeType || !(0, utils_js_1.isBlockType)(nodeType)) { return []; } return { nodeType, content: next(node), data: {}, }; }; exports.convertTagToBlock = convertTagToBlock; const convertTagToInline = (node, next) => { const nodeType = getDefaultNodeTypeForHtmlTag(node.tagName); if (!nodeType || !(0, utils_js_1.isInlineType)(nodeType)) { return []; } return { nodeType, content: next(node), data: {}, }; }; exports.convertTagToInline = convertTagToInline; const convertTagToHyperlink = (node, next) => { return { nodeType: rich_text_types_1.INLINES.HYPERLINK, content: next(node), data: { uri: node.attrs.href, }, }; }; exports.convertTagToHyperlink = convertTagToHyperlink; const convertTagToMark = (node, next) => { const nodeType = getDefaultNodeTypeForHtmlTag(node.tagName); if (!nodeType || !(0, utils_js_1.isMarkType)(nodeType)) { return []; } const mark = { type: nodeType, }; return next(node, mark); }; exports.convertTagToMark = convertTagToMark; const convertTagToChildren = (node, next) => { return next(node); }; exports.convertTagToChildren = convertTagToChildren; const convertTextNodeToText = (node, marks) => { return { nodeType: "text", marks, value: node.value, data: {}, }; }; exports.convertTextNodeToText = convertTextNodeToText; const convertTextNodeToParagraphedText = (node, next) => { return { nodeType: rich_text_types_1.BLOCKS.PARAGRAPH, data: {}, content: next(node), }; }; exports.convertTextNodeToParagraphedText = convertTextNodeToParagraphedText; //# sourceMappingURL=converters.js.map