keyboardShortcuts.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. lofig.get("shortcutOverrides").then(overrides => {
  31. if (overrides && overrides[name])
  32. shortcuts[name] = Object.assign(
  33. shortcuts[name],
  34. overrides[name]
  35. );
  36. });
  37. lib.remakeShortcutsArray();
  38. },
  39. unregisterShortcut: name => {
  40. delete shortcuts[name];
  41. lib.remakeShortcutsArray();
  42. },
  43. remakeShortcutsArray: () => {
  44. _shortcuts = Object.keys(shortcuts).map(key => shortcuts[key]);
  45. }
  46. };
  47. export default lib;