UNPKG

1.49 kBJavaScriptView Raw
1var domToReact = require('./lib/dom-to-react');
2var attributesToProps = require('./lib/attributes-to-props');
3var htmlToDOM = require('html-dom-parser');
4
5// support backwards compatibility for ES Module
6htmlToDOM =
7 /* istanbul ignore next */
8 typeof htmlToDOM.default === 'function' ? htmlToDOM.default : htmlToDOM;
9
10var domParserOptions = { lowerCaseAttributeNames: false };
11
12/**
13 * Converts HTML string to React elements.
14 *
15 * @param {String} html - HTML string.
16 * @param {Object} [options] - Parser options.
17 * @param {Object} [options.htmlparser2] - htmlparser2 options.
18 * @param {Object} [options.library] - Library for React, Preact, etc.
19 * @param {Function} [options.replace] - Replace method.
20 * @return {JSX.Element|JSX.Element[]|String} - React element(s), empty array, or string.
21 */
22function HTMLReactParser(html, options) {
23 if (typeof html !== 'string') {
24 throw new TypeError('First argument must be a string');
25 }
26 if (html === '') {
27 return [];
28 }
29 options = options || {};
30 return domToReact(
31 htmlToDOM(html, options.htmlparser2 || domParserOptions),
32 options
33 );
34}
35
36HTMLReactParser.domToReact = domToReact;
37HTMLReactParser.htmlToDOM = htmlToDOM;
38HTMLReactParser.attributesToProps = attributesToProps;
39HTMLReactParser.Element = require('domhandler/lib/node').Element;
40
41// support CommonJS and ES Modules
42module.exports = HTMLReactParser;
43module.exports.default = HTMLReactParser;