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.
Files changed (291) hide show
  1. package/README.md +11 -2
  2. package/dist/{ansi.js → src/ansi.js} +17 -9
  3. package/dist/src/ansi.js.map +1 -0
  4. package/dist/{base.js → src/base.js} +82 -70
  5. package/dist/src/base.js.map +1 -0
  6. package/dist/{core.js → src/core.js} +266 -320
  7. package/dist/src/core.js.map +1 -0
  8. package/dist/src/data/countries.js +569 -0
  9. package/dist/src/data/countries.js.map +1 -0
  10. package/dist/src/data/licenses.js +480 -0
  11. package/dist/src/data/licenses.js.map +1 -0
  12. package/dist/{highlight.js → src/highlight.js} +77 -69
  13. package/dist/src/highlight.js.map +1 -0
  14. package/dist/src/index.js +66 -0
  15. package/dist/src/index.js.map +1 -0
  16. package/dist/{input.js → src/input.js} +47 -41
  17. package/dist/src/input.js.map +1 -0
  18. package/dist/src/pipeline.js +273 -0
  19. package/dist/src/pipeline.js.map +1 -0
  20. package/dist/{prompts → src/prompts}/autocomplete.js +58 -57
  21. package/dist/src/prompts/autocomplete.js.map +1 -0
  22. package/dist/{prompts → src/prompts}/box.js +86 -53
  23. package/dist/src/prompts/box.js.map +1 -0
  24. package/dist/{prompts → src/prompts}/breadcrumb-search.js +110 -98
  25. package/dist/src/prompts/breadcrumb-search.js.map +1 -0
  26. package/dist/{prompts → src/prompts}/breadcrumb.js +126 -121
  27. package/dist/src/prompts/breadcrumb.js.map +1 -0
  28. package/dist/{prompts → src/prompts}/byte.js +69 -52
  29. package/dist/src/prompts/byte.js.map +1 -0
  30. package/dist/{prompts → src/prompts}/calculator.js +79 -56
  31. package/dist/src/prompts/calculator.js.map +1 -0
  32. package/dist/{prompts → src/prompts}/calendar.js +167 -127
  33. package/dist/src/prompts/calendar.js.map +1 -0
  34. package/dist/{prompts → src/prompts}/checkbox.js +53 -49
  35. package/dist/src/prompts/checkbox.js.map +1 -0
  36. package/dist/{prompts → src/prompts}/code.js +88 -76
  37. package/dist/src/prompts/code.js.map +1 -0
  38. package/dist/{prompts → src/prompts}/color.js +68 -50
  39. package/dist/src/prompts/color.js.map +1 -0
  40. package/dist/{prompts → src/prompts}/confirm.js +22 -15
  41. package/dist/src/prompts/confirm.js.map +1 -0
  42. package/dist/{prompts → src/prompts}/connection-string.js +59 -36
  43. package/dist/src/prompts/connection-string.js.map +1 -0
  44. package/dist/{prompts → src/prompts}/cron.js +90 -59
  45. package/dist/src/prompts/cron.js.map +1 -0
  46. package/dist/src/prompts/curl-utils.js +71 -0
  47. package/dist/src/prompts/curl-utils.js.map +1 -0
  48. package/dist/{prompts → src/prompts}/curl.js +153 -132
  49. package/dist/src/prompts/curl.js.map +1 -0
  50. package/dist/{prompts → src/prompts}/data-inspector.js +96 -91
  51. package/dist/src/prompts/data-inspector.js.map +1 -0
  52. package/dist/{prompts → src/prompts}/date.js +64 -57
  53. package/dist/src/prompts/date.js.map +1 -0
  54. package/dist/{prompts → src/prompts}/dependency.js +84 -80
  55. package/dist/src/prompts/dependency.js.map +1 -0
  56. package/dist/{prompts → src/prompts}/dial.js +49 -35
  57. package/dist/src/prompts/dial.js.map +1 -0
  58. package/dist/src/prompts/diff.js +118 -0
  59. package/dist/src/prompts/diff.js.map +1 -0
  60. package/dist/{prompts → src/prompts}/draw.js +83 -80
  61. package/dist/src/prompts/draw.js.map +1 -0
  62. package/dist/src/prompts/editor.js +234 -0
  63. package/dist/src/prompts/editor.js.map +1 -0
  64. package/dist/{prompts → src/prompts}/emoji.js +80 -82
  65. package/dist/src/prompts/emoji.js.map +1 -0
  66. package/dist/{prompts → src/prompts}/exec.js +60 -46
  67. package/dist/src/prompts/exec.js.map +1 -0
  68. package/dist/src/prompts/file.js +217 -0
  69. package/dist/src/prompts/file.js.map +1 -0
  70. package/dist/{prompts → src/prompts}/form.js +63 -54
  71. package/dist/src/prompts/form.js.map +1 -0
  72. package/dist/{prompts → src/prompts}/fuzzy-multi-column.js +65 -53
  73. package/dist/src/prompts/fuzzy-multi-column.js.map +1 -0
  74. package/dist/{prompts → src/prompts}/fuzzy.js +66 -55
  75. package/dist/src/prompts/fuzzy.js.map +1 -0
  76. package/dist/src/prompts/gauge.js +137 -0
  77. package/dist/src/prompts/gauge.js.map +1 -0
  78. package/dist/{prompts → src/prompts}/grid.js +70 -57
  79. package/dist/src/prompts/grid.js.map +1 -0
  80. package/dist/{prompts → src/prompts}/heatmap.js +70 -64
  81. package/dist/src/prompts/heatmap.js.map +1 -0
  82. package/dist/{prompts → src/prompts}/ip.js +56 -36
  83. package/dist/src/prompts/ip.js.map +1 -0
  84. package/dist/{prompts → src/prompts}/kanban.js +63 -58
  85. package/dist/src/prompts/kanban.js.map +1 -0
  86. package/dist/src/prompts/keypress.js +54 -0
  87. package/dist/src/prompts/keypress.js.map +1 -0
  88. package/dist/src/prompts/license.js +144 -0
  89. package/dist/src/prompts/license.js.map +1 -0
  90. package/dist/{prompts → src/prompts}/list.js +46 -31
  91. package/dist/src/prompts/list.js.map +1 -0
  92. package/dist/{prompts → src/prompts}/map.js +93 -77
  93. package/dist/src/prompts/map.js.map +1 -0
  94. package/dist/{prompts → src/prompts}/match.js +91 -95
  95. package/dist/src/prompts/match.js.map +1 -0
  96. package/dist/{prompts → src/prompts}/miller.js +74 -67
  97. package/dist/src/prompts/miller.js.map +1 -0
  98. package/dist/{prompts → src/prompts}/multi-column-select.js +54 -44
  99. package/dist/src/prompts/multi-column-select.js.map +1 -0
  100. package/dist/{prompts → src/prompts}/multi-range.js +70 -52
  101. package/dist/src/prompts/multi-range.js.map +1 -0
  102. package/dist/{prompts → src/prompts}/multi-select.js +67 -58
  103. package/dist/src/prompts/multi-select.js.map +1 -0
  104. package/dist/{prompts → src/prompts}/number.js +51 -39
  105. package/dist/src/prompts/number.js.map +1 -0
  106. package/dist/{prompts → src/prompts}/otp.js +43 -27
  107. package/dist/src/prompts/otp.js.map +1 -0
  108. package/dist/{prompts → src/prompts}/pattern.js +74 -71
  109. package/dist/src/prompts/pattern.js.map +1 -0
  110. package/dist/{prompts → src/prompts}/phone.js +107 -118
  111. package/dist/src/prompts/phone.js.map +1 -0
  112. package/dist/src/prompts/quiz-select.js +114 -0
  113. package/dist/src/prompts/quiz-select.js.map +1 -0
  114. package/dist/src/prompts/quiz-text.js +98 -0
  115. package/dist/src/prompts/quiz-text.js.map +1 -0
  116. package/dist/{prompts → src/prompts}/range.js +85 -61
  117. package/dist/src/prompts/range.js.map +1 -0
  118. package/dist/{prompts → src/prompts}/rating.js +29 -24
  119. package/dist/src/prompts/rating.js.map +1 -0
  120. package/dist/{prompts → src/prompts}/regex.js +50 -36
  121. package/dist/src/prompts/regex.js.map +1 -0
  122. package/dist/{prompts → src/prompts}/region.js +62 -56
  123. package/dist/src/prompts/region.js.map +1 -0
  124. package/dist/{prompts → src/prompts}/schedule.js +82 -75
  125. package/dist/src/prompts/schedule.js.map +1 -0
  126. package/dist/{prompts → src/prompts}/scroll.js +61 -58
  127. package/dist/src/prompts/scroll.js.map +1 -0
  128. package/dist/src/prompts/seat.js +164 -0
  129. package/dist/src/prompts/seat.js.map +1 -0
  130. package/dist/{prompts → src/prompts}/select-range.js +58 -46
  131. package/dist/src/prompts/select-range.js.map +1 -0
  132. package/dist/{prompts → src/prompts}/select.js +65 -66
  133. package/dist/src/prompts/select.js.map +1 -0
  134. package/dist/{prompts → src/prompts}/semver.js +24 -13
  135. package/dist/src/prompts/semver.js.map +1 -0
  136. package/dist/src/prompts/shortcut.js +133 -0
  137. package/dist/src/prompts/shortcut.js.map +1 -0
  138. package/dist/{prompts → src/prompts}/slider.js +28 -23
  139. package/dist/src/prompts/slider.js.map +1 -0
  140. package/dist/src/prompts/slot.js +117 -0
  141. package/dist/src/prompts/slot.js.map +1 -0
  142. package/dist/{prompts → src/prompts}/snippet.js +82 -61
  143. package/dist/src/prompts/snippet.js.map +1 -0
  144. package/dist/{prompts → src/prompts}/sort-grid.js +64 -59
  145. package/dist/src/prompts/sort-grid.js.map +1 -0
  146. package/dist/{prompts → src/prompts}/sort.js +59 -49
  147. package/dist/src/prompts/sort.js.map +1 -0
  148. package/dist/src/prompts/spam.js +80 -0
  149. package/dist/src/prompts/spam.js.map +1 -0
  150. package/dist/{prompts → src/prompts}/spreadsheet.js +71 -70
  151. package/dist/src/prompts/spreadsheet.js.map +1 -0
  152. package/dist/{prompts → src/prompts}/table.js +52 -38
  153. package/dist/src/prompts/table.js.map +1 -0
  154. package/dist/{prompts → src/prompts}/text.js +74 -70
  155. package/dist/src/prompts/text.js.map +1 -0
  156. package/dist/{prompts → src/prompts}/time.js +105 -96
  157. package/dist/src/prompts/time.js.map +1 -0
  158. package/dist/src/prompts/toggle.js +53 -0
  159. package/dist/src/prompts/toggle.js.map +1 -0
  160. package/dist/{prompts → src/prompts}/transfer.js +71 -67
  161. package/dist/src/prompts/transfer.js.map +1 -0
  162. package/dist/{prompts → src/prompts}/tree-select.js +83 -86
  163. package/dist/src/prompts/tree-select.js.map +1 -0
  164. package/dist/{prompts → src/prompts}/tree.js +69 -67
  165. package/dist/src/prompts/tree.js.map +1 -0
  166. package/dist/src/prompts/wait.js +79 -0
  167. package/dist/src/prompts/wait.js.map +1 -0
  168. package/dist/src/spinner.js +105 -0
  169. package/dist/src/spinner.js.map +1 -0
  170. package/dist/{symbols.js → src/symbols.js} +32 -7
  171. package/dist/src/symbols.js.map +1 -0
  172. package/dist/{tasks.js → src/tasks.js} +104 -79
  173. package/dist/src/tasks.js.map +1 -0
  174. package/dist/src/theme.js +29 -0
  175. package/dist/src/theme.js.map +1 -0
  176. package/dist/src/types.js +8 -0
  177. package/dist/src/types.js.map +1 -0
  178. package/dist/{utils.js → src/utils.js} +196 -152
  179. package/dist/src/utils.js.map +1 -0
  180. package/package.json +16 -13
  181. package/dist/ansi.d.ts +0 -36
  182. package/dist/base.d.ts +0 -60
  183. package/dist/core.d.ts +0 -1072
  184. package/dist/data/countries.d.ts +0 -2
  185. package/dist/data/countries.js +0 -105
  186. package/dist/data/licenses.d.ts +0 -2
  187. package/dist/data/licenses.js +0 -109
  188. package/dist/highlight.d.ts +0 -7
  189. package/dist/index.d.ts +0 -48
  190. package/dist/index.js +0 -64
  191. package/dist/input.d.ts +0 -14
  192. package/dist/pipeline.d.ts +0 -39
  193. package/dist/pipeline.js +0 -54
  194. package/dist/prompts/autocomplete.d.ts +0 -22
  195. package/dist/prompts/box.d.ts +0 -21
  196. package/dist/prompts/breadcrumb-search.d.ts +0 -14
  197. package/dist/prompts/breadcrumb.d.ts +0 -32
  198. package/dist/prompts/byte.d.ts +0 -13
  199. package/dist/prompts/calculator.d.ts +0 -17
  200. package/dist/prompts/calendar.d.ts +0 -33
  201. package/dist/prompts/checkbox.d.ts +0 -13
  202. package/dist/prompts/code.d.ts +0 -19
  203. package/dist/prompts/color.d.ts +0 -14
  204. package/dist/prompts/confirm.d.ts +0 -8
  205. package/dist/prompts/connection-string.d.ts +0 -18
  206. package/dist/prompts/cron.d.ts +0 -13
  207. package/dist/prompts/curl-utils.d.ts +0 -25
  208. package/dist/prompts/curl-utils.js +0 -41
  209. package/dist/prompts/curl.d.ts +0 -41
  210. package/dist/prompts/data-inspector.d.ts +0 -22
  211. package/dist/prompts/date.d.ts +0 -12
  212. package/dist/prompts/dependency.d.ts +0 -16
  213. package/dist/prompts/dial.d.ts +0 -10
  214. package/dist/prompts/diff.d.ts +0 -10
  215. package/dist/prompts/diff.js +0 -101
  216. package/dist/prompts/draw.d.ts +0 -20
  217. package/dist/prompts/editor.d.ts +0 -14
  218. package/dist/prompts/editor.js +0 -203
  219. package/dist/prompts/emoji.d.ts +0 -18
  220. package/dist/prompts/exec.d.ts +0 -17
  221. package/dist/prompts/file.d.ts +0 -21
  222. package/dist/prompts/file.js +0 -210
  223. package/dist/prompts/form.d.ts +0 -18
  224. package/dist/prompts/fuzzy-multi-column.d.ts +0 -12
  225. package/dist/prompts/fuzzy.d.ts +0 -12
  226. package/dist/prompts/gauge.d.ts +0 -21
  227. package/dist/prompts/gauge.js +0 -130
  228. package/dist/prompts/grid.d.ts +0 -14
  229. package/dist/prompts/heatmap.d.ts +0 -13
  230. package/dist/prompts/ip.d.ts +0 -11
  231. package/dist/prompts/kanban.d.ts +0 -17
  232. package/dist/prompts/keypress.d.ts +0 -7
  233. package/dist/prompts/keypress.js +0 -55
  234. package/dist/prompts/license.d.ts +0 -9
  235. package/dist/prompts/license.js +0 -105
  236. package/dist/prompts/list.d.ts +0 -9
  237. package/dist/prompts/map.d.ts +0 -17
  238. package/dist/prompts/match.d.ts +0 -19
  239. package/dist/prompts/miller.d.ts +0 -15
  240. package/dist/prompts/multi-column-select.d.ts +0 -10
  241. package/dist/prompts/multi-range.d.ts +0 -9
  242. package/dist/prompts/multi-select.d.ts +0 -15
  243. package/dist/prompts/number.d.ts +0 -11
  244. package/dist/prompts/otp.d.ts +0 -10
  245. package/dist/prompts/pattern.d.ts +0 -22
  246. package/dist/prompts/phone.d.ts +0 -41
  247. package/dist/prompts/quiz-select.d.ts +0 -10
  248. package/dist/prompts/quiz-select.js +0 -104
  249. package/dist/prompts/quiz-text.d.ts +0 -11
  250. package/dist/prompts/quiz-text.js +0 -82
  251. package/dist/prompts/range.d.ts +0 -9
  252. package/dist/prompts/rating.d.ts +0 -8
  253. package/dist/prompts/regex.d.ts +0 -13
  254. package/dist/prompts/region.d.ts +0 -11
  255. package/dist/prompts/schedule.d.ts +0 -20
  256. package/dist/prompts/scroll.d.ts +0 -13
  257. package/dist/prompts/seat.d.ts +0 -17
  258. package/dist/prompts/seat.js +0 -165
  259. package/dist/prompts/select-range.d.ts +0 -8
  260. package/dist/prompts/select.d.ts +0 -15
  261. package/dist/prompts/semver.d.ts +0 -6
  262. package/dist/prompts/shortcut.d.ts +0 -9
  263. package/dist/prompts/shortcut.js +0 -135
  264. package/dist/prompts/slider.d.ts +0 -8
  265. package/dist/prompts/slot.d.ts +0 -16
  266. package/dist/prompts/slot.js +0 -107
  267. package/dist/prompts/snippet.d.ts +0 -19
  268. package/dist/prompts/sort-grid.d.ts +0 -16
  269. package/dist/prompts/sort.d.ts +0 -14
  270. package/dist/prompts/spam.d.ts +0 -17
  271. package/dist/prompts/spam.js +0 -62
  272. package/dist/prompts/spreadsheet.d.ts +0 -21
  273. package/dist/prompts/table.d.ts +0 -14
  274. package/dist/prompts/text.d.ts +0 -17
  275. package/dist/prompts/time.d.ts +0 -12
  276. package/dist/prompts/toggle.d.ts +0 -8
  277. package/dist/prompts/toggle.js +0 -47
  278. package/dist/prompts/transfer.d.ts +0 -18
  279. package/dist/prompts/tree-select.d.ts +0 -31
  280. package/dist/prompts/tree.d.ts +0 -20
  281. package/dist/prompts/wait.d.ts +0 -18
  282. package/dist/prompts/wait.js +0 -62
  283. package/dist/spinner.d.ts +0 -33
  284. package/dist/spinner.js +0 -89
  285. package/dist/symbols.d.ts +0 -33
  286. package/dist/tasks.d.ts +0 -57
  287. package/dist/theme.d.ts +0 -2
  288. package/dist/theme.js +0 -20
  289. package/dist/types.d.ts +0 -503
  290. package/dist/types.js +0 -5
  291. package/dist/utils.d.ts +0 -81
@@ -1,57 +1,51 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimePrompt = void 0;
4
- const base_1 = require("../base");
5
- const ansi_1 = require("../ansi");
6
- class TimePrompt extends base_1.Prompt {
7
- constructor(options) {
8
- super(options);
9
- this.hour = 0;
10
- this.minute = 0;
11
- this.activeCol = 0; // 0: Hour, 1: Minute, 2: Meridiem (if 12h)
12
- const now = options.initial ? (typeof options.initial === 'string' ? new Date(options.initial) : options.initial) : new Date();
13
- // Fallback if invalid date
14
- if (isNaN(now.getTime())) {
15
- this.hour = 0;
16
- this.minute = 0;
17
- }
18
- else {
19
- this.hour = now.getHours();
20
- this.minute = now.getMinutes();
21
- }
22
- // Round minute to nearest step
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) => m.toString().padStart(2, '0');
43
- const getMeridiem = (h) => h >= 12 ? 'PM' : 'AM';
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 = [getHourDisplay(prevH), getHourDisplay(curH), getHourDisplay(nextH)];
65
- const colMin = [getMinDisplay(prevM), getMinDisplay(curM), getMinDisplay(nextM)];
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 = [otherMer, curMer, otherMer];
73
+ colMer = [
74
+ otherMer,
75
+ curMer,
76
+ otherMer
77
+ ];
72
78
  }
73
- const dim = ansi_1.ANSI.FG_GRAY;
74
- let output = `${ansi_1.ANSI.FG_CYAN}? ${this.options.message}${ansi_1.ANSI.RESET}\n`;
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 (let i = 0; i < 3; i++) {
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 = `${ansi_1.ANSI.FG_CYAN}${ansi_1.ANSI.REVERSE} ${hStr} ${ansi_1.ANSI.RESET}`;
82
- }
83
- else if (isCenter) {
84
- hStr = `${ansi_1.ANSI.BOLD} ${hStr} ${ansi_1.ANSI.RESET}`;
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 = `${ansi_1.ANSI.FG_CYAN}${ansi_1.ANSI.REVERSE} ${mStr} ${ansi_1.ANSI.RESET}`;
94
- }
95
- else if (isCenter) {
96
- mStr = `${ansi_1.ANSI.BOLD} ${mStr} ${ansi_1.ANSI.RESET}`;
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 = `${ansi_1.ANSI.FG_CYAN}${ansi_1.ANSI.REVERSE} ${merStr} ${ansi_1.ANSI.RESET}`;
107
- }
108
- else if (isCenter) {
109
- merStr = `${ansi_1.ANSI.BOLD} ${merStr} ${ansi_1.ANSI.RESET}`;
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 += ansi_1.ANSI.FG_GRAY + "(Use Arrows/Tab to navigate)" + ansi_1.ANSI.RESET;
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') { // Enter
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)) { // Shift+Tab or Left
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) { // Hour
170
+ if (this.activeCol === 0) {
177
171
  let newH = this.hour + direction;
178
- if (newH < 0)
179
- newH = 23;
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 + (direction * step);
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
- newM = 60 + newM; // e.g. -5 -> 55
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
- exports.TimePrompt = TimePrompt;
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", { value: true });
3
- exports.TransferPrompt = void 0;
4
- const ansi_1 = require("../ansi");
5
- const base_1 = require("../base");
6
- const theme_1 = require("../theme");
7
- const symbols_1 = require("../symbols");
8
- const utils_1 = require("../utils");
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 { title: item, value: item };
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, utils_1.stringWidth)(str) <= width)
33
- return str;
42
+ if ((0, _utils.stringWidth)(str) <= width) return str;
34
43
  let res = str;
35
- while ((0, utils_1.stringWidth)(res + '...') > width && res.length > 0) {
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
- this.scrollTopLeft = this.cursorLeft;
47
- if (this.cursorLeft >= this.scrollTopLeft + this.pageSize)
48
- this.scrollTopLeft = this.cursorLeft - this.pageSize + 1;
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
- else {
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' ? `${theme_1.theme.main}Source${ansi_1.ANSI.RESET}` : 'Source';
59
- const rightTitle = this.activeSide === 'right' ? `${theme_1.theme.main}Target${ansi_1.ANSI.RESET}` : 'Target';
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 += ` ${ansi_1.ANSI.DIM}${symbols_1.symbols.line.repeat(colWidth)}${ansi_1.ANSI.RESET} ${ansi_1.ANSI.DIM}${symbols_1.symbols.line.repeat(colWidth)}${ansi_1.ANSI.RESET}\n`;
62
- for (let i = 0; i < this.pageSize; i++) {
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 = `${theme_1.theme.main}${symbols_1.symbols.pointer} ${title}${ansi_1.ANSI.RESET}`;
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 = `${theme_1.theme.main}${symbols_1.symbols.pointer} ${title}${ansi_1.ANSI.RESET}`;
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 ? ((0, utils_1.stringWidth)(this.truncate(itemLeft.title, colWidth - 2)) + 2) : 0;
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${ansi_1.ANSI.DIM}(Tab: Switch | a: Move All Right | r: Reset/All Left)${ansi_1.ANSI.RESET}`;
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 => i.value);
105
- const rightValues = this.rightList.map(i => i.value);
106
- this.submit([leftValues, rightValues]);
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
- exports.TransferPrompt = TransferPrompt;
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