iggins
Version:
Irken plugin for listening for key combinations
41 lines (28 loc) • 730 B
JavaScript
;
var _ = require('lodash');
var predicates = require('./predicates');
function iggins(app, opts, done) {
var handlers = [];
function keypress(predicate, handler) {
var keyAction = {
predicate: predicate,
handler: handler
};
handlers.push(keyAction);
return _.partial(_.remove, handlers, keyAction);
}
function match(evt) {
_.forEach(handlers, function (handlerObject) {
if (handlerObject.predicate(evt)) {
handlerObject.handler(evt);
}
});
}
_.assign(keypress, predicates);
app.expose('keypress', keypress);
if (typeof window !== 'undefined') {
window.addEventListener('keydown', match);
}
done();
}
module.exports = iggins;