@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
136 lines (135 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.codes = exports.aliases = void 0;
exports.default = keyCode;
exports.names = void 0;
require("core-js/modules/es.string.replace.js");
function keyCode(searchInput) {
if (searchInput && 'object' === typeof searchInput) {
const sI = searchInput;
const foundKeyCode = sI.which || sI.keyCode || sI.charCode;
if (foundKeyCode) {
searchInput = foundKeyCode;
} else if (sI.key) {
searchInput = sI.key.toLowerCase();
if (searchInput.startsWith('arrow')) {
searchInput = searchInput.replace('arrow', '');
}
if (searchInput === 'spacebar') {
searchInput = searchInput.replace('bar', '');
}
if (searchInput !== 'tab') {
return searchInput;
}
}
}
if ('number' === typeof searchInput) {
return names[searchInput];
}
const search = String(searchInput);
{
const foundNamedKey = codes[search.toLowerCase()];
if (foundNamedKey) {
return foundNamedKey;
}
}
{
const foundNamedKey = aliases[search.toLowerCase()];
if (foundNamedKey) {
return foundNamedKey;
}
}
if (search.length === 1) {
return search.charCodeAt(0);
}
return undefined;
}
const codes = exports.codes = {
backspace: 8,
tab: 9,
enter: 13,
shift: 16,
ctrl: 17,
alt: 18,
'pause/break': 19,
'caps lock': 20,
esc: 27,
space: 32,
'page up': 33,
'page down': 34,
end: 35,
home: 36,
left: 37,
up: 38,
right: 39,
down: 40,
insert: 45,
delete: 46,
command: 91,
'left command': 91,
'right command': 93,
'numpad *': 106,
'numpad +': 107,
'numpad -': 109,
'numpad .': 110,
'numpad /': 111,
'num lock': 144,
'scroll lock': 145,
'my computer': 182,
'my calculator': 183,
';': 186,
'=': 187,
',': 188,
'-': 189,
'.': 190,
'/': 191,
'`': 192,
'[': 219,
'\\': 220,
']': 221,
"'": 222
};
const aliases = exports.aliases = {
windows: 91,
'⇧': 16,
'⌥': 18,
'⌃': 17,
'⌘': 91,
ctl: 17,
control: 17,
option: 18,
pause: 19,
break: 19,
caps: 20,
return: 13,
escape: 27,
spc: 32,
spacebar: 32,
pgup: 33,
pgdn: 34,
ins: 45,
del: 46,
cmd: 91
};
for (let i = 97; i < 123; i++) {
codes[String.fromCharCode(i)] = i - 32;
}
for (let i = 48; i < 58; i++) {
codes[i - 48] = i;
}
for (let i = 1; i < 13; i++) {
codes['f' + i] = i + 111;
}
for (let i = 0; i < 10; i++) {
codes['numpad ' + i] = i + 96;
}
const names = exports.names = {};
for (const i in codes) {
names[codes[i]] = i;
}
for (const alias in aliases) {
codes[alias] = aliases[alias];
}
//# sourceMappingURL=keycode.js.map