mepcli 1.3.2 → 2.0.0-beta.1
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/README.md +11 -2
- package/dist/{ansi.js → src/ansi.js} +17 -9
- package/dist/src/ansi.js.map +1 -0
- package/dist/{base.js → src/base.js} +82 -70
- package/dist/src/base.js.map +1 -0
- package/dist/{core.js → src/core.js} +266 -320
- package/dist/src/core.js.map +1 -0
- package/dist/src/data/countries.js +569 -0
- package/dist/src/data/countries.js.map +1 -0
- package/dist/src/data/licenses.js +480 -0
- package/dist/src/data/licenses.js.map +1 -0
- package/dist/{highlight.js → src/highlight.js} +77 -69
- package/dist/src/highlight.js.map +1 -0
- package/dist/src/index.js +66 -0
- package/dist/src/index.js.map +1 -0
- package/dist/{input.js → src/input.js} +47 -41
- package/dist/src/input.js.map +1 -0
- package/dist/src/pipeline.js +273 -0
- package/dist/src/pipeline.js.map +1 -0
- package/dist/{prompts → src/prompts}/autocomplete.js +58 -57
- package/dist/src/prompts/autocomplete.js.map +1 -0
- package/dist/{prompts → src/prompts}/box.js +86 -53
- package/dist/src/prompts/box.js.map +1 -0
- package/dist/{prompts → src/prompts}/breadcrumb-search.js +110 -98
- package/dist/src/prompts/breadcrumb-search.js.map +1 -0
- package/dist/{prompts → src/prompts}/breadcrumb.js +126 -121
- package/dist/src/prompts/breadcrumb.js.map +1 -0
- package/dist/{prompts → src/prompts}/byte.js +69 -52
- package/dist/src/prompts/byte.js.map +1 -0
- package/dist/{prompts → src/prompts}/calculator.js +79 -56
- package/dist/src/prompts/calculator.js.map +1 -0
- package/dist/{prompts → src/prompts}/calendar.js +167 -127
- package/dist/src/prompts/calendar.js.map +1 -0
- package/dist/{prompts → src/prompts}/checkbox.js +53 -49
- package/dist/src/prompts/checkbox.js.map +1 -0
- package/dist/{prompts → src/prompts}/code.js +88 -76
- package/dist/src/prompts/code.js.map +1 -0
- package/dist/{prompts → src/prompts}/color.js +68 -50
- package/dist/src/prompts/color.js.map +1 -0
- package/dist/{prompts → src/prompts}/confirm.js +22 -15
- package/dist/src/prompts/confirm.js.map +1 -0
- package/dist/{prompts → src/prompts}/connection-string.js +59 -36
- package/dist/src/prompts/connection-string.js.map +1 -0
- package/dist/{prompts → src/prompts}/cron.js +90 -59
- package/dist/src/prompts/cron.js.map +1 -0
- package/dist/src/prompts/curl-utils.js +71 -0
- package/dist/src/prompts/curl-utils.js.map +1 -0
- package/dist/{prompts → src/prompts}/curl.js +153 -132
- package/dist/src/prompts/curl.js.map +1 -0
- package/dist/{prompts → src/prompts}/data-inspector.js +96 -91
- package/dist/src/prompts/data-inspector.js.map +1 -0
- package/dist/{prompts → src/prompts}/date.js +64 -57
- package/dist/src/prompts/date.js.map +1 -0
- package/dist/{prompts → src/prompts}/dependency.js +84 -80
- package/dist/src/prompts/dependency.js.map +1 -0
- package/dist/{prompts → src/prompts}/dial.js +49 -35
- package/dist/src/prompts/dial.js.map +1 -0
- package/dist/src/prompts/diff.js +118 -0
- package/dist/src/prompts/diff.js.map +1 -0
- package/dist/{prompts → src/prompts}/draw.js +83 -80
- package/dist/src/prompts/draw.js.map +1 -0
- package/dist/src/prompts/editor.js +234 -0
- package/dist/src/prompts/editor.js.map +1 -0
- package/dist/{prompts → src/prompts}/emoji.js +80 -82
- package/dist/src/prompts/emoji.js.map +1 -0
- package/dist/{prompts → src/prompts}/exec.js +60 -46
- package/dist/src/prompts/exec.js.map +1 -0
- package/dist/src/prompts/file.js +217 -0
- package/dist/src/prompts/file.js.map +1 -0
- package/dist/{prompts → src/prompts}/form.js +63 -54
- package/dist/src/prompts/form.js.map +1 -0
- package/dist/{prompts → src/prompts}/fuzzy-multi-column.js +65 -53
- package/dist/src/prompts/fuzzy-multi-column.js.map +1 -0
- package/dist/{prompts → src/prompts}/fuzzy.js +66 -55
- package/dist/src/prompts/fuzzy.js.map +1 -0
- package/dist/src/prompts/gauge.js +137 -0
- package/dist/src/prompts/gauge.js.map +1 -0
- package/dist/{prompts → src/prompts}/grid.js +70 -57
- package/dist/src/prompts/grid.js.map +1 -0
- package/dist/{prompts → src/prompts}/heatmap.js +70 -64
- package/dist/src/prompts/heatmap.js.map +1 -0
- package/dist/{prompts → src/prompts}/ip.js +56 -36
- package/dist/src/prompts/ip.js.map +1 -0
- package/dist/{prompts → src/prompts}/kanban.js +63 -58
- package/dist/src/prompts/kanban.js.map +1 -0
- package/dist/src/prompts/keypress.js +54 -0
- package/dist/src/prompts/keypress.js.map +1 -0
- package/dist/src/prompts/license.js +144 -0
- package/dist/src/prompts/license.js.map +1 -0
- package/dist/{prompts → src/prompts}/list.js +46 -31
- package/dist/src/prompts/list.js.map +1 -0
- package/dist/{prompts → src/prompts}/map.js +93 -77
- package/dist/src/prompts/map.js.map +1 -0
- package/dist/{prompts → src/prompts}/match.js +91 -95
- package/dist/src/prompts/match.js.map +1 -0
- package/dist/{prompts → src/prompts}/miller.js +74 -67
- package/dist/src/prompts/miller.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-column-select.js +54 -44
- package/dist/src/prompts/multi-column-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-range.js +70 -52
- package/dist/src/prompts/multi-range.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-select.js +67 -58
- package/dist/src/prompts/multi-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/number.js +51 -39
- package/dist/src/prompts/number.js.map +1 -0
- package/dist/{prompts → src/prompts}/otp.js +43 -27
- package/dist/src/prompts/otp.js.map +1 -0
- package/dist/{prompts → src/prompts}/pattern.js +74 -71
- package/dist/src/prompts/pattern.js.map +1 -0
- package/dist/{prompts → src/prompts}/phone.js +107 -118
- package/dist/src/prompts/phone.js.map +1 -0
- package/dist/src/prompts/quiz-select.js +114 -0
- package/dist/src/prompts/quiz-select.js.map +1 -0
- package/dist/src/prompts/quiz-text.js +98 -0
- package/dist/src/prompts/quiz-text.js.map +1 -0
- package/dist/{prompts → src/prompts}/range.js +85 -61
- package/dist/src/prompts/range.js.map +1 -0
- package/dist/{prompts → src/prompts}/rating.js +29 -24
- package/dist/src/prompts/rating.js.map +1 -0
- package/dist/{prompts → src/prompts}/regex.js +50 -36
- package/dist/src/prompts/regex.js.map +1 -0
- package/dist/{prompts → src/prompts}/region.js +62 -56
- package/dist/src/prompts/region.js.map +1 -0
- package/dist/{prompts → src/prompts}/schedule.js +82 -75
- package/dist/src/prompts/schedule.js.map +1 -0
- package/dist/{prompts → src/prompts}/scroll.js +61 -58
- package/dist/src/prompts/scroll.js.map +1 -0
- package/dist/src/prompts/seat.js +164 -0
- package/dist/src/prompts/seat.js.map +1 -0
- package/dist/{prompts → src/prompts}/select-range.js +58 -46
- package/dist/src/prompts/select-range.js.map +1 -0
- package/dist/{prompts → src/prompts}/select.js +65 -66
- package/dist/src/prompts/select.js.map +1 -0
- package/dist/{prompts → src/prompts}/semver.js +24 -13
- package/dist/src/prompts/semver.js.map +1 -0
- package/dist/src/prompts/shortcut.js +133 -0
- package/dist/src/prompts/shortcut.js.map +1 -0
- package/dist/{prompts → src/prompts}/slider.js +28 -23
- package/dist/src/prompts/slider.js.map +1 -0
- package/dist/src/prompts/slot.js +117 -0
- package/dist/src/prompts/slot.js.map +1 -0
- package/dist/{prompts → src/prompts}/snippet.js +82 -61
- package/dist/src/prompts/snippet.js.map +1 -0
- package/dist/{prompts → src/prompts}/sort-grid.js +64 -59
- package/dist/src/prompts/sort-grid.js.map +1 -0
- package/dist/{prompts → src/prompts}/sort.js +59 -49
- package/dist/src/prompts/sort.js.map +1 -0
- package/dist/src/prompts/spam.js +80 -0
- package/dist/src/prompts/spam.js.map +1 -0
- package/dist/{prompts → src/prompts}/spreadsheet.js +71 -70
- package/dist/src/prompts/spreadsheet.js.map +1 -0
- package/dist/{prompts → src/prompts}/table.js +52 -38
- package/dist/src/prompts/table.js.map +1 -0
- package/dist/{prompts → src/prompts}/text.js +74 -70
- package/dist/src/prompts/text.js.map +1 -0
- package/dist/{prompts → src/prompts}/time.js +105 -96
- package/dist/src/prompts/time.js.map +1 -0
- package/dist/src/prompts/toggle.js +53 -0
- package/dist/src/prompts/toggle.js.map +1 -0
- package/dist/{prompts → src/prompts}/transfer.js +71 -67
- package/dist/src/prompts/transfer.js.map +1 -0
- package/dist/{prompts → src/prompts}/tree-select.js +83 -86
- package/dist/src/prompts/tree-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/tree.js +69 -67
- package/dist/src/prompts/tree.js.map +1 -0
- package/dist/src/prompts/wait.js +79 -0
- package/dist/src/prompts/wait.js.map +1 -0
- package/dist/src/spinner.js +105 -0
- package/dist/src/spinner.js.map +1 -0
- package/dist/{symbols.js → src/symbols.js} +32 -7
- package/dist/src/symbols.js.map +1 -0
- package/dist/{tasks.js → src/tasks.js} +104 -79
- package/dist/src/tasks.js.map +1 -0
- package/dist/src/theme.js +29 -0
- package/dist/src/theme.js.map +1 -0
- package/dist/src/types.js +8 -0
- package/dist/src/types.js.map +1 -0
- package/dist/{utils.js → src/utils.js} +196 -152
- package/dist/src/utils.js.map +1 -0
- package/package.json +16 -13
- package/dist/ansi.d.ts +0 -36
- package/dist/base.d.ts +0 -60
- package/dist/core.d.ts +0 -1072
- package/dist/data/countries.d.ts +0 -2
- package/dist/data/countries.js +0 -105
- package/dist/data/licenses.d.ts +0 -2
- package/dist/data/licenses.js +0 -109
- package/dist/highlight.d.ts +0 -7
- package/dist/index.d.ts +0 -48
- package/dist/index.js +0 -64
- package/dist/input.d.ts +0 -14
- package/dist/pipeline.d.ts +0 -39
- package/dist/pipeline.js +0 -54
- package/dist/prompts/autocomplete.d.ts +0 -22
- package/dist/prompts/box.d.ts +0 -21
- package/dist/prompts/breadcrumb-search.d.ts +0 -14
- package/dist/prompts/breadcrumb.d.ts +0 -32
- package/dist/prompts/byte.d.ts +0 -13
- package/dist/prompts/calculator.d.ts +0 -17
- package/dist/prompts/calendar.d.ts +0 -33
- package/dist/prompts/checkbox.d.ts +0 -13
- package/dist/prompts/code.d.ts +0 -19
- package/dist/prompts/color.d.ts +0 -14
- package/dist/prompts/confirm.d.ts +0 -8
- package/dist/prompts/connection-string.d.ts +0 -18
- package/dist/prompts/cron.d.ts +0 -13
- package/dist/prompts/curl-utils.d.ts +0 -25
- package/dist/prompts/curl-utils.js +0 -41
- package/dist/prompts/curl.d.ts +0 -41
- package/dist/prompts/data-inspector.d.ts +0 -22
- package/dist/prompts/date.d.ts +0 -12
- package/dist/prompts/dependency.d.ts +0 -16
- package/dist/prompts/dial.d.ts +0 -10
- package/dist/prompts/diff.d.ts +0 -10
- package/dist/prompts/diff.js +0 -101
- package/dist/prompts/draw.d.ts +0 -20
- package/dist/prompts/editor.d.ts +0 -14
- package/dist/prompts/editor.js +0 -203
- package/dist/prompts/emoji.d.ts +0 -18
- package/dist/prompts/exec.d.ts +0 -17
- package/dist/prompts/file.d.ts +0 -21
- package/dist/prompts/file.js +0 -210
- package/dist/prompts/form.d.ts +0 -18
- package/dist/prompts/fuzzy-multi-column.d.ts +0 -12
- package/dist/prompts/fuzzy.d.ts +0 -12
- package/dist/prompts/gauge.d.ts +0 -21
- package/dist/prompts/gauge.js +0 -130
- package/dist/prompts/grid.d.ts +0 -14
- package/dist/prompts/heatmap.d.ts +0 -13
- package/dist/prompts/ip.d.ts +0 -11
- package/dist/prompts/kanban.d.ts +0 -17
- package/dist/prompts/keypress.d.ts +0 -7
- package/dist/prompts/keypress.js +0 -55
- package/dist/prompts/license.d.ts +0 -9
- package/dist/prompts/license.js +0 -105
- package/dist/prompts/list.d.ts +0 -9
- package/dist/prompts/map.d.ts +0 -17
- package/dist/prompts/match.d.ts +0 -19
- package/dist/prompts/miller.d.ts +0 -15
- package/dist/prompts/multi-column-select.d.ts +0 -10
- package/dist/prompts/multi-range.d.ts +0 -9
- package/dist/prompts/multi-select.d.ts +0 -15
- package/dist/prompts/number.d.ts +0 -11
- package/dist/prompts/otp.d.ts +0 -10
- package/dist/prompts/pattern.d.ts +0 -22
- package/dist/prompts/phone.d.ts +0 -41
- package/dist/prompts/quiz-select.d.ts +0 -10
- package/dist/prompts/quiz-select.js +0 -104
- package/dist/prompts/quiz-text.d.ts +0 -11
- package/dist/prompts/quiz-text.js +0 -82
- package/dist/prompts/range.d.ts +0 -9
- package/dist/prompts/rating.d.ts +0 -8
- package/dist/prompts/regex.d.ts +0 -13
- package/dist/prompts/region.d.ts +0 -11
- package/dist/prompts/schedule.d.ts +0 -20
- package/dist/prompts/scroll.d.ts +0 -13
- package/dist/prompts/seat.d.ts +0 -17
- package/dist/prompts/seat.js +0 -165
- package/dist/prompts/select-range.d.ts +0 -8
- package/dist/prompts/select.d.ts +0 -15
- package/dist/prompts/semver.d.ts +0 -6
- package/dist/prompts/shortcut.d.ts +0 -9
- package/dist/prompts/shortcut.js +0 -135
- package/dist/prompts/slider.d.ts +0 -8
- package/dist/prompts/slot.d.ts +0 -16
- package/dist/prompts/slot.js +0 -107
- package/dist/prompts/snippet.d.ts +0 -19
- package/dist/prompts/sort-grid.d.ts +0 -16
- package/dist/prompts/sort.d.ts +0 -14
- package/dist/prompts/spam.d.ts +0 -17
- package/dist/prompts/spam.js +0 -62
- package/dist/prompts/spreadsheet.d.ts +0 -21
- package/dist/prompts/table.d.ts +0 -14
- package/dist/prompts/text.d.ts +0 -17
- package/dist/prompts/time.d.ts +0 -12
- package/dist/prompts/toggle.d.ts +0 -8
- package/dist/prompts/toggle.js +0 -47
- package/dist/prompts/transfer.d.ts +0 -18
- package/dist/prompts/tree-select.d.ts +0 -31
- package/dist/prompts/tree.d.ts +0 -20
- package/dist/prompts/wait.d.ts +0 -18
- package/dist/prompts/wait.js +0 -62
- package/dist/spinner.d.ts +0 -33
- package/dist/spinner.js +0 -89
- package/dist/symbols.d.ts +0 -33
- package/dist/tasks.d.ts +0 -57
- package/dist/theme.d.ts +0 -2
- package/dist/theme.js +0 -20
- package/dist/types.d.ts +0 -503
- package/dist/types.js +0 -5
- package/dist/utils.d.ts +0 -81
|
@@ -1,40 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
super(options);
|
|
10
|
-
this.focus = 'top';
|
|
11
|
-
this.inputBuffer = '';
|
|
12
|
-
const initial = options.initial;
|
|
13
|
-
if (typeof initial === 'number') {
|
|
14
|
-
this.values = { top: initial, right: initial, bottom: initial, left: initial };
|
|
15
|
-
}
|
|
16
|
-
else if (typeof initial === 'object') {
|
|
17
|
-
this.values = {
|
|
18
|
-
top: initial.top ?? 0,
|
|
19
|
-
right: initial.right ?? 0,
|
|
20
|
-
bottom: initial.bottom ?? 0,
|
|
21
|
-
left: initial.left ?? 0
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.values = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
26
|
-
}
|
|
27
|
-
this.inputBuffer = this.values.top.toString();
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BoxPrompt", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BoxPrompt;
|
|
28
9
|
}
|
|
10
|
+
});
|
|
11
|
+
const _base = require("../base");
|
|
12
|
+
const _ansi = require("../ansi");
|
|
13
|
+
const _theme = require("../theme");
|
|
14
|
+
function _define_property(obj, key, value) {
|
|
15
|
+
if (key in obj) {
|
|
16
|
+
Object.defineProperty(obj, key, {
|
|
17
|
+
value: value,
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
obj[key] = value;
|
|
24
|
+
}
|
|
25
|
+
return obj;
|
|
26
|
+
}
|
|
27
|
+
let BoxPrompt = class BoxPrompt extends _base.Prompt {
|
|
29
28
|
commitBuffer() {
|
|
30
29
|
let val = parseInt(this.inputBuffer, 10);
|
|
31
|
-
if (isNaN(val))
|
|
32
|
-
val = 0;
|
|
30
|
+
if (isNaN(val)) val = 0;
|
|
33
31
|
// Apply constraints
|
|
34
|
-
if (this.options.min !== undefined && val < this.options.min)
|
|
35
|
-
|
|
36
|
-
if (this.options.max !== undefined && val > this.options.max)
|
|
37
|
-
val = this.options.max;
|
|
32
|
+
if (this.options.min !== undefined && val < this.options.min) val = this.options.min;
|
|
33
|
+
if (this.options.max !== undefined && val > this.options.max) val = this.options.max;
|
|
38
34
|
this.values[this.focus] = val;
|
|
39
35
|
this.inputBuffer = val.toString(); // Normalize buffer
|
|
40
36
|
}
|
|
@@ -45,23 +41,20 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
45
41
|
}
|
|
46
42
|
increment(amount) {
|
|
47
43
|
let val = parseInt(this.inputBuffer, 10);
|
|
48
|
-
if (isNaN(val))
|
|
49
|
-
val = 0;
|
|
44
|
+
if (isNaN(val)) val = 0;
|
|
50
45
|
val += amount;
|
|
51
|
-
if (this.options.min !== undefined && val < this.options.min)
|
|
52
|
-
|
|
53
|
-
if (this.options.max !== undefined && val > this.options.max)
|
|
54
|
-
val = this.options.max;
|
|
46
|
+
if (this.options.min !== undefined && val < this.options.min) val = this.options.min;
|
|
47
|
+
if (this.options.max !== undefined && val > this.options.max) val = this.options.max;
|
|
55
48
|
this.inputBuffer = val.toString();
|
|
56
49
|
}
|
|
57
50
|
render(_firstRender) {
|
|
58
|
-
const title = `${
|
|
51
|
+
const title = `${_theme.theme.success}? ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} (Arrows to navigate, Numbers to edit)`;
|
|
59
52
|
// Format value function
|
|
60
|
-
const formatVal = (side)
|
|
53
|
+
const formatVal = (side)=>{
|
|
61
54
|
const isFocused = this.focus === side;
|
|
62
55
|
const text = isFocused ? this.inputBuffer : this.values[side].toString();
|
|
63
56
|
if (isFocused) {
|
|
64
|
-
return `${
|
|
57
|
+
return `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.BOLD}[ ${text} ]${_ansi.ANSI.RESET}`;
|
|
65
58
|
}
|
|
66
59
|
return ` ${text} `;
|
|
67
60
|
};
|
|
@@ -88,13 +81,17 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
88
81
|
}
|
|
89
82
|
handleMouse(event) {
|
|
90
83
|
if (event.name === 'mouse' && event.action === 'scroll') {
|
|
91
|
-
const order = [
|
|
84
|
+
const order = [
|
|
85
|
+
'top',
|
|
86
|
+
'right',
|
|
87
|
+
'bottom',
|
|
88
|
+
'left'
|
|
89
|
+
];
|
|
92
90
|
const idx = order.indexOf(this.focus);
|
|
93
91
|
if (event.scroll === 'down') {
|
|
94
92
|
// Next (Down usually means going forward/down in list)
|
|
95
93
|
this.changeFocus(order[(idx + 1) % 4]);
|
|
96
|
-
}
|
|
97
|
-
else if (event.scroll === 'up') {
|
|
94
|
+
} else if (event.scroll === 'up') {
|
|
98
95
|
// Previous
|
|
99
96
|
this.changeFocus(order[(idx + 3) % 4]); // +3 is same as -1 in mod 4
|
|
100
97
|
}
|
|
@@ -139,7 +136,12 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
139
136
|
}
|
|
140
137
|
// Tab Cycling
|
|
141
138
|
if (char === '\t') {
|
|
142
|
-
const order = [
|
|
139
|
+
const order = [
|
|
140
|
+
'top',
|
|
141
|
+
'right',
|
|
142
|
+
'bottom',
|
|
143
|
+
'left'
|
|
144
|
+
];
|
|
143
145
|
const idx = order.indexOf(this.focus);
|
|
144
146
|
this.changeFocus(order[(idx + 1) % 4]);
|
|
145
147
|
this.render(false);
|
|
@@ -147,7 +149,12 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
147
149
|
}
|
|
148
150
|
// Shift+Tab Cycling (\u001b[Z)
|
|
149
151
|
if (char === '\u001b[Z') {
|
|
150
|
-
const order = [
|
|
152
|
+
const order = [
|
|
153
|
+
'top',
|
|
154
|
+
'right',
|
|
155
|
+
'bottom',
|
|
156
|
+
'left'
|
|
157
|
+
];
|
|
151
158
|
const idx = order.indexOf(this.focus);
|
|
152
159
|
this.changeFocus(order[(idx + 3) % 4]); // (idx - 1) % 4 handling negative
|
|
153
160
|
this.render(false);
|
|
@@ -155,7 +162,7 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
155
162
|
}
|
|
156
163
|
// Increment/Decrement (+ / -)
|
|
157
164
|
const step = this.options.step || 1;
|
|
158
|
-
if (char === '+' || char === '=') {
|
|
165
|
+
if (char === '+' || char === '=') {
|
|
159
166
|
this.increment(step);
|
|
160
167
|
this.render(false);
|
|
161
168
|
return;
|
|
@@ -170,8 +177,7 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
170
177
|
// Special case: if buffer is "0", replace it unless we are appending
|
|
171
178
|
if (this.inputBuffer === '0') {
|
|
172
179
|
this.inputBuffer = char;
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
180
|
+
} else {
|
|
175
181
|
this.inputBuffer += char;
|
|
176
182
|
}
|
|
177
183
|
this.render(false);
|
|
@@ -181,12 +187,39 @@ class BoxPrompt extends base_1.Prompt {
|
|
|
181
187
|
if (char === '\u0008' || char === '\x7f') {
|
|
182
188
|
if (this.inputBuffer.length > 0) {
|
|
183
189
|
this.inputBuffer = this.inputBuffer.slice(0, -1);
|
|
184
|
-
if (this.inputBuffer === '')
|
|
185
|
-
this.inputBuffer = '0'; // default to 0
|
|
190
|
+
if (this.inputBuffer === '') this.inputBuffer = '0'; // default to 0
|
|
186
191
|
}
|
|
187
192
|
this.render(false);
|
|
188
193
|
return;
|
|
189
194
|
}
|
|
190
195
|
}
|
|
191
|
-
|
|
192
|
-
|
|
196
|
+
constructor(options){
|
|
197
|
+
super(options), _define_property(this, "values", void 0), _define_property(this, "focus", 'top'), _define_property(this, "inputBuffer", '');
|
|
198
|
+
const initial = options.initial;
|
|
199
|
+
if (typeof initial === 'number') {
|
|
200
|
+
this.values = {
|
|
201
|
+
top: initial,
|
|
202
|
+
right: initial,
|
|
203
|
+
bottom: initial,
|
|
204
|
+
left: initial
|
|
205
|
+
};
|
|
206
|
+
} else if (typeof initial === 'object') {
|
|
207
|
+
this.values = {
|
|
208
|
+
top: initial.top ?? 0,
|
|
209
|
+
right: initial.right ?? 0,
|
|
210
|
+
bottom: initial.bottom ?? 0,
|
|
211
|
+
left: initial.left ?? 0
|
|
212
|
+
};
|
|
213
|
+
} else {
|
|
214
|
+
this.values = {
|
|
215
|
+
top: 0,
|
|
216
|
+
right: 0,
|
|
217
|
+
bottom: 0,
|
|
218
|
+
left: 0
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
this.inputBuffer = this.values.top.toString();
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
//# sourceMappingURL=box.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/prompts/box.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { BoxOptions, MouseEvent } from '../types';\nimport { ANSI } from '../ansi';\nimport { theme } from '../theme';\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\ninterface BoxValues {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport class BoxPrompt extends Prompt<BoxValues, BoxOptions> {\n private values: BoxValues;\n private focus: Side = 'top';\n private inputBuffer: string = '';\n\n constructor(options: BoxOptions) {\n super(options);\n\n const initial: any = options.initial;\n if (typeof initial === 'number') {\n this.values = { top: initial, right: initial, bottom: initial, left: initial };\n } else if (typeof initial === 'object') {\n this.values = {\n top: initial.top ?? 0,\n right: initial.right ?? 0,\n bottom: initial.bottom ?? 0,\n left: initial.left ?? 0\n };\n } else {\n this.values = { top: 0, right: 0, bottom: 0, left: 0 };\n }\n\n this.inputBuffer = this.values.top.toString();\n }\n\n private commitBuffer() {\n let val = parseInt(this.inputBuffer, 10);\n if (isNaN(val)) val = 0;\n\n // Apply constraints\n if (this.options.min !== undefined && val < this.options.min) val = this.options.min;\n if (this.options.max !== undefined && val > this.options.max) val = this.options.max;\n\n this.values[this.focus] = val;\n this.inputBuffer = val.toString(); // Normalize buffer\n }\n\n private changeFocus(newFocus: Side) {\n this.commitBuffer(); // Save current\n this.focus = newFocus;\n this.inputBuffer = this.values[newFocus].toString();\n }\n\n private increment(amount: number) {\n let val = parseInt(this.inputBuffer, 10);\n if (isNaN(val)) val = 0;\n val += amount;\n\n if (this.options.min !== undefined && val < this.options.min) val = this.options.min;\n if (this.options.max !== undefined && val > this.options.max) val = this.options.max;\n\n this.inputBuffer = val.toString();\n }\n\n protected render(_firstRender: boolean) {\n const title = `${theme.success}? ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} (Arrows to navigate, Numbers to edit)`;\n\n // Format value function\n const formatVal = (side: Side) => {\n const isFocused = this.focus === side;\n const text = isFocused ? this.inputBuffer : this.values[side].toString();\n\n if (isFocused) {\n return `${ANSI.FG_CYAN}${ANSI.BOLD}[ ${text} ]${ANSI.RESET}`;\n }\n return ` ${text} `;\n };\n\n const vTop = formatVal('top');\n const vRight = formatVal('right');\n const vBottom = formatVal('bottom');\n const vLeft = formatVal('left');\n\n // Layout\n // [ Top ]\n // [ Left ] [ Right ]\n // [ Bottom ]\n\n // We need to pad to align them nicely. \n // Simple manual padding for MVP.\n\n // Calculate center padding based on longest string? \n // Keep it simple.\n\n let output = title + '\\n\\n';\n\n // Top Row (Centered)\n output += ` ${vTop}\\n`;\n\n // Middle Row\n output += ` ${vLeft} ${vRight}\\n`;\n\n // Bottom Row\n output += ` ${vBottom}\\n`;\n\n this.renderFrame(output);\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.name === 'mouse' && event.action === 'scroll') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n\n if (event.scroll === 'down') {\n // Next (Down usually means going forward/down in list)\n this.changeFocus(order[(idx + 1) % 4]);\n } else if (event.scroll === 'up') {\n // Previous\n this.changeFocus(order[(idx + 3) % 4]); // +3 is same as -1 in mod 4\n }\n this.render(false);\n }\n }\n\n protected handleInput(char: string, _key: Buffer) {\n // Enter -> Submit\n if (char === '\\r' || char === '\\n') {\n this.commitBuffer();\n this.submit(this.values);\n return;\n }\n\n // Navigation\n if (this.isUp(char)) {\n if (this.focus === 'bottom' || this.focus === 'left' || this.focus === 'right') {\n this.changeFocus('top');\n }\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (this.focus === 'top' || this.focus === 'left' || this.focus === 'right') {\n this.changeFocus('bottom');\n }\n this.render(false);\n return;\n }\n\n if (this.isLeft(char)) {\n if (this.focus === 'right' || this.focus === 'top' || this.focus === 'bottom') {\n this.changeFocus('left');\n }\n this.render(false);\n return;\n }\n\n if (this.isRight(char)) {\n if (this.focus === 'left' || this.focus === 'top' || this.focus === 'bottom') {\n this.changeFocus('right');\n }\n this.render(false);\n return;\n }\n\n // Tab Cycling\n if (char === '\\t') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n this.changeFocus(order[(idx + 1) % 4]);\n this.render(false);\n return;\n }\n\n // Shift+Tab Cycling (\\u001b[Z)\n if (char === '\\u001b[Z') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n this.changeFocus(order[(idx + 3) % 4]); // (idx - 1) % 4 handling negative\n this.render(false);\n return;\n }\n\n // Increment/Decrement (+ / -)\n const step = this.options.step || 1;\n if (char === '+' || char === '=') { // = is usually unshifted +\n this.increment(step);\n this.render(false);\n return;\n }\n if (char === '-' || char === '_') {\n this.increment(-step);\n this.render(false);\n return;\n }\n\n // Typing Numbers\n if (/^[0-9]$/.test(char)) {\n // Special case: if buffer is \"0\", replace it unless we are appending\n if (this.inputBuffer === '0') {\n this.inputBuffer = char;\n } else {\n this.inputBuffer += char;\n }\n this.render(false);\n return;\n }\n\n // Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n if (this.inputBuffer.length > 0) {\n this.inputBuffer = this.inputBuffer.slice(0, -1);\n if (this.inputBuffer === '') this.inputBuffer = '0'; // default to 0\n }\n this.render(false);\n return;\n }\n }\n}\n"],"names":["BoxPrompt","Prompt","commitBuffer","val","parseInt","inputBuffer","isNaN","options","min","undefined","max","values","focus","toString","changeFocus","newFocus","increment","amount","render","_firstRender","title","theme","success","ANSI","BOLD","message","RESET","formatVal","side","isFocused","text","FG_CYAN","vTop","vRight","vBottom","vLeft","output","renderFrame","handleMouse","event","name","action","order","idx","indexOf","scroll","handleInput","char","_key","submit","isUp","isDown","isLeft","isRight","step","test","length","slice","initial","top","right","bottom","left"],"mappings":"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"}
|
|
@@ -1,56 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BreadcrumbSearchPrompt", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BreadcrumbSearchPrompt;
|
|
7
9
|
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
10
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
const _breadcrumb = require("./breadcrumb");
|
|
12
|
+
const _theme = require("../theme");
|
|
13
|
+
const _ansi = require("../ansi");
|
|
14
|
+
const _symbols = require("../symbols");
|
|
15
|
+
const _utils = require("../utils");
|
|
16
|
+
const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
|
|
17
|
+
function _define_property(obj, key, value) {
|
|
18
|
+
if (key in obj) {
|
|
19
|
+
Object.defineProperty(obj, key, {
|
|
20
|
+
value: value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
obj[key] = value;
|
|
27
|
+
}
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
31
|
+
if (typeof WeakMap !== "function") return null;
|
|
32
|
+
var cacheBabelInterop = new WeakMap();
|
|
33
|
+
var cacheNodeInterop = new WeakMap();
|
|
34
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
35
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
36
|
+
})(nodeInterop);
|
|
37
|
+
}
|
|
38
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
39
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
40
|
+
return obj;
|
|
41
|
+
}
|
|
42
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
43
|
+
return {
|
|
44
|
+
default: obj
|
|
24
45
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return result;
|
|
46
|
+
}
|
|
47
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
48
|
+
if (cache && cache.has(obj)) {
|
|
49
|
+
return cache.get(obj);
|
|
50
|
+
}
|
|
51
|
+
var newObj = {
|
|
52
|
+
__proto__: null
|
|
33
53
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
constructor(options) {
|
|
45
|
-
super(options);
|
|
46
|
-
this.isSearchMode = false;
|
|
47
|
-
this.searchBuffer = '';
|
|
48
|
-
this.filteredEntries = [];
|
|
49
|
-
this.searchCursor = 0;
|
|
54
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
55
|
+
for(var key in obj){
|
|
56
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
57
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
58
|
+
if (desc && (desc.get || desc.set)) {
|
|
59
|
+
Object.defineProperty(newObj, key, desc);
|
|
60
|
+
} else {
|
|
61
|
+
newObj[key] = obj[key];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
50
64
|
}
|
|
65
|
+
newObj.default = obj;
|
|
66
|
+
if (cache) {
|
|
67
|
+
cache.set(obj, newObj);
|
|
68
|
+
}
|
|
69
|
+
return newObj;
|
|
70
|
+
}
|
|
71
|
+
let BreadcrumbSearchPrompt = class BreadcrumbSearchPrompt extends _breadcrumb.BreadcrumbPrompt {
|
|
51
72
|
handleInput(char, key) {
|
|
52
|
-
if (this.isLoading)
|
|
53
|
-
return;
|
|
73
|
+
if (this.isLoading) return;
|
|
54
74
|
// Toggle Search Mode or Type
|
|
55
75
|
if (!this.isSearchMode) {
|
|
56
76
|
// If typing a regular char, enter search mode
|
|
@@ -79,13 +99,11 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
79
99
|
this.searchBuffer = this.searchBuffer.slice(0, -1);
|
|
80
100
|
if (this.searchBuffer.length === 0) {
|
|
81
101
|
this.isSearchMode = false;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
102
|
+
} else {
|
|
84
103
|
this.updateSearchResults();
|
|
85
104
|
}
|
|
86
105
|
this.render(false);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
106
|
+
} else {
|
|
89
107
|
this.isSearchMode = false;
|
|
90
108
|
this.render(false);
|
|
91
109
|
}
|
|
@@ -93,23 +111,21 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
93
111
|
}
|
|
94
112
|
// Enter
|
|
95
113
|
if (char === '\r' || char === '\n') {
|
|
96
|
-
if (this.filteredEntries.length === 0)
|
|
97
|
-
return;
|
|
114
|
+
if (this.filteredEntries.length === 0) return;
|
|
98
115
|
const entry = this.filteredEntries[this.searchCursor];
|
|
99
116
|
if (entry.isDirectory) {
|
|
100
117
|
// Drill down
|
|
101
118
|
// Hack: Find index in currentEntries
|
|
102
|
-
const realIndex = this.currentEntries.findIndex(e
|
|
119
|
+
const realIndex = this.currentEntries.findIndex((e)=>e.name === entry.name);
|
|
103
120
|
if (realIndex !== -1) {
|
|
104
121
|
this.cursor = realIndex;
|
|
105
|
-
this.drillDown().then(()
|
|
122
|
+
this.drillDown().then(()=>{
|
|
106
123
|
this.isSearchMode = false;
|
|
107
124
|
this.searchBuffer = '';
|
|
108
125
|
});
|
|
109
126
|
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const fullPath = path.join(this.currentPath, entry.name);
|
|
127
|
+
} else {
|
|
128
|
+
const fullPath = _path.join(this.currentPath, entry.name);
|
|
113
129
|
this.submit(fullPath);
|
|
114
130
|
}
|
|
115
131
|
return;
|
|
@@ -118,8 +134,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
118
134
|
if (this.isUp(char)) {
|
|
119
135
|
if (this.searchCursor > 0) {
|
|
120
136
|
this.searchCursor--;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
137
|
+
} else {
|
|
123
138
|
this.searchCursor = Math.max(0, this.filteredEntries.length - 1);
|
|
124
139
|
}
|
|
125
140
|
this.render(false);
|
|
@@ -128,8 +143,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
128
143
|
if (this.isDown(char)) {
|
|
129
144
|
if (this.searchCursor < this.filteredEntries.length - 1) {
|
|
130
145
|
this.searchCursor++;
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
146
|
+
} else {
|
|
133
147
|
this.searchCursor = 0;
|
|
134
148
|
}
|
|
135
149
|
this.render(false);
|
|
@@ -147,15 +161,17 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
147
161
|
this.filteredEntries = [];
|
|
148
162
|
return;
|
|
149
163
|
}
|
|
150
|
-
const results = this.currentEntries.map(entry
|
|
151
|
-
const match = (0,
|
|
152
|
-
return {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
164
|
+
const results = this.currentEntries.map((entry)=>{
|
|
165
|
+
const match = (0, _utils.fuzzyMatch)(this.searchBuffer, entry.name);
|
|
166
|
+
return {
|
|
167
|
+
entry,
|
|
168
|
+
match
|
|
169
|
+
};
|
|
170
|
+
}).filter((item)=>item.match !== null).sort((a, b)=>b.match.score - a.match.score);
|
|
171
|
+
this.filteredEntries = results.map((r)=>({
|
|
172
|
+
...r.entry,
|
|
173
|
+
_match: r.match
|
|
174
|
+
}));
|
|
159
175
|
this.searchCursor = 0;
|
|
160
176
|
}
|
|
161
177
|
handleMouse(event) {
|
|
@@ -163,16 +179,14 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
163
179
|
super.handleMouse(event);
|
|
164
180
|
return;
|
|
165
181
|
}
|
|
166
|
-
if (this.isLoading)
|
|
167
|
-
return;
|
|
182
|
+
if (this.isLoading) return;
|
|
168
183
|
if (event.action === 'scroll') {
|
|
169
184
|
if (event.scroll === 'up') {
|
|
170
185
|
if (this.searchCursor > 0) {
|
|
171
186
|
this.searchCursor--;
|
|
172
187
|
this.render(false);
|
|
173
188
|
}
|
|
174
|
-
}
|
|
175
|
-
else if (event.scroll === 'down') {
|
|
189
|
+
} else if (event.scroll === 'down') {
|
|
176
190
|
if (this.searchCursor < this.filteredEntries.length - 1) {
|
|
177
191
|
this.searchCursor++;
|
|
178
192
|
this.render(false);
|
|
@@ -188,15 +202,14 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
188
202
|
// Render Search Overlay
|
|
189
203
|
let output = '';
|
|
190
204
|
// Breadcrumb + Search Bar
|
|
191
|
-
const relative =
|
|
205
|
+
const relative = _path.relative(this.root, this.currentPath);
|
|
192
206
|
// ... (Truncation logic omitted for brevity, simplified version)
|
|
193
|
-
const pathStr = relative ||
|
|
194
|
-
const prefix = `${
|
|
195
|
-
output += `${prefix}${
|
|
207
|
+
const pathStr = relative || _path.basename(this.root);
|
|
208
|
+
const prefix = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} `;
|
|
209
|
+
output += `${prefix}${_theme.theme.muted}${pathStr}/${_ansi.ANSI.RESET} ${_ansi.ANSI.FG_YELLOW}(Search: ${this.searchBuffer})${_ansi.ANSI.RESET}\n`;
|
|
196
210
|
if (this.filteredEntries.length === 0) {
|
|
197
|
-
output += ` ${
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
211
|
+
output += ` ${_theme.theme.muted}No results found${_ansi.ANSI.RESET}`;
|
|
212
|
+
} else {
|
|
200
213
|
const pageSize = this.pageSize;
|
|
201
214
|
let start = 0;
|
|
202
215
|
const half = Math.floor(pageSize / 2);
|
|
@@ -205,7 +218,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
205
218
|
start = Math.max(0, this.filteredEntries.length - pageSize);
|
|
206
219
|
}
|
|
207
220
|
const visible = this.filteredEntries.slice(start, start + pageSize);
|
|
208
|
-
visible.forEach((entry, index)
|
|
221
|
+
visible.forEach((entry, index)=>{
|
|
209
222
|
const actualIndex = start + index;
|
|
210
223
|
const isSelected = actualIndex === this.searchCursor;
|
|
211
224
|
const icon = entry.isDirectory ? '📂' : '📄';
|
|
@@ -213,15 +226,12 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
213
226
|
const title = this.highlight(entry.name, entry._match.indices, isSelected);
|
|
214
227
|
let line = '';
|
|
215
228
|
if (isSelected) {
|
|
216
|
-
line += `${
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
229
|
+
line += `${_theme.theme.main}${_symbols.symbols.pointer} ${icon} ${title}${_ansi.ANSI.RESET}`;
|
|
230
|
+
} else {
|
|
219
231
|
line += ` ${icon} ${title}`;
|
|
220
232
|
}
|
|
221
|
-
if (index > 0 || index === 0)
|
|
222
|
-
|
|
223
|
-
if (index < visible.length - 1)
|
|
224
|
-
output += '\n';
|
|
233
|
+
if (index > 0 || index === 0) output += line;
|
|
234
|
+
if (index < visible.length - 1) output += '\n';
|
|
225
235
|
});
|
|
226
236
|
}
|
|
227
237
|
this.renderFrame(output);
|
|
@@ -229,20 +239,22 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
|
|
|
229
239
|
highlight(text, indices, isSelected) {
|
|
230
240
|
let output = '';
|
|
231
241
|
const indexSet = new Set(indices);
|
|
232
|
-
for
|
|
242
|
+
for(let i = 0; i < text.length; i++){
|
|
233
243
|
if (indexSet.has(i)) {
|
|
234
244
|
if (isSelected) {
|
|
235
|
-
output += `${
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
output += `${ansi_1.ANSI.BOLD}${ansi_1.ANSI.FG_CYAN}${text[i]}${ansi_1.ANSI.RESET}`;
|
|
245
|
+
output += `${_ansi.ANSI.BOLD}${_ansi.ANSI.FG_WHITE}${text[i]}${_theme.theme.main}`;
|
|
246
|
+
} else {
|
|
247
|
+
output += `${_ansi.ANSI.BOLD}${_ansi.ANSI.FG_CYAN}${text[i]}${_ansi.ANSI.RESET}`;
|
|
239
248
|
}
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
249
|
+
} else {
|
|
242
250
|
output += text[i];
|
|
243
251
|
}
|
|
244
252
|
}
|
|
245
253
|
return output;
|
|
246
254
|
}
|
|
247
|
-
|
|
248
|
-
|
|
255
|
+
constructor(options){
|
|
256
|
+
super(options), _define_property(this, "isSearchMode", false), _define_property(this, "searchBuffer", ''), _define_property(this, "filteredEntries", []), _define_property(this, "searchCursor", 0);
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
//# sourceMappingURL=breadcrumb-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/prompts/breadcrumb-search.ts"],"sourcesContent":["import { BreadcrumbPrompt } from './breadcrumb';\nimport { BreadcrumbOptions, MouseEvent } from '../types';\nimport { theme } from '../theme';\nimport { ANSI } from '../ansi';\nimport { symbols } from '../symbols';\nimport { fuzzyMatch } from '../utils';\nimport * as path from 'path';\n\nexport class BreadcrumbSearchPrompt extends BreadcrumbPrompt {\n private isSearchMode: boolean = false;\n private searchBuffer: string = '';\n private filteredEntries: any[] = [];\n private searchCursor: number = 0;\n\n constructor(options: BreadcrumbOptions) {\n super(options);\n }\n\n protected handleInput(char: string, key: Buffer) {\n if (this.isLoading) return;\n\n // Toggle Search Mode or Type\n if (!this.isSearchMode) {\n // If typing a regular char, enter search mode\n if (char.length === 1 && !/^[\\x00-\\x1F]/.test(char) && !char.startsWith('\\x1b')) {\n this.isSearchMode = true;\n this.searchBuffer = char;\n this.updateSearchResults();\n this.render(false);\n return;\n }\n // Otherwise use default navigation\n super.handleInput(char, key);\n return;\n }\n\n // --- In Search Mode ---\n\n // Esc: Exit search mode\n if (char === '\\x1b') {\n this.isSearchMode = false;\n this.searchBuffer = '';\n this.render(false);\n return;\n }\n\n // Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n if (this.searchBuffer.length > 0) {\n this.searchBuffer = this.searchBuffer.slice(0, -1);\n if (this.searchBuffer.length === 0) {\n this.isSearchMode = false;\n } else {\n this.updateSearchResults();\n }\n this.render(false);\n } else {\n this.isSearchMode = false;\n this.render(false);\n }\n return;\n }\n\n // Enter\n if (char === '\\r' || char === '\\n') {\n if (this.filteredEntries.length === 0) return;\n\n const entry = this.filteredEntries[this.searchCursor];\n if (entry.isDirectory) {\n // Drill down\n\n // Hack: Find index in currentEntries\n const realIndex = this.currentEntries.findIndex(e => e.name === entry.name);\n if (realIndex !== -1) {\n this.cursor = realIndex;\n this.drillDown().then(() => {\n this.isSearchMode = false;\n this.searchBuffer = '';\n });\n }\n } else {\n const fullPath = path.join(this.currentPath, entry.name);\n this.submit(fullPath);\n }\n return;\n }\n\n // Navigation (Up/Down)\n if (this.isUp(char)) {\n if (this.searchCursor > 0) {\n this.searchCursor--;\n } else {\n this.searchCursor = Math.max(0, this.filteredEntries.length - 1);\n }\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (this.searchCursor < this.filteredEntries.length - 1) {\n this.searchCursor++;\n } else {\n this.searchCursor = 0;\n }\n this.render(false);\n return;\n }\n\n // Typing\n if (char.length === 1 && !/^[\\x00-\\x1F]/.test(char) && !char.startsWith('\\x1b')) {\n this.searchBuffer += char;\n this.updateSearchResults();\n this.render(false);\n }\n }\n\n private updateSearchResults() {\n if (!this.searchBuffer) {\n this.filteredEntries = [];\n return;\n }\n\n const results = this.currentEntries.map(entry => {\n const match = fuzzyMatch(this.searchBuffer, entry.name);\n return { entry, match };\n }).filter(item => item.match !== null)\n .sort((a, b) => b.match!.score - a.match!.score);\n\n this.filteredEntries = results.map(r => ({\n ...r.entry,\n _match: r.match\n }));\n\n this.searchCursor = 0;\n }\n\n protected handleMouse(event: MouseEvent): void {\n if (!this.isSearchMode) {\n super.handleMouse(event);\n return;\n }\n\n if (this.isLoading) return;\n\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n if (this.searchCursor > 0) {\n this.searchCursor--;\n this.render(false);\n }\n } else if (event.scroll === 'down') {\n if (this.searchCursor < this.filteredEntries.length - 1) {\n this.searchCursor++;\n this.render(false);\n }\n }\n }\n }\n\n protected render(firstRender: boolean) {\n if (!this.isSearchMode) {\n super.render(firstRender);\n return;\n }\n\n // Render Search Overlay\n let output = '';\n\n // Breadcrumb + Search Bar\n const relative = path.relative(this.root, this.currentPath);\n // ... (Truncation logic omitted for brevity, simplified version)\n const pathStr = relative || path.basename(this.root);\n\n const prefix = `${theme.success}?${ANSI.RESET} ${theme.title}${this.options.message}${ANSI.RESET} `;\n output += `${prefix}${theme.muted}${pathStr}/${ANSI.RESET} ${ANSI.FG_YELLOW}(Search: ${this.searchBuffer})${ANSI.RESET}\\n`;\n\n if (this.filteredEntries.length === 0) {\n output += ` ${theme.muted}No results found${ANSI.RESET}`;\n } else {\n const pageSize = this.pageSize;\n let start = 0;\n\n const half = Math.floor(pageSize / 2);\n start = Math.max(0, this.searchCursor - half);\n if (start + pageSize > this.filteredEntries.length) {\n start = Math.max(0, this.filteredEntries.length - pageSize);\n }\n\n const visible = this.filteredEntries.slice(start, start + pageSize);\n\n visible.forEach((entry, index) => {\n const actualIndex = start + index;\n const isSelected = actualIndex === this.searchCursor;\n const icon = entry.isDirectory ? '📂' : '📄';\n\n // Highlight match\n const title = this.highlight(entry.name, entry._match.indices, isSelected);\n\n let line = '';\n if (isSelected) {\n line += `${theme.main}${symbols.pointer} ${icon} ${title}${ANSI.RESET}`;\n } else {\n line += ` ${icon} ${title}`;\n }\n\n if (index > 0 || index === 0) output += line;\n if (index < visible.length - 1) output += '\\n';\n });\n }\n\n this.renderFrame(output);\n }\n\n private highlight(text: string, indices: number[], isSelected: boolean): string {\n let output = '';\n const indexSet = new Set(indices);\n for (let i = 0; i < text.length; i++) {\n if (indexSet.has(i)) {\n if (isSelected) {\n output += `${ANSI.BOLD}${ANSI.FG_WHITE}${text[i]}${theme.main}`;\n } else {\n output += `${ANSI.BOLD}${ANSI.FG_CYAN}${text[i]}${ANSI.RESET}`;\n }\n } else {\n output += text[i];\n }\n }\n return output;\n }\n}\n"],"names":["BreadcrumbSearchPrompt","BreadcrumbPrompt","handleInput","char","key","isLoading","isSearchMode","length","test","startsWith","searchBuffer","updateSearchResults","render","slice","filteredEntries","entry","searchCursor","isDirectory","realIndex","currentEntries","findIndex","e","name","cursor","drillDown","then","fullPath","path","join","currentPath","submit","isUp","Math","max","isDown","results","map","match","fuzzyMatch","filter","item","sort","a","b","score","r","_match","handleMouse","event","action","scroll","firstRender","output","relative","root","pathStr","basename","prefix","theme","success","ANSI","RESET","title","options","message","muted","FG_YELLOW","pageSize","start","half","floor","visible","forEach","index","actualIndex","isSelected","icon","highlight","indices","line","main","symbols","pointer","renderFrame","text","indexSet","Set","i","has","BOLD","FG_WHITE","FG_CYAN"],"mappings":"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"}
|