You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
4.2 KiB
JavaScript
2 lines
4.2 KiB
JavaScript
/*! hotkeys-js v3.0.1 | MIT (c) 2018 kenny wong <wowohoo@qq.com> | */
|
|
"use strict";var isff="undefined"!=typeof navigator&&0<navigator.userAgent.toLowerCase().indexOf("firefox");function addEvent(e,o,n){e.addEventListener?e.addEventListener(o,n,!1):e.attachEvent&&e.attachEvent("on"+o,function(){n(window.event)})}function getMods(e,o){for(var n=o.slice(0,o.length-1),t=0;t<n.length;t++)n[t]=e[n[t].toLowerCase()];return n}function getKeys(e){var o,n;for(e||(e=""),n=(o=(e=e.replace(/\s/g,"")).split(",")).lastIndexOf("");0<=n;)o[n-1]+=",",o.splice(n,1),n=o.lastIndexOf("");return o}function compareArray(e,o){for(var n=e.length<o.length?o:e,t=e.length<o.length?e:o,r=0;r<n.length;r++)if(-1===t.indexOf(n[r]))return!1;return!0}for(var _keyMap={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,"\u21ea":20,capslock:20,",":188,".":190,"/":191,"`":192,"-":isff?173:189,"=":isff?61:187,";":isff?59:186,"'":222,"[":219,"]":221,"\\":220},_modifier={"\u21e7":16,shift:16,"\u2325":18,alt:18,option:18,"\u2303":17,ctrl:17,control:17,"\u2318":isff?224:91,cmd:isff?224:91,command:isff?224:91},_downKeys=[],modifierMap={16:"shiftKey",18:"altKey",17:"ctrlKey"},_mods={16:!1,18:!1,17:!1},_handlers={},k=1;k<20;k++)_keyMap["f"+k]=111+k;modifierMap[isff?224:91]="metaKey",_mods[isff?224:91]=!1;var _scope="all",code=function(e){return _keyMap[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function setScope(e){_scope=e||"all"}function getScope(){return _scope||"all"}function getPressedKeyCodes(){return _downKeys.slice(0)}function filter(e){var o=(e.target||e.srcElement).tagName;return!("INPUT"===o||"SELECT"===o||"TEXTAREA"===o)}function isPressed(e){return"string"==typeof e&&(e=code(e)),-1!==_downKeys.indexOf(e)}function deleteScope(e,o){var n=void 0,t=void 0;for(var r in e||(e=getScope()),_handlers)for(n=_handlers[r],t=0;t<n.length;)n[t].scope===e?n.splice(t,1):t++;getScope()===e&&setScope(o||"all")}function clearModifier(e){var o=e.keyCode||e.which||e.charCode,n=_downKeys.indexOf(o);if(n<0||_downKeys.splice(n,1),93!==o&&224!==o||(o=91),o in _mods)for(var t in _mods[o]=!1,_modifier)_modifier[t]===o&&(hotkeys[t]=!1)}function unbind(e,o){for(var n=getKeys(e),t=void 0,r=[],s=void 0,d=0;d<n.length;d++){if(1<(t=n[d].split("+")).length&&(r=getMods(_modifier,t)),e="*"===(e=t[t.length-1])?"*":code(e),o||(o=getScope()),!_handlers[e])return;for(var i=0;i<_handlers[e].length;i++)(s=_handlers[e][i]).scope===o&&compareArray(s.mods,r)&&(_handlers[e][i]={})}}function eventHandler(e,o,n){var t=void 0;if(o.scope===n||"all"===o.scope){for(var r in t=0<o.mods.length,_mods)(!_mods[r]&&-1<o.mods.indexOf(+r)||_mods[r]&&-1===o.mods.indexOf(+r))&&(t=!1);(0!==o.mods.length||_mods[16]||_mods[18]||_mods[17]||_mods[91])&&!t&&"*"!==o.shortcut||!1===o.method(e,o)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function dispatch(e){var o,n=e.keyCode||e.which||e.charCode,t=_handlers["*"];if(-1===_downKeys.indexOf(n)&&_downKeys.push(n),93!==n&&224!==n||(n=91),n in _mods){for(var r in _mods[n]=!0,_modifier)_modifier[r]===n&&(hotkeys[r]=!0);if(!t)return}for(var s in _mods)_mods[s]=e[modifierMap[s]];if(hotkeys.filter.call(this,e)){if(o=getScope(),t)for(d=0;d<t.length;d++)t[d].scope===o&&eventHandler(e,t[d],o);if(n in _handlers)for(var d=0;d<_handlers[n].length;d++)eventHandler(e,_handlers[n][d],o)}}function hotkeys(e,o,n){var t=getKeys(e),r=[],s=0;for(void 0===n&&(n=o,o="all");s<t.length;s++)r=[],1<(e=t[s].split("+")).length&&(r=getMods(_modifier,e)),(e="*"===(e=e[e.length-1])?"*":code(e))in _handlers||(_handlers[e]=[]),_handlers[e].push({scope:o,mods:r,shortcut:t[s],method:n,key:t[s]})}"undefined"!=typeof document&&(addEvent(document,"keydown",function(e){dispatch(e)}),addEvent(document,"keyup",function(e){clearModifier(e)}));var _api={setScope:setScope,getScope:getScope,deleteScope:deleteScope,getPressedKeyCodes:getPressedKeyCodes,isPressed:isPressed,filter:filter,unbind:unbind};for(var a in _api)hotkeys[a]=_api[a];if("undefined"!=typeof window){var _hotkeys=window.hotkeys;hotkeys.noConflict=function(e){return e&&window.hotkeys===hotkeys&&(window.hotkeys=_hotkeys),hotkeys},window.hotkeys=hotkeys}module.exports=hotkeys; |