28 lines
802 B
TypeScript
28 lines
802 B
TypeScript
import { Dispatch, SetStateAction } from 'react';
|
|
import { IHistoryState } from '../../Interfaces/IHistoryState';
|
|
import { ENABLE_SHORTCUTS } from '../../utils/default';
|
|
|
|
export function onKeyDown(
|
|
event: KeyboardEvent,
|
|
history: IHistoryState[],
|
|
historyCurrentStep: number,
|
|
setHistoryCurrentStep: Dispatch<SetStateAction<number>>
|
|
): void {
|
|
if (!ENABLE_SHORTCUTS) {
|
|
return;
|
|
}
|
|
|
|
event.preventDefault();
|
|
if (event.isComposing || event.keyCode === 229) {
|
|
return;
|
|
}
|
|
if (event.key === 'z' &&
|
|
event.ctrlKey &&
|
|
historyCurrentStep > 0) {
|
|
setHistoryCurrentStep(historyCurrentStep - 1);
|
|
} else if (event.key === 'y' &&
|
|
event.ctrlKey &&
|
|
historyCurrentStep < history.length - 1) {
|
|
setHistoryCurrentStep(historyCurrentStep + 1);
|
|
}
|
|
}
|