this.hintsShowing = false;
this.hideHints = this.hideHints.bind(this);
+ this.hintAbortController = null;
this.setupListeners();
}
window.addEventListener('keydown', event => {
if (event.key === '?') {
- const action = this.hintsShowing ? this.hideHints : this.showHints;
- action();
+ if (this.hintsShowing) {
+ this.hideHints();
+ } else {
+ this.showHints();
+ }
}
});
}
displayedIds.add(id);
}
- window.addEventListener('scroll', this.hideHints);
- window.addEventListener('focus', this.hideHints);
- window.addEventListener('blur', this.hideHints);
- window.addEventListener('click', this.hideHints);
+ this.hintAbortController = new AbortController();
+ const signal = this.hintAbortController.signal;
+ window.addEventListener('scroll', this.hideHints, {signal});
+ window.addEventListener('focus', this.hideHints, {signal});
+ window.addEventListener('blur', this.hideHints, {signal});
+ window.addEventListener('click', this.hideHints, {signal});
this.hintsShowing = true;
}
hideHints() {
const wrapper = this.container.querySelector('.shortcut-container');
wrapper.remove();
-
- window.removeEventListener('scroll', this.hideHints);
- window.removeEventListener('focus', this.hideHints);
- window.removeEventListener('blur', this.hideHints);
- window.removeEventListener('click', this.hideHints);
-
+ this.hintAbortController?.abort();
this.hintsShowing = false;
}