mepcli 2.0.0-beta.2 → 2.0.0-beta.3

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 (356) hide show
  1. package/dist/ansi.d.ts +36 -0
  2. package/dist/ansi.js +1 -0
  3. package/dist/base.d.ts +60 -0
  4. package/dist/base.js +1 -0
  5. package/dist/{src/core.js → core.d.ts} +175 -345
  6. package/dist/core.js +1 -0
  7. package/dist/data/countries.d.ts +2 -0
  8. package/dist/data/countries.js +1 -0
  9. package/dist/data/licenses.d.ts +2 -0
  10. package/dist/data/licenses.js +1 -0
  11. package/dist/highlight.d.ts +7 -0
  12. package/dist/highlight.js +1 -0
  13. package/dist/index.d.ts +48 -0
  14. package/dist/index.js +1 -0
  15. package/dist/input.d.ts +14 -0
  16. package/dist/input.js +1 -0
  17. package/dist/pipeline.d.ts +90 -0
  18. package/dist/pipeline.js +1 -0
  19. package/dist/prompts/autocomplete.d.ts +22 -0
  20. package/dist/prompts/autocomplete.js +1 -0
  21. package/dist/prompts/box.d.ts +21 -0
  22. package/dist/prompts/box.js +4 -0
  23. package/dist/prompts/breadcrumb-search.d.ts +14 -0
  24. package/dist/prompts/breadcrumb-search.js +2 -0
  25. package/dist/prompts/breadcrumb.d.ts +32 -0
  26. package/dist/prompts/breadcrumb.js +3 -0
  27. package/dist/prompts/byte.d.ts +13 -0
  28. package/dist/prompts/byte.js +5 -0
  29. package/dist/prompts/calculator.d.ts +17 -0
  30. package/dist/prompts/calculator.js +3 -0
  31. package/dist/prompts/calendar.d.ts +33 -0
  32. package/dist/prompts/calendar.js +3 -0
  33. package/dist/prompts/checkbox.d.ts +13 -0
  34. package/dist/prompts/checkbox.js +2 -0
  35. package/dist/prompts/code.d.ts +19 -0
  36. package/dist/prompts/code.js +4 -0
  37. package/dist/prompts/color.d.ts +14 -0
  38. package/dist/prompts/color.js +10 -0
  39. package/dist/prompts/confirm.d.ts +8 -0
  40. package/dist/prompts/confirm.js +1 -0
  41. package/dist/prompts/connection-string.d.ts +18 -0
  42. package/dist/prompts/connection-string.js +1 -0
  43. package/dist/prompts/cron.d.ts +13 -0
  44. package/dist/prompts/cron.js +4 -0
  45. package/dist/prompts/curl-utils.d.ts +25 -0
  46. package/dist/prompts/curl-utils.js +1 -0
  47. package/dist/prompts/curl.d.ts +41 -0
  48. package/dist/prompts/curl.js +12 -0
  49. package/dist/prompts/data-inspector.d.ts +22 -0
  50. package/dist/prompts/data-inspector.js +5 -0
  51. package/dist/prompts/date.d.ts +12 -0
  52. package/dist/prompts/date.js +2 -0
  53. package/dist/prompts/dependency.d.ts +16 -0
  54. package/dist/prompts/dependency.js +3 -0
  55. package/dist/prompts/dial.d.ts +10 -0
  56. package/dist/prompts/dial.js +3 -0
  57. package/dist/prompts/diff.d.ts +10 -0
  58. package/dist/prompts/diff.js +10 -0
  59. package/dist/prompts/draw.d.ts +20 -0
  60. package/dist/prompts/draw.js +6 -0
  61. package/dist/prompts/editor.d.ts +14 -0
  62. package/dist/prompts/editor.js +2 -0
  63. package/dist/prompts/emoji.d.ts +18 -0
  64. package/dist/prompts/emoji.js +5 -0
  65. package/dist/prompts/exec.d.ts +17 -0
  66. package/dist/prompts/exec.js +1 -0
  67. package/dist/prompts/file.d.ts +21 -0
  68. package/dist/prompts/file.js +2 -0
  69. package/dist/prompts/form.d.ts +18 -0
  70. package/dist/prompts/form.js +1 -0
  71. package/dist/prompts/fuzzy-multi-column.d.ts +12 -0
  72. package/dist/prompts/fuzzy-multi-column.js +2 -0
  73. package/dist/prompts/fuzzy.d.ts +12 -0
  74. package/dist/prompts/fuzzy.js +2 -0
  75. package/dist/prompts/gauge.d.ts +21 -0
  76. package/dist/prompts/gauge.js +4 -0
  77. package/dist/prompts/grid.d.ts +14 -0
  78. package/dist/prompts/grid.js +2 -0
  79. package/dist/prompts/heatmap.d.ts +13 -0
  80. package/dist/prompts/heatmap.js +2 -0
  81. package/dist/prompts/ip.d.ts +11 -0
  82. package/dist/prompts/ip.js +3 -0
  83. package/dist/prompts/kanban.d.ts +17 -0
  84. package/dist/prompts/kanban.js +4 -0
  85. package/dist/prompts/keypress.d.ts +7 -0
  86. package/dist/prompts/keypress.js +1 -0
  87. package/dist/prompts/license.d.ts +9 -0
  88. package/dist/prompts/license.js +13 -0
  89. package/dist/prompts/list.d.ts +9 -0
  90. package/dist/prompts/list.js +1 -0
  91. package/dist/prompts/map.d.ts +17 -0
  92. package/dist/prompts/map.js +5 -0
  93. package/dist/prompts/match.d.ts +19 -0
  94. package/dist/prompts/match.js +7 -0
  95. package/dist/prompts/miller.d.ts +15 -0
  96. package/dist/prompts/miller.js +2 -0
  97. package/dist/prompts/multi-column-select.d.ts +10 -0
  98. package/dist/prompts/multi-column-select.js +2 -0
  99. package/dist/prompts/multi-range.d.ts +9 -0
  100. package/dist/prompts/multi-range.js +3 -0
  101. package/dist/prompts/multi-select.d.ts +15 -0
  102. package/dist/prompts/multi-select.js +4 -0
  103. package/dist/prompts/number.d.ts +11 -0
  104. package/dist/prompts/number.js +2 -0
  105. package/dist/prompts/otp.d.ts +10 -0
  106. package/dist/prompts/otp.js +2 -0
  107. package/dist/prompts/pattern.d.ts +22 -0
  108. package/dist/prompts/pattern.js +4 -0
  109. package/dist/prompts/phone.d.ts +41 -0
  110. package/dist/prompts/phone.js +3 -0
  111. package/dist/prompts/quiz-select.d.ts +10 -0
  112. package/dist/prompts/quiz-select.js +7 -0
  113. package/dist/prompts/quiz-text.d.ts +11 -0
  114. package/dist/prompts/quiz-text.js +8 -0
  115. package/dist/prompts/range.d.ts +9 -0
  116. package/dist/prompts/range.js +1 -0
  117. package/dist/prompts/rating.d.ts +8 -0
  118. package/dist/prompts/rating.js +1 -0
  119. package/dist/prompts/regex.d.ts +13 -0
  120. package/dist/prompts/regex.js +5 -0
  121. package/dist/prompts/region.d.ts +11 -0
  122. package/dist/prompts/region.js +5 -0
  123. package/dist/prompts/schedule.d.ts +20 -0
  124. package/dist/prompts/schedule.js +5 -0
  125. package/dist/prompts/scroll.d.ts +13 -0
  126. package/dist/prompts/scroll.js +1 -0
  127. package/dist/prompts/seat.d.ts +17 -0
  128. package/dist/prompts/seat.js +5 -0
  129. package/dist/prompts/select-range.d.ts +8 -0
  130. package/dist/prompts/select-range.js +3 -0
  131. package/dist/prompts/select.d.ts +15 -0
  132. package/dist/prompts/select.js +2 -0
  133. package/dist/prompts/semver.d.ts +6 -0
  134. package/dist/prompts/semver.js +1 -0
  135. package/dist/prompts/shortcut.d.ts +9 -0
  136. package/dist/prompts/shortcut.js +1 -0
  137. package/dist/prompts/slider.d.ts +8 -0
  138. package/dist/prompts/slider.js +1 -0
  139. package/dist/prompts/slot.d.ts +16 -0
  140. package/dist/prompts/slot.js +8 -0
  141. package/dist/prompts/snippet.d.ts +19 -0
  142. package/dist/prompts/snippet.js +4 -0
  143. package/dist/prompts/sort-grid.d.ts +16 -0
  144. package/dist/prompts/sort-grid.js +2 -0
  145. package/dist/prompts/sort.d.ts +14 -0
  146. package/dist/prompts/sort.js +2 -0
  147. package/dist/prompts/spam.d.ts +17 -0
  148. package/dist/prompts/spam.js +2 -0
  149. package/dist/prompts/spreadsheet.d.ts +21 -0
  150. package/dist/prompts/spreadsheet.js +7 -0
  151. package/dist/prompts/table.d.ts +14 -0
  152. package/dist/prompts/table.js +3 -0
  153. package/dist/prompts/text.d.ts +17 -0
  154. package/dist/prompts/text.js +2 -0
  155. package/dist/prompts/time.d.ts +12 -0
  156. package/dist/prompts/time.js +2 -0
  157. package/dist/prompts/toggle.d.ts +8 -0
  158. package/dist/prompts/toggle.js +1 -0
  159. package/dist/prompts/transfer.d.ts +18 -0
  160. package/dist/prompts/transfer.js +5 -0
  161. package/dist/prompts/tree-select.d.ts +31 -0
  162. package/dist/prompts/tree-select.js +3 -0
  163. package/dist/prompts/tree.d.ts +20 -0
  164. package/dist/prompts/tree.js +3 -0
  165. package/dist/prompts/wait.d.ts +18 -0
  166. package/dist/prompts/wait.js +1 -0
  167. package/dist/spinner.d.ts +33 -0
  168. package/dist/spinner.js +3 -0
  169. package/dist/symbols.d.ts +33 -0
  170. package/dist/symbols.js +1 -0
  171. package/dist/tasks.d.ts +57 -0
  172. package/dist/tasks.js +1 -0
  173. package/dist/theme.d.ts +2 -0
  174. package/dist/theme.js +1 -0
  175. package/dist/types.d.ts +503 -0
  176. package/dist/types.js +1 -0
  177. package/dist/utils.d.ts +81 -0
  178. package/dist/utils.js +1 -0
  179. package/package.json +8 -9
  180. package/dist/src/ansi.js +0 -50
  181. package/dist/src/ansi.js.map +0 -1
  182. package/dist/src/base.js +0 -258
  183. package/dist/src/base.js.map +0 -1
  184. package/dist/src/core.js.map +0 -1
  185. package/dist/src/data/countries.js +0 -569
  186. package/dist/src/data/countries.js.map +0 -1
  187. package/dist/src/data/licenses.js +0 -480
  188. package/dist/src/data/licenses.js.map +0 -1
  189. package/dist/src/highlight.js +0 -185
  190. package/dist/src/highlight.js.map +0 -1
  191. package/dist/src/index.js +0 -66
  192. package/dist/src/index.js.map +0 -1
  193. package/dist/src/input.js +0 -158
  194. package/dist/src/input.js.map +0 -1
  195. package/dist/src/pipeline.js +0 -273
  196. package/dist/src/pipeline.js.map +0 -1
  197. package/dist/src/prompts/autocomplete.js +0 -171
  198. package/dist/src/prompts/autocomplete.js.map +0 -1
  199. package/dist/src/prompts/box.js +0 -225
  200. package/dist/src/prompts/box.js.map +0 -1
  201. package/dist/src/prompts/breadcrumb-search.js +0 -260
  202. package/dist/src/prompts/breadcrumb-search.js.map +0 -1
  203. package/dist/src/prompts/breadcrumb.js +0 -307
  204. package/dist/src/prompts/breadcrumb.js.map +0 -1
  205. package/dist/src/prompts/byte.js +0 -176
  206. package/dist/src/prompts/byte.js.map +0 -1
  207. package/dist/src/prompts/calculator.js +0 -243
  208. package/dist/src/prompts/calculator.js.map +0 -1
  209. package/dist/src/prompts/calendar.js +0 -430
  210. package/dist/src/prompts/calendar.js.map +0 -1
  211. package/dist/src/prompts/checkbox.js +0 -159
  212. package/dist/src/prompts/checkbox.js.map +0 -1
  213. package/dist/src/prompts/code.js +0 -271
  214. package/dist/src/prompts/code.js.map +0 -1
  215. package/dist/src/prompts/color.js +0 -165
  216. package/dist/src/prompts/color.js.map +0 -1
  217. package/dist/src/prompts/confirm.js +0 -55
  218. package/dist/src/prompts/confirm.js.map +0 -1
  219. package/dist/src/prompts/connection-string.js +0 -120
  220. package/dist/src/prompts/connection-string.js.map +0 -1
  221. package/dist/src/prompts/cron.js +0 -207
  222. package/dist/src/prompts/cron.js.map +0 -1
  223. package/dist/src/prompts/curl-utils.js +0 -71
  224. package/dist/src/prompts/curl-utils.js.map +0 -1
  225. package/dist/src/prompts/curl.js +0 -431
  226. package/dist/src/prompts/curl.js.map +0 -1
  227. package/dist/src/prompts/data-inspector.js +0 -261
  228. package/dist/src/prompts/data-inspector.js.map +0 -1
  229. package/dist/src/prompts/date.js +0 -185
  230. package/dist/src/prompts/date.js.map +0 -1
  231. package/dist/src/prompts/dependency.js +0 -283
  232. package/dist/src/prompts/dependency.js.map +0 -1
  233. package/dist/src/prompts/dial.js +0 -124
  234. package/dist/src/prompts/dial.js.map +0 -1
  235. package/dist/src/prompts/diff.js +0 -118
  236. package/dist/src/prompts/diff.js.map +0 -1
  237. package/dist/src/prompts/draw.js +0 -191
  238. package/dist/src/prompts/draw.js.map +0 -1
  239. package/dist/src/prompts/editor.js +0 -234
  240. package/dist/src/prompts/editor.js.map +0 -1
  241. package/dist/src/prompts/emoji.js +0 -226
  242. package/dist/src/prompts/emoji.js.map +0 -1
  243. package/dist/src/prompts/exec.js +0 -151
  244. package/dist/src/prompts/exec.js.map +0 -1
  245. package/dist/src/prompts/file.js +0 -217
  246. package/dist/src/prompts/file.js.map +0 -1
  247. package/dist/src/prompts/form.js +0 -241
  248. package/dist/src/prompts/form.js.map +0 -1
  249. package/dist/src/prompts/fuzzy-multi-column.js +0 -161
  250. package/dist/src/prompts/fuzzy-multi-column.js.map +0 -1
  251. package/dist/src/prompts/fuzzy.js +0 -147
  252. package/dist/src/prompts/fuzzy.js.map +0 -1
  253. package/dist/src/prompts/gauge.js +0 -137
  254. package/dist/src/prompts/gauge.js.map +0 -1
  255. package/dist/src/prompts/grid.js +0 -191
  256. package/dist/src/prompts/grid.js.map +0 -1
  257. package/dist/src/prompts/heatmap.js +0 -147
  258. package/dist/src/prompts/heatmap.js.map +0 -1
  259. package/dist/src/prompts/ip.js +0 -138
  260. package/dist/src/prompts/ip.js.map +0 -1
  261. package/dist/src/prompts/kanban.js +0 -233
  262. package/dist/src/prompts/kanban.js.map +0 -1
  263. package/dist/src/prompts/keypress.js +0 -54
  264. package/dist/src/prompts/keypress.js.map +0 -1
  265. package/dist/src/prompts/license.js +0 -144
  266. package/dist/src/prompts/license.js.map +0 -1
  267. package/dist/src/prompts/list.js +0 -124
  268. package/dist/src/prompts/list.js.map +0 -1
  269. package/dist/src/prompts/map.js +0 -262
  270. package/dist/src/prompts/map.js.map +0 -1
  271. package/dist/src/prompts/match.js +0 -271
  272. package/dist/src/prompts/match.js.map +0 -1
  273. package/dist/src/prompts/miller.js +0 -228
  274. package/dist/src/prompts/miller.js.map +0 -1
  275. package/dist/src/prompts/multi-column-select.js +0 -176
  276. package/dist/src/prompts/multi-column-select.js.map +0 -1
  277. package/dist/src/prompts/multi-range.js +0 -189
  278. package/dist/src/prompts/multi-range.js.map +0 -1
  279. package/dist/src/prompts/multi-select.js +0 -183
  280. package/dist/src/prompts/multi-select.js.map +0 -1
  281. package/dist/src/prompts/number.js +0 -166
  282. package/dist/src/prompts/number.js.map +0 -1
  283. package/dist/src/prompts/otp.js +0 -107
  284. package/dist/src/prompts/otp.js.map +0 -1
  285. package/dist/src/prompts/pattern.js +0 -252
  286. package/dist/src/prompts/pattern.js.map +0 -1
  287. package/dist/src/prompts/phone.js +0 -398
  288. package/dist/src/prompts/phone.js.map +0 -1
  289. package/dist/src/prompts/quiz-select.js +0 -114
  290. package/dist/src/prompts/quiz-select.js.map +0 -1
  291. package/dist/src/prompts/quiz-text.js +0 -98
  292. package/dist/src/prompts/quiz-text.js.map +0 -1
  293. package/dist/src/prompts/range.js +0 -164
  294. package/dist/src/prompts/range.js.map +0 -1
  295. package/dist/src/prompts/rating.js +0 -83
  296. package/dist/src/prompts/rating.js.map +0 -1
  297. package/dist/src/prompts/regex.js +0 -145
  298. package/dist/src/prompts/regex.js.map +0 -1
  299. package/dist/src/prompts/region.js +0 -170
  300. package/dist/src/prompts/region.js.map +0 -1
  301. package/dist/src/prompts/schedule.js +0 -270
  302. package/dist/src/prompts/schedule.js.map +0 -1
  303. package/dist/src/prompts/scroll.js +0 -155
  304. package/dist/src/prompts/scroll.js.map +0 -1
  305. package/dist/src/prompts/seat.js +0 -164
  306. package/dist/src/prompts/seat.js.map +0 -1
  307. package/dist/src/prompts/select-range.js +0 -148
  308. package/dist/src/prompts/select-range.js.map +0 -1
  309. package/dist/src/prompts/select.js +0 -163
  310. package/dist/src/prompts/select.js.map +0 -1
  311. package/dist/src/prompts/semver.js +0 -43
  312. package/dist/src/prompts/semver.js.map +0 -1
  313. package/dist/src/prompts/shortcut.js +0 -133
  314. package/dist/src/prompts/shortcut.js.map +0 -1
  315. package/dist/src/prompts/slider.js +0 -69
  316. package/dist/src/prompts/slider.js.map +0 -1
  317. package/dist/src/prompts/slot.js +0 -117
  318. package/dist/src/prompts/slot.js.map +0 -1
  319. package/dist/src/prompts/snippet.js +0 -228
  320. package/dist/src/prompts/snippet.js.map +0 -1
  321. package/dist/src/prompts/sort-grid.js +0 -151
  322. package/dist/src/prompts/sort-grid.js.map +0 -1
  323. package/dist/src/prompts/sort.js +0 -166
  324. package/dist/src/prompts/sort.js.map +0 -1
  325. package/dist/src/prompts/spam.js +0 -80
  326. package/dist/src/prompts/spam.js.map +0 -1
  327. package/dist/src/prompts/spreadsheet.js +0 -240
  328. package/dist/src/prompts/spreadsheet.js.map +0 -1
  329. package/dist/src/prompts/table.js +0 -120
  330. package/dist/src/prompts/table.js.map +0 -1
  331. package/dist/src/prompts/text.js +0 -317
  332. package/dist/src/prompts/text.js.map +0 -1
  333. package/dist/src/prompts/time.js +0 -211
  334. package/dist/src/prompts/time.js.map +0 -1
  335. package/dist/src/prompts/toggle.js +0 -53
  336. package/dist/src/prompts/toggle.js.map +0 -1
  337. package/dist/src/prompts/transfer.js +0 -207
  338. package/dist/src/prompts/transfer.js.map +0 -1
  339. package/dist/src/prompts/tree-select.js +0 -270
  340. package/dist/src/prompts/tree-select.js.map +0 -1
  341. package/dist/src/prompts/tree.js +0 -233
  342. package/dist/src/prompts/tree.js.map +0 -1
  343. package/dist/src/prompts/wait.js +0 -79
  344. package/dist/src/prompts/wait.js.map +0 -1
  345. package/dist/src/spinner.js +0 -105
  346. package/dist/src/spinner.js.map +0 -1
  347. package/dist/src/symbols.js +0 -66
  348. package/dist/src/symbols.js.map +0 -1
  349. package/dist/src/tasks.js +0 -231
  350. package/dist/src/tasks.js.map +0 -1
  351. package/dist/src/theme.js +0 -29
  352. package/dist/src/theme.js.map +0 -1
  353. package/dist/src/types.js +0 -8
  354. package/dist/src/types.js.map +0 -1
  355. package/dist/src/utils.js +0 -480
  356. package/dist/src/utils.js.map +0 -1
@@ -1,307 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "BreadcrumbPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return BreadcrumbPrompt;
9
- }
10
- });
11
- const _base = require("../base");
12
- const _ansi = require("../ansi");
13
- const _theme = require("../theme");
14
- const _symbols = require("../symbols");
15
- const _promises = /*#__PURE__*/ _interop_require_wildcard(require("fs/promises"));
16
- const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
17
- function _define_property(obj, key, value) {
18
- if (key in obj) {
19
- Object.defineProperty(obj, key, {
20
- value: value,
21
- enumerable: true,
22
- configurable: true,
23
- writable: true
24
- });
25
- } else {
26
- obj[key] = value;
27
- }
28
- return obj;
29
- }
30
- function _getRequireWildcardCache(nodeInterop) {
31
- if (typeof WeakMap !== "function") return null;
32
- var cacheBabelInterop = new WeakMap();
33
- var cacheNodeInterop = new WeakMap();
34
- return (_getRequireWildcardCache = function(nodeInterop) {
35
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
36
- })(nodeInterop);
37
- }
38
- function _interop_require_wildcard(obj, nodeInterop) {
39
- if (!nodeInterop && obj && obj.__esModule) {
40
- return obj;
41
- }
42
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
43
- return {
44
- default: obj
45
- };
46
- }
47
- var cache = _getRequireWildcardCache(nodeInterop);
48
- if (cache && cache.has(obj)) {
49
- return cache.get(obj);
50
- }
51
- var newObj = {
52
- __proto__: null
53
- };
54
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
55
- for(var key in obj){
56
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
57
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
58
- if (desc && (desc.get || desc.set)) {
59
- Object.defineProperty(newObj, key, desc);
60
- } else {
61
- newObj[key] = obj[key];
62
- }
63
- }
64
- }
65
- newObj.default = obj;
66
- if (cache) {
67
- cache.set(obj, newObj);
68
- }
69
- return newObj;
70
- }
71
- let BreadcrumbPrompt = class BreadcrumbPrompt extends _base.Prompt {
72
- async loadDirectory(dir) {
73
- this.isLoading = true;
74
- this.error = null;
75
- this.render(false);
76
- try {
77
- await _promises.access(dir);
78
- const dirents = await _promises.readdir(dir, {
79
- withFileTypes: true
80
- });
81
- let entries = dirents.map((d)=>({
82
- name: d.name,
83
- isDirectory: d.isDirectory()
84
- }));
85
- if (!this.showHidden) {
86
- entries = entries.filter((e)=>!e.name.startsWith('.'));
87
- }
88
- entries.sort((a, b)=>{
89
- if (a.isDirectory === b.isDirectory) {
90
- return a.name.localeCompare(b.name);
91
- }
92
- return a.isDirectory ? -1 : 1;
93
- });
94
- this.currentEntries = entries;
95
- if (this.currentEntries.length === 0) {
96
- this.cursor = 0;
97
- } else if (this.cursor >= this.currentEntries.length) {
98
- this.cursor = this.currentEntries.length - 1;
99
- }
100
- } catch (err) {
101
- this.error = err.message || 'Error reading directory';
102
- this.currentEntries = [];
103
- } finally{
104
- this.isLoading = false;
105
- this.render(false);
106
- }
107
- }
108
- async drillDown() {
109
- const entry = this.currentEntries[this.cursor];
110
- if (!entry || !entry.isDirectory) return;
111
- const nextPath = _path.join(this.currentPath, entry.name);
112
- this.stack.push({
113
- path: this.currentPath,
114
- cursor: this.cursor,
115
- scrollTop: this.scrollTop
116
- });
117
- this.currentPath = nextPath;
118
- this.cursor = 0;
119
- this.scrollTop = 0;
120
- await this.loadDirectory(nextPath);
121
- }
122
- async goUp() {
123
- if (this.stack.length === 0) return;
124
- const prevState = this.stack.pop();
125
- if (prevState) {
126
- this.currentPath = prevState.path;
127
- this.cursor = prevState.cursor;
128
- this.scrollTop = prevState.scrollTop;
129
- await this.loadDirectory(this.currentPath);
130
- }
131
- }
132
- render(_firstRender) {
133
- const width = this.stdout.columns || 80;
134
- let output = '';
135
- // --- Breadcrumb Line Construction ---
136
- const relative = _path.relative(this.root, this.currentPath);
137
- const parts = relative ? relative.split(_path.sep) : [];
138
- const rootName = _path.basename(this.root);
139
- const segments = [
140
- rootName,
141
- ...parts
142
- ];
143
- // Calculate available space for path
144
- // Prefix: "? Message: "
145
- const prefix = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} `;
146
- const prefixWidth = this.stripAnsi(prefix).length;
147
- const availableWidth = Math.max(20, width - prefixWidth - 5); // Reserve 5 chars buffer
148
- let breadcrumbStr = segments.join(this.separator);
149
- if (breadcrumbStr.length > availableWidth) {
150
- // Truncate logic: Keep root and tail segments that fit
151
- // e.g., root > ... > folder > subfolder
152
- let suffix = segments[segments.length - 1];
153
- for(let i = segments.length - 2; i >= 1; i--){
154
- const next = segments[i] + this.separator + suffix;
155
- if (next.length + 4 > availableWidth) break; // +4 for "... "
156
- suffix = next;
157
- }
158
- breadcrumbStr = `${segments[0]}${this.separator}...${this.separator}${suffix}`;
159
- // If even that is too long (extreme case), just truncate tail
160
- if (breadcrumbStr.length > availableWidth) {
161
- breadcrumbStr = '...' + breadcrumbStr.slice(-(availableWidth - 3));
162
- }
163
- }
164
- output += `${prefix}${breadcrumbStr}\n`;
165
- // --- Content / List ---
166
- if (this.isLoading) {
167
- output += ` ${_theme.theme.muted}Loading...${_ansi.ANSI.RESET}`;
168
- } else if (this.error) {
169
- output += ` ${_theme.theme.error}${this.error}${_ansi.ANSI.RESET}`;
170
- } else if (this.currentEntries.length === 0) {
171
- output += ` ${_theme.theme.muted}(Empty directory)${_ansi.ANSI.RESET}\n ${_theme.theme.muted}(Backspace to go back)${_ansi.ANSI.RESET}`;
172
- } else {
173
- // Adjust Scroll Top
174
- if (this.cursor < this.scrollTop) {
175
- this.scrollTop = this.cursor;
176
- } else if (this.cursor >= this.scrollTop + this.pageSize) {
177
- this.scrollTop = this.cursor - this.pageSize + 1;
178
- }
179
- // Sanity check
180
- if (this.scrollTop > this.currentEntries.length - 1) {
181
- this.scrollTop = Math.max(0, this.currentEntries.length - this.pageSize);
182
- }
183
- const visibleEntries = this.currentEntries.slice(this.scrollTop, this.scrollTop + this.pageSize);
184
- visibleEntries.forEach((entry, index)=>{
185
- const absoluteIndex = this.scrollTop + index;
186
- const isSelected = absoluteIndex === this.cursor;
187
- const icon = entry.isDirectory ? '📂' : '📄';
188
- let line = '';
189
- if (isSelected) {
190
- line += `${_theme.theme.main}${_symbols.symbols.pointer} ${icon} ${entry.name}${_ansi.ANSI.RESET}`;
191
- } else {
192
- line += ` ${icon} ${entry.name}`;
193
- }
194
- if (index > 0 || index === 0) output += line;
195
- if (index < visibleEntries.length - 1) output += '\n';
196
- });
197
- // Add a hint about navigation if plenty of space?
198
- // Optional: output += `\n${theme.muted}(Use Arrow Keys, Enter to Select, Backspace to Up)${ANSI.RESET}`;
199
- }
200
- this.renderFrame(output);
201
- }
202
- handleInput(char, _key) {
203
- if (this.isLoading) return;
204
- // Enter
205
- if (char === '\r' || char === '\n') {
206
- if (this.currentEntries.length === 0) return;
207
- const entry = this.currentEntries[this.cursor];
208
- if (entry.isDirectory) {
209
- this.drillDown();
210
- } else {
211
- const fullPath = _path.join(this.currentPath, entry.name);
212
- this.submit(fullPath);
213
- }
214
- return;
215
- }
216
- // Backspace or Left Arrow
217
- if (char === '\x7f' || char === '\x08' || this.isLeft(char)) {
218
- this.goUp();
219
- return;
220
- }
221
- // Right Arrow
222
- if (this.isRight(char)) {
223
- const entry = this.currentEntries[this.cursor];
224
- if (entry && entry.isDirectory) {
225
- this.drillDown();
226
- }
227
- return;
228
- }
229
- // Tab (Next)
230
- if (char === '\t') {
231
- if (this.currentEntries.length === 0) return;
232
- this.cursor = (this.cursor + 1) % this.currentEntries.length;
233
- this.render(false);
234
- return;
235
- }
236
- // Shift+Tab (Prev)
237
- if (char === '\x1b[Z') {
238
- if (this.currentEntries.length === 0) return;
239
- this.cursor = (this.cursor - 1 + this.currentEntries.length) % this.currentEntries.length;
240
- this.render(false);
241
- return;
242
- }
243
- // Up
244
- if (this.isUp(char)) {
245
- if (this.cursor > 0) {
246
- this.cursor--;
247
- this.render(false);
248
- } else if (this.currentEntries.length > 0) {
249
- // Cycle to bottom?
250
- this.cursor = this.currentEntries.length - 1;
251
- this.render(false);
252
- }
253
- return;
254
- }
255
- // Down
256
- if (this.isDown(char)) {
257
- if (this.cursor < this.currentEntries.length - 1) {
258
- this.cursor++;
259
- this.render(false);
260
- } else if (this.currentEntries.length > 0) {
261
- // Cycle to top?
262
- this.cursor = 0;
263
- this.render(false);
264
- }
265
- return;
266
- }
267
- // Page Up
268
- if (char === '\x1b[5~') {
269
- this.cursor = Math.max(0, this.cursor - this.pageSize);
270
- this.render(false);
271
- return;
272
- }
273
- // Page Down
274
- if (char === '\x1b[6~') {
275
- this.cursor = Math.min(this.currentEntries.length - 1, this.cursor + this.pageSize);
276
- this.render(false);
277
- return;
278
- }
279
- }
280
- handleMouse(_event) {
281
- // Scroll up and down
282
- if (this.isLoading) return;
283
- if (_event.action === 'scroll') {
284
- if (_event.scroll === 'up') {
285
- if (this.cursor > 0) {
286
- this.cursor--;
287
- this.render(false);
288
- }
289
- } else if (_event.scroll === 'down') {
290
- if (this.cursor < this.currentEntries.length - 1) {
291
- this.cursor++;
292
- this.render(false);
293
- }
294
- }
295
- }
296
- }
297
- constructor(options){
298
- super(options), _define_property(this, "stack", []), _define_property(this, "currentEntries", []), _define_property(this, "cursor", 0), _define_property(this, "scrollTop", 0), _define_property(this, "root", void 0), _define_property(this, "currentPath", void 0), _define_property(this, "separator", void 0), _define_property(this, "showHidden", void 0), _define_property(this, "isLoading", false), _define_property(this, "error", null), _define_property(this, "pageSize", 10);
299
- this.root = _path.resolve(options.root || process.cwd());
300
- this.currentPath = this.root;
301
- this.separator = options.separator || ' › ';
302
- this.showHidden = options.showHidden || false;
303
- this.loadDirectory(this.currentPath);
304
- }
305
- };
306
-
307
- //# sourceMappingURL=breadcrumb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/breadcrumb.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { BreadcrumbOptions, MouseEvent } from '../types';\nimport { ANSI } from '../ansi';\nimport { theme } from '../theme';\nimport { symbols } from '../symbols';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\ninterface StackItem {\n path: string;\n cursor: number;\n scrollTop: number;\n}\n\ninterface DirEntry {\n name: string;\n isDirectory: boolean;\n}\n\nexport class BreadcrumbPrompt extends Prompt<string, BreadcrumbOptions> {\n protected stack: StackItem[] = [];\n protected currentEntries: DirEntry[] = [];\n protected cursor: number = 0;\n protected scrollTop: number = 0;\n protected root: string;\n protected currentPath: string;\n protected separator: string;\n protected showHidden: boolean;\n protected isLoading: boolean = false;\n protected error: string | null = null;\n protected readonly pageSize: number = 10;\n\n constructor(options: BreadcrumbOptions) {\n super(options);\n this.root = path.resolve(options.root || process.cwd());\n this.currentPath = this.root;\n this.separator = options.separator || ' › ';\n this.showHidden = options.showHidden || false;\n\n this.loadDirectory(this.currentPath);\n }\n\n protected async loadDirectory(dir: string) {\n this.isLoading = true;\n this.error = null;\n this.render(false);\n\n try {\n await fs.access(dir);\n\n const dirents = await fs.readdir(dir, { withFileTypes: true });\n let entries = dirents.map(d => ({\n name: d.name,\n isDirectory: d.isDirectory()\n }));\n\n if (!this.showHidden) {\n entries = entries.filter(e => !e.name.startsWith('.'));\n }\n\n entries.sort((a, b) => {\n if (a.isDirectory === b.isDirectory) {\n return a.name.localeCompare(b.name);\n }\n return a.isDirectory ? -1 : 1;\n });\n\n this.currentEntries = entries;\n\n if (this.currentEntries.length === 0) {\n this.cursor = 0;\n } else if (this.cursor >= this.currentEntries.length) {\n this.cursor = this.currentEntries.length - 1;\n }\n } catch (err: any) {\n this.error = err.message || 'Error reading directory';\n this.currentEntries = [];\n } finally {\n this.isLoading = false;\n this.render(false);\n }\n }\n\n protected async drillDown() {\n const entry = this.currentEntries[this.cursor];\n if (!entry || !entry.isDirectory) return;\n\n const nextPath = path.join(this.currentPath, entry.name);\n\n this.stack.push({\n path: this.currentPath,\n cursor: this.cursor,\n scrollTop: this.scrollTop\n });\n\n this.currentPath = nextPath;\n this.cursor = 0;\n this.scrollTop = 0;\n\n await this.loadDirectory(nextPath);\n }\n\n protected async goUp() {\n if (this.stack.length === 0) return;\n\n const prevState = this.stack.pop();\n if (prevState) {\n this.currentPath = prevState.path;\n this.cursor = prevState.cursor;\n this.scrollTop = prevState.scrollTop;\n\n await this.loadDirectory(this.currentPath);\n }\n }\n\n protected render(_firstRender: boolean): void {\n const width = this.stdout.columns || 80;\n let output = '';\n\n // --- Breadcrumb Line Construction ---\n const relative = path.relative(this.root, this.currentPath);\n const parts = relative ? relative.split(path.sep) : [];\n const rootName = path.basename(this.root);\n const segments = [rootName, ...parts];\n\n // Calculate available space for path\n // Prefix: \"? Message: \"\n const prefix = `${theme.success}?${ANSI.RESET} ${theme.title}${this.options.message}${ANSI.RESET} `;\n const prefixWidth = this.stripAnsi(prefix).length;\n const availableWidth = Math.max(20, width - prefixWidth - 5); // Reserve 5 chars buffer\n\n let breadcrumbStr = segments.join(this.separator);\n\n if (breadcrumbStr.length > availableWidth) {\n // Truncate logic: Keep root and tail segments that fit\n // e.g., root > ... > folder > subfolder\n let suffix = segments[segments.length - 1];\n for (let i = segments.length - 2; i >= 1; i--) { // Stop before root (index 0)\n const next = segments[i] + this.separator + suffix;\n if (next.length + 4 > availableWidth) break; // +4 for \"... \"\n suffix = next;\n }\n breadcrumbStr = `${segments[0]}${this.separator}...${this.separator}${suffix}`;\n\n // If even that is too long (extreme case), just truncate tail\n if (breadcrumbStr.length > availableWidth) {\n breadcrumbStr = '...' + breadcrumbStr.slice(-(availableWidth - 3));\n }\n }\n\n output += `${prefix}${breadcrumbStr}\\n`;\n\n // --- Content / List ---\n if (this.isLoading) {\n output += ` ${theme.muted}Loading...${ANSI.RESET}`;\n } else if (this.error) {\n output += ` ${theme.error}${this.error}${ANSI.RESET}`;\n } else if (this.currentEntries.length === 0) {\n output += ` ${theme.muted}(Empty directory)${ANSI.RESET}\\n ${theme.muted}(Backspace to go back)${ANSI.RESET}`;\n } else {\n // Adjust Scroll Top\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 // Sanity check\n if (this.scrollTop > this.currentEntries.length - 1) {\n this.scrollTop = Math.max(0, this.currentEntries.length - this.pageSize);\n }\n\n const visibleEntries = this.currentEntries.slice(this.scrollTop, this.scrollTop + this.pageSize);\n\n visibleEntries.forEach((entry, index) => {\n const absoluteIndex = this.scrollTop + index;\n const isSelected = absoluteIndex === this.cursor;\n const icon = entry.isDirectory ? '📂' : '📄';\n\n let line = '';\n if (isSelected) {\n line += `${theme.main}${symbols.pointer} ${icon} ${entry.name}${ANSI.RESET}`;\n } else {\n line += ` ${icon} ${entry.name}`;\n }\n\n if (index > 0 || index === 0) output += line;\n if (index < visibleEntries.length - 1) output += '\\n';\n });\n\n // Add a hint about navigation if plenty of space? \n // Optional: output += `\\n${theme.muted}(Use Arrow Keys, Enter to Select, Backspace to Up)${ANSI.RESET}`;\n }\n\n this.renderFrame(output);\n }\n\n protected handleInput(char: string, _key: Buffer): void {\n if (this.isLoading) return;\n\n // Enter\n if (char === '\\r' || char === '\\n') {\n if (this.currentEntries.length === 0) return;\n\n const entry = this.currentEntries[this.cursor];\n if (entry.isDirectory) {\n this.drillDown();\n } else {\n const fullPath = path.join(this.currentPath, entry.name);\n this.submit(fullPath);\n }\n return;\n }\n\n // Backspace or Left Arrow\n if (char === '\\x7f' || char === '\\x08' || this.isLeft(char)) {\n this.goUp();\n return;\n }\n\n // Right Arrow\n if (this.isRight(char)) {\n const entry = this.currentEntries[this.cursor];\n if (entry && entry.isDirectory) {\n this.drillDown();\n }\n return;\n }\n\n // Tab (Next)\n if (char === '\\t') {\n if (this.currentEntries.length === 0) return;\n this.cursor = (this.cursor + 1) % this.currentEntries.length;\n this.render(false);\n return;\n }\n\n // Shift+Tab (Prev)\n if (char === '\\x1b[Z') {\n if (this.currentEntries.length === 0) return;\n this.cursor = (this.cursor - 1 + this.currentEntries.length) % this.currentEntries.length;\n this.render(false);\n return;\n }\n\n // Up\n if (this.isUp(char)) {\n if (this.cursor > 0) {\n this.cursor--;\n this.render(false);\n } else if (this.currentEntries.length > 0) {\n // Cycle to bottom?\n this.cursor = this.currentEntries.length - 1;\n this.render(false);\n }\n return;\n }\n\n // Down\n if (this.isDown(char)) {\n if (this.cursor < this.currentEntries.length - 1) {\n this.cursor++;\n this.render(false);\n } else if (this.currentEntries.length > 0) {\n // Cycle to top?\n this.cursor = 0;\n this.render(false);\n }\n return;\n }\n\n // Page Up\n if (char === '\\x1b[5~') {\n this.cursor = Math.max(0, this.cursor - this.pageSize);\n this.render(false);\n return;\n }\n\n // Page Down\n if (char === '\\x1b[6~') {\n this.cursor = Math.min(this.currentEntries.length - 1, this.cursor + this.pageSize);\n this.render(false);\n return;\n }\n }\n\n protected handleMouse(_event: MouseEvent): void {\n // Scroll up and down\n if (this.isLoading) return;\n\n if (_event.action === 'scroll') {\n if (_event.scroll === 'up') {\n if (this.cursor > 0) {\n this.cursor--;\n this.render(false);\n }\n } else if (_event.scroll === 'down') {\n if (this.cursor < this.currentEntries.length - 1) {\n this.cursor++;\n this.render(false);\n }\n }\n }\n }\n}\n"],"names":["BreadcrumbPrompt","Prompt","loadDirectory","dir","isLoading","error","render","fs","access","dirents","readdir","withFileTypes","entries","map","d","name","isDirectory","showHidden","filter","e","startsWith","sort","a","b","localeCompare","currentEntries","length","cursor","err","message","drillDown","entry","nextPath","path","join","currentPath","stack","push","scrollTop","goUp","prevState","pop","_firstRender","width","stdout","columns","output","relative","root","parts","split","sep","rootName","basename","segments","prefix","theme","success","ANSI","RESET","title","options","prefixWidth","stripAnsi","availableWidth","Math","max","breadcrumbStr","separator","suffix","i","next","slice","muted","pageSize","visibleEntries","forEach","index","absoluteIndex","isSelected","icon","line","main","symbols","pointer","renderFrame","handleInput","char","_key","fullPath","submit","isLeft","isRight","isUp","isDown","min","handleMouse","_event","action","scroll","resolve","process","cwd"],"mappings":"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"}
@@ -1,176 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "BytePrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return BytePrompt;
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
- const UNITS = [
29
- 'B',
30
- 'KB',
31
- 'MB',
32
- 'GB',
33
- 'TB',
34
- 'PB'
35
- ];
36
- let BytePrompt = class BytePrompt extends _base.Prompt {
37
- render(_firstRender) {
38
- const unitStr = UNITS[this.unitIndex];
39
- // 1. Render Question & Input
40
- const icon = this.errorMsg ? `${_theme.theme.error}${_symbols.symbols.cross}` : `${_theme.theme.success}?`;
41
- let output = `${icon} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} `;
42
- // Value part
43
- output += `${_theme.theme.main}${_ansi.ANSI.UNDERLINE}${this.buffer}${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${unitStr}${_ansi.ANSI.RESET}\n`;
44
- // 2. Render Unit Bar
45
- // (Unit: B > KB > [MB] > GB)
46
- let bar = ' ';
47
- UNITS.forEach((u, i)=>{
48
- if (i === this.unitIndex) {
49
- bar += `${_theme.theme.main}${_ansi.ANSI.REVERSE} ${u} ${_ansi.ANSI.RESET}`;
50
- } else {
51
- bar += `${_theme.theme.muted} ${u} ${_ansi.ANSI.RESET}`;
52
- }
53
- if (i < UNITS.length - 1) {
54
- bar += ` ${_theme.theme.muted}›${_ansi.ANSI.RESET} `;
55
- }
56
- });
57
- output += `\n${bar}\n`;
58
- // 3. Hints & Errors
59
- output += `${_theme.theme.muted} (Arrows: Adjust | Tab: Switch Unit | Enter: Submit)${_ansi.ANSI.RESET}`;
60
- if (this.errorMsg) {
61
- output += `\n${_theme.theme.error}>> ${this.errorMsg}${_ansi.ANSI.RESET}`;
62
- }
63
- this.renderFrame(output);
64
- }
65
- handleInput(char) {
66
- this.errorMsg = '';
67
- // Enter
68
- if (char === '\r' || char === '\n') {
69
- const finalVal = parseFloat(this.buffer);
70
- if (isNaN(finalVal)) {
71
- this.errorMsg = 'Invalid number';
72
- this.render(false);
73
- return;
74
- }
75
- // Calculate Bytes: value * 1024^index
76
- const bytes = finalVal * Math.pow(1024, this.unitIndex);
77
- // Min/Max Validation (in bytes)
78
- if (this.options.min !== undefined && bytes < this.options.min) {
79
- this.errorMsg = `Minimum value is ${this.formatBytes(this.options.min)}`;
80
- this.render(false);
81
- return;
82
- }
83
- if (this.options.max !== undefined && bytes > this.options.max) {
84
- this.errorMsg = `Maximum value is ${this.formatBytes(this.options.max)}`;
85
- this.render(false);
86
- return;
87
- }
88
- this.submit(Math.round(bytes)); // Return integer bytes? Or float? Usually bytes are int.
89
- return;
90
- }
91
- // Tab / Shift+Tab -> Switch Unit
92
- if (char === '\t' || this.isRight(char)) {
93
- if (this.unitIndex < UNITS.length - 1) {
94
- this.unitIndex++;
95
- this.render(false);
96
- }
97
- return;
98
- }
99
- if (char === '\x1b[Z' || this.isLeft(char)) {
100
- if (this.unitIndex > 0) {
101
- this.unitIndex--;
102
- this.render(false);
103
- }
104
- return;
105
- }
106
- // Arrows -> Adjust Value
107
- if (this.isUp(char) || this.isDown(char)) {
108
- let val = parseFloat(this.buffer) || 0;
109
- // Adaptive step: 1 if integer, 0.1 if float
110
- const step = this.buffer.includes('.') ? 0.1 : 1;
111
- if (this.isUp(char)) val += step;
112
- if (this.isDown(char)) val -= step;
113
- // Fix Float Precision
114
- val = Math.round(val * 100) / 100;
115
- if (val < 0) val = 0; // No negative bytes usually
116
- this.buffer = val.toString();
117
- this.render(false);
118
- return;
119
- }
120
- // Typing / Backspace
121
- if (char === '\u0008' || char === '\x7f') {
122
- if (this.buffer.length > 0) {
123
- this.buffer = this.buffer.slice(0, -1);
124
- this.render(false);
125
- }
126
- return;
127
- }
128
- // Digits & Dot
129
- if (/^[0-9.]$/.test(char)) {
130
- // Prevent multiple dots
131
- if (char === '.' && this.buffer.includes('.')) return;
132
- this.buffer += char;
133
- this.render(false);
134
- }
135
- }
136
- // Helper for error messages
137
- formatBytes(bytes) {
138
- if (bytes === 0) return '0 B';
139
- const i = Math.floor(Math.log(bytes) / Math.log(1024));
140
- return parseFloat((bytes / Math.pow(1024, i)).toFixed(2)) + ' ' + UNITS[i];
141
- }
142
- handleMouse(event) {
143
- if (event.action === 'scroll') {
144
- if (event.scroll === 'up') {
145
- // Scroll up -> Increase Value
146
- let val = parseFloat(this.buffer) || 0;
147
- val += 1;
148
- this.buffer = val.toString();
149
- this.render(false);
150
- } else if (event.scroll === 'down') {
151
- // Scroll down -> Decrease Value
152
- let val = parseFloat(this.buffer) || 0;
153
- val = Math.max(0, val - 1);
154
- this.buffer = val.toString();
155
- this.render(false);
156
- }
157
- }
158
- }
159
- constructor(options){
160
- super(options), _define_property(this, "inputValue", 0), _define_property(this, "buffer", ''), _define_property(this, "unitIndex", 0), _define_property(this, "errorMsg", '');
161
- // Parse initial bytes to best unit
162
- // e.g. 1073741824 -> 1.00 GB
163
- let val = options.initial || 0;
164
- let idx = 0;
165
- while(val >= 1024 && idx < UNITS.length - 1){
166
- val /= 1024;
167
- idx++;
168
- }
169
- // Round to 2 decimals for display if float
170
- this.inputValue = Math.round(val * 100) / 100;
171
- this.buffer = this.inputValue.toString();
172
- this.unitIndex = idx;
173
- }
174
- };
175
-
176
- //# sourceMappingURL=byte.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/byte.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { symbols } from '../symbols';\nimport { ByteOptions, MouseEvent } from '../types';\n\nconst UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\nexport class BytePrompt extends Prompt<number, ByteOptions> {\n private inputValue: number = 0;\n private buffer: string = '';\n private unitIndex: number = 0;\n private errorMsg: string = '';\n\n constructor(options: ByteOptions) {\n super(options);\n // Parse initial bytes to best unit\n // e.g. 1073741824 -> 1.00 GB\n let val = options.initial || 0;\n let idx = 0;\n while (val >= 1024 && idx < UNITS.length - 1) {\n val /= 1024;\n idx++;\n }\n\n // Round to 2 decimals for display if float\n this.inputValue = Math.round(val * 100) / 100;\n this.buffer = this.inputValue.toString();\n this.unitIndex = idx;\n }\n\n protected render(_firstRender: boolean): void {\n const unitStr = UNITS[this.unitIndex];\n\n // 1. Render Question & Input\n const icon = this.errorMsg ? `${theme.error}${symbols.cross}` : `${theme.success}?`;\n let output = `${icon} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} `;\n\n // Value part\n output += `${theme.main}${ANSI.UNDERLINE}${this.buffer}${ANSI.RESET} ${ANSI.BOLD}${unitStr}${ANSI.RESET}\\n`;\n\n // 2. Render Unit Bar\n // (Unit: B > KB > [MB] > GB)\n let bar = ' ';\n UNITS.forEach((u, i) => {\n if (i === this.unitIndex) {\n bar += `${theme.main}${ANSI.REVERSE} ${u} ${ANSI.RESET}`;\n } else {\n bar += `${theme.muted} ${u} ${ANSI.RESET}`;\n }\n\n if (i < UNITS.length - 1) {\n bar += ` ${theme.muted}›${ANSI.RESET} `;\n }\n });\n output += `\\n${bar}\\n`;\n\n // 3. Hints & Errors\n output += `${theme.muted} (Arrows: Adjust | Tab: Switch Unit | Enter: Submit)${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): void {\n this.errorMsg = '';\n\n // Enter\n if (char === '\\r' || char === '\\n') {\n const finalVal = parseFloat(this.buffer);\n if (isNaN(finalVal)) {\n this.errorMsg = 'Invalid number';\n this.render(false);\n return;\n }\n\n // Calculate Bytes: value * 1024^index\n const bytes = finalVal * Math.pow(1024, this.unitIndex);\n\n // Min/Max Validation (in bytes)\n if (this.options.min !== undefined && bytes < this.options.min) {\n this.errorMsg = `Minimum value is ${this.formatBytes(this.options.min)}`;\n this.render(false);\n return;\n }\n if (this.options.max !== undefined && bytes > this.options.max) {\n this.errorMsg = `Maximum value is ${this.formatBytes(this.options.max)}`;\n this.render(false);\n return;\n }\n\n this.submit(Math.round(bytes)); // Return integer bytes? Or float? Usually bytes are int.\n return;\n }\n\n // Tab / Shift+Tab -> Switch Unit\n if (char === '\\t' || this.isRight(char)) {\n if (this.unitIndex < UNITS.length - 1) {\n this.unitIndex++;\n this.render(false);\n }\n return;\n }\n if (char === '\\x1b[Z' || this.isLeft(char)) { // Shift+Tab or Left\n if (this.unitIndex > 0) {\n this.unitIndex--;\n this.render(false);\n }\n return;\n }\n\n // Arrows -> Adjust Value\n if (this.isUp(char) || this.isDown(char)) {\n let val = parseFloat(this.buffer) || 0;\n // Adaptive step: 1 if integer, 0.1 if float\n const step = this.buffer.includes('.') ? 0.1 : 1;\n\n if (this.isUp(char)) val += step;\n if (this.isDown(char)) val -= step;\n\n // Fix Float Precision\n val = Math.round(val * 100) / 100;\n if (val < 0) val = 0; // No negative bytes usually\n\n this.buffer = val.toString();\n this.render(false);\n return;\n }\n\n // Typing / Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n if (this.buffer.length > 0) {\n this.buffer = this.buffer.slice(0, -1);\n this.render(false);\n }\n return;\n }\n\n // Digits & Dot\n if (/^[0-9.]$/.test(char)) {\n // Prevent multiple dots\n if (char === '.' && this.buffer.includes('.')) return;\n\n this.buffer += char;\n this.render(false);\n }\n }\n\n // Helper for error messages\n private formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return parseFloat((bytes / Math.pow(1024, i)).toFixed(2)) + ' ' + UNITS[i];\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n // Scroll up -> Increase Value\n let val = parseFloat(this.buffer) || 0;\n val += 1;\n this.buffer = val.toString();\n this.render(false);\n } else if (event.scroll === 'down') {\n // Scroll down -> Decrease Value\n let val = parseFloat(this.buffer) || 0;\n val = Math.max(0, val - 1);\n this.buffer = val.toString();\n this.render(false);\n }\n }\n }\n}"],"names":["BytePrompt","UNITS","Prompt","render","_firstRender","unitStr","unitIndex","icon","errorMsg","theme","error","symbols","cross","success","output","ANSI","BOLD","title","options","message","RESET","main","UNDERLINE","buffer","bar","forEach","u","i","REVERSE","muted","length","renderFrame","handleInput","char","finalVal","parseFloat","isNaN","bytes","Math","pow","min","undefined","formatBytes","max","submit","round","isRight","isLeft","isUp","isDown","val","step","includes","toString","slice","test","floor","log","toFixed","handleMouse","event","action","scroll","inputValue","initial","idx"],"mappings":"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"}