@industry-theme/file-city-panel 0.2.40 → 0.2.41

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.
@@ -1 +1 @@
1
- {"version":3,"file":"CodeCityPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CodeCityPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAuBjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQpD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;QAC1F,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC7D,CAAC;IACF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AA6jDD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EA8BxC,CAAC"}
1
+ {"version":3,"file":"CodeCityPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CodeCityPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAuBjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQpD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;QAC1F,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC7D,CAAC;IACF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAqkDD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EA8BxC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ /** Commit files data structure with categorized file paths */
3
+ export interface CommitFilesStatus {
4
+ added: string[];
5
+ modified: string[];
6
+ removed: string[];
7
+ renamed: string[];
8
+ }
9
+ /** Commit file status category for selection callbacks */
10
+ export type CommitChangeSelectionStatus = 'added' | 'modified' | 'removed' | 'renamed';
11
+ interface CommitChangesTreeProps {
12
+ /** Commit files data with categorized file paths */
13
+ commitFiles: CommitFilesStatus;
14
+ /** Root path for the repository (used for building file trees) */
15
+ rootPath?: string;
16
+ /** Horizontal padding for tree nodes */
17
+ horizontalPadding?: string;
18
+ /** Callback when a file is clicked */
19
+ onFileClick?: (filePath: string, status?: CommitChangeSelectionStatus) => void;
20
+ /** Callback when a node is hovered */
21
+ onNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
22
+ }
23
+ /**
24
+ * CommitChangesTree component that displays commit file changes in a file tree format.
25
+ * Uses GitStatusFileTree from @principal-ade/dynamic-file-tree for rendering.
26
+ */
27
+ export declare const CommitChangesTree: React.FC<CommitChangesTreeProps>;
28
+ export {};
29
+ //# sourceMappingURL=CommitChangesTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommitChangesTree.d.ts","sourceRoot":"","sources":["../../../src/panels/components/CommitChangesTree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvF,UAAU,sBAAsB;IAC9B,oDAAoD;IACpD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAC/E,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmI9D,CAAC"}
@@ -3,8 +3,10 @@ import type { FileTree } from '@principal-ai/repository-abstraction';
3
3
  import type { ColorMode } from '../utils/qualityLayers';
4
4
  import { type GitStatus, type GitChangeSelectionStatus } from './GitChangesTree';
5
5
  import { type PrFilesStatus, type PrChangeSelectionStatus } from './PrChangesTree';
6
+ import { type CommitFilesStatus, type CommitChangeSelectionStatus } from './CommitChangesTree';
6
7
  export type { GitStatus, GitChangeSelectionStatus } from './GitChangesTree';
7
8
  export type { PrFilesStatus, PrChangeSelectionStatus } from './PrChangesTree';
9
+ export type { CommitFilesStatus, CommitChangeSelectionStatus } from './CommitChangesTree';
8
10
  export interface LegendFileType {
9
11
  id: string;
10
12
  name: string;
@@ -48,6 +50,10 @@ interface LegendProps {
48
50
  prFiles?: PrFilesStatus | null;
49
51
  /** PR number for display */
50
52
  prNumber?: number | null;
53
+ /** Commit files data with categorized file paths */
54
+ commitFiles?: CommitFilesStatus | null;
55
+ /** Commit hash for display */
56
+ commitHash?: string | null;
51
57
  /** File tree for expanding directories in git changes view */
52
58
  fileTree?: FileTree | null;
53
59
  /** Root path for building file trees */
@@ -64,6 +70,10 @@ interface LegendProps {
64
70
  onPrFileClick?: (filePath: string, status?: PrChangeSelectionStatus) => void;
65
71
  /** Callback when a PR node is hovered */
66
72
  onPrNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
73
+ /** Callback when a commit file is clicked */
74
+ onCommitFileClick?: (filePath: string, status?: CommitChangeSelectionStatus) => void;
75
+ /** Callback when a commit node is hovered */
76
+ onCommitNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
67
77
  onAgentLayerClick?: (id: string) => void;
68
78
  onQualityMetricClick?: (id: string) => void;
69
79
  onClearAgentLayers?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"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"}
@@ -106,7 +106,7 @@ const createLucideIcon = (iconName, iconNode) => {
106
106
  * This source code is licensed under the ISC license.
107
107
  * See the LICENSE file in the root directory of this source tree.
108
108
  */
109
- const __iconNode$h = [
109
+ const __iconNode$i = [
110
110
  [
111
111
  "path",
112
112
  {
@@ -115,14 +115,14 @@ const __iconNode$h = [
115
115
  }
116
116
  ]
117
117
  ];
118
- const Activity = createLucideIcon("activity", __iconNode$h);
118
+ const Activity = createLucideIcon("activity", __iconNode$i);
119
119
  /**
120
120
  * @license lucide-react v0.552.0 - ISC
121
121
  *
122
122
  * This source code is licensed under the ISC license.
123
123
  * See the LICENSE file in the root directory of this source tree.
124
124
  */
125
- const __iconNode$g = [
125
+ const __iconNode$h = [
126
126
  ["path", { d: "M10 12h4", key: "a56b0p" }],
127
127
  ["path", { d: "M10 8h4", key: "1sr2af" }],
128
128
  ["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
@@ -135,55 +135,55 @@ const __iconNode$g = [
135
135
  ],
136
136
  ["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
137
137
  ];
138
- const Building2 = createLucideIcon("building-2", __iconNode$g);
138
+ const Building2 = createLucideIcon("building-2", __iconNode$h);
139
139
  /**
140
140
  * @license lucide-react v0.552.0 - ISC
141
141
  *
142
142
  * This source code is licensed under the ISC license.
143
143
  * See the LICENSE file in the root directory of this source tree.
144
144
  */
145
- const __iconNode$f = [
145
+ const __iconNode$g = [
146
146
  ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }],
147
147
  ["path", { d: "M18 17V9", key: "2bz60n" }],
148
148
  ["path", { d: "M13 17V5", key: "1frdt8" }],
149
149
  ["path", { d: "M8 17v-3", key: "17ska0" }]
150
150
  ];
151
- const ChartColumn = createLucideIcon("chart-column", __iconNode$f);
151
+ const ChartColumn = createLucideIcon("chart-column", __iconNode$g);
152
152
  /**
153
153
  * @license lucide-react v0.552.0 - ISC
154
154
  *
155
155
  * This source code is licensed under the ISC license.
156
156
  * See the LICENSE file in the root directory of this source tree.
157
157
  */
158
- const __iconNode$e = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
159
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$e);
158
+ const __iconNode$f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
159
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$f);
160
160
  /**
161
161
  * @license lucide-react v0.552.0 - ISC
162
162
  *
163
163
  * This source code is licensed under the ISC license.
164
164
  * See the LICENSE file in the root directory of this source tree.
165
165
  */
166
- const __iconNode$d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
167
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
166
+ const __iconNode$e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
167
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$e);
168
168
  /**
169
169
  * @license lucide-react v0.552.0 - ISC
170
170
  *
171
171
  * This source code is licensed under the ISC license.
172
172
  * See the LICENSE file in the root directory of this source tree.
173
173
  */
174
- const __iconNode$c = [
174
+ const __iconNode$d = [
175
175
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
176
176
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
177
177
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
178
178
  ];
179
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$c);
179
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$d);
180
180
  /**
181
181
  * @license lucide-react v0.552.0 - ISC
182
182
  *
183
183
  * This source code is licensed under the ISC license.
184
184
  * See the LICENSE file in the root directory of this source tree.
185
185
  */
186
- const __iconNode$b = [
186
+ const __iconNode$c = [
187
187
  [
188
188
  "path",
189
189
  {
@@ -201,14 +201,14 @@ const __iconNode$b = [
201
201
  ],
202
202
  ["path", { d: "m2 2 20 20", key: "1ooewy" }]
203
203
  ];
204
- const EyeOff = createLucideIcon("eye-off", __iconNode$b);
204
+ const EyeOff = createLucideIcon("eye-off", __iconNode$c);
205
205
  /**
206
206
  * @license lucide-react v0.552.0 - ISC
207
207
  *
208
208
  * This source code is licensed under the ISC license.
209
209
  * See the LICENSE file in the root directory of this source tree.
210
210
  */
211
- const __iconNode$a = [
211
+ const __iconNode$b = [
212
212
  [
213
213
  "path",
214
214
  {
@@ -218,14 +218,14 @@ const __iconNode$a = [
218
218
  ],
219
219
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
220
220
  ];
221
- const Eye = createLucideIcon("eye", __iconNode$a);
221
+ const Eye = createLucideIcon("eye", __iconNode$b);
222
222
  /**
223
223
  * @license lucide-react v0.552.0 - ISC
224
224
  *
225
225
  * This source code is licensed under the ISC license.
226
226
  * See the LICENSE file in the root directory of this source tree.
227
227
  */
228
- const __iconNode$9 = [
228
+ const __iconNode$a = [
229
229
  [
230
230
  "path",
231
231
  {
@@ -236,14 +236,14 @@ const __iconNode$9 = [
236
236
  ["path", { d: "M12 17h.01", key: "p32p05" }],
237
237
  ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }]
238
238
  ];
239
- const FileQuestionMark = createLucideIcon("file-question-mark", __iconNode$9);
239
+ const FileQuestionMark = createLucideIcon("file-question-mark", __iconNode$a);
240
240
  /**
241
241
  * @license lucide-react v0.552.0 - ISC
242
242
  *
243
243
  * This source code is licensed under the ISC license.
244
244
  * See the LICENSE file in the root directory of this source tree.
245
245
  */
246
- const __iconNode$8 = [
246
+ const __iconNode$9 = [
247
247
  [
248
248
  "path",
249
249
  {
@@ -256,14 +256,14 @@ const __iconNode$8 = [
256
256
  ["path", { d: "M16 13H8", key: "t4e002" }],
257
257
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
258
258
  ];
259
- const FileText = createLucideIcon("file-text", __iconNode$8);
259
+ const FileText = createLucideIcon("file-text", __iconNode$9);
260
260
  /**
261
261
  * @license lucide-react v0.552.0 - ISC
262
262
  *
263
263
  * This source code is licensed under the ISC license.
264
264
  * See the LICENSE file in the root directory of this source tree.
265
265
  */
266
- const __iconNode$7 = [
266
+ const __iconNode$8 = [
267
267
  [
268
268
  "path",
269
269
  {
@@ -273,14 +273,14 @@ const __iconNode$7 = [
273
273
  ],
274
274
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
275
275
  ];
276
- const File = createLucideIcon("file", __iconNode$7);
276
+ const File = createLucideIcon("file", __iconNode$8);
277
277
  /**
278
278
  * @license lucide-react v0.552.0 - ISC
279
279
  *
280
280
  * This source code is licensed under the ISC license.
281
281
  * See the LICENSE file in the root directory of this source tree.
282
282
  */
283
- const __iconNode$6 = [
283
+ const __iconNode$7 = [
284
284
  [
285
285
  "path",
286
286
  {
@@ -289,20 +289,32 @@ const __iconNode$6 = [
289
289
  }
290
290
  ]
291
291
  ];
292
- const Folder = createLucideIcon("folder", __iconNode$6);
292
+ const Folder = createLucideIcon("folder", __iconNode$7);
293
293
  /**
294
294
  * @license lucide-react v0.552.0 - ISC
295
295
  *
296
296
  * This source code is licensed under the ISC license.
297
297
  * See the LICENSE file in the root directory of this source tree.
298
298
  */
299
- const __iconNode$5 = [
299
+ const __iconNode$6 = [
300
300
  ["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
301
301
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
302
302
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
303
303
  ["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
304
304
  ];
305
- const GitBranch = createLucideIcon("git-branch", __iconNode$5);
305
+ const GitBranch = createLucideIcon("git-branch", __iconNode$6);
306
+ /**
307
+ * @license lucide-react v0.552.0 - ISC
308
+ *
309
+ * This source code is licensed under the ISC license.
310
+ * See the LICENSE file in the root directory of this source tree.
311
+ */
312
+ const __iconNode$5 = [
313
+ ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
314
+ ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
315
+ ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
316
+ ];
317
+ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$5);
306
318
  /**
307
319
  * @license lucide-react v0.552.0 - ISC
308
320
  *
@@ -10227,11 +10239,124 @@ const PrChangesTree = ({
10227
10239
  }
10228
10240
  );
10229
10241
  };
10242
+ const CommitChangesTree = ({
10243
+ commitFiles,
10244
+ rootPath,
10245
+ horizontalPadding = "0px",
10246
+ onFileClick,
10247
+ onNodeHover
10248
+ }) => {
10249
+ const { theme: theme2 } = useTheme();
10250
+ const hasChanges = useMemo(
10251
+ () => commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0,
10252
+ [commitFiles.added.length, commitFiles.modified.length, commitFiles.removed.length, commitFiles.renamed.length]
10253
+ );
10254
+ const getFileStatus = useCallback(
10255
+ (filePath) => {
10256
+ if (commitFiles.added.includes(filePath)) {
10257
+ return "added";
10258
+ }
10259
+ if (commitFiles.modified.includes(filePath)) {
10260
+ return "modified";
10261
+ }
10262
+ if (commitFiles.removed.includes(filePath)) {
10263
+ return "removed";
10264
+ }
10265
+ if (commitFiles.renamed.includes(filePath)) {
10266
+ return "renamed";
10267
+ }
10268
+ return void 0;
10269
+ },
10270
+ [commitFiles]
10271
+ );
10272
+ const handleFileSelect = useCallback(
10273
+ (filePath) => {
10274
+ const status = getFileStatus(filePath);
10275
+ onFileClick == null ? void 0 : onFileClick(filePath, status);
10276
+ },
10277
+ [getFileStatus, onFileClick]
10278
+ );
10279
+ const commitChangesData = useMemo(() => {
10280
+ if (!hasChanges) {
10281
+ return null;
10282
+ }
10283
+ const statusData = [
10284
+ ...commitFiles.added.map((filePath) => ({
10285
+ filePath,
10286
+ indexStatus: "A",
10287
+ workingTreeStatus: " ",
10288
+ status: "A"
10289
+ })),
10290
+ ...commitFiles.modified.map((filePath) => ({
10291
+ filePath,
10292
+ indexStatus: "M",
10293
+ workingTreeStatus: " ",
10294
+ status: "M"
10295
+ })),
10296
+ ...commitFiles.removed.map((filePath) => ({
10297
+ filePath,
10298
+ indexStatus: "D",
10299
+ workingTreeStatus: " ",
10300
+ status: "D"
10301
+ })),
10302
+ ...commitFiles.renamed.map((filePath) => ({
10303
+ filePath,
10304
+ indexStatus: "R",
10305
+ workingTreeStatus: " ",
10306
+ status: "R"
10307
+ }))
10308
+ ];
10309
+ const allChangedFiles = [
10310
+ ...commitFiles.added,
10311
+ ...commitFiles.modified,
10312
+ ...commitFiles.removed,
10313
+ ...commitFiles.renamed
10314
+ ].sort((a, b) => a.localeCompare(b));
10315
+ const builder = new N();
10316
+ const tree = builder.build({ files: allChangedFiles, rootPath: rootPath ?? "" });
10317
+ return { tree, statusData };
10318
+ }, [hasChanges, commitFiles, rootPath]);
10319
+ if (!hasChanges) {
10320
+ return /* @__PURE__ */ jsx(
10321
+ "div",
10322
+ {
10323
+ style: {
10324
+ padding: "12px 0",
10325
+ fontSize: theme2.fontSizes[0],
10326
+ fontFamily: theme2.fonts.body,
10327
+ color: theme2.colors.textSecondary,
10328
+ fontStyle: "italic",
10329
+ textAlign: "center"
10330
+ },
10331
+ children: "No commit selected"
10332
+ }
10333
+ );
10334
+ }
10335
+ if (!commitChangesData) {
10336
+ return null;
10337
+ }
10338
+ return /* @__PURE__ */ jsx(
10339
+ GitStatusFileTree,
10340
+ {
10341
+ fileTree: commitChangesData.tree,
10342
+ theme: theme2,
10343
+ gitStatusData: commitChangesData.statusData,
10344
+ onFileSelect: handleFileSelect,
10345
+ onNodeHover,
10346
+ transparentBackground: true,
10347
+ horizontalNodePadding: horizontalPadding,
10348
+ verticalPadding: "4px",
10349
+ openByDefault: true
10350
+ }
10351
+ );
10352
+ };
10230
10353
  const Legend = ({
10231
10354
  fileTypes,
10232
10355
  gitStatus,
10233
10356
  prFiles,
10234
10357
  prNumber,
10358
+ commitFiles,
10359
+ commitHash,
10235
10360
  fileTree,
10236
10361
  rootPath,
10237
10362
  agentLayers,
@@ -10242,6 +10367,8 @@ const Legend = ({
10242
10367
  onGitNodeHover,
10243
10368
  onPrFileClick,
10244
10369
  onPrNodeHover,
10370
+ onCommitFileClick,
10371
+ onCommitNodeHover,
10245
10372
  onAgentLayerClick,
10246
10373
  onQualityMetricClick,
10247
10374
  onClearAgentLayers,
@@ -10250,9 +10377,10 @@ const Legend = ({
10250
10377
  const { theme: theme2 } = useTheme();
10251
10378
  const hasGitStatus = gitStatus != null && (gitStatus.staged.length > 0 || gitStatus.unstaged.length > 0 || gitStatus.untracked.length > 0 || gitStatus.deleted.length > 0);
10252
10379
  const hasPrFiles = prFiles != null && (prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0);
10380
+ const hasCommitFiles = commitFiles != null && (commitFiles.added.length > 0 || commitFiles.modified.length > 0 || commitFiles.removed.length > 0 || commitFiles.renamed.length > 0);
10253
10381
  const hasAgentLayers = agentLayers && agentLayers.length > 0;
10254
10382
  const hasQualityMetrics = qualityMetrics && qualityMetrics.length > 0;
10255
- const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasPrFiles && !hasAgentLayers && !hasQualityMetrics;
10383
+ const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasPrFiles && !hasCommitFiles && !hasAgentLayers && !hasQualityMetrics;
10256
10384
  const qualityModeLabels = {
10257
10385
  coverage: "Test Coverage",
10258
10386
  eslint: "Linting Quality",
@@ -10601,7 +10729,43 @@ const Legend = ({
10601
10729
  }
10602
10730
  )
10603
10731
  ] }),
10604
- fileTypes.length > 0 && !hasPrFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px", padding: `0 ${horizontalPadding}` }, children: [
10732
+ hasCommitFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px", flex: 1, minHeight: 0 }, children: [
10733
+ /* @__PURE__ */ jsxs(
10734
+ "div",
10735
+ {
10736
+ style: {
10737
+ display: "flex",
10738
+ alignItems: "center",
10739
+ gap: "6px",
10740
+ fontSize: theme2.fontSizes[0],
10741
+ fontFamily: theme2.fonts.body,
10742
+ fontWeight: 600,
10743
+ color: theme2.colors.textSecondary,
10744
+ textTransform: "uppercase",
10745
+ letterSpacing: "0.5px",
10746
+ flexShrink: 0,
10747
+ padding: `0 ${horizontalPadding}`
10748
+ },
10749
+ children: [
10750
+ /* @__PURE__ */ jsx(GitCommitHorizontal, { size: 12 }),
10751
+ "Commit Changes",
10752
+ commitHash ? ` ${commitHash.slice(0, 7)}` : "",
10753
+ hasCommitFiles && ` (${commitFiles.added.length + commitFiles.modified.length + commitFiles.removed.length + commitFiles.renamed.length} files)`
10754
+ ]
10755
+ }
10756
+ ),
10757
+ /* @__PURE__ */ jsx(
10758
+ CommitChangesTree,
10759
+ {
10760
+ commitFiles,
10761
+ rootPath,
10762
+ horizontalPadding,
10763
+ onFileClick: onCommitFileClick,
10764
+ onNodeHover: onCommitNodeHover
10765
+ }
10766
+ )
10767
+ ] }),
10768
+ fileTypes.length > 0 && !hasPrFiles && !hasCommitFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px", padding: `0 ${horizontalPadding}` }, children: [
10605
10769
  /* @__PURE__ */ jsx(
10606
10770
  "div",
10607
10771
  {
@@ -24522,7 +24686,7 @@ const CodeCityPanelContent = ({
24522
24686
  actions: actions2,
24523
24687
  events
24524
24688
  }) => {
24525
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
24689
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
24526
24690
  const { theme: theme2 } = useTheme();
24527
24691
  const [cityData, setCityData] = useState(null);
24528
24692
  const [hoverInfo, setHoverInfo] = useState(null);
@@ -25777,11 +25941,15 @@ const CodeCityPanelContent = ({
25777
25941
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25778
25942
  prFiles: (_p = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _p.filesByStatus,
25779
25943
  prNumber: (_q = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _q.pullNumber,
25944
+ commitFiles: (_r = commitFilesSlice == null ? void 0 : commitFilesSlice.data) == null ? void 0 : _r.filesByStatus,
25945
+ commitHash: (_s = commitFilesSlice == null ? void 0 : commitFilesSlice.data) == null ? void 0 : _s.commitHash,
25780
25946
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25781
- rootPath: (_r = context.currentScope.repository) == null ? void 0 : _r.path,
25947
+ rootPath: (_t = context.currentScope.repository) == null ? void 0 : _t.path,
25782
25948
  onGitFileClick: handleFileClick,
25783
25949
  onGitNodeHover: handleGitNodeHover,
25784
25950
  onPrFileClick: handleFileClick,
25951
+ onCommitFileClick: handleFileClick,
25952
+ onCommitNodeHover: handleGitNodeHover,
25785
25953
  position: layout.legendPosition
25786
25954
  }
25787
25955
  ),
@@ -25796,10 +25964,12 @@ const CodeCityPanelContent = ({
25796
25964
  {
25797
25965
  fileTypes: legendFileTypes,
25798
25966
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25799
- prFiles: (_s = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _s.filesByStatus,
25800
- prNumber: (_t = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _t.pullNumber,
25967
+ prFiles: (_u = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _u.filesByStatus,
25968
+ prNumber: (_v = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _v.pullNumber,
25969
+ commitFiles: (_w = commitFilesSlice == null ? void 0 : commitFilesSlice.data) == null ? void 0 : _w.filesByStatus,
25970
+ commitHash: (_x = commitFilesSlice == null ? void 0 : commitFilesSlice.data) == null ? void 0 : _x.commitHash,
25801
25971
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25802
- rootPath: (_u = context.currentScope.repository) == null ? void 0 : _u.path,
25972
+ rootPath: (_y = context.currentScope.repository) == null ? void 0 : _y.path,
25803
25973
  agentLayers: legendAgentLayers,
25804
25974
  qualityMetrics: legendQualityMetrics,
25805
25975
  colorMode,
@@ -25808,6 +25978,8 @@ const CodeCityPanelContent = ({
25808
25978
  onGitNodeHover: handleGitNodeHover,
25809
25979
  onPrFileClick: handleFileClick,
25810
25980
  onPrNodeHover: handleGitNodeHover,
25981
+ onCommitFileClick: handleFileClick,
25982
+ onCommitNodeHover: handleGitNodeHover,
25811
25983
  onAgentLayerClick: toggleAgentLayer,
25812
25984
  onQualityMetricClick: toggleQualityMetric,
25813
25985
  onClearAgentLayers: clearAgentLayers,