UNPKG

@gechiui/block-editor

Version:
99 lines (82 loc) 2.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@gechiui/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _lodash = require("lodash"); var _components = require("@gechiui/components"); var _data = require("@gechiui/data"); var _convertToGroupButtons = require("../convert-to-group-buttons"); var _store = require("../../store"); /** * External dependencies */ /** * GeChiUI dependencies */ /** * Internal dependencies */ const { Fill, Slot } = (0, _components.createSlotFill)('BlockSettingsMenuControls'); const BlockSettingsMenuControlsSlot = _ref => { let { fillProps, clientIds = null } = _ref; const { selectedBlocks, selectedClientIds } = (0, _data.useSelect)(select => { const { getBlocksByClientId, getSelectedBlockClientIds } = select(_store.store); const ids = clientIds !== null ? clientIds : getSelectedBlockClientIds(); return { selectedBlocks: (0, _lodash.map)((0, _lodash.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 = (0, _convertToGroupButtons.useConvertToGroupButtonProps)(); const { isGroupable, isUngroupable } = convertToGroupButtonProps; const showConvertToGroupButton = isGroupable || isUngroupable; return (0, _element.createElement)(Slot, { fillProps: { ...fillProps, selectedBlocks, selectedClientIds } }, fills => { if ((fills === null || fills === void 0 ? void 0 : fills.length) > 0 || showConvertToGroupButton) { return (0, _element.createElement)(_components.MenuGroup, null, fills, (0, _element.createElement)(_convertToGroupButtons.ConvertToGroupButton, (0, _extends2.default)({}, 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 (0, _element.createElement)(_components.__experimentalStyleProvider, { document: document }, (0, _element.createElement)(Fill, props)); } BlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot; var _default = BlockSettingsMenuControls; exports.default = _default; //# sourceMappingURL=index.js.map