Browse Source

refactor(js): simplify a bit `keyboard_handler.js`

- Mark two methods as static
- Use a `switch-case` construct instead of an Object and a loop.
Julien Voisin 1 year ago
parent
commit
6af0cd5b5c
1 changed files with 11 additions and 18 deletions
  1. 11 18
      internal/ui/static/js/keyboard_handler.js

+ 11 - 18
internal/ui/static/js/keyboard_handler.js

@@ -12,8 +12,8 @@ class KeyboardHandler {
 
     listen() {
         document.onkeydown = (event) => {
-            const key = this.getKey(event);
-            if (this.isEventIgnored(event, key) || this.isModifierKeyDown(event)) {
+            const key = KeyboardHandler.getKey(event);
+            if (this.isEventIgnored(event, key) || KeyboardHandler.isModifierKeyDown(event)) {
                 return;
             }
 
@@ -51,25 +51,18 @@ class KeyboardHandler {
             (this.queue.length < 1 && !this.triggers.has(key));
     }
 
-    isModifierKeyDown(event) {
+    static isModifierKeyDown(event) {
         return event.getModifierState("Control") || event.getModifierState("Alt") || event.getModifierState("Meta");
     }
 
-    getKey(event) {
-        const mapping = {
-            'Esc': 'Escape',
-            'Up': 'ArrowUp',
-            'Down': 'ArrowDown',
-            'Left': 'ArrowLeft',
-            'Right': 'ArrowRight'
-        };
-
-        for (const key in mapping) {
-            if (mapping.hasOwnProperty(key) && key === event.key) {
-                return mapping[key];
-            }
+    static getKey(event) {
+        switch (event.key) {
+        case 'Esc': return 'Escape';
+        case 'Up': return 'ArrowUp';
+        case 'Down': return 'ArrowDown';
+        case 'Left': return 'ArrowLeft';
+        case 'Right': return 'ArrowRight';
+        default: return event.key;
         }
-
-        return event.key;
     }
 }