@detergent-software/atk 3.0.0-dev.2 → 3.0.0-dev.20

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 (265) hide show
  1. package/README.md +361 -0
  2. package/build/commands/audit.d.ts.map +1 -1
  3. package/build/commands/audit.js +79 -37
  4. package/build/commands/audit.js.map +1 -1
  5. package/build/commands/browse.d.ts.map +1 -1
  6. package/build/commands/browse.js +119 -154
  7. package/build/commands/browse.js.map +1 -1
  8. package/build/commands/cache.d.ts.map +1 -1
  9. package/build/commands/cache.js +13 -15
  10. package/build/commands/cache.js.map +1 -1
  11. package/build/commands/config.d.ts +1 -1
  12. package/build/commands/config.d.ts.map +1 -1
  13. package/build/commands/config.js +7 -3
  14. package/build/commands/config.js.map +1 -1
  15. package/build/commands/diff.d.ts.map +1 -1
  16. package/build/commands/diff.js +4 -117
  17. package/build/commands/diff.js.map +1 -1
  18. package/build/commands/freeze.d.ts +1 -2
  19. package/build/commands/freeze.d.ts.map +1 -1
  20. package/build/commands/freeze.js +17 -37
  21. package/build/commands/freeze.js.map +1 -1
  22. package/build/commands/info.d.ts +1 -2
  23. package/build/commands/info.d.ts.map +1 -1
  24. package/build/commands/info.js +36 -35
  25. package/build/commands/info.js.map +1 -1
  26. package/build/commands/init.d.ts.map +1 -1
  27. package/build/commands/init.js +39 -405
  28. package/build/commands/init.js.map +1 -1
  29. package/build/commands/install.d.ts.map +1 -1
  30. package/build/commands/install.js +49 -34
  31. package/build/commands/install.js.map +1 -1
  32. package/build/commands/list.d.ts +2 -2
  33. package/build/commands/list.d.ts.map +1 -1
  34. package/build/commands/list.js +138 -27
  35. package/build/commands/list.js.map +1 -1
  36. package/build/commands/outdated.d.ts.map +1 -1
  37. package/build/commands/outdated.js +20 -10
  38. package/build/commands/outdated.js.map +1 -1
  39. package/build/commands/pin.d.ts +1 -2
  40. package/build/commands/pin.d.ts.map +1 -1
  41. package/build/commands/pin.js +44 -47
  42. package/build/commands/pin.js.map +1 -1
  43. package/build/commands/prune.d.ts.map +1 -1
  44. package/build/commands/prune.js +76 -151
  45. package/build/commands/prune.js.map +1 -1
  46. package/build/commands/publish.d.ts +3 -1
  47. package/build/commands/publish.d.ts.map +1 -1
  48. package/build/commands/publish.js +67 -390
  49. package/build/commands/publish.js.map +1 -1
  50. package/build/commands/search.d.ts.map +1 -1
  51. package/build/commands/search.js +14 -19
  52. package/build/commands/search.js.map +1 -1
  53. package/build/commands/setup.d.ts +1 -1
  54. package/build/commands/setup.d.ts.map +1 -1
  55. package/build/commands/setup.js +49 -242
  56. package/build/commands/setup.js.map +1 -1
  57. package/build/commands/sync.d.ts.map +1 -1
  58. package/build/commands/sync.js +114 -121
  59. package/build/commands/sync.js.map +1 -1
  60. package/build/commands/thaw.d.ts +1 -2
  61. package/build/commands/thaw.d.ts.map +1 -1
  62. package/build/commands/thaw.js +19 -37
  63. package/build/commands/thaw.js.map +1 -1
  64. package/build/commands/uninstall.d.ts.map +1 -1
  65. package/build/commands/uninstall.js +106 -221
  66. package/build/commands/uninstall.js.map +1 -1
  67. package/build/commands/unpin.d.ts +1 -2
  68. package/build/commands/unpin.d.ts.map +1 -1
  69. package/build/commands/unpin.js +23 -38
  70. package/build/commands/unpin.js.map +1 -1
  71. package/build/commands/update.d.ts.map +1 -1
  72. package/build/commands/update.js +37 -25
  73. package/build/commands/update.js.map +1 -1
  74. package/build/commands/why.d.ts +1 -1
  75. package/build/commands/why.d.ts.map +1 -1
  76. package/build/commands/why.js +14 -6
  77. package/build/commands/why.js.map +1 -1
  78. package/build/components/AssetDetail.d.ts +1 -3
  79. package/build/components/AssetDetail.d.ts.map +1 -1
  80. package/build/components/AssetDetail.js +24 -21
  81. package/build/components/AssetDetail.js.map +1 -1
  82. package/build/components/AssetTable.d.ts +5 -2
  83. package/build/components/AssetTable.d.ts.map +1 -1
  84. package/build/components/AssetTable.js +37 -40
  85. package/build/components/AssetTable.js.map +1 -1
  86. package/build/components/BrowseExpandedBundle.d.ts +7 -0
  87. package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
  88. package/build/components/BrowseExpandedBundle.js +19 -0
  89. package/build/components/BrowseExpandedBundle.js.map +1 -1
  90. package/build/components/BrowseExpandedRow.d.ts +4 -1
  91. package/build/components/BrowseExpandedRow.d.ts.map +1 -1
  92. package/build/components/BrowseExpandedRow.js +24 -3
  93. package/build/components/BrowseExpandedRow.js.map +1 -1
  94. package/build/components/BrowseList.d.ts +3 -1
  95. package/build/components/BrowseList.d.ts.map +1 -1
  96. package/build/components/BrowseList.js +52 -42
  97. package/build/components/BrowseList.js.map +1 -1
  98. package/build/components/DiffView.d.ts +0 -2
  99. package/build/components/DiffView.d.ts.map +1 -1
  100. package/build/components/DiffView.js +11 -5
  101. package/build/components/DiffView.js.map +1 -1
  102. package/build/components/DryRunBanner.d.ts +3 -3
  103. package/build/components/DryRunBanner.d.ts.map +1 -1
  104. package/build/components/DryRunBanner.js +2 -2
  105. package/build/components/DryRunBanner.js.map +1 -1
  106. package/build/components/FilterBar.d.ts +10 -3
  107. package/build/components/FilterBar.d.ts.map +1 -1
  108. package/build/components/FilterBar.js +4 -4
  109. package/build/components/FilterBar.js.map +1 -1
  110. package/build/components/HelpBar.d.ts.map +1 -1
  111. package/build/components/HelpBar.js +3 -3
  112. package/build/components/HelpBar.js.map +1 -1
  113. package/build/components/InitSuccess.d.ts +5 -0
  114. package/build/components/InitSuccess.d.ts.map +1 -0
  115. package/build/components/InitSuccess.js +20 -0
  116. package/build/components/InitSuccess.js.map +1 -0
  117. package/build/components/InstallSummary.d.ts +3 -3
  118. package/build/components/InstallSummary.d.ts.map +1 -1
  119. package/build/components/InstallSummary.js +2 -2
  120. package/build/components/InstallSummary.js.map +1 -1
  121. package/build/components/Link.d.ts +7 -0
  122. package/build/components/Link.d.ts.map +1 -0
  123. package/build/components/Link.js +6 -0
  124. package/build/components/Link.js.map +1 -0
  125. package/build/components/ListActionBar.d.ts +11 -0
  126. package/build/components/ListActionBar.d.ts.map +1 -0
  127. package/build/components/ListActionBar.js +30 -0
  128. package/build/components/ListActionBar.js.map +1 -0
  129. package/build/components/ListBrowseList.d.ts +27 -0
  130. package/build/components/ListBrowseList.d.ts.map +1 -0
  131. package/build/components/ListBrowseList.js +57 -0
  132. package/build/components/ListBrowseList.js.map +1 -0
  133. package/build/components/ListExpandedRow.d.ts +38 -0
  134. package/build/components/ListExpandedRow.d.ts.map +1 -0
  135. package/build/components/ListExpandedRow.js +46 -0
  136. package/build/components/ListExpandedRow.js.map +1 -0
  137. package/build/components/ListHelpBar.d.ts +19 -0
  138. package/build/components/ListHelpBar.d.ts.map +1 -0
  139. package/build/components/ListHelpBar.js +11 -0
  140. package/build/components/ListHelpBar.js.map +1 -0
  141. package/build/components/OrphanListItem.d.ts +15 -0
  142. package/build/components/OrphanListItem.d.ts.map +1 -0
  143. package/build/components/OrphanListItem.js +6 -0
  144. package/build/components/OrphanListItem.js.map +1 -0
  145. package/build/components/PromptField.d.ts +19 -0
  146. package/build/components/PromptField.d.ts.map +1 -0
  147. package/build/components/PromptField.js +7 -0
  148. package/build/components/PromptField.js.map +1 -0
  149. package/build/components/StatusBadge.d.ts +1 -1
  150. package/build/components/StatusBadge.d.ts.map +1 -1
  151. package/build/components/StatusBadge.js +4 -0
  152. package/build/components/StatusBadge.js.map +1 -1
  153. package/build/components/index.d.ts +10 -2
  154. package/build/components/index.d.ts.map +1 -1
  155. package/build/components/index.js +10 -2
  156. package/build/components/index.js.map +1 -1
  157. package/build/hooks/useBrowseState.d.ts +41 -1
  158. package/build/hooks/useBrowseState.d.ts.map +1 -1
  159. package/build/hooks/useBrowseState.js +142 -12
  160. package/build/hooks/useBrowseState.js.map +1 -1
  161. package/build/hooks/useConfirmation.d.ts +18 -0
  162. package/build/hooks/useConfirmation.d.ts.map +1 -0
  163. package/build/hooks/useConfirmation.js +56 -0
  164. package/build/hooks/useConfirmation.js.map +1 -0
  165. package/build/hooks/useInitState.d.ts +72 -0
  166. package/build/hooks/useInitState.d.ts.map +1 -0
  167. package/build/hooks/useInitState.js +372 -0
  168. package/build/hooks/useInitState.js.map +1 -0
  169. package/build/hooks/useListActions.d.ts +15 -0
  170. package/build/hooks/useListActions.d.ts.map +1 -0
  171. package/build/hooks/useListActions.js +155 -0
  172. package/build/hooks/useListActions.js.map +1 -0
  173. package/build/hooks/useListState.d.ts +151 -0
  174. package/build/hooks/useListState.d.ts.map +1 -0
  175. package/build/hooks/useListState.js +448 -0
  176. package/build/hooks/useListState.js.map +1 -0
  177. package/build/hooks/usePruneState.d.ts +76 -0
  178. package/build/hooks/usePruneState.d.ts.map +1 -0
  179. package/build/hooks/usePruneState.js +246 -0
  180. package/build/hooks/usePruneState.js.map +1 -0
  181. package/build/hooks/usePublishState.d.ts +115 -0
  182. package/build/hooks/usePublishState.d.ts.map +1 -0
  183. package/build/hooks/usePublishState.js +673 -0
  184. package/build/hooks/usePublishState.js.map +1 -0
  185. package/build/hooks/useSetupState.d.ts +59 -0
  186. package/build/hooks/useSetupState.d.ts.map +1 -0
  187. package/build/hooks/useSetupState.js +295 -0
  188. package/build/hooks/useSetupState.js.map +1 -0
  189. package/build/hooks/useUninstallState.d.ts +102 -0
  190. package/build/hooks/useUninstallState.d.ts.map +1 -0
  191. package/build/hooks/useUninstallState.js +342 -0
  192. package/build/hooks/useUninstallState.js.map +1 -0
  193. package/build/lib/checksum.d.ts +39 -0
  194. package/build/lib/checksum.d.ts.map +1 -1
  195. package/build/lib/checksum.js +101 -13
  196. package/build/lib/checksum.js.map +1 -1
  197. package/build/lib/config.d.ts +38 -18
  198. package/build/lib/config.d.ts.map +1 -1
  199. package/build/lib/config.js +107 -55
  200. package/build/lib/config.js.map +1 -1
  201. package/build/lib/diagnostics.d.ts +7 -0
  202. package/build/lib/diagnostics.d.ts.map +1 -1
  203. package/build/lib/diagnostics.js +54 -34
  204. package/build/lib/diagnostics.js.map +1 -1
  205. package/build/lib/diff-command.d.ts +40 -0
  206. package/build/lib/diff-command.d.ts.map +1 -0
  207. package/build/lib/diff-command.js +145 -0
  208. package/build/lib/diff-command.js.map +1 -0
  209. package/build/lib/diff.d.ts +7 -0
  210. package/build/lib/diff.d.ts.map +1 -1
  211. package/build/lib/diff.js +15 -10
  212. package/build/lib/diff.js.map +1 -1
  213. package/build/lib/format.d.ts +6 -0
  214. package/build/lib/format.d.ts.map +1 -0
  215. package/build/lib/format.js +18 -0
  216. package/build/lib/format.js.map +1 -0
  217. package/build/lib/github.d.ts +8 -0
  218. package/build/lib/github.d.ts.map +1 -1
  219. package/build/lib/github.js +9 -0
  220. package/build/lib/github.js.map +1 -1
  221. package/build/lib/installer.d.ts +1 -0
  222. package/build/lib/installer.d.ts.map +1 -1
  223. package/build/lib/installer.js +7 -7
  224. package/build/lib/installer.js.map +1 -1
  225. package/build/lib/lockfile.d.ts +19 -17
  226. package/build/lib/lockfile.d.ts.map +1 -1
  227. package/build/lib/lockfile.js +43 -67
  228. package/build/lib/lockfile.js.map +1 -1
  229. package/build/lib/publisher.d.ts +35 -0
  230. package/build/lib/publisher.d.ts.map +1 -1
  231. package/build/lib/publisher.js +210 -16
  232. package/build/lib/publisher.js.map +1 -1
  233. package/build/lib/registry.d.ts +20 -5
  234. package/build/lib/registry.d.ts.map +1 -1
  235. package/build/lib/registry.js +41 -30
  236. package/build/lib/registry.js.map +1 -1
  237. package/build/lib/schemas/config.d.ts +31 -3
  238. package/build/lib/schemas/config.d.ts.map +1 -1
  239. package/build/lib/schemas/config.js +21 -2
  240. package/build/lib/schemas/config.js.map +1 -1
  241. package/build/lib/schemas/index.d.ts +1 -1
  242. package/build/lib/schemas/index.d.ts.map +1 -1
  243. package/build/lib/schemas/index.js +1 -1
  244. package/build/lib/schemas/index.js.map +1 -1
  245. package/build/lib/schemas/lockfile.d.ts +18 -2
  246. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  247. package/build/lib/schemas/lockfile.js +10 -1
  248. package/build/lib/schemas/lockfile.js.map +1 -1
  249. package/build/lib/search.d.ts +15 -1
  250. package/build/lib/search.d.ts.map +1 -1
  251. package/build/lib/search.js +65 -65
  252. package/build/lib/search.js.map +1 -1
  253. package/build/lib/tool-resolver.d.ts +29 -6
  254. package/build/lib/tool-resolver.d.ts.map +1 -1
  255. package/build/lib/tool-resolver.js +54 -15
  256. package/build/lib/tool-resolver.js.map +1 -1
  257. package/build/lib/updater.d.ts +7 -4
  258. package/build/lib/updater.d.ts.map +1 -1
  259. package/build/lib/updater.js +12 -7
  260. package/build/lib/updater.js.map +1 -1
  261. package/build/lib/version.js +1 -1
  262. package/build/lib/version.js.map +1 -1
  263. package/package.json +79 -65
  264. package/tool-adapters/claude-code.json +1 -1
  265. package/tool-adapters/copilot-cli.json +1 -1
@@ -1,21 +1,26 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text, useStdout } from 'ink';
3
3
  import { getBreakpoint } from '../lib/breakpoints.js';
4
- import { formatOrgName } from '../lib/org.js';
5
- const DEFAULT_COLUMNS = ['name', 'type', 'version', 'description'];
4
+ import { formatDate } from '../lib/format.js';
5
+ import Link from './Link.js';
6
+ const DEFAULT_COLUMNS = ['name', 'org', 'type', 'version', 'description'];
6
7
  /** Per-breakpoint fixed widths for columns. Columns absent from a breakpoint's map are hidden. */
7
8
  const RESPONSIVE_WIDTHS = {
8
- medium: { files: 8, name: 24, type: 14, version: 10 },
9
- narrow: { files: 8, name: 20, version: 10 },
10
- wide: { files: 8, name: 24, type: 18, version: 10 },
9
+ medium: { files: 8, installed: 14, name: 30, org: 16, readme: 18, type: 14, version: 10 },
10
+ narrow: { files: 8, installed: 14, name: 30, readme: 18, version: 10 },
11
+ wide: { files: 8, installed: 14, name: 40, org: 20, readme: 18, type: 18, version: 10 },
11
12
  };
12
13
  /** Columns that flex to fill remaining space — never hidden by breakpoint. */
13
- const FLEX_COLUMNS = new Set(['description', 'installed']);
14
+ const FLEX_COLUMNS = new Set(['description']);
15
+ /** Maximum widths for flex columns. When set, the column is capped at this width instead of growing unbounded. */
16
+ const MAX_FLEX_WIDTHS = {};
14
17
  const COLUMN_LABELS = {
15
18
  description: 'Description',
16
19
  files: 'Files',
17
20
  installed: 'Installed',
18
21
  name: 'Name',
22
+ org: 'Org',
23
+ readme: 'README',
19
24
  type: 'Type',
20
25
  version: 'Version',
21
26
  };
@@ -23,7 +28,7 @@ const COLUMN_LABELS = {
23
28
  * Table display for asset lists — used by search, list, and outdated commands.
24
29
  * Supports configurable column sets and responsive breakpoints.
25
30
  */
26
- export default function AssetTable({ assets, columns: columnsProp }) {
31
+ export default function AssetTable({ assets, columns: columnsProp, showHeader = true }) {
27
32
  const { stdout } = useStdout();
28
33
  const terminalWidth = stdout?.columns ?? 120;
29
34
  const bp = getBreakpoint(terminalWidth);
@@ -31,7 +36,7 @@ export default function AssetTable({ assets, columns: columnsProp }) {
31
36
  const requestedColumns = columnsProp ?? DEFAULT_COLUMNS;
32
37
  // Filter to only columns visible at this breakpoint (has a fixed width OR is a flex column)
33
38
  const columns = requestedColumns.filter((col) => FLEX_COLUMNS.has(col) || col in widthMap);
34
- // Find the last flex column — it gets flexGrow={1}
39
+ // Find the last flex column — it gets flexGrow={1} (unless all flex columns have max widths)
35
40
  let lastFlexIndex = -1;
36
41
  for (let i = columns.length - 1; i >= 0; i--) {
37
42
  if (FLEX_COLUMNS.has(columns[i])) {
@@ -39,38 +44,26 @@ export default function AssetTable({ assets, columns: columnsProp }) {
39
44
  break;
40
45
  }
41
46
  }
42
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: columns.map((col, i) => {
43
- const width = widthMap[col];
44
- if (width !== undefined) {
45
- return (_jsx(Box, { flexShrink: 0, width: width, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
46
- }
47
- if (i === lastFlexIndex) {
48
- return (_jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
49
- }
50
- return (_jsx(Box, { children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
51
- }) }), assets.map((asset) => (_jsx(Box, { children: columns.map((col, i) => {
52
- const width = widthMap[col];
53
- if (width !== undefined) {
54
- return (_jsx(Box, { flexShrink: 0, width: width, children: renderCell(col, asset) }, col));
55
- }
56
- if (i === lastFlexIndex) {
57
- return (_jsx(Box, { flexGrow: 1, overflow: 'hidden', children: renderCell(col, asset) }, col));
58
- }
59
- return _jsx(Box, { children: renderCell(col, asset) }, col);
60
- }) }, `${asset.type}/${asset.name}`)))] }));
61
- }
62
- function formatDate(isoString) {
63
- try {
64
- const date = new Date(isoString);
65
- return date.toLocaleDateString('en-US', {
66
- day: 'numeric',
67
- month: 'short',
68
- year: 'numeric',
69
- });
70
- }
71
- catch {
72
- return isoString;
47
+ // Compute fixed column width sum for capping flex columns with MAX_FLEX_WIDTHS
48
+ const fixedWidthSum = columns.reduce((sum, col) => sum + (widthMap[col] ?? 0), 0);
49
+ const remainingSpace = terminalWidth - fixedWidthSum;
50
+ function renderColumnBox(col, i, children, key) {
51
+ const width = widthMap[col];
52
+ if (width !== undefined) {
53
+ return (_jsx(Box, { flexShrink: 0, width: width, children: children }, key));
54
+ }
55
+ if (i === lastFlexIndex) {
56
+ // Last flex column: cap at MAX_FLEX_WIDTHS if defined, otherwise flexGrow
57
+ const maxWidth = MAX_FLEX_WIDTHS[col];
58
+ if (maxWidth !== undefined) {
59
+ return (_jsx(Box, { flexShrink: 0, overflow: 'hidden', width: Math.min(remainingSpace, maxWidth), children: children }, key));
60
+ }
61
+ return (_jsx(Box, { flexGrow: 1, overflow: 'hidden', children: children }, key));
62
+ }
63
+ // Non-last flex column: auto-sized to content
64
+ return _jsx(Box, { children: children }, key);
73
65
  }
66
+ return (_jsxs(Box, { flexDirection: 'column', children: [showHeader && (_jsx(Box, { children: columns.map((col, i) => renderColumnBox(col, i, _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }), col)) })), assets.map((asset) => (_jsx(Box, { children: columns.map((col, i) => renderColumnBox(col, i, renderCell(col, asset), col)) }, `${asset.type}/${asset.name}`)))] }));
74
67
  }
75
68
  function renderCell(column, asset) {
76
69
  switch (column) {
@@ -81,7 +74,11 @@ function renderCell(column, asset) {
81
74
  case 'installed':
82
75
  return (_jsx(Text, { dimColor: true, wrap: 'truncate', children: formatDate(asset.installedAt ?? '') }));
83
76
  case 'name':
84
- return (_jsx(Text, { color: 'cyan', wrap: 'truncate', children: formatOrgName(asset.org, asset.name) }));
77
+ return (_jsx(Text, { color: 'cyan', wrap: 'truncate', children: asset.name }));
78
+ case 'org':
79
+ return (_jsx(Text, { dimColor: true, wrap: 'truncate', children: asset.org ? `@${asset.org}` : '' }));
80
+ case 'readme':
81
+ return asset.readmeUrl ? _jsx(Link, { url: asset.readmeUrl, children: "view on GitHub" }) : _jsx(Text, {});
85
82
  case 'type':
86
83
  return _jsx(Text, { wrap: 'truncate', children: asset.type });
87
84
  case 'version':
@@ -1 +1 @@
1
- {"version":3,"file":"AssetTable.js","sourceRoot":"","sources":["../../src/components/AssetTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssetTable.js","sourceRoot":"","sources":["../../src/components/AssetTable.tsx"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ interface BrowseExpandedBundleProps {
13
13
  terminalWidth: number;
14
14
  }
15
15
  export default function BrowseExpandedBundle({ bundle, bundleDeps, terminalWidth }: BrowseExpandedBundleProps): import("react/jsx-runtime").JSX.Element;
16
+ /**
17
+ * WARNING: This line-count calculation MUST stay in sync with the JSX rendered
18
+ * by BrowseExpandedBundle above. If any lines are added to or removed from the
19
+ * component's output, this function must be updated to match — otherwise the
20
+ * viewport height math in BrowseList will be wrong, causing scroll glitches.
21
+ */
22
+ export declare function bundleExpandedLines(bundleDeps: BundleDeps, assetCount: number): number;
16
23
  /**
17
24
  * Resolve transitive dependencies for each bundle asset.
18
25
  * Returns a map of "type/name" → array of dependency RegistryAssets,
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseExpandedBundle.d.ts","sourceRoot":"","sources":["../../src/components/BrowseExpandedBundle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,yBAAyB;IACjC,qCAAqC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,gDAAgD;IAChD,UAAU,EAAE,UAAU,CAAC;IACvB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,yBAAyB,2CAsD5G;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,cAAc,EAAE,GAChC;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0CjE"}
1
+ {"version":3,"file":"BrowseExpandedBundle.d.ts","sourceRoot":"","sources":["../../src/components/BrowseExpandedBundle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,yBAAyB;IACjC,qCAAqC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,gDAAgD;IAChD,UAAU,EAAE,UAAU,CAAC;IACvB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,yBAAyB,2CAsD5G;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAWtF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,cAAc,EAAE,GAChC;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0CjE"}
@@ -13,6 +13,25 @@ export default function BrowseExpandedBundle({ bundle, bundleDeps, terminalWidth
13
13
  return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [' ', _jsxs(Text, { dimColor: true, children: [a.type, "/"] }), _jsx(Text, { children: a.name })] }), deps?.map((d) => (_jsxs(Text, { children: [' ', _jsxs(Text, { dimColor: true, children: ["\u2514 ", d.type, "/"] }), _jsx(Text, { dimColor: true, children: d.name })] }, `${d.type}/${d.name}`)))] }, key));
14
14
  })] })), _jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) })] }));
15
15
  }
16
+ /**
17
+ * WARNING: This line-count calculation MUST stay in sync with the JSX rendered
18
+ * by BrowseExpandedBundle above. If any lines are added to or removed from the
19
+ * component's output, this function must be updated to match — otherwise the
20
+ * viewport height math in BrowseList will be wrong, causing scroll glitches.
21
+ */
22
+ export function bundleExpandedLines(bundleDeps, assetCount) {
23
+ // separator + description + tags/author + separator = 4
24
+ // If assets: header(1) + assets(N) + rendered dep lines(M)
25
+ if (assetCount === 0)
26
+ return 4;
27
+ // Sum per-asset dep counts from the depMap, since deps shared across assets
28
+ // are rendered under each asset individually (not deduplicated in the UI)
29
+ let renderedDepLines = 0;
30
+ for (const deps of bundleDeps.depMap.values()) {
31
+ renderedDepLines += deps.length;
32
+ }
33
+ return 4 + 1 + assetCount + renderedDepLines;
34
+ }
16
35
  /**
17
36
  * Resolve transitive dependencies for each bundle asset.
18
37
  * Returns a map of "type/name" → array of dependency RegistryAssets,
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseExpandedBundle.js","sourceRoot":"","sources":["../../src/components/BrowseExpandedBundle.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowseExpandedBundle.js","sourceRoot":"","sources":["../../src/components/BrowseExpandedBundle.tsx"],"names":[],"mappings":"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"}
@@ -6,9 +6,12 @@ interface BrowseExpandedRowProps {
6
6
  installedVersion?: string;
7
7
  /** Whether this asset is already installed */
8
8
  isInstalled: boolean;
9
+ /** URL to the asset's README on GitHub, or null */
10
+ readmeUrl: null | string;
9
11
  /** Terminal width for responsive layout */
10
12
  terminalWidth: number;
11
13
  }
12
- export default function BrowseExpandedRow({ asset, installedVersion, isInstalled, terminalWidth, }: BrowseExpandedRowProps): import("react/jsx-runtime").JSX.Element;
14
+ export default function BrowseExpandedRow({ asset, installedVersion, isInstalled, readmeUrl, terminalWidth, }: BrowseExpandedRowProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function computeBrowseExpandedLines(asset: RegistryAsset, readmeUrl: null | string): number;
13
16
  export {};
14
17
  //# sourceMappingURL=BrowseExpandedRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseExpandedRow.d.ts","sourceRoot":"","sources":["../../src/components/BrowseExpandedRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,UAAU,sBAAsB;IAC9B,oCAAoC;IACpC,KAAK,EAAE,aAAa,CAAC;IACrB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,EAAE,sBAAsB,2CA6CxB"}
1
+ {"version":3,"file":"BrowseExpandedRow.d.ts","sourceRoot":"","sources":["../../src/components/BrowseExpandedRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE,UAAU,sBAAsB;IAC9B,oCAAoC;IACpC,KAAK,EAAE,aAAa,CAAC;IACrB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,GACd,EAAE,sBAAsB,2CAyDxB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAYjG"}
@@ -1,8 +1,29 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
- export default function BrowseExpandedRow({ asset, installedVersion, isInstalled, terminalWidth, }) {
3
+ import Link from './Link.js';
4
+ export default function BrowseExpandedRow({ asset, installedVersion, isInstalled, readmeUrl, terminalWidth, }) {
4
5
  const latestVersion = asset.versions[asset.latest];
5
6
  const separatorWidth = Math.max(20, terminalWidth - 10);
6
- return (_jsxs(Box, { flexDirection: 'column', paddingLeft: 4, children: [_jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) }), _jsx(Text, { wrap: 'truncate', children: latestVersion?.description ?? '' }), _jsxs(Box, { gap: 2, children: [asset.org && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsx(Text, { color: 'magenta', children: asset.org })] })), asset.tags.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Tags: " }), _jsx(Text, { color: 'blue', children: asset.tags.join(', ') })] })), (latestVersion?.tools ?? []).length > 0 && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Tools: " }), _jsx(Text, { children: (latestVersion?.tools ?? []).join(', ') })] }))] }), _jsxs(Box, { gap: 2, children: [(latestVersion?.dependencies ?? []).length > 0 && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Deps: " }), _jsx(Text, { children: (latestVersion?.dependencies ?? []).map((d) => d.name).join(', ') })] })), isInstalled && (_jsxs(Text, { children: [_jsx(Text, { color: 'green', children: "\u2713 installed" }), installedVersion && _jsxs(Text, { dimColor: true, children: [" v", installedVersion] })] }))] }), _jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) })] }));
7
+ const hasOrg = !!asset.org;
8
+ const hasTags = asset.tags.length > 0;
9
+ const hasTools = (latestVersion?.tools ?? []).length > 0;
10
+ const hasDeps = (latestVersion?.dependencies ?? []).length > 0;
11
+ return (_jsxs(Box, { flexDirection: 'column', paddingLeft: 4, children: [_jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) }), _jsx(Text, { wrap: 'truncate', children: latestVersion?.description ?? '' }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Version: " }), _jsxs(Text, { children: ["v", asset.latest] }), ' ', isInstalled && (_jsxs(_Fragment, { children: [_jsx(Text, { color: 'green', children: "\u2713 installed" }), installedVersion && _jsxs(Text, { dimColor: true, children: [" v", installedVersion] })] }))] }), hasOrg && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsx(Text, { color: 'magenta', children: asset.org })] })), hasTags && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Tags: " }), _jsx(Text, { color: 'blue', children: asset.tags.join(', ') })] })), hasTools && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Tools: " }), _jsx(Text, { children: (latestVersion?.tools ?? []).join(', ') })] })), hasDeps && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Deps: " }), _jsx(Text, { children: (latestVersion?.dependencies ?? []).map((d) => d.name).join(', ') })] })), readmeUrl && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "README: " }), _jsx(Link, { url: readmeUrl, children: "view on GitHub" })] })), _jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) })] }));
12
+ }
13
+ export function computeBrowseExpandedLines(asset, readmeUrl) {
14
+ const latestVersion = asset.versions[asset.latest];
15
+ // Base: top separator + description + version + bottom separator = 4
16
+ let lines = 4;
17
+ if (asset.org)
18
+ lines += 1;
19
+ if (asset.tags.length > 0)
20
+ lines += 1;
21
+ if ((latestVersion?.tools ?? []).length > 0)
22
+ lines += 1;
23
+ if ((latestVersion?.dependencies ?? []).length > 0)
24
+ lines += 1;
25
+ if (readmeUrl)
26
+ lines += 2; // marginTop + link line
27
+ return lines;
7
28
  }
8
29
  //# sourceMappingURL=BrowseExpandedRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseExpandedRow.js","sourceRoot":"","sources":["../../src/components/BrowseExpandedRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAehC,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,GACU;IACvB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;IAExD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,aACxC,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAQ,EAClD,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,YAAE,aAAa,EAAE,WAAW,IAAI,EAAE,GAAQ,EAC/D,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,KAAK,CAAC,GAAG,IAAI,CACZ,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,4BAAa,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,KAAK,CAAC,GAAG,GAAQ,IACnC,CACR,EACA,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CACxB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,6BAAc,EAC5B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,IAC5C,CACR,EACA,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1C,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,8BAAe,EAC7B,KAAC,IAAI,cAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,IACjD,CACR,IACG,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACR,CAAC,aAAa,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACjD,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,6BAAc,EAC5B,KAAC,IAAI,cAAE,CAAC,aAAa,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,IAC3E,CACR,EACA,WAAW,IAAI,CACd,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,iCAAmB,EACrC,gBAAgB,IAAI,MAAC,IAAI,IAAC,QAAQ,yBAAI,gBAAgB,IAAQ,IAC1D,CACR,IACG,EACN,KAAC,IAAI,IAAC,QAAQ,kBAAE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAQ,IAC9C,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BrowseExpandedRow.js","sourceRoot":"","sources":["../../src/components/BrowseExpandedRow.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ interface BrowseListProps {
10
10
  items: BrowseItem[];
11
11
  /** Current lockfile for installed badges */
12
12
  lockfile: Lockfile;
13
+ /** URL to the expanded asset's README, or null */
14
+ readmeUrl: null | string;
13
15
  /** All registry assets for resolving transitive dependencies */
14
16
  registryAssets: RegistryAsset[];
15
17
  /** First visible item index */
@@ -21,6 +23,6 @@ interface BrowseListProps {
21
23
  /** Available height in rows for the list area */
22
24
  viewportHeight: number;
23
25
  }
24
- export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile, registryAssets, scrollOffset, terminalWidth, typeFilter, viewportHeight, }: BrowseListProps): import("react/jsx-runtime").JSX.Element;
26
+ export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile, readmeUrl, registryAssets, scrollOffset, terminalWidth, typeFilter, viewportHeight, }: BrowseListProps): import("react/jsx-runtime").JSX.Element;
25
27
  export {};
26
28
  //# sourceMappingURL=BrowseList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseList.d.ts","sourceRoot":"","sources":["../../src/components/BrowseList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAoBhE,UAAU,eAAe;IACvB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,gCAAgC;IAChC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gEAAgE;IAChE,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,EACX,aAAa,EACb,KAAK,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACf,EAAE,eAAe,2CAwOjB"}
1
+ {"version":3,"file":"BrowseList.d.ts","sourceRoot":"","sources":["../../src/components/BrowseList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,4BAA4B,CAAC;AAyDhF,UAAU,eAAe;IACvB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,gCAAgC;IAChC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ,CAAC;IACnB,kDAAkD;IAClD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,gEAAgE;IAChE,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,EACX,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACf,EAAE,eAAe,2CA2GjB"}
@@ -1,21 +1,20 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { getBreakpoint } from '../lib/breakpoints.js';
4
4
  import { findInstalledAsset, isInstalled as isAssetInstalled } from '../lib/lockfile.js';
5
- import { formatOrgName } from '../lib/org.js';
6
- import BrowseExpandedBundle, { resolveBundleDependencies } from './BrowseExpandedBundle.js';
7
- import BrowseExpandedRow from './BrowseExpandedRow.js';
5
+ import BrowseExpandedBundle, { bundleExpandedLines, resolveBundleDependencies, } from './BrowseExpandedBundle.js';
6
+ import BrowseExpandedRow, { computeBrowseExpandedLines } from './BrowseExpandedRow.js';
8
7
  const COLUMN_WIDTHS = {
9
- medium: { cursor: 3, name: 24, status: 12, type: 14, version: 10 },
8
+ medium: { cursor: 3, name: 20, org: 16, status: 12, type: 14, version: 10 },
10
9
  narrow: { cursor: 3, name: 20, status: 12, version: 10 },
11
- wide: { cursor: 3, name: 28, status: 12, type: 18, version: 10 },
10
+ wide: { cursor: 3, name: 24, org: 20, status: 12, type: 18, version: 10 },
12
11
  };
13
12
  const BUNDLE_COLUMN_WIDTHS = {
14
13
  medium: { assets: 18, cursor: 3, name: 24, status: 12, version: 10 },
15
14
  narrow: { assets: 14, cursor: 3, name: 20, status: 12, version: 10 },
16
15
  wide: { assets: 18, cursor: 3, name: 28, status: 12, version: 10 },
17
16
  };
18
- export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile, registryAssets, scrollOffset, terminalWidth, typeFilter, viewportHeight, }) {
17
+ export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile, readmeUrl, registryAssets, scrollOffset, terminalWidth, typeFilter, viewportHeight, }) {
19
18
  if (items.length === 0) {
20
19
  const label = typeFilter === 'bundle' ? 'bundles' : 'assets';
21
20
  return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: _jsx(Box, { paddingY: 1, children: _jsxs(Text, { dimColor: true, children: ["No ", label, " match your filters."] }) }) }));
@@ -23,7 +22,9 @@ export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile
23
22
  const isBundleTab = typeFilter === 'bundle';
24
23
  const bp = getBreakpoint(terminalWidth);
25
24
  const showType = bp !== 'narrow';
25
+ const showOrg = bp !== 'narrow';
26
26
  const cols = COLUMN_WIDTHS[bp];
27
+ const orgWidth = 'org' in cols ? cols.org : 0;
27
28
  const bundleCols = BUNDLE_COLUMN_WIDTHS[bp];
28
29
  const aboveCount = scrollOffset;
29
30
  // Resolve deps for the expanded bundle (if any) once, used for both line-height calculation and rendering
@@ -44,8 +45,8 @@ export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile
44
45
  if (expandedBundleDeps && expandedBundle) {
45
46
  expandedLines = bundleExpandedLines(expandedBundleDeps, (expandedBundle.assets ?? []).length);
46
47
  }
47
- else {
48
- expandedLines = ASSET_EXPANDED_LINES;
48
+ else if (expandedItem?.kind === 'asset') {
49
+ expandedLines = computeBrowseExpandedLines(expandedItem.data, readmeUrl);
49
50
  }
50
51
  }
51
52
  const linesNeeded = 1 + expandedLines;
@@ -58,43 +59,52 @@ export default function BrowseList({ cursorIndex, expandedIndex, items, lockfile
58
59
  }
59
60
  const lastVisibleIndex = belowItems.length > 0 ? belowItems[belowItems.length - 1].index : scrollOffset;
60
61
  const belowCount = items.length - lastVisibleIndex - 1;
61
- return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [isBundleTab ? (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: bundleCols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.assets, children: _jsx(Text, { bold: true, dimColor: true, children: "Assets" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, dimColor: true, children: "Description" }) })] })) : (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { bold: true, dimColor: true, children: "Type" }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, dimColor: true, children: "Description" }) })] })), aboveCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25B2 ", aboveCount, " more above"] }), belowItems.map(({ index, item }) => {
62
+ return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsx(ColumnHeader, { bundleCols: bundleCols, cols: cols, isBundleTab: isBundleTab, orgWidth: orgWidth, showOrg: showOrg, showType: showType }), aboveCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25B2 ", aboveCount, " more above"] }), belowItems.map(({ index, item }) => {
62
63
  const isCursor = index === cursorIndex;
63
64
  const isExpanded = index === expandedIndex;
64
- if (item.kind === 'bundle') {
65
- const bundle = item.data;
66
- const bundleDeps = index === expandedIndex && expandedBundleDeps
67
- ? expandedBundleDeps
68
- : resolveBundleDependencies(registryAssets, bundle.assets ?? []);
69
- const assetLabel = bundleDeps.totalDepCount > 0
70
- ? `${bundle.assetCount} (+${bundleDeps.totalDepCount} deps)`
71
- : `${bundle.assetCount} assets`;
72
- const bundleAssets = bundle.assets ?? [];
73
- const installedCount = bundleAssets.filter((ref) => isAssetInstalled(lockfile, ref.name, ref.type)).length;
74
- const totalCount = bundleAssets.length;
75
- const allInstalled = totalCount > 0 && installedCount === totalCount;
76
- const partiallyInstalled = installedCount > 0 && installedCount < totalCount;
77
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.cursor : cols.cursor, children: _jsx(Text, { color: 'magenta', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.name : cols.name, children: _jsx(Text, { color: 'magenta', wrap: 'truncate', children: bundle.name }) }), isBundleTab ? (_jsx(Box, { flexShrink: 0, width: bundleCols.assets, children: _jsx(Text, { wrap: 'truncate', children: assetLabel }) })) : (showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { wrap: 'truncate', children: "bundle" }) }))), _jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.version : cols.version, children: _jsxs(Text, { wrap: 'truncate', children: ["v", bundle.version] }) }), _jsxs(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.status : cols.status, children: [allInstalled && _jsx(Text, { color: 'green', children: "[installed]" }), partiallyInstalled && _jsx(Text, { color: 'yellow', children: "[partial]" })] }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: bundle.description }) })] }), isExpanded && (_jsx(BrowseExpandedBundle, { bundle: bundle, bundleDeps: bundleDeps, terminalWidth: terminalWidth }))] }, `bundle/${bundle.name}`));
78
- }
79
- const asset = item.data;
80
- const latestVersion = asset.versions[asset.latest];
81
- const installed = findInstalledAsset(lockfile, asset.name, asset.type);
82
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { color: 'cyan', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { color: 'cyan', wrap: 'truncate', children: formatOrgName(asset.org, asset.name) }) }), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { wrap: 'truncate', children: asset.type }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsxs(Text, { wrap: 'truncate', children: ["v", asset.latest] }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: installed && _jsx(Text, { color: 'green', children: "[installed]" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: latestVersion?.description ?? '' }) })] }), isExpanded && (_jsx(BrowseExpandedRow, { asset: asset, installedVersion: installed?.version, isInstalled: !!installed, terminalWidth: terminalWidth }))] }, `${asset.type}/${asset.name}`));
65
+ return item.kind === 'bundle' ? (_jsx(BrowseBundleRow, { bundle: item.data, bundleCols: bundleCols, cols: cols, expandedBundleDeps: expandedBundleDeps, isBundleTab: isBundleTab, isCursor: isCursor, isExpanded: isExpanded, lockfile: lockfile, orgWidth: orgWidth, registryAssets: registryAssets, showOrg: showOrg, showType: showType, terminalWidth: terminalWidth }, `bundle/${item.data.name}`)) : (_jsx(BrowseAssetRow, { asset: item.data, cols: cols, isCursor: isCursor, isExpanded: isExpanded, lockfile: lockfile, orgWidth: orgWidth, readmeUrl: readmeUrl, showOrg: showOrg, showType: showType, terminalWidth: terminalWidth }, `${item.data.type}/${item.data.name}`));
83
66
  }), belowCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25BC ", belowCount, " more below"] })] }));
84
67
  }
85
- // Asset expanded row: separator + description + tags/tools + deps/trust + separator = 5
86
- const ASSET_EXPANDED_LINES = 5;
87
- function bundleExpandedLines(bundleDeps, assetCount) {
88
- // separator + description + tags/author + separator = 4
89
- // If assets: header(1) + assets(N) + rendered dep lines(M)
90
- if (assetCount === 0)
91
- return 4;
92
- // Sum per-asset dep counts from the depMap, since deps shared across assets
93
- // are rendered under each asset individually (not deduplicated in the UI)
94
- let renderedDepLines = 0;
95
- for (const deps of bundleDeps.depMap.values()) {
96
- renderedDepLines += deps.length;
68
+ function BrowseAssetRow({ asset, cols, isCursor, isExpanded, lockfile, orgWidth, readmeUrl, showOrg, showType, terminalWidth, }) {
69
+ const latestVersion = asset.versions[asset.latest];
70
+ const installed = findInstalledAsset(lockfile, asset.name, asset.type, asset.org);
71
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { color: 'cyan', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { color: 'cyan', wrap: 'truncate', children: asset.name }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: asset.org ? `@${asset.org}` : '' }) })), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { wrap: 'truncate', children: asset.type }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsxs(Text, { wrap: 'truncate', children: ["v", asset.latest] }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: installed && _jsx(Text, { color: 'green', children: "[installed]" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: latestVersion?.description ?? '' }) })] }), isExpanded && (_jsx(BrowseExpandedRow, { asset: asset, installedVersion: installed?.version, isInstalled: !!installed, readmeUrl: readmeUrl, terminalWidth: terminalWidth }))] }, `${asset.type}/${asset.name}`));
72
+ }
73
+ function BrowseBundleRow({ bundle, bundleCols, cols, expandedBundleDeps, isBundleTab, isCursor, isExpanded, lockfile, orgWidth, registryAssets, showOrg, showType, terminalWidth, }) {
74
+ const bundleAssets = bundle.assets ?? [];
75
+ // Only resolve dependencies when expanded; for collapsed rows use asset count directly
76
+ let assetLabel;
77
+ let bundleDeps;
78
+ if (isExpanded) {
79
+ bundleDeps = expandedBundleDeps ?? resolveBundleDependencies(registryAssets, bundleAssets);
80
+ assetLabel =
81
+ bundleDeps.totalDepCount > 0
82
+ ? `${bundle.assetCount} (+${bundleDeps.totalDepCount} deps)`
83
+ : `${bundle.assetCount} assets`;
84
+ }
85
+ else {
86
+ assetLabel = `${bundle.assetCount} assets`;
87
+ // bundleDeps only needed for the expanded view, provide a stub for type safety
88
+ bundleDeps = { depMap: new Map(), totalDepCount: 0 };
97
89
  }
98
- return 4 + 1 + assetCount + renderedDepLines;
90
+ const { allInstalled, partiallyInstalled } = getBundleInstallStatus(lockfile, bundleAssets);
91
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.cursor : cols.cursor, children: _jsx(Text, { color: 'magenta', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.name : cols.name, children: _jsx(Text, { color: 'magenta', wrap: 'truncate', children: bundle.name }) }), isBundleTab ? (_jsx(Box, { flexShrink: 0, width: bundleCols.assets, children: _jsx(Text, { wrap: 'truncate', children: assetLabel }) })) : (_jsxs(_Fragment, { children: [showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { dimColor: true, wrap: 'truncate' }) })), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { wrap: 'truncate', children: "bundle" }) }))] })), _jsx(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.version : cols.version, children: _jsxs(Text, { wrap: 'truncate', children: ["v", bundle.version] }) }), _jsxs(Box, { flexShrink: 0, width: isBundleTab ? bundleCols.status : cols.status, children: [allInstalled && _jsx(Text, { color: 'green', children: "[installed]" }), partiallyInstalled && _jsx(Text, { color: 'yellow', children: "[partial]" })] }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: bundle.description }) })] }), isExpanded && _jsx(BrowseExpandedBundle, { bundle: bundle, bundleDeps: bundleDeps, terminalWidth: terminalWidth })] }, `bundle/${bundle.name}`));
92
+ }
93
+ // --- Main component ---
94
+ function ColumnHeader({ bundleCols, cols, isBundleTab, orgWidth, showOrg, showType }) {
95
+ if (isBundleTab) {
96
+ return (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: bundleCols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.assets, children: _jsx(Text, { bold: true, dimColor: true, children: "Assets" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: bundleCols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, dimColor: true, children: "Description" }) })] }));
97
+ }
98
+ return (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { bold: true, dimColor: true, children: "Org" }) })), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { bold: true, dimColor: true, children: "Type" }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, dimColor: true, children: "Description" }) })] }));
99
+ }
100
+ /**
101
+ * Compute bundle install status from the lockfile and bundle asset refs.
102
+ */
103
+ function getBundleInstallStatus(lockfile, bundleAssets) {
104
+ const totalCount = bundleAssets.length;
105
+ const installedCount = bundleAssets.filter((ref) => isAssetInstalled(lockfile, ref.name, ref.type)).length;
106
+ const allInstalled = totalCount > 0 && installedCount === totalCount;
107
+ const partiallyInstalled = installedCount > 0 && installedCount < totalCount;
108
+ return { allInstalled, installedCount, partiallyInstalled, totalCount };
99
109
  }
100
110
  //# sourceMappingURL=BrowseList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseList.js","sourceRoot":"","sources":["../../src/components/BrowseList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowseList.js","sourceRoot":"","sources":["../../src/components/BrowseList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,oBAAoB,EAAE,EAE3B,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,iBAAiB,EAAE,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3E,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACxD,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;CACjE,CAAC;AAEX,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACpE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACpE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;CAC1D,CAAC;AAsEX,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,EACX,aAAa,EACb,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACE;IAChB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,YAChE,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,MAAC,IAAI,IAAC,QAAQ,0BAAK,KAAK,4BAA4B,GAChD,GACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,KAAK,QAAQ,CAAC;IAC5C,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,EAAE,KAAK,QAAQ,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,KAAK,QAAQ,CAAC;IAChC,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,YAAY,CAAC;IAEhC,0GAA0G;IAC1G,MAAM,YAAY,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,cAAc,GAAG,YAAY,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,kBAAkB,GAAG,cAAc;QACvC,CAAC,CAAC,yBAAyB,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,UAAU,GAA+C,EAAE,CAAC;IAClE,mDAAmD;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,gEAAgE;IAChE,IAAI,YAAY,GAAG,CAAC;QAAE,SAAS,IAAI,CAAC,CAAC;IAErC,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YACxB,IAAI,kBAAkB,IAAI,cAAc,EAAE,CAAC;gBACzC,aAAa,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAChG,CAAC;iBAAM,IAAI,YAAY,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1C,aAAa,GAAG,0BAA0B,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC;QACtC,2FAA2F;QAC3F,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QACzE,IAAI,SAAS,GAAG,WAAW,GAAG,KAAK;YAAE,MAAM;QAC3C,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC;QAC/C,SAAS,IAAI,WAAW,CAAC;IAC3B,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IACzG,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC;IAEvD,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,aAChE,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAClB,EACD,UAAU,GAAG,CAAC,IAAI,MAAC,IAAI,IAAC,QAAQ,+BAAK,UAAU,mBAAmB,EAClE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,CAAC;gBACvC,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa,CAAC;gBAE3C,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC9B,KAAC,eAAe,IACd,MAAM,EAAE,IAAI,CAAC,IAAI,EACjB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EAEtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,IANvB,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAO/B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IACb,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EAEtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,IANvB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAO1C,CACH,CAAC;YACJ,CAAC,CAAC,EACD,UAAU,GAAG,CAAC,IAAI,MAAC,IAAI,IAAC,QAAQ,+BAAK,UAAU,mBAAmB,IAC/D,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,GACO;IACpB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAElF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAQ,GAC9C,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAClC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,YAC/B,KAAK,CAAC,IAAI,GACN,GACH,EACL,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,YACjC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAC5B,GACH,CACP,EACA,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YACvD,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,YAAE,KAAK,CAAC,IAAI,GAAQ,GACrC,CACP,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,YACrC,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,kBAAG,KAAK,CAAC,MAAM,IAAQ,GACxC,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACnC,SAAS,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4BAAmB,GAChD,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,YACjC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAC3B,aAAa,EAAE,WAAW,IAAI,EAAE,GAC5B,GACH,IACF,EACL,UAAU,IAAI,CACb,KAAC,iBAAiB,IAChB,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,SAAS,EAAE,OAAO,EACpC,WAAW,EAAE,CAAC,CAAC,SAAS,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,GAC5B,CACH,KA1C8B,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CA2CxD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,MAAM,EACN,UAAU,EACV,IAAI,EACJ,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,OAAO,EACP,QAAQ,EACR,aAAa,GACQ;IACrB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAEzC,uFAAuF;IACvF,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAsB,CAAC;IAC3B,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,GAAG,kBAAkB,IAAI,yBAAyB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC3F,UAAU;YACR,UAAU,CAAC,aAAa,GAAG,CAAC;gBAC1B,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,MAAM,UAAU,CAAC,aAAa,QAAQ;gBAC5D,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,SAAS,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,GAAG,MAAM,CAAC,UAAU,SAAS,CAAC;QAC3C,+EAA+E;QAC/E,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE5F,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,YACtE,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAQ,GACjD,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,YAClE,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAC,UAAU,YAClC,MAAM,CAAC,IAAI,GACP,GACH,EACL,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,YAC1C,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,YAAE,UAAU,GAAQ,GACrC,CACP,CAAC,CAAC,CAAC,CACF,8BACG,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,YACjC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,GAAQ,GAClC,CACP,EACA,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YACvD,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,uBAAc,GAC/B,CACP,IACA,CACJ,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,YACxE,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,kBAAG,MAAM,CAAC,OAAO,IAAQ,GAC1C,EACN,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,aACrE,YAAY,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4BAAmB,EACtD,kBAAkB,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,0BAAiB,IACxD,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,YACjC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAC3B,MAAM,CAAC,WAAW,GACd,GACH,IACF,EACL,UAAU,IAAI,KAAC,oBAAoB,IAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAI,KAzC9E,UAAU,MAAM,CAAC,IAAI,EAAE,CA0ClD,CACP,CAAC;AACJ,CAAC;AAED,yBAAyB;AAEzB,SAAS,YAAY,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAqB;IACrG,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,YAC1C,KAAC,IAAI,oBAAS,GACV,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,YACxC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,2BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,YAC1C,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,6BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,YAC3C,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,8BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,YAC1C,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,6BAEZ,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,YACjC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kCAEZ,GACH,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,oBAAS,GACV,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAClC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,2BAEZ,GACH,EACL,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,YACjC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,0BAEZ,GACH,CACP,EACA,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YACvD,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,2BAEZ,GACH,CACP,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,YACrC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,8BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,6BAEZ,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,YACjC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kCAEZ,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,QAAkB,EAClB,YAA8B;IAE9B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IACvC,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3G,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,IAAI,cAAc,KAAK,UAAU,CAAC;IACrE,MAAM,kBAAkB,GAAG,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,UAAU,CAAC;IAC7E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC1E,CAAC"}
@@ -7,8 +7,6 @@ export interface FileDiffEntry {
7
7
  status: 'added' | 'missing-local' | 'modified' | 'removed' | 'unchanged';
8
8
  }
9
9
  interface DiffViewProps {
10
- /** Number of context lines to show around changes in unified diff output */
11
- contextLines?: number;
12
10
  /** Array of file-level diffs */
13
11
  diffs: FileDiffEntry[];
14
12
  /** Installed version string */
@@ -1 +1 @@
1
- {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,UAAU,aAAa;IACrB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,2CAyD5G"}
1
+ {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,UAAU,aAAa;IACrB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,2CA+B5G"}
@@ -8,11 +8,17 @@ import { FileStatusIcon } from './StatusBadge.js';
8
8
  */
9
9
  export default function DiffView({ diffs, installedVersion, latestVersion, name, sameVersion }) {
10
10
  const hasChanges = diffs.some((d) => d.status !== 'unchanged');
11
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Diff for ", _jsx(Text, { color: 'cyan', children: name })] }), _jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Latest: ", _jsxs(Text, { color: 'green', children: ["v", latestVersion] }), sameVersion && _jsx(Text, { dimColor: true, children: " (same version)" })] }), _jsx(Text, { children: " " }), !hasChanges ? (_jsx(Text, { color: 'green', children: "\u2713 No differences found. Local files match the registry." })) : (_jsxs(_Fragment, { children: [diffs.map((diff, index) => {
12
- const hasDiffLines = diff.diffLines && diff.diffLines.length > 0;
13
- const isLastEntry = index === diffs.length - 1;
14
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [' ', _jsx(FileStatusIcon, { status: diff.status }), " ", diff.fileName, diff.status === 'modified' && (_jsxs(Text, { dimColor: true, children: [' ', "(", diff.localLines, " lines local, ", diff.remoteLines, " lines remote)"] })), diff.status === 'added' && _jsx(Text, { dimColor: true, children: " (new in registry)" }), diff.status === 'removed' && _jsx(Text, { dimColor: true, children: " (removed from registry)" }), diff.status === 'missing-local' && _jsx(Text, { dimColor: true, children: " (file missing locally)" })] }), hasDiffLines && (_jsx(Box, { flexDirection: 'column', paddingLeft: 4, children: diff.diffLines.map((line, lineIndex) => (_jsx(DiffLineView, { line: line }, lineIndex))) })), hasDiffLines && !isLastEntry && _jsx(Text, { children: " " })] }, diff.fileName));
15
- }), _jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk update ", name] }), " to update to the latest version."] })] }))] }));
11
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Diff for ", _jsx(Text, { color: 'cyan', children: name })] }), _jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Latest: ", _jsxs(Text, { color: 'green', children: ["v", latestVersion] }), sameVersion && _jsx(Text, { dimColor: true, children: " (same version)" })] }), _jsx(Text, { dimColor: true, children: '- registry + local' }), _jsx(Text, { children: " " }), !hasChanges ? (_jsx(Text, { color: 'green', children: "\u2713 No differences found. Local files match the registry." })) : (_jsxs(_Fragment, { children: [diffs.map((diff, index) => (_jsx(DiffFileEntry, { diff: diff, isLastEntry: index === diffs.length - 1 }, diff.fileName))), _jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk update ", name] }), " to update to the latest version."] })] }))] }));
12
+ }
13
+ /**
14
+ * Renders a single file entry within the diff view, including its status
15
+ * icon, metadata, and inline diff lines when available.
16
+ */
17
+ function DiffFileEntry({ diff, isLastEntry }) {
18
+ const hasDiffLines = diff.diffLines && diff.diffLines.length > 0;
19
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [' ', _jsx(FileStatusIcon, { status: diff.status }), " ", diff.fileName, diff.status === 'modified' && (_jsxs(Text, { dimColor: true, children: [' ', "(", diff.localLines, " lines local, ", diff.remoteLines, " lines remote)"] })), diff.status === 'added' && _jsx(Text, { dimColor: true, children: " (new in registry)" }), diff.status === 'removed' && (_jsx(Text, { dimColor: true, children: hasDiffLines ? ' (removed from registry)' : ' (file already deleted locally)' })), diff.status === 'missing-local' && _jsx(Text, { dimColor: true, children: " (file missing locally)" })] }), hasDiffLines && (_jsx(Box, { flexDirection: 'column', paddingLeft: 4, children: diff.diffLines.map((line, lineIndex) => (
20
+ // Index key is intentional: diff lines are a static, non-reorderable list
21
+ _jsx(DiffLineView, { line: line }, lineIndex))) })), hasDiffLines && !isLastEntry && _jsx(Text, { children: " " })] }));
16
22
  }
17
23
  /**
18
24
  * Renders a single diff line with appropriate color and prefix based on its type.