@wordpress/block-library
Version:
Block library for the WordPress editor.
49 lines (44 loc) • 1.36 kB
JavaScript
/**
* WordPress dependencies
*/
import { useRefEffect } from '@wordpress/compose';
import { SPACE } from '@wordpress/keycodes';
import { store as blockEditorStore } from '@wordpress/block-editor';
import { useSelect } from '@wordpress/data';
/**
* Internal dependencies
*/
import useIndentListItem from './use-indent-list-item';
export default function useSpace(clientId) {
const {
getSelectionStart,
getSelectionEnd
} = useSelect(blockEditorStore);
const [canIndent, indentListItem] = useIndentListItem(clientId);
return useRefEffect(element => {
function onKeyDown(event) {
const {
keyCode,
shiftKey,
altKey,
metaKey,
ctrlKey
} = event;
if (event.defaultPrevented || !canIndent || keyCode !== SPACE || // Only override when no modifiers are pressed.
shiftKey || altKey || metaKey || ctrlKey) {
return;
}
const selectionStart = getSelectionStart();
const selectionEnd = getSelectionEnd();
if (selectionStart.offset === 0 && selectionEnd.offset === 0) {
event.preventDefault();
indentListItem();
}
}
element.addEventListener('keydown', onKeyDown);
return () => {
element.removeEventListener('keydown', onKeyDown);
};
}, [canIndent, indentListItem]);
}
//# sourceMappingURL=use-space.js.map