AlchemyCMS/alchemy_cms

View on GitHub
vendor/javascript/keymaster.min.js

Summary

Maintainability
A
0 mins
Test Coverage
!function(e){var n,t={},o={16:!1,18:!1,17:!1,91:!1},r="all",i={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,command:91},l={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,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220},f=function(e){return l[e]||e.toUpperCase().charCodeAt(0)},c=[];for(n=1;n<20;n++)l["f"+n]=111+n;function u(e,n){for(var t=e.length;t--;)if(e[t]===n)return t;return-1}function a(e,n){if(e.length!=n.length)return!1;for(var t=0;t<e.length;t++)if(e[t]!==n[t])return!1;return!0}var s={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey"};function d(e){for(n in o)o[n]=e[s[n]]}function p(e,n,o){var r,i;r=g(e),void 0===o&&(o=n,n="all");for(var l=0;l<r.length;l++)i=[],(e=r[l].split("+")).length>1&&(i=v(e),e=[e[e.length-1]]),e=e[0],(e=f(e))in t||(t[e]=[]),t[e].push({shortcut:r[l],scope:n,method:o,key:r[l],mods:i})}for(n in i)p[n]=!1;function h(){return r||"all"}function g(e){var n;return""==(n=(e=e.replace(/\s/g,"")).split(","))[n.length-1]&&(n[n.length-2]+=","),n}function v(e){for(var n=e.slice(0,e.length-1),t=0;t<n.length;t++)n[t]=i[n[t]];return n}function y(e,n,t){e.addEventListener?e.addEventListener(n,t,!1):e.attachEvent&&e.attachEvent("on"+n,(function(){t(window.event)}))}y(document,"keydown",(function(e){!function(e){var n,r,l,f,a,s;if(n=e.keyCode,-1==u(c,n)&&c.push(n),93!=n&&224!=n||(n=91),n in o)for(l in o[n]=!0,i)i[l]==n&&(p[l]=!0);else if(d(e),p.filter.call(this,e)&&n in t)for(s=h(),f=0;f<t[n].length;f++)if((r=t[n][f]).scope==s||"all"==r.scope){for(l in a=r.mods.length>0,o)(!o[l]&&u(r.mods,+l)>-1||o[l]&&-1==u(r.mods,+l))&&(a=!1);(0!=r.mods.length||o[16]||o[18]||o[17]||o[91])&&!a||!1===r.method(e,r)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}(e)})),y(document,"keyup",(function(e){var n,t=e.keyCode,r=u(c,t);if(r>=0&&c.splice(r,1),93!=t&&224!=t||(t=91),t in o)for(n in o[t]=!1,i)i[n]==t&&(p[n]=!1)})),y(window,"focus",(function(){for(n in o)o[n]=!1;for(n in i)p[n]=!1}));var k=e.key;e.key=p,e.key.setScope=function(e){r=e||"all"},e.key.getScope=h,e.key.deleteScope=function(e){var n,o,r;for(n in t)for(o=t[n],r=0;r<o.length;)o[r].scope===e?o.splice(r,1):r++},e.key.filter=function(e){var n=(e.target||e.srcElement).tagName;return!("INPUT"==n||"SELECT"==n||"TEXTAREA"==n)},e.key.isPressed=function(e){return"string"==typeof e&&(e=f(e)),-1!=u(c,e)},e.key.getPressedKeyCodes=function(){return c.slice(0)},e.key.noConflict=function(){var n=e.key;return e.key=k,n},e.key.unbind=function(e,n){var o,r,i,l,c,u=[];for(o=g(e),l=0;l<o.length;l++){if((r=o[l].split("+")).length>1&&(u=v(r),e=r[r.length-1]),e=f(e),void 0===n&&(n=h()),!t[e])return;for(i=0;i<t[e].length;i++)(c=t[e][i]).scope===n&&a(c.mods,u)&&(t[e][i]={})}},"undefined"!=typeof module&&(module.exports=p)}(window);