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,35 +1,37 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataInspectorPrompt = void 0;
4
- const ansi_1 = require("../ansi");
5
- const base_1 = require("../base");
6
- const theme_1 = require("../theme");
7
- const utils_1 = require("../utils");
8
- const symbols_1 = require("../symbols");
9
- class DataInspectorPrompt extends base_1.Prompt {
10
- constructor(options) {
11
- super(options);
12
- this.cursor = 0;
13
- this.flatList = [];
14
- this.expandedPaths = new Set();
15
- this.scrollTop = 0;
16
- this.pageSize = 15;
17
- // Edit Mode State
18
- this.editMode = false;
19
- this.editBuffer = '';
20
- this.rootData = options.data; // We mutate this directly
21
- this.expandedPaths.add('root'); // Always expand root if it's an object
22
- this.recalculateFlatList();
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DataInspectorPrompt", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DataInspectorPrompt;
9
+ }
10
+ });
11
+ const _ansi = require("../ansi");
12
+ const _base = require("../base");
13
+ const _theme = require("../theme");
14
+ const _utils = require("../utils");
15
+ const _symbols = require("../symbols");
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;
23
26
  }
27
+ return obj;
28
+ }
29
+ let DataInspectorPrompt = class DataInspectorPrompt extends _base.Prompt {
24
30
  getType(value) {
25
- if (value === null)
26
- return 'null';
27
- if (value === undefined)
28
- return 'undefined';
29
- if (Array.isArray(value))
30
- return 'array';
31
- if (value instanceof Date)
32
- return 'date';
31
+ if (value === null) return 'null';
32
+ if (value === undefined) return 'undefined';
33
+ if (Array.isArray(value)) return 'array';
34
+ if (value instanceof Date) return 'date';
33
35
  return typeof value;
34
36
  }
35
37
  recalculateFlatList() {
@@ -38,7 +40,10 @@ class DataInspectorPrompt extends base_1.Prompt {
38
40
  }
39
41
  traverse(data, key, depth, parentRef, currentPath) {
40
42
  const type = this.getType(data);
41
- const isLeaf = !['object', 'array'].includes(type) || data === null;
43
+ const isLeaf = ![
44
+ 'object',
45
+ 'array'
46
+ ].includes(type) || data === null;
42
47
  const node = {
43
48
  key: String(key),
44
49
  value: data,
@@ -52,90 +57,86 @@ class DataInspectorPrompt extends base_1.Prompt {
52
57
  this.flatList.push(node);
53
58
  if (!isLeaf && this.expandedPaths.has(currentPath)) {
54
59
  const keys = Object.keys(data);
55
- keys.forEach(k => {
60
+ keys.forEach((k)=>{
56
61
  this.traverse(data[k], k, depth + 1, data, `${currentPath}.${k}`);
57
62
  });
58
63
  }
59
64
  }
60
65
  getValueColor(type) {
61
- switch (type) {
62
- case 'string': return ansi_1.ANSI.FG_GREEN;
63
- case 'number': return ansi_1.ANSI.FG_YELLOW;
64
- case 'boolean': return ansi_1.ANSI.FG_MAGENTA;
66
+ switch(type){
67
+ case 'string':
68
+ return _ansi.ANSI.FG_GREEN;
69
+ case 'number':
70
+ return _ansi.ANSI.FG_YELLOW;
71
+ case 'boolean':
72
+ return _ansi.ANSI.FG_MAGENTA;
65
73
  case 'null':
66
- case 'undefined': return ansi_1.ANSI.FG_GRAY;
67
- case 'date': return ansi_1.ANSI.FG_BLUE;
68
- default: return ansi_1.ANSI.RESET;
74
+ case 'undefined':
75
+ return _ansi.ANSI.FG_GRAY;
76
+ case 'date':
77
+ return _ansi.ANSI.FG_BLUE;
78
+ default:
79
+ return _ansi.ANSI.RESET;
69
80
  }
70
81
  }
71
82
  formatValue(value, type) {
72
- if (type === 'string')
73
- return `"${value}"`;
74
- if (type === 'date')
75
- return value.toISOString();
76
- if (type === 'array')
77
- return `Array(${value.length})`;
78
- if (type === 'object')
79
- return `Object{${Object.keys(value).length}}`;
83
+ if (type === 'string') return `"${value}"`;
84
+ if (type === 'date') return value.toISOString();
85
+ if (type === 'array') return `Array(${value.length})`;
86
+ if (type === 'object') return `Object{${Object.keys(value).length}}`;
80
87
  return String(value);
81
88
  }
82
89
  render(_firstRender) {
83
- 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`;
90
+ let output = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET}\n`;
84
91
  if (this.cursor < this.scrollTop) {
85
92
  this.scrollTop = this.cursor;
86
- }
87
- else if (this.cursor >= this.scrollTop + this.pageSize) {
93
+ } else if (this.cursor >= this.scrollTop + this.pageSize) {
88
94
  this.scrollTop = this.cursor - this.pageSize + 1;
89
95
  }
90
96
  const visible = this.flatList.slice(this.scrollTop, this.scrollTop + this.pageSize);
91
- visible.forEach((node, index) => {
97
+ visible.forEach((node, index)=>{
92
98
  const actualIndex = this.scrollTop + index;
93
99
  const isSelected = actualIndex === this.cursor;
94
100
  // Indentation & Tree Lines
95
101
  const indent = ' '.repeat(node.depth);
96
- const prefix = isSelected ? `${theme_1.theme.main}${symbols_1.symbols.pointer} ` : ' ';
102
+ const prefix = isSelected ? `${_theme.theme.main}${_symbols.symbols.pointer} ` : ' ';
97
103
  // Icon
98
104
  let icon = '';
99
105
  if (!node.isLeaf) {
100
106
  icon = this.expandedPaths.has(node.path) ? '▾ ' : '▸ ';
101
- }
102
- else {
107
+ } else {
103
108
  icon = '• '; // Leaf
104
109
  }
105
110
  // Key
106
111
  let keyStr = node.key;
107
- if (node.path === 'root')
108
- keyStr = 'ROOT';
112
+ if (node.path === 'root') keyStr = 'ROOT';
109
113
  // Value Representation
110
114
  let valueStr = '';
111
115
  if (isSelected && this.editMode) {
112
116
  // Editing View
113
- valueStr = `${ansi_1.ANSI.BG_BLUE}${ansi_1.ANSI.FG_WHITE} ${this.editBuffer}_ ${ansi_1.ANSI.RESET}`;
114
- }
115
- else {
117
+ valueStr = `${_ansi.ANSI.BG_BLUE}${_ansi.ANSI.FG_WHITE} ${this.editBuffer}_ ${_ansi.ANSI.RESET}`;
118
+ } else {
116
119
  // Normal View
117
120
  const color = this.getValueColor(node.type);
118
121
  const formatted = this.formatValue(node.value, node.type);
119
- valueStr = `${color}${formatted}${ansi_1.ANSI.RESET}`;
122
+ valueStr = `${color}${formatted}${_ansi.ANSI.RESET}`;
120
123
  }
121
124
  // Type Label (Right aligned or just dimmed next to key)
122
- const typeLabel = `${ansi_1.ANSI.FG_GRAY}(${node.type})${ansi_1.ANSI.RESET}`;
123
- let line = `${indent}${icon}${ansi_1.ANSI.BOLD}${keyStr}${ansi_1.ANSI.RESET}: ${valueStr} ${typeLabel}`;
125
+ const typeLabel = `${_ansi.ANSI.FG_GRAY}(${node.type})${_ansi.ANSI.RESET}`;
126
+ let line = `${indent}${icon}${_ansi.ANSI.BOLD}${keyStr}${_ansi.ANSI.RESET}: ${valueStr} ${typeLabel}`;
124
127
  if (isSelected && !this.editMode) {
125
- line = `${theme_1.theme.main}${(0, utils_1.stripAnsi)(line)}${ansi_1.ANSI.RESET}`; // Highlight whole line
126
- }
127
- else if (isSelected && this.editMode) {
128
+ line = `${_theme.theme.main}${(0, _utils.stripAnsi)(line)}${_ansi.ANSI.RESET}`; // Highlight whole line
129
+ } else if (isSelected && this.editMode) {
128
130
  // In edit mode, we don't highlight the whole line, just the input box
129
- line = `${indent}${icon}${ansi_1.ANSI.BOLD}${keyStr}${ansi_1.ANSI.RESET}: ${valueStr} ${typeLabel}`;
131
+ line = `${indent}${icon}${_ansi.ANSI.BOLD}${keyStr}${_ansi.ANSI.RESET}: ${valueStr} ${typeLabel}`;
130
132
  }
131
133
  output += `${prefix}${line}\n`;
132
134
  });
133
135
  // Footer
134
136
  if (this.editMode) {
135
- output += `\n${theme_1.theme.main}EDIT MODE${ansi_1.ANSI.RESET} Enter: Save, Esc: Cancel`;
136
- }
137
- else {
138
- output += `\n${theme_1.theme.muted}(Arrows: Nav, Space: Toggle, Enter: Edit/Submit)${ansi_1.ANSI.RESET}`;
137
+ output += `\n${_theme.theme.main}EDIT MODE${_ansi.ANSI.RESET} Enter: Save, Esc: Cancel`;
138
+ } else {
139
+ output += `\n${_theme.theme.muted}(Arrows: Nav, Space: Toggle, Enter: Edit/Submit)${_ansi.ANSI.RESET}`;
139
140
  }
140
141
  this.renderFrame(output);
141
142
  }
@@ -161,19 +162,14 @@ class DataInspectorPrompt extends base_1.Prompt {
161
162
  const isExpanded = this.expandedPaths.has(node.path);
162
163
  if (this.isRight(char) && !isExpanded) {
163
164
  this.expandedPaths.add(node.path);
164
- }
165
- else if (this.isLeft(char) && isExpanded) {
165
+ } else if (this.isLeft(char) && isExpanded) {
166
166
  this.expandedPaths.delete(node.path);
167
- }
168
- else if (char === ' ') {
169
- if (isExpanded)
170
- this.expandedPaths.delete(node.path);
171
- else
172
- this.expandedPaths.add(node.path);
173
- }
174
- else if (this.isLeft(char) && !isExpanded && node.parentRef) {
175
- // Jump to parent
176
- // This requires finding parent index, but simplification: just do nothing or standard logic
167
+ } else if (char === ' ') {
168
+ if (isExpanded) this.expandedPaths.delete(node.path);
169
+ else this.expandedPaths.add(node.path);
170
+ } else if (this.isLeft(char) && !isExpanded && node.parentRef) {
171
+ // Jump to parent
172
+ // This requires finding parent index, but simplification: just do nothing or standard logic
177
173
  }
178
174
  this.recalculateFlatList();
179
175
  this.render(false);
@@ -195,7 +191,10 @@ class DataInspectorPrompt extends base_1.Prompt {
195
191
  return;
196
192
  }
197
193
  // Enter Edit Mode for String/Number
198
- if (['string', 'number'].includes(node.type)) {
194
+ if ([
195
+ 'string',
196
+ 'number'
197
+ ].includes(node.type)) {
199
198
  this.editMode = true;
200
199
  this.editBuffer = String(node.value);
201
200
  this.render(false);
@@ -211,8 +210,7 @@ class DataInspectorPrompt extends base_1.Prompt {
211
210
  let newValue = this.editBuffer;
212
211
  if (node.type === 'number') {
213
212
  newValue = Number(this.editBuffer);
214
- if (isNaN(newValue))
215
- newValue = 0; // Fallback
213
+ if (isNaN(newValue)) newValue = 0; // Fallback
216
214
  }
217
215
  // Update Data
218
216
  node.parentRef[node.refKey] = newValue;
@@ -222,7 +220,7 @@ class DataInspectorPrompt extends base_1.Prompt {
222
220
  return;
223
221
  }
224
222
  // Esc: Cancel
225
- if (key[0] === 27 && key.length === 1) { // Standard ESC
223
+ if (key[0] === 27 && key.length === 1) {
226
224
  this.editMode = false;
227
225
  this.render(false);
228
226
  return;
@@ -240,17 +238,24 @@ class DataInspectorPrompt extends base_1.Prompt {
240
238
  }
241
239
  }
242
240
  handleMouse(event) {
243
- if (this.editMode)
244
- return; // Disable scroll in edit mode for now
241
+ if (this.editMode) return; // Disable scroll in edit mode for now
245
242
  if (event.action === 'scroll') {
246
243
  if (event.scroll === 'up') {
247
244
  this.cursor = (this.cursor - 1 + this.flatList.length) % this.flatList.length;
248
- }
249
- else if (event.scroll === 'down') {
245
+ } else if (event.scroll === 'down') {
250
246
  this.cursor = (this.cursor + 1) % this.flatList.length;
251
247
  }
252
248
  this.render(false);
253
249
  }
254
250
  }
255
- }
256
- exports.DataInspectorPrompt = DataInspectorPrompt;
251
+ constructor(options){
252
+ super(options), _define_property(this, "cursor", 0), _define_property(this, "flatList", []), _define_property(this, "expandedPaths", new Set()), _define_property(this, "scrollTop", 0), _define_property(this, "pageSize", 15), // Edit Mode State
253
+ _define_property(this, "editMode", false), _define_property(this, "editBuffer", ''), // Config
254
+ _define_property(this, "rootData", void 0);
255
+ this.rootData = options.data; // We mutate this directly
256
+ this.expandedPaths.add('root'); // Always expand root if it's an object
257
+ this.recalculateFlatList();
258
+ }
259
+ };
260
+
261
+ //# sourceMappingURL=data-inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/prompts/data-inspector.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { DataInspectorOptions, MouseEvent } from '../types';\nimport { stripAnsi } from '../utils';\nimport { symbols } from '../symbols';\n\ninterface InspectorNode {\n key: string;\n value: any;\n type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'null' | 'undefined' | 'date' | 'function';\n depth: number;\n path: string; // Unique ID for expansion\n parentRef: any; // Reference to parent object/array for mutation\n refKey: string | number; // Key in parent\n isLeaf: boolean;\n}\n\nexport class DataInspectorPrompt extends Prompt<any, DataInspectorOptions> {\n private cursor: number = 0;\n private flatList: InspectorNode[] = [];\n private expandedPaths: Set<string> = new Set();\n private scrollTop: number = 0;\n private readonly pageSize: number = 15;\n\n // Edit Mode State\n private editMode: boolean = false;\n private editBuffer: string = '';\n\n // Config\n private rootData: any;\n\n constructor(options: DataInspectorOptions) {\n super(options);\n this.rootData = options.data; // We mutate this directly\n this.expandedPaths.add('root'); // Always expand root if it's an object\n this.recalculateFlatList();\n }\n\n private getType(value: any): InspectorNode['type'] {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Date) return 'date';\n return typeof value as InspectorNode['type'];\n }\n\n private recalculateFlatList() {\n this.flatList = [];\n this.traverse(this.rootData, 'root', 0, null, 'root');\n }\n\n private traverse(data: any, key: string | number, depth: number, parentRef: any, currentPath: string) {\n const type = this.getType(data);\n const isLeaf = !['object', 'array'].includes(type) || data === null;\n\n const node: InspectorNode = {\n key: String(key),\n value: data,\n type,\n depth,\n path: currentPath,\n parentRef,\n refKey: key,\n isLeaf\n };\n\n this.flatList.push(node);\n\n if (!isLeaf && this.expandedPaths.has(currentPath)) {\n const keys = Object.keys(data);\n keys.forEach(k => {\n this.traverse(data[k], k, depth + 1, data, `${currentPath}.${k}`);\n });\n }\n }\n\n private getValueColor(type: string): string {\n switch (type) {\n case 'string': return ANSI.FG_GREEN;\n case 'number': return ANSI.FG_YELLOW;\n case 'boolean': return ANSI.FG_MAGENTA;\n case 'null':\n case 'undefined': return ANSI.FG_GRAY;\n case 'date': return ANSI.FG_BLUE;\n default: return ANSI.RESET;\n }\n }\n\n private formatValue(value: any, type: string): string {\n if (type === 'string') return `\"${value}\"`;\n if (type === 'date') return value.toISOString();\n if (type === 'array') return `Array(${value.length})`;\n if (type === 'object') return `Object{${Object.keys(value).length}}`;\n return String(value);\n }\n\n protected render(_firstRender: boolean) {\n let output = `${theme.success}?${ANSI.RESET} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET}\\n`;\n\n if (this.cursor < this.scrollTop) {\n this.scrollTop = this.cursor;\n } else if (this.cursor >= this.scrollTop + this.pageSize) {\n this.scrollTop = this.cursor - this.pageSize + 1;\n }\n\n const visible = this.flatList.slice(this.scrollTop, this.scrollTop + this.pageSize);\n\n visible.forEach((node, index) => {\n const actualIndex = this.scrollTop + index;\n const isSelected = actualIndex === this.cursor;\n\n // Indentation & Tree Lines\n const indent = ' '.repeat(node.depth);\n const prefix = isSelected ? `${theme.main}${symbols.pointer} ` : ' ';\n\n // Icon\n let icon = '';\n if (!node.isLeaf) {\n icon = this.expandedPaths.has(node.path) ? '▾ ' : '▸ ';\n } else {\n icon = '• '; // Leaf\n }\n\n // Key\n let keyStr = node.key;\n if (node.path === 'root') keyStr = 'ROOT';\n\n // Value Representation\n let valueStr = '';\n\n if (isSelected && this.editMode) {\n // Editing View\n valueStr = `${ANSI.BG_BLUE}${ANSI.FG_WHITE} ${this.editBuffer}_ ${ANSI.RESET}`;\n } else {\n // Normal View\n const color = this.getValueColor(node.type);\n const formatted = this.formatValue(node.value, node.type);\n valueStr = `${color}${formatted}${ANSI.RESET}`;\n }\n\n // Type Label (Right aligned or just dimmed next to key)\n const typeLabel = `${ANSI.FG_GRAY}(${node.type})${ANSI.RESET}`;\n\n let line = `${indent}${icon}${ANSI.BOLD}${keyStr}${ANSI.RESET}: ${valueStr} ${typeLabel}`;\n\n if (isSelected && !this.editMode) {\n line = `${theme.main}${stripAnsi(line)}${ANSI.RESET}`; // Highlight whole line\n } else if (isSelected && this.editMode) {\n // In edit mode, we don't highlight the whole line, just the input box\n line = `${indent}${icon}${ANSI.BOLD}${keyStr}${ANSI.RESET}: ${valueStr} ${typeLabel}`;\n }\n\n output += `${prefix}${line}\\n`;\n });\n\n // Footer\n if (this.editMode) {\n output += `\\n${theme.main}EDIT MODE${ANSI.RESET} Enter: Save, Esc: Cancel`;\n } else {\n output += `\\n${theme.muted}(Arrows: Nav, Space: Toggle, Enter: Edit/Submit)${ANSI.RESET}`;\n }\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string, key: Buffer) {\n if (this.editMode) {\n this.handleEditInput(char, key);\n return;\n }\n\n const node = this.flatList[this.cursor];\n\n if (this.isUp(char)) {\n this.cursor = (this.cursor - 1 + this.flatList.length) % this.flatList.length;\n this.render(false);\n return;\n }\n if (this.isDown(char)) {\n this.cursor = (this.cursor + 1) % this.flatList.length;\n this.render(false);\n return;\n }\n\n // Expand/Collapse\n if (char === ' ' || this.isRight(char) || this.isLeft(char)) {\n if (!node.isLeaf) {\n const isExpanded = this.expandedPaths.has(node.path);\n\n if (this.isRight(char) && !isExpanded) {\n this.expandedPaths.add(node.path);\n } else if (this.isLeft(char) && isExpanded) {\n this.expandedPaths.delete(node.path);\n } else if (char === ' ') {\n if (isExpanded) this.expandedPaths.delete(node.path);\n else this.expandedPaths.add(node.path);\n } else if (this.isLeft(char) && !isExpanded && node.parentRef) {\n // Jump to parent\n // This requires finding parent index, but simplification: just do nothing or standard logic\n }\n\n this.recalculateFlatList();\n this.render(false);\n }\n return;\n }\n\n // Enter: Edit or Submit\n if (char === '\\r' || char === '\\n') {\n if (node.path === 'root') {\n this.submit(this.rootData);\n return;\n }\n\n // Toggle Boolean immediately\n if (node.type === 'boolean') {\n const newVal = !node.value;\n node.parentRef[node.refKey] = newVal;\n this.recalculateFlatList(); // Value changed\n this.render(false);\n return;\n }\n\n // Enter Edit Mode for String/Number\n if (['string', 'number'].includes(node.type)) {\n this.editMode = true;\n this.editBuffer = String(node.value);\n this.render(false);\n return;\n }\n\n this.submit(this.rootData);\n }\n }\n\n private handleEditInput(char: string, key: Buffer) {\n const node = this.flatList[this.cursor];\n\n // Enter: Save\n if (char === '\\r' || char === '\\n') {\n let newValue: any = this.editBuffer;\n if (node.type === 'number') {\n newValue = Number(this.editBuffer);\n if (isNaN(newValue)) newValue = 0; // Fallback\n }\n\n // Update Data\n node.parentRef[node.refKey] = newValue;\n\n this.editMode = false;\n this.recalculateFlatList();\n this.render(false);\n return;\n }\n\n // Esc: Cancel\n if (key[0] === 27 && key.length === 1) { // Standard ESC\n this.editMode = false;\n this.render(false);\n return;\n }\n\n // Backspace\n if (key.toString() === '\\x7f' || char === '\\b') {\n this.editBuffer = this.editBuffer.slice(0, -1);\n this.render(false);\n return;\n }\n\n // Typing\n if (char && char.length === 1 && char.charCodeAt(0) >= 32) {\n this.editBuffer += char;\n this.render(false);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n if (this.editMode) return; // Disable scroll in edit mode for now\n\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n this.cursor = (this.cursor - 1 + this.flatList.length) % this.flatList.length;\n } else if (event.scroll === 'down') {\n this.cursor = (this.cursor + 1) % this.flatList.length;\n }\n this.render(false);\n }\n }\n}\n"],"names":["DataInspectorPrompt","Prompt","getType","value","undefined","Array","isArray","Date","recalculateFlatList","flatList","traverse","rootData","data","key","depth","parentRef","currentPath","type","isLeaf","includes","node","String","path","refKey","push","expandedPaths","has","keys","Object","forEach","k","getValueColor","ANSI","FG_GREEN","FG_YELLOW","FG_MAGENTA","FG_GRAY","FG_BLUE","RESET","formatValue","toISOString","length","render","_firstRender","output","theme","success","BOLD","title","options","message","cursor","scrollTop","pageSize","visible","slice","index","actualIndex","isSelected","indent","repeat","prefix","main","symbols","pointer","icon","keyStr","valueStr","editMode","BG_BLUE","FG_WHITE","editBuffer","color","formatted","typeLabel","line","stripAnsi","muted","renderFrame","handleInput","char","handleEditInput","isUp","isDown","isRight","isLeft","isExpanded","add","delete","submit","newVal","newValue","Number","isNaN","toString","charCodeAt","handleMouse","event","action","scroll","Set"],"mappings":"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"}
@@ -1,19 +1,31 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatePrompt = 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
- // --- Implementation: Date Prompt ---
9
- class DatePrompt extends base_1.Prompt {
10
- constructor(options) {
11
- super(options);
12
- this.selectedField = 0; // 0: Year, 1: Month, 2: Day, 3: Hour, 4: Minute
13
- this.errorMsg = '';
14
- this.inputBuffer = '';
15
- this.value = options.initial || new Date();
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DatePrompt", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DatePrompt;
9
+ }
10
+ });
11
+ const _ansi = require("../ansi");
12
+ const _base = require("../base");
13
+ const _theme = require("../theme");
14
+ const _symbols = require("../symbols");
15
+ function _define_property(obj, key, value) {
16
+ if (key in obj) {
17
+ Object.defineProperty(obj, key, {
18
+ value: value,
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true
22
+ });
23
+ } else {
24
+ obj[key] = value;
16
25
  }
26
+ return obj;
27
+ }
28
+ let DatePrompt = class DatePrompt extends _base.Prompt {
17
29
  render(_firstRender) {
18
30
  // Date formatting
19
31
  const y = this.value.getFullYear();
@@ -21,17 +33,22 @@ class DatePrompt extends base_1.Prompt {
21
33
  const d = this.value.getDate().toString().padStart(2, '0');
22
34
  const h = this.value.getHours().toString().padStart(2, '0');
23
35
  const min = this.value.getMinutes().toString().padStart(2, '0');
24
- const fields = [y, m, d, h, min];
25
- const display = fields.map((val, i) => {
26
- if (i === this.selectedField)
27
- return `${theme_1.theme.main}${ansi_1.ANSI.UNDERLINE}${val}${ansi_1.ANSI.RESET}`;
36
+ const fields = [
37
+ y,
38
+ m,
39
+ d,
40
+ h,
41
+ min
42
+ ];
43
+ const display = fields.map((val, i)=>{
44
+ if (i === this.selectedField) return `${_theme.theme.main}${_ansi.ANSI.UNDERLINE}${val}${_ansi.ANSI.RESET}`;
28
45
  return val;
29
46
  });
30
- const icon = this.errorMsg ? `${theme_1.theme.error}${symbols_1.symbols.cross}` : `${theme_1.theme.success}?`;
47
+ const icon = this.errorMsg ? `${_theme.theme.error}${_symbols.symbols.cross}` : `${_theme.theme.success}?`;
31
48
  const dateStr = `${display[0]}-${display[1]}-${display[2]} ${display[3]}:${display[4]}`;
32
- let output = `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET} ${dateStr} ${theme_1.theme.muted}(Use arrows or type)${ansi_1.ANSI.RESET}`;
49
+ let output = `${icon} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} ${dateStr} ${_theme.theme.muted}(Use arrows or type)${_ansi.ANSI.RESET}`;
33
50
  if (this.errorMsg) {
34
- output += `\n${theme_1.theme.error}>> ${this.errorMsg}${ansi_1.ANSI.RESET}`;
51
+ output += `\n${_theme.theme.error}>> ${this.errorMsg}${_ansi.ANSI.RESET}`;
35
52
  }
36
53
  this.renderFrame(output);
37
54
  }
@@ -52,11 +69,10 @@ class DatePrompt extends base_1.Prompt {
52
69
  this.submit(this.value);
53
70
  return;
54
71
  }
55
- if (char === '\t' || this.isRight(char)) { // Right / Tab
72
+ if (char === '\t' || this.isRight(char)) {
56
73
  if (char === '\t') {
57
74
  this.selectedField = (this.selectedField + 1) % 5;
58
- }
59
- else {
75
+ } else {
60
76
  this.selectedField = Math.min(4, this.selectedField + 1);
61
77
  }
62
78
  this.inputBuffer = ''; // Reset buffer on move
@@ -64,11 +80,10 @@ class DatePrompt extends base_1.Prompt {
64
80
  this.render(false);
65
81
  return;
66
82
  }
67
- if (char === '\x1b[Z' || this.isLeft(char)) { // Left / Shift+Tab
83
+ if (char === '\x1b[Z' || this.isLeft(char)) {
68
84
  if (char === '\x1b[Z') {
69
85
  this.selectedField = (this.selectedField - 1 + 5) % 5;
70
- }
71
- else {
86
+ } else {
72
87
  this.selectedField = Math.max(0, this.selectedField - 1);
73
88
  }
74
89
  this.inputBuffer = ''; // Reset buffer on move
@@ -85,14 +100,10 @@ class DatePrompt extends base_1.Prompt {
85
100
  }
86
101
  const val = parseInt(nextBuffer, 10);
87
102
  let valid = true;
88
- if (this.selectedField === 1 && (val < 1 || val > 12))
89
- valid = false; // Month
90
- if (this.selectedField === 2 && (val < 1 || val > 31))
91
- valid = false; // Day (rough check)
92
- if (this.selectedField === 3 && (val > 23))
93
- valid = false; // Hour
94
- if (this.selectedField === 4 && (val > 59))
95
- valid = false; // Minute
103
+ if (this.selectedField === 1 && (val < 1 || val > 12)) valid = false; // Month
104
+ if (this.selectedField === 2 && (val < 1 || val > 31)) valid = false; // Day (rough check)
105
+ if (this.selectedField === 3 && val > 23) valid = false; // Hour
106
+ if (this.selectedField === 4 && val > 59) valid = false; // Minute
96
107
  if (!valid) {
97
108
  nextBuffer = char;
98
109
  }
@@ -101,24 +112,17 @@ class DatePrompt extends base_1.Prompt {
101
112
  const d = new Date(this.value);
102
113
  if (this.selectedField === 0) {
103
114
  d.setFullYear(finalVal);
104
- }
105
- else if (this.selectedField === 1)
106
- d.setMonth(Math.max(0, Math.min(11, finalVal - 1)));
107
- else if (this.selectedField === 2)
108
- d.setDate(Math.max(1, Math.min(31, finalVal)));
109
- else if (this.selectedField === 3)
110
- d.setHours(Math.max(0, Math.min(23, finalVal)));
111
- else if (this.selectedField === 4)
112
- d.setMinutes(Math.max(0, Math.min(59, finalVal)));
115
+ } else if (this.selectedField === 1) d.setMonth(Math.max(0, Math.min(11, finalVal - 1)));
116
+ else if (this.selectedField === 2) d.setDate(Math.max(1, Math.min(31, finalVal)));
117
+ else if (this.selectedField === 3) d.setHours(Math.max(0, Math.min(23, finalVal)));
118
+ else if (this.selectedField === 4) d.setMinutes(Math.max(0, Math.min(59, finalVal)));
113
119
  this.value = d;
114
120
  // Check immediately after updating the value to display an error message (but still allow further input)
115
121
  if (this.options.min && this.value < this.options.min) {
116
122
  this.errorMsg = 'Warning: Date is before minimum.';
117
- }
118
- else if (this.options.max && this.value > this.options.max) {
123
+ } else if (this.options.max && this.value > this.options.max) {
119
124
  this.errorMsg = 'Warning: Date is after maximum.';
120
- }
121
- else {
125
+ } else {
122
126
  this.errorMsg = '';
123
127
  }
124
128
  this.render(false);
@@ -137,15 +141,14 @@ class DatePrompt extends base_1.Prompt {
137
141
  if (event.action === 'scroll') {
138
142
  if (event.scroll === 'up') {
139
143
  this.adjustDate(1);
140
- }
141
- else if (event.scroll === 'down') {
144
+ } else if (event.scroll === 'down') {
142
145
  this.adjustDate(-1);
143
146
  }
144
147
  }
145
148
  }
146
149
  adjustDate(dir) {
147
150
  const d = new Date(this.value);
148
- switch (this.selectedField) {
151
+ switch(this.selectedField){
149
152
  case 0:
150
153
  d.setFullYear(d.getFullYear() + dir);
151
154
  break;
@@ -165,14 +168,18 @@ class DatePrompt extends base_1.Prompt {
165
168
  this.value = d;
166
169
  if (this.options.min && this.value < this.options.min) {
167
170
  this.errorMsg = 'Date cannot be before minimum allowed.';
168
- }
169
- else if (this.options.max && this.value > this.options.max) {
171
+ } else if (this.options.max && this.value > this.options.max) {
170
172
  this.errorMsg = 'Date cannot be after maximum allowed.';
171
- }
172
- else {
173
+ } else {
173
174
  this.errorMsg = '';
174
175
  }
175
176
  this.render(false);
176
177
  }
177
- }
178
- exports.DatePrompt = DatePrompt;
178
+ constructor(options){
179
+ super(options), _define_property(this, "selectedField", 0) // 0: Year, 1: Month, 2: Day, 3: Hour, 4: Minute
180
+ , _define_property(this, "errorMsg", ''), _define_property(this, "inputBuffer", '');
181
+ this.value = options.initial || new Date();
182
+ }
183
+ };
184
+
185
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/prompts/date.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { symbols } from '../symbols';\nimport { DateOptions, MouseEvent } from '../types';\n\n// --- Implementation: Date Prompt ---\nexport class DatePrompt extends Prompt<Date, DateOptions> {\n private selectedField: number = 0; // 0: Year, 1: Month, 2: Day, 3: Hour, 4: Minute\n private errorMsg: string = '';\n private inputBuffer: string = '';\n\n constructor(options: DateOptions) {\n super(options);\n this.value = options.initial || new Date();\n }\n\n protected render(_firstRender: boolean) {\n // Date formatting\n const y = this.value.getFullYear();\n const m = (this.value.getMonth() + 1).toString().padStart(2, '0');\n const d = this.value.getDate().toString().padStart(2, '0');\n const h = this.value.getHours().toString().padStart(2, '0');\n const min = this.value.getMinutes().toString().padStart(2, '0');\n\n const fields = [y, m, d, h, min];\n const display = fields.map((val, i) => {\n if (i === this.selectedField) return `${theme.main}${ANSI.UNDERLINE}${val}${ANSI.RESET}`;\n return val;\n });\n\n const icon = this.errorMsg ? `${theme.error}${symbols.cross}` : `${theme.success}?`;\n const dateStr = `${display[0]}-${display[1]}-${display[2]} ${display[3]}:${display[4]}`;\n\n let output = `${icon} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} ${dateStr} ${theme.muted}(Use arrows or type)${ANSI.RESET}`;\n\n if (this.errorMsg) {\n output += `\\n${theme.error}>> ${this.errorMsg}${ANSI.RESET}`;\n }\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string) {\n if (char === '\\r' || char === '\\n') {\n // Min constraint check\n if (this.options.min && this.value < this.options.min) {\n this.errorMsg = 'Date cannot be before minimum allowed.';\n this.render(false);\n return;\n }\n // Max constraint check\n if (this.options.max && this.value > this.options.max) {\n this.errorMsg = 'Date cannot be after maximum allowed.';\n this.render(false);\n return;\n }\n\n this.submit(this.value);\n return;\n }\n\n if (char === '\\t' || this.isRight(char)) { // Right / Tab\n if (char === '\\t') {\n this.selectedField = (this.selectedField + 1) % 5;\n } else {\n this.selectedField = Math.min(4, this.selectedField + 1);\n }\n this.inputBuffer = ''; // Reset buffer on move\n this.errorMsg = '';\n this.render(false);\n return;\n }\n\n if (char === '\\x1b[Z' || this.isLeft(char)) { // Left / Shift+Tab\n if (char === '\\x1b[Z') {\n this.selectedField = (this.selectedField - 1 + 5) % 5;\n } else {\n this.selectedField = Math.max(0, this.selectedField - 1);\n }\n this.inputBuffer = ''; // Reset buffer on move\n this.errorMsg = '';\n this.render(false);\n return;\n }\n\n // Support numeric input\n if (/^\\d$/.test(char)) {\n const maxLen = this.selectedField === 0 ? 4 : 2;\n let nextBuffer = this.inputBuffer + char;\n\n if (nextBuffer.length > maxLen) {\n nextBuffer = char;\n }\n\n const val = parseInt(nextBuffer, 10);\n let valid = true;\n\n if (this.selectedField === 1 && (val < 1 || val > 12)) valid = false; // Month\n if (this.selectedField === 2 && (val < 1 || val > 31)) valid = false; // Day (rough check)\n if (this.selectedField === 3 && (val > 23)) valid = false; // Hour\n if (this.selectedField === 4 && (val > 59)) valid = false; // Minute\n\n if (!valid) {\n nextBuffer = char;\n }\n\n this.inputBuffer = nextBuffer;\n const finalVal = parseInt(this.inputBuffer, 10);\n\n const d = new Date(this.value);\n\n if (this.selectedField === 0) {\n d.setFullYear(finalVal);\n }\n else if (this.selectedField === 1) d.setMonth(Math.max(0, Math.min(11, finalVal - 1)));\n else if (this.selectedField === 2) d.setDate(Math.max(1, Math.min(31, finalVal)));\n else if (this.selectedField === 3) d.setHours(Math.max(0, Math.min(23, finalVal)));\n else if (this.selectedField === 4) d.setMinutes(Math.max(0, Math.min(59, finalVal)));\n\n this.value = d;\n\n // Check immediately after updating the value to display an error message (but still allow further input)\n if (this.options.min && this.value < this.options.min) {\n this.errorMsg = 'Warning: Date is before minimum.';\n } else if (this.options.max && this.value > this.options.max) {\n this.errorMsg = 'Warning: Date is after maximum.';\n } else {\n this.errorMsg = '';\n }\n\n this.render(false);\n return;\n }\n\n // Support standard and application cursor keys\n const isUp = this.isUp(char);\n const isDown = this.isDown(char);\n\n if (isUp || isDown) {\n this.inputBuffer = ''; // Reset buffer on arrow move\n const dir = isUp ? 1 : -1;\n this.adjustDate(dir);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n this.adjustDate(1);\n } else if (event.scroll === 'down') {\n this.adjustDate(-1);\n }\n }\n }\n\n private adjustDate(dir: number) {\n const d = new Date(this.value);\n\n switch (this.selectedField) {\n case 0: d.setFullYear(d.getFullYear() + dir); break;\n case 1: d.setMonth(d.getMonth() + dir); break;\n case 2: d.setDate(d.getDate() + dir); break;\n case 3: d.setHours(d.getHours() + dir); break;\n case 4: d.setMinutes(d.getMinutes() + dir); break;\n }\n\n this.value = d;\n\n if (this.options.min && this.value < this.options.min) {\n this.errorMsg = 'Date cannot be before minimum allowed.';\n } else if (this.options.max && this.value > this.options.max) {\n this.errorMsg = 'Date cannot be after maximum allowed.';\n } else {\n this.errorMsg = '';\n }\n\n this.render(false);\n }\n}"],"names":["DatePrompt","Prompt","render","_firstRender","y","value","getFullYear","m","getMonth","toString","padStart","d","getDate","h","getHours","min","getMinutes","fields","display","map","val","i","selectedField","theme","main","ANSI","UNDERLINE","RESET","icon","errorMsg","error","symbols","cross","success","dateStr","output","BOLD","title","options","message","muted","renderFrame","handleInput","char","max","submit","isRight","Math","inputBuffer","isLeft","test","maxLen","nextBuffer","length","parseInt","valid","finalVal","Date","setFullYear","setMonth","setDate","setHours","setMinutes","isUp","isDown","dir","adjustDate","handleMouse","event","action","scroll","initial"],"mappings":"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"}