aboutsummaryrefslogtreecommitdiff
path: root/node_modules/prompts/dist/elements/toggle.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/prompts/dist/elements/toggle.js')
-rw-r--r--node_modules/prompts/dist/elements/toggle.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/node_modules/prompts/dist/elements/toggle.js b/node_modules/prompts/dist/elements/toggle.js
new file mode 100644
index 0000000..d942f60
--- /dev/null
+++ b/node_modules/prompts/dist/elements/toggle.js
@@ -0,0 +1,124 @@
+"use strict";
+
+const color = require('kleur');
+
+const Prompt = require('./prompt');
+
+const _require = require('../util'),
+ style = _require.style,
+ clear = _require.clear;
+
+const _require2 = require('sisteransi'),
+ cursor = _require2.cursor,
+ erase = _require2.erase;
+/**
+ * TogglePrompt Base Element
+ * @param {Object} opts Options
+ * @param {String} opts.message Message
+ * @param {Boolean} [opts.initial=false] Default value
+ * @param {String} [opts.active='no'] Active label
+ * @param {String} [opts.inactive='off'] Inactive label
+ * @param {Stream} [opts.stdin] The Readable stream to listen to
+ * @param {Stream} [opts.stdout] The Writable stream to write readline data to
+ */
+
+
+class TogglePrompt extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.value = !!opts.initial;
+ this.active = opts.active || 'on';
+ this.inactive = opts.inactive || 'off';
+ this.initialValue = this.value;
+ 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.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write('\n');
+ this.close();
+ }
+
+ deactivate() {
+ if (this.value === false) return this.bell();
+ this.value = false;
+ this.render();
+ }
+
+ activate() {
+ if (this.value === true) return this.bell();
+ this.value = true;
+ this.render();
+ }
+
+ delete() {
+ this.deactivate();
+ }
+
+ left() {
+ this.deactivate();
+ }
+
+ right() {
+ this.activate();
+ }
+
+ down() {
+ this.deactivate();
+ }
+
+ up() {
+ this.activate();
+ }
+
+ next() {
+ this.value = !this.value;
+ this.fire();
+ this.render();
+ }
+
+ _(c, key) {
+ if (c === ' ') {
+ this.value = !this.value;
+ } else if (c === '1') {
+ this.value = true;
+ } else if (c === '0') {
+ this.value = false;
+ } else return this.bell();
+
+ this.render();
+ }
+
+ 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.value ? this.inactive : color.cyan().underline(this.inactive), color.gray('/'), this.value ? color.cyan().underline(this.active) : this.active].join(' ');
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+
+}
+
+module.exports = TogglePrompt; \ No newline at end of file