@gechiui/block-editor
Version:
67 lines (56 loc) • 1.72 kB
JavaScript
import { createElement, Fragment } from "@gechiui/element";
/**
* GeChiUI dependencies
*/
import { MenuItem } from '@gechiui/components';
import { _x } from '@gechiui/i18n';
import { switchToBlockType } from '@gechiui/blocks';
import { useDispatch } from '@gechiui/data';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
import useConvertToGroupButtonProps from './use-convert-to-group-button-props';
function ConvertToGroupButton(_ref) {
let {
clientIds,
isGroupable,
isUngroupable,
blocksSelection,
groupingBlockName,
onClose = () => {}
} = _ref;
const {
replaceBlocks
} = useDispatch(blockEditorStore);
const onConvertToGroup = () => {
// Activate the `transform` on the Grouping Block which does the conversion
const newBlocks = switchToBlockType(blocksSelection, groupingBlockName);
if (newBlocks) {
replaceBlocks(clientIds, newBlocks);
}
};
const onConvertFromGroup = () => {
const innerBlocks = blocksSelection[0].innerBlocks;
if (!innerBlocks.length) {
return;
}
replaceBlocks(clientIds, innerBlocks);
};
if (!isGroupable && !isUngroupable) {
return null;
}
return createElement(Fragment, null, isGroupable && createElement(MenuItem, {
onClick: () => {
onConvertToGroup();
onClose();
}
}, _x('Group', 'verb')), isUngroupable && createElement(MenuItem, {
onClick: () => {
onConvertFromGroup();
onClose();
}
}, _x('Ungroup', 'Ungrouping blocks from within a Group block back into individual blocks within the Editor ')));
}
export { useConvertToGroupButtonProps, ConvertToGroupButton };
//# sourceMappingURL=index.js.map