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

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.
@@ -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,125 @@ const GitChangesTree = ({
10098
10111
  }
10099
10112
  );
10100
10113
  };
10114
+ const PrChangesTree = ({
10115
+ prFiles,
10116
+ rootPath,
10117
+ onFileClick,
10118
+ onNodeHover
10119
+ }) => {
10120
+ const { theme: theme2 } = useTheme();
10121
+ const hasChanges = useMemo(
10122
+ () => prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0,
10123
+ [prFiles.added.length, prFiles.modified.length, prFiles.removed.length, prFiles.renamed.length]
10124
+ );
10125
+ const renamedPaths = useMemo(
10126
+ () => prFiles.renamed.map((r) => r.filename),
10127
+ [prFiles.renamed]
10128
+ );
10129
+ const getFileStatus = useCallback(
10130
+ (filePath) => {
10131
+ if (prFiles.added.includes(filePath)) {
10132
+ return "added";
10133
+ }
10134
+ if (prFiles.modified.includes(filePath)) {
10135
+ return "modified";
10136
+ }
10137
+ if (prFiles.removed.includes(filePath)) {
10138
+ return "removed";
10139
+ }
10140
+ if (renamedPaths.includes(filePath)) {
10141
+ return "renamed";
10142
+ }
10143
+ return void 0;
10144
+ },
10145
+ [prFiles, renamedPaths]
10146
+ );
10147
+ const handleFileSelect = useCallback(
10148
+ (filePath) => {
10149
+ const status = getFileStatus(filePath);
10150
+ onFileClick == null ? void 0 : onFileClick(filePath, status);
10151
+ },
10152
+ [getFileStatus, onFileClick]
10153
+ );
10154
+ const prChangesData = useMemo(() => {
10155
+ if (!hasChanges) {
10156
+ return null;
10157
+ }
10158
+ const statusData = [
10159
+ ...prFiles.added.map((filePath) => ({
10160
+ filePath,
10161
+ indexStatus: "A",
10162
+ workingTreeStatus: " ",
10163
+ status: "A"
10164
+ })),
10165
+ ...prFiles.modified.map((filePath) => ({
10166
+ filePath,
10167
+ indexStatus: "M",
10168
+ workingTreeStatus: " ",
10169
+ status: "M"
10170
+ })),
10171
+ ...prFiles.removed.map((filePath) => ({
10172
+ filePath,
10173
+ indexStatus: "D",
10174
+ workingTreeStatus: " ",
10175
+ status: "D"
10176
+ })),
10177
+ ...prFiles.renamed.map((renamed) => ({
10178
+ filePath: renamed.filename,
10179
+ indexStatus: "R",
10180
+ workingTreeStatus: " ",
10181
+ status: "R"
10182
+ }))
10183
+ ];
10184
+ const allChangedFiles = [
10185
+ ...prFiles.added,
10186
+ ...prFiles.modified,
10187
+ ...prFiles.removed,
10188
+ ...renamedPaths
10189
+ ].sort((a, b) => a.localeCompare(b));
10190
+ const builder = new N();
10191
+ const tree = builder.build({ files: allChangedFiles, rootPath: rootPath ?? "" });
10192
+ return { tree, statusData };
10193
+ }, [hasChanges, prFiles, renamedPaths, rootPath]);
10194
+ if (!hasChanges) {
10195
+ return /* @__PURE__ */ jsx(
10196
+ "div",
10197
+ {
10198
+ style: {
10199
+ padding: "12px 0",
10200
+ fontSize: theme2.fontSizes[0],
10201
+ fontFamily: theme2.fonts.body,
10202
+ color: theme2.colors.textSecondary,
10203
+ fontStyle: "italic",
10204
+ textAlign: "center"
10205
+ },
10206
+ children: "No PR selected"
10207
+ }
10208
+ );
10209
+ }
10210
+ if (!prChangesData) {
10211
+ return null;
10212
+ }
10213
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
10214
+ GitStatusFileTree,
10215
+ {
10216
+ fileTree: prChangesData.tree,
10217
+ theme: theme2,
10218
+ gitStatusData: prChangesData.statusData,
10219
+ onFileSelect: handleFileSelect,
10220
+ onNodeHover,
10221
+ transparentBackground: true,
10222
+ horizontalNodePadding: "0px",
10223
+ verticalPadding: "4px",
10224
+ openByDefault: true
10225
+ }
10226
+ ) });
10227
+ };
10101
10228
  const Legend = ({
10102
10229
  fileTypes,
10103
10230
  gitStatus,
10231
+ prFiles,
10232
+ prNumber,
10104
10233
  fileTree,
10105
10234
  rootPath,
10106
10235
  agentLayers,
@@ -10109,6 +10238,8 @@ const Legend = ({
10109
10238
  onItemClick,
10110
10239
  onGitFileClick,
10111
10240
  onGitNodeHover,
10241
+ onPrFileClick,
10242
+ onPrNodeHover,
10112
10243
  onAgentLayerClick,
10113
10244
  onQualityMetricClick,
10114
10245
  onClearAgentLayers,
@@ -10116,9 +10247,10 @@ const Legend = ({
10116
10247
  }) => {
10117
10248
  const { theme: theme2 } = useTheme();
10118
10249
  const hasGitStatus = gitStatus != null && (gitStatus.staged.length > 0 || gitStatus.unstaged.length > 0 || gitStatus.untracked.length > 0 || gitStatus.deleted.length > 0);
10250
+ const hasPrFiles = prFiles != null && (prFiles.added.length > 0 || prFiles.modified.length > 0 || prFiles.removed.length > 0 || prFiles.renamed.length > 0);
10119
10251
  const hasAgentLayers = agentLayers && agentLayers.length > 0;
10120
10252
  const hasQualityMetrics = qualityMetrics && qualityMetrics.length > 0;
10121
- const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasAgentLayers && !hasQualityMetrics;
10253
+ const isEmpty = fileTypes.length === 0 && !hasGitStatus && !hasPrFiles && !hasAgentLayers && !hasQualityMetrics;
10122
10254
  const qualityModeLabels = {
10123
10255
  coverage: "Test Coverage",
10124
10256
  eslint: "Linting Quality",
@@ -10139,12 +10271,11 @@ const Legend = ({
10139
10271
  backgroundColor: theme2.colors.background,
10140
10272
  borderTop: isRight ? "none" : `1px solid ${theme2.colors.border}`,
10141
10273
  borderLeft: isRight ? `1px solid ${theme2.colors.border}` : "none",
10142
- overflowY: "auto",
10143
- overflowX: "hidden",
10144
10274
  boxSizing: "border-box",
10145
10275
  flex: 1,
10146
10276
  minWidth: 0,
10147
- minHeight: 0
10277
+ minHeight: 0,
10278
+ overflow: "hidden"
10148
10279
  },
10149
10280
  children: [
10150
10281
  isEmpty && /* @__PURE__ */ jsxs(
@@ -10429,7 +10560,41 @@ const Legend = ({
10429
10560
  }
10430
10561
  )
10431
10562
  ] }),
10432
- fileTypes.length > 0 && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [
10563
+ hasPrFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px", flex: 1, minHeight: 0 }, children: [
10564
+ /* @__PURE__ */ jsxs(
10565
+ "div",
10566
+ {
10567
+ style: {
10568
+ display: "flex",
10569
+ alignItems: "center",
10570
+ gap: "6px",
10571
+ fontSize: theme2.fontSizes[0],
10572
+ fontFamily: theme2.fonts.body,
10573
+ fontWeight: 600,
10574
+ color: theme2.colors.textSecondary,
10575
+ textTransform: "uppercase",
10576
+ letterSpacing: "0.5px",
10577
+ flexShrink: 0
10578
+ },
10579
+ children: [
10580
+ /* @__PURE__ */ jsx(GitPullRequest, { size: 12 }),
10581
+ "PR Changes",
10582
+ prNumber ? ` #${prNumber}` : "",
10583
+ hasPrFiles && ` (${prFiles.added.length + prFiles.modified.length + prFiles.removed.length + prFiles.renamed.length} files)`
10584
+ ]
10585
+ }
10586
+ ),
10587
+ /* @__PURE__ */ jsx("div", { style: { flex: 1, minHeight: 0, overflowY: "auto" }, children: /* @__PURE__ */ jsx(
10588
+ PrChangesTree,
10589
+ {
10590
+ prFiles,
10591
+ rootPath,
10592
+ onFileClick: onPrFileClick,
10593
+ onNodeHover: onPrNodeHover
10594
+ }
10595
+ ) })
10596
+ ] }),
10597
+ fileTypes.length > 0 && !hasPrFiles && /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [
10433
10598
  /* @__PURE__ */ jsx(
10434
10599
  "div",
10435
10600
  {
@@ -24350,7 +24515,7 @@ const CodeCityPanelContent = ({
24350
24515
  actions: actions2,
24351
24516
  events
24352
24517
  }) => {
24353
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
24518
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
24354
24519
  const { theme: theme2 } = useTheme();
24355
24520
  const [cityData, setCityData] = useState(null);
24356
24521
  const [hoverInfo, setHoverInfo] = useState(null);
@@ -24464,7 +24629,7 @@ const CodeCityPanelContent = ({
24464
24629
  return COLOR_MODES.find((m) => m.id === colorMode) || COLOR_MODES[0];
24465
24630
  }, [colorMode]);
24466
24631
  const hoveredFileMetric = useMemo(() => {
24467
- var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p;
24632
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m2, _n2, _o2, _p2;
24468
24633
  if (!((_a2 = hoverInfo == null ? void 0 : hoverInfo.hoveredBuilding) == null ? void 0 : _a2.path)) return null;
24469
24634
  const filePath = hoverInfo.hoveredBuilding.path;
24470
24635
  if (!qualityData) return null;
@@ -24529,7 +24694,7 @@ const CodeCityPanelContent = ({
24529
24694
  return { type: "knip", value: null, label: "No dead code data" };
24530
24695
  }
24531
24696
  case "alexandria": {
24532
- const metric = (_p = (_o2 = qualityData.fileMetrics) == null ? void 0 : _o2.alexandria) == null ? void 0 : _p.find((m) => m.file === filePath);
24697
+ const metric = (_p2 = (_o2 = qualityData.fileMetrics) == null ? void 0 : _o2.alexandria) == null ? void 0 : _p2.find((m) => m.file === filePath);
24533
24698
  if (metric) {
24534
24699
  const issues = metric.issueCount;
24535
24700
  return { type: "alexandria", value: metric, label: issues > 0 ? `${issues} doc issue${issues > 1 ? "s" : ""}` : "Well documented" };
@@ -24817,6 +24982,12 @@ const CodeCityPanelContent = ({
24817
24982
  const { staged, unstaged, untracked, deleted } = gitSlice.data;
24818
24983
  return staged.length + unstaged.length + untracked.length + deleted.length;
24819
24984
  }, [gitSlice == null ? void 0 : gitSlice.data]);
24985
+ useMemo(() => {
24986
+ var _a2;
24987
+ if (!((_a2 = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _a2.filesByStatus)) return 0;
24988
+ const { added, modified, removed, renamed } = prFilesSlice.data.filesByStatus;
24989
+ return added.length + modified.length + removed.length + renamed.length;
24990
+ }, [(_g = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _g.filesByStatus]);
24820
24991
  const legendAgentLayers = useMemo(() => {
24821
24992
  const agentLayers = highlightLayers.filter(
24822
24993
  (layer) => layer.id.startsWith("event-highlight")
@@ -25073,7 +25244,7 @@ const CodeCityPanelContent = ({
25073
25244
  } finally {
25074
25245
  setLoading(false);
25075
25246
  }
25076
- }, [fileTreeSlice == null ? void 0 : fileTreeSlice.data, fileTreeSlice == null ? void 0 : fileTreeSlice.loading, (_g = context.currentScope.repository) == null ? void 0 : _g.path]);
25247
+ }, [fileTreeSlice == null ? void 0 : fileTreeSlice.data, fileTreeSlice == null ? void 0 : fileTreeSlice.loading, (_h = context.currentScope.repository) == null ? void 0 : _h.path]);
25077
25248
  const handleFileClick = useCallback(
25078
25249
  (filePath) => {
25079
25250
  if (actions2.openFile) {
@@ -25361,7 +25532,7 @@ const CodeCityPanelContent = ({
25361
25532
  textOverflow: "ellipsis",
25362
25533
  whiteSpace: "nowrap"
25363
25534
  },
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"
25535
+ 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
25536
  }
25366
25537
  ),
25367
25538
  /* @__PURE__ */ jsx(
@@ -25375,7 +25546,7 @@ const CodeCityPanelContent = ({
25375
25546
  textOverflow: "ellipsis",
25376
25547
  whiteSpace: "nowrap"
25377
25548
  },
25378
- children: ((_l = hoverInfo.hoveredBuilding) == null ? void 0 : _l.path) || ((_m = hoverInfo.hoveredDistrict) == null ? void 0 : _m.path) || "/"
25549
+ children: ((_m = hoverInfo.hoveredBuilding) == null ? void 0 : _m.path) || ((_n = hoverInfo.hoveredDistrict) == null ? void 0 : _n.path) || "/"
25379
25550
  }
25380
25551
  )
25381
25552
  ]
@@ -25501,10 +25672,13 @@ const CodeCityPanelContent = ({
25501
25672
  {
25502
25673
  fileTypes: [],
25503
25674
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25675
+ prFiles: (_o = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _o.filesByStatus,
25676
+ prNumber: (_p = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _p.pullNumber,
25504
25677
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25505
- rootPath: (_n = context.currentScope.repository) == null ? void 0 : _n.path,
25678
+ rootPath: (_q = context.currentScope.repository) == null ? void 0 : _q.path,
25506
25679
  onGitFileClick: handleFileClick,
25507
25680
  onGitNodeHover: handleGitNodeHover,
25681
+ onPrFileClick: handleFileClick,
25508
25682
  position: layout.legendPosition
25509
25683
  }
25510
25684
  ),
@@ -25519,14 +25693,17 @@ const CodeCityPanelContent = ({
25519
25693
  {
25520
25694
  fileTypes: legendFileTypes,
25521
25695
  gitStatus: gitSlice == null ? void 0 : gitSlice.data,
25696
+ prFiles: (_r = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _r.filesByStatus,
25697
+ prNumber: (_s = prFilesSlice == null ? void 0 : prFilesSlice.data) == null ? void 0 : _s.pullNumber,
25522
25698
  fileTree: fileTreeSlice == null ? void 0 : fileTreeSlice.data,
25523
- rootPath: (_o = context.currentScope.repository) == null ? void 0 : _o.path,
25699
+ rootPath: (_t = context.currentScope.repository) == null ? void 0 : _t.path,
25524
25700
  agentLayers: legendAgentLayers,
25525
25701
  qualityMetrics: legendQualityMetrics,
25526
25702
  colorMode,
25527
25703
  onItemClick: toggleFileType,
25528
25704
  onGitFileClick: handleFileClick,
25529
25705
  onGitNodeHover: handleGitNodeHover,
25706
+ onPrFileClick: handleFileClick,
25530
25707
  onAgentLayerClick: toggleAgentLayer,
25531
25708
  onQualityMetricClick: toggleQualityMetric,
25532
25709
  onClearAgentLayers: clearAgentLayers,