Merge branch 'hotfix/21.56.9' into master
[gitter.git] / public / js / views / keyboard-events-mixin.js
blob4188f98f55fee7c59c5dece170c034d2a60c42d9
1 'use strict';
2 var _ = require('lodash');
3 var appEvents = require('../utils/appevents');
4 require('../components/keyboard-events');
6 module.exports = (function() {
7   // Bind `keyboardEvents` names to functions or method names, as you would with Backbones' `events`
8   // See/change components/keyboard-events for events listeners
10   return {
11     initialize: function() {
12       var events;
13       if (!(events = _.result(this, 'keyboardEvents'))) return;
15       var self = this;
16       var eventSplitter = /\s+/;
18       var _listen = function(key, method) {
19         if (!_.isFunction(method)) method = self[method];
20         if (method) {
21           self.listenTo(appEvents, 'keyboard.' + key, method, self);
22         }
23       };
25       _.each(events, function(method, key) {
26         if (eventSplitter.test(key)) {
27           var keys = key.split(eventSplitter);
28           _.each(keys, function(k) {
29             _listen(k, method);
30           });
31         } else {
32           _listen(key, method);
33         }
34       });
35     }
36   };
37 })();