UNPKG

@wordpress/block-library

Version:
95 lines (92 loc) 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _data = require("@wordpress/data"); var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts"); var _i18n = require("@wordpress/i18n"); var _blocks = require("@wordpress/blocks"); var _blockEditor = require("@wordpress/block-editor"); /** * WordPress dependencies */ function BlockKeyboardShortcuts() { const { registerShortcut } = (0, _data.useDispatch)(_keyboardShortcuts.store); const { replaceBlocks } = (0, _data.useDispatch)(_blockEditor.store); const { getBlockName, getSelectedBlockClientId, getBlockAttributes } = (0, _data.useSelect)(_blockEditor.store); const handleTransformHeadingAndParagraph = (event, level) => { event.preventDefault(); const currentClientId = getSelectedBlockClientId(); if (currentClientId === null) { return; } const blockName = getBlockName(currentClientId); const isParagraph = blockName === 'core/paragraph'; const isHeading = blockName === 'core/heading'; if (!isParagraph && !isHeading) { return; } const destinationBlockName = level === 0 ? 'core/paragraph' : 'core/heading'; const attributes = getBlockAttributes(currentClientId); // Avoid unnecessary block transform when attempting to transform to // the same block type and/or same level. if (isParagraph && level === 0 || isHeading && attributes.level === level) { return; } const textAlign = blockName === 'core/paragraph' ? 'align' : 'textAlign'; const destinationTextAlign = destinationBlockName === 'core/paragraph' ? 'align' : 'textAlign'; replaceBlocks(currentClientId, (0, _blocks.createBlock)(destinationBlockName, { level, content: attributes.content, ...{ [destinationTextAlign]: attributes[textAlign] } })); }; (0, _element.useEffect)(() => { registerShortcut({ name: 'core/block-editor/transform-heading-to-paragraph', category: 'block-library', description: (0, _i18n.__)('Transform heading to paragraph.'), keyCombination: { modifier: 'access', character: '0' }, aliases: [{ modifier: 'access', character: '7' }] }); [1, 2, 3, 4, 5, 6].forEach(level => { registerShortcut({ name: `core/block-editor/transform-paragraph-to-heading-${level}`, category: 'block-library', description: (0, _i18n.__)('Transform paragraph to heading.'), keyCombination: { modifier: 'access', character: `${level}` } }); }); }, [registerShortcut]); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-heading-to-paragraph', event => handleTransformHeadingAndParagraph(event, 0)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-1', event => handleTransformHeadingAndParagraph(event, 1)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-2', event => handleTransformHeadingAndParagraph(event, 2)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-3', event => handleTransformHeadingAndParagraph(event, 3)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-4', event => handleTransformHeadingAndParagraph(event, 4)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-5', event => handleTransformHeadingAndParagraph(event, 5)); (0, _keyboardShortcuts.useShortcut)('core/block-editor/transform-paragraph-to-heading-6', event => handleTransformHeadingAndParagraph(event, 6)); return null; } var _default = exports.default = BlockKeyboardShortcuts; //# sourceMappingURL=index.js.map