Guest User

Untitled

a guest
Dec 6th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. 'use strict';
  2.  
  3. var KEYS = {
  4. enter: 13,
  5. left: 37,
  6. right: 39,
  7. escape: 27,
  8. backspace: 8,
  9. comma: 188,
  10. shift: 16,
  11. control: 17,
  12. command: 91
  13. };
  14.  
  15. var pressedKeys = {};
  16.  
  17. var onKeyDown = function(event) {
  18. pressedKeys[event.which] = true;
  19. };
  20.  
  21. var onKeyUp = function(event) {
  22. pressedKeys[event.which] = null;
  23. };
  24.  
  25. var KeyboardShortcutsMixin = {
  26. onKeyboardShortcut: function(event, shortcuts) {
  27. if (typeof shortcuts !== 'function') {
  28. shortcuts = this.getKeyboardShortcuts();
  29. }
  30.  
  31. return shortcuts.reduce(function(result, handler, key) {
  32. var keyCode = KEYS[key] || key;
  33.  
  34. if (keyCode === event.keyCode) {
  35. if (handler(event) === false) {
  36. result = false;
  37. }
  38. }
  39.  
  40. return result;
  41. }, true);
  42. },
  43.  
  44. isKeyPressed: function(key) {
  45. var keyCode = key in KEYS ? KEYS[key] : key;
  46.  
  47. return pressedKeys[keyCode];
  48. },
  49.  
  50. componentDidMount: function() {
  51. document.addEventListener('keyup', onKeyUp);
  52. document.addEventListener('keydown', onKeyDown);
  53. },
  54.  
  55. componentWillUnmount: function() {
  56. document.removeEventListener('keyup', onKeyUp);
  57. document.removeEventListener('keydown', onKeyDown);
  58. }
  59. };
  60.  
  61. module.exports = KeyboardShortcutsMixin;
Add Comment
Please, Sign In to add comment