react-keyboard-hook
Version:
React hook for keyboard events.
55 lines (54 loc) • 3.9 kB
JavaScript
import { useEffect as B } from "react";
var P = /* @__PURE__ */ ((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))(P || {}), l = /* @__PURE__ */ ((t) => (t[t.CtrlCmd = 2048] = "CtrlCmd", t[t.Shift = 1024] = "Shift", t[t.Alt = 512] = "Alt", t[t.WinCtrl = 256] = "WinCtrl", t))(l || {});
const h = () => Boolean(
typeof window < "u" && window.document && window.document.createElement
), w = () => h() ? navigator.platform.toUpperCase().indexOf("MAC") >= 0 : !1, D = () => ({
CtrlCmd: w() ? "metaKey" : "ctrlKey",
WinCtrl: w() ? "ctrlKey" : "metaKey"
}), L = (t) => {
const a = t.filter((n) => !!l[n]), Y = {
CtrlCmd: !1,
Shift: !1,
Alt: !1,
WinCtrl: !1
};
return a.forEach((n) => {
const _ = l[n];
Y[_] = !0;
}), Y;
}, U = (t, a, Y = {}) => {
const n = Array.isArray(a) ? a : [a], {
disableGlobalEvent: _ = !1,
capture: F = !1,
stopPropagation: m = !1,
preventDefault: k = !0,
event: i = "keydown"
} = Y, s = L(n), p = n.filter((r) => !l[r]), { CtrlCmd: A, WinCtrl: g } = D(), c = (r) => {
if (s.Shift && !r.shiftKey || s.Alt && !r.altKey || s.CtrlCmd && !r[A] || s.WinCtrl && !r[g])
return;
const u = p.find((f) => f === r.keyCode);
p && !u || (m && r.stopPropagation(), k && r.preventDefault(), t && t(r));
};
B(() => (_ || document.addEventListener(i, c), () => {
document.removeEventListener(i, c);
}), [_]);
const E = (r, u = !1) => r !== i ? () => {
} : u !== F ? () => {
} : (f) => c(f);
return {
bindings: {
onKeyDown: E("keydown"),
onKeyDownCapture: E("keydown", !0),
onKeyPress: E("keypress"),
onKeyPressCapture: E("keypress", !0),
onKeyUp: E("keyup"),
onKeyUpCapture: E("keyup", !0)
}
};
};
export {
P as KeyCode,
l as KeyMod,
U as default
};
//# sourceMappingURL=react-keyboard-hook.es.js.map