"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (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; }; exports.__esModule = true; exports.ConsolePrinter = void 0; var interface_1 = require("./interface"); var readline = __importStar(require("readline")); var ConsolePrinter = /** @class */ (function () { function ConsolePrinter(config) { this._path = []; this._selectedIndex = 0; this._config = config; } ConsolePrinter.prototype.printMenu = function (curMenu) { console.clear(); for (var i = 0; i < curMenu.length; i++) { var line = (i === this._selectedIndex ? "> " : " ") + curMenu[i].display; console.log(line); } }; ConsolePrinter.prototype.getSelection = function () { var _this = this; var curMenu = this._config; this.printMenu(curMenu); // get user input readline.emitKeypressEvents(process.stdin); process.stdin.setRawMode(true); process.stdin.on('keypress', function (_letter, key) { if (key.ctrl && key.name === 'c') { process.exit(); } else if (key.name === 'up') { _this._selectedIndex--; if (_this._selectedIndex < 0) { _this._selectedIndex = 0; } } else if (key.name === 'down') { _this._selectedIndex++; if (_this._selectedIndex > curMenu.length - 1) { _this._selectedIndex = curMenu.length - 1; } } else if (key.name === 'left') { if (_this._path.length > 0) { _this._path.pop(); } } else if (key.name === 'right' || key.name === 'enter') { if (curMenu[_this._selectedIndex].type === interface_1.MenuType.SubMenu) { _this._path.push(_this._selectedIndex); _this._selectedIndex = 0; } else { process.exit(); } } curMenu = _this._config; for (var i = 0; i < _this._path.length; i++) { curMenu = curMenu[_this._path[i]].subMenu; } _this.printMenu(curMenu); }); return this._config[this._selectedIndex]; }; return ConsolePrinter; }()); exports.ConsolePrinter = ConsolePrinter;