// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

export const enum ArrowKey {
  UP = 'ArrowUp',
  DOWN = 'ArrowDown',
  LEFT = 'ArrowLeft',
  RIGHT = 'ArrowRight',
}

export const enum PageKey {
  UP = 'PageUp',
  DOWN = 'PageDown',
}

export const ENTER_KEY = 'Enter';
export const ESCAPE_KEY = 'Escape';
export const TAB_KEY = 'Tab';

export const ARROW_KEYS = new Set<ArrowKey>([
  ArrowKey.UP,
  ArrowKey.DOWN,
  ArrowKey.LEFT,
  ArrowKey.RIGHT,
]);

export function keyIsArrowKey(key: string): key is ArrowKey {
  return ARROW_KEYS.has(key as ArrowKey);
}

export function isEscKey(event: {readonly key: string}): boolean {
  return event.key === 'Escape';
}

export function isEnterOrSpaceKey(event: {readonly key: string}): boolean {
  return event.key === 'Enter' || event.key === ' ';
}
