@industry-theme/file-city-panel 0.2.34 → 0.2.35

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;AAw7CD;;;;;;;;;;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;AAq8CD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EA8BxC,CAAC"}
@@ -2,7 +2,9 @@ import React from 'react';
2
2
  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
+ import { type PrFilesStatus, type PrChangeSelectionStatus } from './PrChangesTree';
5
6
  export type { GitStatus, GitChangeSelectionStatus } from './GitChangesTree';
7
+ export type { PrFilesStatus, PrChangeSelectionStatus } from './PrChangesTree';
6
8
  export interface LegendFileType {
7
9
  id: string;
8
10
  name: string;
@@ -42,6 +44,10 @@ interface LegendProps {
42
44
  fileTypes: LegendFileType[];
43
45
  /** Raw git status data with file path arrays */
44
46
  gitStatus?: GitStatus | null;
47
+ /** PR files data with categorized file paths */
48
+ prFiles?: PrFilesStatus | null;
49
+ /** PR number for display */
50
+ prNumber?: number | null;
45
51
  /** File tree for expanding directories in git changes view */
46
52
  fileTree?: FileTree | null;
47
53
  /** Root path for building file trees */
@@ -54,6 +60,10 @@ interface LegendProps {
54
60
  onGitFileClick?: (filePath: string, status?: GitChangeSelectionStatus) => void;
55
61
  /** Callback when a git node is hovered */
56
62
  onGitNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
63
+ /** Callback when a PR file is clicked */
64
+ onPrFileClick?: (filePath: string, status?: PrChangeSelectionStatus) => void;
65
+ /** Callback when a PR node is hovered */
66
+ onPrNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
57
67
  onAgentLayerClick?: (id: string) => void;
58
68
  onQualityMetricClick?: (id: string) => void;
59
69
  onClearAgentLayers?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGjG,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC/E,0CAA0C;IAC1C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACtE,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA8YxC,CAAC"}
1
+ {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../../src/panels/components/Legend.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ /** PR files data structure with categorized file paths */
3
+ export interface PrFilesStatus {
4
+ added: string[];
5
+ modified: string[];
6
+ removed: string[];
7
+ renamed: {
8
+ filename: string;
9
+ previous_filename?: string;
10
+ }[];
11
+ }
12
+ /** PR file status category for selection callbacks */
13
+ export type PrChangeSelectionStatus = 'added' | 'modified' | 'removed' | 'renamed';
14
+ interface PrChangesTreeProps {
15
+ /** PR files data with categorized file paths */
16
+ prFiles: PrFilesStatus;
17
+ /** PR number for display */
18
+ pullNumber?: number | null;
19
+ /** Root path for the repository (used for building file trees) */
20
+ rootPath?: string;
21
+ /** Callback when a file is clicked */
22
+ onFileClick?: (filePath: string, status?: PrChangeSelectionStatus) => void;
23
+ /** Callback when a node is hovered */
24
+ onNodeHover?: (nodePath: string | null, isFolder: boolean) => void;
25
+ }
26
+ /**
27
+ * PrChangesTree component that displays PR file changes in a file tree format.
28
+ * Uses GitStatusFileTree from @principal-ade/dynamic-file-tree for rendering.
29
+ */
30
+ export declare const PrChangesTree: React.FC<PrChangesTreeProps>;
31
+ export {};
32
+ //# sourceMappingURL=PrChangesTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrChangesTree.d.ts","sourceRoot":"","sources":["../../../src/panels/components/PrChangesTree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7D;AAED,sDAAsD;AACtD,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF,UAAU,kBAAkB;IAC1B,gDAAgD;IAChD,OAAO,EAAE,aAAa,CAAC;IACvB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC3E,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyJtD,CAAC"}
@@ -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$g = [
109
+ const __iconNode$h = [
110
110
  [
111
111
  "path",
112
112
  {
@@ -115,14 +115,14 @@ const __iconNode$g = [
115
115
  }
116
116
  ]
117
117
  ];
118
- const Activity = createLucideIcon("activity", __iconNode$g);
118
+ const Activity = createLucideIcon("activity", __iconNode$h);
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$f = [
125
+ const __iconNode$g = [
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$f = [
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$f);
138
+ const Building2 = createLucideIcon("building-2", __iconNode$g);
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$e = [
145
+ const __iconNode$f = [
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$e);
151
+ const ChartColumn = createLucideIcon("chart-column", __iconNode$f);
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$d = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
159
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$d);
158
+ const __iconNode$e = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
159
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$e);
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$c = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
167
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$c);
166
+ const __iconNode$d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
167
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$d);
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$b = [
174
+ const __iconNode$c = [
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$b);
179
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$c);
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$a = [
186
+ const __iconNode$b = [
187
187
  [
188
188
  "path",
189
189
  {
@@ -201,14 +201,14 @@ const __iconNode$a = [
201
201
  ],
202
202
  ["path", { d: "m2 2 20 20", key: "1ooewy" }]
203
203
  ];
204
- const EyeOff = createLucideIcon("eye-off", __iconNode$a);
204
+ const EyeOff = createLucideIcon("eye-off", __iconNode$b);
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$9 = [
211
+ const __iconNode$a = [
212
212
  [
213
213
  "path",
214
214
  {
@@ -218,14 +218,14 @@ const __iconNode$9 = [
218
218
  ],
219
219
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
220
220
  ];
221
- const Eye = createLucideIcon("eye", __iconNode$9);
221
+ const Eye = createLucideIcon("eye", __iconNode$a);
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$8 = [
228
+ const __iconNode$9 = [
229
229
  [
230
230
  "path",
231
231
  {
@@ -236,14 +236,14 @@ const __iconNode$8 = [
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$8);
239
+ const FileQuestionMark = createLucideIcon("file-question-mark", __iconNode$9);
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$7 = [
246
+ const __iconNode$8 = [
247
247
  [
248
248
  "path",
249
249
  {
@@ -256,14 +256,14 @@ const __iconNode$7 = [
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$7);
259
+ const FileText = createLucideIcon("file-text", __iconNode$8);
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$6 = [
266
+ const __iconNode$7 = [
267
267
  [
268
268
  "path",
269
269
  {
@@ -273,14 +273,14 @@ const __iconNode$6 = [
273
273
  ],
274
274
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
275
275
  ];
276
- const File = createLucideIcon("file", __iconNode$6);
276
+ const File = createLucideIcon("file", __iconNode$7);
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$5 = [
283
+ const __iconNode$6 = [
284
284
  [
285
285
  "path",
286
286
  {
@@ -289,20 +289,33 @@ const __iconNode$5 = [
289
289
  }
290
290
  ]
291
291
  ];
292
- const Folder = createLucideIcon("folder", __iconNode$5);
292
+ const Folder = createLucideIcon("folder", __iconNode$6);
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$4 = [
299
+ const __iconNode$5 = [
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$4);
305
+ const GitBranch = createLucideIcon("git-branch", __iconNode$5);
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$4 = [
313
+ ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
314
+ ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
315
+ ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
316
+ ["line", { x1: "6", x2: "6", y1: "9", y2: "21", key: "rroup" }]
317
+ ];
318
+ const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$4);
306
319
  /**
307
320
  * @license lucide-react v0.552.0 - ISC
308
321
  *
@@ -10098,9 +10111,149 @@ const GitChangesTree = ({
10098
10111
  }
10099
10112
  );
10100
10113
  };
10114
+ const PrChangesTree = ({
10115
+ prFiles,
10116
+ pullNumber,
10117
+ rootPath,
10118
+ onFileClick,
10119
+ onNodeHover
10120
+ }) => {
10121
+ const { theme: theme2 } = useTheme();
10122
+ const hasChanges = useMemo(
10123
+ () => prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0,
10124
+ [prFiles.added.length, prFiles.modified.length, prFiles.removed.length, prFiles.renamed.length]
10125
+ );
10126
+ const renamedPaths = useMemo(
10127
+ () => prFiles.renamed.map((r) => r.filename),
10128
+ [prFiles.renamed]
10129
+ );
10130
+ const getFileStatus = useCallback(
10131
+ (filePath) => {
10132
+ if (prFiles.added.includes(filePath)) {
10133
+ return "added";
10134
+ }
10135
+ if (prFiles.modified.includes(filePath)) {
10136
+ return "modified";
10137
+ }
10138
+ if (prFiles.removed.includes(filePath)) {
10139
+ return "removed";
10140
+ }
10141
+ if (renamedPaths.includes(filePath)) {
10142
+ return "renamed";
10143
+ }
10144
+ return void 0;
10145
+ },
10146
+ [prFiles, renamedPaths]
10147
+ );
10148
+ const handleFileSelect = useCallback(
10149
+ (filePath) => {
10150
+ const status = getFileStatus(filePath);
10151
+ onFileClick == null ? void 0 : onFileClick(filePath, status);
10152
+ },
10153
+ [getFileStatus, onFileClick]
10154
+ );
10155
+ const prChangesData = useMemo(() => {
10156
+ if (!hasChanges) {
10157
+ return null;
10158
+ }
10159
+ const statusData = [
10160
+ ...prFiles.added.map((filePath) => ({
10161
+ filePath,
10162
+ indexStatus: "A",
10163
+ workingTreeStatus: " ",
10164
+ status: "A"
10165
+ })),
10166
+ ...prFiles.modified.map((filePath) => ({
10167
+ filePath,
10168
+ indexStatus: "M",
10169
+ workingTreeStatus: " ",
10170
+ status: "M"
10171
+ })),
10172
+ ...prFiles.removed.map((filePath) => ({
10173
+ filePath,
10174
+ indexStatus: "D",
10175
+ workingTreeStatus: " ",
10176
+ status: "D"
10177
+ })),
10178
+ ...prFiles.renamed.map((renamed) => ({
10179
+ filePath: renamed.filename,
10180
+ indexStatus: "R",
10181
+ workingTreeStatus: " ",
10182
+ status: "R"
10183
+ }))
10184
+ ];
10185
+ const allChangedFiles = [
10186
+ ...prFiles.added,
10187
+ ...prFiles.modified,
10188
+ ...prFiles.removed,
10189
+ ...renamedPaths
10190
+ ].sort((a, b) => a.localeCompare(b));
10191
+ const builder = new N();
10192
+ const tree = builder.build({ files: allChangedFiles, rootPath: rootPath ?? "" });
10193
+ return { tree, statusData };
10194
+ }, [hasChanges, prFiles, renamedPaths, rootPath]);
10195
+ if (!hasChanges) {
10196
+ return /* @__PURE__ */ jsx(
10197
+ "div",
10198
+ {
10199
+ style: {
10200
+ padding: "12px 0",
10201
+ fontSize: theme2.fontSizes[0],
10202
+ fontFamily: theme2.fonts.body,
10203
+ color: theme2.colors.textSecondary,
10204
+ fontStyle: "italic",
10205
+ textAlign: "center"
10206
+ },
10207
+ children: "No PR selected"
10208
+ }
10209
+ );
10210
+ }
10211
+ if (!prChangesData) {
10212
+ return null;
10213
+ }
10214
+ const totalFiles = prFiles.added.length + prFiles.modified.length + prFiles.removed.length + prFiles.renamed.length;
10215
+ return /* @__PURE__ */ jsxs("div", { children: [
10216
+ pullNumber && /* @__PURE__ */ jsxs(
10217
+ "div",
10218
+ {
10219
+ style: {
10220
+ padding: "4px 0 8px 0",
10221
+ fontSize: theme2.fontSizes[0],
10222
+ fontFamily: theme2.fonts.body,
10223
+ color: theme2.colors.textSecondary
10224
+ },
10225
+ children: [
10226
+ "PR #",
10227
+ pullNumber,
10228
+ " (",
10229
+ totalFiles,
10230
+ " file",
10231
+ totalFiles !== 1 ? "s" : "",
10232
+ ")"
10233
+ ]
10234
+ }
10235
+ ),
10236
+ /* @__PURE__ */ jsx(
10237
+ GitStatusFileTree,
10238
+ {
10239
+ fileTree: prChangesData.tree,
10240
+ theme: theme2,
10241
+ gitStatusData: prChangesData.statusData,
10242
+ onFileSelect: handleFileSelect,
10243
+ onNodeHover,
10244
+ transparentBackground: true,
10245
+ horizontalNodePadding: "0px",
10246
+ verticalPadding: "4px",
10247
+ openByDefault: true
10248
+ }
10249
+ )
10250
+ ] });
10251
+ };
10101
10252
  const Legend = ({
10102
10253
  fileTypes,
10103
10254
  gitStatus,
10255
+ prFiles,
10256
+ prNumber,
10104
10257
  fileTree,
10105
10258
  rootPath,
10106
10259
  agentLayers,
@@ -10109,6 +10262,8 @@ const Legend = ({
10109
10262
  onItemClick,
10110
10263
  onGitFileClick,
10111
10264
  onGitNodeHover,
10265
+ onPrFileClick,
10266
+ onPrNodeHover,
10112
10267
  onAgentLayerClick,
10113
10268
  onQualityMetricClick,
10114
10269
  onClearAgentLayers,
@@ -10116,9 +10271,10 @@ const Legend = ({
10116
10271
  }) => {
10117
10272
  const { theme: theme2 } = useTheme();
10118
10273
  const hasGitStatus = gitStatus != null && (gitStatus.staged.length > 0 || gitStatus.unstaged.length > 0 || gitStatus.untracked.length > 0 || gitStatus.deleted.length > 0);
10274
+ const hasPrFiles = prFiles != null && (prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0);
10119
10275
  const hasAgentLayers = agentLayers && agentLayers.length > 0;
10120
10276
  const hasQualityMetrics = qualityMetrics && qualityMetrics.length > 0;
10121
- const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasAgentLayers && !hasQualityMetrics;
10277
+ const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasPrFiles && !hasAgentLayers && !hasQualityMetrics;
10122
10278
  const qualityModeLabels = {
10123
10279
  coverage: "Test Coverage",
10124
10280
  eslint: "Linting Quality",
@@ -10429,6 +10585,39 @@ const Legend = ({
10429
10585
  }
10430
10586
  )
10431
10587
  ] }),
10588
+ hasPrFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [
10589
+ /* @__PURE__ */ jsxs(
10590
+ "div",
10591
+ {
10592
+ style: {
10593
+ display: "flex",
10594
+ alignItems: "center",
10595
+ gap: "6px",
10596
+ fontSize: theme2.fontSizes[0],
10597
+ fontFamily: theme2.fonts.body,
10598
+ fontWeight: 600,
10599
+ color: theme2.colors.textSecondary,
10600
+ textTransform: "uppercase",
10601
+ letterSpacing: "0.5px"
10602
+ },
10603
+ children: [
10604
+ /* @__PURE__ */ jsx(GitPullRequest, { size: 12 }),
10605
+ "PR Changes",
10606
+ prNumber ? ` #${prNumber}` : ""
10607
+ ]
10608
+ }
10609
+ ),
10610
+ /* @__PURE__ */ jsx(
10611
+ PrChangesTree,
10612
+ {
10613
+ prFiles,
10614
+ pullNumber: prNumber,
10615
+ rootPath,
10616
+ onFileClick: onPrFileClick,
10617
+ onNodeHover: onPrNodeHover
10618
+ }
10619
+ )
10620
+ ] }),
10432
10621
  fileTypes.length > 0 && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [
10433
10622
  /* @__PURE__ */ jsx(
10434
10623
  "div",
@@ -24350,7 +24539,7 @@ const CodeCityPanelContent = ({
24350
24539
  actions: actions2,
24351
24540
  events
24352
24541
  }) => {
24353
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
24542
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
24354
24543
  const { theme: theme2 } = useTheme();
24355
24544
  const [cityData, setCityData] = useState(null);
24356
24545
  const [hoverInfo, setHoverInfo] = useState(null);
@@ -24464,7 +24653,7 @@ const CodeCityPanelContent = ({
24464
24653
  return COLOR_MODES.find((m) => m.id === colorMode) || COLOR_MODES[0];
24465
24654
  }, [colorMode]);
24466
24655
  const hoveredFileMetric = useMemo(() => {
24467
- var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p;
24656
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p2;
24468
24657
  if (!((_a2 = hoverInfo == null ? void 0 : hoverInfo.hoveredBuilding) == null ? void 0 : _a2.path)) return null;
24469
24658
  const filePath = hoverInfo.hoveredBuilding.path;
24470
24659
  if (!qualityData) return null;
@@ -24529,7 +24718,7 @@ const CodeCityPanelContent = ({
24529
24718
  return { type: "knip", value: null, label: "No dead code data" };
24530
24719
  }
24531
24720
  case "alexandria": {
24532
- const metric = (_p = (_o2 = qualityData.fileMetrics) == null ? void 0 : _o2.alexandria) == null ? void 0 : _p.find((m) => m.file === filePath);
24721
+ const metric = (_p2 = (_o2 = qualityData.fileMetrics) == null ? void 0 : _o2.alexandria) == null ? void 0 : _p2.find((m) => m.file === filePath);
24533
24722
  if (metric) {
24534
24723
  const issues = metric.issueCount;
24535
24724
  return { type: "alexandria", value: metric, label: issues > 0 ? `${issues} doc issue${issues > 1 ? "s" : ""}` : "Well documented" };
@@ -24817,6 +25006,12 @@ const CodeCityPanelContent = ({
24817
25006
  const { staged, unstaged, untracked, deleted } = gitSlice.data;
24818
25007
  return staged.length + unstaged.length + untracked.length + deleted.length;
24819
25008
  }, [gitSlice == null ? void 0 : gitSlice.data]);
25009
+ useMemo(() => {
25010
+ var _a2;
25011
+ if (!((_a2 = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _a2.filesByStatus)) return 0;
25012
+ const { added, modified, removed, renamed } = prFilesSlice.data.filesByStatus;
25013
+ return added.length + modified.length + removed.length + renamed.length;
25014
+ }, [(_g = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _g.filesByStatus]);
24820
25015
  const legendAgentLayers = useMemo(() => {
24821
25016
  const agentLayers = highlightLayers.filter(
24822
25017
  (layer) => layer.id.startsWith("event-highlight")
@@ -25073,7 +25268,7 @@ const CodeCityPanelContent = ({
25073
25268
  } finally {
25074
25269
  setLoading(false);
25075
25270
  }
25076
- }, [fileTreeSlice == null ? void 0 : fileTreeSlice.data, fileTreeSlice == null ? void 0 : fileTreeSlice.loading, (_g = context.currentScope.repository) == null ? void 0 : _g.path]);
25271
+ }, [fileTreeSlice == null ? void 0 : fileTreeSlice.data, fileTreeSlice == null ? void 0 : fileTreeSlice.loading, (_h = context.currentScope.repository) == null ? void 0 : _h.path]);
25077
25272
  const handleFileClick = useCallback(
25078
25273
  (filePath) => {
25079
25274
  if (actions2.openFile) {
@@ -25361,7 +25556,7 @@ const CodeCityPanelContent = ({
25361
25556
  textOverflow: "ellipsis",
25362
25557
  whiteSpace: "nowrap"
25363
25558
  },
25364
- children: ((_h = hoverInfo.fileTooltip) == null ? void 0 : _h.text) || ((_j = (_i = hoverInfo.hoveredDistrict) == null ? void 0 : _i.path) == null ? void 0 : _j.split("/").pop()) || ((_k = hoverInfo.hoveredDistrict) == null ? void 0 : _k.path) || "Unknown"
25559
+ children: ((_i = hoverInfo.fileTooltip) == null ? void 0 : _i.text) || ((_k = (_j = hoverInfo.hoveredDistrict) == null ? void 0 : _j.path) == null ? void 0 : _k.split("/").pop()) || ((_l = hoverInfo.hoveredDistrict) == null ? void 0 : _l.path) || "Unknown"
25365
25560
  }
25366
25561
  ),
25367
25562
  /* @__PURE__ */ jsx(
@@ -25375,7 +25570,7 @@ const CodeCityPanelContent = ({
25375
25570
  textOverflow: "ellipsis",
25376
25571
  whiteSpace: "nowrap"
25377
25572
  },
25378
- children: ((_l = hoverInfo.hoveredBuilding) == null ? void 0 : _l.path) || ((_m = hoverInfo.hoveredDistrict) == null ? void 0 : _m.path) || "/"
25573
+ children: ((_m = hoverInfo.hoveredBuilding) == null ? void 0 : _m.path) || ((_n = hoverInfo.hoveredDistrict) == null ? void 0 : _n.path) || "/"
25379
25574
  }
25380
25575
  )
25381
25576
  ]
@@ -25501,10 +25696,13 @@ const CodeCityPanelContent = ({
25501
25696
  {
25502
25697
  fileTypes: [],
25503
25698
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25699
+ prFiles: (_o = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _o.filesByStatus,
25700
+ prNumber: (_p = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _p.pullNumber,
25504
25701
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25505
- rootPath: (_n = context.currentScope.repository) == null ? void 0 : _n.path,
25702
+ rootPath: (_q = context.currentScope.repository) == null ? void 0 : _q.path,
25506
25703
  onGitFileClick: handleFileClick,
25507
25704
  onGitNodeHover: handleGitNodeHover,
25705
+ onPrFileClick: handleFileClick,
25508
25706
  position: layout.legendPosition
25509
25707
  }
25510
25708
  ),
@@ -25519,14 +25717,17 @@ const CodeCityPanelContent = ({
25519
25717
  {
25520
25718
  fileTypes: legendFileTypes,
25521
25719
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25720
+ prFiles: (_r = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _r.filesByStatus,
25721
+ prNumber: (_s = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _s.pullNumber,
25522
25722
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25523
- rootPath: (_o = context.currentScope.repository) == null ? void 0 : _o.path,
25723
+ rootPath: (_t = context.currentScope.repository) == null ? void 0 : _t.path,
25524
25724
  agentLayers: legendAgentLayers,
25525
25725
  qualityMetrics: legendQualityMetrics,
25526
25726
  colorMode,
25527
25727
  onItemClick: toggleFileType,
25528
25728
  onGitFileClick: handleFileClick,
25529
25729
  onGitNodeHover: handleGitNodeHover,
25730
+ onPrFileClick: handleFileClick,
25530
25731
  onAgentLayerClick: toggleAgentLayer,
25531
25732
  onQualityMetricClick: toggleQualityMetric,
25532
25733
  onClearAgentLayers: clearAgentLayers,