spacecraft-app-cli
Version:
A simple CLI Project to solve the Spacecraft problem with typescript
59 lines • 2.38 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const readline = __importStar(require("readline"));
class KeyListener {
constructor(input, ...events) {
this.events = [];
this.validKeys = ['w', 's', 'a', 'd', 'c', 'x', 'h'];
this.input = input;
this.events = events ? events : [];
readline.emitKeypressEvents(this.input);
this.input.setRawMode(true);
this.input.on('keypress', this.onKeyPressExecuteEvent.bind(this));
}
bindEvent(event) {
this.events.push(event);
return event;
}
unbindEvent(event) {
const foundRelatedEventIndex = this.events.findIndex((e) => e.keyName === event.keyName && e.ctrl === event.ctrl && e.shift === event.shift);
if (foundRelatedEventIndex >= 0) {
this.events.splice(foundRelatedEventIndex, 1);
return true;
}
else
return false;
}
onKeyPressExecuteEvent(str, key) {
const foundRelatedEvent = this.events.find((e) => (this.validKeys.includes(key.name)) &&
(Array.isArray(e.keyName) ? e.keyName.includes(key.name) : e.keyName === key.name) &&
(e.ctrl ? key.ctrl : true) &&
(e.shift ? key.shift : true));
if (foundRelatedEvent) {
foundRelatedEvent.handler(key.name, key.ctrl, key.shift);
}
else
console.log("Invalid command.\n");
}
}
exports.default = KeyListener;
//# sourceMappingURL=keyListener.js.map