@jakubmazanec/cli 0.2.1-unstable.f940d9d → 0.3.0-next.2fa8a2c

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 (254) hide show
  1. package/README.md +1 -1
  2. package/build/constants.js +8 -0
  3. package/build/constants.js.map +7 -0
  4. package/build/main.js +4 -0
  5. package/build/main.js.map +7 -0
  6. package/{dist → build}/program/Command.d.ts +1 -1
  7. package/build/program/Command.js +70 -0
  8. package/build/program/Command.js.map +7 -0
  9. package/{dist → build}/program/CommandAction.d.ts +1 -1
  10. package/build/program/CommandAction.js +2 -0
  11. package/build/program/CommandAction.js.map +7 -0
  12. package/build/program/CommandArguments.js +2 -0
  13. package/build/program/CommandArguments.js.map +7 -0
  14. package/build/program/CommandOptions.js +2 -0
  15. package/build/program/CommandOptions.js.map +7 -0
  16. package/{dist → build}/program/Program.d.ts +1 -1
  17. package/build/program/Program.js +191 -0
  18. package/build/program/Program.js.map +7 -0
  19. package/build/program/ProgramCreateOptions.js +2 -0
  20. package/build/program/ProgramCreateOptions.js.map +7 -0
  21. package/build/program/ProgramDetail.js +2 -0
  22. package/build/program/ProgramDetail.js.map +7 -0
  23. package/{dist → build}/program/ProgramError.d.ts +1 -1
  24. package/build/program/ProgramError.js +6 -0
  25. package/build/program/ProgramError.js.map +7 -0
  26. package/build/program/ProgramOptions.js +2 -0
  27. package/build/program/ProgramOptions.js.map +7 -0
  28. package/build/program/ProgramStreams.js +2 -0
  29. package/build/program/ProgramStreams.js.map +7 -0
  30. package/build/program/getProgramDetail.js +25 -0
  31. package/build/program/getProgramDetail.js.map +7 -0
  32. package/build/program.js +13 -0
  33. package/build/program.js.map +7 -0
  34. package/build/ui/ErrorDetail.js +2 -0
  35. package/build/ui/ErrorDetail.js.map +7 -0
  36. package/build/ui/Failure.js +20 -0
  37. package/build/ui/Failure.js.map +7 -0
  38. package/build/ui/Header.js +19 -0
  39. package/build/ui/Header.js.map +7 -0
  40. package/build/ui/Help.js +38 -0
  41. package/build/ui/Help.js.map +7 -0
  42. package/build/ui/Spinner.js +24 -0
  43. package/build/ui/Spinner.js.map +7 -0
  44. package/build/ui/colors.js +12 -0
  45. package/build/ui/colors.js.map +7 -0
  46. package/build/ui/form/Form.js +2 -0
  47. package/build/ui/form/Form.js.map +7 -0
  48. package/build/ui/form/FormConfig.js +2 -0
  49. package/build/ui/form/FormConfig.js.map +7 -0
  50. package/build/ui/form/FormProps.js +2 -0
  51. package/build/ui/form/FormProps.js.map +7 -0
  52. package/build/ui/form/FormResult.js +2 -0
  53. package/build/ui/form/FormResult.js.map +7 -0
  54. package/build/ui/form/FormRow.js +71 -0
  55. package/build/ui/form/FormRow.js.map +7 -0
  56. package/build/ui/form/FormRowConfig.js +2 -0
  57. package/build/ui/form/FormRowConfig.js.map +7 -0
  58. package/build/ui/form/FormRowsConfig.js +2 -0
  59. package/build/ui/form/FormRowsConfig.js.map +7 -0
  60. package/build/ui/form/FormValue.js +2 -0
  61. package/build/ui/form/FormValue.js.map +7 -0
  62. package/build/ui/form/FormValues.js +2 -0
  63. package/build/ui/form/FormValues.js.map +7 -0
  64. package/{dist → build}/ui/form/SelectInput.d.ts +1 -1
  65. package/build/ui/form/SelectInput.js +86 -0
  66. package/build/ui/form/SelectInput.js.map +7 -0
  67. package/build/ui/form/SelectInputItem.js +2 -0
  68. package/build/ui/form/SelectInputItem.js.map +7 -0
  69. package/build/ui/form/TextInput.js +129 -0
  70. package/build/ui/form/TextInput.js.map +7 -0
  71. package/build/ui/form/createForm.js +73 -0
  72. package/build/ui/form/createForm.js.map +7 -0
  73. package/build/ui/form.js +15 -0
  74. package/build/ui/form.js.map +7 -0
  75. package/build/ui/getErrorDetail.js +65 -0
  76. package/build/ui/getErrorDetail.js.map +7 -0
  77. package/build/ui/icons.js +13 -0
  78. package/build/ui/icons.js.map +7 -0
  79. package/build/ui/internals/Wrapper.js +48 -0
  80. package/build/ui/internals/Wrapper.js.map +7 -0
  81. package/build/ui/internals/programContext.js +4 -0
  82. package/build/ui/internals/programContext.js.map +7 -0
  83. package/build/ui/internals/rotate.js +6 -0
  84. package/build/ui/internals/rotate.js.map +7 -0
  85. package/build/ui/internals.js +5 -0
  86. package/build/ui/internals.js.map +7 -0
  87. package/build/ui/useProgram.js +20 -0
  88. package/build/ui/useProgram.js.map +7 -0
  89. package/build/ui.js +12 -0
  90. package/build/ui.js.map +7 -0
  91. package/package.json +41 -36
  92. package/{src → source}/program/CommandAction.ts +1 -1
  93. package/{src → source}/program/Program.ts +4 -4
  94. package/{src → source}/ui/Failure.tsx +9 -9
  95. package/{src → source}/ui/Header.tsx +8 -4
  96. package/{src → source}/ui/Help.tsx +4 -4
  97. package/{src → source}/ui/Spinner.tsx +1 -1
  98. package/{src → source}/ui/form/FormProps.ts +12 -18
  99. package/{src → source}/ui/form/FormRow.tsx +9 -9
  100. package/{src → source}/ui/form/FormValue.ts +3 -4
  101. package/{src → source}/ui/form/SelectInput.tsx +11 -15
  102. package/{src → source}/ui/form/TextInput.tsx +13 -10
  103. package/{src → source}/ui/getErrorDetail.ts +1 -1
  104. package/{src → source}/ui/internals/Wrapper.tsx +4 -4
  105. package/dist/constants.js +0 -8
  106. package/dist/constants.js.map +0 -1
  107. package/dist/main.js +0 -4
  108. package/dist/main.js.map +0 -1
  109. package/dist/program/Command.js +0 -63
  110. package/dist/program/Command.js.map +0 -1
  111. package/dist/program/CommandAction.js +0 -3
  112. package/dist/program/CommandAction.js.map +0 -1
  113. package/dist/program/CommandArguments.js +0 -3
  114. package/dist/program/CommandArguments.js.map +0 -1
  115. package/dist/program/CommandOptions.js +0 -3
  116. package/dist/program/CommandOptions.js.map +0 -1
  117. package/dist/program/Program.js +0 -168
  118. package/dist/program/Program.js.map +0 -1
  119. package/dist/program/ProgramCreateOptions.js +0 -3
  120. package/dist/program/ProgramCreateOptions.js.map +0 -1
  121. package/dist/program/ProgramDetail.js +0 -5
  122. package/dist/program/ProgramDetail.js.map +0 -1
  123. package/dist/program/ProgramError.js +0 -8
  124. package/dist/program/ProgramError.js.map +0 -1
  125. package/dist/program/ProgramOptions.js +0 -3
  126. package/dist/program/ProgramOptions.js.map +0 -1
  127. package/dist/program/ProgramStreams.js +0 -5
  128. package/dist/program/ProgramStreams.js.map +0 -1
  129. package/dist/program/getProgramDetail.js +0 -27
  130. package/dist/program/getProgramDetail.js.map +0 -1
  131. package/dist/program.js +0 -13
  132. package/dist/program.js.map +0 -1
  133. package/dist/ui/ErrorDetail.js +0 -5
  134. package/dist/ui/ErrorDetail.js.map +0 -1
  135. package/dist/ui/Failure.js +0 -65
  136. package/dist/ui/Failure.js.map +0 -1
  137. package/dist/ui/Header.js +0 -26
  138. package/dist/ui/Header.js.map +0 -1
  139. package/dist/ui/Help.js +0 -64
  140. package/dist/ui/Help.js.map +0 -1
  141. package/dist/ui/Spinner.js +0 -39
  142. package/dist/ui/Spinner.js.map +0 -1
  143. package/dist/ui/colors.js +0 -12
  144. package/dist/ui/colors.js.map +0 -1
  145. package/dist/ui/form/Form.js +0 -3
  146. package/dist/ui/form/Form.js.map +0 -1
  147. package/dist/ui/form/FormConfig.js +0 -3
  148. package/dist/ui/form/FormConfig.js.map +0 -1
  149. package/dist/ui/form/FormProps.js +0 -3
  150. package/dist/ui/form/FormProps.js.map +0 -1
  151. package/dist/ui/form/FormResult.js +0 -3
  152. package/dist/ui/form/FormResult.js.map +0 -1
  153. package/dist/ui/form/FormRow.js +0 -59
  154. package/dist/ui/form/FormRow.js.map +0 -1
  155. package/dist/ui/form/FormRowConfig.js +0 -5
  156. package/dist/ui/form/FormRowConfig.js.map +0 -1
  157. package/dist/ui/form/FormRowsConfig.js +0 -3
  158. package/dist/ui/form/FormRowsConfig.js.map +0 -1
  159. package/dist/ui/form/FormValue.js +0 -3
  160. package/dist/ui/form/FormValue.js.map +0 -1
  161. package/dist/ui/form/FormValues.js +0 -3
  162. package/dist/ui/form/FormValues.js.map +0 -1
  163. package/dist/ui/form/SelectInput.js +0 -113
  164. package/dist/ui/form/SelectInput.js.map +0 -1
  165. package/dist/ui/form/SelectInputItem.js +0 -5
  166. package/dist/ui/form/SelectInputItem.js.map +0 -1
  167. package/dist/ui/form/TextInput.js +0 -152
  168. package/dist/ui/form/TextInput.js.map +0 -1
  169. package/dist/ui/form/createForm.js +0 -72
  170. package/dist/ui/form/createForm.js.map +0 -1
  171. package/dist/ui/form.js +0 -15
  172. package/dist/ui/form.js.map +0 -1
  173. package/dist/ui/getErrorDetail.js +0 -72
  174. package/dist/ui/getErrorDetail.js.map +0 -1
  175. package/dist/ui/icons.js +0 -13
  176. package/dist/ui/icons.js.map +0 -1
  177. package/dist/ui/internals/Wrapper.js +0 -66
  178. package/dist/ui/internals/Wrapper.js.map +0 -1
  179. package/dist/ui/internals/programContext.js +0 -6
  180. package/dist/ui/internals/programContext.js.map +0 -1
  181. package/dist/ui/internals/rotate.js +0 -17
  182. package/dist/ui/internals/rotate.js.map +0 -1
  183. package/dist/ui/internals.js +0 -5
  184. package/dist/ui/internals.js.map +0 -1
  185. package/dist/ui/useProgram.js +0 -25
  186. package/dist/ui/useProgram.js.map +0 -1
  187. package/dist/ui.js +0 -12
  188. package/dist/ui.js.map +0 -1
  189. package/{dist → build}/constants.d.ts +0 -0
  190. package/{dist → build}/main.d.ts +0 -0
  191. package/{dist → build}/program/CommandArguments.d.ts +0 -0
  192. package/{dist → build}/program/CommandOptions.d.ts +0 -0
  193. package/{dist → build}/program/ProgramCreateOptions.d.ts +0 -0
  194. package/{dist → build}/program/ProgramDetail.d.ts +0 -0
  195. package/{dist → build}/program/ProgramOptions.d.ts +0 -0
  196. package/{dist → build}/program/ProgramStreams.d.ts +0 -0
  197. package/{dist → build}/program/getProgramDetail.d.ts +0 -0
  198. package/{dist → build}/program.d.ts +0 -0
  199. package/{dist → build}/ui/ErrorDetail.d.ts +0 -0
  200. package/{dist → build}/ui/Failure.d.ts +0 -0
  201. package/{dist → build}/ui/Header.d.ts +0 -0
  202. package/{dist → build}/ui/Help.d.ts +0 -0
  203. package/{dist → build}/ui/Spinner.d.ts +0 -0
  204. package/{dist → build}/ui/colors.d.ts +0 -0
  205. package/{dist → build}/ui/form/Form.d.ts +0 -0
  206. package/{dist → build}/ui/form/FormConfig.d.ts +0 -0
  207. package/{dist → build}/ui/form/FormProps.d.ts +0 -0
  208. package/{dist → build}/ui/form/FormResult.d.ts +0 -0
  209. package/{dist → build}/ui/form/FormRow.d.ts +0 -0
  210. package/{dist → build}/ui/form/FormRowConfig.d.ts +0 -0
  211. package/{dist → build}/ui/form/FormRowsConfig.d.ts +0 -0
  212. package/{dist → build}/ui/form/FormValue.d.ts +0 -0
  213. package/{dist → build}/ui/form/FormValues.d.ts +0 -0
  214. package/{dist → build}/ui/form/SelectInputItem.d.ts +0 -0
  215. package/{dist → build}/ui/form/TextInput.d.ts +0 -0
  216. package/{dist → build}/ui/form/createForm.d.ts +0 -0
  217. package/{dist → build}/ui/form.d.ts +3 -3
  218. package/{dist → build}/ui/getErrorDetail.d.ts +0 -0
  219. package/{dist → build}/ui/icons.d.ts +0 -0
  220. package/{dist → build}/ui/internals/Wrapper.d.ts +0 -0
  221. package/{dist → build}/ui/internals/programContext.d.ts +0 -0
  222. package/{dist → build}/ui/internals/rotate.d.ts +0 -0
  223. package/{dist → build}/ui/internals.d.ts +0 -0
  224. package/{dist → build}/ui/useProgram.d.ts +0 -0
  225. package/{dist → build}/ui.d.ts +3 -3
  226. package/{src → source}/constants.ts +0 -0
  227. package/{src → source}/main.ts +0 -0
  228. package/{src → source}/program/Command.ts +2 -2
  229. package/{src → source}/program/CommandArguments.ts +0 -0
  230. package/{src → source}/program/CommandOptions.ts +0 -0
  231. package/{src → source}/program/ProgramCreateOptions.ts +0 -0
  232. package/{src → source}/program/ProgramDetail.ts +0 -0
  233. package/{src → source}/program/ProgramError.ts +0 -0
  234. package/{src → source}/program/ProgramOptions.ts +0 -0
  235. package/{src → source}/program/ProgramStreams.ts +0 -0
  236. package/{src → source}/program/getProgramDetail.ts +0 -0
  237. package/{src → source}/program.ts +0 -0
  238. package/{src → source}/ui/ErrorDetail.ts +0 -0
  239. package/{src → source}/ui/colors.ts +0 -0
  240. package/{src → source}/ui/form/Form.ts +0 -0
  241. package/{src → source}/ui/form/FormConfig.ts +0 -0
  242. package/{src → source}/ui/form/FormResult.ts +0 -0
  243. package/{src → source}/ui/form/FormRowConfig.ts +0 -0
  244. package/{src → source}/ui/form/FormRowsConfig.ts +0 -0
  245. package/{src → source}/ui/form/FormValues.ts +0 -0
  246. package/{src → source}/ui/form/SelectInputItem.ts +0 -0
  247. package/{src → source}/ui/form/createForm.tsx +0 -0
  248. package/{src → source}/ui/form.ts +3 -3
  249. package/{src → source}/ui/icons.ts +0 -0
  250. package/{src → source}/ui/internals/programContext.ts +0 -0
  251. package/{src → source}/ui/internals/rotate.ts +0 -0
  252. package/{src → source}/ui/internals.ts +0 -0
  253. package/{src → source}/ui/useProgram.ts +0 -0
  254. package/{src → source}/ui.ts +3 -3
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/program/getProgramDetail.ts"],"sourcesContent":["import {type PackageJson} from '@jakubmazanec/zod-utils';\n\nimport {type ProgramDetail} from './ProgramDetail.js';\n\n/**\n * Creates detailed information about a {@lincode Program}.\n */\nexport function getProgramDetail(packageJson: PackageJson) {\n let programDetail: ProgramDetail = {};\n\n if (packageJson.name) {\n programDetail.name = packageJson.name;\n }\n\n if (packageJson.version) {\n programDetail.version = packageJson.version;\n }\n\n if (packageJson.description) {\n programDetail.description = packageJson.description;\n }\n\n if (packageJson.bin && typeof packageJson.bin !== 'string') {\n let bins = Object.entries(packageJson.bin);\n\n if (bins.length === 1) {\n let firstBin = bins[0] as [string, string];\n\n [programDetail.bin] = firstBin;\n }\n }\n\n if (typeof packageJson.bin === 'string' && packageJson.name) {\n programDetail.bin = packageJson.name;\n }\n\n return programDetail;\n}\n"],"names":["getProgramDetail","packageJson","programDetail","name","version","description","bin","bins","Object","entries","length","firstBin"],"mappings":"AAIA;;CAEC,GACD,OAAO,SAASA,iBAAiBC,WAAwB;IACvD,IAAIC,gBAA+B,CAAC;IAEpC,IAAID,YAAYE,IAAI,EAAE;QACpBD,cAAcC,IAAI,GAAGF,YAAYE,IAAI;IACvC;IAEA,IAAIF,YAAYG,OAAO,EAAE;QACvBF,cAAcE,OAAO,GAAGH,YAAYG,OAAO;IAC7C;IAEA,IAAIH,YAAYI,WAAW,EAAE;QAC3BH,cAAcG,WAAW,GAAGJ,YAAYI,WAAW;IACrD;IAEA,IAAIJ,YAAYK,GAAG,IAAI,OAAOL,YAAYK,GAAG,KAAK,UAAU;QAC1D,IAAIC,OAAOC,OAAOC,OAAO,CAACR,YAAYK,GAAG;QAEzC,IAAIC,KAAKG,MAAM,KAAK,GAAG;YACrB,IAAIC,WAAWJ,IAAI,CAAC,EAAE;YAEtB,CAACL,cAAcI,GAAG,CAAC,GAAGK;QACxB;IACF;IAEA,IAAI,OAAOV,YAAYK,GAAG,KAAK,YAAYL,YAAYE,IAAI,EAAE;QAC3DD,cAAcI,GAAG,GAAGL,YAAYE,IAAI;IACtC;IAEA,OAAOD;AACT"}
package/dist/program.js DELETED
@@ -1,13 +0,0 @@
1
- export * from './program/Command.js';
2
- export * from './program/CommandAction.js';
3
- export * from './program/CommandArguments.js';
4
- export * from './program/CommandOptions.js';
5
- export * from './program/getProgramDetail.js';
6
- export * from './program/Program.js';
7
- export * from './program/ProgramCreateOptions.js';
8
- export * from './program/ProgramDetail.js';
9
- export * from './program/ProgramError.js';
10
- export * from './program/ProgramOptions.js';
11
- export * from './program/ProgramStreams.js';
12
-
13
- //# sourceMappingURL=program.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/program.ts"],"sourcesContent":["export * from './program/Command.js';\nexport * from './program/CommandAction.js';\nexport * from './program/CommandArguments.js';\nexport * from './program/CommandOptions.js';\nexport * from './program/getProgramDetail.js';\nexport * from './program/Program.js';\nexport * from './program/ProgramCreateOptions.js';\nexport * from './program/ProgramDetail.js';\nexport * from './program/ProgramError.js';\nexport * from './program/ProgramOptions.js';\nexport * from './program/ProgramStreams.js';\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB;AACrC,cAAc,6BAA6B;AAC3C,cAAc,gCAAgC;AAC9C,cAAc,8BAA8B;AAC5C,cAAc,gCAAgC;AAC9C,cAAc,uBAAuB;AACrC,cAAc,oCAAoC;AAClD,cAAc,6BAA6B;AAC3C,cAAc,4BAA4B;AAC1C,cAAc,8BAA8B;AAC5C,cAAc,8BAA8B"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Detailed error information.
3
- */ export { };
4
-
5
- //# sourceMappingURL=ErrorDetail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/ErrorDetail.ts"],"sourcesContent":["/**\n * Detailed error information.\n */\nexport type ErrorDetail = {\n label: string;\n description?: string;\n stack?: string;\n cause?: {\n description?: string;\n stack?: string;\n };\n};\n"],"names":[],"mappings":"AAAA;;CAEC,GACD,WAQE"}
@@ -1,65 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import * as colors from './colors.js';
4
- import { getErrorDetail } from './getErrorDetail.js';
5
- import { Header } from './Header.js';
6
- import * as icons from './icons.js';
7
- /**
8
- * A component that renders a failure state.
9
- */ export function Failure({ error, errorDetail, ...boxProps }) {
10
- let { label, description, stack, cause } = errorDetail ?? getErrorDetail(error);
11
- return /*#__PURE__*/ _jsxs(Box, {
12
- ...boxProps,
13
- flexDirection: "column",
14
- children: [
15
- /*#__PURE__*/ _jsx(Header, {
16
- icon: icons.error,
17
- children: /*#__PURE__*/ _jsx(Text, {
18
- color: colors.highlighted,
19
- children: label
20
- })
21
- }),
22
- description ? /*#__PURE__*/ _jsx(Box, {
23
- flexDirection: "column",
24
- marginLeft: 2,
25
- children: /*#__PURE__*/ _jsx(Text, {
26
- color: colors.failure,
27
- children: description
28
- })
29
- }) : null,
30
- stack ? /*#__PURE__*/ _jsx(Box, {
31
- flexDirection: "column",
32
- marginTop: 1,
33
- marginLeft: 2,
34
- children: /*#__PURE__*/ _jsx(Text, {
35
- color: colors.muted,
36
- children: stack
37
- })
38
- }) : null,
39
- cause ? /*#__PURE__*/ _jsxs(_Fragment, {
40
- children: [
41
- /*#__PURE__*/ _jsx(Box, {
42
- flexDirection: "column",
43
- marginTop: 1,
44
- marginLeft: 2,
45
- children: /*#__PURE__*/ _jsx(Text, {
46
- color: colors.muted,
47
- children: cause.description
48
- })
49
- }),
50
- cause.stack ? /*#__PURE__*/ _jsx(Box, {
51
- flexDirection: "column",
52
- marginTop: 1,
53
- marginLeft: 2,
54
- children: /*#__PURE__*/ _jsx(Text, {
55
- color: colors.muted,
56
- children: cause.stack
57
- })
58
- }) : null
59
- ]
60
- }) : null
61
- ]
62
- });
63
- }
64
-
65
- //# sourceMappingURL=Failure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/Failure.tsx"],"sourcesContent":["import {Box, Text, type BoxProps} from 'ink';\n\nimport * as colors from './colors.js';\nimport {type ErrorDetail} from './ErrorDetail.js';\nimport {getErrorDetail} from './getErrorDetail.js';\nimport {Header} from './Header.js';\nimport * as icons from './icons.js';\n\n/**\n * {@link Failure} component props.\n */\nexport type FailureProps = BoxProps & {\n /** Error that describes a failure state. Function {@link getErrorDetail} is used for getting all the information from the error; you can use it to implement own retrieval logic and pass the result as `errorDetail` prop. */\n error: Error;\n\n /** Information about the failure state. Overrides information retireved from `error` prop. */\n errorDetail?: ErrorDetail;\n};\n\n/**\n * A component that renders a failure state.\n */\nexport function Failure({error, errorDetail, ...boxProps}: FailureProps) {\n let {label, description, stack, cause} = errorDetail ?? getErrorDetail(error);\n\n return (\n <Box {...boxProps} flexDirection=\"column\">\n <Header icon={icons.error}>\n <Text color={colors.highlighted}>{label}</Text>\n </Header>\n\n {description ? (\n <Box flexDirection=\"column\" marginLeft={2}>\n <Text color={colors.failure}>{description}</Text>\n </Box>\n ) : null}\n\n {stack ? (\n <Box flexDirection=\"column\" marginTop={1} marginLeft={2}>\n <Text color={colors.muted}>{stack}</Text>\n </Box>\n ) : null}\n\n {cause ? (\n <>\n <Box flexDirection=\"column\" marginTop={1} marginLeft={2}>\n <Text color={colors.muted}>{cause.description}</Text>\n </Box>\n\n {cause.stack ? (\n <Box flexDirection=\"column\" marginTop={1} marginLeft={2}>\n <Text color={colors.muted}>{cause.stack}</Text>\n </Box>\n ) : null}\n </>\n ) : null}\n </Box>\n );\n}\n"],"names":["Box","Text","colors","getErrorDetail","Header","icons","Failure","error","errorDetail","boxProps","label","description","stack","cause","flexDirection","icon","color","highlighted","marginLeft","failure","marginTop","muted"],"mappings":";AAAA,SAAQA,GAAG,EAAEC,IAAI,QAAsB,MAAM;AAE7C,YAAYC,YAAY,cAAc;AAEtC,SAAQC,cAAc,QAAO,sBAAsB;AACnD,SAAQC,MAAM,QAAO,cAAc;AACnC,YAAYC,WAAW,aAAa;AAapC;;CAEC,GACD,OAAO,SAASC,QAAQ,EAACC,KAAK,EAAEC,WAAW,EAAE,GAAGC,UAAuB;IACrE,IAAI,EAACC,KAAK,EAAEC,WAAW,EAAEC,KAAK,EAAEC,KAAK,EAAC,GAAGL,eAAeL,eAAeI;IAEvE,qBACE,MAACP;QAAK,GAAGS,QAAQ;QAAEK,eAAc;;0BAC/B,KAACV;gBAAOW,MAAMV,MAAME,KAAK;0BACvB,cAAA,KAACN;oBAAKe,OAAOd,OAAOe,WAAW;8BAAGP;;;YAGnCC,4BACC,KAACX;gBAAIc,eAAc;gBAASI,YAAY;0BACtC,cAAA,KAACjB;oBAAKe,OAAOd,OAAOiB,OAAO;8BAAGR;;iBAE9B;YAEHC,sBACC,KAACZ;gBAAIc,eAAc;gBAASM,WAAW;gBAAGF,YAAY;0BACpD,cAAA,KAACjB;oBAAKe,OAAOd,OAAOmB,KAAK;8BAAGT;;iBAE5B;YAEHC,sBACC;;kCACE,KAACb;wBAAIc,eAAc;wBAASM,WAAW;wBAAGF,YAAY;kCACpD,cAAA,KAACjB;4BAAKe,OAAOd,OAAOmB,KAAK;sCAAGR,MAAMF,WAAW;;;oBAG9CE,MAAMD,KAAK,iBACV,KAACZ;wBAAIc,eAAc;wBAASM,WAAW;wBAAGF,YAAY;kCACpD,cAAA,KAACjB;4BAAKe,OAAOd,OAAOmB,KAAK;sCAAGR,MAAMD,KAAK;;yBAEvC;;iBAEJ;;;AAGV"}
package/dist/ui/Header.js DELETED
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { Spinner } from './Spinner.js';
4
- /**
5
- * Header component.
6
- */ export function Header({ children, icon, showSpinner = false, ...boxProps }) {
7
- return /*#__PURE__*/ _jsxs(Box, {
8
- ...boxProps,
9
- children: [
10
- icon || showSpinner ? /*#__PURE__*/ _jsxs(Box, {
11
- marginRight: 1,
12
- children: [
13
- showSpinner ? /*#__PURE__*/ _jsx(Spinner, {}) : null,
14
- !showSpinner && icon ? /*#__PURE__*/ _jsx(Text, {
15
- children: icon
16
- }) : null
17
- ]
18
- }) : null,
19
- /*#__PURE__*/ _jsx(Box, {
20
- children: children
21
- })
22
- ]
23
- });
24
- }
25
-
26
- //# sourceMappingURL=Header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/Header.tsx"],"sourcesContent":["import {Box, type BoxProps, Text} from 'ink';\nimport {type PropsWithChildren} from 'react';\n\nimport {Spinner} from './Spinner.js';\n\n/**\n * {@link Header} component props.\n */\nexport type HeaderProps = BoxProps & {\n /** Icon (recommended is 1 character) to render before the header itself. */\n icon?: string;\n\n /** Show spinner instead of the icon. */\n showSpinner?: boolean;\n};\n\n/**\n * Header component.\n */\nexport function Header({\n children,\n icon,\n showSpinner = false,\n ...boxProps\n}: PropsWithChildren<HeaderProps>) {\n return (\n <Box {...boxProps}>\n {icon || showSpinner ? (\n <Box marginRight={1}>\n {showSpinner ? <Spinner /> : null}\n {!showSpinner && icon ? <Text>{icon}</Text> : null}\n </Box>\n ) : null}\n <Box>{children}</Box>\n </Box>\n );\n}\n"],"names":["Box","Text","Spinner","Header","children","icon","showSpinner","boxProps","marginRight"],"mappings":";AAAA,SAAQA,GAAG,EAAiBC,IAAI,QAAO,MAAM;AAG7C,SAAQC,OAAO,QAAO,eAAe;AAarC;;CAEC,GACD,OAAO,SAASC,OAAO,EACrBC,QAAQ,EACRC,IAAI,EACJC,cAAc,KAAK,EACnB,GAAGC,UAC4B;IAC/B,qBACE,MAACP;QAAK,GAAGO,QAAQ;;YACdF,QAAQC,4BACP,MAACN;gBAAIQ,aAAa;;oBACfF,4BAAc,KAACJ,eAAa;oBAC5B,CAACI,eAAeD,qBAAO,KAACJ;kCAAMI;yBAAe;;iBAE9C;0BACJ,KAACL;0BAAKI;;;;AAGZ"}
package/dist/ui/Help.js DELETED
@@ -1,64 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import chalk from 'chalk';
3
- import { Box, Text } from 'ink';
4
- import * as colors from './colors.js';
5
- import { Header } from './Header.js';
6
- import * as icons from './icons.js';
7
- /**
8
- * A component that renders help information.
9
- */ export function Help({ program, ...boxProps }) {
10
- return /*#__PURE__*/ _jsxs(Box, {
11
- ...boxProps,
12
- flexDirection: "column",
13
- children: [
14
- /*#__PURE__*/ _jsx(Text, {
15
- children: `${chalk[colors.notice](program.displayName ?? program.name ?? '?')} ${chalk[colors.muted](program.version ?? '?')}`
16
- }),
17
- /*#__PURE__*/ _jsx(Text, {
18
- color: colors.body,
19
- children: program.description
20
- }),
21
- program.commands.length ? /*#__PURE__*/ _jsxs(_Fragment, {
22
- children: [
23
- /*#__PURE__*/ _jsx(Header, {
24
- icon: icons.info,
25
- marginTop: 1,
26
- children: /*#__PURE__*/ _jsx(Text, {
27
- color: colors.highlighted,
28
- children: "Usage"
29
- })
30
- }),
31
- program.commands.map((command)=>{
32
- let line = `${chalk[colors.muted](program.bin ?? '?')} ${command.name}`;
33
- if (command.parameters) {
34
- if (command.parameters.some((parameterConfig)=>!!parameterConfig.required)) {
35
- line += ` ${chalk[colors.muted]('<parameters>')}`;
36
- } else {
37
- line += ` ${chalk[colors.muted]('[<parameters>]')}`;
38
- }
39
- }
40
- if (command.options) {
41
- if (Object.entries(command.options).some(([, optionConfig])=>!!optionConfig.required)) {
42
- line += ` ${chalk[colors.muted]('<options>')}`;
43
- } else {
44
- line += ` ${chalk[colors.muted]('[<options>]')}`;
45
- }
46
- }
47
- if (command.description) {
48
- line += ` ${command.description}`;
49
- }
50
- return /*#__PURE__*/ _jsx(Box, {
51
- marginLeft: 2,
52
- flexDirection: "column",
53
- children: /*#__PURE__*/ _jsx(Text, {
54
- children: line
55
- })
56
- }, command.name);
57
- })
58
- ]
59
- }) : null
60
- ]
61
- });
62
- }
63
-
64
- //# sourceMappingURL=Help.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/Help.tsx"],"sourcesContent":["import chalk from 'chalk';\nimport {Box, Text, type BoxProps} from 'ink';\n\nimport * as colors from './colors.js';\nimport {Header} from './Header.js';\nimport * as icons from './icons.js';\nimport {type Program} from '../program.js';\n\n/**\n * {@link Help} component props.\n */\nexport type HelpProps = BoxProps & {\n /** {@link Program} instance. */\n program: Program;\n};\n\n/**\n * A component that renders help information.\n */\nexport function Help({program, ...boxProps}: HelpProps) {\n return (\n <Box {...boxProps} flexDirection=\"column\">\n <Text>{`${chalk[colors.notice](program.displayName ?? program.name ?? '?')} ${chalk[\n colors.muted\n ](program.version ?? '?')}`}</Text>\n <Text color={colors.body}>{program.description}</Text>\n\n {program.commands.length ? (\n <>\n <Header icon={icons.info} marginTop={1}>\n <Text color={colors.highlighted}>Usage</Text>\n </Header>\n {program.commands.map((command) => {\n let line = `${chalk[colors.muted](program.bin ?? '?')} ${command.name}`;\n\n if (command.parameters) {\n if (command.parameters.some((parameterConfig) => !!parameterConfig.required)) {\n line += ` ${chalk[colors.muted]('<parameters>')}`;\n } else {\n line += ` ${chalk[colors.muted]('[<parameters>]')}`;\n }\n }\n\n if (command.options) {\n if (\n Object.entries(command.options).some(([, optionConfig]) => !!optionConfig.required)\n ) {\n line += ` ${chalk[colors.muted]('<options>')}`;\n } else {\n line += ` ${chalk[colors.muted]('[<options>]')}`;\n }\n }\n\n if (command.description) {\n line += ` ${command.description}`;\n }\n\n return (\n <Box key={command.name} marginLeft={2} flexDirection=\"column\">\n <Text>{line}</Text>\n </Box>\n );\n })}\n </>\n ) : null}\n </Box>\n );\n}\n"],"names":["chalk","Box","Text","colors","Header","icons","Help","program","boxProps","flexDirection","notice","displayName","name","muted","version","color","body","description","commands","length","icon","info","marginTop","highlighted","map","command","line","bin","parameters","some","parameterConfig","required","options","Object","entries","optionConfig","marginLeft"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAAQC,GAAG,EAAEC,IAAI,QAAsB,MAAM;AAE7C,YAAYC,YAAY,cAAc;AACtC,SAAQC,MAAM,QAAO,cAAc;AACnC,YAAYC,WAAW,aAAa;AAWpC;;CAEC,GACD,OAAO,SAASC,KAAK,EAACC,OAAO,EAAE,GAAGC,UAAoB;IACpD,qBACE,MAACP;QAAK,GAAGO,QAAQ;QAAEC,eAAc;;0BAC/B,KAACP;0BAAM,CAAC,EAAEF,KAAK,CAACG,OAAOO,MAAM,CAAC,CAACH,QAAQI,WAAW,IAAIJ,QAAQK,IAAI,IAAI,KAAK,CAAC,EAAEZ,KAAK,CACjFG,OAAOU,KAAK,CACb,CAACN,QAAQO,OAAO,IAAI,KAAK,CAAC;;0BAC3B,KAACZ;gBAAKa,OAAOZ,OAAOa,IAAI;0BAAGT,QAAQU,WAAW;;YAE7CV,QAAQW,QAAQ,CAACC,MAAM,iBACtB;;kCACE,KAACf;wBAAOgB,MAAMf,MAAMgB,IAAI;wBAAEC,WAAW;kCACnC,cAAA,KAACpB;4BAAKa,OAAOZ,OAAOoB,WAAW;sCAAE;;;oBAElChB,QAAQW,QAAQ,CAACM,GAAG,CAAC,CAACC;wBACrB,IAAIC,OAAO,CAAC,EAAE1B,KAAK,CAACG,OAAOU,KAAK,CAAC,CAACN,QAAQoB,GAAG,IAAI,KAAK,CAAC,EAAEF,QAAQb,IAAI,CAAC,CAAC;wBAEvE,IAAIa,QAAQG,UAAU,EAAE;4BACtB,IAAIH,QAAQG,UAAU,CAACC,IAAI,CAAC,CAACC,kBAAoB,CAAC,CAACA,gBAAgBC,QAAQ,GAAG;gCAC5EL,QAAQ,CAAC,CAAC,EAAE1B,KAAK,CAACG,OAAOU,KAAK,CAAC,CAAC,gBAAgB,CAAC;4BACnD,OAAO;gCACLa,QAAQ,CAAC,CAAC,EAAE1B,KAAK,CAACG,OAAOU,KAAK,CAAC,CAAC,kBAAkB,CAAC;4BACrD;wBACF;wBAEA,IAAIY,QAAQO,OAAO,EAAE;4BACnB,IACEC,OAAOC,OAAO,CAACT,QAAQO,OAAO,EAAEH,IAAI,CAAC,CAAC,GAAGM,aAAa,GAAK,CAAC,CAACA,aAAaJ,QAAQ,GAClF;gCACAL,QAAQ,CAAC,CAAC,EAAE1B,KAAK,CAACG,OAAOU,KAAK,CAAC,CAAC,aAAa,CAAC;4BAChD,OAAO;gCACLa,QAAQ,CAAC,CAAC,EAAE1B,KAAK,CAACG,OAAOU,KAAK,CAAC,CAAC,eAAe,CAAC;4BAClD;wBACF;wBAEA,IAAIY,QAAQR,WAAW,EAAE;4BACvBS,QAAQ,CAAC,CAAC,EAAED,QAAQR,WAAW,CAAC,CAAC;wBACnC;wBAEA,qBACE,KAAChB;4BAAuBmC,YAAY;4BAAG3B,eAAc;sCACnD,cAAA,KAACP;0CAAMwB;;2BADCD,QAAQb,IAAI;oBAI1B;;iBAEA;;;AAGV"}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from 'ink';
3
- import { useState, useEffect } from 'react';
4
- const SPINNER = {
5
- interval: 80,
6
- frames: [
7
- '⠋',
8
- '⠙',
9
- '⠹',
10
- '⠸',
11
- '⠼',
12
- '⠴',
13
- '⠦',
14
- '⠧',
15
- '⠇',
16
- '⠏'
17
- ]
18
- };
19
- /**
20
- * Spinner component.
21
- */ export function Spinner() {
22
- let [frame, setFrame] = useState(0);
23
- useEffect(()=>{
24
- let timer = setInterval(()=>{
25
- setFrame((previousFrame)=>{
26
- let isLastFrame = previousFrame === SPINNER.frames.length - 1;
27
- return isLastFrame ? 0 : previousFrame + 1;
28
- });
29
- }, SPINNER.interval);
30
- return ()=>{
31
- clearInterval(timer);
32
- };
33
- }, []);
34
- return /*#__PURE__*/ _jsx(Text, {
35
- children: SPINNER.frames[frame]
36
- });
37
- }
38
-
39
- //# sourceMappingURL=Spinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/Spinner.tsx"],"sourcesContent":["import {Text} from 'ink';\nimport {useState, useEffect} from 'react';\n\nconst SPINNER = {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n};\n\n/**\n * Spinner component.\n */\nexport function Spinner() {\n let [frame, setFrame] = useState(0);\n\n useEffect(() => {\n let timer = setInterval(() => {\n setFrame((previousFrame) => {\n let isLastFrame = previousFrame === SPINNER.frames.length - 1;\n\n return isLastFrame ? 0 : previousFrame + 1;\n });\n }, SPINNER.interval);\n\n return () => {\n clearInterval(timer);\n };\n }, []);\n\n return <Text>{SPINNER.frames[frame]}</Text>;\n}\n"],"names":["Text","useState","useEffect","SPINNER","interval","frames","Spinner","frame","setFrame","timer","setInterval","previousFrame","isLastFrame","length","clearInterval"],"mappings":";AAAA,SAAQA,IAAI,QAAO,MAAM;AACzB,SAAQC,QAAQ,EAAEC,SAAS,QAAO,QAAQ;AAE1C,MAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA;;CAEC,GACD,OAAO,SAASC;IACd,IAAI,CAACC,OAAOC,SAAS,GAAGP,SAAS;IAEjCC,UAAU;QACR,IAAIO,QAAQC,YAAY;YACtBF,SAAS,CAACG;gBACR,IAAIC,cAAcD,kBAAkBR,QAAQE,MAAM,CAACQ,MAAM,GAAG;gBAE5D,OAAOD,cAAc,IAAID,gBAAgB;YAC3C;QACF,GAAGR,QAAQC,QAAQ;QAEnB,OAAO;YACLU,cAAcL;QAChB;IACF,GAAG,EAAE;IAEL,qBAAO,KAACT;kBAAMG,QAAQE,MAAM,CAACE,MAAM;;AACrC"}
package/dist/ui/colors.js DELETED
@@ -1,12 +0,0 @@
1
- export const body = 'white';
2
- export const highlighted = 'whiteBright';
3
- export const muted = 'gray';
4
- export const unselected = 'gray';
5
- export const selected = 'greenBright';
6
- export const notice = 'magenta';
7
- export const info = 'cyan';
8
- export const success = 'green';
9
- export const warning = 'yellow';
10
- export const failure = 'red';
11
-
12
- //# sourceMappingURL=colors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/colors.ts"],"sourcesContent":["export const body = 'white';\nexport const highlighted = 'whiteBright';\nexport const muted = 'gray';\n\nexport const unselected = 'gray';\nexport const selected = 'greenBright';\n\nexport const notice = 'magenta';\n\nexport const info = 'cyan';\nexport const success = 'green';\nexport const warning = 'yellow';\nexport const failure = 'red';\n"],"names":["body","highlighted","muted","unselected","selected","notice","info","success","warning","failure"],"mappings":"AAAA,OAAO,MAAMA,OAAO,QAAQ;AAC5B,OAAO,MAAMC,cAAc,cAAc;AACzC,OAAO,MAAMC,QAAQ,OAAO;AAE5B,OAAO,MAAMC,aAAa,OAAO;AACjC,OAAO,MAAMC,WAAW,cAAc;AAEtC,OAAO,MAAMC,SAAS,UAAU;AAEhC,OAAO,MAAMC,OAAO,OAAO;AAC3B,OAAO,MAAMC,UAAU,QAAQ;AAC/B,OAAO,MAAMC,UAAU,SAAS;AAChC,OAAO,MAAMC,UAAU,MAAM"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=Form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/Form.ts"],"sourcesContent":["import {type FC} from 'react';\n\nimport {type FormConfig} from './FormConfig.js';\nimport {type FormProps} from './FormProps.js';\n\n/**\n * Form component.\n */\nexport type Form<C extends FormConfig> = FC<FormProps<C>> & {config: C};\n"],"names":[],"mappings":"AAAA,WAQwE"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=FormConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormConfig.ts"],"sourcesContent":["import {type FormRowsConfig} from './FormRowsConfig.js';\n\n/**\n * Form configuration.\n */\nexport type FormConfig = {\n /** Form rows configuration. */\n rows: FormRowsConfig;\n};\n"],"names":[],"mappings":"AAAA,WAQE"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=FormProps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormProps.ts"],"sourcesContent":["import {type BoxProps} from 'ink';\n\nimport {type FormConfig} from './FormConfig.js';\nimport {type FormRowConfig} from './FormRowConfig.js';\nimport {type FormValues} from './FormValues.js';\n\n/** A type that creates string literal union type with names of rows that need some props. */\ntype FormRowWithPropsNames<C extends FormConfig> = {\n [P in keyof C['rows']]: C['rows'][P]['type'] extends 'text'\n ? never\n : C['rows'][P]['type'] extends 'confirm'\n ? never\n : C['rows'][P]['type'] extends 'select'\n ? P\n : never;\n}[keyof C['rows']];\n\ntype FormPropsRow<C extends FormRowConfig> = C['type'] extends 'text'\n ? never\n : C['type'] extends 'confirm'\n ? never\n : C['type'] extends 'select'\n ? {\n choices: Array<{value: string; label: string}>;\n }\n : never;\n\ntype FormPropsRows<C extends FormConfig> = Pick<\n {\n [P in keyof C['rows']]: FormPropsRow<C['rows'][P]>;\n },\n FormRowWithPropsNames<C>\n>;\n\n/**\n * Form component props.\n */\nexport type FormProps<C extends FormConfig> = FormPropsRows<C> extends Record<\n number | string | symbol,\n never\n>\n ? BoxProps & {\n /** Props for each row. */\n rows?: null | undefined;\n\n /** Form values */\n values: FormValues<C>;\n\n /** Handler function that is called when value changes. */\n onChange?: ((formResult: FormValues<C>) => void) | undefined;\n\n /** Handler function that is called when the value is accepted. */\n onComplete: (formResult: FormValues<C>) => void;\n }\n : BoxProps & {\n /** Props for each row. */\n rows: FormPropsRows<C>;\n\n /** Form values */\n values: FormValues<C>;\n\n /** Handler function that is called when value changes. */\n onChange?: ((formResult: FormValues<C>) => void) | undefined;\n\n /** Handler function that is called when the value is accepted. */\n onComplete: (formResult: FormValues<C>) => void;\n };\n"],"names":[],"mappings":"AAAA,WAkEM"}
@@ -1,3 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any -- needed */ export { };
2
-
3
- //# sourceMappingURL=FormResult.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormResult.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any -- needed */\nimport {type Form} from './Form.js';\nimport {type FormValues} from './FormValues.js';\n\n/**\n * Form result. It is the value of all form rows after the last one is accepted.\n */\nexport type FormResult<F extends Pick<Form<any>, 'config'>> = FormValues<F['config']>;\n"],"names":[],"mappings":"AAAA,+DAA+D,GAC/D,WAMsF"}
@@ -1,59 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useCallback } from 'react';
3
- import { SelectInput } from './SelectInput.js';
4
- import { TextInput } from './TextInput.js';
5
- /**
6
- * Form row component.
7
- */ export function FormRow({ rowName, config, rows, value, focus, isComplete, onChange, onComplete, ...boxProps }) {
8
- // TODO: Each input component handles values and events differently; the APIs should be adjusted.
9
- let handleChange = useCallback((newValue)=>{
10
- onChange(newValue, rowName);
11
- }, [
12
- rowName,
13
- onChange
14
- ]);
15
- let handleFinish = useCallback((newValue)=>{
16
- onComplete(newValue, rowName);
17
- }, [
18
- rowName,
19
- onComplete
20
- ]);
21
- let handleSelectFinish = useCallback((item)=>{
22
- onComplete(item.value, rowName);
23
- }, [
24
- rowName,
25
- onComplete
26
- ]);
27
- switch(config.type){
28
- case 'text':
29
- {
30
- return /*#__PURE__*/ _jsx(TextInput, {
31
- label: config.label ?? '',
32
- validate: config.validate,
33
- value: value,
34
- focus: focus,
35
- isComplete: isComplete,
36
- onChange: handleChange,
37
- onSubmit: handleFinish,
38
- ...boxProps
39
- }, String(rowName));
40
- }
41
- case 'select':
42
- {
43
- return /*#__PURE__*/ _jsx(SelectInput, {
44
- label: config.label ?? '',
45
- items: rows ? rows[rowName].choices : [],
46
- focus: focus,
47
- isComplete: isComplete,
48
- onSelect: handleSelectFinish,
49
- ...boxProps
50
- }, String(rowName));
51
- }
52
- default:
53
- {
54
- return null;
55
- }
56
- }
57
- }
58
-
59
- //# sourceMappingURL=FormRow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormRow.tsx"],"sourcesContent":["import {type BoxProps} from 'ink';\nimport {useCallback} from 'react';\n\nimport {type FormConfig} from './FormConfig.js';\nimport {type FormProps} from './FormProps.js';\nimport {type FormRowConfig} from './FormRowConfig.js';\nimport {SelectInput} from './SelectInput.js';\nimport {TextInput} from './TextInput.js';\n\n/**\n * Form row component props.\n */\ntype FormRowProps<C extends FormConfig> = BoxProps & {\n /** Form row configuration. */\n config: FormRowConfig;\n\n // TODO: Should all rows props be passed to each row?\n /** Props of all form rows. */\n rows: FormProps<C>['rows'] | null;\n\n /** Row name. */\n rowName: keyof C['rows'];\n\n /** Value. */\n value: unknown;\n\n /** Should component listen to Listen to user's input? Useful in case there are multiple input components at the same time and input must be \"routed\" to a specific component. */\n focus: boolean;\n\n /** Handler function that is called when value changes. */\n onChange: (value: unknown, inputName: keyof C['rows']) => void;\n\n /** Handler function that is called when the value is accepted. */\n onComplete: (value: unknown, inputName: keyof C['rows']) => void;\n\n /** Indicates whether value has been accepted. Component in the row then doesn't accept more input. */\n isComplete: boolean;\n};\n\n/**\n * Form row component.\n */\nexport function FormRow<C extends FormConfig>({\n rowName,\n config,\n rows,\n value,\n focus,\n isComplete,\n onChange,\n onComplete,\n ...boxProps\n}: FormRowProps<C>) {\n // TODO: Each input component handles values and events differently; the APIs should be adjusted.\n let handleChange = useCallback(\n (newValue: unknown) => {\n onChange(newValue, rowName);\n },\n [rowName, onChange],\n );\n\n let handleFinish = useCallback(\n (newValue: unknown) => {\n onComplete(newValue, rowName);\n },\n [rowName, onComplete],\n );\n\n let handleSelectFinish = useCallback(\n (item: {value: unknown}) => {\n onComplete(item.value, rowName);\n },\n [rowName, onComplete],\n );\n\n switch (config.type) {\n case 'text': {\n return (\n <TextInput\n key={String(rowName)}\n label={config.label ?? ''}\n validate={config.validate}\n value={value as string}\n focus={focus}\n isComplete={isComplete}\n onChange={handleChange}\n onSubmit={handleFinish}\n {...boxProps}\n />\n );\n }\n case 'select': {\n return (\n <SelectInput\n key={String(rowName)}\n label={config.label ?? ''}\n items={\n rows\n ? (\n (\n rows as {\n [key: string]: unknown;\n }\n )[rowName as string] as {choices: Array<{value: string; label: string}>}\n ).choices\n : []\n }\n focus={focus}\n isComplete={isComplete}\n onSelect={handleSelectFinish}\n {...boxProps}\n />\n );\n }\n default: {\n return null;\n }\n }\n}\n"],"names":["useCallback","SelectInput","TextInput","FormRow","rowName","config","rows","value","focus","isComplete","onChange","onComplete","boxProps","handleChange","newValue","handleFinish","handleSelectFinish","item","type","label","validate","onSubmit","String","items","choices","onSelect"],"mappings":";AACA,SAAQA,WAAW,QAAO,QAAQ;AAKlC,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,SAAS,QAAO,iBAAiB;AAgCzC;;CAEC,GACD,OAAO,SAASC,QAA8B,EAC5CC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,UAAU,EACVC,QAAQ,EACRC,UAAU,EACV,GAAGC,UACa;IAChB,iGAAiG;IACjG,IAAIC,eAAeb,YACjB,CAACc;QACCJ,SAASI,UAAUV;IACrB,GACA;QAACA;QAASM;KAAS;IAGrB,IAAIK,eAAef,YACjB,CAACc;QACCH,WAAWG,UAAUV;IACvB,GACA;QAACA;QAASO;KAAW;IAGvB,IAAIK,qBAAqBhB,YACvB,CAACiB;QACCN,WAAWM,KAAKV,KAAK,EAAEH;IACzB,GACA;QAACA;QAASO;KAAW;IAGvB,OAAQN,OAAOa,IAAI;QACjB,KAAK;YAAQ;gBACX,qBACE,KAAChB;oBAECiB,OAAOd,OAAOc,KAAK,IAAI;oBACvBC,UAAUf,OAAOe,QAAQ;oBACzBb,OAAOA;oBACPC,OAAOA;oBACPC,YAAYA;oBACZC,UAAUG;oBACVQ,UAAUN;oBACT,GAAGH,QAAQ;mBARPU,OAAOlB;YAWlB;QACA,KAAK;YAAU;gBACb,qBACE,KAACH;oBAECkB,OAAOd,OAAOc,KAAK,IAAI;oBACvBI,OACEjB,OACI,AACE,AACEA,IAGD,CAACF,QAAkB,CACpBoB,OAAO,GACT,EAAE;oBAERhB,OAAOA;oBACPC,YAAYA;oBACZgB,UAAUT;oBACT,GAAGJ,QAAQ;mBAhBPU,OAAOlB;YAmBlB;QACA;YAAS;gBACP,OAAO;YACT;IACF;AACF"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Form row configuration.
3
- */ export { };
4
-
5
- //# sourceMappingURL=FormRowConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormRowConfig.ts"],"sourcesContent":["/**\n * Form row configuration.\n */\nexport type FormRowConfig =\n | {\n type: 'confirm';\n label?: string;\n }\n | {\n type: 'select';\n label?: string;\n }\n | {\n type: 'text';\n label?: string;\n validate?: (value: string) => void;\n };\n"],"names":[],"mappings":"AAAA;;CAEC,GACD,WAaM"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=FormRowsConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormRowsConfig.ts"],"sourcesContent":["import {type FormRowConfig} from './FormRowConfig.js';\n\n/**\n * Form rows configuration.\n */\nexport type FormRowsConfig = Record<string, FormRowConfig>;\n"],"names":[],"mappings":"AAAA,WAK2D"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=FormValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormValue.ts"],"sourcesContent":["import {type FormRowConfig} from './FormRowConfig.js';\n\nexport type StringFormValue = {value: string; isComplete: boolean};\n\n/**\n * Form value.\n */\nexport type FormValue<C extends FormRowConfig> = C['type'] extends 'text'\n ? StringFormValue\n : C['type'] extends 'select'\n ? StringFormValue\n : never;\n"],"names":[],"mappings":"AAAA,WAWU"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=FormValues.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/FormValues.ts"],"sourcesContent":["import {type FormConfig} from './FormConfig.js';\nimport {type FormValue} from './FormValue.js';\n\n/**\n * Form values.\n */\nexport type FormValues<C extends FormConfig> = {\n [P in keyof C['rows']]: FormValue<C['rows'][P]>;\n};\n"],"names":[],"mappings":"AAAA,WAQE"}
@@ -1,113 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text, useInput } from 'ink';
3
- import _ from 'lodash';
4
- import { useState, useEffect, useRef } from 'react';
5
- import * as colors from '../colors.js';
6
- import * as icons from '../icons.js';
7
- import { rotate } from '../internals.js';
8
- /**
9
- * Select input component.
10
- */ export function SelectInput({ label, items = [], focus = true, initialIndex = 0, limit: userDefinedLimit, onSelect, onHighlight, isComplete, ...boxProps }) {
11
- let [rotatedIndex, setRotatedIndex] = useState(0);
12
- let [selectedIndex, setSelectedIndex] = useState(initialIndex);
13
- let hasLimit = typeof userDefinedLimit === 'number' && items.length > userDefinedLimit;
14
- let limit = hasLimit ? Math.min(userDefinedLimit, items.length) : items.length;
15
- let previousItems = useRef(items);
16
- useEffect(()=>{
17
- if (!_.isEqual(previousItems.current.map((item)=>item.value), items.map((item)=>item.value))) {
18
- setRotatedIndex(0);
19
- setSelectedIndex(0);
20
- }
21
- previousItems.current = items;
22
- }, [
23
- items
24
- ]);
25
- useInput((input, key)=>{
26
- if (input === 'k' || key.upArrow) {
27
- let lastIndex = (hasLimit ? limit : items.length) - 1;
28
- let isAtFirstIndex = selectedIndex === 0;
29
- let nextIndex = hasLimit ? selectedIndex : lastIndex;
30
- let nextRotatedIndex = isAtFirstIndex ? rotatedIndex + 1 : rotatedIndex;
31
- let nextSelectedIndex = isAtFirstIndex ? nextIndex : selectedIndex - 1;
32
- setRotatedIndex(nextRotatedIndex);
33
- setSelectedIndex(nextSelectedIndex);
34
- let slicedItems = hasLimit ? rotate(items, nextRotatedIndex).slice(0, limit) : items;
35
- if (typeof onHighlight === 'function') {
36
- onHighlight(slicedItems[nextSelectedIndex]);
37
- }
38
- }
39
- if (input === 'j' || key.downArrow) {
40
- let isAtLastIndex = selectedIndex === (hasLimit ? limit : items.length) - 1;
41
- let nextIndex = hasLimit ? selectedIndex : 0;
42
- let nextRotatedIndex = isAtLastIndex ? rotatedIndex - 1 : rotatedIndex;
43
- let nextSelectedIndex = isAtLastIndex ? nextIndex : selectedIndex + 1;
44
- setRotatedIndex(nextRotatedIndex);
45
- setSelectedIndex(nextSelectedIndex);
46
- let slicedItems = hasLimit ? rotate(items, nextRotatedIndex).slice(0, limit) : items;
47
- if (typeof onHighlight === 'function') {
48
- onHighlight(slicedItems[nextSelectedIndex]);
49
- }
50
- }
51
- if (key.return) {
52
- let slicedItems = hasLimit ? rotate(items, rotatedIndex).slice(0, limit) : items;
53
- if (typeof onSelect === 'function') {
54
- onSelect(slicedItems[selectedIndex]);
55
- }
56
- }
57
- }, {
58
- isActive: focus
59
- });
60
- let visibleItems = hasLimit ? rotate(items, rotatedIndex).slice(0, limit) : items;
61
- return /*#__PURE__*/ _jsxs(Box, {
62
- ...boxProps,
63
- children: [
64
- /*#__PURE__*/ _jsx(Box, {
65
- marginRight: 1,
66
- children: /*#__PURE__*/ _jsx(Text, {
67
- children: isComplete ? icons.success : icons.question
68
- })
69
- }),
70
- /*#__PURE__*/ _jsxs(Box, {
71
- flexDirection: "column",
72
- children: [
73
- /*#__PURE__*/ _jsx(Box, {
74
- marginRight: 1,
75
- children: /*#__PURE__*/ _jsx(Text, {
76
- color: colors.highlighted,
77
- children: label
78
- })
79
- }),
80
- isComplete ? /*#__PURE__*/ _jsx(Text, {
81
- color: colors.body,
82
- children: items[selectedIndex]?.label ?? String(items[selectedIndex]?.value)
83
- }) : /*#__PURE__*/ _jsx(Box, {
84
- flexDirection: "column",
85
- children: visibleItems.map((item, index)=>{
86
- let isSelected = index === selectedIndex;
87
- return /*#__PURE__*/ _jsxs(Box, {
88
- children: [
89
- /*#__PURE__*/ _jsx(Box, {
90
- marginRight: 1,
91
- children: isSelected ? /*#__PURE__*/ _jsx(Text, {
92
- color: colors.selected,
93
- children: icons.selectedCircle
94
- }) : /*#__PURE__*/ _jsx(Text, {
95
- color: colors.unselected,
96
- children: icons.unselectedCircle
97
- })
98
- }),
99
- /*#__PURE__*/ _jsx(Text, {
100
- color: isSelected ? colors.highlighted : colors.muted,
101
- children: item.label
102
- })
103
- ]
104
- }, item.value);
105
- })
106
- })
107
- ]
108
- })
109
- ]
110
- });
111
- }
112
-
113
- //# sourceMappingURL=SelectInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/SelectInput.tsx"],"sourcesContent":["import {Box, type BoxProps, Text, useInput, type Key} from 'ink';\nimport _ from 'lodash';\nimport {useState, useEffect, useRef} from 'react';\n\nimport {type SelectInputItem} from './SelectInputItem.js';\nimport * as colors from '../colors.js';\nimport * as icons from '../icons.js';\nimport {rotate} from '../internals.js';\n\n/**\n * {@linkcode SelectInput} component props.\n */\ntype SelectInputProps = BoxProps & {\n /** Text to display as a label. */\n label: string;\n\n /** Items to display in a list. */\n items: SelectInputItem[];\n\n /** Should component listen to user's input? Useful in case there are multiple input components at the same time and input must be handled only by a specific component. */\n focus?: boolean | undefined;\n\n /** Index of initially selected item. */\n initialIndex?: number | undefined;\n\n /** Number of items to display. */\n limit?: number | undefined;\n\n /** Handler function that is called when item is selected. */\n onSelect?: ((item: SelectInputItem) => void) | undefined;\n\n /** Handler function that is called when item is highlighted. */\n onHighlight?: ((item: SelectInputItem) => void) | undefined;\n\n /** Indicates whether value has been accepted. Component then doesn't accept more input. */\n isComplete?: boolean | undefined;\n};\n\n/**\n * Select input component.\n */\nexport function SelectInput({\n label,\n items = [],\n focus = true,\n initialIndex = 0,\n limit: userDefinedLimit,\n onSelect,\n onHighlight,\n isComplete,\n ...boxProps\n}: SelectInputProps): JSX.Element {\n let [rotatedIndex, setRotatedIndex] = useState(0);\n let [selectedIndex, setSelectedIndex] = useState(initialIndex);\n let hasLimit = typeof userDefinedLimit === 'number' && items.length > userDefinedLimit;\n let limit = hasLimit ? Math.min(userDefinedLimit as number, items.length) : items.length;\n let previousItems = useRef<SelectInputItem[]>(items);\n\n useEffect(() => {\n if (\n !_.isEqual(\n previousItems.current.map((item) => item.value),\n items.map((item) => item.value),\n )\n ) {\n setRotatedIndex(0);\n setSelectedIndex(0);\n }\n\n previousItems.current = items;\n }, [items]);\n\n useInput(\n (input: string, key: Key) => {\n if (input === 'k' || key.upArrow) {\n let lastIndex = (hasLimit ? limit : items.length) - 1;\n let isAtFirstIndex = selectedIndex === 0;\n let nextIndex = hasLimit ? selectedIndex : lastIndex;\n let nextRotatedIndex = isAtFirstIndex ? rotatedIndex + 1 : rotatedIndex;\n let nextSelectedIndex = isAtFirstIndex ? nextIndex : selectedIndex - 1;\n\n setRotatedIndex(nextRotatedIndex);\n setSelectedIndex(nextSelectedIndex);\n\n let slicedItems = hasLimit ? rotate(items, nextRotatedIndex).slice(0, limit) : items;\n\n if (typeof onHighlight === 'function') {\n onHighlight(slicedItems[nextSelectedIndex] as SelectInputItem);\n }\n }\n\n if (input === 'j' || key.downArrow) {\n let isAtLastIndex = selectedIndex === (hasLimit ? limit : items.length) - 1;\n let nextIndex = hasLimit ? selectedIndex : 0;\n let nextRotatedIndex = isAtLastIndex ? rotatedIndex - 1 : rotatedIndex;\n let nextSelectedIndex = isAtLastIndex ? nextIndex : selectedIndex + 1;\n\n setRotatedIndex(nextRotatedIndex);\n setSelectedIndex(nextSelectedIndex);\n\n let slicedItems = hasLimit ? rotate(items, nextRotatedIndex).slice(0, limit) : items;\n\n if (typeof onHighlight === 'function') {\n onHighlight(slicedItems[nextSelectedIndex] as SelectInputItem);\n }\n }\n\n if (key.return) {\n let slicedItems = hasLimit ? rotate(items, rotatedIndex).slice(0, limit) : items;\n\n if (typeof onSelect === 'function') {\n onSelect(slicedItems[selectedIndex] as SelectInputItem);\n }\n }\n },\n {isActive: focus},\n );\n\n let visibleItems: SelectInputItem[] = hasLimit\n ? rotate(items, rotatedIndex).slice(0, limit)\n : items;\n\n return (\n <Box {...boxProps}>\n <Box marginRight={1}>\n <Text>{isComplete ? icons.success : icons.question}</Text>\n </Box>\n\n <Box flexDirection=\"column\">\n <Box marginRight={1}>\n <Text color={colors.highlighted}>{label}</Text>\n </Box>\n {isComplete ? (\n <Text color={colors.body}>\n {items[selectedIndex]?.label ?? String(items[selectedIndex]?.value)}\n </Text>\n ) : (\n <Box flexDirection=\"column\">\n {visibleItems.map((item, index) => {\n let isSelected = index === selectedIndex;\n\n return (\n <Box key={item.value}>\n <Box marginRight={1}>\n {isSelected ? (\n <Text color={colors.selected}>{icons.selectedCircle}</Text>\n ) : (\n <Text color={colors.unselected}>{icons.unselectedCircle}</Text>\n )}\n </Box>\n <Text color={isSelected ? colors.highlighted : colors.muted}>{item.label}</Text>\n </Box>\n );\n })}\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n"],"names":["Box","Text","useInput","_","useState","useEffect","useRef","colors","icons","rotate","SelectInput","label","items","focus","initialIndex","limit","userDefinedLimit","onSelect","onHighlight","isComplete","boxProps","rotatedIndex","setRotatedIndex","selectedIndex","setSelectedIndex","hasLimit","length","Math","min","previousItems","isEqual","current","map","item","value","input","key","upArrow","lastIndex","isAtFirstIndex","nextIndex","nextRotatedIndex","nextSelectedIndex","slicedItems","slice","downArrow","isAtLastIndex","return","isActive","visibleItems","marginRight","success","question","flexDirection","color","highlighted","body","String","index","isSelected","selected","selectedCircle","unselected","unselectedCircle","muted"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Select input item.
3
- */ export { };
4
-
5
- //# sourceMappingURL=SelectInputItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ui/form/SelectInputItem.ts"],"sourcesContent":["/**\n * Select input item.\n */\nexport type SelectInputItem = {\n /** Text to display as a label. */\n label: string;\n\n /** Value. */\n value: string;\n};\n"],"names":[],"mappings":"AAAA;;CAEC,GACD,WAME"}