UNPKG

@limetech/lime-elements

Version:
1 lines 1.49 kB
const t={cmd:"meta",command:"meta",win:"meta",windows:"meta",control:"ctrl",option:"alt",esc:"escape",return:"enter",del:"delete",up:"arrowup",down:"arrowdown",left:"arrowleft",right:"arrowright",spacebar:"space"},n=t=>{var n;const r=(null!=t?t:"").trim();if(!r)return[];if("+"===r)return["+"];const e=[];let l="",o=0;for(;o<r.length;){const t=r[o];if("+"!==t){l+=t,o++;continue}let c=o+1;for(;""===(null===(n=r[c])||void 0===n?void 0:n.trim());)c++;if("+"===r[c]){const t=l.trim();t&&e.push(t),e.push("+"),l="",o=c+1;continue}const s=l.trim();s&&e.push(s),l="",o++}const c=l.trim();return c&&e.push(c),e},r=n=>{const r=n.trim().toLowerCase();return r?Object.hasOwn(t,r)?t[r]:r:null},e=t=>{const n=r(t.key);if(!n)return null;if(["shift","alt","ctrl","meta"].includes(n))return null;const e=[];return t.meta&&e.push("meta"),t.ctrl&&e.push("ctrl"),t.alt&&e.push("alt"),t.shift&&"+"!==n&&e.push("shift"),e.push(n),e.join("+")},l=t=>{if(!t)return null;const l=n(t);if(0===l.length)return null;let o=!1,c=!1,s=!1,a=!1,u=null;for(const t of l){const n=r(t);n&&("alt"!==n?"ctrl"!==n?"meta"!==n?"shift"!==n?u=n:a=!0:s=!0:c=!0:o=!0)}return u?e({key:u,alt:o,ctrl:c,meta:s,shift:a}):null},o=t=>{const n=(t=>{const n=(t.code||"").trim();if(/^Key[A-Z]$/.test(n))return n.slice(3).toLowerCase();if(/^Digit\d$/.test(n))return n.slice(5);const e=t.key;return" "===e?"space":r(e)})(t);return n?e({key:n,alt:t.altKey,ctrl:t.ctrlKey,meta:t.metaKey,shift:"+"!==n&&t.shiftKey}):null};export{o as h,l as n,n as t}