UNPKG

deleo

Version:

Deleo, a TypeScript-based CLI tool, simplifies Discord content management by enabling efficient deletion of messages in open DMs or specific channels.

95 lines (94 loc) 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), function _export(e, t) { for(var i in t)Object.defineProperty(e, i, { enumerable: !0, get: t[i] }); }(exports, { Separator: function() { return e.Separator; }, default: function() { return l; } }); const e = require("@inquirer/core"), t = _interop_require_default(require("ansi-escapes")), i = _interop_require_default(require("chalk")), a = _interop_require_default(require("figures")); function _interop_require_default(e) { return e && e.__esModule ? e : { default: e }; } function isSelectableChoice(t) { return null != t && !e.Separator.isSeparator(t) && !t.disabled; } const l = (0, e.createPrompt)((l, r)=>{ let { prefix: c = (0, e.usePrefix)(), instructions: n, transformer: o } = l, [u, d] = (0, e.useState)("pending"), [s, f] = (0, e.useState)(()=>l.choices.map((e)=>({ ...e }))), [p, h] = (0, e.useState)(0), [b, S] = (0, e.useState)(!0); l.default && s.forEach((e)=>{ isSelectableChoice(e) && l.default.indexOf(e.value) >= 0 && (e.checked = !0); }), l.default = void 0, (0, e.useKeypress)((t)=>{ let i = p; if ((0, e.isEnterKey)(t)) d("done"), r(s.filter((e)=>isSelectableChoice(e) && e.checked).map((e)=>e.value)); else if ((0, e.isUpKey)(t) || (0, e.isDownKey)(t)) { let a; let l = (0, e.isUpKey)(t) ? -1 : 1; for(; !isSelectableChoice(a);)i = (i + l + s.length) % s.length, a = s[i]; h(i); } else if ((0, e.isSpaceKey)(t)) S(!1), f(s.map((e, t)=>t === p && isSelectableChoice(e) ? { ...e, checked: !e.checked } : e)); else if ("a" === t.name) { let e = !!s.find((e)=>isSelectableChoice(e) && !e.checked); f(s.map((t)=>isSelectableChoice(t) ? { ...t, checked: e } : t)); } else if ("i" === t.name) f(s.map((e)=>isSelectableChoice(e) ? { ...e, checked: !e.checked } : e)); else if ((0, e.isNumberKey)(t)) { let e = Number(t.name) - 1; if (!isSelectableChoice(s[e])) return; h(e), f(s.map((t, i)=>i === e && isSelectableChoice(t) ? { ...t, checked: !t.checked } : t)); } }); let $ = i.default.bold(l.message), m = s.map((t, l)=>{ if (e.Separator.isSeparator(t)) return ` ${t.separator}`; let r = t.name || t.value; if (t.disabled) { let e = "string" == typeof t.disabled ? t.disabled : "(disabled)"; return i.default.dim(`- ${r} ${e}`); } let c = t.checked ? i.default.green(a.default.circleFilled) : a.default.circle; return l === p ? i.default.cyan(`${a.default.pointer}${c} ${r}`) : ` ${c} ${r}`; }).join("\n"), _ = (0, e.usePagination)(m, { active: p, pageSize: l.pageSize }); if ("done" === u) { let e = s.filter((e)=>isSelectableChoice(e) && e.checked), t = ""; return t = o ? o(e) : e.map((e)=>e.name || e.value).join(", "), `${c} ${$} ${t}`; } let y = ""; if (b && (void 0 === n || n)) { if ("string" == typeof n) y = n; else { let e = [ `${i.default.cyan.bold("<space>")} to select`, `${i.default.cyan.bold("<a>")} to toggle all`, `${i.default.cyan.bold("<i>")} to invert selection`, `and ${i.default.cyan.bold("<enter>")} to proceed` ]; y = ` (Press ${e.join(", ")})`; } } return `${c} ${$}${y}\n${_}${t.default.cursorHide}`; });