use-keybinds
Version:
Lightweight keybind library for React
3 lines • 1.86 kB
JavaScript
"use client"
;var x=Object.create;var c=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var w=(n,e)=>{for(var t in e)c(n,t,{get:e[t],enumerable:!0})},E=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of P(e))!R.call(n,i)&&i!==t&&c(n,i,{get:()=>e[i],enumerable:!(o=T(e,i))||o.enumerable});return n};var h=(n,e,t)=>(t=n!=null?x(L(n)):{},E(e||!n||!n.__esModule?c(t,"default",{value:n,enumerable:!0}):t,n)),F=n=>E(c({},"__esModule",{value:!0}),n);var A={};w(A,{default:()=>q});module.exports=F(A);var u=require("react");var r=require("react"),N=()=>{let[n,e]=(0,r.useState)(typeof window<"u"?document.activeElement:null),t=(0,r.useCallback)(()=>{e(document.activeElement)},[]),o=(0,r.useCallback)(()=>{e(null)},[]);return(0,r.useEffect)(()=>(addEventListener("focusin",t),addEventListener("focusout",o),()=>{removeEventListener("focusin",t),removeEventListener("focusout",o)}),[t,o]),n},p=N;var y=h(require("react"));var a=(n,e)=>(e?"isSequential-":"")+n.join("");var g=(0,y.createContext)({keybinds:{},combinationsToKeybindKey:{}});var j=(n={})=>{let e=p(),{combinationsToKeybindKey:t}=(0,u.useContext)(g);(0,u.useEffect)(()=>{let o=new Set([]),i=new Set([]),l=()=>{o.clear(),i.clear()},v=d=>Object.keys(t).join("").includes(d),b=d=>{if(e&&["INPUT","TEXTAREA"].includes(e.tagName))return;let s=d.code;v(s)?(o.add(s),i.add(s),setTimeout(()=>i.delete(s),4e3)):l();let S=a([...o],!1),C=a([...i],!0),k=t[S],K=t[C];K&&l();let f=n[K??k];f&&(i.clear(),f(d))},m=d=>{if(e&&["INPUT","TEXTAREA"].includes(e.tagName))return;let s=d.code;o.delete(s)};return addEventListener("keydown",b),addEventListener("keyup",m),()=>{removeEventListener("keydown",b),removeEventListener("keyup",m)}},[n,t,e])},q=j;
//# sourceMappingURL=useKeybinds.js.map