@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
31 lines • 1.18 kB
JavaScript
import React from 'react';
import { BlockMenuComponents } from './BlockMenuComponents';
import { getChildrenMapKey, willComponentRender } from './utils';
/**
* Renders the given registered component based on its type
*/
export const BlockMenuComponent = ({
registeredComponent,
childrenMap,
fallbacks
}) => {
if (!willComponentRender(registeredComponent, childrenMap)) {
return null;
}
if (registeredComponent.type === 'block-menu-item') {
const ItemComponent = registeredComponent.component || fallbacks['block-menu-item'];
return /*#__PURE__*/React.createElement(ItemComponent, {
key: registeredComponent.key
});
}
const ParentComponent = registeredComponent.component || fallbacks[registeredComponent.type];
const childrenMapKey = getChildrenMapKey(registeredComponent.key, registeredComponent.type);
const registeredComponents = childrenMap.get(childrenMapKey);
return /*#__PURE__*/React.createElement(ParentComponent, {
key: registeredComponent.key
}, /*#__PURE__*/React.createElement(BlockMenuComponents, {
registeredComponents: registeredComponents,
childrenMap: childrenMap,
fallbacks: fallbacks
}));
};