html-to-react
Version:
A lightweight library that converts raw HTML to a React DOM structure.
35 lines (29 loc) • 1.05 kB
JavaScript
;
const utils = require('./utils');
// eslint-disable-next-line max-len
// https://github.com/facebook/react/blob/15.0-stable/src/renderers/dom/shared/ReactDOMComponent.js#L457
const voidElementTags = [
'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param',
'source', 'track', 'wbr', 'menuitem', 'textarea',
];
function ProcessNodeDefinitions() {
function processDefaultNode(node, children, index) {
if (node.type === 'text') {
return node.data;
} else if (node.type === 'comment') {
// FIXME: The following doesn't work as the generated HTML results in
// "<!-- This is a comment -->"
// return '<!-- ' + node.data + ' -->';
return false;
}
if (voidElementTags.indexOf(node.name) > -1) {
return utils.createElement(node, index);
} else {
return utils.createElement(node, index, node.data, children);
}
}
return {
processDefaultNode: processDefaultNode,
};
}
module.exports = ProcessNodeDefinitions;