UNPKG

iggins

Version:

Irken plugin for listening for key combinations

41 lines (28 loc) 730 B
'use strict'; 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;