kmenu
Version:
The perfect ⌘K menu
2 lines • 1.21 kB
JavaScript
var f=(n,s)=>{if(!s)return n;let o=s.toLowerCase();return n.filter(r=>{if(r.disabled)return false;let l=r.label.toLowerCase().includes(o),e=r.keywords?.some(t=>t.toLowerCase().includes(o));return l||e})},m=(n,s)=>{if(!s)return n;let o=s.toLowerCase();return n.filter(r=>{if(r.disabled)return false;let l=r.label.toLowerCase().startsWith(o),e=r.keywords?.some(t=>t.toLowerCase().startsWith(o));return l||e})},w=(n,s)=>{if(!s)return n;let r=s.toLowerCase().split("");return n.filter(e=>!e.disabled).map(e=>{let t=`${e.label} ${e.keywords?.join(" ")||""}`.toLowerCase(),i=0,a=-1,u=0;for(let d of r){let c=t.indexOf(d,a+1);if(c===-1)return null;c===a+1?(u++,i+=10*u):(u=0,i+=1),(c===0||t[c-1]===" ")&&(i+=5),a=c;}return i-=t.length*.1,{option:e,score:i}}).filter(e=>e!==null).sort((e,t)=>t.score-e.score).map(e=>e.option)};function F(n,s){return (o,r)=>{if(!r)return o;try{let l=new RegExp(n.replace("{{query}}",r),s);return o.filter(e=>{if(e.disabled)return !1;let t=`${e.label} ${e.keywords?.join(" ")||""}`;return l.test(t)})}catch{return []}}}export{F as createRegexFilter,w as fuzzyFilter,f as simpleFilter,m as startsWithFilter};//# sourceMappingURL=filters.mjs.map
//# sourceMappingURL=filters.mjs.map