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,225 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "BoxPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return BoxPrompt;
9
- }
10
- });
11
- const _base = require("../base");
12
- const _ansi = require("../ansi");
13
- const _theme = require("../theme");
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 BoxPrompt = class BoxPrompt extends _base.Prompt {
28
- commitBuffer() {
29
- let val = parseInt(this.inputBuffer, 10);
30
- if (isNaN(val)) val = 0;
31
- // Apply constraints
32
- if (this.options.min !== undefined && val < this.options.min) val = this.options.min;
33
- if (this.options.max !== undefined && val > this.options.max) val = this.options.max;
34
- this.values[this.focus] = val;
35
- this.inputBuffer = val.toString(); // Normalize buffer
36
- }
37
- changeFocus(newFocus) {
38
- this.commitBuffer(); // Save current
39
- this.focus = newFocus;
40
- this.inputBuffer = this.values[newFocus].toString();
41
- }
42
- increment(amount) {
43
- let val = parseInt(this.inputBuffer, 10);
44
- if (isNaN(val)) val = 0;
45
- val += amount;
46
- if (this.options.min !== undefined && val < this.options.min) val = this.options.min;
47
- if (this.options.max !== undefined && val > this.options.max) val = this.options.max;
48
- this.inputBuffer = val.toString();
49
- }
50
- render(_firstRender) {
51
- const title = `${_theme.theme.success}? ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} (Arrows to navigate, Numbers to edit)`;
52
- // Format value function
53
- const formatVal = (side)=>{
54
- const isFocused = this.focus === side;
55
- const text = isFocused ? this.inputBuffer : this.values[side].toString();
56
- if (isFocused) {
57
- return `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.BOLD}[ ${text} ]${_ansi.ANSI.RESET}`;
58
- }
59
- return ` ${text} `;
60
- };
61
- const vTop = formatVal('top');
62
- const vRight = formatVal('right');
63
- const vBottom = formatVal('bottom');
64
- const vLeft = formatVal('left');
65
- // Layout
66
- // [ Top ]
67
- // [ Left ] [ Right ]
68
- // [ Bottom ]
69
- // We need to pad to align them nicely.
70
- // Simple manual padding for MVP.
71
- // Calculate center padding based on longest string?
72
- // Keep it simple.
73
- let output = title + '\n\n';
74
- // Top Row (Centered)
75
- output += ` ${vTop}\n`;
76
- // Middle Row
77
- output += ` ${vLeft} ${vRight}\n`;
78
- // Bottom Row
79
- output += ` ${vBottom}\n`;
80
- this.renderFrame(output);
81
- }
82
- handleMouse(event) {
83
- if (event.name === 'mouse' && event.action === 'scroll') {
84
- const order = [
85
- 'top',
86
- 'right',
87
- 'bottom',
88
- 'left'
89
- ];
90
- const idx = order.indexOf(this.focus);
91
- if (event.scroll === 'down') {
92
- // Next (Down usually means going forward/down in list)
93
- this.changeFocus(order[(idx + 1) % 4]);
94
- } else if (event.scroll === 'up') {
95
- // Previous
96
- this.changeFocus(order[(idx + 3) % 4]); // +3 is same as -1 in mod 4
97
- }
98
- this.render(false);
99
- }
100
- }
101
- handleInput(char, _key) {
102
- // Enter -> Submit
103
- if (char === '\r' || char === '\n') {
104
- this.commitBuffer();
105
- this.submit(this.values);
106
- return;
107
- }
108
- // Navigation
109
- if (this.isUp(char)) {
110
- if (this.focus === 'bottom' || this.focus === 'left' || this.focus === 'right') {
111
- this.changeFocus('top');
112
- }
113
- this.render(false);
114
- return;
115
- }
116
- if (this.isDown(char)) {
117
- if (this.focus === 'top' || this.focus === 'left' || this.focus === 'right') {
118
- this.changeFocus('bottom');
119
- }
120
- this.render(false);
121
- return;
122
- }
123
- if (this.isLeft(char)) {
124
- if (this.focus === 'right' || this.focus === 'top' || this.focus === 'bottom') {
125
- this.changeFocus('left');
126
- }
127
- this.render(false);
128
- return;
129
- }
130
- if (this.isRight(char)) {
131
- if (this.focus === 'left' || this.focus === 'top' || this.focus === 'bottom') {
132
- this.changeFocus('right');
133
- }
134
- this.render(false);
135
- return;
136
- }
137
- // Tab Cycling
138
- if (char === '\t') {
139
- const order = [
140
- 'top',
141
- 'right',
142
- 'bottom',
143
- 'left'
144
- ];
145
- const idx = order.indexOf(this.focus);
146
- this.changeFocus(order[(idx + 1) % 4]);
147
- this.render(false);
148
- return;
149
- }
150
- // Shift+Tab Cycling (\u001b[Z)
151
- if (char === '\u001b[Z') {
152
- const order = [
153
- 'top',
154
- 'right',
155
- 'bottom',
156
- 'left'
157
- ];
158
- const idx = order.indexOf(this.focus);
159
- this.changeFocus(order[(idx + 3) % 4]); // (idx - 1) % 4 handling negative
160
- this.render(false);
161
- return;
162
- }
163
- // Increment/Decrement (+ / -)
164
- const step = this.options.step || 1;
165
- if (char === '+' || char === '=') {
166
- this.increment(step);
167
- this.render(false);
168
- return;
169
- }
170
- if (char === '-' || char === '_') {
171
- this.increment(-step);
172
- this.render(false);
173
- return;
174
- }
175
- // Typing Numbers
176
- if (/^[0-9]$/.test(char)) {
177
- // Special case: if buffer is "0", replace it unless we are appending
178
- if (this.inputBuffer === '0') {
179
- this.inputBuffer = char;
180
- } else {
181
- this.inputBuffer += char;
182
- }
183
- this.render(false);
184
- return;
185
- }
186
- // Backspace
187
- if (char === '\u0008' || char === '\x7f') {
188
- if (this.inputBuffer.length > 0) {
189
- this.inputBuffer = this.inputBuffer.slice(0, -1);
190
- if (this.inputBuffer === '') this.inputBuffer = '0'; // default to 0
191
- }
192
- this.render(false);
193
- return;
194
- }
195
- }
196
- constructor(options){
197
- super(options), _define_property(this, "values", void 0), _define_property(this, "focus", 'top'), _define_property(this, "inputBuffer", '');
198
- const initial = options.initial;
199
- if (typeof initial === 'number') {
200
- this.values = {
201
- top: initial,
202
- right: initial,
203
- bottom: initial,
204
- left: initial
205
- };
206
- } else if (typeof initial === 'object') {
207
- this.values = {
208
- top: initial.top ?? 0,
209
- right: initial.right ?? 0,
210
- bottom: initial.bottom ?? 0,
211
- left: initial.left ?? 0
212
- };
213
- } else {
214
- this.values = {
215
- top: 0,
216
- right: 0,
217
- bottom: 0,
218
- left: 0
219
- };
220
- }
221
- this.inputBuffer = this.values.top.toString();
222
- }
223
- };
224
-
225
- //# sourceMappingURL=box.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/box.ts"],"sourcesContent":["import { Prompt } from '../base';\nimport { BoxOptions, MouseEvent } from '../types';\nimport { ANSI } from '../ansi';\nimport { theme } from '../theme';\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\ninterface BoxValues {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport class BoxPrompt extends Prompt<BoxValues, BoxOptions> {\n private values: BoxValues;\n private focus: Side = 'top';\n private inputBuffer: string = '';\n\n constructor(options: BoxOptions) {\n super(options);\n\n const initial: any = options.initial;\n if (typeof initial === 'number') {\n this.values = { top: initial, right: initial, bottom: initial, left: initial };\n } else if (typeof initial === 'object') {\n this.values = {\n top: initial.top ?? 0,\n right: initial.right ?? 0,\n bottom: initial.bottom ?? 0,\n left: initial.left ?? 0\n };\n } else {\n this.values = { top: 0, right: 0, bottom: 0, left: 0 };\n }\n\n this.inputBuffer = this.values.top.toString();\n }\n\n private commitBuffer() {\n let val = parseInt(this.inputBuffer, 10);\n if (isNaN(val)) val = 0;\n\n // Apply constraints\n if (this.options.min !== undefined && val < this.options.min) val = this.options.min;\n if (this.options.max !== undefined && val > this.options.max) val = this.options.max;\n\n this.values[this.focus] = val;\n this.inputBuffer = val.toString(); // Normalize buffer\n }\n\n private changeFocus(newFocus: Side) {\n this.commitBuffer(); // Save current\n this.focus = newFocus;\n this.inputBuffer = this.values[newFocus].toString();\n }\n\n private increment(amount: number) {\n let val = parseInt(this.inputBuffer, 10);\n if (isNaN(val)) val = 0;\n val += amount;\n\n if (this.options.min !== undefined && val < this.options.min) val = this.options.min;\n if (this.options.max !== undefined && val > this.options.max) val = this.options.max;\n\n this.inputBuffer = val.toString();\n }\n\n protected render(_firstRender: boolean) {\n const title = `${theme.success}? ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} (Arrows to navigate, Numbers to edit)`;\n\n // Format value function\n const formatVal = (side: Side) => {\n const isFocused = this.focus === side;\n const text = isFocused ? this.inputBuffer : this.values[side].toString();\n\n if (isFocused) {\n return `${ANSI.FG_CYAN}${ANSI.BOLD}[ ${text} ]${ANSI.RESET}`;\n }\n return ` ${text} `;\n };\n\n const vTop = formatVal('top');\n const vRight = formatVal('right');\n const vBottom = formatVal('bottom');\n const vLeft = formatVal('left');\n\n // Layout\n // [ Top ]\n // [ Left ] [ Right ]\n // [ Bottom ]\n\n // We need to pad to align them nicely. \n // Simple manual padding for MVP.\n\n // Calculate center padding based on longest string? \n // Keep it simple.\n\n let output = title + '\\n\\n';\n\n // Top Row (Centered)\n output += ` ${vTop}\\n`;\n\n // Middle Row\n output += ` ${vLeft} ${vRight}\\n`;\n\n // Bottom Row\n output += ` ${vBottom}\\n`;\n\n this.renderFrame(output);\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.name === 'mouse' && event.action === 'scroll') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n\n if (event.scroll === 'down') {\n // Next (Down usually means going forward/down in list)\n this.changeFocus(order[(idx + 1) % 4]);\n } else if (event.scroll === 'up') {\n // Previous\n this.changeFocus(order[(idx + 3) % 4]); // +3 is same as -1 in mod 4\n }\n this.render(false);\n }\n }\n\n protected handleInput(char: string, _key: Buffer) {\n // Enter -> Submit\n if (char === '\\r' || char === '\\n') {\n this.commitBuffer();\n this.submit(this.values);\n return;\n }\n\n // Navigation\n if (this.isUp(char)) {\n if (this.focus === 'bottom' || this.focus === 'left' || this.focus === 'right') {\n this.changeFocus('top');\n }\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (this.focus === 'top' || this.focus === 'left' || this.focus === 'right') {\n this.changeFocus('bottom');\n }\n this.render(false);\n return;\n }\n\n if (this.isLeft(char)) {\n if (this.focus === 'right' || this.focus === 'top' || this.focus === 'bottom') {\n this.changeFocus('left');\n }\n this.render(false);\n return;\n }\n\n if (this.isRight(char)) {\n if (this.focus === 'left' || this.focus === 'top' || this.focus === 'bottom') {\n this.changeFocus('right');\n }\n this.render(false);\n return;\n }\n\n // Tab Cycling\n if (char === '\\t') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n this.changeFocus(order[(idx + 1) % 4]);\n this.render(false);\n return;\n }\n\n // Shift+Tab Cycling (\\u001b[Z)\n if (char === '\\u001b[Z') {\n const order: Side[] = ['top', 'right', 'bottom', 'left'];\n const idx = order.indexOf(this.focus);\n this.changeFocus(order[(idx + 3) % 4]); // (idx - 1) % 4 handling negative\n this.render(false);\n return;\n }\n\n // Increment/Decrement (+ / -)\n const step = this.options.step || 1;\n if (char === '+' || char === '=') { // = is usually unshifted +\n this.increment(step);\n this.render(false);\n return;\n }\n if (char === '-' || char === '_') {\n this.increment(-step);\n this.render(false);\n return;\n }\n\n // Typing Numbers\n if (/^[0-9]$/.test(char)) {\n // Special case: if buffer is \"0\", replace it unless we are appending\n if (this.inputBuffer === '0') {\n this.inputBuffer = char;\n } else {\n this.inputBuffer += char;\n }\n this.render(false);\n return;\n }\n\n // Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n if (this.inputBuffer.length > 0) {\n this.inputBuffer = this.inputBuffer.slice(0, -1);\n if (this.inputBuffer === '') this.inputBuffer = '0'; // default to 0\n }\n this.render(false);\n return;\n }\n }\n}\n"],"names":["BoxPrompt","Prompt","commitBuffer","val","parseInt","inputBuffer","isNaN","options","min","undefined","max","values","focus","toString","changeFocus","newFocus","increment","amount","render","_firstRender","title","theme","success","ANSI","BOLD","message","RESET","formatVal","side","isFocused","text","FG_CYAN","vTop","vRight","vBottom","vLeft","output","renderFrame","handleMouse","event","name","action","order","idx","indexOf","scroll","handleInput","char","_key","submit","isUp","isDown","isLeft","isRight","step","test","length","slice","initial","top","right","bottom","left"],"mappings":"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"}
@@ -1,260 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "BreadcrumbSearchPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return BreadcrumbSearchPrompt;
9
- }
10
- });
11
- const _breadcrumb = require("./breadcrumb");
12
- const _theme = require("../theme");
13
- const _ansi = require("../ansi");
14
- const _symbols = require("../symbols");
15
- const _utils = require("../utils");
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 BreadcrumbSearchPrompt = class BreadcrumbSearchPrompt extends _breadcrumb.BreadcrumbPrompt {
72
- handleInput(char, key) {
73
- if (this.isLoading) return;
74
- // Toggle Search Mode or Type
75
- if (!this.isSearchMode) {
76
- // If typing a regular char, enter search mode
77
- if (char.length === 1 && !/^[\x00-\x1F]/.test(char) && !char.startsWith('\x1b')) {
78
- this.isSearchMode = true;
79
- this.searchBuffer = char;
80
- this.updateSearchResults();
81
- this.render(false);
82
- return;
83
- }
84
- // Otherwise use default navigation
85
- super.handleInput(char, key);
86
- return;
87
- }
88
- // --- In Search Mode ---
89
- // Esc: Exit search mode
90
- if (char === '\x1b') {
91
- this.isSearchMode = false;
92
- this.searchBuffer = '';
93
- this.render(false);
94
- return;
95
- }
96
- // Backspace
97
- if (char === '\u0008' || char === '\x7f') {
98
- if (this.searchBuffer.length > 0) {
99
- this.searchBuffer = this.searchBuffer.slice(0, -1);
100
- if (this.searchBuffer.length === 0) {
101
- this.isSearchMode = false;
102
- } else {
103
- this.updateSearchResults();
104
- }
105
- this.render(false);
106
- } else {
107
- this.isSearchMode = false;
108
- this.render(false);
109
- }
110
- return;
111
- }
112
- // Enter
113
- if (char === '\r' || char === '\n') {
114
- if (this.filteredEntries.length === 0) return;
115
- const entry = this.filteredEntries[this.searchCursor];
116
- if (entry.isDirectory) {
117
- // Drill down
118
- // Hack: Find index in currentEntries
119
- const realIndex = this.currentEntries.findIndex((e)=>e.name === entry.name);
120
- if (realIndex !== -1) {
121
- this.cursor = realIndex;
122
- this.drillDown().then(()=>{
123
- this.isSearchMode = false;
124
- this.searchBuffer = '';
125
- });
126
- }
127
- } else {
128
- const fullPath = _path.join(this.currentPath, entry.name);
129
- this.submit(fullPath);
130
- }
131
- return;
132
- }
133
- // Navigation (Up/Down)
134
- if (this.isUp(char)) {
135
- if (this.searchCursor > 0) {
136
- this.searchCursor--;
137
- } else {
138
- this.searchCursor = Math.max(0, this.filteredEntries.length - 1);
139
- }
140
- this.render(false);
141
- return;
142
- }
143
- if (this.isDown(char)) {
144
- if (this.searchCursor < this.filteredEntries.length - 1) {
145
- this.searchCursor++;
146
- } else {
147
- this.searchCursor = 0;
148
- }
149
- this.render(false);
150
- return;
151
- }
152
- // Typing
153
- if (char.length === 1 && !/^[\x00-\x1F]/.test(char) && !char.startsWith('\x1b')) {
154
- this.searchBuffer += char;
155
- this.updateSearchResults();
156
- this.render(false);
157
- }
158
- }
159
- updateSearchResults() {
160
- if (!this.searchBuffer) {
161
- this.filteredEntries = [];
162
- return;
163
- }
164
- const results = this.currentEntries.map((entry)=>{
165
- const match = (0, _utils.fuzzyMatch)(this.searchBuffer, entry.name);
166
- return {
167
- entry,
168
- match
169
- };
170
- }).filter((item)=>item.match !== null).sort((a, b)=>b.match.score - a.match.score);
171
- this.filteredEntries = results.map((r)=>({
172
- ...r.entry,
173
- _match: r.match
174
- }));
175
- this.searchCursor = 0;
176
- }
177
- handleMouse(event) {
178
- if (!this.isSearchMode) {
179
- super.handleMouse(event);
180
- return;
181
- }
182
- if (this.isLoading) return;
183
- if (event.action === 'scroll') {
184
- if (event.scroll === 'up') {
185
- if (this.searchCursor > 0) {
186
- this.searchCursor--;
187
- this.render(false);
188
- }
189
- } else if (event.scroll === 'down') {
190
- if (this.searchCursor < this.filteredEntries.length - 1) {
191
- this.searchCursor++;
192
- this.render(false);
193
- }
194
- }
195
- }
196
- }
197
- render(firstRender) {
198
- if (!this.isSearchMode) {
199
- super.render(firstRender);
200
- return;
201
- }
202
- // Render Search Overlay
203
- let output = '';
204
- // Breadcrumb + Search Bar
205
- const relative = _path.relative(this.root, this.currentPath);
206
- // ... (Truncation logic omitted for brevity, simplified version)
207
- const pathStr = relative || _path.basename(this.root);
208
- const prefix = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} `;
209
- output += `${prefix}${_theme.theme.muted}${pathStr}/${_ansi.ANSI.RESET} ${_ansi.ANSI.FG_YELLOW}(Search: ${this.searchBuffer})${_ansi.ANSI.RESET}\n`;
210
- if (this.filteredEntries.length === 0) {
211
- output += ` ${_theme.theme.muted}No results found${_ansi.ANSI.RESET}`;
212
- } else {
213
- const pageSize = this.pageSize;
214
- let start = 0;
215
- const half = Math.floor(pageSize / 2);
216
- start = Math.max(0, this.searchCursor - half);
217
- if (start + pageSize > this.filteredEntries.length) {
218
- start = Math.max(0, this.filteredEntries.length - pageSize);
219
- }
220
- const visible = this.filteredEntries.slice(start, start + pageSize);
221
- visible.forEach((entry, index)=>{
222
- const actualIndex = start + index;
223
- const isSelected = actualIndex === this.searchCursor;
224
- const icon = entry.isDirectory ? '📂' : '📄';
225
- // Highlight match
226
- const title = this.highlight(entry.name, entry._match.indices, isSelected);
227
- let line = '';
228
- if (isSelected) {
229
- line += `${_theme.theme.main}${_symbols.symbols.pointer} ${icon} ${title}${_ansi.ANSI.RESET}`;
230
- } else {
231
- line += ` ${icon} ${title}`;
232
- }
233
- if (index > 0 || index === 0) output += line;
234
- if (index < visible.length - 1) output += '\n';
235
- });
236
- }
237
- this.renderFrame(output);
238
- }
239
- highlight(text, indices, isSelected) {
240
- let output = '';
241
- const indexSet = new Set(indices);
242
- for(let i = 0; i < text.length; i++){
243
- if (indexSet.has(i)) {
244
- if (isSelected) {
245
- output += `${_ansi.ANSI.BOLD}${_ansi.ANSI.FG_WHITE}${text[i]}${_theme.theme.main}`;
246
- } else {
247
- output += `${_ansi.ANSI.BOLD}${_ansi.ANSI.FG_CYAN}${text[i]}${_ansi.ANSI.RESET}`;
248
- }
249
- } else {
250
- output += text[i];
251
- }
252
- }
253
- return output;
254
- }
255
- constructor(options){
256
- super(options), _define_property(this, "isSearchMode", false), _define_property(this, "searchBuffer", ''), _define_property(this, "filteredEntries", []), _define_property(this, "searchCursor", 0);
257
- }
258
- };
259
-
260
- //# sourceMappingURL=breadcrumb-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/breadcrumb-search.ts"],"sourcesContent":["import { BreadcrumbPrompt } from './breadcrumb';\nimport { BreadcrumbOptions, MouseEvent } from '../types';\nimport { theme } from '../theme';\nimport { ANSI } from '../ansi';\nimport { symbols } from '../symbols';\nimport { fuzzyMatch } from '../utils';\nimport * as path from 'path';\n\nexport class BreadcrumbSearchPrompt extends BreadcrumbPrompt {\n private isSearchMode: boolean = false;\n private searchBuffer: string = '';\n private filteredEntries: any[] = [];\n private searchCursor: number = 0;\n\n constructor(options: BreadcrumbOptions) {\n super(options);\n }\n\n protected handleInput(char: string, key: Buffer) {\n if (this.isLoading) return;\n\n // Toggle Search Mode or Type\n if (!this.isSearchMode) {\n // If typing a regular char, enter search mode\n if (char.length === 1 && !/^[\\x00-\\x1F]/.test(char) && !char.startsWith('\\x1b')) {\n this.isSearchMode = true;\n this.searchBuffer = char;\n this.updateSearchResults();\n this.render(false);\n return;\n }\n // Otherwise use default navigation\n super.handleInput(char, key);\n return;\n }\n\n // --- In Search Mode ---\n\n // Esc: Exit search mode\n if (char === '\\x1b') {\n this.isSearchMode = false;\n this.searchBuffer = '';\n this.render(false);\n return;\n }\n\n // Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n if (this.searchBuffer.length > 0) {\n this.searchBuffer = this.searchBuffer.slice(0, -1);\n if (this.searchBuffer.length === 0) {\n this.isSearchMode = false;\n } else {\n this.updateSearchResults();\n }\n this.render(false);\n } else {\n this.isSearchMode = false;\n this.render(false);\n }\n return;\n }\n\n // Enter\n if (char === '\\r' || char === '\\n') {\n if (this.filteredEntries.length === 0) return;\n\n const entry = this.filteredEntries[this.searchCursor];\n if (entry.isDirectory) {\n // Drill down\n\n // Hack: Find index in currentEntries\n const realIndex = this.currentEntries.findIndex(e => e.name === entry.name);\n if (realIndex !== -1) {\n this.cursor = realIndex;\n this.drillDown().then(() => {\n this.isSearchMode = false;\n this.searchBuffer = '';\n });\n }\n } else {\n const fullPath = path.join(this.currentPath, entry.name);\n this.submit(fullPath);\n }\n return;\n }\n\n // Navigation (Up/Down)\n if (this.isUp(char)) {\n if (this.searchCursor > 0) {\n this.searchCursor--;\n } else {\n this.searchCursor = Math.max(0, this.filteredEntries.length - 1);\n }\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (this.searchCursor < this.filteredEntries.length - 1) {\n this.searchCursor++;\n } else {\n this.searchCursor = 0;\n }\n this.render(false);\n return;\n }\n\n // Typing\n if (char.length === 1 && !/^[\\x00-\\x1F]/.test(char) && !char.startsWith('\\x1b')) {\n this.searchBuffer += char;\n this.updateSearchResults();\n this.render(false);\n }\n }\n\n private updateSearchResults() {\n if (!this.searchBuffer) {\n this.filteredEntries = [];\n return;\n }\n\n const results = this.currentEntries.map(entry => {\n const match = fuzzyMatch(this.searchBuffer, entry.name);\n return { entry, match };\n }).filter(item => item.match !== null)\n .sort((a, b) => b.match!.score - a.match!.score);\n\n this.filteredEntries = results.map(r => ({\n ...r.entry,\n _match: r.match\n }));\n\n this.searchCursor = 0;\n }\n\n protected handleMouse(event: MouseEvent): void {\n if (!this.isSearchMode) {\n super.handleMouse(event);\n return;\n }\n\n if (this.isLoading) return;\n\n if (event.action === 'scroll') {\n if (event.scroll === 'up') {\n if (this.searchCursor > 0) {\n this.searchCursor--;\n this.render(false);\n }\n } else if (event.scroll === 'down') {\n if (this.searchCursor < this.filteredEntries.length - 1) {\n this.searchCursor++;\n this.render(false);\n }\n }\n }\n }\n\n protected render(firstRender: boolean) {\n if (!this.isSearchMode) {\n super.render(firstRender);\n return;\n }\n\n // Render Search Overlay\n let output = '';\n\n // Breadcrumb + Search Bar\n const relative = path.relative(this.root, this.currentPath);\n // ... (Truncation logic omitted for brevity, simplified version)\n const pathStr = relative || path.basename(this.root);\n\n const prefix = `${theme.success}?${ANSI.RESET} ${theme.title}${this.options.message}${ANSI.RESET} `;\n output += `${prefix}${theme.muted}${pathStr}/${ANSI.RESET} ${ANSI.FG_YELLOW}(Search: ${this.searchBuffer})${ANSI.RESET}\\n`;\n\n if (this.filteredEntries.length === 0) {\n output += ` ${theme.muted}No results found${ANSI.RESET}`;\n } else {\n const pageSize = this.pageSize;\n let start = 0;\n\n const half = Math.floor(pageSize / 2);\n start = Math.max(0, this.searchCursor - half);\n if (start + pageSize > this.filteredEntries.length) {\n start = Math.max(0, this.filteredEntries.length - pageSize);\n }\n\n const visible = this.filteredEntries.slice(start, start + pageSize);\n\n visible.forEach((entry, index) => {\n const actualIndex = start + index;\n const isSelected = actualIndex === this.searchCursor;\n const icon = entry.isDirectory ? '📂' : '📄';\n\n // Highlight match\n const title = this.highlight(entry.name, entry._match.indices, isSelected);\n\n let line = '';\n if (isSelected) {\n line += `${theme.main}${symbols.pointer} ${icon} ${title}${ANSI.RESET}`;\n } else {\n line += ` ${icon} ${title}`;\n }\n\n if (index > 0 || index === 0) output += line;\n if (index < visible.length - 1) output += '\\n';\n });\n }\n\n this.renderFrame(output);\n }\n\n private highlight(text: string, indices: number[], isSelected: boolean): string {\n let output = '';\n const indexSet = new Set(indices);\n for (let i = 0; i < text.length; i++) {\n if (indexSet.has(i)) {\n if (isSelected) {\n output += `${ANSI.BOLD}${ANSI.FG_WHITE}${text[i]}${theme.main}`;\n } else {\n output += `${ANSI.BOLD}${ANSI.FG_CYAN}${text[i]}${ANSI.RESET}`;\n }\n } else {\n output += text[i];\n }\n }\n return output;\n }\n}\n"],"names":["BreadcrumbSearchPrompt","BreadcrumbPrompt","handleInput","char","key","isLoading","isSearchMode","length","test","startsWith","searchBuffer","updateSearchResults","render","slice","filteredEntries","entry","searchCursor","isDirectory","realIndex","currentEntries","findIndex","e","name","cursor","drillDown","then","fullPath","path","join","currentPath","submit","isUp","Math","max","isDown","results","map","match","fuzzyMatch","filter","item","sort","a","b","score","r","_match","handleMouse","event","action","scroll","firstRender","output","relative","root","pathStr","basename","prefix","theme","success","ANSI","RESET","title","options","message","muted","FG_YELLOW","pageSize","start","half","floor","visible","forEach","index","actualIndex","isSelected","icon","highlight","indices","line","main","symbols","pointer","renderFrame","text","indexSet","Set","i","has","BOLD","FG_WHITE","FG_CYAN"],"mappings":"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"}