UNPKG

draft-convert-greger

Version:

Extensibly serialize & deserialize Draft.js ContentState

48 lines (37 loc) 1.47 kB
import _typeof from "@babel/runtime/helpers/esm/typeof"; import invariant from 'invariant'; import React from 'react'; import ReactDOMServer from 'react-dom/server'; import splitReactElement from './splitReactElement'; function hasChildren(element) { return React.isValidElement(element) && React.Children.count(element.props.children) > 0; } export default function getElementHTML(element) { var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var dontRenderReactChild = arguments.length > 2 ? arguments[2] : undefined; if (element === undefined || element === null) { return element; } if (typeof element === 'string') { return element; } if (React.isValidElement(element)) { if (hasChildren(element) || dontRenderReactChild) { return ReactDOMServer.renderToStaticMarkup(element); } var tags = splitReactElement(element); if (text !== null && _typeof(tags) === 'object') { var start = tags.start, end = tags.end; return start + text + end; } return tags; } invariant(Object.prototype.hasOwnProperty.call(element, 'start') && Object.prototype.hasOwnProperty.call(element, 'end'), 'convertToHTML: received conversion data without either an HTML string, ReactElement or an object with start/end tags'); if (text !== null) { var _start = element.start, _end = element.end; return _start + text + _end; } return element; }