Spaces:
Runtime error
Runtime error
; | |
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; | |