| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | // XXX There is no reason to define these shortcuts globally, they should be// attached to a template (most of them will go in the `board` template).Mousetrap.bind('?', () => {  FlowRouter.go('shortcuts');});Mousetrap.bind('w', () => {  Sidebar.toggle();});Mousetrap.bind('q', () => {  const currentBoardId = Session.get('currentBoard');  const currentUserId = Meteor.userId();  if (currentBoardId && currentUserId) {    Filter.members.toggle(currentUserId);  }});Mousetrap.bind('x', () => {  if (Filter.isActive()) {    Filter.reset();  }});Mousetrap.bind('f', () => {  if (Sidebar.isOpen() && Sidebar.getView() === 'filter') {    Sidebar.toggle();  } else {    Sidebar.setView('filter');  }});Mousetrap.bind(['down', 'up'], (evt, key) => {  if (!Session.get('currentCard')) {    return;  }  const nextFunc = (key === 'down' ? 'next' : 'prev');  const nextCard = $('.js-minicard.is-selected')[nextFunc]('.js-minicard').get(0);  if (nextCard) {    const nextCardId = Blaze.getData(nextCard)._id;    Utils.goCardId(nextCardId);  }});// XXX This shortcut should also work when hovering over a card in board viewMousetrap.bind('space', (evt) => {  if (!Session.get('currentCard')) {    return;  }  const currentUserId = Meteor.userId();  if (currentUserId === null) {    return;  }  if (Meteor.user().isBoardMember()) {    const card = Cards.findOne(Session.get('currentCard'));    card.toggleMember(currentUserId);    // We should prevent scrolling in card when spacebar is clicked    // This should do it according to Mousetrap docs, but it doesn't    evt.preventDefault();  }});Template.keyboardShortcuts.helpers({  mapping: [{    keys: ['W'],    action: 'shortcut-toggle-sidebar',  }, {    keys: ['Q'],    action: 'shortcut-filter-my-cards',  }, {    keys: ['F'],    action: 'shortcut-toggle-filterbar',  }, {    keys: ['X'],    action: 'shortcut-clear-filters',  }, {    keys: ['?'],    action: 'shortcut-show-shortcuts',  }, {    keys: ['ESC'],    action: 'shortcut-close-dialog',  }, {    keys: ['@'],    action: 'shortcut-autocomplete-members',  }, {    keys: [':'],    action: 'shortcut-autocomplete-emojies',  }, {    keys: ['SPACE'],    action: 'shortcut-assign-self',  }],});
 |