-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjiffyMenu.js
41 lines (34 loc) · 1010 Bytes
/
jiffyMenu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { ProcessSync } from "../qjs-ext-lib/src/process.js";
import Fzf from "../justjs/fzf.js";
import { modes } from "./main.js";
import {
addBorder,
alignCenter,
handleFzfExec,
setCommonFzfArgs,
} from "./utils.js";
export default async function JiffyMenu() {
const header = ` ┏┳ • ┏ ┏
┃ ┓ ╋ ╋ ┓┏
┗┛ ┗ ┛ ┛ ┗┫
┛`;
const fzfArgs = new Fzf().color("16,current-fg:cyan")
.read0().noInfo()
.prompt("''").marker("''").pointer("''")
.header(`"${alignCenter(header)}"`)
.bind("enter:accept").border("none")
.noScrollbar();
setCommonFzfArgs(fzfArgs);
fzfArgs.border("none").separator("''");
const fzfInput = modes.map((mode, i) => i !== 3 ? mode[0] : null).filter(
Boolean,
).map((choice) => addBorder(choice)).join("\0");
const JiffyMenu = new ProcessSync(
fzfArgs.toArray(),
{
input: fzfInput,
useShell: true,
},
);
await handleFzfExec(JiffyMenu);
}