UNPKG

tinykeys

Version:

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

3 lines (2 loc) 808 B
let e=["Shift","Meta","Alt","Control"],t=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"Meta":"Control";export default function(r,i){let n=Object.keys(i).map(e=>{return[(r=e,r.trim().split(" ").map(e=>{let r=e.split("+"),i=r.pop();return r=r.map(e=>"$mod"===e?t:e),[r,i]})),i[e]];var r}),o=new Map,a=null,l=t=>{t.getModifierState(t.key)||(n.forEach(r=>{let i=r[0],n=r[1],a=o.get(i)||i;!function(t,r){return!(r[1].toUpperCase()!==t.key.toUpperCase()&&r[1]!==t.code||r[0].find(e=>!t.getModifierState(e))||e.find(e=>!r[0].includes(e)&&t.getModifierState(e)))}(t,a[0])?o.delete(i):a.length>1?o.set(i,a.slice(1)):(o.delete(i),n(t))}),clearTimeout(a),a=setTimeout(o.clear.bind(o),1e3))};return r.addEventListener("keydown",l),()=>{r.removeEventListener("keydown",l)}} //# sourceMappingURL=tinykeys.modern.js.map