diff options
author | Scoots Dash <contact@minteck.org> | 2022-04-23 14:12:30 +0000 |
---|---|---|
committer | Scoots Dash <contact@minteck.org> | 2022-04-23 14:12:30 +0000 |
commit | a927497b43cbe1438f3d7478932f3f7d03ea347c (patch) | |
tree | 0a3c88978b4294fb30afad58daa86c46fbedc2f6 /node_modules/prompts/dist/elements/autocomplete.js | |
parent | ba5fa694351774f2684c1aefdc215da5c6f39ba6 (diff) | |
parent | f0db5bbbcd623812a391862d217519afafe197c6 (diff) | |
download | twilight-trunk.tar.gz twilight-trunk.tar.bz2 twilight-trunk.zip |
Disable the Twilight Package Manager
See merge request minteck/twilight!1
Diffstat (limited to 'node_modules/prompts/dist/elements/autocomplete.js')
-rw-r--r-- | node_modules/prompts/dist/elements/autocomplete.js | 285 |
1 files changed, 0 insertions, 285 deletions
diff --git a/node_modules/prompts/dist/elements/autocomplete.js b/node_modules/prompts/dist/elements/autocomplete.js deleted file mode 100644 index 60e41bc..0000000 --- a/node_modules/prompts/dist/elements/autocomplete.js +++ /dev/null @@ -1,285 +0,0 @@ -'use strict'; - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -const color = require('kleur'); - -const Prompt = require('./prompt'); - -const _require = require('sisteransi'), - erase = _require.erase, - cursor = _require.cursor; - -const _require2 = require('../util'), - style = _require2.style, - clear = _require2.clear, - figures = _require2.figures, - wrap = _require2.wrap, - entriesToDisplay = _require2.entriesToDisplay; - -const getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]); - -const getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]); - -const getIndex = (arr, valOrTitle) => { - const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle); - return index > -1 ? index : undefined; -}; -/** - * TextPrompt Base Element - * @param {Object} opts Options - * @param {String} opts.message Message - * @param {Array} opts.choices Array of auto-complete choices objects - * @param {Function} [opts.suggest] Filter function. Defaults to sort by title - * @param {Number} [opts.limit=10] Max number of results to show - * @param {Number} [opts.cursor=0] Cursor start position - * @param {String} [opts.style='default'] Render style - * @param {String} [opts.fallback] Fallback message - initial to default value - * @param {String} [opts.initial] Index of the default value - * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input - * @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.noMatches] The no matches found label - */ - - -class AutocompletePrompt extends Prompt { - constructor(opts = {}) { - super(opts); - this.msg = opts.message; - this.suggest = opts.suggest; - this.choices = opts.choices; - this.initial = typeof opts.initial === 'number' ? opts.initial : getIndex(opts.choices, opts.initial); - this.select = this.initial || opts.cursor || 0; - this.i18n = { - noMatches: opts.noMatches || 'no matches found' - }; - this.fallback = opts.fallback || this.initial; - this.clearFirst = opts.clearFirst || false; - this.suggestions = []; - this.input = ''; - this.limit = opts.limit || 10; - this.cursor = 0; - this.transform = style.render(opts.style); - this.scale = this.transform.scale; - this.render = this.render.bind(this); - this.complete = this.complete.bind(this); - this.clear = clear('', this.out.columns); - this.complete(this.render); - this.render(); - } - - set fallback(fb) { - this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb; - } - - get fallback() { - let choice; - if (typeof this._fb === 'number') choice = this.choices[this._fb];else if (typeof this._fb === 'string') choice = { - title: this._fb - }; - return choice || this._fb || { - title: this.i18n.noMatches - }; - } - - moveSelect(i) { - this.select = i; - if (this.suggestions.length > 0) this.value = getVal(this.suggestions, i);else this.value = this.fallback.value; - this.fire(); - } - - complete(cb) { - var _this = this; - - return _asyncToGenerator(function* () { - const p = _this.completing = _this.suggest(_this.input, _this.choices); - - const suggestions = yield p; - if (_this.completing !== p) return; - _this.suggestions = suggestions.map((s, i, arr) => ({ - title: getTitle(arr, i), - value: getVal(arr, i), - description: s.description - })); - _this.completing = false; - const l = Math.max(suggestions.length - 1, 0); - - _this.moveSelect(Math.min(l, _this.select)); - - cb && cb(); - })(); - } - - reset() { - this.input = ''; - this.complete(() => { - this.moveSelect(this.initial !== void 0 ? this.initial : 0); - this.render(); - }); - this.render(); - } - - exit() { - if (this.clearFirst && this.input.length > 0) { - this.reset(); - } else { - this.done = this.exited = true; - this.aborted = false; - this.fire(); - this.render(); - this.out.write('\n'); - this.close(); - } - } - - abort() { - this.done = this.aborted = true; - this.exited = false; - this.fire(); - this.render(); - this.out.write('\n'); - this.close(); - } - - submit() { - this.done = true; - this.aborted = this.exited = false; - this.fire(); - this.render(); - this.out.write('\n'); - this.close(); - } - - _(c, key) { - let s1 = this.input.slice(0, this.cursor); - let s2 = this.input.slice(this.cursor); - this.input = `${s1}${c}${s2}`; - this.cursor = s1.length + 1; - this.complete(this.render); - this.render(); - } - - delete() { - if (this.cursor === 0) return this.bell(); - let s1 = this.input.slice(0, this.cursor - 1); - let s2 = this.input.slice(this.cursor); - this.input = `${s1}${s2}`; - this.complete(this.render); - this.cursor = this.cursor - 1; - this.render(); - } - - deleteForward() { - if (this.cursor * this.scale >= this.rendered.length) return this.bell(); - let s1 = this.input.slice(0, this.cursor); - let s2 = this.input.slice(this.cursor + 1); - this.input = `${s1}${s2}`; - this.complete(this.render); - this.render(); - } - - first() { - this.moveSelect(0); - this.render(); - } - - last() { - this.moveSelect(this.suggestions.length - 1); - this.render(); - } - - up() { - if (this.select === 0) { - this.moveSelect(this.suggestions.length - 1); - } else { - this.moveSelect(this.select - 1); - } - - this.render(); - } - - down() { - if (this.select === this.suggestions.length - 1) { - this.moveSelect(0); - } else { - this.moveSelect(this.select + 1); - } - - this.render(); - } - - next() { - if (this.select === this.suggestions.length - 1) { - this.moveSelect(0); - } else this.moveSelect(this.select + 1); - - this.render(); - } - - nextPage() { - this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1)); - this.render(); - } - - prevPage() { - this.moveSelect(Math.max(this.select - this.limit, 0)); - this.render(); - } - - left() { - if (this.cursor <= 0) return this.bell(); - this.cursor = this.cursor - 1; - this.render(); - } - - right() { - if (this.cursor * this.scale >= this.rendered.length) return this.bell(); - this.cursor = this.cursor + 1; - this.render(); - } - - renderOption(v, hovered, isStart, isEnd) { - let desc; - let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' '; - let title = hovered ? color.cyan().underline(v.title) : v.title; - prefix = (hovered ? color.cyan(figures.pointer) + ' ' : ' ') + prefix; - - if (v.description) { - desc = ` - ${v.description}`; - - if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) { - desc = '\n' + wrap(v.description, { - margin: 3, - width: this.out.columns - }); - } - } - - return prefix + ' ' + title + color.gray(desc || ''); - } - - 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(); - - let _entriesToDisplay = entriesToDisplay(this.select, this.choices.length, this.limit), - startIndex = _entriesToDisplay.startIndex, - endIndex = _entriesToDisplay.endIndex; - - this.outputText = [style.symbol(this.done, this.aborted, this.exited), color.bold(this.msg), style.delimiter(this.completing), this.done && this.suggestions[this.select] ? this.suggestions[this.select].title : this.rendered = this.transform.render(this.input)].join(' '); - - if (!this.done) { - const suggestions = this.suggestions.slice(startIndex, endIndex).map((item, i) => this.renderOption(item, this.select === i + startIndex, i === 0 && startIndex > 0, i + startIndex === endIndex - 1 && endIndex < this.choices.length)).join('\n'); - this.outputText += `\n` + (suggestions || color.gray(this.fallback.title)); - } - - this.out.write(erase.line + cursor.to(0) + this.outputText); - } - -} - -module.exports = AutocompletePrompt;
\ No newline at end of file |