UNPKG

tinykeys

Version:

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

3 lines (2 loc) 885 B
var e=["Shift","Meta","Alt","Control"],t=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"Meta":"Control";module.exports=function(n,r){var o=Object.keys(r).map(function(e){return[(n=e,n.trim().split(" ").map(function(e){var n=e.split("+"),r=n.pop();return[n=n.map(function(e){return"$mod"===e?t:e}),r]})),r[e]];var n}),i=new Map,a=null,u=function(t){t.getModifierState(t.key)||(o.forEach(function(n){var r=n[0],o=n[1],a=i.get(r)||r;!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,a[0])?i.delete(r):a.length>1?i.set(r,a.slice(1)):(i.delete(r),o(t))}),clearTimeout(a),a=setTimeout(i.clear.bind(i),1e3))};return n.addEventListener("keydown",u),function(){n.removeEventListener("keydown",u)}}; //# sourceMappingURL=tinykeys.js.map