@gechiui/block-editor
Version:
45 lines (37 loc) • 930 B
JavaScript
/**
* GeChiUI dependencies
*/
import { useSelect } from '@gechiui/data';
import { useRefEffect } from '@gechiui/compose';
import { BACKSPACE, DELETE, ESCAPE } from '@gechiui/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;
}
if ( ! didAutomaticChange() ) {
return;
}
event.preventDefault();
getSettings().__experimentalUndo();
}
element.addEventListener( 'keydown', onKeyDown );
return () => {
element.removeEventListener( 'keydown', onKeyDown );
};
}, [] );
}