@wordpress/block-library
Version:
Block library for the WordPress editor.
67 lines (64 loc) • 2.08 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useSpace;
var _compose = require("@wordpress/compose");
var _keycodes = require("@wordpress/keycodes");
var _blockEditor = require("@wordpress/block-editor");
var _data = require("@wordpress/data");
var _useIndentListItem = _interopRequireDefault(require("./use-indent-list-item"));
var _useOutdentListItem = _interopRequireDefault(require("./use-outdent-list-item"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useSpace(clientId) {
const {
getSelectionStart,
getSelectionEnd,
getBlockIndex
} = (0, _data.useSelect)(_blockEditor.store);
const indentListItem = (0, _useIndentListItem.default)(clientId);
const outdentListItem = (0, _useOutdentListItem.default)();
return (0, _compose.useRefEffect)(element => {
function onKeyDown(event) {
const {
keyCode,
shiftKey,
altKey,
metaKey,
ctrlKey
} = event;
if (event.defaultPrevented || keyCode !== _keycodes.SPACE && keyCode !== _keycodes.TAB ||
// Only override when no modifiers are pressed.
altKey || metaKey || ctrlKey) {
return;
}
const selectionStart = getSelectionStart();
const selectionEnd = getSelectionEnd();
if (selectionStart.offset === 0 && selectionEnd.offset === 0) {
if (shiftKey) {
// Note that backspace behaviour in defined in onMerge.
if (keyCode === _keycodes.TAB) {
if (outdentListItem()) {
event.preventDefault();
}
}
} else if (getBlockIndex(clientId) !== 0) {
if (indentListItem()) {
event.preventDefault();
}
}
}
}
element.addEventListener('keydown', onKeyDown);
return () => {
element.removeEventListener('keydown', onKeyDown);
};
}, [clientId, indentListItem]);
}
//# sourceMappingURL=use-space.js.map
;