ue-mcp 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tool-counts.json +2 -2
- package/dist/ui/select.js +63 -29
- package/dist/ui/select.js.map +1 -1
- package/package.json +1 -1
package/dist/tool-counts.json
CHANGED
package/dist/ui/select.js
CHANGED
|
@@ -7,20 +7,47 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Ctrl+C exits the process. Arrow keys and k/j both move the cursor.
|
|
9
9
|
*/
|
|
10
|
-
import { BOLD,
|
|
10
|
+
import { BOLD, CYAN, DIM, GREEN, HIDE_CURSOR, MOVE_UP, RESET, SHOW_CURSOR, } from "./ansi.js";
|
|
11
|
+
// Clears from the cursor to the end of the screen (CSI 0 J).
|
|
12
|
+
const CLEAR_TO_END = "\x1b[J";
|
|
13
|
+
// Strip CSI/SGR escapes so width math counts only visible characters.
|
|
14
|
+
function visibleLength(s) {
|
|
15
|
+
// eslint-disable-next-line no-control-regex
|
|
16
|
+
return s.replace(/\x1b\[[0-9;?]*[a-zA-Z]/g, "").length;
|
|
17
|
+
}
|
|
18
|
+
// How many terminal rows a printed line actually occupies once the
|
|
19
|
+
// terminal wraps it at the column boundary. console.log adds a newline
|
|
20
|
+
// regardless, so a 0-char line still takes one row.
|
|
21
|
+
function visualRowsForLine(line, width) {
|
|
22
|
+
const len = visibleLength(line);
|
|
23
|
+
if (len === 0)
|
|
24
|
+
return 1;
|
|
25
|
+
return Math.max(1, Math.ceil(len / width));
|
|
26
|
+
}
|
|
11
27
|
export function checkboxSelect(title, items) {
|
|
12
28
|
return new Promise((resolve) => {
|
|
13
29
|
let cursor = 0;
|
|
14
30
|
const states = items.map((i) => i.checked);
|
|
15
31
|
process.stdout.write(HIDE_CURSOR);
|
|
32
|
+
// Track how many TERMINAL rows the previous frame occupied — including
|
|
33
|
+
// any rows produced by wrapping a long label+suffix at the column
|
|
34
|
+
// boundary. Without this, MOVE_UP only walks back logical lines and
|
|
35
|
+
// leaves wrapped fragments stranded above each redraw.
|
|
36
|
+
let lastRowsRendered = 0;
|
|
16
37
|
function render(firstRender = false) {
|
|
38
|
+
const width = process.stdout.columns ?? 80;
|
|
17
39
|
if (!firstRender) {
|
|
18
|
-
//
|
|
19
|
-
|
|
40
|
+
// Walk the cursor back to the start of the previous frame, then
|
|
41
|
+
// erase everything from there to the end of the screen so wrapped
|
|
42
|
+
// fragments from the previous render can't leak through.
|
|
43
|
+
process.stdout.write(MOVE_UP(lastRowsRendered));
|
|
44
|
+
process.stdout.write("\r");
|
|
45
|
+
process.stdout.write(CLEAR_TO_END);
|
|
20
46
|
}
|
|
21
|
-
|
|
47
|
+
const titleLine = ` ${BOLD}?${RESET} ${title} ${DIM}(↑↓ move, space toggle, enter confirm)${RESET}`;
|
|
48
|
+
console.log(titleLine);
|
|
49
|
+
let rows = visualRowsForLine(titleLine, width);
|
|
22
50
|
for (let i = 0; i < items.length; i++) {
|
|
23
|
-
process.stdout.write(CLEAR_LINE);
|
|
24
51
|
const pointer = i === cursor ? `${CYAN}❯${RESET}` : " ";
|
|
25
52
|
const check = states[i]
|
|
26
53
|
? `${GREEN}◉${RESET}`
|
|
@@ -29,8 +56,11 @@ export function checkboxSelect(title, items) {
|
|
|
29
56
|
const suffix = items[i].suffix
|
|
30
57
|
? ` ${DIM}${items[i].suffix}${RESET}`
|
|
31
58
|
: "";
|
|
32
|
-
|
|
59
|
+
const itemLine = ` ${pointer} ${check} ${label}${suffix}`;
|
|
60
|
+
console.log(itemLine);
|
|
61
|
+
rows += visualRowsForLine(itemLine, width);
|
|
33
62
|
}
|
|
63
|
+
lastRowsRendered = rows;
|
|
34
64
|
}
|
|
35
65
|
render(true);
|
|
36
66
|
const stdin = process.stdin;
|
|
@@ -51,26 +81,25 @@ export function checkboxSelect(title, items) {
|
|
|
51
81
|
stdin.setRawMode(false);
|
|
52
82
|
stdin.pause();
|
|
53
83
|
stdin.removeListener("data", onData);
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
84
|
+
// Walk back to the top of the menu and erase the whole frame so
|
|
85
|
+
// we can replace it with a one-line summary. lastRowsRendered
|
|
86
|
+
// includes wrapped rows; MOVE_UP by logical-item-count would
|
|
87
|
+
// strand wrapped fragments above the summary.
|
|
88
|
+
process.stdout.write(MOVE_UP(lastRowsRendered));
|
|
89
|
+
process.stdout.write("\r");
|
|
90
|
+
process.stdout.write(CLEAR_TO_END);
|
|
91
|
+
const enabledLabels = items
|
|
57
92
|
.filter((_, i) => states[i])
|
|
58
93
|
.map((i) => i.label);
|
|
59
|
-
const
|
|
94
|
+
const disabledLabels = items
|
|
60
95
|
.filter((_, i) => !states[i])
|
|
61
96
|
.map((i) => i.label);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
console.log(` ${GREEN}✓${RESET} All ${items.length} categories enabled`);
|
|
97
|
+
if (disabledLabels.length === 0) {
|
|
98
|
+
console.log(` ${GREEN}✓${RESET} ${title}: all ${items.length} selected`);
|
|
65
99
|
}
|
|
66
100
|
else {
|
|
67
|
-
console.log(` ${GREEN}✓${RESET} ${
|
|
101
|
+
console.log(` ${GREEN}✓${RESET} ${title}: ${enabledLabels.length}/${items.length} selected${disabledLabels.length > 0 ? ` ${DIM}(skipped: ${disabledLabels.join(", ")})${RESET}` : ""}`);
|
|
68
102
|
}
|
|
69
|
-
// Clear the item lines
|
|
70
|
-
for (let i = 0; i < items.length; i++) {
|
|
71
|
-
process.stdout.write(CLEAR_LINE + "\n");
|
|
72
|
-
}
|
|
73
|
-
process.stdout.write(MOVE_UP(items.length));
|
|
74
103
|
resolve(states);
|
|
75
104
|
return;
|
|
76
105
|
}
|
|
@@ -108,17 +137,25 @@ export function singleSelect(title, items) {
|
|
|
108
137
|
return new Promise((resolve) => {
|
|
109
138
|
let cursor = 0;
|
|
110
139
|
process.stdout.write(HIDE_CURSOR);
|
|
140
|
+
let lastRowsRendered = 0;
|
|
111
141
|
function render(firstRender = false) {
|
|
142
|
+
const width = process.stdout.columns ?? 80;
|
|
112
143
|
if (!firstRender) {
|
|
113
|
-
process.stdout.write(MOVE_UP(
|
|
144
|
+
process.stdout.write(MOVE_UP(lastRowsRendered));
|
|
145
|
+
process.stdout.write("\r");
|
|
146
|
+
process.stdout.write(CLEAR_TO_END);
|
|
114
147
|
}
|
|
115
|
-
|
|
148
|
+
const titleLine = ` ${BOLD}?${RESET} ${title} ${DIM}(↑↓ move, enter select)${RESET}`;
|
|
149
|
+
console.log(titleLine);
|
|
150
|
+
let rows = visualRowsForLine(titleLine, width);
|
|
116
151
|
for (let i = 0; i < items.length; i++) {
|
|
117
|
-
process.stdout.write(CLEAR_LINE);
|
|
118
152
|
const pointer = i === cursor ? `${CYAN}❯${RESET}` : " ";
|
|
119
153
|
const label = i === cursor ? `${BOLD}${items[i]}${RESET}` : items[i];
|
|
120
|
-
|
|
154
|
+
const itemLine = ` ${pointer} ${label}`;
|
|
155
|
+
console.log(itemLine);
|
|
156
|
+
rows += visualRowsForLine(itemLine, width);
|
|
121
157
|
}
|
|
158
|
+
lastRowsRendered = rows;
|
|
122
159
|
}
|
|
123
160
|
render(true);
|
|
124
161
|
const stdin = process.stdin;
|
|
@@ -137,13 +174,10 @@ export function singleSelect(title, items) {
|
|
|
137
174
|
stdin.setRawMode(false);
|
|
138
175
|
stdin.pause();
|
|
139
176
|
stdin.removeListener("data", onData);
|
|
140
|
-
process.stdout.write(MOVE_UP(
|
|
141
|
-
process.stdout.write(
|
|
177
|
+
process.stdout.write(MOVE_UP(lastRowsRendered));
|
|
178
|
+
process.stdout.write("\r");
|
|
179
|
+
process.stdout.write(CLEAR_TO_END);
|
|
142
180
|
console.log(` ${GREEN}✓${RESET} ${title}: ${BOLD}${items[cursor]}${RESET}`);
|
|
143
|
-
for (let i = 0; i < items.length; i++) {
|
|
144
|
-
process.stdout.write(CLEAR_LINE + "\n");
|
|
145
|
-
}
|
|
146
|
-
process.stdout.write(MOVE_UP(items.length));
|
|
147
181
|
resolve(cursor);
|
|
148
182
|
return;
|
|
149
183
|
}
|
package/dist/ui/select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/ui/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/ui/select.ts"],"names":[],"mappings":"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"}
|