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