keys.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. export const isDarwin = /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);
  2. export const CODES = {
  3. EQUAL: "Equal",
  4. MINUS: "Minus",
  5. NUM_ADD: "NumpadAdd",
  6. NUM_SUBTRACT: "NumpadSubtract",
  7. NUM_ZERO: "Numpad0",
  8. BRACKET_RIGHT: "BracketRight",
  9. BRACKET_LEFT: "BracketLeft",
  10. ONE: "Digit1",
  11. NINE: "Digit9",
  12. QUOTE: "Quote",
  13. ZERO: "Digit0",
  14. C: "KeyC",
  15. G: "KeyG",
  16. F: "KeyF",
  17. H: "KeyH",
  18. V: "KeyV",
  19. Z: "KeyZ",
  20. } as const;
  21. export const KEYS = {
  22. ARROW_DOWN: "ArrowDown",
  23. ARROW_LEFT: "ArrowLeft",
  24. ARROW_RIGHT: "ArrowRight",
  25. ARROW_UP: "ArrowUp",
  26. BACKSPACE: "Backspace",
  27. CTRL_OR_CMD: isDarwin ? "metaKey" : "ctrlKey",
  28. DELETE: "Delete",
  29. ENTER: "Enter",
  30. ESCAPE: "Escape",
  31. QUESTION_MARK: "?",
  32. SPACE: " ",
  33. TAB: "Tab",
  34. A: "a",
  35. D: "d",
  36. E: "e",
  37. L: "l",
  38. P: "p",
  39. Q: "q",
  40. R: "r",
  41. S: "s",
  42. T: "t",
  43. V: "v",
  44. X: "x",
  45. Z: "z",
  46. } as const;
  47. export type Key = keyof typeof KEYS;
  48. export const isArrowKey = (key: string) =>
  49. key === KEYS.ARROW_LEFT ||
  50. key === KEYS.ARROW_RIGHT ||
  51. key === KEYS.ARROW_DOWN ||
  52. key === KEYS.ARROW_UP;
  53. export const getResizeCenterPointKey = (event: MouseEvent | KeyboardEvent) =>
  54. event.altKey;
  55. export const getResizeWithSidesSameLengthKey = (event: MouseEvent) =>
  56. event.shiftKey;
  57. export const getRotateWithDiscreteAngleKey = (event: MouseEvent) =>
  58. event.shiftKey;