UNPKG

@gechiui/block-editor

Version:
83 lines (75 loc) 2.49 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@gechiui/element"; /** * External dependencies */ import { compact, map } from 'lodash'; /** * GeChiUI dependencies */ import { createSlotFill, MenuGroup, __experimentalStyleProvider as StyleProvider } from '@gechiui/components'; import { useSelect } from '@gechiui/data'; /** * Internal dependencies */ import { useConvertToGroupButtonProps, ConvertToGroupButton } from '../convert-to-group-buttons'; import { store as blockEditorStore } from '../../store'; const { Fill, Slot } = createSlotFill('BlockSettingsMenuControls'); const BlockSettingsMenuControlsSlot = _ref => { let { fillProps, clientIds = null } = _ref; const { selectedBlocks, selectedClientIds } = useSelect(select => { const { getBlocksByClientId, getSelectedBlockClientIds } = select(blockEditorStore); const ids = clientIds !== null ? clientIds : getSelectedBlockClientIds(); return { selectedBlocks: map(compact(getBlocksByClientId(ids)), block => block.name), selectedClientIds: ids }; }, [clientIds]); // Check if current selection of blocks is Groupable or Ungroupable // and pass this props down to ConvertToGroupButton. const convertToGroupButtonProps = useConvertToGroupButtonProps(); const { isGroupable, isUngroupable } = convertToGroupButtonProps; const showConvertToGroupButton = isGroupable || isUngroupable; return createElement(Slot, { fillProps: { ...fillProps, selectedBlocks, selectedClientIds } }, fills => { if ((fills === null || fills === void 0 ? void 0 : fills.length) > 0 || showConvertToGroupButton) { return createElement(MenuGroup, null, fills, createElement(ConvertToGroupButton, _extends({}, convertToGroupButtonProps, { onClose: fillProps === null || fillProps === void 0 ? void 0 : fillProps.onClose }))); } }); }; /** * @see https://github.com/GeChiUI/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md * * @param {Object} props Fill props. * @return {GCElement} Element. */ function BlockSettingsMenuControls(_ref2) { let { ...props } = _ref2; return createElement(StyleProvider, { document: document }, createElement(Fill, props)); } BlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot; export default BlockSettingsMenuControls; //# sourceMappingURL=index.js.map