| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 | (function (root, factory) {  if (typeof define === 'function' && define.amd) {    // AMD. Register as an anonymous module.    define('simple-hotkeys', ["jquery",      "simple-module"], function ($, SimpleModule) {      return (root.returnExportsGlobal = factory($, SimpleModule));    });  } else if (typeof exports === 'object') {    // Node. Does not work with strict CommonJS, but    // only CommonJS-like enviroments that support module.exports,    // like Node.    module.exports = factory(require("jquery"),      require("simple-module"));  } else {    root.simple = root.simple || {};    root.simple['hotkeys'] = factory(jQuery,      SimpleModule);  }}(this, function ($, SimpleModule) {var Hotkeys, hotkeys,  __hasProp = {}.hasOwnProperty,  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };Hotkeys = (function(_super) {  __extends(Hotkeys, _super);  function Hotkeys() {    return Hotkeys.__super__.constructor.apply(this, arguments);  }  Hotkeys.count = 0;  Hotkeys.keyNameMap = {    8: "Backspace",    9: "Tab",    13: "Enter",    16: "Shift",    17: "Control",    18: "Alt",    19: "Pause",    20: "CapsLock",    27: "Esc",    32: "Spacebar",    33: "PageUp",    34: "PageDown",    35: "End",    36: "Home",    37: "Left",    38: "Up",    39: "Right",    40: "Down",    45: "Insert",    46: "Del",    91: "Meta",    93: "Meta",    48: "0",    49: "1",    50: "2",    51: "3",    52: "4",    53: "5",    54: "6",    55: "7",    56: "8",    57: "9",    65: "A",    66: "B",    67: "C",    68: "D",    69: "E",    70: "F",    71: "G",    72: "H",    73: "I",    74: "J",    75: "K",    76: "L",    77: "M",    78: "N",    79: "O",    80: "P",    81: "Q",    82: "R",    83: "S",    84: "T",    85: "U",    86: "V",    87: "W",    88: "X",    89: "Y",    90: "Z",    96: "0",    97: "1",    98: "2",    99: "3",    100: "4",    101: "5",    102: "6",    103: "7",    104: "8",    105: "9",    106: "Multiply",    107: "Add",    109: "Subtract",    110: "Decimal",    111: "Divide",    112: "F1",    113: "F2",    114: "F3",    115: "F4",    116: "F5",    117: "F6",    118: "F7",    119: "F8",    120: "F9",    121: "F10",    122: "F11",    123: "F12",    124: "F13",    125: "F14",    126: "F15",    127: "F16",    128: "F17",    129: "F18",    130: "F19",    131: "F20",    132: "F21",    133: "F22",    134: "F23",    135: "F24",    59: ";",    61: "=",    186: ";",    187: "=",    188: ",",    190: ".",    191: "/",    192: "`",    219: "[",    220: "\\",    221: "]",    222: "'"  };  Hotkeys.aliases = {    "escape": "esc",    "delete": "del",    "return": "enter",    "ctrl": "control",    "space": "spacebar",    "ins": "insert",    "cmd": "meta",    "command": "meta",    "wins": "meta",    "windows": "meta"  };  Hotkeys.normalize = function(shortcut) {    var i, key, keyname, keys, _i, _len;    keys = shortcut.toLowerCase().replace(/\s+/gi, "").split("+");    for (i = _i = 0, _len = keys.length; _i < _len; i = ++_i) {      key = keys[i];      keys[i] = this.aliases[key] || key;    }    keyname = keys.pop();    keys.sort().push(keyname);    return keys.join("_");  };  Hotkeys.prototype.opts = {    el: document  };  Hotkeys.prototype._init = function() {    this.id = ++this.constructor.count;    this._map = {};    this._delegate = typeof this.opts.el === "string" ? document : this.opts.el;    return $(this._delegate).on("keydown.simple-hotkeys-" + this.id, this.opts.el, (function(_this) {      return function(e) {        var _ref;        return (_ref = _this._getHander(e)) != null ? _ref.call(_this, e) : void 0;      };    })(this));  };  Hotkeys.prototype._getHander = function(e) {    var keyname, shortcut;    if (!(keyname = this.constructor.keyNameMap[e.which])) {      return;    }    shortcut = "";    if (e.altKey) {      shortcut += "alt_";    }    if (e.ctrlKey) {      shortcut += "control_";    }    if (e.metaKey) {      shortcut += "meta_";    }    if (e.shiftKey) {      shortcut += "shift_";    }    shortcut += keyname.toLowerCase();    return this._map[shortcut];  };  Hotkeys.prototype.respondTo = function(subject) {    if (typeof subject === 'string') {      return this._map[this.constructor.normalize(subject)] != null;    } else {      return this._getHander(subject) != null;    }  };  Hotkeys.prototype.add = function(shortcut, handler) {    this._map[this.constructor.normalize(shortcut)] = handler;    return this;  };  Hotkeys.prototype.remove = function(shortcut) {    delete this._map[this.constructor.normalize(shortcut)];    return this;  };  Hotkeys.prototype.destroy = function() {    $(this._delegate).off(".simple-hotkeys-" + this.id);    this._map = {};    return this;  };  return Hotkeys;})(SimpleModule);hotkeys = function(opts) {  return new Hotkeys(opts);};return hotkeys;}));
 |