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
JavaScript
;
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}`;
});