@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
30 lines • 1.26 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 var BlockMenuComponent = function BlockMenuComponent(_ref) {
var registeredComponent = _ref.registeredComponent,
childrenMap = _ref.childrenMap,
fallbacks = _ref.fallbacks;
if (!willComponentRender(registeredComponent, childrenMap)) {
return null;
}
if (registeredComponent.type === 'block-menu-item') {
var ItemComponent = registeredComponent.component || fallbacks['block-menu-item'];
return /*#__PURE__*/React.createElement(ItemComponent, {
key: registeredComponent.key
});
}
var ParentComponent = registeredComponent.component || fallbacks[registeredComponent.type];
var childrenMapKey = getChildrenMapKey(registeredComponent.key, registeredComponent.type);
var registeredComponents = childrenMap.get(childrenMapKey);
return /*#__PURE__*/React.createElement(ParentComponent, {
key: registeredComponent.key
}, /*#__PURE__*/React.createElement(BlockMenuComponents, {
registeredComponents: registeredComponents,
childrenMap: childrenMap,
fallbacks: fallbacks
}));
};