toosoon-events
Version:
Project providing services implemented as singleton class instances
51 lines (50 loc) • 1.41 kB
JavaScript
import { EventsManager } from './index';
/**
* Utility class for creating keyboard events listeners
*
* @class KeyboardManager
* @extends EventsManager<KeyboardEventKey, KeyboardListener>
*/
class KeyboardManager extends EventsManager {
listeners = {
down: [],
up: [],
press: []
};
bind(eventKey) {
switch (eventKey) {
case 'down':
window.addEventListener('keydown', this._onKeyDown);
break;
case 'up':
window.addEventListener('keyup', this._onKeyUp);
break;
case 'press':
window.addEventListener('keypress', this._onKeyPress);
break;
}
}
unbind(eventKey) {
switch (eventKey) {
case 'down':
window.removeEventListener('keydown', this._onKeyDown);
break;
case 'up':
window.removeEventListener('keyup', this._onKeyUp);
break;
case 'press':
window.removeEventListener('keypress', this._onKeyPress);
break;
}
}
_onKeyDown = (event) => {
this.emit('down', event);
};
_onKeyUp = (event) => {
this.emit('up', event);
};
_onKeyPress = (event) => {
this.emit('press', event);
};
}
export default new KeyboardManager();