5c68edfcdc905b3d4734ffab12df01486da1e29d0199050eb377dd94a34248548a44c905e9a85d33ea5215fccfe3f071a535bf05dff5558c1412244a3c8c2f 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. 'use strict';
  2. exports.__esModule = true;
  3. exports.KEY_CODES = undefined;
  4. exports.isPrintableChar = isPrintableChar;
  5. exports.isMetaKey = isMetaKey;
  6. exports.isCtrlKey = isCtrlKey;
  7. exports.isKey = isKey;
  8. var _array = require('./array');
  9. var KEY_CODES = exports.KEY_CODES = {
  10. MOUSE_LEFT: 1,
  11. MOUSE_RIGHT: 3,
  12. MOUSE_MIDDLE: 2,
  13. BACKSPACE: 8,
  14. COMMA: 188,
  15. INSERT: 45,
  16. DELETE: 46,
  17. END: 35,
  18. ENTER: 13,
  19. ESCAPE: 27,
  20. CONTROL_LEFT: 91,
  21. COMMAND_LEFT: 17,
  22. COMMAND_RIGHT: 93,
  23. ALT: 18,
  24. HOME: 36,
  25. PAGE_DOWN: 34,
  26. PAGE_UP: 33,
  27. PERIOD: 190,
  28. SPACE: 32,
  29. SHIFT: 16,
  30. CAPS_LOCK: 20,
  31. TAB: 9,
  32. ARROW_RIGHT: 39,
  33. ARROW_LEFT: 37,
  34. ARROW_UP: 38,
  35. ARROW_DOWN: 40,
  36. F1: 112,
  37. F2: 113,
  38. F3: 114,
  39. F4: 115,
  40. F5: 116,
  41. F6: 117,
  42. F7: 118,
  43. F8: 119,
  44. F9: 120,
  45. F10: 121,
  46. F11: 122,
  47. F12: 123,
  48. A: 65,
  49. X: 88,
  50. C: 67,
  51. V: 86
  52. };
  53. /**
  54. * Returns true if keyCode represents a printable character.
  55. *
  56. * @param {Number} keyCode
  57. * @returns {Boolean}
  58. */
  59. function isPrintableChar(keyCode) {
  60. return keyCode == 32 || // space
  61. keyCode >= 48 && keyCode <= 57 || // 0-9
  62. keyCode >= 96 && keyCode <= 111 || // numpad
  63. keyCode >= 186 && keyCode <= 192 || // ;=,-./`
  64. keyCode >= 219 && keyCode <= 222 || // []{}\|"'
  65. keyCode >= 226 || // special chars (229 for Asian chars)
  66. keyCode >= 65 && keyCode <= 90; // a-z
  67. }
  68. /**
  69. * @param {Number} keyCode
  70. * @returns {Boolean}
  71. */
  72. function isMetaKey(keyCode) {
  73. var metaKeys = [KEY_CODES.ARROW_DOWN, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_RIGHT, KEY_CODES.HOME, KEY_CODES.END, KEY_CODES.DELETE, KEY_CODES.BACKSPACE, KEY_CODES.F1, KEY_CODES.F2, KEY_CODES.F3, KEY_CODES.F4, KEY_CODES.F5, KEY_CODES.F6, KEY_CODES.F7, KEY_CODES.F8, KEY_CODES.F9, KEY_CODES.F10, KEY_CODES.F11, KEY_CODES.F12, KEY_CODES.TAB, KEY_CODES.PAGE_DOWN, KEY_CODES.PAGE_UP, KEY_CODES.ENTER, KEY_CODES.ESCAPE, KEY_CODES.SHIFT, KEY_CODES.CAPS_LOCK, KEY_CODES.ALT];
  74. return metaKeys.indexOf(keyCode) !== -1;
  75. }
  76. /**
  77. * @param {Number} keyCode
  78. * @returns {Boolean}
  79. */
  80. function isCtrlKey(keyCode) {
  81. return [KEY_CODES.CONTROL_LEFT, 224, KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT].indexOf(keyCode) !== -1;
  82. }
  83. /**
  84. * @param {Number} keyCode
  85. * @param {String} baseCode
  86. * @returns {Boolean}
  87. */
  88. function isKey(keyCode, baseCode) {
  89. var keys = baseCode.split('|');
  90. var result = false;
  91. (0, _array.arrayEach)(keys, function (key) {
  92. if (keyCode === KEY_CODES[key]) {
  93. result = true;
  94. return false;
  95. }
  96. });
  97. return result;
  98. }