UNPKG

tinykeys

Version:

A tiny (~400 B) & modern library for keybindings.

3 lines (2 loc) 1.06 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).tinykeys=t()}(this,function(){var e=["Shift","Meta","Alt","Control"],t=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"Meta":"Control";return function(n,o){var i=Object.keys(o).map(function(e){return[(n=e,n.trim().split(" ").map(function(e){var n=e.split("+"),o=n.pop();return[n=n.map(function(e){return"$mod"===e?t:e}),o]})),o[e]];var n}),r=new Map,f=null,u=function(t){t.getModifierState(t.key)||(i.forEach(function(n){var o=n[0],i=n[1],f=r.get(o)||o;!function(t,n){return!(n[1].toUpperCase()!==t.key.toUpperCase()&&n[1]!==t.code||n[0].find(function(e){return!t.getModifierState(e)})||e.find(function(e){return!n[0].includes(e)&&t.getModifierState(e)}))}(t,f[0])?r.delete(o):f.length>1?r.set(o,f.slice(1)):(r.delete(o),i(t))}),clearTimeout(f),f=setTimeout(r.clear.bind(r),1e3))};return n.addEventListener("keydown",u),function(){n.removeEventListener("keydown",u)}}}); //# sourceMappingURL=tinykeys.umd.js.map