mepcli 2.0.0-beta.2 → 2.0.0-beta.4

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 (358) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +20 -0
  3. package/dist/ansi.d.ts +36 -0
  4. package/dist/ansi.js +1 -0
  5. package/dist/base.d.ts +61 -0
  6. package/dist/base.js +1 -0
  7. package/dist/{src/core.js → core.d.ts} +181 -345
  8. package/dist/core.js +1 -0
  9. package/dist/data/countries.d.ts +2 -0
  10. package/dist/data/countries.js +1 -0
  11. package/dist/data/licenses.d.ts +2 -0
  12. package/dist/data/licenses.js +1 -0
  13. package/dist/highlight.d.ts +7 -0
  14. package/dist/highlight.js +1 -0
  15. package/dist/index.d.ts +52 -0
  16. package/dist/index.js +1 -0
  17. package/dist/input.d.ts +14 -0
  18. package/dist/input.js +1 -0
  19. package/dist/pipeline.d.ts +90 -0
  20. package/dist/pipeline.js +1 -0
  21. package/dist/prompts/autocomplete.d.ts +22 -0
  22. package/dist/prompts/autocomplete.js +1 -0
  23. package/dist/prompts/box.d.ts +21 -0
  24. package/dist/prompts/box.js +4 -0
  25. package/dist/prompts/breadcrumb-search.d.ts +14 -0
  26. package/dist/prompts/breadcrumb-search.js +2 -0
  27. package/dist/prompts/breadcrumb.d.ts +32 -0
  28. package/dist/prompts/breadcrumb.js +3 -0
  29. package/dist/prompts/byte.d.ts +13 -0
  30. package/dist/prompts/byte.js +5 -0
  31. package/dist/prompts/calculator.d.ts +17 -0
  32. package/dist/prompts/calculator.js +3 -0
  33. package/dist/prompts/calendar.d.ts +33 -0
  34. package/dist/prompts/calendar.js +3 -0
  35. package/dist/prompts/checkbox.d.ts +13 -0
  36. package/dist/prompts/checkbox.js +2 -0
  37. package/dist/prompts/code.d.ts +19 -0
  38. package/dist/prompts/code.js +4 -0
  39. package/dist/prompts/color.d.ts +14 -0
  40. package/dist/prompts/color.js +10 -0
  41. package/dist/prompts/confirm.d.ts +8 -0
  42. package/dist/prompts/confirm.js +1 -0
  43. package/dist/prompts/connection-string.d.ts +18 -0
  44. package/dist/prompts/connection-string.js +1 -0
  45. package/dist/prompts/cron.d.ts +13 -0
  46. package/dist/prompts/cron.js +4 -0
  47. package/dist/prompts/curl-utils.d.ts +25 -0
  48. package/dist/prompts/curl-utils.js +1 -0
  49. package/dist/prompts/curl.d.ts +41 -0
  50. package/dist/prompts/curl.js +12 -0
  51. package/dist/prompts/data-inspector.d.ts +22 -0
  52. package/dist/prompts/data-inspector.js +5 -0
  53. package/dist/prompts/date.d.ts +12 -0
  54. package/dist/prompts/date.js +2 -0
  55. package/dist/prompts/dependency.d.ts +16 -0
  56. package/dist/prompts/dependency.js +3 -0
  57. package/dist/prompts/dial.d.ts +10 -0
  58. package/dist/prompts/dial.js +3 -0
  59. package/dist/prompts/diff.d.ts +10 -0
  60. package/dist/prompts/diff.js +10 -0
  61. package/dist/prompts/draw.d.ts +20 -0
  62. package/dist/prompts/draw.js +6 -0
  63. package/dist/prompts/editor.d.ts +14 -0
  64. package/dist/prompts/editor.js +2 -0
  65. package/dist/prompts/emoji.d.ts +18 -0
  66. package/dist/prompts/emoji.js +5 -0
  67. package/dist/prompts/exec.d.ts +17 -0
  68. package/dist/prompts/exec.js +1 -0
  69. package/dist/prompts/file.d.ts +21 -0
  70. package/dist/prompts/file.js +2 -0
  71. package/dist/prompts/form.d.ts +18 -0
  72. package/dist/prompts/form.js +1 -0
  73. package/dist/prompts/fuzzy-multi-column.d.ts +12 -0
  74. package/dist/prompts/fuzzy-multi-column.js +2 -0
  75. package/dist/prompts/fuzzy.d.ts +12 -0
  76. package/dist/prompts/fuzzy.js +2 -0
  77. package/dist/prompts/gauge.d.ts +21 -0
  78. package/dist/prompts/gauge.js +4 -0
  79. package/dist/prompts/grid.d.ts +14 -0
  80. package/dist/prompts/grid.js +2 -0
  81. package/dist/prompts/heatmap.d.ts +13 -0
  82. package/dist/prompts/heatmap.js +2 -0
  83. package/dist/prompts/ip.d.ts +11 -0
  84. package/dist/prompts/ip.js +3 -0
  85. package/dist/prompts/kanban.d.ts +17 -0
  86. package/dist/prompts/kanban.js +4 -0
  87. package/dist/prompts/keypress.d.ts +7 -0
  88. package/dist/prompts/keypress.js +1 -0
  89. package/dist/prompts/license.d.ts +9 -0
  90. package/dist/prompts/license.js +13 -0
  91. package/dist/prompts/list.d.ts +9 -0
  92. package/dist/prompts/list.js +1 -0
  93. package/dist/prompts/map.d.ts +17 -0
  94. package/dist/prompts/map.js +5 -0
  95. package/dist/prompts/match.d.ts +19 -0
  96. package/dist/prompts/match.js +7 -0
  97. package/dist/prompts/miller.d.ts +15 -0
  98. package/dist/prompts/miller.js +2 -0
  99. package/dist/prompts/multi-column-select.d.ts +10 -0
  100. package/dist/prompts/multi-column-select.js +2 -0
  101. package/dist/prompts/multi-range.d.ts +9 -0
  102. package/dist/prompts/multi-range.js +3 -0
  103. package/dist/prompts/multi-select.d.ts +15 -0
  104. package/dist/prompts/multi-select.js +4 -0
  105. package/dist/prompts/number.d.ts +11 -0
  106. package/dist/prompts/number.js +2 -0
  107. package/dist/prompts/otp.d.ts +10 -0
  108. package/dist/prompts/otp.js +2 -0
  109. package/dist/prompts/pattern.d.ts +22 -0
  110. package/dist/prompts/pattern.js +4 -0
  111. package/dist/prompts/phone.d.ts +41 -0
  112. package/dist/prompts/phone.js +3 -0
  113. package/dist/prompts/quiz-select.d.ts +10 -0
  114. package/dist/prompts/quiz-select.js +7 -0
  115. package/dist/prompts/quiz-text.d.ts +11 -0
  116. package/dist/prompts/quiz-text.js +8 -0
  117. package/dist/prompts/range.d.ts +9 -0
  118. package/dist/prompts/range.js +1 -0
  119. package/dist/prompts/rating.d.ts +8 -0
  120. package/dist/prompts/rating.js +1 -0
  121. package/dist/prompts/regex.d.ts +13 -0
  122. package/dist/prompts/regex.js +5 -0
  123. package/dist/prompts/region.d.ts +11 -0
  124. package/dist/prompts/region.js +5 -0
  125. package/dist/prompts/schedule.d.ts +20 -0
  126. package/dist/prompts/schedule.js +5 -0
  127. package/dist/prompts/scroll.d.ts +13 -0
  128. package/dist/prompts/scroll.js +1 -0
  129. package/dist/prompts/seat.d.ts +17 -0
  130. package/dist/prompts/seat.js +5 -0
  131. package/dist/prompts/select-range.d.ts +8 -0
  132. package/dist/prompts/select-range.js +3 -0
  133. package/dist/prompts/select.d.ts +15 -0
  134. package/dist/prompts/select.js +2 -0
  135. package/dist/prompts/semver.d.ts +6 -0
  136. package/dist/prompts/semver.js +1 -0
  137. package/dist/prompts/shortcut.d.ts +9 -0
  138. package/dist/prompts/shortcut.js +1 -0
  139. package/dist/prompts/slider.d.ts +8 -0
  140. package/dist/prompts/slider.js +1 -0
  141. package/dist/prompts/slot.d.ts +16 -0
  142. package/dist/prompts/slot.js +8 -0
  143. package/dist/prompts/snippet.d.ts +19 -0
  144. package/dist/prompts/snippet.js +4 -0
  145. package/dist/prompts/sort-grid.d.ts +16 -0
  146. package/dist/prompts/sort-grid.js +2 -0
  147. package/dist/prompts/sort.d.ts +14 -0
  148. package/dist/prompts/sort.js +2 -0
  149. package/dist/prompts/spam.d.ts +17 -0
  150. package/dist/prompts/spam.js +2 -0
  151. package/dist/prompts/spreadsheet.d.ts +21 -0
  152. package/dist/prompts/spreadsheet.js +7 -0
  153. package/dist/prompts/table.d.ts +14 -0
  154. package/dist/prompts/table.js +3 -0
  155. package/dist/prompts/text.d.ts +17 -0
  156. package/dist/prompts/text.js +2 -0
  157. package/dist/prompts/time.d.ts +12 -0
  158. package/dist/prompts/time.js +2 -0
  159. package/dist/prompts/toggle.d.ts +8 -0
  160. package/dist/prompts/toggle.js +1 -0
  161. package/dist/prompts/transfer.d.ts +18 -0
  162. package/dist/prompts/transfer.js +5 -0
  163. package/dist/prompts/tree-select.d.ts +31 -0
  164. package/dist/prompts/tree-select.js +3 -0
  165. package/dist/prompts/tree.d.ts +20 -0
  166. package/dist/prompts/tree.js +3 -0
  167. package/dist/prompts/wait.d.ts +18 -0
  168. package/dist/prompts/wait.js +1 -0
  169. package/dist/spinner.d.ts +33 -0
  170. package/dist/spinner.js +3 -0
  171. package/dist/symbols.d.ts +33 -0
  172. package/dist/symbols.js +1 -0
  173. package/dist/tasks.d.ts +57 -0
  174. package/dist/tasks.js +1 -0
  175. package/dist/theme.d.ts +2 -0
  176. package/dist/theme.js +1 -0
  177. package/dist/types.d.ts +519 -0
  178. package/dist/types.js +1 -0
  179. package/dist/utils.d.ts +82 -0
  180. package/dist/utils.js +1 -0
  181. package/package.json +10 -10
  182. package/dist/src/ansi.js +0 -50
  183. package/dist/src/ansi.js.map +0 -1
  184. package/dist/src/base.js +0 -258
  185. package/dist/src/base.js.map +0 -1
  186. package/dist/src/core.js.map +0 -1
  187. package/dist/src/data/countries.js +0 -569
  188. package/dist/src/data/countries.js.map +0 -1
  189. package/dist/src/data/licenses.js +0 -480
  190. package/dist/src/data/licenses.js.map +0 -1
  191. package/dist/src/highlight.js +0 -185
  192. package/dist/src/highlight.js.map +0 -1
  193. package/dist/src/index.js +0 -66
  194. package/dist/src/index.js.map +0 -1
  195. package/dist/src/input.js +0 -158
  196. package/dist/src/input.js.map +0 -1
  197. package/dist/src/pipeline.js +0 -273
  198. package/dist/src/pipeline.js.map +0 -1
  199. package/dist/src/prompts/autocomplete.js +0 -171
  200. package/dist/src/prompts/autocomplete.js.map +0 -1
  201. package/dist/src/prompts/box.js +0 -225
  202. package/dist/src/prompts/box.js.map +0 -1
  203. package/dist/src/prompts/breadcrumb-search.js +0 -260
  204. package/dist/src/prompts/breadcrumb-search.js.map +0 -1
  205. package/dist/src/prompts/breadcrumb.js +0 -307
  206. package/dist/src/prompts/breadcrumb.js.map +0 -1
  207. package/dist/src/prompts/byte.js +0 -176
  208. package/dist/src/prompts/byte.js.map +0 -1
  209. package/dist/src/prompts/calculator.js +0 -243
  210. package/dist/src/prompts/calculator.js.map +0 -1
  211. package/dist/src/prompts/calendar.js +0 -430
  212. package/dist/src/prompts/calendar.js.map +0 -1
  213. package/dist/src/prompts/checkbox.js +0 -159
  214. package/dist/src/prompts/checkbox.js.map +0 -1
  215. package/dist/src/prompts/code.js +0 -271
  216. package/dist/src/prompts/code.js.map +0 -1
  217. package/dist/src/prompts/color.js +0 -165
  218. package/dist/src/prompts/color.js.map +0 -1
  219. package/dist/src/prompts/confirm.js +0 -55
  220. package/dist/src/prompts/confirm.js.map +0 -1
  221. package/dist/src/prompts/connection-string.js +0 -120
  222. package/dist/src/prompts/connection-string.js.map +0 -1
  223. package/dist/src/prompts/cron.js +0 -207
  224. package/dist/src/prompts/cron.js.map +0 -1
  225. package/dist/src/prompts/curl-utils.js +0 -71
  226. package/dist/src/prompts/curl-utils.js.map +0 -1
  227. package/dist/src/prompts/curl.js +0 -431
  228. package/dist/src/prompts/curl.js.map +0 -1
  229. package/dist/src/prompts/data-inspector.js +0 -261
  230. package/dist/src/prompts/data-inspector.js.map +0 -1
  231. package/dist/src/prompts/date.js +0 -185
  232. package/dist/src/prompts/date.js.map +0 -1
  233. package/dist/src/prompts/dependency.js +0 -283
  234. package/dist/src/prompts/dependency.js.map +0 -1
  235. package/dist/src/prompts/dial.js +0 -124
  236. package/dist/src/prompts/dial.js.map +0 -1
  237. package/dist/src/prompts/diff.js +0 -118
  238. package/dist/src/prompts/diff.js.map +0 -1
  239. package/dist/src/prompts/draw.js +0 -191
  240. package/dist/src/prompts/draw.js.map +0 -1
  241. package/dist/src/prompts/editor.js +0 -234
  242. package/dist/src/prompts/editor.js.map +0 -1
  243. package/dist/src/prompts/emoji.js +0 -226
  244. package/dist/src/prompts/emoji.js.map +0 -1
  245. package/dist/src/prompts/exec.js +0 -151
  246. package/dist/src/prompts/exec.js.map +0 -1
  247. package/dist/src/prompts/file.js +0 -217
  248. package/dist/src/prompts/file.js.map +0 -1
  249. package/dist/src/prompts/form.js +0 -241
  250. package/dist/src/prompts/form.js.map +0 -1
  251. package/dist/src/prompts/fuzzy-multi-column.js +0 -161
  252. package/dist/src/prompts/fuzzy-multi-column.js.map +0 -1
  253. package/dist/src/prompts/fuzzy.js +0 -147
  254. package/dist/src/prompts/fuzzy.js.map +0 -1
  255. package/dist/src/prompts/gauge.js +0 -137
  256. package/dist/src/prompts/gauge.js.map +0 -1
  257. package/dist/src/prompts/grid.js +0 -191
  258. package/dist/src/prompts/grid.js.map +0 -1
  259. package/dist/src/prompts/heatmap.js +0 -147
  260. package/dist/src/prompts/heatmap.js.map +0 -1
  261. package/dist/src/prompts/ip.js +0 -138
  262. package/dist/src/prompts/ip.js.map +0 -1
  263. package/dist/src/prompts/kanban.js +0 -233
  264. package/dist/src/prompts/kanban.js.map +0 -1
  265. package/dist/src/prompts/keypress.js +0 -54
  266. package/dist/src/prompts/keypress.js.map +0 -1
  267. package/dist/src/prompts/license.js +0 -144
  268. package/dist/src/prompts/license.js.map +0 -1
  269. package/dist/src/prompts/list.js +0 -124
  270. package/dist/src/prompts/list.js.map +0 -1
  271. package/dist/src/prompts/map.js +0 -262
  272. package/dist/src/prompts/map.js.map +0 -1
  273. package/dist/src/prompts/match.js +0 -271
  274. package/dist/src/prompts/match.js.map +0 -1
  275. package/dist/src/prompts/miller.js +0 -228
  276. package/dist/src/prompts/miller.js.map +0 -1
  277. package/dist/src/prompts/multi-column-select.js +0 -176
  278. package/dist/src/prompts/multi-column-select.js.map +0 -1
  279. package/dist/src/prompts/multi-range.js +0 -189
  280. package/dist/src/prompts/multi-range.js.map +0 -1
  281. package/dist/src/prompts/multi-select.js +0 -183
  282. package/dist/src/prompts/multi-select.js.map +0 -1
  283. package/dist/src/prompts/number.js +0 -166
  284. package/dist/src/prompts/number.js.map +0 -1
  285. package/dist/src/prompts/otp.js +0 -107
  286. package/dist/src/prompts/otp.js.map +0 -1
  287. package/dist/src/prompts/pattern.js +0 -252
  288. package/dist/src/prompts/pattern.js.map +0 -1
  289. package/dist/src/prompts/phone.js +0 -398
  290. package/dist/src/prompts/phone.js.map +0 -1
  291. package/dist/src/prompts/quiz-select.js +0 -114
  292. package/dist/src/prompts/quiz-select.js.map +0 -1
  293. package/dist/src/prompts/quiz-text.js +0 -98
  294. package/dist/src/prompts/quiz-text.js.map +0 -1
  295. package/dist/src/prompts/range.js +0 -164
  296. package/dist/src/prompts/range.js.map +0 -1
  297. package/dist/src/prompts/rating.js +0 -83
  298. package/dist/src/prompts/rating.js.map +0 -1
  299. package/dist/src/prompts/regex.js +0 -145
  300. package/dist/src/prompts/regex.js.map +0 -1
  301. package/dist/src/prompts/region.js +0 -170
  302. package/dist/src/prompts/region.js.map +0 -1
  303. package/dist/src/prompts/schedule.js +0 -270
  304. package/dist/src/prompts/schedule.js.map +0 -1
  305. package/dist/src/prompts/scroll.js +0 -155
  306. package/dist/src/prompts/scroll.js.map +0 -1
  307. package/dist/src/prompts/seat.js +0 -164
  308. package/dist/src/prompts/seat.js.map +0 -1
  309. package/dist/src/prompts/select-range.js +0 -148
  310. package/dist/src/prompts/select-range.js.map +0 -1
  311. package/dist/src/prompts/select.js +0 -163
  312. package/dist/src/prompts/select.js.map +0 -1
  313. package/dist/src/prompts/semver.js +0 -43
  314. package/dist/src/prompts/semver.js.map +0 -1
  315. package/dist/src/prompts/shortcut.js +0 -133
  316. package/dist/src/prompts/shortcut.js.map +0 -1
  317. package/dist/src/prompts/slider.js +0 -69
  318. package/dist/src/prompts/slider.js.map +0 -1
  319. package/dist/src/prompts/slot.js +0 -117
  320. package/dist/src/prompts/slot.js.map +0 -1
  321. package/dist/src/prompts/snippet.js +0 -228
  322. package/dist/src/prompts/snippet.js.map +0 -1
  323. package/dist/src/prompts/sort-grid.js +0 -151
  324. package/dist/src/prompts/sort-grid.js.map +0 -1
  325. package/dist/src/prompts/sort.js +0 -166
  326. package/dist/src/prompts/sort.js.map +0 -1
  327. package/dist/src/prompts/spam.js +0 -80
  328. package/dist/src/prompts/spam.js.map +0 -1
  329. package/dist/src/prompts/spreadsheet.js +0 -240
  330. package/dist/src/prompts/spreadsheet.js.map +0 -1
  331. package/dist/src/prompts/table.js +0 -120
  332. package/dist/src/prompts/table.js.map +0 -1
  333. package/dist/src/prompts/text.js +0 -317
  334. package/dist/src/prompts/text.js.map +0 -1
  335. package/dist/src/prompts/time.js +0 -211
  336. package/dist/src/prompts/time.js.map +0 -1
  337. package/dist/src/prompts/toggle.js +0 -53
  338. package/dist/src/prompts/toggle.js.map +0 -1
  339. package/dist/src/prompts/transfer.js +0 -207
  340. package/dist/src/prompts/transfer.js.map +0 -1
  341. package/dist/src/prompts/tree-select.js +0 -270
  342. package/dist/src/prompts/tree-select.js.map +0 -1
  343. package/dist/src/prompts/tree.js +0 -233
  344. package/dist/src/prompts/tree.js.map +0 -1
  345. package/dist/src/prompts/wait.js +0 -79
  346. package/dist/src/prompts/wait.js.map +0 -1
  347. package/dist/src/spinner.js +0 -105
  348. package/dist/src/spinner.js.map +0 -1
  349. package/dist/src/symbols.js +0 -66
  350. package/dist/src/symbols.js.map +0 -1
  351. package/dist/src/tasks.js +0 -231
  352. package/dist/src/tasks.js.map +0 -1
  353. package/dist/src/theme.js +0 -29
  354. package/dist/src/theme.js.map +0 -1
  355. package/dist/src/types.js +0 -8
  356. package/dist/src/types.js.map +0 -1
  357. package/dist/src/utils.js +0 -480
  358. package/dist/src/utils.js.map +0 -1
@@ -1,283 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "DependencyPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return DependencyPrompt;
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;
25
- }
26
- return obj;
27
- }
28
- let DependencyPrompt = class DependencyPrompt extends _base.Prompt {
29
- resolveDependencies(index, value) {
30
- // If autoResolve is false, we don't do anything automatically,
31
- // validation will handle it on submit.
32
- if (this.options.autoResolve === false) return;
33
- const choices = this.options.choices;
34
- const visited = new Set();
35
- const queue = [];
36
- queue.push({
37
- idx: index,
38
- val: value
39
- });
40
- // Process queue
41
- let loops = 0;
42
- while(queue.length > 0 && loops < 1000){
43
- loops++;
44
- const current = queue.shift();
45
- if (visited.has(current.idx)) continue;
46
- // Apply state
47
- // Only if it changes state
48
- if (this.checkedState[current.idx] !== current.val) {
49
- this.checkedState[current.idx] = current.val;
50
- if (current.reason) {
51
- this.warningMsg = current.reason;
52
- }
53
- }
54
- visited.add(current.idx);
55
- const currentItem = choices[current.idx];
56
- if (current.val) {
57
- // Turning ON
58
- // 1. Check Conflicts (Disable items that THIS item conflicts with)
59
- if (currentItem.conflictsWith) {
60
- currentItem.conflictsWith.forEach((conflictVal)=>{
61
- const conflictIdx = choices.findIndex((c)=>c.value === conflictVal);
62
- if (conflictIdx !== -1 && this.checkedState[conflictIdx]) {
63
- queue.push({
64
- idx: conflictIdx,
65
- val: false,
66
- reason: `Disabled ${choices[conflictIdx].title} due to conflict with ${currentItem.title}`
67
- });
68
- }
69
- });
70
- }
71
- // [FIX] 1.5. Reverse Conflict Check (Disable items that conflict with THIS item)
72
- // Check if any currently SELECTED item has a conflict with the item we are enabling
73
- choices.forEach((other, otherIdx)=>{
74
- // Skip self and unchecked items
75
- if (otherIdx === current.idx || !this.checkedState[otherIdx]) return;
76
- if (other.conflictsWith && other.conflictsWith.includes(currentItem.value)) {
77
- queue.push({
78
- idx: otherIdx,
79
- val: false,
80
- reason: `Disabled ${other.title} because it conflicts with ${currentItem.title}`
81
- });
82
- }
83
- });
84
- // 2. Check Dependencies (Enable them)
85
- if (currentItem.dependsOn) {
86
- currentItem.dependsOn.forEach((depVal)=>{
87
- const depIdx = choices.findIndex((c)=>c.value === depVal);
88
- if (depIdx !== -1 && !this.checkedState[depIdx]) {
89
- queue.push({
90
- idx: depIdx,
91
- val: true,
92
- reason: `Enabled ${choices[depIdx].title} because ${currentItem.title} requires it`
93
- });
94
- }
95
- });
96
- }
97
- // 3. Check Triggers (Enable them)
98
- if (currentItem.triggers) {
99
- currentItem.triggers.forEach((trigVal)=>{
100
- const trigIdx = choices.findIndex((c)=>c.value === trigVal);
101
- if (trigIdx !== -1 && !this.checkedState[trigIdx]) {
102
- queue.push({
103
- idx: trigIdx,
104
- val: true,
105
- reason: `Triggered ${choices[trigIdx].title} from ${currentItem.title}`
106
- });
107
- }
108
- });
109
- }
110
- } else {
111
- // Turning OFF
112
- // Check if other ON items depend on this one. If so, disable them.
113
- choices.forEach((other, otherIdx)=>{
114
- if (this.checkedState[otherIdx] && other.dependsOn && other.dependsOn.includes(currentItem.value)) {
115
- queue.push({
116
- idx: otherIdx,
117
- val: false,
118
- reason: `Disabled ${other.title} because it depends on ${currentItem.title}`
119
- });
120
- }
121
- });
122
- }
123
- }
124
- }
125
- render(_firstRender) {
126
- // Adjust Scroll Top
127
- if (this.selectedIndex < this.scrollTop) {
128
- this.scrollTop = this.selectedIndex;
129
- } else if (this.selectedIndex >= this.scrollTop + this.pageSize) {
130
- this.scrollTop = this.selectedIndex - this.pageSize + 1;
131
- }
132
- if (this.options.choices.length <= this.pageSize) {
133
- this.scrollTop = 0;
134
- }
135
- let output = '';
136
- // Header
137
- const icon = this.errorMsg ? `${_theme.theme.error}${_symbols.symbols.cross}` : `${_theme.theme.success}?`;
138
- output += `${icon} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} ${_theme.theme.muted}(Space: toggle, Enter: submit)${_ansi.ANSI.RESET}`;
139
- // List
140
- const choices = this.options.choices;
141
- const visibleChoices = choices.slice(this.scrollTop, this.scrollTop + this.pageSize);
142
- visibleChoices.forEach((choice, index)=>{
143
- const actualIndex = this.scrollTop + index;
144
- output += '\n'; // New line for each item
145
- const cursor = actualIndex === this.selectedIndex ? `${_theme.theme.main}${_symbols.symbols.pointer}${_ansi.ANSI.RESET}` : ' ';
146
- const isChecked = this.checkedState[actualIndex];
147
- const checkbox = isChecked ? `${_theme.theme.success}${_symbols.symbols.checked}${_ansi.ANSI.RESET}` : `${_theme.theme.muted}${_symbols.symbols.unchecked}${_ansi.ANSI.RESET}`;
148
- let title = actualIndex === this.selectedIndex ? `${_theme.theme.main}${choice.title}${_ansi.ANSI.RESET}` : choice.title;
149
- // Add tags for relationships
150
- if (choice.dependsOn && choice.dependsOn.length > 0) {
151
- title += ` ${_theme.theme.muted}[Req: ${choice.dependsOn.length}]${_ansi.ANSI.RESET}`;
152
- }
153
- if (choice.conflictsWith && choice.conflictsWith.length > 0) {
154
- title += ` ${_theme.theme.error}[Con: ${choice.conflictsWith.length}]${_ansi.ANSI.RESET}`;
155
- }
156
- output += `${cursor} ${checkbox} ${title}`;
157
- });
158
- if (this.errorMsg) {
159
- output += `\n${_theme.theme.error}>> ${this.errorMsg}${_ansi.ANSI.RESET}`;
160
- } else if (this.warningMsg) {
161
- output += `\n${_theme.theme.main}>> ${this.warningMsg}${_ansi.ANSI.RESET}`;
162
- }
163
- this.renderFrame(output);
164
- }
165
- handleMouse(event) {
166
- if (event.action === 'scroll') {
167
- if (event.scroll === 'up') {
168
- this.selectedIndex = this.selectedIndex > 0 ? this.selectedIndex - 1 : this.options.choices.length - 1;
169
- this.render(false);
170
- } else if (event.scroll === 'down') {
171
- this.selectedIndex = this.selectedIndex < this.options.choices.length - 1 ? this.selectedIndex + 1 : 0;
172
- this.render(false);
173
- }
174
- }
175
- }
176
- handleInput(char) {
177
- if (char === '\r' || char === '\n') {
178
- // Final Validation
179
- const selectedCount = this.checkedState.filter(Boolean).length;
180
- const { min = 0, max } = this.options;
181
- if (selectedCount < min) {
182
- this.errorMsg = `You must select at least ${min} options.`;
183
- this.render(false);
184
- return;
185
- }
186
- if (max && selectedCount > max) {
187
- this.errorMsg = `You can only select up to ${max} options.`;
188
- this.render(false);
189
- return;
190
- }
191
- // Dependency Logic Check (if autoResolve was off, or double check)
192
- // Even if autoResolve is on, we check for cycles or invalid states that might have slipped?
193
- // Or just check if manual toggle left things broken (if autoResolve is OFF).
194
- if (this.options.autoResolve === false) {
195
- const invalid = this.validateDependencies();
196
- if (invalid) {
197
- this.errorMsg = invalid;
198
- this.render(false);
199
- return;
200
- }
201
- }
202
- this.cleanup();
203
- const results = this.options.choices.filter((_, i)=>this.checkedState[i]).map((c)=>c.value);
204
- this.submit(results);
205
- return;
206
- }
207
- // Space Toggle
208
- if (char === ' ') {
209
- const currentChecked = this.checkedState[this.selectedIndex];
210
- // Toggle
211
- const newState = !currentChecked;
212
- // Check Max limit before enabling
213
- if (newState) {
214
- const selectedCount = this.checkedState.filter(Boolean).length;
215
- const { max } = this.options;
216
- if (max && selectedCount >= max) {
217
- this.errorMsg = `Max ${max} selections allowed.`;
218
- this.render(false);
219
- return;
220
- }
221
- }
222
- this.errorMsg = '';
223
- this.warningMsg = '';
224
- if (this.options.autoResolve !== false) {
225
- this.resolveDependencies(this.selectedIndex, newState);
226
- } else {
227
- this.checkedState[this.selectedIndex] = newState;
228
- }
229
- this.render(false);
230
- }
231
- if (this.isUp(char)) {
232
- this.selectedIndex = this.selectedIndex > 0 ? this.selectedIndex - 1 : this.options.choices.length - 1;
233
- this.render(false);
234
- }
235
- if (this.isDown(char)) {
236
- this.selectedIndex = this.selectedIndex < this.options.choices.length - 1 ? this.selectedIndex + 1 : 0;
237
- this.render(false);
238
- }
239
- }
240
- validateDependencies() {
241
- const choices = this.options.choices;
242
- for(let i = 0; i < choices.length; i++){
243
- if (!this.checkedState[i]) continue;
244
- const item = choices[i];
245
- // Check dependencies
246
- if (item.dependsOn) {
247
- for (const depVal of item.dependsOn){
248
- const depIdx = choices.findIndex((c)=>c.value === depVal);
249
- if (depIdx === -1 || !this.checkedState[depIdx]) {
250
- return `${item.title} requires ${depVal}`; // Should look up title for depVal ideally
251
- }
252
- }
253
- }
254
- // Check conflicts
255
- if (item.conflictsWith) {
256
- for (const conVal of item.conflictsWith){
257
- const conIdx = choices.findIndex((c)=>c.value === conVal);
258
- if (conIdx !== -1 && this.checkedState[conIdx]) {
259
- return `${item.title} conflicts with ${choices[conIdx].title}`;
260
- }
261
- }
262
- }
263
- }
264
- return null;
265
- }
266
- constructor(options){
267
- super(options), _define_property(this, "selectedIndex", 0), _define_property(this, "checkedState", void 0), _define_property(this, "errorMsg", ''), _define_property(this, "warningMsg", ''), // Pagination state
268
- _define_property(this, "scrollTop", 0), _define_property(this, "pageSize", 10);
269
- // Initialize checked state from options (default selected)
270
- // We also need to run initial validation/resolution
271
- this.checkedState = options.choices.map((c)=>!!c.selected);
272
- if (options.autoResolve !== false) {
273
- // Run resolution for all initially selected items
274
- this.checkedState.forEach((isChecked, i)=>{
275
- if (isChecked) {
276
- this.resolveDependencies(i, true);
277
- }
278
- });
279
- }
280
- }
281
- };
282
-
283
- //# sourceMappingURL=dependency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/dependency.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { symbols } from '../symbols';\nimport { DependencyOptions, MouseEvent } from '../types';\n\nexport class DependencyPrompt<V> extends Prompt<V[], DependencyOptions<V>> {\n private selectedIndex: number = 0;\n private checkedState: boolean[];\n private errorMsg: string = '';\n private warningMsg: string = '';\n\n // Pagination state\n private scrollTop: number = 0;\n private readonly pageSize: number = 10;\n\n constructor(options: DependencyOptions<V>) {\n super(options);\n // Initialize checked state from options (default selected)\n // We also need to run initial validation/resolution\n this.checkedState = options.choices.map(c => !!c.selected);\n\n if (options.autoResolve !== false) {\n // Run resolution for all initially selected items\n this.checkedState.forEach((isChecked, i) => {\n if (isChecked) {\n this.resolveDependencies(i, true);\n }\n });\n }\n }\n\n private resolveDependencies(index: number, value: boolean) {\n // If autoResolve is false, we don't do anything automatically, \n // validation will handle it on submit.\n if (this.options.autoResolve === false) return;\n\n const choices = this.options.choices;\n const visited = new Set<number>();\n const queue: { idx: number, val: boolean, reason?: string }[] = [];\n\n queue.push({ idx: index, val: value });\n\n // Process queue\n let loops = 0;\n while (queue.length > 0 && loops < 1000) { // Safety break\n loops++;\n const current = queue.shift()!;\n if (visited.has(current.idx)) continue;\n\n // Apply state\n // Only if it changes state\n if (this.checkedState[current.idx] !== current.val) {\n this.checkedState[current.idx] = current.val;\n if (current.reason) {\n this.warningMsg = current.reason;\n }\n }\n visited.add(current.idx);\n\n const currentItem = choices[current.idx];\n\n if (current.val) {\n // Turning ON\n // 1. Check Conflicts (Disable items that THIS item conflicts with)\n if (currentItem.conflictsWith) {\n currentItem.conflictsWith.forEach(conflictVal => {\n const conflictIdx = choices.findIndex(c => c.value === conflictVal);\n if (conflictIdx !== -1 && this.checkedState[conflictIdx]) {\n queue.push({\n idx: conflictIdx,\n val: false,\n reason: `Disabled ${choices[conflictIdx].title} due to conflict with ${currentItem.title}`\n });\n }\n });\n }\n\n // [FIX] 1.5. Reverse Conflict Check (Disable items that conflict with THIS item)\n // Check if any currently SELECTED item has a conflict with the item we are enabling\n choices.forEach((other, otherIdx) => {\n // Skip self and unchecked items\n if (otherIdx === current.idx || !this.checkedState[otherIdx]) return;\n\n if (other.conflictsWith && other.conflictsWith.includes(currentItem.value)) {\n queue.push({\n idx: otherIdx,\n val: false,\n reason: `Disabled ${other.title} because it conflicts with ${currentItem.title}`\n });\n }\n });\n // 2. Check Dependencies (Enable them)\n if (currentItem.dependsOn) {\n currentItem.dependsOn.forEach(depVal => {\n const depIdx = choices.findIndex(c => c.value === depVal);\n if (depIdx !== -1 && !this.checkedState[depIdx]) {\n queue.push({\n idx: depIdx,\n val: true,\n reason: `Enabled ${choices[depIdx].title} because ${currentItem.title} requires it`\n });\n }\n });\n }\n // 3. Check Triggers (Enable them)\n if (currentItem.triggers) {\n currentItem.triggers.forEach(trigVal => {\n const trigIdx = choices.findIndex(c => c.value === trigVal);\n if (trigIdx !== -1 && !this.checkedState[trigIdx]) {\n queue.push({\n idx: trigIdx,\n val: true,\n reason: `Triggered ${choices[trigIdx].title} from ${currentItem.title}`\n });\n }\n });\n }\n } else {\n // Turning OFF\n // Check if other ON items depend on this one. If so, disable them.\n choices.forEach((other, otherIdx) => {\n if (this.checkedState[otherIdx] && other.dependsOn && other.dependsOn.includes(currentItem.value)) {\n queue.push({\n idx: otherIdx,\n val: false,\n reason: `Disabled ${other.title} because it depends on ${currentItem.title}`\n });\n }\n });\n }\n }\n }\n\n protected render(_firstRender: boolean) {\n // Adjust Scroll Top\n if (this.selectedIndex < this.scrollTop) {\n this.scrollTop = this.selectedIndex;\n } else if (this.selectedIndex >= this.scrollTop + this.pageSize) {\n this.scrollTop = this.selectedIndex - this.pageSize + 1;\n }\n\n if (this.options.choices.length <= this.pageSize) {\n this.scrollTop = 0;\n }\n\n let output = '';\n\n // Header\n const icon = this.errorMsg ? `${theme.error}${symbols.cross}` : `${theme.success}?`;\n output += `${icon} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} ${theme.muted}(Space: toggle, Enter: submit)${ANSI.RESET}`;\n\n // List\n const choices = this.options.choices;\n const visibleChoices = choices.slice(this.scrollTop, this.scrollTop + this.pageSize);\n\n visibleChoices.forEach((choice, index) => {\n const actualIndex = this.scrollTop + index;\n output += '\\n'; // New line for each item\n\n const cursor = actualIndex === this.selectedIndex ? `${theme.main}${symbols.pointer}${ANSI.RESET}` : ' ';\n const isChecked = this.checkedState[actualIndex];\n const checkbox = isChecked\n ? `${theme.success}${symbols.checked}${ANSI.RESET}`\n : `${theme.muted}${symbols.unchecked}${ANSI.RESET}`;\n\n let title = actualIndex === this.selectedIndex\n ? `${theme.main}${choice.title}${ANSI.RESET}`\n : choice.title;\n\n // Add tags for relationships\n if (choice.dependsOn && choice.dependsOn.length > 0) {\n title += ` ${theme.muted}[Req: ${choice.dependsOn.length}]${ANSI.RESET}`;\n }\n if (choice.conflictsWith && choice.conflictsWith.length > 0) {\n title += ` ${theme.error}[Con: ${choice.conflictsWith.length}]${ANSI.RESET}`;\n }\n\n output += `${cursor} ${checkbox} ${title}`;\n });\n\n if (this.errorMsg) {\n output += `\\n${theme.error}>> ${this.errorMsg}${ANSI.RESET}`;\n } else if (this.warningMsg) {\n output += `\\n${theme.main}>> ${this.warningMsg}${ANSI.RESET}`;\n }\n\n this.renderFrame(output);\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n this.selectedIndex = this.selectedIndex > 0 ? this.selectedIndex - 1 : this.options.choices.length - 1;\n this.render(false);\n } else if (event.scroll === 'down') {\n this.selectedIndex = this.selectedIndex < this.options.choices.length - 1 ? this.selectedIndex + 1 : 0;\n this.render(false);\n }\n }\n }\n\n protected handleInput(char: string) {\n if (char === '\\r' || char === '\\n') {\n // Final Validation\n const selectedCount = this.checkedState.filter(Boolean).length;\n const { min = 0, max } = this.options;\n\n if (selectedCount < min) {\n this.errorMsg = `You must select at least ${min} options.`;\n this.render(false);\n return;\n }\n if (max && selectedCount > max) {\n this.errorMsg = `You can only select up to ${max} options.`;\n this.render(false);\n return;\n }\n\n // Dependency Logic Check (if autoResolve was off, or double check)\n // Even if autoResolve is on, we check for cycles or invalid states that might have slipped? \n // Or just check if manual toggle left things broken (if autoResolve is OFF).\n if (this.options.autoResolve === false) {\n const invalid = this.validateDependencies();\n if (invalid) {\n this.errorMsg = invalid;\n this.render(false);\n return;\n }\n }\n\n this.cleanup();\n\n const results = this.options.choices\n .filter((_, i) => this.checkedState[i])\n .map(c => c.value);\n\n this.submit(results);\n return;\n }\n\n // Space Toggle\n if (char === ' ') {\n const currentChecked = this.checkedState[this.selectedIndex];\n // Toggle\n const newState = !currentChecked;\n\n // Check Max limit before enabling\n if (newState) {\n const selectedCount = this.checkedState.filter(Boolean).length;\n const { max } = this.options;\n if (max && selectedCount >= max) {\n this.errorMsg = `Max ${max} selections allowed.`;\n this.render(false);\n return;\n }\n }\n\n this.errorMsg = '';\n this.warningMsg = '';\n\n if (this.options.autoResolve !== false) {\n this.resolveDependencies(this.selectedIndex, newState);\n } else {\n this.checkedState[this.selectedIndex] = newState;\n }\n\n this.render(false);\n }\n\n if (this.isUp(char)) { // Up\n this.selectedIndex = this.selectedIndex > 0 ? this.selectedIndex - 1 : this.options.choices.length - 1;\n this.render(false);\n }\n if (this.isDown(char)) { // Down\n this.selectedIndex = this.selectedIndex < this.options.choices.length - 1 ? this.selectedIndex + 1 : 0;\n this.render(false);\n }\n }\n\n private validateDependencies(): string | null {\n const choices = this.options.choices;\n for (let i = 0; i < choices.length; i++) {\n if (!this.checkedState[i]) continue;\n\n const item = choices[i];\n\n // Check dependencies\n if (item.dependsOn) {\n for (const depVal of item.dependsOn) {\n const depIdx = choices.findIndex(c => c.value === depVal);\n if (depIdx === -1 || !this.checkedState[depIdx]) {\n return `${item.title} requires ${depVal}`; // Should look up title for depVal ideally\n }\n }\n }\n\n // Check conflicts\n if (item.conflictsWith) {\n for (const conVal of item.conflictsWith) {\n const conIdx = choices.findIndex(c => c.value === conVal);\n if (conIdx !== -1 && this.checkedState[conIdx]) {\n return `${item.title} conflicts with ${choices[conIdx].title}`;\n }\n }\n }\n }\n return null;\n }\n}\n"],"names":["DependencyPrompt","Prompt","resolveDependencies","index","value","options","autoResolve","choices","visited","Set","queue","push","idx","val","loops","length","current","shift","has","checkedState","reason","warningMsg","add","currentItem","conflictsWith","forEach","conflictVal","conflictIdx","findIndex","c","title","other","otherIdx","includes","dependsOn","depVal","depIdx","triggers","trigVal","trigIdx","render","_firstRender","selectedIndex","scrollTop","pageSize","output","icon","errorMsg","theme","error","symbols","cross","success","ANSI","BOLD","message","RESET","muted","visibleChoices","slice","choice","actualIndex","cursor","main","pointer","isChecked","checkbox","checked","unchecked","renderFrame","handleMouse","event","action","scroll","handleInput","char","selectedCount","filter","Boolean","min","max","invalid","validateDependencies","cleanup","results","_","i","map","submit","currentChecked","newState","isUp","isDown","item","conVal","conIdx","selected"],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "DialPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return DialPrompt;
9
- }
10
- });
11
- const _base = require("../base");
12
- const _theme = require("../theme");
13
- const _ansi = require("../ansi");
14
- function _define_property(obj, key, value) {
15
- if (key in obj) {
16
- Object.defineProperty(obj, key, {
17
- value: value,
18
- enumerable: true,
19
- configurable: true,
20
- writable: true
21
- });
22
- } else {
23
- obj[key] = value;
24
- }
25
- return obj;
26
- }
27
- let DialPrompt = class DialPrompt extends _base.Prompt {
28
- render(_firstRender) {
29
- // Round value for display if necessary
30
- const displayValue = Math.round(this.currentValue * 100) / 100;
31
- let output = `${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} ${_theme.theme.main}${displayValue}${_ansi.ANSI.RESET}\n`;
32
- const radius = this.options.radius || 5;
33
- // Adjust aspect ratio: terminal chars are ~2x taller than wide.
34
- // So we multiply X by 2.
35
- const centerX = radius * 2;
36
- const centerY = radius;
37
- const width = centerX * 2 + 1;
38
- const height = centerY * 2 + 1;
39
- // Initialize grid
40
- const grid = [];
41
- for(let y = 0; y < height; y++){
42
- const row = [];
43
- for(let x = 0; x < width; x++){
44
- row.push(' ');
45
- }
46
- grid.push(row);
47
- }
48
- // Draw track (static circle arc)
49
- // Knob usually goes from Bottom-Left (135 deg) to Bottom-Right (405 deg)
50
- // 0 deg is Right. 90 deg is Down.
51
- for(let a = 135; a <= 405; a += 10){
52
- const rad = a * Math.PI / 180;
53
- const rX = Math.round(centerX + radius * Math.cos(rad) * 2);
54
- const rY = Math.round(centerY + radius * Math.sin(rad));
55
- if (rY >= 0 && rY < height && rX >= 0 && rX < width) {
56
- grid[rY][rX] = `${_ansi.ANSI.FG_GRAY}·${_ansi.ANSI.RESET}`;
57
- }
58
- }
59
- // Calculate Pointer Position
60
- const totalRange = this.options.max - this.options.min;
61
- // Avoid division by zero
62
- const percent = totalRange === 0 ? 0 : (this.currentValue - this.options.min) / totalRange;
63
- const angleDeg = 135 + percent * 270;
64
- const rad = angleDeg * Math.PI / 180;
65
- const ptrX = Math.round(centerX + radius * Math.cos(rad) * 2);
66
- const ptrY = Math.round(centerY + radius * Math.sin(rad));
67
- if (ptrY >= 0 && ptrY < height && ptrX >= 0 && ptrX < width) {
68
- grid[ptrY][ptrX] = `${_theme.theme.main}${this.options.pointerSymbol || '●'}${_ansi.ANSI.RESET}`;
69
- }
70
- // Draw Center Value (Optional - roughly centered)
71
- // const valStr = displayValue.toString();
72
- // const valX = centerX - Math.floor(valStr.length / 2);
73
- // const valY = centerY;
74
- // if (valY >= 0 && valY < height && valX >= 0 && valX + valStr.length <= width) {
75
- // for (let i = 0; i < valStr.length; i++) {
76
- // // grid[valY][valX + i] = valStr[i];
77
- // }
78
- // }
79
- // Construct string
80
- for(let y = 0; y < height; y++){
81
- output += ' ' + grid[y].join('') + '\n';
82
- }
83
- // Instructions
84
- output += `\n${_ansi.ANSI.FG_GRAY}(Arrows/Scroll to adjust, Enter to submit)${_ansi.ANSI.RESET}`;
85
- this.renderFrame(output);
86
- }
87
- handleInput(char, _key) {
88
- const step = this.options.step || 1;
89
- if (this.isLeft(char) || this.isDown(char)) {
90
- this.updateValue(this.currentValue - step);
91
- } else if (this.isRight(char) || this.isUp(char)) {
92
- this.updateValue(this.currentValue + step);
93
- } else if (char === '\r' || char === '\n') {
94
- this.submit(this.currentValue);
95
- }
96
- }
97
- handleMouse(event) {
98
- const step = this.options.step || 1;
99
- if (event.action === 'scroll') {
100
- if (event.scroll === 'up') {
101
- this.updateValue(this.currentValue + step);
102
- } else {
103
- this.updateValue(this.currentValue - step);
104
- }
105
- }
106
- }
107
- updateValue(val) {
108
- if (val < this.options.min) val = this.options.min;
109
- if (val > this.options.max) val = this.options.max;
110
- if (this.currentValue !== val) {
111
- this.currentValue = val;
112
- this.render(false);
113
- }
114
- }
115
- constructor(options){
116
- super(options), _define_property(this, "currentValue", void 0);
117
- this.currentValue = options.initial !== undefined ? options.initial : options.min;
118
- // Clamp initial
119
- if (this.currentValue < this.options.min) this.currentValue = this.options.min;
120
- if (this.currentValue > this.options.max) this.currentValue = this.options.max;
121
- }
122
- };
123
-
124
- //# sourceMappingURL=dial.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/dial.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { DialOptions, MouseEvent } from '../types';\nimport { theme } from '../theme';\nimport { ANSI } from '../ansi';\n\nexport class DialPrompt extends Prompt<number, DialOptions> {\n private currentValue: number;\n\n constructor(options: DialOptions) {\n super(options);\n this.currentValue = options.initial !== undefined ? options.initial : options.min;\n // Clamp initial\n if (this.currentValue < this.options.min) this.currentValue = this.options.min;\n if (this.currentValue > this.options.max) this.currentValue = this.options.max;\n }\n\n protected render(_firstRender: boolean) {\n // Round value for display if necessary\n const displayValue = Math.round(this.currentValue * 100) / 100;\n let output = `${theme.title}${this.options.message}${ANSI.RESET} ${theme.main}${displayValue}${ANSI.RESET}\\n`;\n\n const radius = this.options.radius || 5;\n // Adjust aspect ratio: terminal chars are ~2x taller than wide.\n // So we multiply X by 2.\n const centerX = radius * 2;\n const centerY = radius;\n const width = centerX * 2 + 1;\n const height = centerY * 2 + 1;\n\n // Initialize grid\n const grid: string[][] = [];\n for (let y = 0; y < height; y++) {\n const row: string[] = [];\n for (let x = 0; x < width; x++) {\n row.push(' ');\n }\n grid.push(row);\n }\n\n // Draw track (static circle arc)\n // Knob usually goes from Bottom-Left (135 deg) to Bottom-Right (405 deg)\n // 0 deg is Right. 90 deg is Down.\n for (let a = 135; a <= 405; a += 10) {\n const rad = a * Math.PI / 180;\n const rX = Math.round(centerX + radius * Math.cos(rad) * 2);\n const rY = Math.round(centerY + radius * Math.sin(rad));\n if (rY >= 0 && rY < height && rX >= 0 && rX < width) {\n grid[rY][rX] = `${ANSI.FG_GRAY}·${ANSI.RESET}`;\n }\n }\n\n // Calculate Pointer Position\n const totalRange = this.options.max - this.options.min;\n // Avoid division by zero\n const percent = totalRange === 0 ? 0 : (this.currentValue - this.options.min) / totalRange;\n const angleDeg = 135 + (percent * 270);\n const rad = angleDeg * Math.PI / 180;\n\n const ptrX = Math.round(centerX + radius * Math.cos(rad) * 2);\n const ptrY = Math.round(centerY + radius * Math.sin(rad));\n\n if (ptrY >= 0 && ptrY < height && ptrX >= 0 && ptrX < width) {\n grid[ptrY][ptrX] = `${theme.main}${this.options.pointerSymbol || '●'}${ANSI.RESET}`;\n }\n\n // Draw Center Value (Optional - roughly centered)\n // const valStr = displayValue.toString();\n // const valX = centerX - Math.floor(valStr.length / 2);\n // const valY = centerY;\n // if (valY >= 0 && valY < height && valX >= 0 && valX + valStr.length <= width) {\n // for (let i = 0; i < valStr.length; i++) {\n // // grid[valY][valX + i] = valStr[i];\n // }\n // }\n\n // Construct string\n for (let y = 0; y < height; y++) {\n output += ' ' + grid[y].join('') + '\\n';\n }\n\n // Instructions\n output += `\\n${ANSI.FG_GRAY}(Arrows/Scroll to adjust, Enter to submit)${ANSI.RESET}`;\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string, _key: Buffer) {\n const step = this.options.step || 1;\n\n if (this.isLeft(char) || this.isDown(char)) {\n this.updateValue(this.currentValue - step);\n } else if (this.isRight(char) || this.isUp(char)) {\n this.updateValue(this.currentValue + step);\n } else if (char === '\\r' || char === '\\n') {\n this.submit(this.currentValue);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n const step = this.options.step || 1;\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n this.updateValue(this.currentValue + step);\n } else {\n this.updateValue(this.currentValue - step);\n }\n }\n }\n\n private updateValue(val: number) {\n if (val < this.options.min) val = this.options.min;\n if (val > this.options.max) val = this.options.max;\n\n if (this.currentValue !== val) {\n this.currentValue = val;\n this.render(false);\n }\n }\n}\n"],"names":["DialPrompt","Prompt","render","_firstRender","displayValue","Math","round","currentValue","output","theme","title","options","message","ANSI","RESET","main","radius","centerX","centerY","width","height","grid","y","row","x","push","a","rad","PI","rX","cos","rY","sin","FG_GRAY","totalRange","max","min","percent","angleDeg","ptrX","ptrY","pointerSymbol","join","renderFrame","handleInput","char","_key","step","isLeft","isDown","updateValue","isRight","isUp","submit","handleMouse","event","action","scroll","val","initial","undefined"],"mappings":"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"}
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "DiffPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return DiffPrompt;
9
- }
10
- });
11
- const _base = require("../base");
12
- const _theme = require("../theme");
13
- const _ansi = require("../ansi");
14
- const _editor = require("./editor");
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;
25
- }
26
- return obj;
27
- }
28
- let DiffPrompt = class DiffPrompt extends _base.Prompt {
29
- render(_firstRender) {
30
- let output = `${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET}\n`;
31
- // Render Diff
32
- const originalLines = this.options.original ? this.options.original.split('\n') : [];
33
- const modifiedLines = this.options.modified ? this.options.modified.split('\n') : [];
34
- const width = Math.max(40, (this.stdout.columns || 80) - 4);
35
- const borderTop = `${_ansi.ANSI.FG_GRAY}┌${'─'.repeat(width)}┐${_ansi.ANSI.RESET}`;
36
- const borderMid = `${_ansi.ANSI.FG_GRAY}├${'─'.repeat(width)}┤${_ansi.ANSI.RESET}`;
37
- const borderBot = `${_ansi.ANSI.FG_GRAY}└${'─'.repeat(width)}┘${_ansi.ANSI.RESET}`;
38
- output += borderTop + '\n';
39
- // Original (Red)
40
- if (originalLines.length === 0) {
41
- output += `${_ansi.ANSI.FG_GRAY}│ ${_ansi.ANSI.DIM}(empty)${_ansi.ANSI.RESET}\n`;
42
- } else {
43
- originalLines.forEach((line)=>{
44
- const truncated = this.truncate(line, width - 4);
45
- output += `${_ansi.ANSI.FG_GRAY}│ ${_ansi.ANSI.FG_RED}- ${truncated}${_ansi.ANSI.RESET}\n`;
46
- });
47
- }
48
- output += borderMid + '\n';
49
- // Modified (Green)
50
- if (modifiedLines.length === 0) {
51
- output += `${_ansi.ANSI.FG_GRAY}│ ${_ansi.ANSI.DIM}(empty)${_ansi.ANSI.RESET}\n`;
52
- } else {
53
- modifiedLines.forEach((line)=>{
54
- const truncated = this.truncate(line, width - 4);
55
- output += `${_ansi.ANSI.FG_GRAY}│ ${_ansi.ANSI.FG_GREEN}+ ${truncated}${_ansi.ANSI.RESET}\n`;
56
- });
57
- }
58
- output += borderBot + '\n';
59
- // Render Actions
60
- output += '\n';
61
- this.actions.forEach((action, index)=>{
62
- if (index === this.activeAction) {
63
- output += `${_ansi.ANSI.REVERSE} ${action} ${_ansi.ANSI.RESET} `;
64
- } else {
65
- output += `[ ${action} ] `;
66
- }
67
- });
68
- this.renderFrame(output);
69
- }
70
- handleInput(char, _key) {
71
- if (this.isLeft(char)) {
72
- this.activeAction = (this.activeAction - 1 + this.actions.length) % this.actions.length;
73
- this.render(false);
74
- } else if (this.isRight(char)) {
75
- this.activeAction = (this.activeAction + 1) % this.actions.length;
76
- this.render(false);
77
- } else if (char === '\r' || char === '\n') {
78
- this.handleSubmit();
79
- }
80
- }
81
- handleSubmit() {
82
- if (this.activeAction === 0) {
83
- this.submit(this.options.original);
84
- } else if (this.activeAction === 1) {
85
- this.submit(this.options.modified);
86
- } else {
87
- // Edit
88
- this.cleanup(); // Stop listening to input for this prompt
89
- // Prepare initial content for editor
90
- const initial = `<<<<<<< ORIGINAL
91
- ${this.options.original}
92
- =======
93
- ${this.options.modified}
94
- >>>>>>> MODIFIED`;
95
- // We delegate to EditorPrompt
96
- new _editor.EditorPrompt({
97
- message: 'Resolve conflict (Edit)',
98
- initial: initial,
99
- extension: '.txt',
100
- waitUserInput: false // Launch immediately
101
- }).run().then((result)=>{
102
- this.submit(result);
103
- }).catch((_err)=>{
104
- this.submit(initial);
105
- });
106
- }
107
- }
108
- constructor(options){
109
- super(options), _define_property(this, "activeAction", 0) // 0: Original, 1: Modified, 2: Edit
110
- , _define_property(this, "actions", [
111
- 'Use Original',
112
- 'Use Modified',
113
- 'Edit'
114
- ]);
115
- }
116
- };
117
-
118
- //# sourceMappingURL=diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/diff.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { DiffOptions } from '../types';\nimport { theme } from '../theme';\nimport { ANSI } from '../ansi';\nimport { EditorPrompt } from './editor';\n\nexport class DiffPrompt extends Prompt<string, DiffOptions> {\n private activeAction: number = 0; // 0: Original, 1: Modified, 2: Edit\n private actions = ['Use Original', 'Use Modified', 'Edit'];\n\n constructor(options: DiffOptions) {\n super(options);\n }\n\n protected render(_firstRender: boolean) {\n let output = `${theme.title}${this.options.message}${ANSI.RESET}\\n`;\n\n // Render Diff\n const originalLines = this.options.original ? this.options.original.split('\\n') : [];\n const modifiedLines = this.options.modified ? this.options.modified.split('\\n') : [];\n\n const width = Math.max(40, (this.stdout.columns || 80) - 4);\n const borderTop = `${ANSI.FG_GRAY}┌${'─'.repeat(width)}┐${ANSI.RESET}`;\n const borderMid = `${ANSI.FG_GRAY}├${'─'.repeat(width)}┤${ANSI.RESET}`;\n const borderBot = `${ANSI.FG_GRAY}└${'─'.repeat(width)}┘${ANSI.RESET}`;\n\n output += borderTop + '\\n';\n\n // Original (Red)\n if (originalLines.length === 0) {\n output += `${ANSI.FG_GRAY}│ ${ANSI.DIM}(empty)${ANSI.RESET}\\n`;\n } else {\n originalLines.forEach(line => {\n const truncated = this.truncate(line, width - 4);\n output += `${ANSI.FG_GRAY}│ ${ANSI.FG_RED}- ${truncated}${ANSI.RESET}\\n`;\n });\n }\n\n output += borderMid + '\\n';\n\n // Modified (Green)\n if (modifiedLines.length === 0) {\n output += `${ANSI.FG_GRAY}│ ${ANSI.DIM}(empty)${ANSI.RESET}\\n`;\n } else {\n modifiedLines.forEach(line => {\n const truncated = this.truncate(line, width - 4);\n output += `${ANSI.FG_GRAY}│ ${ANSI.FG_GREEN}+ ${truncated}${ANSI.RESET}\\n`;\n });\n }\n\n output += borderBot + '\\n';\n\n // Render Actions\n output += '\\n';\n this.actions.forEach((action, index) => {\n if (index === this.activeAction) {\n output += `${ANSI.REVERSE} ${action} ${ANSI.RESET} `;\n } else {\n output += `[ ${action} ] `;\n }\n });\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string, _key: Buffer) {\n if (this.isLeft(char)) {\n this.activeAction = (this.activeAction - 1 + this.actions.length) % this.actions.length;\n this.render(false);\n } else if (this.isRight(char)) {\n this.activeAction = (this.activeAction + 1) % this.actions.length;\n this.render(false);\n } else if (char === '\\r' || char === '\\n') {\n this.handleSubmit();\n }\n }\n\n private handleSubmit() {\n if (this.activeAction === 0) {\n this.submit(this.options.original);\n } else if (this.activeAction === 1) {\n this.submit(this.options.modified);\n } else {\n // Edit\n this.cleanup(); // Stop listening to input for this prompt\n\n // Prepare initial content for editor\n const initial = `<<<<<<< ORIGINAL\n${this.options.original}\n=======\n${this.options.modified}\n>>>>>>> MODIFIED`;\n\n // We delegate to EditorPrompt\n new EditorPrompt({\n message: 'Resolve conflict (Edit)',\n initial: initial,\n extension: '.txt',\n waitUserInput: false // Launch immediately\n }).run().then(result => {\n this.submit(result);\n }).catch(_err => {\n this.submit(initial);\n });\n }\n }\n}\n"],"names":["DiffPrompt","Prompt","render","_firstRender","output","theme","title","options","message","ANSI","RESET","originalLines","original","split","modifiedLines","modified","width","Math","max","stdout","columns","borderTop","FG_GRAY","repeat","borderMid","borderBot","length","DIM","forEach","line","truncated","truncate","FG_RED","FG_GREEN","actions","action","index","activeAction","REVERSE","renderFrame","handleInput","char","_key","isLeft","isRight","handleSubmit","submit","cleanup","initial","EditorPrompt","extension","waitUserInput","run","then","result","catch","_err"],"mappings":"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"}