keyboardShortcuts.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const shortcuts = {};
  2. let _shortcuts = [];
  3. const lib = {
  4. handleKeyDown(event, keyCode, shift, ctrl, alt) {
  5. _shortcuts.forEach(shortcut => {
  6. if (
  7. shortcut.keyCode === keyCode &&
  8. shortcut.shift === shift &&
  9. shortcut.ctrl === ctrl &&
  10. shortcut.alt === alt
  11. ) {
  12. console.log(
  13. `Executing shortcut ${shortcut.name}. Prevent default: ${shortcut.preventDefault}`
  14. );
  15. if (shortcut.preventDefault === true) event.preventDefault();
  16. shortcut.handler(event);
  17. }
  18. });
  19. },
  20. registerShortcut(name, shortcut) {
  21. shortcuts[name] = shortcut;
  22. shortcuts[name].name = name;
  23. shortcuts[name].alt = shortcuts[name].alt ? shortcuts[name].alt : false;
  24. shortcuts[name].ctrl = shortcuts[name].ctrl
  25. ? shortcuts[name].ctrl
  26. : false;
  27. shortcuts[name].shift = shortcuts[name].shift
  28. ? shortcuts[name].shift
  29. : false;
  30. lib.remakeShortcutsArray();
  31. },
  32. unregisterShortcut: name => {
  33. delete shortcuts[name];
  34. lib.remakeShortcutsArray();
  35. },
  36. remakeShortcutsArray: () => {
  37. _shortcuts = Object.keys(shortcuts).map(key => shortcuts[key]);
  38. }
  39. };
  40. export default lib;