mepcli 1.3.2 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +11 -2
  2. package/dist/{ansi.js → src/ansi.js} +17 -9
  3. package/dist/src/ansi.js.map +1 -0
  4. package/dist/{base.js → src/base.js} +82 -70
  5. package/dist/src/base.js.map +1 -0
  6. package/dist/{core.js → src/core.js} +266 -320
  7. package/dist/src/core.js.map +1 -0
  8. package/dist/src/data/countries.js +569 -0
  9. package/dist/src/data/countries.js.map +1 -0
  10. package/dist/src/data/licenses.js +480 -0
  11. package/dist/src/data/licenses.js.map +1 -0
  12. package/dist/{highlight.js → src/highlight.js} +77 -69
  13. package/dist/src/highlight.js.map +1 -0
  14. package/dist/src/index.js +66 -0
  15. package/dist/src/index.js.map +1 -0
  16. package/dist/{input.js → src/input.js} +47 -41
  17. package/dist/src/input.js.map +1 -0
  18. package/dist/src/pipeline.js +273 -0
  19. package/dist/src/pipeline.js.map +1 -0
  20. package/dist/{prompts → src/prompts}/autocomplete.js +58 -57
  21. package/dist/src/prompts/autocomplete.js.map +1 -0
  22. package/dist/{prompts → src/prompts}/box.js +86 -53
  23. package/dist/src/prompts/box.js.map +1 -0
  24. package/dist/{prompts → src/prompts}/breadcrumb-search.js +110 -98
  25. package/dist/src/prompts/breadcrumb-search.js.map +1 -0
  26. package/dist/{prompts → src/prompts}/breadcrumb.js +126 -121
  27. package/dist/src/prompts/breadcrumb.js.map +1 -0
  28. package/dist/{prompts → src/prompts}/byte.js +69 -52
  29. package/dist/src/prompts/byte.js.map +1 -0
  30. package/dist/{prompts → src/prompts}/calculator.js +79 -56
  31. package/dist/src/prompts/calculator.js.map +1 -0
  32. package/dist/{prompts → src/prompts}/calendar.js +167 -127
  33. package/dist/src/prompts/calendar.js.map +1 -0
  34. package/dist/{prompts → src/prompts}/checkbox.js +53 -49
  35. package/dist/src/prompts/checkbox.js.map +1 -0
  36. package/dist/{prompts → src/prompts}/code.js +88 -76
  37. package/dist/src/prompts/code.js.map +1 -0
  38. package/dist/{prompts → src/prompts}/color.js +68 -50
  39. package/dist/src/prompts/color.js.map +1 -0
  40. package/dist/{prompts → src/prompts}/confirm.js +22 -15
  41. package/dist/src/prompts/confirm.js.map +1 -0
  42. package/dist/{prompts → src/prompts}/connection-string.js +59 -36
  43. package/dist/src/prompts/connection-string.js.map +1 -0
  44. package/dist/{prompts → src/prompts}/cron.js +90 -59
  45. package/dist/src/prompts/cron.js.map +1 -0
  46. package/dist/src/prompts/curl-utils.js +71 -0
  47. package/dist/src/prompts/curl-utils.js.map +1 -0
  48. package/dist/{prompts → src/prompts}/curl.js +153 -132
  49. package/dist/src/prompts/curl.js.map +1 -0
  50. package/dist/{prompts → src/prompts}/data-inspector.js +96 -91
  51. package/dist/src/prompts/data-inspector.js.map +1 -0
  52. package/dist/{prompts → src/prompts}/date.js +64 -57
  53. package/dist/src/prompts/date.js.map +1 -0
  54. package/dist/{prompts → src/prompts}/dependency.js +84 -80
  55. package/dist/src/prompts/dependency.js.map +1 -0
  56. package/dist/{prompts → src/prompts}/dial.js +49 -35
  57. package/dist/src/prompts/dial.js.map +1 -0
  58. package/dist/src/prompts/diff.js +118 -0
  59. package/dist/src/prompts/diff.js.map +1 -0
  60. package/dist/{prompts → src/prompts}/draw.js +83 -80
  61. package/dist/src/prompts/draw.js.map +1 -0
  62. package/dist/src/prompts/editor.js +234 -0
  63. package/dist/src/prompts/editor.js.map +1 -0
  64. package/dist/{prompts → src/prompts}/emoji.js +80 -82
  65. package/dist/src/prompts/emoji.js.map +1 -0
  66. package/dist/{prompts → src/prompts}/exec.js +60 -46
  67. package/dist/src/prompts/exec.js.map +1 -0
  68. package/dist/src/prompts/file.js +217 -0
  69. package/dist/src/prompts/file.js.map +1 -0
  70. package/dist/{prompts → src/prompts}/form.js +63 -54
  71. package/dist/src/prompts/form.js.map +1 -0
  72. package/dist/{prompts → src/prompts}/fuzzy-multi-column.js +65 -53
  73. package/dist/src/prompts/fuzzy-multi-column.js.map +1 -0
  74. package/dist/{prompts → src/prompts}/fuzzy.js +66 -55
  75. package/dist/src/prompts/fuzzy.js.map +1 -0
  76. package/dist/src/prompts/gauge.js +137 -0
  77. package/dist/src/prompts/gauge.js.map +1 -0
  78. package/dist/{prompts → src/prompts}/grid.js +70 -57
  79. package/dist/src/prompts/grid.js.map +1 -0
  80. package/dist/{prompts → src/prompts}/heatmap.js +70 -64
  81. package/dist/src/prompts/heatmap.js.map +1 -0
  82. package/dist/{prompts → src/prompts}/ip.js +56 -36
  83. package/dist/src/prompts/ip.js.map +1 -0
  84. package/dist/{prompts → src/prompts}/kanban.js +63 -58
  85. package/dist/src/prompts/kanban.js.map +1 -0
  86. package/dist/src/prompts/keypress.js +54 -0
  87. package/dist/src/prompts/keypress.js.map +1 -0
  88. package/dist/src/prompts/license.js +144 -0
  89. package/dist/src/prompts/license.js.map +1 -0
  90. package/dist/{prompts → src/prompts}/list.js +46 -31
  91. package/dist/src/prompts/list.js.map +1 -0
  92. package/dist/{prompts → src/prompts}/map.js +93 -77
  93. package/dist/src/prompts/map.js.map +1 -0
  94. package/dist/{prompts → src/prompts}/match.js +91 -95
  95. package/dist/src/prompts/match.js.map +1 -0
  96. package/dist/{prompts → src/prompts}/miller.js +74 -67
  97. package/dist/src/prompts/miller.js.map +1 -0
  98. package/dist/{prompts → src/prompts}/multi-column-select.js +54 -44
  99. package/dist/src/prompts/multi-column-select.js.map +1 -0
  100. package/dist/{prompts → src/prompts}/multi-range.js +70 -52
  101. package/dist/src/prompts/multi-range.js.map +1 -0
  102. package/dist/{prompts → src/prompts}/multi-select.js +67 -58
  103. package/dist/src/prompts/multi-select.js.map +1 -0
  104. package/dist/{prompts → src/prompts}/number.js +51 -39
  105. package/dist/src/prompts/number.js.map +1 -0
  106. package/dist/{prompts → src/prompts}/otp.js +43 -27
  107. package/dist/src/prompts/otp.js.map +1 -0
  108. package/dist/{prompts → src/prompts}/pattern.js +74 -71
  109. package/dist/src/prompts/pattern.js.map +1 -0
  110. package/dist/{prompts → src/prompts}/phone.js +107 -118
  111. package/dist/src/prompts/phone.js.map +1 -0
  112. package/dist/src/prompts/quiz-select.js +114 -0
  113. package/dist/src/prompts/quiz-select.js.map +1 -0
  114. package/dist/src/prompts/quiz-text.js +98 -0
  115. package/dist/src/prompts/quiz-text.js.map +1 -0
  116. package/dist/{prompts → src/prompts}/range.js +85 -61
  117. package/dist/src/prompts/range.js.map +1 -0
  118. package/dist/{prompts → src/prompts}/rating.js +29 -24
  119. package/dist/src/prompts/rating.js.map +1 -0
  120. package/dist/{prompts → src/prompts}/regex.js +50 -36
  121. package/dist/src/prompts/regex.js.map +1 -0
  122. package/dist/{prompts → src/prompts}/region.js +62 -56
  123. package/dist/src/prompts/region.js.map +1 -0
  124. package/dist/{prompts → src/prompts}/schedule.js +82 -75
  125. package/dist/src/prompts/schedule.js.map +1 -0
  126. package/dist/{prompts → src/prompts}/scroll.js +61 -58
  127. package/dist/src/prompts/scroll.js.map +1 -0
  128. package/dist/src/prompts/seat.js +164 -0
  129. package/dist/src/prompts/seat.js.map +1 -0
  130. package/dist/{prompts → src/prompts}/select-range.js +58 -46
  131. package/dist/src/prompts/select-range.js.map +1 -0
  132. package/dist/{prompts → src/prompts}/select.js +65 -66
  133. package/dist/src/prompts/select.js.map +1 -0
  134. package/dist/{prompts → src/prompts}/semver.js +24 -13
  135. package/dist/src/prompts/semver.js.map +1 -0
  136. package/dist/src/prompts/shortcut.js +133 -0
  137. package/dist/src/prompts/shortcut.js.map +1 -0
  138. package/dist/{prompts → src/prompts}/slider.js +28 -23
  139. package/dist/src/prompts/slider.js.map +1 -0
  140. package/dist/src/prompts/slot.js +117 -0
  141. package/dist/src/prompts/slot.js.map +1 -0
  142. package/dist/{prompts → src/prompts}/snippet.js +82 -61
  143. package/dist/src/prompts/snippet.js.map +1 -0
  144. package/dist/{prompts → src/prompts}/sort-grid.js +64 -59
  145. package/dist/src/prompts/sort-grid.js.map +1 -0
  146. package/dist/{prompts → src/prompts}/sort.js +59 -49
  147. package/dist/src/prompts/sort.js.map +1 -0
  148. package/dist/src/prompts/spam.js +80 -0
  149. package/dist/src/prompts/spam.js.map +1 -0
  150. package/dist/{prompts → src/prompts}/spreadsheet.js +71 -70
  151. package/dist/src/prompts/spreadsheet.js.map +1 -0
  152. package/dist/{prompts → src/prompts}/table.js +52 -38
  153. package/dist/src/prompts/table.js.map +1 -0
  154. package/dist/{prompts → src/prompts}/text.js +74 -70
  155. package/dist/src/prompts/text.js.map +1 -0
  156. package/dist/{prompts → src/prompts}/time.js +105 -96
  157. package/dist/src/prompts/time.js.map +1 -0
  158. package/dist/src/prompts/toggle.js +53 -0
  159. package/dist/src/prompts/toggle.js.map +1 -0
  160. package/dist/{prompts → src/prompts}/transfer.js +71 -67
  161. package/dist/src/prompts/transfer.js.map +1 -0
  162. package/dist/{prompts → src/prompts}/tree-select.js +83 -86
  163. package/dist/src/prompts/tree-select.js.map +1 -0
  164. package/dist/{prompts → src/prompts}/tree.js +69 -67
  165. package/dist/src/prompts/tree.js.map +1 -0
  166. package/dist/src/prompts/wait.js +79 -0
  167. package/dist/src/prompts/wait.js.map +1 -0
  168. package/dist/src/spinner.js +105 -0
  169. package/dist/src/spinner.js.map +1 -0
  170. package/dist/{symbols.js → src/symbols.js} +32 -7
  171. package/dist/src/symbols.js.map +1 -0
  172. package/dist/{tasks.js → src/tasks.js} +104 -79
  173. package/dist/src/tasks.js.map +1 -0
  174. package/dist/src/theme.js +29 -0
  175. package/dist/src/theme.js.map +1 -0
  176. package/dist/src/types.js +8 -0
  177. package/dist/src/types.js.map +1 -0
  178. package/dist/{utils.js → src/utils.js} +196 -152
  179. package/dist/src/utils.js.map +1 -0
  180. package/package.json +16 -13
  181. package/dist/ansi.d.ts +0 -36
  182. package/dist/base.d.ts +0 -60
  183. package/dist/core.d.ts +0 -1072
  184. package/dist/data/countries.d.ts +0 -2
  185. package/dist/data/countries.js +0 -105
  186. package/dist/data/licenses.d.ts +0 -2
  187. package/dist/data/licenses.js +0 -109
  188. package/dist/highlight.d.ts +0 -7
  189. package/dist/index.d.ts +0 -48
  190. package/dist/index.js +0 -64
  191. package/dist/input.d.ts +0 -14
  192. package/dist/pipeline.d.ts +0 -39
  193. package/dist/pipeline.js +0 -54
  194. package/dist/prompts/autocomplete.d.ts +0 -22
  195. package/dist/prompts/box.d.ts +0 -21
  196. package/dist/prompts/breadcrumb-search.d.ts +0 -14
  197. package/dist/prompts/breadcrumb.d.ts +0 -32
  198. package/dist/prompts/byte.d.ts +0 -13
  199. package/dist/prompts/calculator.d.ts +0 -17
  200. package/dist/prompts/calendar.d.ts +0 -33
  201. package/dist/prompts/checkbox.d.ts +0 -13
  202. package/dist/prompts/code.d.ts +0 -19
  203. package/dist/prompts/color.d.ts +0 -14
  204. package/dist/prompts/confirm.d.ts +0 -8
  205. package/dist/prompts/connection-string.d.ts +0 -18
  206. package/dist/prompts/cron.d.ts +0 -13
  207. package/dist/prompts/curl-utils.d.ts +0 -25
  208. package/dist/prompts/curl-utils.js +0 -41
  209. package/dist/prompts/curl.d.ts +0 -41
  210. package/dist/prompts/data-inspector.d.ts +0 -22
  211. package/dist/prompts/date.d.ts +0 -12
  212. package/dist/prompts/dependency.d.ts +0 -16
  213. package/dist/prompts/dial.d.ts +0 -10
  214. package/dist/prompts/diff.d.ts +0 -10
  215. package/dist/prompts/diff.js +0 -101
  216. package/dist/prompts/draw.d.ts +0 -20
  217. package/dist/prompts/editor.d.ts +0 -14
  218. package/dist/prompts/editor.js +0 -203
  219. package/dist/prompts/emoji.d.ts +0 -18
  220. package/dist/prompts/exec.d.ts +0 -17
  221. package/dist/prompts/file.d.ts +0 -21
  222. package/dist/prompts/file.js +0 -210
  223. package/dist/prompts/form.d.ts +0 -18
  224. package/dist/prompts/fuzzy-multi-column.d.ts +0 -12
  225. package/dist/prompts/fuzzy.d.ts +0 -12
  226. package/dist/prompts/gauge.d.ts +0 -21
  227. package/dist/prompts/gauge.js +0 -130
  228. package/dist/prompts/grid.d.ts +0 -14
  229. package/dist/prompts/heatmap.d.ts +0 -13
  230. package/dist/prompts/ip.d.ts +0 -11
  231. package/dist/prompts/kanban.d.ts +0 -17
  232. package/dist/prompts/keypress.d.ts +0 -7
  233. package/dist/prompts/keypress.js +0 -55
  234. package/dist/prompts/license.d.ts +0 -9
  235. package/dist/prompts/license.js +0 -105
  236. package/dist/prompts/list.d.ts +0 -9
  237. package/dist/prompts/map.d.ts +0 -17
  238. package/dist/prompts/match.d.ts +0 -19
  239. package/dist/prompts/miller.d.ts +0 -15
  240. package/dist/prompts/multi-column-select.d.ts +0 -10
  241. package/dist/prompts/multi-range.d.ts +0 -9
  242. package/dist/prompts/multi-select.d.ts +0 -15
  243. package/dist/prompts/number.d.ts +0 -11
  244. package/dist/prompts/otp.d.ts +0 -10
  245. package/dist/prompts/pattern.d.ts +0 -22
  246. package/dist/prompts/phone.d.ts +0 -41
  247. package/dist/prompts/quiz-select.d.ts +0 -10
  248. package/dist/prompts/quiz-select.js +0 -104
  249. package/dist/prompts/quiz-text.d.ts +0 -11
  250. package/dist/prompts/quiz-text.js +0 -82
  251. package/dist/prompts/range.d.ts +0 -9
  252. package/dist/prompts/rating.d.ts +0 -8
  253. package/dist/prompts/regex.d.ts +0 -13
  254. package/dist/prompts/region.d.ts +0 -11
  255. package/dist/prompts/schedule.d.ts +0 -20
  256. package/dist/prompts/scroll.d.ts +0 -13
  257. package/dist/prompts/seat.d.ts +0 -17
  258. package/dist/prompts/seat.js +0 -165
  259. package/dist/prompts/select-range.d.ts +0 -8
  260. package/dist/prompts/select.d.ts +0 -15
  261. package/dist/prompts/semver.d.ts +0 -6
  262. package/dist/prompts/shortcut.d.ts +0 -9
  263. package/dist/prompts/shortcut.js +0 -135
  264. package/dist/prompts/slider.d.ts +0 -8
  265. package/dist/prompts/slot.d.ts +0 -16
  266. package/dist/prompts/slot.js +0 -107
  267. package/dist/prompts/snippet.d.ts +0 -19
  268. package/dist/prompts/sort-grid.d.ts +0 -16
  269. package/dist/prompts/sort.d.ts +0 -14
  270. package/dist/prompts/spam.d.ts +0 -17
  271. package/dist/prompts/spam.js +0 -62
  272. package/dist/prompts/spreadsheet.d.ts +0 -21
  273. package/dist/prompts/table.d.ts +0 -14
  274. package/dist/prompts/text.d.ts +0 -17
  275. package/dist/prompts/time.d.ts +0 -12
  276. package/dist/prompts/toggle.d.ts +0 -8
  277. package/dist/prompts/toggle.js +0 -47
  278. package/dist/prompts/transfer.d.ts +0 -18
  279. package/dist/prompts/tree-select.d.ts +0 -31
  280. package/dist/prompts/tree.d.ts +0 -20
  281. package/dist/prompts/wait.d.ts +0 -18
  282. package/dist/prompts/wait.js +0 -62
  283. package/dist/spinner.d.ts +0 -33
  284. package/dist/spinner.js +0 -89
  285. package/dist/symbols.d.ts +0 -33
  286. package/dist/tasks.d.ts +0 -57
  287. package/dist/theme.d.ts +0 -2
  288. package/dist/theme.js +0 -20
  289. package/dist/types.d.ts +0 -503
  290. package/dist/types.js +0 -5
  291. package/dist/utils.d.ts +0 -81
@@ -1,40 +1,36 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BoxPrompt = void 0;
4
- const base_1 = require("../base");
5
- const ansi_1 = require("../ansi");
6
- const theme_1 = require("../theme");
7
- class BoxPrompt extends base_1.Prompt {
8
- constructor(options) {
9
- super(options);
10
- this.focus = 'top';
11
- this.inputBuffer = '';
12
- const initial = options.initial;
13
- if (typeof initial === 'number') {
14
- this.values = { top: initial, right: initial, bottom: initial, left: initial };
15
- }
16
- else if (typeof initial === 'object') {
17
- this.values = {
18
- top: initial.top ?? 0,
19
- right: initial.right ?? 0,
20
- bottom: initial.bottom ?? 0,
21
- left: initial.left ?? 0
22
- };
23
- }
24
- else {
25
- this.values = { top: 0, right: 0, bottom: 0, left: 0 };
26
- }
27
- this.inputBuffer = this.values.top.toString();
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "BoxPrompt", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return BoxPrompt;
28
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 {
29
28
  commitBuffer() {
30
29
  let val = parseInt(this.inputBuffer, 10);
31
- if (isNaN(val))
32
- val = 0;
30
+ if (isNaN(val)) val = 0;
33
31
  // Apply constraints
34
- if (this.options.min !== undefined && val < this.options.min)
35
- val = this.options.min;
36
- if (this.options.max !== undefined && val > this.options.max)
37
- val = this.options.max;
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;
38
34
  this.values[this.focus] = val;
39
35
  this.inputBuffer = val.toString(); // Normalize buffer
40
36
  }
@@ -45,23 +41,20 @@ class BoxPrompt extends base_1.Prompt {
45
41
  }
46
42
  increment(amount) {
47
43
  let val = parseInt(this.inputBuffer, 10);
48
- if (isNaN(val))
49
- val = 0;
44
+ if (isNaN(val)) val = 0;
50
45
  val += amount;
51
- if (this.options.min !== undefined && val < this.options.min)
52
- val = this.options.min;
53
- if (this.options.max !== undefined && val > this.options.max)
54
- val = this.options.max;
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;
55
48
  this.inputBuffer = val.toString();
56
49
  }
57
50
  render(_firstRender) {
58
- const title = `${theme_1.theme.success}? ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET} (Arrows to navigate, Numbers to edit)`;
51
+ const title = `${_theme.theme.success}? ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} (Arrows to navigate, Numbers to edit)`;
59
52
  // Format value function
60
- const formatVal = (side) => {
53
+ const formatVal = (side)=>{
61
54
  const isFocused = this.focus === side;
62
55
  const text = isFocused ? this.inputBuffer : this.values[side].toString();
63
56
  if (isFocused) {
64
- return `${ansi_1.ANSI.FG_CYAN}${ansi_1.ANSI.BOLD}[ ${text} ]${ansi_1.ANSI.RESET}`;
57
+ return `${_ansi.ANSI.FG_CYAN}${_ansi.ANSI.BOLD}[ ${text} ]${_ansi.ANSI.RESET}`;
65
58
  }
66
59
  return ` ${text} `;
67
60
  };
@@ -88,13 +81,17 @@ class BoxPrompt extends base_1.Prompt {
88
81
  }
89
82
  handleMouse(event) {
90
83
  if (event.name === 'mouse' && event.action === 'scroll') {
91
- const order = ['top', 'right', 'bottom', 'left'];
84
+ const order = [
85
+ 'top',
86
+ 'right',
87
+ 'bottom',
88
+ 'left'
89
+ ];
92
90
  const idx = order.indexOf(this.focus);
93
91
  if (event.scroll === 'down') {
94
92
  // Next (Down usually means going forward/down in list)
95
93
  this.changeFocus(order[(idx + 1) % 4]);
96
- }
97
- else if (event.scroll === 'up') {
94
+ } else if (event.scroll === 'up') {
98
95
  // Previous
99
96
  this.changeFocus(order[(idx + 3) % 4]); // +3 is same as -1 in mod 4
100
97
  }
@@ -139,7 +136,12 @@ class BoxPrompt extends base_1.Prompt {
139
136
  }
140
137
  // Tab Cycling
141
138
  if (char === '\t') {
142
- const order = ['top', 'right', 'bottom', 'left'];
139
+ const order = [
140
+ 'top',
141
+ 'right',
142
+ 'bottom',
143
+ 'left'
144
+ ];
143
145
  const idx = order.indexOf(this.focus);
144
146
  this.changeFocus(order[(idx + 1) % 4]);
145
147
  this.render(false);
@@ -147,7 +149,12 @@ class BoxPrompt extends base_1.Prompt {
147
149
  }
148
150
  // Shift+Tab Cycling (\u001b[Z)
149
151
  if (char === '\u001b[Z') {
150
- const order = ['top', 'right', 'bottom', 'left'];
152
+ const order = [
153
+ 'top',
154
+ 'right',
155
+ 'bottom',
156
+ 'left'
157
+ ];
151
158
  const idx = order.indexOf(this.focus);
152
159
  this.changeFocus(order[(idx + 3) % 4]); // (idx - 1) % 4 handling negative
153
160
  this.render(false);
@@ -155,7 +162,7 @@ class BoxPrompt extends base_1.Prompt {
155
162
  }
156
163
  // Increment/Decrement (+ / -)
157
164
  const step = this.options.step || 1;
158
- if (char === '+' || char === '=') { // = is usually unshifted +
165
+ if (char === '+' || char === '=') {
159
166
  this.increment(step);
160
167
  this.render(false);
161
168
  return;
@@ -170,8 +177,7 @@ class BoxPrompt extends base_1.Prompt {
170
177
  // Special case: if buffer is "0", replace it unless we are appending
171
178
  if (this.inputBuffer === '0') {
172
179
  this.inputBuffer = char;
173
- }
174
- else {
180
+ } else {
175
181
  this.inputBuffer += char;
176
182
  }
177
183
  this.render(false);
@@ -181,12 +187,39 @@ class BoxPrompt extends base_1.Prompt {
181
187
  if (char === '\u0008' || char === '\x7f') {
182
188
  if (this.inputBuffer.length > 0) {
183
189
  this.inputBuffer = this.inputBuffer.slice(0, -1);
184
- if (this.inputBuffer === '')
185
- this.inputBuffer = '0'; // default to 0
190
+ if (this.inputBuffer === '') this.inputBuffer = '0'; // default to 0
186
191
  }
187
192
  this.render(false);
188
193
  return;
189
194
  }
190
195
  }
191
- }
192
- exports.BoxPrompt = BoxPrompt;
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
@@ -0,0 +1 @@
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,56 +1,76 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "BreadcrumbSearchPrompt", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return BreadcrumbSearchPrompt;
7
9
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
10
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
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
24
45
  };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
46
+ }
47
+ var cache = _getRequireWildcardCache(nodeInterop);
48
+ if (cache && cache.has(obj)) {
49
+ return cache.get(obj);
50
+ }
51
+ var newObj = {
52
+ __proto__: null
33
53
  };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.BreadcrumbSearchPrompt = void 0;
37
- const breadcrumb_1 = require("./breadcrumb");
38
- const theme_1 = require("../theme");
39
- const ansi_1 = require("../ansi");
40
- const symbols_1 = require("../symbols");
41
- const utils_1 = require("../utils");
42
- const path = __importStar(require("path"));
43
- class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
44
- constructor(options) {
45
- super(options);
46
- this.isSearchMode = false;
47
- this.searchBuffer = '';
48
- this.filteredEntries = [];
49
- this.searchCursor = 0;
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
+ }
50
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 {
51
72
  handleInput(char, key) {
52
- if (this.isLoading)
53
- return;
73
+ if (this.isLoading) return;
54
74
  // Toggle Search Mode or Type
55
75
  if (!this.isSearchMode) {
56
76
  // If typing a regular char, enter search mode
@@ -79,13 +99,11 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
79
99
  this.searchBuffer = this.searchBuffer.slice(0, -1);
80
100
  if (this.searchBuffer.length === 0) {
81
101
  this.isSearchMode = false;
82
- }
83
- else {
102
+ } else {
84
103
  this.updateSearchResults();
85
104
  }
86
105
  this.render(false);
87
- }
88
- else {
106
+ } else {
89
107
  this.isSearchMode = false;
90
108
  this.render(false);
91
109
  }
@@ -93,23 +111,21 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
93
111
  }
94
112
  // Enter
95
113
  if (char === '\r' || char === '\n') {
96
- if (this.filteredEntries.length === 0)
97
- return;
114
+ if (this.filteredEntries.length === 0) return;
98
115
  const entry = this.filteredEntries[this.searchCursor];
99
116
  if (entry.isDirectory) {
100
117
  // Drill down
101
118
  // Hack: Find index in currentEntries
102
- const realIndex = this.currentEntries.findIndex(e => e.name === entry.name);
119
+ const realIndex = this.currentEntries.findIndex((e)=>e.name === entry.name);
103
120
  if (realIndex !== -1) {
104
121
  this.cursor = realIndex;
105
- this.drillDown().then(() => {
122
+ this.drillDown().then(()=>{
106
123
  this.isSearchMode = false;
107
124
  this.searchBuffer = '';
108
125
  });
109
126
  }
110
- }
111
- else {
112
- const fullPath = path.join(this.currentPath, entry.name);
127
+ } else {
128
+ const fullPath = _path.join(this.currentPath, entry.name);
113
129
  this.submit(fullPath);
114
130
  }
115
131
  return;
@@ -118,8 +134,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
118
134
  if (this.isUp(char)) {
119
135
  if (this.searchCursor > 0) {
120
136
  this.searchCursor--;
121
- }
122
- else {
137
+ } else {
123
138
  this.searchCursor = Math.max(0, this.filteredEntries.length - 1);
124
139
  }
125
140
  this.render(false);
@@ -128,8 +143,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
128
143
  if (this.isDown(char)) {
129
144
  if (this.searchCursor < this.filteredEntries.length - 1) {
130
145
  this.searchCursor++;
131
- }
132
- else {
146
+ } else {
133
147
  this.searchCursor = 0;
134
148
  }
135
149
  this.render(false);
@@ -147,15 +161,17 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
147
161
  this.filteredEntries = [];
148
162
  return;
149
163
  }
150
- const results = this.currentEntries.map(entry => {
151
- const match = (0, utils_1.fuzzyMatch)(this.searchBuffer, entry.name);
152
- return { entry, match };
153
- }).filter(item => item.match !== null)
154
- .sort((a, b) => b.match.score - a.match.score);
155
- this.filteredEntries = results.map(r => ({
156
- ...r.entry,
157
- _match: r.match
158
- }));
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
+ }));
159
175
  this.searchCursor = 0;
160
176
  }
161
177
  handleMouse(event) {
@@ -163,16 +179,14 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
163
179
  super.handleMouse(event);
164
180
  return;
165
181
  }
166
- if (this.isLoading)
167
- return;
182
+ if (this.isLoading) return;
168
183
  if (event.action === 'scroll') {
169
184
  if (event.scroll === 'up') {
170
185
  if (this.searchCursor > 0) {
171
186
  this.searchCursor--;
172
187
  this.render(false);
173
188
  }
174
- }
175
- else if (event.scroll === 'down') {
189
+ } else if (event.scroll === 'down') {
176
190
  if (this.searchCursor < this.filteredEntries.length - 1) {
177
191
  this.searchCursor++;
178
192
  this.render(false);
@@ -188,15 +202,14 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
188
202
  // Render Search Overlay
189
203
  let output = '';
190
204
  // Breadcrumb + Search Bar
191
- const relative = path.relative(this.root, this.currentPath);
205
+ const relative = _path.relative(this.root, this.currentPath);
192
206
  // ... (Truncation logic omitted for brevity, simplified version)
193
- const pathStr = relative || path.basename(this.root);
194
- const prefix = `${theme_1.theme.success}?${ansi_1.ANSI.RESET} ${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET} `;
195
- output += `${prefix}${theme_1.theme.muted}${pathStr}/${ansi_1.ANSI.RESET} ${ansi_1.ANSI.FG_YELLOW}(Search: ${this.searchBuffer})${ansi_1.ANSI.RESET}\n`;
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`;
196
210
  if (this.filteredEntries.length === 0) {
197
- output += ` ${theme_1.theme.muted}No results found${ansi_1.ANSI.RESET}`;
198
- }
199
- else {
211
+ output += ` ${_theme.theme.muted}No results found${_ansi.ANSI.RESET}`;
212
+ } else {
200
213
  const pageSize = this.pageSize;
201
214
  let start = 0;
202
215
  const half = Math.floor(pageSize / 2);
@@ -205,7 +218,7 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
205
218
  start = Math.max(0, this.filteredEntries.length - pageSize);
206
219
  }
207
220
  const visible = this.filteredEntries.slice(start, start + pageSize);
208
- visible.forEach((entry, index) => {
221
+ visible.forEach((entry, index)=>{
209
222
  const actualIndex = start + index;
210
223
  const isSelected = actualIndex === this.searchCursor;
211
224
  const icon = entry.isDirectory ? '📂' : '📄';
@@ -213,15 +226,12 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
213
226
  const title = this.highlight(entry.name, entry._match.indices, isSelected);
214
227
  let line = '';
215
228
  if (isSelected) {
216
- line += `${theme_1.theme.main}${symbols_1.symbols.pointer} ${icon} ${title}${ansi_1.ANSI.RESET}`;
217
- }
218
- else {
229
+ line += `${_theme.theme.main}${_symbols.symbols.pointer} ${icon} ${title}${_ansi.ANSI.RESET}`;
230
+ } else {
219
231
  line += ` ${icon} ${title}`;
220
232
  }
221
- if (index > 0 || index === 0)
222
- output += line;
223
- if (index < visible.length - 1)
224
- output += '\n';
233
+ if (index > 0 || index === 0) output += line;
234
+ if (index < visible.length - 1) output += '\n';
225
235
  });
226
236
  }
227
237
  this.renderFrame(output);
@@ -229,20 +239,22 @@ class BreadcrumbSearchPrompt extends breadcrumb_1.BreadcrumbPrompt {
229
239
  highlight(text, indices, isSelected) {
230
240
  let output = '';
231
241
  const indexSet = new Set(indices);
232
- for (let i = 0; i < text.length; i++) {
242
+ for(let i = 0; i < text.length; i++){
233
243
  if (indexSet.has(i)) {
234
244
  if (isSelected) {
235
- output += `${ansi_1.ANSI.BOLD}${ansi_1.ANSI.FG_WHITE}${text[i]}${theme_1.theme.main}`;
236
- }
237
- else {
238
- output += `${ansi_1.ANSI.BOLD}${ansi_1.ANSI.FG_CYAN}${text[i]}${ansi_1.ANSI.RESET}`;
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}`;
239
248
  }
240
- }
241
- else {
249
+ } else {
242
250
  output += text[i];
243
251
  }
244
252
  }
245
253
  return output;
246
254
  }
247
- }
248
- exports.BreadcrumbSearchPrompt = BreadcrumbSearchPrompt;
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
@@ -0,0 +1 @@
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":";;;;+BAQaA;;;eAAAA;;;4BARoB;uBAEX;sBACD;yBACG;uBACG;8DACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEf,IAAA,AAAMA,yBAAN,MAAMA,+BAA+BC,4BAAgB;IAU9CC,YAAYC,IAAY,EAAEC,GAAW,EAAE;QAC7C,IAAI,IAAI,CAACC,SAAS,EAAE;QAEpB,6BAA6B;QAC7B,IAAI,CAAC,IAAI,CAACC,YAAY,EAAE;YACpB,8CAA8C;YAC9C,IAAIH,KAAKI,MAAM,KAAK,KAAK,CAAC,eAAeC,IAAI,CAACL,SAAS,CAACA,KAAKM,UAAU,CAAC,SAAS;gBAC7E,IAAI,CAACH,YAAY,GAAG;gBACpB,IAAI,CAACI,YAAY,GAAGP;gBACpB,IAAI,CAACQ,mBAAmB;gBACxB,IAAI,CAACC,MAAM,CAAC;gBACZ;YACJ;YACA,mCAAmC;YACnC,KAAK,CAACV,YAAYC,MAAMC;YACxB;QACJ;QAEA,yBAAyB;QAEzB,wBAAwB;QACxB,IAAID,SAAS,QAAQ;YACjB,IAAI,CAACG,YAAY,GAAG;YACpB,IAAI,CAACI,YAAY,GAAG;YACpB,IAAI,CAACE,MAAM,CAAC;YACZ;QACJ;QAEA,YAAY;QACZ,IAAIT,SAAS,YAAYA,SAAS,QAAQ;YACtC,IAAI,IAAI,CAACO,YAAY,CAACH,MAAM,GAAG,GAAG;gBAC9B,IAAI,CAACG,YAAY,GAAG,IAAI,CAACA,YAAY,CAACG,KAAK,CAAC,GAAG,CAAC;gBAChD,IAAI,IAAI,CAACH,YAAY,CAACH,MAAM,KAAK,GAAG;oBAChC,IAAI,CAACD,YAAY,GAAG;gBACxB,OAAO;oBACH,IAAI,CAACK,mBAAmB;gBAC5B;gBACA,IAAI,CAACC,MAAM,CAAC;YAChB,OAAO;gBACH,IAAI,CAACN,YAAY,GAAG;gBACpB,IAAI,CAACM,MAAM,CAAC;YAChB;YACA;QACJ;QAEA,QAAQ;QACR,IAAIT,SAAS,QAAQA,SAAS,MAAM;YAChC,IAAI,IAAI,CAACW,eAAe,CAACP,MAAM,KAAK,GAAG;YAEvC,MAAMQ,QAAQ,IAAI,CAACD,eAAe,CAAC,IAAI,CAACE,YAAY,CAAC;YACrD,IAAID,MAAME,WAAW,EAAE;gBACnB,aAAa;gBAEb,qCAAqC;gBACrC,MAAMC,YAAY,IAAI,CAACC,cAAc,CAACC,SAAS,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAKP,MAAMO,IAAI;gBAC1E,IAAIJ,cAAc,CAAC,GAAG;oBAClB,IAAI,CAACK,MAAM,GAAGL;oBACd,IAAI,CAACM,SAAS,GAAGC,IAAI,CAAC;wBAClB,IAAI,CAACnB,YAAY,GAAG;wBACpB,IAAI,CAACI,YAAY,GAAG;oBACxB;gBACJ;YACJ,OAAO;gBACH,MAAMgB,WAAWC,MAAKC,IAAI,CAAC,IAAI,CAACC,WAAW,EAAEd,MAAMO,IAAI;gBACvD,IAAI,CAACQ,MAAM,CAACJ;YAChB;YACA;QACJ;QAEA,uBAAuB;QACvB,IAAI,IAAI,CAACK,IAAI,CAAC5B,OAAO;YACjB,IAAI,IAAI,CAACa,YAAY,GAAG,GAAG;gBACvB,IAAI,CAACA,YAAY;YACrB,OAAO;gBACH,IAAI,CAACA,YAAY,GAAGgB,KAAKC,GAAG,CAAC,GAAG,IAAI,CAACnB,eAAe,CAACP,MAAM,GAAG;YAClE;YACA,IAAI,CAACK,MAAM,CAAC;YACZ;QACJ;QAEA,IAAI,IAAI,CAACsB,MAAM,CAAC/B,OAAO;YACnB,IAAI,IAAI,CAACa,YAAY,GAAG,IAAI,CAACF,eAAe,CAACP,MAAM,GAAG,GAAG;gBACrD,IAAI,CAACS,YAAY;YACrB,OAAO;gBACH,IAAI,CAACA,YAAY,GAAG;YACxB;YACA,IAAI,CAACJ,MAAM,CAAC;YACZ;QACJ;QAEA,SAAS;QACT,IAAIT,KAAKI,MAAM,KAAK,KAAK,CAAC,eAAeC,IAAI,CAACL,SAAS,CAACA,KAAKM,UAAU,CAAC,SAAS;YAC7E,IAAI,CAACC,YAAY,IAAIP;YACrB,IAAI,CAACQ,mBAAmB;YACxB,IAAI,CAACC,MAAM,CAAC;QAChB;IACJ;IAEQD,sBAAsB;QAC1B,IAAI,CAAC,IAAI,CAACD,YAAY,EAAE;YACpB,IAAI,CAACI,eAAe,GAAG,EAAE;YACzB;QACJ;QAEA,MAAMqB,UAAU,IAAI,CAAChB,cAAc,CAACiB,GAAG,CAACrB,CAAAA;YACpC,MAAMsB,QAAQC,IAAAA,iBAAU,EAAC,IAAI,CAAC5B,YAAY,EAAEK,MAAMO,IAAI;YACtD,OAAO;gBAAEP;gBAAOsB;YAAM;QAC1B,GAAGE,MAAM,CAACC,CAAAA,OAAQA,KAAKH,KAAK,KAAK,MAC5BI,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEN,KAAK,CAAEO,KAAK,GAAGF,EAAEL,KAAK,CAAEO,KAAK;QAEnD,IAAI,CAAC9B,eAAe,GAAGqB,QAAQC,GAAG,CAACS,CAAAA,IAAM,CAAA;gBACrC,GAAGA,EAAE9B,KAAK;gBACV+B,QAAQD,EAAER,KAAK;YACnB,CAAA;QAEA,IAAI,CAACrB,YAAY,GAAG;IACxB;IAEU+B,YAAYC,KAAiB,EAAQ;QAC3C,IAAI,CAAC,IAAI,CAAC1C,YAAY,EAAE;YACpB,KAAK,CAACyC,YAAYC;YAClB;QACJ;QAEA,IAAI,IAAI,CAAC3C,SAAS,EAAE;QAEpB,IAAI2C,MAAMC,MAAM,KAAK,UAAU;YAC3B,IAAID,MAAME,MAAM,KAAK,MAAM;gBACvB,IAAI,IAAI,CAAClC,YAAY,GAAG,GAAG;oBACvB,IAAI,CAACA,YAAY;oBACjB,IAAI,CAACJ,MAAM,CAAC;gBAChB;YACJ,OAAO,IAAIoC,MAAME,MAAM,KAAK,QAAQ;gBAChC,IAAI,IAAI,CAAClC,YAAY,GAAG,IAAI,CAACF,eAAe,CAACP,MAAM,GAAG,GAAG;oBACrD,IAAI,CAACS,YAAY;oBACjB,IAAI,CAACJ,MAAM,CAAC;gBAChB;YACJ;QACJ;IACJ;IAEUA,OAAOuC,WAAoB,EAAE;QACnC,IAAI,CAAC,IAAI,CAAC7C,YAAY,EAAE;YACpB,KAAK,CAACM,OAAOuC;YACb;QACJ;QAEA,wBAAwB;QACxB,IAAIC,SAAS;QAEb,0BAA0B;QAC1B,MAAMC,WAAW1B,MAAK0B,QAAQ,CAAC,IAAI,CAACC,IAAI,EAAE,IAAI,CAACzB,WAAW;QAC1D,iEAAiE;QACjE,MAAM0B,UAAUF,YAAY1B,MAAK6B,QAAQ,CAAC,IAAI,CAACF,IAAI;QAEnD,MAAMG,SAAS,GAAGC,YAAK,CAACC,OAAO,CAAC,CAAC,EAAEC,UAAI,CAACC,KAAK,CAAC,CAAC,EAAEH,YAAK,CAACI,KAAK,GAAG,IAAI,CAACC,OAAO,CAACC,OAAO,GAAGJ,UAAI,CAACC,KAAK,CAAC,CAAC,CAAC;QACnGT,UAAU,GAAGK,SAASC,YAAK,CAACO,KAAK,GAAGV,QAAQ,CAAC,EAAEK,UAAI,CAACC,KAAK,CAAC,CAAC,EAAED,UAAI,CAACM,SAAS,CAAC,SAAS,EAAE,IAAI,CAACxD,YAAY,CAAC,CAAC,EAAEkD,UAAI,CAACC,KAAK,CAAC,EAAE,CAAC;QAE1H,IAAI,IAAI,CAAC/C,eAAe,CAACP,MAAM,KAAK,GAAG;YACnC6C,UAAU,CAAC,EAAE,EAAEM,YAAK,CAACO,KAAK,CAAC,gBAAgB,EAAEL,UAAI,CAACC,KAAK,EAAE;QAC7D,OAAO;YACH,MAAMM,WAAW,IAAI,CAACA,QAAQ;YAC9B,IAAIC,QAAQ;YAEZ,MAAMC,OAAOrC,KAAKsC,KAAK,CAACH,WAAW;YACnCC,QAAQpC,KAAKC,GAAG,CAAC,GAAG,IAAI,CAACjB,YAAY,GAAGqD;YACxC,IAAID,QAAQD,WAAW,IAAI,CAACrD,eAAe,CAACP,MAAM,EAAE;gBAChD6D,QAAQpC,KAAKC,GAAG,CAAC,GAAG,IAAI,CAACnB,eAAe,CAACP,MAAM,GAAG4D;YACtD;YAEA,MAAMI,UAAU,IAAI,CAACzD,eAAe,CAACD,KAAK,CAACuD,OAAOA,QAAQD;YAE1DI,QAAQC,OAAO,CAAC,CAACzD,OAAO0D;gBACpB,MAAMC,cAAcN,QAAQK;gBAC5B,MAAME,aAAaD,gBAAgB,IAAI,CAAC1D,YAAY;gBACpD,MAAM4D,OAAO7D,MAAME,WAAW,GAAG,OAAO;gBAExC,kBAAkB;gBAClB,MAAM6C,QAAQ,IAAI,CAACe,SAAS,CAAC9D,MAAMO,IAAI,EAAEP,MAAM+B,MAAM,CAACgC,OAAO,EAAEH;gBAE/D,IAAII,OAAO;gBACX,IAAIJ,YAAY;oBACZI,QAAQ,GAAGrB,YAAK,CAACsB,IAAI,GAAGC,gBAAO,CAACC,OAAO,CAAC,CAAC,EAAEN,KAAK,CAAC,EAAEd,QAAQF,UAAI,CAACC,KAAK,EAAE;gBAC3E,OAAO;oBACHkB,QAAQ,CAAC,EAAE,EAAEH,KAAK,CAAC,EAAEd,OAAO;gBAChC;gBAEA,IAAIW,QAAQ,KAAKA,UAAU,GAAGrB,UAAU2B;gBACxC,IAAIN,QAAQF,QAAQhE,MAAM,GAAG,GAAG6C,UAAU;YAC9C;QACJ;QAEA,IAAI,CAAC+B,WAAW,CAAC/B;IACrB;IAEQyB,UAAUO,IAAY,EAAEN,OAAiB,EAAEH,UAAmB,EAAU;QAC5E,IAAIvB,SAAS;QACb,MAAMiC,WAAW,IAAIC,IAAIR;QACzB,IAAK,IAAIS,IAAI,GAAGA,IAAIH,KAAK7E,MAAM,EAAEgF,IAAK;YAClC,IAAIF,SAASG,GAAG,CAACD,IAAI;gBACjB,IAAIZ,YAAY;oBACZvB,UAAU,GAAGQ,UAAI,CAAC6B,IAAI,GAAG7B,UAAI,CAAC8B,QAAQ,GAAGN,IAAI,CAACG,EAAE,GAAG7B,YAAK,CAACsB,IAAI,EAAE;gBACnE,OAAO;oBACH5B,UAAU,GAAGQ,UAAI,CAAC6B,IAAI,GAAG7B,UAAI,CAAC+B,OAAO,GAAGP,IAAI,CAACG,EAAE,GAAG3B,UAAI,CAACC,KAAK,EAAE;gBAClE;YACJ,OAAO;gBACHT,UAAUgC,IAAI,CAACG,EAAE;YACrB;QACJ;QACA,OAAOnC;IACX;IAtNA,YAAYW,OAA0B,CAAE;QACpC,KAAK,CAACA,UANV,uBAAQzD,gBAAwB,QAChC,uBAAQI,gBAAuB,KAC/B,uBAAQI,mBAAyB,EAAE,GACnC,uBAAQE,gBAAuB;IAI/B;AAqNJ"}