@wordpress/block-editor
Version:
58 lines (55 loc) • 1.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = BlockModeToggle;
var _i18n = require("@wordpress/i18n");
var _components = require("@wordpress/components");
var _blocks = require("@wordpress/blocks");
var _data = require("@wordpress/data");
var _store = require("../../store");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const noop = () => {};
function BlockModeToggle({
clientId,
onToggle = noop
}) {
const {
blockType,
mode,
isCodeEditingEnabled
} = (0, _data.useSelect)(select => {
const {
getBlock,
getBlockMode,
getSettings
} = select(_store.store);
const block = getBlock(clientId);
return {
mode: getBlockMode(clientId),
blockType: block ? (0, _blocks.getBlockType)(block.name) : null,
isCodeEditingEnabled: getSettings().codeEditingEnabled
};
}, [clientId]);
const {
toggleBlockMode
} = (0, _data.useDispatch)(_store.store);
if (!blockType || !(0, _blocks.hasBlockSupport)(blockType, 'html', true) || !isCodeEditingEnabled) {
return null;
}
const label = mode === 'visual' ? (0, _i18n.__)('Edit as HTML') : (0, _i18n.__)('Edit visually');
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
onClick: () => {
toggleBlockMode(clientId);
onToggle();
},
children: label
});
}
//# sourceMappingURL=block-mode-toggle.js.map
;