@20minutes/draft-convert
Version:
Extensibly serialize & deserialize Draft.js ContentState
43 lines (42 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return getBlockTags;
}
});
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"));
const _splitReactElement = /*#__PURE__*/ _interop_require_default(require("./splitReactElement.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function hasChildren(element) {
return /*#__PURE__*/ _react.default.isValidElement(element) && _react.default.Children.count(element.props.children) > 0;
}
function getBlockTags(blockHTML) {
(0, _tinyinvariant.default)(blockHTML !== null && blockHTML !== undefined, 'Expected block HTML value to be non-null');
if (typeof blockHTML === 'string') {
return blockHTML;
}
if (/*#__PURE__*/ _react.default.isValidElement(blockHTML)) {
if (hasChildren(blockHTML)) {
return _server.default.renderToStaticMarkup(blockHTML);
}
return (0, _splitReactElement.default)(blockHTML);
}
if (Object.hasOwn(blockHTML, 'element') && /*#__PURE__*/ _react.default.isValidElement(blockHTML.element)) {
return {
...blockHTML,
...(0, _splitReactElement.default)(blockHTML.element)
};
}
(0, _tinyinvariant.default)(Object.hasOwn(blockHTML, 'start') && Object.hasOwn(blockHTML, 'end'), 'convertToHTML: received block information without either a ReactElement or an object with start/end tags');
return blockHTML;
}