react-keyboard-hook
Version:
React hook for keyboard events.
3 lines (2 loc) • 3.36 kB
JavaScript
(function(n,Y){typeof exports=="object"&&typeof module<"u"?Y(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],Y):(n=typeof globalThis<"u"?globalThis:n||self,Y(n["react-keyboard-hook"]={},n.React))})(this,function(n,Y){"use strict";var w=(t=>(t[t.Unknown=0]="Unknown",t[t.Backspace=8]="Backspace",t[t.Tab=9]="Tab",t[t.Enter=13]="Enter",t[t.Shift=16]="Shift",t[t.Ctrl=17]="Ctrl",t[t.Alt=18]="Alt",t[t.PauseBreak=19]="PauseBreak",t[t.CapsLock=20]="CapsLock",t[t.Escape=27]="Escape",t[t.Space=32]="Space",t[t.PageUp=33]="PageUp",t[t.PageDown=34]="PageDown",t[t.End=35]="End",t[t.Home=36]="Home",t[t.LeftArrow=37]="LeftArrow",t[t.UpArrow=38]="UpArrow",t[t.RightArrow=39]="RightArrow",t[t.DownArrow=40]="DownArrow",t[t.Insert=45]="Insert",t[t.Delete=46]="Delete",t[t.KEY_0=48]="KEY_0",t[t.KEY_1=49]="KEY_1",t[t.KEY_2=50]="KEY_2",t[t.KEY_3=51]="KEY_3",t[t.KEY_4=52]="KEY_4",t[t.KEY_5=53]="KEY_5",t[t.KEY_6=54]="KEY_6",t[t.KEY_7=55]="KEY_7",t[t.KEY_8=56]="KEY_8",t[t.KEY_9=57]="KEY_9",t[t.KEY_A=65]="KEY_A",t[t.KEY_B=66]="KEY_B",t[t.KEY_C=67]="KEY_C",t[t.KEY_D=68]="KEY_D",t[t.KEY_E=69]="KEY_E",t[t.KEY_F=70]="KEY_F",t[t.KEY_G=71]="KEY_G",t[t.KEY_H=72]="KEY_H",t[t.KEY_I=73]="KEY_I",t[t.KEY_J=74]="KEY_J",t[t.KEY_K=75]="KEY_K",t[t.KEY_L=76]="KEY_L",t[t.KEY_M=77]="KEY_M",t[t.KEY_N=78]="KEY_N",t[t.KEY_O=79]="KEY_O",t[t.KEY_P=80]="KEY_P",t[t.KEY_Q=81]="KEY_Q",t[t.KEY_R=82]="KEY_R",t[t.KEY_S=83]="KEY_S",t[t.KEY_T=84]="KEY_T",t[t.KEY_U=85]="KEY_U",t[t.KEY_V=86]="KEY_V",t[t.KEY_W=87]="KEY_W",t[t.KEY_X=88]="KEY_X",t[t.KEY_Y=89]="KEY_Y",t[t.KEY_Z=90]="KEY_Z",t[t.Meta=91]="Meta",t[t.F1=112]="F1",t[t.F2=113]="F2",t[t.F3=114]="F3",t[t.F4=115]="F4",t[t.F5=116]="F5",t[t.F6=117]="F6",t[t.F7=118]="F7",t[t.F8=119]="F8",t[t.F9=120]="F9",t[t.F10=121]="F10",t[t.F11=122]="F11",t[t.F12=123]="F12",t[t.NumLock=144]="NumLock",t[t.ScrollLock=145]="ScrollLock",t[t.Equal=187]="Equal",t[t.Minus=189]="Minus",t[t.Backquote=192]="Backquote",t[t.Backslash=220]="Backslash",t))(w||{}),_=(t=>(t[t.CtrlCmd=2048]="CtrlCmd",t[t.Shift=1024]="Shift",t[t.Alt=512]="Alt",t[t.WinCtrl=256]="WinCtrl",t))(_||{});const A=()=>Boolean(typeof window<"u"&&window.document&&window.document.createElement),F=()=>A()?navigator.platform.toUpperCase().indexOf("MAC")>=0:!1,h=()=>({CtrlCmd:F()?"metaKey":"ctrlKey",WinCtrl:F()?"ctrlKey":"metaKey"}),g=t=>{const s=t.filter(E=>!!_[E]),i={CtrlCmd:!1,Shift:!1,Alt:!1,WinCtrl:!1};return s.forEach(E=>{const l=_[E];i[l]=!0}),i},P=(t,s,i={})=>{const E=Array.isArray(s)?s:[s],{disableGlobalEvent:l=!1,capture:S=!1,stopPropagation:B=!1,preventDefault:D=!0,event:c="keydown"}=i,u=g(E),k=E.filter(r=>!_[r]),{CtrlCmd:L,WinCtrl:U}=h(),f=r=>{if(u.Shift&&!r.shiftKey||u.Alt&&!r.altKey||u.CtrlCmd&&!r[L]||u.WinCtrl&&!r[U])return;const p=k.find(m=>m===r.keyCode);k&&!p||(B&&r.stopPropagation(),D&&r.preventDefault(),t&&t(r))};Y.useEffect(()=>(l||document.addEventListener(c,f),()=>{document.removeEventListener(c,f)}),[l]);const a=(r,p=!1)=>r!==c?()=>{}:p!==S?()=>{}:m=>f(m);return{bindings:{onKeyDown:a("keydown"),onKeyDownCapture:a("keydown",!0),onKeyPress:a("keypress"),onKeyPressCapture:a("keypress",!0),onKeyUp:a("keyup"),onKeyUpCapture:a("keyup",!0)}}};n.KeyCode=w,n.KeyMod=_,n.default=P,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
//# sourceMappingURL=react-keyboard-hook.umd.js.map