const shortcuts = {}; let _shortcuts = []; const lib = { handleKeyDown(keyCode, shift, ctrl) { _shortcuts.forEach(shortcut => { if ( shortcut.keyCode === keyCode && shortcut.shift === shift && shortcut.ctrl === ctrl ) shortcut.handler(); }); }, registerShortcut(name, shortcut) { shortcuts[name] = shortcut; lib.remakeShortcutsArray(); }, unregisterShortcut: name => { delete shortcuts[name]; lib.remakeShortcutsArray(); }, remakeShortcutsArray: () => { _shortcuts = Object.keys(shortcuts).map(key => shortcuts[key]); } }; export default lib;