namastejs
Version:
A spiritual greeting from your JavaScript code. Because every function deserves a 'Namaste π'
69 lines (57 loc) β’ 1.29 kB
JavaScript
const readline = require("readline");
function initInput({
onSubmit,
onExit,
onInputChange,
isBackspaceDisabled,
onPauseToggle,
}) {
let input = "";
let paused = false;
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.setEncoding("utf8");
process.stdin.on("keypress", (char, key) => {
if (key.ctrl && key.name === "c") {
onExit();
return;
}
// βΈοΈ Pause / Resume
if (key.name === "space") {
paused = !paused;
input = ""; // π₯ CLEAR BUFFER
onInputChange("");
onPauseToggle?.();
return;
}
// π« Ignore input when paused
if (paused) return;
if (key.name === "return") {
onSubmit(input);
input = "";
onInputChange(input);
return;
}
if (key.name === "backspace") {
if (!isBackspaceDisabled()) {
input = input.slice(0, -1);
onInputChange(input);
}
return;
}
if (char && char.length === 1) {
input += char;
onInputChange(input);
}
});
return {
resetInput() {
input = "";
onInputChange(input);
},
};
}
module.exports = {
initInput,
};