@gechiui/block-editor
Version:
68 lines (62 loc) • 1.61 kB
JavaScript
import { createElement } from "@gechiui/element";
/**
* External dependencies
*/
import { noop } from 'lodash';
/**
* GeChiUI dependencies
*/
import { __ } from '@gechiui/i18n';
import { MenuItem } from '@gechiui/components';
import { getBlockType, hasBlockSupport } from '@gechiui/blocks';
import { withSelect, withDispatch } from '@gechiui/data';
import { compose } from '@gechiui/compose';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
export function BlockModeToggle(_ref) {
let {
blockType,
mode,
onToggleMode,
small = false,
isCodeEditingEnabled = true
} = _ref;
if (!hasBlockSupport(blockType, 'html', true) || !isCodeEditingEnabled) {
return null;
}
const label = mode === 'visual' ? __('作为HTML编辑') : __('可视化编辑');
return createElement(MenuItem, {
onClick: onToggleMode
}, !small && label);
}
export default compose([withSelect((select, _ref2) => {
let {
clientId
} = _ref2;
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, _ref3) => {
let {
onToggle = noop,
clientId
} = _ref3;
return {
onToggleMode() {
dispatch(blockEditorStore).toggleBlockMode(clientId);
onToggle();
}
};
})])(BlockModeToggle);
//# sourceMappingURL=block-mode-toggle.js.map