UNPKG

@gechiui/block-editor

Version:
45 lines (37 loc) 930 B
/** * 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 ); }; }, [] ); }