| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | '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;
 |