@wordpress/block-editor
Version:
54 lines (45 loc) • 1.15 kB
JavaScript
/**
* WordPress dependencies
*/
import { useSelect } from '@wordpress/data';
import { useRefEffect } from '@wordpress/compose';
import { BACKSPACE, DELETE, ESCAPE } from '@wordpress/keycodes';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
export function useUndoAutomaticChange() {
const {
didAutomaticChange,
getSettings
} = useSelect(blockEditorStore);
return useRefEffect(element => {
function onKeyDown(event) {
const {
keyCode
} = event;
if (event.defaultPrevented) {
return;
}
if (keyCode !== DELETE && keyCode !== BACKSPACE && keyCode !== ESCAPE) {
return;
}
const {
__experimentalUndo
} = getSettings();
if (!__experimentalUndo) {
return;
}
if (!didAutomaticChange()) {
return;
}
event.preventDefault();
__experimentalUndo();
}
element.addEventListener('keydown', onKeyDown);
return () => {
element.removeEventListener('keydown', onKeyDown);
};
}, []);
}
//# sourceMappingURL=use-undo-automatic-change.js.map