export class KeyboardManager { constructor(menu) { this.menu = menu; } init() { this.menu .getContainer() .addEventListener('keydown', this.handler.bind(this)); // This trick let's us detect the press of the back or forward buttons to exit out of the menu. window.onpopstate = () => this.menu.clickCancelAction(); } handler(event) { switch (event.key) { case 'ArrowDown': event.preventDefault(); this.menu.focusNext(); break; case 'ArrowUp': event.preventDefault(); this.menu.focusPrevious(); break; case 'Enter': event.preventDefault(); this.menu.clickDefaultAction(); break; case 'Escape': event.preventDefault(); this.menu.clickCancelAction(); break; default: break; } } release() { this.menu .getContainer() .removeEventListener('keydown', this.handler.bind(this)); window.onpopstate = null; } }