feat: add keyboard event for undo

This commit is contained in:
chenshenhai 2021-09-11 16:20:21 +08:00
parent 58bb51ad32
commit 150a0759aa
3 changed files with 10 additions and 2 deletions

View file

@ -11,7 +11,7 @@ import {
import { redo, undo } from './mixins/record';
import { exportDataURL } from './mixins/file';
import { copyElements, pasteElements, cutElements, deleteElements,
keyArrowUp, keyArrowDown, keyArrowLeft, keyArrowRight,
keyArrowUp, keyArrowDown, keyArrowLeft, keyArrowRight, keyUndo,
} from './mixins/keyboard';
class iDraw extends Core {
@ -68,7 +68,8 @@ class iDraw extends Core {
.on('keyboardArrowUp', () => keyArrowUp(this))
.on('keyboardArrowDown', () => keyArrowDown(this))
.on('keyboardArrowLeft', () => keyArrowLeft(this))
.on('keyboardArrowRight', () => keyArrowRight(this));
.on('keyboardArrowRight', () => keyArrowRight(this))
.on('keyboardUndo', () => keyUndo(this));
}
this[_hasInited] = true;
}

View file

@ -9,6 +9,7 @@ export type TypeKeyboardEventArgMap = {
'keyboardArrowLeft': void;
'keyboardArrowUp': void;
'keyboardArrowDown': void;
'keyboardUndo': void;
}
export interface TypeKeyboardEvent {
@ -35,6 +36,8 @@ export class KeyboardWatcher implements TypeKeyboardEvent {
this.trigger('keyboardPaste', undefined);
} else if ((e.metaKey === true || e.ctrlKey === true) && e.key === 'x') {
this.trigger('keyboardCut', undefined);
} else if ((e.metaKey === true || e.ctrlKey === true) && e.key === 'z') {
this.trigger('keyboardUndo', undefined);
} else if (e.key === 'Backspace') {
this.trigger('keyboardDelete', undefined);
} else if (e.key === 'ArrowUp') {

View file

@ -99,4 +99,8 @@ export function keyArrowRight(idraw: iDraw) {
const { scrollLeft } = idraw.getScreenTransform();
idraw.scrollLeft(scrollLeft + keyArrowMoveDistance);
}
}
export function keyUndo(idraw: iDraw) {
idraw.undo();
}