diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-02-26 19:48:30 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-02-26 19:48:30 -0500 | 
| commit | 359eabb26eeb7e21fc866a94cbcc4afa788e93fe (patch) | |
| tree | 556387d044aab9a2dd7bd576ca4bd43664188926 /ext/mixed/js | |
| parent | 13874e962bbc1964e02517aa098961e14ddc954a (diff) | |
Move event handler definitions
Diffstat (limited to 'ext/mixed/js')
| -rw-r--r-- | ext/mixed/js/display.js | 225 | 
1 files changed, 106 insertions, 119 deletions
| diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 8a68b43f..631f9e34 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -45,6 +45,110 @@ class Display {          this.displayGenerator = new DisplayGenerator();          this.windowScroll = new WindowScroll(); +        this._onKeyDownHandlers = new Map([ +            ['Escape', () => { +                this.onSearchClear(); +                return true; +            }], +            ['PageUp', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(this.index - 3, null, true); +                    return true; +                } +                return false; +            }], +            ['PageDown', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(this.index + 3, null, true); +                    return true; +                } +                return false; +            }], +            ['End', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(this.definitions.length - 1, null, true); +                    return true; +                } +                return false; +            }], +            ['Home', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(0, null, true); +                    return true; +                } +                return false; +            }], +            ['ArrowUp', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(this.index - 1, null, true); +                    return true; +                } +                return false; +            }], +            ['ArrowDown', (e) => { +                if (e.altKey) { +                    this.entryScrollIntoView(this.index + 1, null, true); +                    return true; +                } +                return false; +            }], +            ['B', (e) => { +                if (e.altKey) { +                    this.sourceTermView(); +                    return true; +                } +                return false; +            }], +            ['F', (e) => { +                if (e.altKey) { +                    this.nextTermView(); +                    return true; +                } +                return false; +            }], +            ['E', (e) => { +                if (e.altKey) { +                    this.noteTryAdd('term-kanji'); +                    return true; +                } +                return false; +            }], +            ['K', (e) => { +                if (e.altKey) { +                    this.noteTryAdd('kanji'); +                    return true; +                } +                return false; +            }], +            ['R', (e) => { +                if (e.altKey) { +                    this.noteTryAdd('term-kana'); +                    return true; +                } +                return false; +            }], +            ['P', (e) => { +                if (e.altKey) { +                    const index = this.index; +                    if (index < 0 || index >= this.definitions.length) { return; } + +                    const entry = this.getEntry(index); +                    if (entry !== null && entry.dataset.type === 'term') { +                        this.audioPlay(this.definitions[index], this.firstExpressionIndex, index); +                    } +                    return true; +                } +                return false; +            }], +            ['V', (e) => { +                if (e.altKey) { +                    this.noteTryView(); +                    return true; +                } +                return false; +            }] +        ]); +          this.setInteractive(true);      } @@ -215,9 +319,9 @@ class Display {      onKeyDown(e) {          const key = Display.getKeyFromEvent(e); -        const handler = Display._onKeyDownHandlers.get(key); +        const handler = this._onKeyDownHandlers.get(key);          if (typeof handler === 'function') { -            if (handler(this, e)) { +            if (handler(e)) {                  e.preventDefault();                  return true;              } @@ -814,120 +918,3 @@ class Display {          return (typeof key === 'string' ? (key.length === 1 ? key.toUpperCase() : key) : '');      }  } - -Display._onKeyDownHandlers = new Map([ -    ['Escape', (self) => { -        self.onSearchClear(); -        return true; -    }], - -    ['PageUp', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(self.index - 3, null, true); -            return true; -        } -        return false; -    }], - -    ['PageDown', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(self.index + 3, null, true); -            return true; -        } -        return false; -    }], - -    ['End', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(self.definitions.length - 1, null, true); -            return true; -        } -        return false; -    }], - -    ['Home', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(0, null, true); -            return true; -        } -        return false; -    }], - -    ['ArrowUp', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(self.index - 1, null, true); -            return true; -        } -        return false; -    }], - -    ['ArrowDown', (self, e) => { -        if (e.altKey) { -            self.entryScrollIntoView(self.index + 1, null, true); -            return true; -        } -        return false; -    }], - -    ['B', (self, e) => { -        if (e.altKey) { -            self.sourceTermView(); -            return true; -        } -        return false; -    }], - -    ['F', (self, e) => { -        if (e.altKey) { -            self.nextTermView(); -            return true; -        } -        return false; -    }], - -    ['E', (self, e) => { -        if (e.altKey) { -            self.noteTryAdd('term-kanji'); -            return true; -        } -        return false; -    }], - -    ['K', (self, e) => { -        if (e.altKey) { -            self.noteTryAdd('kanji'); -            return true; -        } -        return false; -    }], - -    ['R', (self, e) => { -        if (e.altKey) { -            self.noteTryAdd('term-kana'); -            return true; -        } -        return false; -    }], - -    ['P', (self, e) => { -        if (e.altKey) { -            const index = self.index; -            if (index < 0 || index >= self.definitions.length) { return; } - -            const entry = self.getEntry(index); -            if (entry !== null && entry.dataset.type === 'term') { -                self.audioPlay(self.definitions[index], self.firstExpressionIndex, index); -            } -            return true; -        } -        return false; -    }], - -    ['V', (self, e) => { -        if (e.altKey) { -            self.noteTryView(); -            return true; -        } -        return false; -    }] -]); |