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
package/dist/prompts/match.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { MatchOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class MatchPrompt extends Prompt<Record<string, any[]>, MatchOptions> {
|
|
4
|
-
private source;
|
|
5
|
-
private target;
|
|
6
|
-
private links;
|
|
7
|
-
private cursorSource;
|
|
8
|
-
private cursorTarget;
|
|
9
|
-
private scrollTopSource;
|
|
10
|
-
private scrollTopTarget;
|
|
11
|
-
private activeSide;
|
|
12
|
-
private pickedSourceIndex;
|
|
13
|
-
private readonly pageSize;
|
|
14
|
-
constructor(options: MatchOptions);
|
|
15
|
-
private normalize;
|
|
16
|
-
protected render(_firstRender: boolean): void;
|
|
17
|
-
protected handleInput(char: string): void;
|
|
18
|
-
protected handleMouse(event: MouseEvent): void;
|
|
19
|
-
}
|
package/dist/prompts/miller.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { MillerOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class MillerPrompt<V> extends Prompt<V[], MillerOptions<V>> {
|
|
4
|
-
private selections;
|
|
5
|
-
private activeCol;
|
|
6
|
-
private scrollTops;
|
|
7
|
-
private colWidth;
|
|
8
|
-
private visibleCols;
|
|
9
|
-
constructor(options: MillerOptions<V>);
|
|
10
|
-
private calculateLayout;
|
|
11
|
-
private getColumnData;
|
|
12
|
-
protected render(_firstRender: boolean): void;
|
|
13
|
-
protected handleInput(char: string): void;
|
|
14
|
-
protected handleMouse(event: MouseEvent): void;
|
|
15
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { SelectPrompt } from './select';
|
|
2
|
-
import { MultiColumnSelectOptions } from '../types';
|
|
3
|
-
export declare class MultiColumnSelectPrompt<V> extends SelectPrompt<V, MultiColumnSelectOptions<V>> {
|
|
4
|
-
protected cols: number;
|
|
5
|
-
protected colWidth: number;
|
|
6
|
-
constructor(options: MultiColumnSelectOptions<V>);
|
|
7
|
-
private calculateLayout;
|
|
8
|
-
protected render(_firstRender: boolean): void;
|
|
9
|
-
protected handleInput(char: string): void;
|
|
10
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SelectRangePrompt } from './select-range';
|
|
2
|
-
import { SelectRangeOptions } from '../types';
|
|
3
|
-
export declare class MultiRangePrompt<V> extends SelectRangePrompt<V> {
|
|
4
|
-
private committedRanges;
|
|
5
|
-
constructor(options: SelectRangeOptions<V>);
|
|
6
|
-
private mergeRanges;
|
|
7
|
-
protected handleInput(char: string, key?: Buffer): void;
|
|
8
|
-
protected render(_firstRender: boolean): void;
|
|
9
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { MultiSelectOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class MultiSelectPrompt<V> extends Prompt<any[], MultiSelectOptions<V>> {
|
|
4
|
-
private selectedIndex;
|
|
5
|
-
private checkedState;
|
|
6
|
-
private searchBuffer;
|
|
7
|
-
private scrollTop;
|
|
8
|
-
private readonly pageSize;
|
|
9
|
-
private errorMsg;
|
|
10
|
-
constructor(options: MultiSelectOptions<V>);
|
|
11
|
-
private getFilteredChoices;
|
|
12
|
-
protected render(_firstRender: boolean): void;
|
|
13
|
-
protected handleInput(char: string): void;
|
|
14
|
-
protected handleMouse(event: MouseEvent): void;
|
|
15
|
-
}
|
package/dist/prompts/number.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { NumberOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class NumberPrompt extends Prompt<number, NumberOptions> {
|
|
4
|
-
private stringValue;
|
|
5
|
-
private cursor;
|
|
6
|
-
private errorMsg;
|
|
7
|
-
constructor(options: NumberOptions);
|
|
8
|
-
protected render(_firstRender: boolean): void;
|
|
9
|
-
protected handleInput(char: string): void;
|
|
10
|
-
protected handleMouse(event: MouseEvent): void;
|
|
11
|
-
}
|
package/dist/prompts/otp.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { OTPOptions } from '../types';
|
|
3
|
-
export declare class OTPPrompt extends Prompt<string, OTPOptions> {
|
|
4
|
-
private slots;
|
|
5
|
-
private cursor;
|
|
6
|
-
private readonly length;
|
|
7
|
-
constructor(options: OTPOptions);
|
|
8
|
-
protected render(_firstRender: boolean): void;
|
|
9
|
-
protected handleInput(char: string): void;
|
|
10
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { PatternOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class PatternPrompt extends Prompt<number[], PatternOptions> {
|
|
4
|
-
private path;
|
|
5
|
-
private cursor;
|
|
6
|
-
private isDragging;
|
|
7
|
-
private errorMsg;
|
|
8
|
-
private rows;
|
|
9
|
-
private cols;
|
|
10
|
-
private nodeChar;
|
|
11
|
-
private nodeSpacingX;
|
|
12
|
-
private nodeSpacingY;
|
|
13
|
-
private lastMouse;
|
|
14
|
-
constructor(options: PatternOptions);
|
|
15
|
-
private getIndex;
|
|
16
|
-
private getPoint;
|
|
17
|
-
protected render(firstRender: boolean): void;
|
|
18
|
-
private drawLine;
|
|
19
|
-
protected handleInput(char: string, _key: Buffer): void;
|
|
20
|
-
private addToPath;
|
|
21
|
-
protected handleMouse(event: MouseEvent): void;
|
|
22
|
-
}
|
package/dist/prompts/phone.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { PhoneOptions } from '../types';
|
|
3
|
-
export declare class PhonePrompt extends Prompt<string, PhoneOptions> {
|
|
4
|
-
protected activeSection: 'country' | 'number';
|
|
5
|
-
protected selectedCountryIndex: number;
|
|
6
|
-
protected rawNumber: string;
|
|
7
|
-
protected cursor: number;
|
|
8
|
-
protected searchBuffer: string;
|
|
9
|
-
protected lastLinesUp: number;
|
|
10
|
-
protected errorMsg: string;
|
|
11
|
-
protected filteredIndices: number[];
|
|
12
|
-
constructor(options: PhoneOptions);
|
|
13
|
-
private get currentCountry();
|
|
14
|
-
private get mask();
|
|
15
|
-
private get dialCode();
|
|
16
|
-
/**
|
|
17
|
-
* Maps a raw index (index in the digit-only string) to a visual index in the formatted string.
|
|
18
|
-
*/
|
|
19
|
-
private getVisualIndex;
|
|
20
|
-
/**
|
|
21
|
-
* Maps rawIndex to visual index, handling skipping of static characters.
|
|
22
|
-
*/
|
|
23
|
-
private getVisualPosition;
|
|
24
|
-
/**
|
|
25
|
-
* Formats the raw number according to the mask.
|
|
26
|
-
*/
|
|
27
|
-
private formatNumber;
|
|
28
|
-
/**
|
|
29
|
-
* Renders the formatted number with highlighting.
|
|
30
|
-
*/
|
|
31
|
-
private renderFormattedNumber;
|
|
32
|
-
protected render(firstRender: boolean): void;
|
|
33
|
-
protected cleanup(): void;
|
|
34
|
-
protected handleInput(char: string): void;
|
|
35
|
-
private filterCountries;
|
|
36
|
-
private cycleCountry;
|
|
37
|
-
private getMaxRawLength;
|
|
38
|
-
private enforceMaxLen;
|
|
39
|
-
private validateAndSubmit;
|
|
40
|
-
protected handleMouse(event: any): void;
|
|
41
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { QuizSelectOptions } from '../types';
|
|
2
|
-
import { SelectPrompt } from './select';
|
|
3
|
-
export declare class QuizSelectPrompt<V> extends SelectPrompt<V, QuizSelectOptions<V>> {
|
|
4
|
-
private status;
|
|
5
|
-
private isCorrect;
|
|
6
|
-
private userSelectionIndex;
|
|
7
|
-
constructor(options: QuizSelectOptions<V>);
|
|
8
|
-
protected handleInput(char: string): void;
|
|
9
|
-
protected render(firstRender: boolean): void;
|
|
10
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QuizSelectPrompt = void 0;
|
|
4
|
-
const ansi_1 = require("../ansi");
|
|
5
|
-
const theme_1 = require("../theme");
|
|
6
|
-
const symbols_1 = require("../symbols");
|
|
7
|
-
const select_1 = require("./select");
|
|
8
|
-
class QuizSelectPrompt extends select_1.SelectPrompt {
|
|
9
|
-
constructor(options) {
|
|
10
|
-
super(options);
|
|
11
|
-
this.status = 'pending';
|
|
12
|
-
this.isCorrect = false;
|
|
13
|
-
this.userSelectionIndex = -1;
|
|
14
|
-
}
|
|
15
|
-
handleInput(char) {
|
|
16
|
-
if (this.status === 'revealed') {
|
|
17
|
-
// Wait for Enter to submit
|
|
18
|
-
if (char === '\r' || char === '\n') {
|
|
19
|
-
const choices = this.getFilteredChoices();
|
|
20
|
-
// Ensure index is valid, though it should be captured
|
|
21
|
-
const value = choices[this.userSelectionIndex]
|
|
22
|
-
? choices[this.userSelectionIndex].value
|
|
23
|
-
: null;
|
|
24
|
-
this.submit(value);
|
|
25
|
-
}
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (this.status === 'pending') {
|
|
29
|
-
// Intercept Enter
|
|
30
|
-
if (char === '\r' || char === '\n') {
|
|
31
|
-
const choices = this.getFilteredChoices();
|
|
32
|
-
if (choices.length === 0)
|
|
33
|
-
return;
|
|
34
|
-
if (this.isSeparator(choices[this.selectedIndex]))
|
|
35
|
-
return;
|
|
36
|
-
this.userSelectionIndex = this.selectedIndex;
|
|
37
|
-
const selectedChoice = choices[this.userSelectionIndex];
|
|
38
|
-
// Check correctness
|
|
39
|
-
this.isCorrect = selectedChoice.value === this.options.correctValue;
|
|
40
|
-
this.status = 'revealed';
|
|
41
|
-
this.render(false);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
// Delegate navigation to super
|
|
45
|
-
super.handleInput(char);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
render(firstRender) {
|
|
49
|
-
if (this.status === 'pending') {
|
|
50
|
-
super.render(firstRender);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Revealed State
|
|
54
|
-
let output = '';
|
|
55
|
-
const choices = this.getFilteredChoices();
|
|
56
|
-
// Header
|
|
57
|
-
const icon = this.isCorrect ? `${theme_1.theme.success}${symbols_1.symbols.tick}` : `${theme_1.theme.error}${symbols_1.symbols.cross}`;
|
|
58
|
-
output += `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
|
|
59
|
-
const visibleChoices = choices.slice(this.scrollTop, this.scrollTop + this.pageSize);
|
|
60
|
-
visibleChoices.forEach((choice, index) => {
|
|
61
|
-
if (index > 0)
|
|
62
|
-
output += '\n';
|
|
63
|
-
if (this.isSeparator(choice)) {
|
|
64
|
-
output += ` ${ansi_1.ANSI.DIM}${choice.text || symbols_1.symbols.line.repeat(8)}${ansi_1.ANSI.RESET}`;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
// Determine absolute index to match with user selection
|
|
68
|
-
const actualIndex = this.scrollTop + index;
|
|
69
|
-
const isSelected = actualIndex === this.userSelectionIndex;
|
|
70
|
-
const isCorrectAnswer = choice.value === this.options.correctValue;
|
|
71
|
-
let prefix = ' ';
|
|
72
|
-
let style = ansi_1.ANSI.RESET;
|
|
73
|
-
if (isSelected) {
|
|
74
|
-
if (this.isCorrect) {
|
|
75
|
-
prefix = `${theme_1.theme.success}${symbols_1.symbols.pointer} `;
|
|
76
|
-
style = theme_1.theme.success;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
prefix = `${theme_1.theme.error}${symbols_1.symbols.cross} `;
|
|
80
|
-
style = theme_1.theme.error;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else if (isCorrectAnswer) {
|
|
84
|
-
prefix = `${theme_1.theme.success}${symbols_1.symbols.pointer} `;
|
|
85
|
-
style = theme_1.theme.success;
|
|
86
|
-
}
|
|
87
|
-
output += `${prefix}${style}${choice.title}${ansi_1.ANSI.RESET}`;
|
|
88
|
-
if (isSelected && !this.isCorrect) {
|
|
89
|
-
output += ` ${theme_1.theme.error}(Your Answer)${ansi_1.ANSI.RESET}`;
|
|
90
|
-
}
|
|
91
|
-
if (isCorrectAnswer && !isSelected) {
|
|
92
|
-
output += ` ${theme_1.theme.success}(Correct)${ansi_1.ANSI.RESET}`;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
// Explanation
|
|
97
|
-
if (this.options.explanation) {
|
|
98
|
-
output += `\n\n${ansi_1.ANSI.BOLD}Explanation:${ansi_1.ANSI.RESET}\n${theme_1.theme.muted}${this.options.explanation}${ansi_1.ANSI.RESET}`;
|
|
99
|
-
}
|
|
100
|
-
output += `\n\n${ansi_1.ANSI.DIM}(Press Enter to continue)${ansi_1.ANSI.RESET}`;
|
|
101
|
-
this.renderFrame(output);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
exports.QuizSelectPrompt = QuizSelectPrompt;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { QuizTextOptions } from '../types';
|
|
2
|
-
import { TextPrompt } from './text';
|
|
3
|
-
export declare class QuizTextPrompt extends TextPrompt<QuizTextOptions> {
|
|
4
|
-
private status;
|
|
5
|
-
private isCorrect;
|
|
6
|
-
constructor(options: QuizTextOptions);
|
|
7
|
-
protected handleInput(char: string): void;
|
|
8
|
-
protected submit(value: string): void;
|
|
9
|
-
private checkCorrectness;
|
|
10
|
-
protected render(firstRender: boolean): void;
|
|
11
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QuizTextPrompt = void 0;
|
|
4
|
-
const ansi_1 = require("../ansi");
|
|
5
|
-
const theme_1 = require("../theme");
|
|
6
|
-
const symbols_1 = require("../symbols");
|
|
7
|
-
const text_1 = require("./text");
|
|
8
|
-
class QuizTextPrompt extends text_1.TextPrompt {
|
|
9
|
-
constructor(options) {
|
|
10
|
-
super(options);
|
|
11
|
-
this.status = 'pending';
|
|
12
|
-
this.isCorrect = false;
|
|
13
|
-
}
|
|
14
|
-
handleInput(char) {
|
|
15
|
-
if (this.status === 'revealed') {
|
|
16
|
-
if (char === '\r' || char === '\n') {
|
|
17
|
-
this.submit(this.value);
|
|
18
|
-
}
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
super.handleInput(char);
|
|
22
|
-
}
|
|
23
|
-
submit(value) {
|
|
24
|
-
if (this.status === 'pending') {
|
|
25
|
-
// We caught the submission from TextPrompt logic.
|
|
26
|
-
// Now verify correctness.
|
|
27
|
-
this.checkCorrectness(value).then(correct => {
|
|
28
|
-
this.isCorrect = correct;
|
|
29
|
-
this.status = 'revealed';
|
|
30
|
-
this.render(false);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
// If revealed (or anything else), we proceed to final submission.
|
|
35
|
-
// This calls Prompt.submit
|
|
36
|
-
super.submit(value);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async checkCorrectness(value) {
|
|
40
|
-
try {
|
|
41
|
-
if (this.options.verify) {
|
|
42
|
-
return await this.options.verify(value);
|
|
43
|
-
}
|
|
44
|
-
if (this.options.correctAnswer) {
|
|
45
|
-
return value.trim().toLowerCase() === this.options.correctAnswer.trim().toLowerCase();
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
catch (_e) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
render(firstRender) {
|
|
54
|
-
if (this.status === 'pending') {
|
|
55
|
-
super.render(firstRender);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Revealed State
|
|
59
|
-
let output = '';
|
|
60
|
-
const icon = this.isCorrect ? `${theme_1.theme.success}${symbols_1.symbols.tick}` : `${theme_1.theme.error}${symbols_1.symbols.cross}`;
|
|
61
|
-
output += `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
|
|
62
|
-
const userValue = this.segments.join('');
|
|
63
|
-
// Display user input
|
|
64
|
-
if (this.isCorrect) {
|
|
65
|
-
output += ` ${theme_1.theme.success}${userValue}${ansi_1.ANSI.RESET} ${theme_1.theme.success}(Correct)${ansi_1.ANSI.RESET}`;
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
output += ` ${theme_1.theme.error}${userValue}${ansi_1.ANSI.RESET} ${theme_1.theme.error}(Wrong)${ansi_1.ANSI.RESET}`;
|
|
69
|
-
}
|
|
70
|
-
// Show correct answer if wrong
|
|
71
|
-
if (!this.isCorrect && this.options.correctAnswer) {
|
|
72
|
-
output += `\n ${theme_1.theme.success}Correct Answer: ${this.options.correctAnswer}${ansi_1.ANSI.RESET}`;
|
|
73
|
-
}
|
|
74
|
-
// Explanation
|
|
75
|
-
if (this.options.explanation) {
|
|
76
|
-
output += `\n\n${ansi_1.ANSI.BOLD}Explanation:${ansi_1.ANSI.RESET}\n${theme_1.theme.muted}${this.options.explanation}${ansi_1.ANSI.RESET}`;
|
|
77
|
-
}
|
|
78
|
-
output += `\n\n${ansi_1.ANSI.DIM}(Press Enter to continue)${ansi_1.ANSI.RESET}`;
|
|
79
|
-
this.renderFrame(output);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.QuizTextPrompt = QuizTextPrompt;
|
package/dist/prompts/range.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { RangeOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class RangePrompt extends Prompt<[number, number], RangeOptions> {
|
|
4
|
-
private activeHandle;
|
|
5
|
-
constructor(options: RangeOptions);
|
|
6
|
-
protected render(_firstRender: boolean): void;
|
|
7
|
-
protected handleInput(char: string): void;
|
|
8
|
-
protected handleMouse(event: MouseEvent): void;
|
|
9
|
-
}
|
package/dist/prompts/rating.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { RatingOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class RatingPrompt extends Prompt<number, RatingOptions> {
|
|
4
|
-
constructor(options: RatingOptions);
|
|
5
|
-
protected render(_firstRender: boolean): void;
|
|
6
|
-
protected handleInput(char: string): void;
|
|
7
|
-
protected handleMouse(event: MouseEvent): void;
|
|
8
|
-
}
|
package/dist/prompts/regex.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { RegexOptions } from '../types';
|
|
3
|
-
export declare class RegexPrompt extends Prompt<RegExp, RegexOptions> {
|
|
4
|
-
private input;
|
|
5
|
-
private cursor;
|
|
6
|
-
private segments;
|
|
7
|
-
private error;
|
|
8
|
-
private regex;
|
|
9
|
-
constructor(options: RegexOptions);
|
|
10
|
-
private validateRegex;
|
|
11
|
-
protected render(_firstRender: boolean): void;
|
|
12
|
-
protected handleInput(char: string, _key: Buffer): void;
|
|
13
|
-
}
|
package/dist/prompts/region.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { RegionOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class RegionPrompt extends Prompt<string, RegionOptions> {
|
|
4
|
-
private cursorIndex;
|
|
5
|
-
private errorMsg;
|
|
6
|
-
constructor(options: RegionOptions);
|
|
7
|
-
protected render(_firstRender: boolean): void;
|
|
8
|
-
protected handleInput(char: string, _key: Buffer): void;
|
|
9
|
-
private navigate;
|
|
10
|
-
protected handleMouse(event: MouseEvent): void;
|
|
11
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { ScheduleOptions, ScheduleTask, MouseEvent } from '../types';
|
|
3
|
-
export declare class SchedulePrompt extends Prompt<ScheduleTask[], ScheduleOptions> {
|
|
4
|
-
private cursor;
|
|
5
|
-
private tasks;
|
|
6
|
-
private scrollTop;
|
|
7
|
-
private readonly pageSize;
|
|
8
|
-
private viewStartDate;
|
|
9
|
-
private msPerChar;
|
|
10
|
-
private minViewDate?;
|
|
11
|
-
private nameColWidth;
|
|
12
|
-
constructor(options: ScheduleOptions);
|
|
13
|
-
private get maxNameWidth();
|
|
14
|
-
protected render(_firstRender: boolean): void;
|
|
15
|
-
private formatDateCompact;
|
|
16
|
-
private formatDuration;
|
|
17
|
-
protected handleInput(char: string, key: Buffer): void;
|
|
18
|
-
protected handleMouse(event: MouseEvent): void;
|
|
19
|
-
private scrollView;
|
|
20
|
-
}
|
package/dist/prompts/scroll.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { ScrollOptions } from '../types';
|
|
3
|
-
export declare class ScrollPrompt extends Prompt<boolean, ScrollOptions> {
|
|
4
|
-
private lines;
|
|
5
|
-
private scrollTop;
|
|
6
|
-
private height;
|
|
7
|
-
private hasReachedBottom;
|
|
8
|
-
private showError;
|
|
9
|
-
constructor(options: ScrollOptions);
|
|
10
|
-
protected render(_firstRender: boolean): void;
|
|
11
|
-
protected handleInput(char: string, key: Buffer): void;
|
|
12
|
-
protected handleMouse(event: import('../types').MouseEvent): void;
|
|
13
|
-
}
|
package/dist/prompts/seat.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { SeatOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class SeatPrompt extends Prompt<string[], SeatOptions> {
|
|
4
|
-
private grid;
|
|
5
|
-
private cursorX;
|
|
6
|
-
private cursorY;
|
|
7
|
-
private selected;
|
|
8
|
-
private height;
|
|
9
|
-
private width;
|
|
10
|
-
private initializedCursor;
|
|
11
|
-
constructor(options: SeatOptions);
|
|
12
|
-
private parseLayout;
|
|
13
|
-
protected render(_firstRender: boolean): void;
|
|
14
|
-
protected handleInput(char: string): void;
|
|
15
|
-
protected handleMouse(event: MouseEvent): void;
|
|
16
|
-
private move;
|
|
17
|
-
}
|
package/dist/prompts/seat.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SeatPrompt = void 0;
|
|
4
|
-
const base_1 = require("../base");
|
|
5
|
-
const ansi_1 = require("../ansi");
|
|
6
|
-
const theme_1 = require("../theme");
|
|
7
|
-
class SeatPrompt extends base_1.Prompt {
|
|
8
|
-
constructor(options) {
|
|
9
|
-
super(options);
|
|
10
|
-
this.grid = [];
|
|
11
|
-
this.cursorX = 0;
|
|
12
|
-
this.cursorY = 0;
|
|
13
|
-
this.selected = new Set();
|
|
14
|
-
this.height = 0;
|
|
15
|
-
this.width = 0;
|
|
16
|
-
this.initializedCursor = false;
|
|
17
|
-
this.parseLayout();
|
|
18
|
-
if (options.initial) {
|
|
19
|
-
options.initial.forEach(id => this.selected.add(id));
|
|
20
|
-
}
|
|
21
|
-
this.checkWindowsAttention();
|
|
22
|
-
}
|
|
23
|
-
parseLayout() {
|
|
24
|
-
this.height = this.options.layout.length;
|
|
25
|
-
this.width = 0;
|
|
26
|
-
this.grid = this.options.layout.map((line, y) => {
|
|
27
|
-
if (line.length > this.width)
|
|
28
|
-
this.width = line.length;
|
|
29
|
-
return line.split('').map((char, x) => {
|
|
30
|
-
const isGap = char === '_' || char === ' ';
|
|
31
|
-
// Convention: 'X' is occupied.
|
|
32
|
-
const isOccupied = char.toUpperCase() === 'X';
|
|
33
|
-
// Label generation: Rows (A, B...), Cols (1, 2...)
|
|
34
|
-
const rowLabel = this.options.rows ? (this.options.rows[y] || String(y + 1)) : String.fromCharCode(65 + y);
|
|
35
|
-
const colLabel = this.options.cols ? (this.options.cols[x] || String(x + 1)) : String(x + 1);
|
|
36
|
-
const label = `${rowLabel}${colLabel}`;
|
|
37
|
-
const selectable = !isGap;
|
|
38
|
-
let status = 'available';
|
|
39
|
-
if (isOccupied)
|
|
40
|
-
status = 'occupied';
|
|
41
|
-
if (this.selected.has(label))
|
|
42
|
-
status = 'selected'; // Though this is dynamic state
|
|
43
|
-
// Initialize cursor to first available seat
|
|
44
|
-
if (selectable && status !== 'occupied' && !this.initializedCursor) {
|
|
45
|
-
this.cursorX = x;
|
|
46
|
-
this.cursorY = y;
|
|
47
|
-
this.initializedCursor = true;
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
x, y, char, label, selectable, status
|
|
51
|
-
};
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
render(_firstRender) {
|
|
56
|
-
let output = `${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
|
|
57
|
-
output += `${theme_1.theme.muted}(Use arrows to move, Space to select, Enter to confirm)${ansi_1.ANSI.RESET}\n\n`;
|
|
58
|
-
this.grid.forEach((row, y) => {
|
|
59
|
-
let lineStr = '';
|
|
60
|
-
row.forEach((node, x) => {
|
|
61
|
-
const isCursor = x === this.cursorX && y === this.cursorY;
|
|
62
|
-
const isSelected = this.selected.has(node.label);
|
|
63
|
-
const charDisplay = node.char;
|
|
64
|
-
// If occupied, maybe show a different char or color
|
|
65
|
-
let style = ansi_1.ANSI.RESET;
|
|
66
|
-
if (node.status === 'occupied') {
|
|
67
|
-
style = ansi_1.ANSI.FG_RED;
|
|
68
|
-
}
|
|
69
|
-
else if (!node.selectable) {
|
|
70
|
-
style = theme_1.theme.muted;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
style = theme_1.theme.main; // Available seats
|
|
74
|
-
}
|
|
75
|
-
if (isSelected) {
|
|
76
|
-
style = ansi_1.ANSI.BG_GREEN + ansi_1.ANSI.FG_BLACK;
|
|
77
|
-
}
|
|
78
|
-
if (isCursor) {
|
|
79
|
-
// Combine styles? Cursor overrides everything usually
|
|
80
|
-
style = ansi_1.ANSI.BG_CYAN + ansi_1.ANSI.FG_BLACK;
|
|
81
|
-
}
|
|
82
|
-
lineStr += style + charDisplay + ansi_1.ANSI.RESET + ' ';
|
|
83
|
-
});
|
|
84
|
-
output += lineStr + '\n';
|
|
85
|
-
});
|
|
86
|
-
// Show Legend or Current Selection
|
|
87
|
-
if (this.selected.size > 0) {
|
|
88
|
-
output += `\n${theme_1.theme.success}Selected: ${Array.from(this.selected).join(', ')}${ansi_1.ANSI.RESET}`;
|
|
89
|
-
}
|
|
90
|
-
this.renderFrame(output);
|
|
91
|
-
}
|
|
92
|
-
handleInput(char) {
|
|
93
|
-
if (char === '\r' || char === '\n') {
|
|
94
|
-
this.submit(Array.from(this.selected));
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (char === ' ') {
|
|
98
|
-
const row = this.grid[this.cursorY];
|
|
99
|
-
if (!row)
|
|
100
|
-
return;
|
|
101
|
-
const node = row[this.cursorX];
|
|
102
|
-
if (node && node.selectable && node.status !== 'occupied') {
|
|
103
|
-
if (this.selected.has(node.label)) {
|
|
104
|
-
this.selected.delete(node.label);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
if (!this.options.multiple)
|
|
108
|
-
this.selected.clear();
|
|
109
|
-
this.selected.add(node.label);
|
|
110
|
-
}
|
|
111
|
-
this.render(false);
|
|
112
|
-
}
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (this.isUp(char))
|
|
116
|
-
this.move(0, -1);
|
|
117
|
-
else if (this.isDown(char))
|
|
118
|
-
this.move(0, 1);
|
|
119
|
-
else if (this.isLeft(char))
|
|
120
|
-
this.move(-1, 0);
|
|
121
|
-
else if (this.isRight(char))
|
|
122
|
-
this.move(1, 0);
|
|
123
|
-
// Tab / Shift+Tab
|
|
124
|
-
else if (char === '\t')
|
|
125
|
-
this.move(1, 0);
|
|
126
|
-
else if (char === '\u001b[Z')
|
|
127
|
-
this.move(-1, 0);
|
|
128
|
-
}
|
|
129
|
-
handleMouse(event) {
|
|
130
|
-
if (event.action === 'scroll') {
|
|
131
|
-
if (event.scroll === 'up')
|
|
132
|
-
this.move(0, -1);
|
|
133
|
-
else if (event.scroll === 'down')
|
|
134
|
-
this.move(0, 1);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
move(dx, dy) {
|
|
138
|
-
let nx = this.cursorX;
|
|
139
|
-
let ny = this.cursorY;
|
|
140
|
-
let limit = Math.max(this.width, this.height) + 10;
|
|
141
|
-
do {
|
|
142
|
-
nx += dx;
|
|
143
|
-
ny += dy;
|
|
144
|
-
limit--;
|
|
145
|
-
// Boundary Check
|
|
146
|
-
if (ny < 0 || ny >= this.height)
|
|
147
|
-
return;
|
|
148
|
-
const row = this.grid[ny];
|
|
149
|
-
if (!row)
|
|
150
|
-
return;
|
|
151
|
-
if (nx < 0 || nx >= row.length)
|
|
152
|
-
return;
|
|
153
|
-
const node = row[nx];
|
|
154
|
-
// Stop if node is selectable (seat or occupied seat)
|
|
155
|
-
// Skip gaps ('_' or ' ')
|
|
156
|
-
if (node.selectable) {
|
|
157
|
-
this.cursorX = nx;
|
|
158
|
-
this.cursorY = ny;
|
|
159
|
-
this.render(false);
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
} while (limit > 0);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.SeatPrompt = SeatPrompt;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { SelectRangeOptions } from '../types';
|
|
2
|
-
import { SelectPrompt } from './select';
|
|
3
|
-
export declare class SelectRangePrompt<V> extends SelectPrompt<V, SelectRangeOptions<V>> {
|
|
4
|
-
protected anchorIndex: number | null;
|
|
5
|
-
constructor(options: SelectRangeOptions<V>);
|
|
6
|
-
protected handleInput(char: string, _key?: Buffer): void;
|
|
7
|
-
protected render(_firstRender: boolean): void;
|
|
8
|
-
}
|
package/dist/prompts/select.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Prompt } from '../base';
|
|
2
|
-
import { SelectOptions, MouseEvent } from '../types';
|
|
3
|
-
export declare class SelectPrompt<V, O extends SelectOptions<V> = SelectOptions<V>> extends Prompt<any, O> {
|
|
4
|
-
protected selectedIndex: number;
|
|
5
|
-
protected searchBuffer: string;
|
|
6
|
-
protected scrollTop: number;
|
|
7
|
-
protected readonly pageSize: number;
|
|
8
|
-
constructor(options: O);
|
|
9
|
-
protected isSeparator(item: any): boolean;
|
|
10
|
-
protected findNextSelectableIndex(currentIndex: number, direction: 1 | -1): number;
|
|
11
|
-
protected getFilteredChoices(): (import("../types").Separator | import("../types").SelectChoice<V>)[];
|
|
12
|
-
protected render(_firstRender: boolean): void;
|
|
13
|
-
protected handleInput(char: string): void;
|
|
14
|
-
protected handleMouse(event: MouseEvent): void;
|
|
15
|
-
}
|