Clean up keyboard handle code.

This commit is contained in:
Paulo Gustavo Veiga
2022-04-05 14:09:12 -03:00
parent 817215514b
commit f13a7b514d
4 changed files with 586 additions and 785 deletions

View File

@ -28,6 +28,8 @@ class DesignerKeyboard extends Keyboard {
static _disabled: boolean;
private static inputExcludeKeys = ['Escape', 'F1', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'];
constructor(designer: Designer) {
super();
$assert(designer, 'designer can not be null');
@ -268,18 +270,13 @@ class DesignerKeyboard extends Keyboard {
event.stopPropagation();
},
);
const excludes = ['Escape', 'F1', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'];
$(document).on('keypress', (event) => {
if (DesignerKeyboard.isDisabled()) {
if (DesignerKeyboard.isDisabled() || DesignerKeyboard.inputExcludeKeys.includes(event.code)) {
return;
}
// Firefox doesn't skip special keys for keypress event...
if (excludes.includes(event.code)) {
return;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
if (['Enter', 'Capslock'].indexOf(event.code) === -1) {
if (['Enter', 'CapsLock'].includes(event.code)) {
const nodes = designer.getModel().filterSelectedTopics();
if (nodes.length > 0) {
// If a modifier is press, the key selected must be ignored.
@ -293,7 +290,7 @@ class DesignerKeyboard extends Keyboard {
});
}
private _goToBrother(designer: Designer, node: Topic, direction) {
private _goToBrother(designer: Designer, node: Topic, direction: 'DOWN' | 'UP' | 'LEFT' | 'RIGHT') {
const parent = node.getParent();
if (parent) {
const brothers = parent.getChildren();
@ -406,64 +403,6 @@ class DesignerKeyboard extends Keyboard {
return this._disabled;
};
static specialKeys = {
8: 'backspace',
9: 'tab',
10: 'return',
13: 'enter',
16: 'shift',
17: 'ctrl',
18: 'alt',
19: 'pause',
20: 'capslock',
27: 'esc',
32: 'space',
33: 'pageup',
34: 'pagedown',
35: 'end',
36: 'home',
37: 'left',
38: 'up',
39: 'right',
40: 'down',
45: 'insert',
46: 'del',
96: '0',
97: '1',
98: '2',
99: '3',
100: '4',
101: '5',
102: '6',
103: '7',
104: '8',
105: '9',
106: '*',
107: '+',
109: '-',
110: '.',
111: '/',
112: 'f1',
113: 'f2',
114: 'f3',
115: 'f4',
116: 'f5',
117: 'f6',
118: 'f7',
119: 'f8',
120: 'f9',
121: 'f10',
122: 'f11',
123: 'f12',
144: 'numlock',
145: 'scroll',
186: ';',
191: '/',
220: '\\',
222: "'",
224: 'meta',
};
static getInstance() {
return this._instance;
}

View File

@ -18,13 +18,10 @@
import { $defined } from '@wisemapping/core-js';
import $ from 'jquery';
import initHotKeyPluggin from '../../../../libraries/jquery.hotkeys';
import Events from './Events';
import ActionDispatcher from './ActionDispatcher';
import Topic from './Topic';
initHotKeyPluggin($);
class MultilineTextEditor extends Events {
private _topic: Topic;
@ -61,12 +58,11 @@ class MultilineTextEditor extends Events {
private _registerEvents(containerElem: JQuery) {
const textareaElem = this._getTextareaElem();
textareaElem.on('keydown', (event) => {
const j: any = $;
switch (j.hotkeys.specialKeys[event.keyCode]) {
case 'esc':
switch (event.code) {
case 'Escape':
this.close(false);
break;
case 'enter': {
case 'Enter': {
if (event.metaKey || event.ctrlKey) {
// Add return ...
const text = this._getTextAreaText();