You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
const { define, width } = require('./utils');
class State { constructor(prompt) { let options = prompt.options; define(this, '_prompt', prompt); this.type = prompt.type; this.name = prompt.name; this.message = ''; this.header = ''; this.footer = ''; this.error = ''; this.hint = ''; this.input = ''; this.cursor = 0; this.index = 0; this.lines = 0; this.tick = 0; this.prompt = ''; this.buffer = ''; this.width = width(options.stdout || process.stdout); Object.assign(this, options); this.name = this.name || this.message; this.message = this.message || this.name; this.symbols = prompt.symbols; this.styles = prompt.styles; this.required = new Set(); this.cancelled = false; this.submitted = false; }
clone() { let state = { ...this }; state.status = this.status; state.buffer = Buffer.from(state.buffer); delete state.clone; return state; }
set color(val) { this._color = val; } get color() { let styles = this.prompt.styles; if (this.cancelled) return styles.cancelled; if (this.submitted) return styles.submitted; let color = this._color || styles[this.status]; return typeof color === 'function' ? color : styles.pending; }
set loading(value) { this._loading = value; } get loading() { if (typeof this._loading === 'boolean') return this._loading; if (this.loadingChoices) return 'choices'; return false; }
get status() { if (this.cancelled) return 'cancelled'; if (this.submitted) return 'submitted'; return 'pending'; } }
module.exports = State;
|