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,57 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (options.step) {
|
|
24
|
-
this.minute = Math.round(this.minute / options.step) * options.step;
|
|
25
|
-
if (this.minute >= 60) {
|
|
26
|
-
this.minute = 0;
|
|
27
|
-
this.hour = (this.hour + 1) % 24;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TimePrompt", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TimePrompt;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _base = require("../base");
|
|
12
|
+
const _ansi = require("../ansi");
|
|
13
|
+
function _define_property(obj, key, value) {
|
|
14
|
+
if (key in obj) {
|
|
15
|
+
Object.defineProperty(obj, key, {
|
|
16
|
+
value: value,
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
writable: true
|
|
20
|
+
});
|
|
21
|
+
} else {
|
|
22
|
+
obj[key] = value;
|
|
30
23
|
}
|
|
24
|
+
return obj;
|
|
25
|
+
}
|
|
26
|
+
let TimePrompt = class TimePrompt extends _base.Prompt {
|
|
31
27
|
render(_firstRender) {
|
|
32
28
|
const is12h = this.options.format === '12h';
|
|
33
29
|
const step = this.options.step || 1;
|
|
34
30
|
// Helpers
|
|
35
|
-
const getHourDisplay = (h)
|
|
31
|
+
const getHourDisplay = (h)=>{
|
|
36
32
|
if (is12h) {
|
|
37
33
|
const val = h % 12 || 12; // 0 -> 12
|
|
38
34
|
return val.toString().padStart(2, '0');
|
|
39
35
|
}
|
|
40
36
|
return h.toString().padStart(2, '0');
|
|
41
37
|
};
|
|
42
|
-
const getMinDisplay = (m)
|
|
43
|
-
const getMeridiem = (h)
|
|
38
|
+
const getMinDisplay = (m)=>m.toString().padStart(2, '0');
|
|
39
|
+
const getMeridiem = (h)=>h >= 12 ? 'PM' : 'AM';
|
|
44
40
|
// Calculate Prev/Next values for visualization
|
|
45
|
-
const adjustH = (val, delta)
|
|
41
|
+
const adjustH = (val, delta)=>{
|
|
46
42
|
let n = val + delta;
|
|
47
|
-
if (n < 0)
|
|
48
|
-
n = 24 + n;
|
|
43
|
+
if (n < 0) n = 24 + n;
|
|
49
44
|
return n % 24;
|
|
50
45
|
};
|
|
51
|
-
const adjustM = (val, delta)
|
|
46
|
+
const adjustM = (val, delta)=>{
|
|
52
47
|
let n = val + delta;
|
|
53
|
-
if (n < 0)
|
|
54
|
-
n = 60 + n;
|
|
48
|
+
if (n < 0) n = 60 + n;
|
|
55
49
|
return n % 60;
|
|
56
50
|
};
|
|
57
51
|
const curH = this.hour;
|
|
@@ -61,69 +55,74 @@ class TimePrompt extends base_1.Prompt {
|
|
|
61
55
|
const prevM = adjustM(curM, -step);
|
|
62
56
|
const nextM = adjustM(curM, step);
|
|
63
57
|
// Build columns
|
|
64
|
-
const colHour = [
|
|
65
|
-
|
|
58
|
+
const colHour = [
|
|
59
|
+
getHourDisplay(prevH),
|
|
60
|
+
getHourDisplay(curH),
|
|
61
|
+
getHourDisplay(nextH)
|
|
62
|
+
];
|
|
63
|
+
const colMin = [
|
|
64
|
+
getMinDisplay(prevM),
|
|
65
|
+
getMinDisplay(curM),
|
|
66
|
+
getMinDisplay(nextM)
|
|
67
|
+
];
|
|
66
68
|
let colMer = [];
|
|
67
69
|
if (is12h) {
|
|
68
70
|
const curMer = getMeridiem(curH);
|
|
69
71
|
const otherMer = curMer === 'AM' ? 'PM' : 'AM';
|
|
70
72
|
// Visually, scrolling up/down from AM goes to PM
|
|
71
|
-
colMer = [
|
|
73
|
+
colMer = [
|
|
74
|
+
otherMer,
|
|
75
|
+
curMer,
|
|
76
|
+
otherMer
|
|
77
|
+
];
|
|
72
78
|
}
|
|
73
|
-
const dim =
|
|
74
|
-
let output = `${
|
|
79
|
+
const dim = _ansi.ANSI.FG_GRAY;
|
|
80
|
+
let output = `${_ansi.ANSI.FG_CYAN}? ${this.options.message}${_ansi.ANSI.RESET}\n`;
|
|
75
81
|
// Render 3 lines
|
|
76
|
-
for
|
|
82
|
+
for(let i = 0; i < 3; i++){
|
|
77
83
|
const isCenter = i === 1;
|
|
78
84
|
// Render Hour
|
|
79
85
|
let hStr = colHour[i];
|
|
80
86
|
if (this.activeCol === 0 && isCenter) {
|
|
81
|
-
hStr = `${
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
else {
|
|
87
|
-
hStr = `${dim} ${hStr} ${ansi_1.ANSI.RESET}`;
|
|
87
|
+
hStr = `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.REVERSE} ${hStr} ${_ansi.ANSI.RESET}`;
|
|
88
|
+
} else if (isCenter) {
|
|
89
|
+
hStr = `${_ansi.ANSI.BOLD} ${hStr} ${_ansi.ANSI.RESET}`;
|
|
90
|
+
} else {
|
|
91
|
+
hStr = `${dim} ${hStr} ${_ansi.ANSI.RESET}`;
|
|
88
92
|
}
|
|
89
93
|
const sep = isCenter ? ':' : ' ';
|
|
90
94
|
// Render Minute
|
|
91
95
|
let mStr = colMin[i];
|
|
92
96
|
if (this.activeCol === 1 && isCenter) {
|
|
93
|
-
mStr = `${
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
else {
|
|
99
|
-
mStr = `${dim} ${mStr} ${ansi_1.ANSI.RESET}`;
|
|
97
|
+
mStr = `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.REVERSE} ${mStr} ${_ansi.ANSI.RESET}`;
|
|
98
|
+
} else if (isCenter) {
|
|
99
|
+
mStr = `${_ansi.ANSI.BOLD} ${mStr} ${_ansi.ANSI.RESET}`;
|
|
100
|
+
} else {
|
|
101
|
+
mStr = `${dim} ${mStr} ${_ansi.ANSI.RESET}`;
|
|
100
102
|
}
|
|
101
103
|
let line = ` ${hStr} ${sep} ${mStr}`;
|
|
102
104
|
// Render Meridiem
|
|
103
105
|
if (is12h) {
|
|
104
106
|
let merStr = colMer[i];
|
|
105
107
|
if (this.activeCol === 2 && isCenter) {
|
|
106
|
-
merStr = `${
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
else {
|
|
112
|
-
merStr = `${dim} ${merStr} ${ansi_1.ANSI.RESET}`;
|
|
108
|
+
merStr = `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.REVERSE} ${merStr} ${_ansi.ANSI.RESET}`;
|
|
109
|
+
} else if (isCenter) {
|
|
110
|
+
merStr = `${_ansi.ANSI.BOLD} ${merStr} ${_ansi.ANSI.RESET}`;
|
|
111
|
+
} else {
|
|
112
|
+
merStr = `${dim} ${merStr} ${_ansi.ANSI.RESET}`;
|
|
113
113
|
}
|
|
114
114
|
line += ` ${merStr}`;
|
|
115
115
|
}
|
|
116
116
|
output += line + '\n';
|
|
117
117
|
}
|
|
118
|
-
output +=
|
|
118
|
+
output += _ansi.ANSI.FG_GRAY + "(Use Arrows/Tab to navigate)" + _ansi.ANSI.RESET;
|
|
119
119
|
this.renderFrame(output);
|
|
120
120
|
}
|
|
121
121
|
handleMouse(event) {
|
|
122
122
|
if (event.action === 'scroll') {
|
|
123
123
|
if (event.scroll === 'up') {
|
|
124
124
|
this.adjustValue(-1);
|
|
125
|
-
}
|
|
126
|
-
else if (event.scroll === 'down') {
|
|
125
|
+
} else if (event.scroll === 'down') {
|
|
127
126
|
this.adjustValue(1);
|
|
128
127
|
}
|
|
129
128
|
this.render(false);
|
|
@@ -132,34 +131,29 @@ class TimePrompt extends base_1.Prompt {
|
|
|
132
131
|
handleInput(char, _key) {
|
|
133
132
|
const is12h = this.options.format === '12h';
|
|
134
133
|
const maxCols = is12h ? 2 : 1; // 0, 1, 2 or 0, 1
|
|
135
|
-
if (char === '\r' || char === '\n') {
|
|
134
|
+
if (char === '\r' || char === '\n') {
|
|
136
135
|
const h = this.hour.toString().padStart(2, '0');
|
|
137
136
|
const m = this.minute.toString().padStart(2, '0');
|
|
138
|
-
const result = is12h
|
|
139
|
-
? `${((this.hour % 12) || 12).toString().padStart(2, '0')}:${m} ${this.hour >= 12 ? 'PM' : 'AM'}`
|
|
140
|
-
: `${h}:${m}`;
|
|
137
|
+
const result = is12h ? `${(this.hour % 12 || 12).toString().padStart(2, '0')}:${m} ${this.hour >= 12 ? 'PM' : 'AM'}` : `${h}:${m}`;
|
|
141
138
|
this.submit(result);
|
|
142
139
|
return;
|
|
143
140
|
}
|
|
144
141
|
if (char === '\t' || this.isRight(char)) {
|
|
145
142
|
this.activeCol++;
|
|
146
|
-
if (this.activeCol > maxCols)
|
|
147
|
-
this.activeCol = 0;
|
|
143
|
+
if (this.activeCol > maxCols) this.activeCol = 0;
|
|
148
144
|
this.render(false);
|
|
149
145
|
return;
|
|
150
146
|
}
|
|
151
|
-
if (char === '\u001b[Z' || this.isLeft(char)) {
|
|
147
|
+
if (char === '\u001b[Z' || this.isLeft(char)) {
|
|
152
148
|
this.activeCol--;
|
|
153
|
-
if (this.activeCol < 0)
|
|
154
|
-
this.activeCol = maxCols;
|
|
149
|
+
if (this.activeCol < 0) this.activeCol = maxCols;
|
|
155
150
|
this.render(false);
|
|
156
151
|
return;
|
|
157
152
|
}
|
|
158
153
|
if (this.isUp(char)) {
|
|
159
154
|
this.adjustValue(-1);
|
|
160
155
|
this.render(false);
|
|
161
|
-
}
|
|
162
|
-
else if (this.isDown(char)) {
|
|
156
|
+
} else if (this.isDown(char)) {
|
|
163
157
|
this.adjustValue(1);
|
|
164
158
|
this.render(false);
|
|
165
159
|
}
|
|
@@ -173,30 +167,45 @@ class TimePrompt extends base_1.Prompt {
|
|
|
173
167
|
// If I press DOWN arrow, I expect the list to scroll DOWN, which means "Next" becomes "Curr".
|
|
174
168
|
// So DOWN arrow means INCREMENT index/value.
|
|
175
169
|
// UP arrow means DECREMENT index/value.
|
|
176
|
-
if (this.activeCol === 0) {
|
|
170
|
+
if (this.activeCol === 0) {
|
|
177
171
|
let newH = this.hour + direction;
|
|
178
|
-
if (newH < 0)
|
|
179
|
-
|
|
180
|
-
if (newH > 23)
|
|
181
|
-
newH = 0;
|
|
172
|
+
if (newH < 0) newH = 23;
|
|
173
|
+
if (newH > 23) newH = 0;
|
|
182
174
|
this.hour = newH;
|
|
183
|
-
}
|
|
184
|
-
else if (this.activeCol === 1) { // Minute
|
|
175
|
+
} else if (this.activeCol === 1) {
|
|
185
176
|
const step = this.options.step || 1;
|
|
186
|
-
let newM = this.minute +
|
|
187
|
-
if (newM < 0)
|
|
188
|
-
newM = 60 - step; // Approx wrap
|
|
177
|
+
let newM = this.minute + direction * step;
|
|
178
|
+
if (newM < 0) newM = 60 - step; // Approx wrap
|
|
189
179
|
// Better wrap logic for arbitrary steps:
|
|
190
|
-
if (newM < 0)
|
|
191
|
-
|
|
192
|
-
if (newM >= 60)
|
|
193
|
-
newM = newM % 60;
|
|
180
|
+
if (newM < 0) newM = 60 + newM; // e.g. -5 -> 55
|
|
181
|
+
if (newM >= 60) newM = newM % 60;
|
|
194
182
|
this.minute = newM;
|
|
195
|
-
}
|
|
196
|
-
else if (this.activeCol === 2) { // Meridiem
|
|
183
|
+
} else if (this.activeCol === 2) {
|
|
197
184
|
// Toggle AM/PM
|
|
198
185
|
this.hour = (this.hour + 12) % 24;
|
|
199
186
|
}
|
|
200
187
|
}
|
|
201
|
-
|
|
202
|
-
|
|
188
|
+
constructor(options){
|
|
189
|
+
super(options), _define_property(this, "hour", 0), _define_property(this, "minute", 0), _define_property(this, "activeCol", 0) // 0: Hour, 1: Minute, 2: Meridiem (if 12h)
|
|
190
|
+
;
|
|
191
|
+
const now = options.initial ? typeof options.initial === 'string' ? new Date(options.initial) : options.initial : new Date();
|
|
192
|
+
// Fallback if invalid date
|
|
193
|
+
if (isNaN(now.getTime())) {
|
|
194
|
+
this.hour = 0;
|
|
195
|
+
this.minute = 0;
|
|
196
|
+
} else {
|
|
197
|
+
this.hour = now.getHours();
|
|
198
|
+
this.minute = now.getMinutes();
|
|
199
|
+
}
|
|
200
|
+
// Round minute to nearest step
|
|
201
|
+
if (options.step) {
|
|
202
|
+
this.minute = Math.round(this.minute / options.step) * options.step;
|
|
203
|
+
if (this.minute >= 60) {
|
|
204
|
+
this.minute = 0;
|
|
205
|
+
this.hour = (this.hour + 1) % 24;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/prompts/time.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { TimeOptions, MouseEvent } from '../types';\nimport { ANSI } from '../ansi';\n\nexport class TimePrompt extends Prompt<string, TimeOptions> {\n private hour: number = 0;\n private minute: number = 0;\n private activeCol: number = 0; // 0: Hour, 1: Minute, 2: Meridiem (if 12h)\n\n constructor(options: TimeOptions) {\n super(options);\n const now = options.initial ? (typeof options.initial === 'string' ? new Date(options.initial) : options.initial) : new Date();\n // Fallback if invalid date\n if (isNaN(now.getTime())) {\n this.hour = 0;\n this.minute = 0;\n } else {\n this.hour = now.getHours();\n this.minute = now.getMinutes();\n }\n\n // Round minute to nearest step\n if (options.step) {\n this.minute = Math.round(this.minute / options.step) * options.step;\n if (this.minute >= 60) {\n this.minute = 0;\n this.hour = (this.hour + 1) % 24;\n }\n }\n }\n\n protected render(_firstRender: boolean): void {\n const is12h = this.options.format === '12h';\n const step = this.options.step || 1;\n\n // Helpers\n const getHourDisplay = (h: number) => {\n if (is12h) {\n const val = h % 12 || 12; // 0 -> 12\n return val.toString().padStart(2, '0');\n }\n return h.toString().padStart(2, '0');\n };\n\n const getMinDisplay = (m: number) => m.toString().padStart(2, '0');\n const getMeridiem = (h: number) => h >= 12 ? 'PM' : 'AM';\n\n // Calculate Prev/Next values for visualization\n const adjustH = (val: number, delta: number) => {\n let n = val + delta;\n if (n < 0) n = 24 + n;\n return n % 24;\n };\n const adjustM = (val: number, delta: number) => {\n let n = val + delta;\n if (n < 0) n = 60 + n;\n return n % 60;\n };\n\n const curH = this.hour;\n const curM = this.minute;\n\n const prevH = adjustH(curH, -1);\n const nextH = adjustH(curH, 1);\n\n const prevM = adjustM(curM, -step);\n const nextM = adjustM(curM, step);\n\n // Build columns\n const colHour = [getHourDisplay(prevH), getHourDisplay(curH), getHourDisplay(nextH)];\n const colMin = [getMinDisplay(prevM), getMinDisplay(curM), getMinDisplay(nextM)];\n\n let colMer: string[] = [];\n if (is12h) {\n const curMer = getMeridiem(curH);\n const otherMer = curMer === 'AM' ? 'PM' : 'AM';\n // Visually, scrolling up/down from AM goes to PM\n colMer = [otherMer, curMer, otherMer];\n }\n\n const dim = ANSI.FG_GRAY;\n\n let output = `${ANSI.FG_CYAN}? ${this.options.message}${ANSI.RESET}\\n`;\n\n // Render 3 lines\n for (let i = 0; i < 3; i++) {\n const isCenter = i === 1;\n\n // Render Hour\n let hStr = colHour[i];\n if (this.activeCol === 0 && isCenter) {\n hStr = `${ANSI.FG_CYAN}${ANSI.REVERSE} ${hStr} ${ANSI.RESET}`;\n } else if (isCenter) {\n hStr = `${ANSI.BOLD} ${hStr} ${ANSI.RESET}`;\n } else {\n hStr = `${dim} ${hStr} ${ANSI.RESET}`;\n }\n\n const sep = isCenter ? ':' : ' ';\n\n // Render Minute\n let mStr = colMin[i];\n if (this.activeCol === 1 && isCenter) {\n mStr = `${ANSI.FG_CYAN}${ANSI.REVERSE} ${mStr} ${ANSI.RESET}`;\n } else if (isCenter) {\n mStr = `${ANSI.BOLD} ${mStr} ${ANSI.RESET}`;\n } else {\n mStr = `${dim} ${mStr} ${ANSI.RESET}`;\n }\n\n let line = ` ${hStr} ${sep} ${mStr}`;\n\n // Render Meridiem\n if (is12h) {\n let merStr = colMer[i];\n if (this.activeCol === 2 && isCenter) {\n merStr = `${ANSI.FG_CYAN}${ANSI.REVERSE} ${merStr} ${ANSI.RESET}`;\n } else if (isCenter) {\n merStr = `${ANSI.BOLD} ${merStr} ${ANSI.RESET}`;\n } else {\n merStr = `${dim} ${merStr} ${ANSI.RESET}`;\n }\n line += ` ${merStr}`;\n }\n\n output += line + '\\n';\n }\n\n output += ANSI.FG_GRAY + \"(Use Arrows/Tab to navigate)\" + ANSI.RESET;\n\n this.renderFrame(output);\n }\n\n protected handleMouse(event: MouseEvent): void {\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n this.adjustValue(-1);\n } else if (event.scroll === 'down') {\n this.adjustValue(1);\n }\n this.render(false);\n }\n }\n\n protected handleInput(char: string, _key: Buffer): void {\n const is12h = this.options.format === '12h';\n const maxCols = is12h ? 2 : 1; // 0, 1, 2 or 0, 1\n\n if (char === '\\r' || char === '\\n') { // Enter\n const h = this.hour.toString().padStart(2, '0');\n const m = this.minute.toString().padStart(2, '0');\n const result = is12h\n ? `${((this.hour % 12) || 12).toString().padStart(2, '0')}:${m} ${this.hour >= 12 ? 'PM' : 'AM'}`\n : `${h}:${m}`;\n this.submit(result);\n return;\n }\n\n if (char === '\\t' || this.isRight(char)) {\n this.activeCol++;\n if (this.activeCol > maxCols) this.activeCol = 0;\n this.render(false);\n return;\n }\n\n if (char === '\\u001b[Z' || this.isLeft(char)) { // Shift+Tab or Left\n this.activeCol--;\n if (this.activeCol < 0) this.activeCol = maxCols;\n this.render(false);\n return;\n }\n\n if (this.isUp(char)) {\n this.adjustValue(-1);\n this.render(false);\n } else if (this.isDown(char)) {\n this.adjustValue(1);\n this.render(false);\n }\n }\n\n private adjustValue(direction: number) {\n // direction: -1 (Up/Prev value, which visually is TOP, but wait...)\n // In the UI:\n // Prev (Top)\n // Curr (Center)\n // Next (Bottom)\n // If I press DOWN arrow, I expect the list to scroll DOWN, which means \"Next\" becomes \"Curr\".\n // So DOWN arrow means INCREMENT index/value.\n // UP arrow means DECREMENT index/value.\n\n if (this.activeCol === 0) { // Hour\n let newH = this.hour + direction;\n if (newH < 0) newH = 23;\n if (newH > 23) newH = 0;\n this.hour = newH;\n } else if (this.activeCol === 1) { // Minute\n const step = this.options.step || 1;\n let newM = this.minute + (direction * step);\n if (newM < 0) newM = 60 - step; // Approx wrap\n // Better wrap logic for arbitrary steps:\n if (newM < 0) newM = 60 + newM; // e.g. -5 -> 55\n if (newM >= 60) newM = newM % 60;\n this.minute = newM;\n } else if (this.activeCol === 2) { // Meridiem\n // Toggle AM/PM\n this.hour = (this.hour + 12) % 24;\n }\n }\n}\n"],"names":["TimePrompt","Prompt","render","_firstRender","is12h","options","format","step","getHourDisplay","h","val","toString","padStart","getMinDisplay","m","getMeridiem","adjustH","delta","n","adjustM","curH","hour","curM","minute","prevH","nextH","prevM","nextM","colHour","colMin","colMer","curMer","otherMer","dim","ANSI","FG_GRAY","output","FG_CYAN","message","RESET","i","isCenter","hStr","activeCol","REVERSE","BOLD","sep","mStr","line","merStr","renderFrame","handleMouse","event","action","scroll","adjustValue","handleInput","char","_key","maxCols","result","submit","isRight","isLeft","isUp","isDown","direction","newH","newM","now","initial","Date","isNaN","getTime","getHours","getMinutes","Math","round"],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TogglePrompt", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TogglePrompt;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _ansi = require("../ansi");
|
|
12
|
+
const _base = require("../base");
|
|
13
|
+
const _theme = require("../theme");
|
|
14
|
+
let TogglePrompt = class TogglePrompt extends _base.Prompt {
|
|
15
|
+
render(_firstRender) {
|
|
16
|
+
const activeText = this.options.activeText || 'ON';
|
|
17
|
+
const inactiveText = this.options.inactiveText || 'OFF';
|
|
18
|
+
let toggleDisplay = '';
|
|
19
|
+
if (this.value) {
|
|
20
|
+
toggleDisplay = `${_theme.theme.main}[${_ansi.ANSI.BOLD}${activeText}${_ansi.ANSI.RESET}${_theme.theme.main}]${_ansi.ANSI.RESET} ${_theme.theme.muted}${inactiveText}${_ansi.ANSI.RESET}`;
|
|
21
|
+
} else {
|
|
22
|
+
toggleDisplay = `${_theme.theme.muted}${activeText}${_ansi.ANSI.RESET} ${_theme.theme.main}[${_ansi.ANSI.BOLD}${inactiveText}${_ansi.ANSI.RESET}${_theme.theme.main}]${_ansi.ANSI.RESET}`;
|
|
23
|
+
}
|
|
24
|
+
const output = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} ${toggleDisplay}`;
|
|
25
|
+
this.renderFrame(output);
|
|
26
|
+
}
|
|
27
|
+
handleInput(char) {
|
|
28
|
+
if (char === '\r' || char === '\n') {
|
|
29
|
+
this.submit(this.value);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (this.isLeft(char) || this.isRight(char) || char === 'h' || char === 'l') {
|
|
33
|
+
this.value = !this.value;
|
|
34
|
+
this.render(false);
|
|
35
|
+
}
|
|
36
|
+
if (char === ' ') {
|
|
37
|
+
this.value = !this.value;
|
|
38
|
+
this.render(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
handleMouse(event) {
|
|
42
|
+
if (event.action === 'scroll') {
|
|
43
|
+
this.value = !this.value;
|
|
44
|
+
this.render(false);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
constructor(options){
|
|
48
|
+
super(options);
|
|
49
|
+
this.value = options.initial ?? false;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/prompts/toggle.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { ToggleOptions, MouseEvent } from '../types';\n\n// --- Implementation: Toggle Prompt ---\nexport class TogglePrompt extends Prompt<boolean, ToggleOptions> {\n constructor(options: ToggleOptions) {\n super(options);\n this.value = options.initial ?? false;\n }\n\n protected render(_firstRender: boolean) {\n const activeText = this.options.activeText || 'ON';\n const inactiveText = this.options.inactiveText || 'OFF';\n\n let toggleDisplay = '';\n if (this.value) {\n toggleDisplay = `${theme.main}[${ANSI.BOLD}${activeText}${ANSI.RESET}${theme.main}]${ANSI.RESET} ${theme.muted}${inactiveText}${ANSI.RESET}`;\n } else {\n toggleDisplay = `${theme.muted}${activeText}${ANSI.RESET} ${theme.main}[${ANSI.BOLD}${inactiveText}${ANSI.RESET}${theme.main}]${ANSI.RESET}`;\n }\n\n const output = `${theme.success}?${ANSI.RESET} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} ${toggleDisplay}`;\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string) {\n if (char === '\\r' || char === '\\n') {\n this.submit(this.value);\n return;\n }\n if (this.isLeft(char) || this.isRight(char) || char === 'h' || char === 'l') { // Left/Right\n this.value = !this.value;\n this.render(false);\n }\n if (char === ' ') {\n this.value = !this.value;\n this.render(false);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n this.value = !this.value;\n this.render(false);\n }\n }\n}\n"],"names":["TogglePrompt","Prompt","render","_firstRender","activeText","options","inactiveText","toggleDisplay","value","theme","main","ANSI","BOLD","RESET","muted","output","success","title","message","renderFrame","handleInput","char","submit","isLeft","isRight","handleMouse","event","action","initial"],"mappings":";;;;+BAMaA;;;eAAAA;;;sBANQ;sBACE;uBACD;AAIf,IAAA,AAAMA,eAAN,MAAMA,qBAAqBC,YAAM;IAM1BC,OAAOC,YAAqB,EAAE;QACpC,MAAMC,aAAa,IAAI,CAACC,OAAO,CAACD,UAAU,IAAI;QAC9C,MAAME,eAAe,IAAI,CAACD,OAAO,CAACC,YAAY,IAAI;QAElD,IAAIC,gBAAgB;QACpB,IAAI,IAAI,CAACC,KAAK,EAAE;YACZD,gBAAgB,GAAGE,YAAK,CAACC,IAAI,CAAC,CAAC,EAAEC,UAAI,CAACC,IAAI,GAAGR,aAAaO,UAAI,CAACE,KAAK,GAAGJ,YAAK,CAACC,IAAI,CAAC,CAAC,EAAEC,UAAI,CAACE,KAAK,CAAC,EAAE,EAAEJ,YAAK,CAACK,KAAK,GAAGR,eAAeK,UAAI,CAACE,KAAK,EAAE;QACjJ,OAAO;YACHN,gBAAgB,GAAGE,YAAK,CAACK,KAAK,GAAGV,aAAaO,UAAI,CAACE,KAAK,CAAC,EAAE,EAAEJ,YAAK,CAACC,IAAI,CAAC,CAAC,EAAEC,UAAI,CAACC,IAAI,GAAGN,eAAeK,UAAI,CAACE,KAAK,GAAGJ,YAAK,CAACC,IAAI,CAAC,CAAC,EAAEC,UAAI,CAACE,KAAK,EAAE;QACjJ;QAEA,MAAME,SAAS,GAAGN,YAAK,CAACO,OAAO,CAAC,CAAC,EAAEL,UAAI,CAACE,KAAK,CAAC,CAAC,EAAEF,UAAI,CAACC,IAAI,GAAGH,YAAK,CAACQ,KAAK,GAAG,IAAI,CAACZ,OAAO,CAACa,OAAO,GAAGP,UAAI,CAACE,KAAK,CAAC,CAAC,EAAEN,eAAe;QAE/H,IAAI,CAACY,WAAW,CAACJ;IACrB;IAEUK,YAAYC,IAAY,EAAE;QAChC,IAAIA,SAAS,QAAQA,SAAS,MAAM;YAChC,IAAI,CAACC,MAAM,CAAC,IAAI,CAACd,KAAK;YACtB;QACJ;QACA,IAAI,IAAI,CAACe,MAAM,CAACF,SAAS,IAAI,CAACG,OAAO,CAACH,SAASA,SAAS,OAAOA,SAAS,KAAK;YACzE,IAAI,CAACb,KAAK,GAAG,CAAC,IAAI,CAACA,KAAK;YACxB,IAAI,CAACN,MAAM,CAAC;QAChB;QACA,IAAImB,SAAS,KAAK;YACd,IAAI,CAACb,KAAK,GAAG,CAAC,IAAI,CAACA,KAAK;YACxB,IAAI,CAACN,MAAM,CAAC;QAChB;IACJ;IAEUuB,YAAYC,KAAiB,EAAE;QACrC,IAAIA,MAAMC,MAAM,KAAK,UAAU;YAC3B,IAAI,CAACnB,KAAK,GAAG,CAAC,IAAI,CAACA,KAAK;YACxB,IAAI,CAACN,MAAM,CAAC;QAChB;IACJ;IAzCA,YAAYG,OAAsB,CAAE;QAChC,KAAK,CAACA;QACN,IAAI,CAACG,KAAK,GAAGH,QAAQuB,OAAO,IAAI;IACpC;AAuCJ"}
|
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class TransferPrompt extends base_1.Prompt {
|
|
10
|
-
constructor(options) {
|
|
11
|
-
super(options);
|
|
12
|
-
this.leftList = [];
|
|
13
|
-
this.rightList = [];
|
|
14
|
-
this.cursorLeft = 0;
|
|
15
|
-
this.cursorRight = 0;
|
|
16
|
-
this.scrollTopLeft = 0;
|
|
17
|
-
this.scrollTopRight = 0;
|
|
18
|
-
this.activeSide = 'left';
|
|
19
|
-
this.pageSize = 10;
|
|
20
|
-
this.leftList = this.normalize(options.source);
|
|
21
|
-
this.rightList = this.normalize(options.target || []);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TransferPrompt", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TransferPrompt;
|
|
22
9
|
}
|
|
10
|
+
});
|
|
11
|
+
const _ansi = require("../ansi");
|
|
12
|
+
const _base = require("../base");
|
|
13
|
+
const _theme = require("../theme");
|
|
14
|
+
const _symbols = require("../symbols");
|
|
15
|
+
const _utils = require("../utils");
|
|
16
|
+
function _define_property(obj, key, value) {
|
|
17
|
+
if (key in obj) {
|
|
18
|
+
Object.defineProperty(obj, key, {
|
|
19
|
+
value: value,
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
let TransferPrompt = class TransferPrompt extends _base.Prompt {
|
|
23
30
|
normalize(items) {
|
|
24
|
-
return items.map(item
|
|
31
|
+
return items.map((item)=>{
|
|
25
32
|
if (typeof item === 'string') {
|
|
26
|
-
return {
|
|
33
|
+
return {
|
|
34
|
+
title: item,
|
|
35
|
+
value: item
|
|
36
|
+
};
|
|
27
37
|
}
|
|
28
38
|
return item;
|
|
29
39
|
});
|
|
30
40
|
}
|
|
31
41
|
truncate(str, width) {
|
|
32
|
-
if ((0,
|
|
33
|
-
return str;
|
|
42
|
+
if ((0, _utils.stringWidth)(str) <= width) return str;
|
|
34
43
|
let res = str;
|
|
35
|
-
while
|
|
44
|
+
while((0, _utils.stringWidth)(res + '...') > width && res.length > 0){
|
|
36
45
|
res = res.slice(0, -1);
|
|
37
46
|
}
|
|
38
47
|
return res + '...';
|
|
@@ -42,24 +51,19 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
42
51
|
const colWidth = Math.floor((termWidth - 6) / 2);
|
|
43
52
|
// Adjust Scroll Top
|
|
44
53
|
if (this.activeSide === 'left') {
|
|
45
|
-
if (this.cursorLeft < this.scrollTopLeft)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
if (this.cursorLeft < this.scrollTopLeft) this.scrollTopLeft = this.cursorLeft;
|
|
55
|
+
if (this.cursorLeft >= this.scrollTopLeft + this.pageSize) this.scrollTopLeft = this.cursorLeft - this.pageSize + 1;
|
|
56
|
+
} else {
|
|
57
|
+
if (this.cursorRight < this.scrollTopRight) this.scrollTopRight = this.cursorRight;
|
|
58
|
+
if (this.cursorRight >= this.scrollTopRight + this.pageSize) this.scrollTopRight = this.cursorRight - this.pageSize + 1;
|
|
49
59
|
}
|
|
50
|
-
|
|
51
|
-
if (this.cursorRight < this.scrollTopRight)
|
|
52
|
-
this.scrollTopRight = this.cursorRight;
|
|
53
|
-
if (this.cursorRight >= this.scrollTopRight + this.pageSize)
|
|
54
|
-
this.scrollTopRight = this.cursorRight - this.pageSize + 1;
|
|
55
|
-
}
|
|
56
|
-
let output = `${theme_1.theme.success}?${ansi_1.ANSI.RESET} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
|
|
60
|
+
let output = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET}\n`;
|
|
57
61
|
// Headers
|
|
58
|
-
const leftTitle = this.activeSide === 'left' ? `${
|
|
59
|
-
const rightTitle = this.activeSide === 'right' ? `${
|
|
62
|
+
const leftTitle = this.activeSide === 'left' ? `${_theme.theme.main}Source${_ansi.ANSI.RESET}` : 'Source';
|
|
63
|
+
const rightTitle = this.activeSide === 'right' ? `${_theme.theme.main}Target${_ansi.ANSI.RESET}` : 'Target';
|
|
60
64
|
output += ` ${leftTitle}`.padEnd(colWidth + 2) + ' ' + ` ${rightTitle}\n`;
|
|
61
|
-
output += ` ${
|
|
62
|
-
for
|
|
65
|
+
output += ` ${_ansi.ANSI.DIM}${_symbols.symbols.line.repeat(colWidth)}${_ansi.ANSI.RESET} ${_ansi.ANSI.DIM}${_symbols.symbols.line.repeat(colWidth)}${_ansi.ANSI.RESET}\n`;
|
|
66
|
+
for(let i = 0; i < this.pageSize; i++){
|
|
63
67
|
const idxLeft = this.scrollTopLeft + i;
|
|
64
68
|
const idxRight = this.scrollTopRight + i;
|
|
65
69
|
const itemLeft = this.leftList[idxLeft];
|
|
@@ -70,13 +74,11 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
70
74
|
const isSelected = this.activeSide === 'left' && idxLeft === this.cursorLeft;
|
|
71
75
|
const title = this.truncate(itemLeft.title, colWidth - 2);
|
|
72
76
|
if (isSelected) {
|
|
73
|
-
leftStr = `${
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
77
|
+
leftStr = `${_theme.theme.main}${_symbols.symbols.pointer} ${title}${_ansi.ANSI.RESET}`;
|
|
78
|
+
} else {
|
|
76
79
|
leftStr = ` ${title}`;
|
|
77
80
|
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
81
|
+
} else {
|
|
80
82
|
leftStr = ''; // Empty
|
|
81
83
|
}
|
|
82
84
|
// Right Column
|
|
@@ -85,25 +87,27 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
85
87
|
const isSelected = this.activeSide === 'right' && idxRight === this.cursorRight;
|
|
86
88
|
const title = this.truncate(itemRight.title, colWidth - 2);
|
|
87
89
|
if (isSelected) {
|
|
88
|
-
rightStr = `${
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
90
|
+
rightStr = `${_theme.theme.main}${_symbols.symbols.pointer} ${title}${_ansi.ANSI.RESET}`;
|
|
91
|
+
} else {
|
|
91
92
|
rightStr = ` ${title}`;
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
|
-
const leftVisualWidth = itemLeft ? (
|
|
95
|
+
const leftVisualWidth = itemLeft ? (0, _utils.stringWidth)(this.truncate(itemLeft.title, colWidth - 2)) + 2 : 0;
|
|
95
96
|
// Pad visually
|
|
96
97
|
const padding = ' '.repeat(Math.max(0, colWidth - leftVisualWidth));
|
|
97
98
|
output += leftStr + padding + ' | ' + rightStr + '\n';
|
|
98
99
|
}
|
|
99
|
-
output += `\n${
|
|
100
|
+
output += `\n${_ansi.ANSI.DIM}(Tab: Switch | a: Move All Right | r: Reset/All Left)${_ansi.ANSI.RESET}`;
|
|
100
101
|
this.renderFrame(output);
|
|
101
102
|
}
|
|
102
103
|
handleInput(char) {
|
|
103
104
|
if (char === '\r' || char === '\n') {
|
|
104
|
-
const leftValues = this.leftList.map(i
|
|
105
|
-
const rightValues = this.rightList.map(i
|
|
106
|
-
this.submit([
|
|
105
|
+
const leftValues = this.leftList.map((i)=>i.value);
|
|
106
|
+
const rightValues = this.rightList.map((i)=>i.value);
|
|
107
|
+
this.submit([
|
|
108
|
+
leftValues,
|
|
109
|
+
rightValues
|
|
110
|
+
]);
|
|
107
111
|
return;
|
|
108
112
|
}
|
|
109
113
|
if (char === '\t' || this.isLeft(char) || this.isRight(char)) {
|
|
@@ -138,8 +142,7 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
138
142
|
if (this.isUp(char)) {
|
|
139
143
|
if (this.activeSide === 'left') {
|
|
140
144
|
this.cursorLeft = Math.max(0, this.cursorLeft - 1);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
145
|
+
} else {
|
|
143
146
|
this.cursorRight = Math.max(0, this.cursorRight - 1);
|
|
144
147
|
}
|
|
145
148
|
this.render(false);
|
|
@@ -148,8 +151,7 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
148
151
|
if (this.isDown(char)) {
|
|
149
152
|
if (this.activeSide === 'left') {
|
|
150
153
|
this.cursorLeft = Math.min(this.leftList.length - 1, this.cursorLeft + 1);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
154
|
+
} else {
|
|
153
155
|
this.cursorRight = Math.min(this.rightList.length - 1, this.cursorRight + 1);
|
|
154
156
|
}
|
|
155
157
|
this.render(false);
|
|
@@ -165,8 +167,7 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
165
167
|
this.cursorLeft = Math.max(0, this.leftList.length - 1);
|
|
166
168
|
}
|
|
167
169
|
}
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
+
} else {
|
|
170
171
|
if (this.rightList.length > 0) {
|
|
171
172
|
const [item] = this.rightList.splice(this.cursorRight, 1);
|
|
172
173
|
this.leftList.push(item);
|
|
@@ -183,21 +184,24 @@ class TransferPrompt extends base_1.Prompt {
|
|
|
183
184
|
if (event.scroll === 'up') {
|
|
184
185
|
if (this.activeSide === 'left') {
|
|
185
186
|
this.cursorLeft = Math.max(0, this.cursorLeft - 1);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
187
|
+
} else {
|
|
188
188
|
this.cursorRight = Math.max(0, this.cursorRight - 1);
|
|
189
189
|
}
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
190
|
+
} else {
|
|
192
191
|
if (this.activeSide === 'left') {
|
|
193
192
|
this.cursorLeft = Math.min(this.leftList.length - 1, this.cursorLeft + 1);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
193
|
+
} else {
|
|
196
194
|
this.cursorRight = Math.min(this.rightList.length - 1, this.cursorRight + 1);
|
|
197
195
|
}
|
|
198
196
|
}
|
|
199
197
|
this.render(false);
|
|
200
198
|
}
|
|
201
199
|
}
|
|
202
|
-
|
|
203
|
-
|
|
200
|
+
constructor(options){
|
|
201
|
+
super(options), _define_property(this, "leftList", []), _define_property(this, "rightList", []), _define_property(this, "cursorLeft", 0), _define_property(this, "cursorRight", 0), _define_property(this, "scrollTopLeft", 0), _define_property(this, "scrollTopRight", 0), _define_property(this, "activeSide", 'left'), _define_property(this, "pageSize", 10);
|
|
202
|
+
this.leftList = this.normalize(options.source);
|
|
203
|
+
this.rightList = this.normalize(options.target || []);
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
//# sourceMappingURL=transfer.js.map
|