BD16kxaj.js
2.7 KB
import{bm as $,bl as E,p as S,s as m,aV as _,bw as A}from"./BtEn9SvP.js";import{m as D}from"./DYcig7R4.js";const L=/^[^-]+.*-.*[^-]+$/,j=/^[^_]+.*_.*[^_]+$/,b=["arrowleft","arrowright","arrowup","arrowright","tab","escape","enter","backspace"];function h(s){return/^[a-z]$/i.test(s)?`Key${s.toUpperCase()}`:/^\d$/.test(s)?`Digit${s}`:/^f\d+$/i.test(s)?s.toUpperCase():{space:"Space",enter:"Enter",escape:"Escape",tab:"Tab",backspace:"Backspace",delete:"Delete",arrowup:"ArrowUp",arrowdown:"ArrowDown",arrowleft:"ArrowLeft",arrowright:"ArrowRight"}[s.toLowerCase()]||s}function x(s,u={}){const r=S([]),f=()=>{r.value.splice(0,r.value.length)},v=$(f,u.chainDelay??800),{macOS:w}=D(),d=A(),i=u.layoutIndependent??!1,I=b.map(e=>h(e)),g=e=>{if(!e.key)return;const a=i?/^Key[A-Z]$/i.test(e.code):/^[a-z]{1}$/i.test(e.key),t=i?I.includes(e.code):b.includes(e.key.toLowerCase());let c;if(r.value.push(i?e.code:e.key),r.value.length>=2){c=r.value.slice(-2).join("-");for(const n of K.value.filter(l=>l.chained))if(n.key===c){n.enabled&&(e.preventDefault(),n.handler(e)),f();return}}for(const n of K.value.filter(l=>!l.chained)){if(i){if(e.code!==n.key)continue}else if(e.key.toLowerCase()!==n.key)continue;if(e.metaKey===n.metaKey&&e.ctrlKey===n.ctrlKey&&e.altKey===n.altKey&&!((a||t||n.shiftKey||e.shiftKey&&(e.metaKey||e.ctrlKey))&&e.shiftKey!==n.shiftKey)){n.enabled&&(e.preventDefault(),n.handler(e)),f();return}}v()},y=m(()=>{const e=d.value?.tagName,a=d.value?.contentEditable;return e==="INPUT"||e==="TEXTAREA"||a==="true"||a==="plaintext-only"?d.value?.name||!0:!1}),K=m(()=>Object.entries(_(s)).map(([e,a])=>{if(!a)return null;let t;e.includes("-")&&e!=="-"&&!e.includes("_")&&!e.match(L)?.length&&console.trace(`[Shortcut] Invalid key: "${e}"`),e.includes("_")&&e!=="_"&&!e.match(j)?.length&&console.trace(`[Shortcut] Invalid key: "${e}"`);const c=e.includes("-")&&e!=="-"&&!e.includes("_");if(c)i?t={key:e.split("-").map(o=>h(o)).join("-"),metaKey:!1,ctrlKey:!1,shiftKey:!1,altKey:!1}:t={key:e.toLowerCase(),metaKey:!1,ctrlKey:!1,shiftKey:!1,altKey:!1};else{const l=e.toLowerCase().split("_").map(p=>p);let o=l.filter(p=>!["meta","command","ctrl","shift","alt","option"].includes(p)).join("_");i&&(o=h(o)),t={key:o,metaKey:l.includes("meta")||l.includes("command"),ctrlKey:l.includes("ctrl"),shiftKey:l.includes("shift"),altKey:l.includes("alt")||l.includes("option")}}if(t.chained=c,!w.value&&t.metaKey&&!t.ctrlKey&&(t.metaKey=!1,t.ctrlKey=!0),typeof a=="function"?t.handler=a:typeof a=="object"&&(t={...t,handler:a.handler}),!t.handler)return console.trace("[Shortcut] Invalid value"),null;let n=!0;return a.usingInput?typeof a.usingInput=="string"&&(n=y.value===a.usingInput):n=!y.value,t.enabled=n,t}).filter(Boolean));return E("keydown",g)}export{x as d};