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