@gechiui/block-editor
Version:
99 lines (82 loc) • 2.84 kB
JavaScript
;
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