@gechiui/block-editor
Version:
80 lines (70 loc) • 2.57 kB
JavaScript
import { createElement } from "@gechiui/element";
/**
* External dependencies
*/
import { findNodeHandle, Platform } from 'react-native';
/**
* GeChiUI dependencies
*/
import { __, sprintf } from '@gechiui/i18n';
import { switchToBlockType } from '@gechiui/blocks';
import { Picker } from '@gechiui/components';
import { useDispatch } from '@gechiui/data';
import { store as noticesStore } from '@gechiui/notices';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
const BlockTransformationsMenu = _ref => {
let {
anchorNodeRef,
blockTitle,
pickerRef,
possibleTransformations,
selectedBlock,
selectedBlockClientId
} = _ref;
const {
replaceBlocks
} = useDispatch(blockEditorStore);
const {
createSuccessNotice
} = useDispatch(noticesStore);
const pickerOptions = () => {
var _selectedBlock$name;
const selectedBlockName = (_selectedBlock$name = selectedBlock === null || selectedBlock === void 0 ? void 0 : selectedBlock.name) !== null && _selectedBlock$name !== void 0 ? _selectedBlock$name : '';
const blocksThatSplitWhenTransformed = {
'core/list': ['core/paragraph', 'core/heading'],
'core/quote': ['core/paragraph'],
'core/pullquote': ['core/paragraph']
};
return possibleTransformations.map(item => {
const label = selectedBlockName.length && blocksThatSplitWhenTransformed[selectedBlockName] && blocksThatSplitWhenTransformed[selectedBlockName].includes(item.id) ? `${item.title} blocks` : item.title;
return {
label,
value: item.id
};
});
};
const getAnchor = () => anchorNodeRef ? findNodeHandle(anchorNodeRef) : undefined;
function onPickerSelect(value) {
replaceBlocks(selectedBlockClientId, switchToBlockType(selectedBlock, value));
const selectedItem = pickerOptions().find(item => item.value === value);
const successNotice = sprintf(
/* translators: 1: From block title, e.g. Paragraph. 2: To block title, e.g. Header. */
__('%1$s transformed to %2$s'), blockTitle, selectedItem.label);
createSuccessNotice(successNotice);
}
return createElement(Picker, {
ref: pickerRef,
options: pickerOptions(),
onChange: onPickerSelect,
hideCancelButton: Platform.OS !== 'ios',
leftAlign: true,
getAnchor: getAnchor // translators: %s: block title e.g: "Paragraph".
,
title: sprintf(__('Transform %s to'), blockTitle)
});
};
export default BlockTransformationsMenu;
//# sourceMappingURL=block-transformations-menu.native.js.map