@wordpress/block-editor
Version:
62 lines (57 loc) • 1.51 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* External dependencies
*/
import { noop } from 'lodash';
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { MenuItem } from '@wordpress/components';
import { getBlockType, hasBlockSupport } from '@wordpress/blocks';
import { withSelect, withDispatch } from '@wordpress/data';
import { compose } from '@wordpress/compose';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
export function BlockModeToggle({
blockType,
mode,
onToggleMode,
small = false,
isCodeEditingEnabled = true
}) {
if (!hasBlockSupport(blockType, 'html', true) || !isCodeEditingEnabled) {
return null;
}
const label = mode === 'visual' ? __('Edit as HTML') : __('Edit visually');
return createElement(MenuItem, {
onClick: onToggleMode
}, !small && label);
}
export default compose([withSelect((select, {
clientId
}) => {
const {
getBlock,
getBlockMode,
getSettings
} = select(blockEditorStore);
const block = getBlock(clientId);
const isCodeEditingEnabled = getSettings().codeEditingEnabled;
return {
mode: getBlockMode(clientId),
blockType: block ? getBlockType(block.name) : null,
isCodeEditingEnabled
};
}), withDispatch((dispatch, {
onToggle = noop,
clientId
}) => ({
onToggleMode() {
dispatch(blockEditorStore).toggleBlockMode(clientId);
onToggle();
}
}))])(BlockModeToggle);
//# sourceMappingURL=block-mode-toggle.js.map