UNPKG

@20minutes/draft-convert

Version:

Extensibly serialize & deserialize Draft.js ContentState

48 lines (47 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return splitReactElement; } }); const _react = /*#__PURE__*/ _interop_require_default(require("react")); const _server = /*#__PURE__*/ _interop_require_default(require("react-dom/server")); const _tinyinvariant = /*#__PURE__*/ _interop_require_default(require("tiny-invariant")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // see http://w3c.github.io/html/syntax.html#writing-html-documents-elements const VOID_TAGS = [ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr' ]; function splitReactElement(element) { if (VOID_TAGS.indexOf(element.type) !== -1) { return _server.default.renderToStaticMarkup(element); } const tags = _server.default.renderToStaticMarkup(/*#__PURE__*/ _react.default.cloneElement(element, {}, '\r')).split('\r'); (0, _tinyinvariant.default)(tags.length > 1, `convertToHTML: Element of type ${element.type} must render children`); (0, _tinyinvariant.default)(tags.length < 3, `convertToHTML: Element of type ${element.type} cannot use carriage return character`); return { start: tags[0], end: tags[1] }; }