Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
useKeypress(key => {
if (isEnterKey(key)) {
setStatus('done');
done(choices[cursorPosition].value);
} else if (isUpKey(key) || isDownKey(key)) {
let newCursorPosition = cursorPosition;
const offset = isUpKey(key) ? -1 : 1;
let selectedOption;
while (!selectedOption || selectedOption.disabled) {
newCursorPosition =
(newCursorPosition + offset + choices.length) % choices.length;
selectedOption = choices[newCursorPosition];
}
setCursorPos(newCursorPosition);
} else if (isNumberKey(key)) {
// Adjust index to start at 1
const newCursorPosition = Number(key.name) - 1;
// Abort if the choice doesn't exists or if disabled
if (!choices[newCursorPosition] || choices[newCursorPosition].disabled) {
return;
onKeypress: (value, key, { cursorPosition = 0, choices }, setState) => {
let newCursorPosition = cursorPosition;
if (isUpKey(key) || isDownKey(key)) {
const offset = isUpKey(key) ? -1 : 1;
let selectedOption;
while (!selectedOption || selectedOption.disabled) {
newCursorPosition =
(newCursorPosition + offset + choices.length) % choices.length;
selectedOption = choices[newCursorPosition];
}
setState({ cursorPosition: newCursorPosition });
} else if (isSpaceKey(key)) {
setState({
showHelpTip: false,
choices: choices.map((choice, i) => {
if (i === cursorPosition) {
return Object.assign({}, choice, { checked: !choice.checked });
}