@transferwise/neptune-validation
Version:
Neptune Web validation
25 lines (18 loc) • 627 B
text/typescript
import { keyMap } from '../common/keyMap';
import { isArray } from '../type-validators';
const isKey = ({ keyType, event }: { keyType?: string; event?: Partial<KeyboardEvent> | null }) => {
if (!keyType || !event) {
return false;
}
const upperCaseKeyType = keyType.toUpperCase();
if (!Object.hasOwn(keyMap, upperCaseKeyType)) {
return false;
}
const keyDef = keyMap[upperCaseKeyType as keyof typeof keyMap];
const { key, keyCode } = event;
if (key) {
return isArray(keyDef.key) ? keyDef.key.includes(key) : key === keyDef.key;
}
return keyCode === keyDef.keyCode;
};
export default isKey;