| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 'use strict';const Prompt = require('../types/string');const completer = require('../completer');class Input extends Prompt {  constructor(options) {    super(options);    let history = this.options.history;    if (history && history.store) {      let initial = history.values || this.initial;      this.autosave = !!history.autosave;      this.store = history.store;      this.data = this.store.get('values') || { past: [], present: initial };      this.initial = this.data.present || this.data.past[this.data.past.length - 1];    }  }  completion(action) {    if (!this.store) return this.alert();    this.data = completer(action, this.data, this.input);    if (!this.data.present) return this.alert();    this.input = this.data.present;    this.cursor = this.input.length;    return this.render();  }  altUp() {    return this.completion('prev');  }  altDown() {    return this.completion('next');  }  prev() {    this.save();    return super.prev();  }  save() {    if (!this.store) return;    this.data = completer('save', this.data, this.input);    this.store.set('values', this.data);  }  submit() {    if (this.store && this.autosave === true) {      this.save();    }    return super.submit();  }}module.exports = Input;
 |