/* YUI 3.14.1 (build 63049cb) Copyright 2013 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ if (typeof __coverage__ === 'undefined') { __coverage__ = {}; } if (!__coverage__['build/event-key/event-key.js']) { __coverage__['build/event-key/event-key.js'] = {"path":"build/event-key/event-key.js","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0,0,0,0,0,0,0,0,0,0,0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0},"fnMap":{"1":{"name":"(anonymous_1)","line":1,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}}},"2":{"name":"(anonymous_2)","line":29,"loc":{"start":{"line":29,"column":21},"end":{"line":29,"column":37}}},"3":{"name":"(anonymous_3)","line":99,"loc":{"start":{"line":99,"column":12},"end":{"line":99,"column":51}}},"4":{"name":"(anonymous_4)","line":111,"loc":{"start":{"line":111,"column":45},"end":{"line":111,"column":58}}},"5":{"name":"(anonymous_5)","line":125,"loc":{"start":{"line":125,"column":16},"end":{"line":125,"column":47}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":171,"column":48}},"2":{"start":{"line":9,"column":0},"end":{"line":128,"column":6}},"3":{"start":{"line":30,"column":12},"end":{"line":39,"column":31}},"4":{"start":{"line":41,"column":12},"end":{"line":90,"column":13}},"5":{"start":{"line":42,"column":16},"end":{"line":42,"column":39}},"6":{"start":{"line":44,"column":16},"end":{"line":44,"column":33}},"7":{"start":{"line":47,"column":16},"end":{"line":89,"column":17}},"8":{"start":{"line":48,"column":20},"end":{"line":48,"column":40}},"9":{"start":{"line":51,"column":20},"end":{"line":53,"column":21}},"10":{"start":{"line":52,"column":24},"end":{"line":52,"column":33}},"11":{"start":{"line":56,"column":20},"end":{"line":88,"column":21}},"12":{"start":{"line":57,"column":24},"end":{"line":57,"column":48}},"13":{"start":{"line":59,"column":24},"end":{"line":59,"column":47}},"14":{"start":{"line":61,"column":24},"end":{"line":87,"column":25}},"15":{"start":{"line":62,"column":28},"end":{"line":62,"column":65}},"16":{"start":{"line":64,"column":28},"end":{"line":66,"column":29}},"17":{"start":{"line":65,"column":32},"end":{"line":65,"column":53}},"18":{"start":{"line":71,"column":28},"end":{"line":71,"column":48}},"19":{"start":{"line":72,"column":28},"end":{"line":72,"column":52}},"20":{"start":{"line":74,"column":28},"end":{"line":76,"column":29}},"21":{"start":{"line":75,"column":32},"end":{"line":75,"column":41}},"22":{"start":{"line":82,"column":28},"end":{"line":86,"column":41}},"23":{"start":{"line":92,"column":12},"end":{"line":94,"column":13}},"24":{"start":{"line":93,"column":16},"end":{"line":93,"column":38}},"25":{"start":{"line":96,"column":12},"end":{"line":96,"column":26}},"26":{"start":{"line":100,"column":12},"end":{"line":103,"column":54}},"27":{"start":{"line":111,"column":12},"end":{"line":122,"column":23}},"28":{"start":{"line":112,"column":16},"end":{"line":112,"column":59}},"29":{"start":{"line":114,"column":16},"end":{"line":121,"column":17}},"30":{"start":{"line":120,"column":20},"end":{"line":120,"column":37}},"31":{"start":{"line":126,"column":12},"end":{"line":126,"column":33}},"32":{"start":{"line":130,"column":0},"end":{"line":130,"column":32}},"33":{"start":{"line":131,"column":0},"end":{"line":131,"column":42}},"34":{"start":{"line":168,"column":0},"end":{"line":168,"column":38}}},"branchMap":{"1":{"line":31,"type":"binary-expr","locations":[{"start":{"line":31,"column":36},"end":{"line":31,"column":78}},{"start":{"line":31,"column":82},"end":{"line":31,"column":84}}]},"2":{"line":33,"type":"cond-expr","locations":[{"start":{"line":33,"column":52},"end":{"line":33,"column":61}},{"start":{"line":33,"column":64},"end":{"line":33,"column":68}}]},"3":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":12},"end":{"line":41,"column":12}},{"start":{"line":41,"column":12},"end":{"line":41,"column":12}}]},"4":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":20},"end":{"line":51,"column":20}},{"start":{"line":51,"column":20},"end":{"line":51,"column":20}}]},"5":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":20},"end":{"line":56,"column":20}},{"start":{"line":56,"column":20},"end":{"line":56,"column":20}}]},"6":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":24},"end":{"line":61,"column":24}},{"start":{"line":61,"column":24},"end":{"line":61,"column":24}}]},"7":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":28},"end":{"line":64,"column":28}},{"start":{"line":64,"column":28},"end":{"line":64,"column":28}}]},"8":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":28},"end":{"line":74,"column":28}},{"start":{"line":74,"column":28},"end":{"line":74,"column":28}}]},"9":{"line":83,"type":"cond-expr","locations":[{"start":{"line":85,"column":36},"end":{"line":85,"column":69}},{"start":{"line":86,"column":36},"end":{"line":86,"column":40}}]},"10":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":12},"end":{"line":92,"column":12}},{"start":{"line":92,"column":12},"end":{"line":92,"column":12}}]},"11":{"line":103,"type":"cond-expr","locations":[{"start":{"line":103,"column":36},"end":{"line":103,"column":46}},{"start":{"line":103,"column":49},"end":{"line":103,"column":53}}]},"12":{"line":112,"type":"cond-expr","locations":[{"start":{"line":112,"column":33},"end":{"line":112,"column":46}},{"start":{"line":112,"column":49},"end":{"line":112,"column":58}}]},"13":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":16},"end":{"line":114,"column":16}},{"start":{"line":114,"column":16},"end":{"line":114,"column":16}}]},"14":{"line":114,"type":"binary-expr","locations":[{"start":{"line":114,"column":20},"end":{"line":114,"column":23}},{"start":{"line":115,"column":21},"end":{"line":115,"column":30}},{"start":{"line":115,"column":37},"end":{"line":115,"column":45}},{"start":{"line":115,"column":51},"end":{"line":115,"column":59}},{"start":{"line":116,"column":21},"end":{"line":116,"column":31}},{"start":{"line":116,"column":37},"end":{"line":116,"column":46}},{"start":{"line":116,"column":51},"end":{"line":116,"column":60}},{"start":{"line":117,"column":21},"end":{"line":117,"column":31}},{"start":{"line":117,"column":37},"end":{"line":117,"column":46}},{"start":{"line":117,"column":51},"end":{"line":117,"column":60}},{"start":{"line":118,"column":21},"end":{"line":118,"column":32}},{"start":{"line":118,"column":37},"end":{"line":118,"column":47}},{"start":{"line":118,"column":51},"end":{"line":118,"column":61}}]}},"code":["(function () { YUI.add('event-key', function (Y, NAME) {","","/**"," * Functionality to listen for one or more specific key combinations."," * @module event"," * @submodule event-key"," */","","var ALT = \"+alt\","," CTRL = \"+ctrl\","," META = \"+meta\","," SHIFT = \"+shift\",",""," trim = Y.Lang.trim,",""," eventDef = {"," KEY_MAP: {"," enter : 13,"," esc : 27,"," backspace: 8,"," tab : 9,"," pageup : 33,"," pagedown : 34"," },",""," _typeRE: /^(up|down|press):/,"," _keysRE: /^(?:up|down|press):|\\+(alt|ctrl|meta|shift)/g,",""," processArgs: function (args) {"," var spec = args.splice(3,1)[0],"," mods = Y.Array.hash(spec.match(/\\+(?:alt|ctrl|meta|shift)\\b/g) || []),"," config = {"," type: this._typeRE.test(spec) ? RegExp.$1 : null,"," mods: mods,"," keys: null"," },"," // strip type and modifiers from spec, leaving only keyCodes"," bits = spec.replace(this._keysRE, ''),"," chr, uc, lc, i;",""," if (bits) {"," bits = bits.split(',');",""," config.keys = {};",""," // FIXME: need to support '65,esc' => keypress, keydown"," for (i = bits.length - 1; i >= 0; --i) {"," chr = trim(bits[i]);",""," // catch sloppy filters, trailing commas, etc 'a,,'"," if (!chr) {"," continue;"," }",""," // non-numerics are single characters or key names"," if (+chr == chr) {"," config.keys[chr] = mods;"," } else {"," lc = chr.toLowerCase();",""," if (this.KEY_MAP[lc]) {"," config.keys[this.KEY_MAP[lc]] = mods;"," // FIXME: '65,enter' defaults keydown for both"," if (!config.type) {"," config.type = \"down\"; // safest"," }"," } else {"," // FIXME: Character mapping only works for keypress"," // events. Otherwise, it uses String.fromCharCode()"," // from the keyCode, which is wrong."," chr = chr.charAt(0);"," uc = chr.toUpperCase();",""," if (mods[\"+shift\"]) {"," chr = uc;"," }",""," // FIXME: stupid assumption that"," // the keycode of the lower case == the"," // charCode of the upper case"," // a (key:65,char:97), A (key:65,char:65)"," config.keys[chr.charCodeAt(0)] ="," (chr === uc) ?"," // upper case chars get +shift free"," Y.merge(mods, { \"+shift\": true }) :"," mods;"," }"," }"," }"," }",""," if (!config.type) {"," config.type = \"press\";"," }",""," return config;"," },",""," on: function (node, sub, notifier, filter) {"," var spec = sub._extra,"," type = \"key\" + spec.type,"," keys = spec.keys,"," method = (filter) ? \"delegate\" : \"on\";",""," // Note: without specifying any keyCodes, this becomes a"," // horribly inefficient alias for 'keydown' (et al), but I"," // can't abort this subscription for a simple"," // Y.on('keypress', ...);"," // Please use keyCodes or just subscribe directly to keydown,"," // keyup, or keypress"," sub._detach = node[method](type, function (e) {"," var key = keys ? keys[e.which] : spec.mods;",""," if (key &&"," (!key[ALT] || (key[ALT] && e.altKey)) &&"," (!key[CTRL] || (key[CTRL] && e.ctrlKey)) &&"," (!key[META] || (key[META] && e.metaKey)) &&"," (!key[SHIFT] || (key[SHIFT] && e.shiftKey)))"," {"," notifier.fire(e);"," }"," }, filter);"," },",""," detach: function (node, sub, notifier) {"," sub._detach.detach();"," }"," };","","eventDef.delegate = eventDef.on;","eventDef.detachDelegate = eventDef.detach;","","/**"," *
Add a key listener. The listener will only be notified if the"," * keystroke detected meets the supplied specification. The"," * specification is a string that is defined as:
"," *"," *[{type}:]{code}[,{code}]*
\"down\", \"up\", or \"press\"
{keyCode|character|keyName}[+{modifier}]*
\"shift\", \"ctrl\", \"alt\", or \"meta\"
\"enter\", \"backspace\", \"esc\", \"tab\", \"pageup\", or \"pagedown\"
Examples:
"," *Y.on(\"key\", callback, \"press:12,65+shift+ctrl\", \"#my-input\");
Y.delegate(\"key\", preventSubmit, \"#forms\", \"enter\", \"input[type=text]\");
Y.one(\"doc\").on(\"key\", viNav, \"j,k,l,;\");