| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- const color = require('kleur');
 
- const Prompt = require('./prompt');
 
- const { style, clear } = require('../util');
 
- const { erase, cursor } = require('sisteransi');
 
- /**
 
-  * ConfirmPrompt Base Element
 
-  * @param {Object} opts Options
 
-  * @param {String} opts.message Message
 
-  * @param {Boolean} [opts.initial] Default value (true/false)
 
-  * @param {Stream} [opts.stdin] The Readable stream to listen to
 
-  * @param {Stream} [opts.stdout] The Writable stream to write readline data to
 
-  * @param {String} [opts.yes] The "Yes" label
 
-  * @param {String} [opts.yesOption] The "Yes" option when choosing between yes/no
 
-  * @param {String} [opts.no] The "No" label
 
-  * @param {String} [opts.noOption] The "No" option when choosing between yes/no
 
-  */
 
- class ConfirmPrompt extends Prompt {
 
-   constructor(opts={}) {
 
-     super(opts);
 
-     this.msg = opts.message;
 
-     this.value = opts.initial;
 
-     this.initialValue = !!opts.initial;
 
-     this.yesMsg = opts.yes || 'yes';
 
-     this.yesOption = opts.yesOption || '(Y/n)';
 
-     this.noMsg = opts.no || 'no';
 
-     this.noOption = opts.noOption || '(y/N)';
 
-     this.render();
 
-   }
 
-   reset() {
 
-     this.value = this.initialValue;
 
-     this.fire();
 
-     this.render();
 
-   }
 
-   exit() {
 
-     this.abort();
 
-   }
 
-   abort() {
 
-     this.done = this.aborted = true;
 
-     this.fire();
 
-     this.render();
 
-     this.out.write('\n');
 
-     this.close();
 
-   }
 
-   submit() {
 
-     this.value = this.value || false;
 
-     this.done = true;
 
-     this.aborted = false;
 
-     this.fire();
 
-     this.render();
 
-     this.out.write('\n');
 
-     this.close();
 
-   }
 
-   _(c, key) {
 
-     if (c.toLowerCase() === 'y') {
 
-       this.value = true;
 
-       return this.submit();
 
-     }
 
-     if (c.toLowerCase() === 'n') {
 
-       this.value = false;
 
-       return this.submit();
 
-     }
 
-     return this.bell();
 
-   }
 
-   render() {
 
-     if (this.closed) return;
 
-     if (this.firstRender) this.out.write(cursor.hide);
 
-     else this.out.write(clear(this.outputText, this.out.columns));
 
-     super.render();
 
-     this.outputText = [
 
-       style.symbol(this.done, this.aborted),
 
-       color.bold(this.msg),
 
-       style.delimiter(this.done),
 
-       this.done ? (this.value ? this.yesMsg : this.noMsg)
 
-           : color.gray(this.initialValue ? this.yesOption : this.noOption)
 
-     ].join(' ');
 
-     this.out.write(erase.line + cursor.to(0) + this.outputText);
 
-   }
 
- }
 
- module.exports = ConfirmPrompt;
 
 
  |