mirror of
				https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
				synced 2024-07-29 21:57:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 | 
