aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mousetrap/plugins/bind-dictionary
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mousetrap/plugins/bind-dictionary')
-rw-r--r--lib/mousetrap/plugins/bind-dictionary/README.md16
-rw-r--r--lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.js39
-rw-r--r--lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.min.js1
3 files changed, 56 insertions, 0 deletions
diff --git a/lib/mousetrap/plugins/bind-dictionary/README.md b/lib/mousetrap/plugins/bind-dictionary/README.md
new file mode 100644
index 0000000..6f956b6
--- /dev/null
+++ b/lib/mousetrap/plugins/bind-dictionary/README.md
@@ -0,0 +1,16 @@
+# Bind Dictionary
+
+This extension overwrites the default bind behavior and allows you to bind multiple combinations in a single bind call.
+
+Usage looks like:
+
+```javascript
+Mousetrap.bind({
+ 'a': function() { console.log('a'); },
+ 'b': function() { console.log('b'); }
+});
+```
+
+You can optionally pass in ``keypress``, ``keydown`` or ``keyup`` as a second argument.
+
+Other bind calls work the same way as they do by default.
diff --git a/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.js b/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.js
new file mode 100644
index 0000000..523fc86
--- /dev/null
+++ b/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.js
@@ -0,0 +1,39 @@
+/**
+ * Overwrites default Mousetrap.bind method to optionally accept
+ * an object to bind multiple key events in a single call
+ *
+ * You can pass it in like:
+ *
+ * Mousetrap.bind({
+ * 'a': function() { console.log('a'); },
+ * 'b': function() { console.log('b'); }
+ * });
+ *
+ * And can optionally pass in 'keypress', 'keydown', or 'keyup'
+ * as a second argument
+ *
+ */
+/* global Mousetrap:true */
+(function(Mousetrap) {
+ var _oldBind = Mousetrap.prototype.bind;
+ var args;
+
+ Mousetrap.prototype.bind = function() {
+ var self = this;
+ args = arguments;
+
+ // normal call
+ if (typeof args[0] == 'string' || args[0] instanceof Array) {
+ return _oldBind.call(self, args[0], args[1], args[2]);
+ }
+
+ // object passed in
+ for (var key in args[0]) {
+ if (args[0].hasOwnProperty(key)) {
+ _oldBind.call(self, key, args[0][key], args[1]);
+ }
+ }
+ };
+
+ Mousetrap.init();
+}) (Mousetrap);
diff --git a/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.min.js b/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.min.js
new file mode 100644
index 0000000..bf9d8d0
--- /dev/null
+++ b/lib/mousetrap/plugins/bind-dictionary/mousetrap-bind-dictionary.min.js
@@ -0,0 +1 @@
+(function(b){var c=b.prototype.bind,a;b.prototype.bind=function(){a=arguments;if("string"==typeof a[0]||a[0]instanceof Array)return c.call(this,a[0],a[1],a[2]);for(var b in a[0])a[0].hasOwnProperty(b)&&c.call(this,b,a[0][b],a[1])};b.init()})(Mousetrap);