@guestbell/react-page-plugins
Version:
Plugins we use in GuestBell for working with amazing react-page package
44 lines • 1.53 kB
JavaScript
import * as React from 'react';
import { Element, Text } from 'slate';
import { Migrator } from '../../slateMigrations/Migrator';
var _RendererRecursive = function RendererRecursive(_ref) {
var node = _ref.node,
textRule = _ref.textRule,
nodeRule = _ref.nodeRule;
if (Text.isText(node)) {
return textRule(node);
}
if (Element.isElement(node)) {
return nodeRule(node, node.children && /*#__PURE__*/React.createElement(React.Fragment, null, node.children.map(function (n, key) {
return /*#__PURE__*/React.createElement(_RendererRecursive, {
nodeRule: nodeRule,
textRule: textRule,
node: n,
key: key
});
})));
}
};
var SlateRenderer = function SlateRenderer(props) {
var value = props.value,
nodeRule = props.nodeRule,
textRule = props.textRule,
migrations = props.migrations,
version = props.version;
var migratedValue = React.useMemo(function () {
var migrationResult = Migrator.migrateState(version, value, migrations);
return migrationResult.migratedState;
}, [props.value]);
return /*#__PURE__*/React.createElement("div", {
className: "slateRenderer__container"
}, migratedValue && Array.isArray(migratedValue) && migratedValue.map(function (node, key) {
return /*#__PURE__*/React.createElement(_RendererRecursive, {
nodeRule: nodeRule,
textRule: textRule,
node: node,
key: key
});
}));
};
export default /*#__PURE__*/React.memo(SlateRenderer);
//# sourceMappingURL=SlateRenderer.js.map