@industry-theme/alexandria-panels 0.1.2 → 0.1.4
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.
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/mocks/panelContext.d.ts.map +1 -1
- package/dist/panels/DependenciesPanel/DependenciesPanel.stories.d.ts +59 -0
- package/dist/panels/DependenciesPanel/DependenciesPanel.stories.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/components/DependencyInfoModal.d.ts +8 -0
- package/dist/panels/DependenciesPanel/components/DependencyInfoModal.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/components/DependencyRow.d.ts +8 -0
- package/dist/panels/DependenciesPanel/components/DependencyRow.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/components/FilterBar.d.ts +17 -0
- package/dist/panels/DependenciesPanel/components/FilterBar.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/components/index.d.ts +4 -0
- package/dist/panels/DependenciesPanel/components/index.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/index.d.ts +7 -0
- package/dist/panels/DependenciesPanel/index.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/tools.d.ts +35 -0
- package/dist/panels/DependenciesPanel/tools.d.ts.map +1 -0
- package/dist/panels/DependenciesPanel/types.d.ts +36 -0
- package/dist/panels/DependenciesPanel/types.d.ts.map +1 -0
- package/dist/panels/LocalProjectsPanel/LocalProjectCard.d.ts.map +1 -1
- package/dist/panels/LocalProjectsPanel/types.d.ts +11 -1
- package/dist/panels/LocalProjectsPanel/types.d.ts.map +1 -1
- package/dist/panels/WorkspaceRepositoriesPanel/index.d.ts +2 -2
- package/dist/panels/WorkspaceRepositoriesPanel/index.d.ts.map +1 -1
- package/dist/panels/WorkspaceRepositoriesPanel/types.d.ts +0 -23
- package/dist/panels/WorkspaceRepositoriesPanel/types.d.ts.map +1 -1
- package/dist/panels.bundle.js +1372 -459
- package/dist/panels.bundle.js.map +1 -1
- package/dist/tools/index.d.ts +3 -24
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools.bundle.js +194 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/panels/WorkspaceRepositoriesPanel/WorkspaceRepositoryCard.d.ts +0 -10
- package/dist/panels/WorkspaceRepositoriesPanel/WorkspaceRepositoryCard.d.ts.map +0 -1
- package/dist/panels.bundle.css +0 -86
package/dist/panels.bundle.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
"use strict";
|
|
3
|
+
try {
|
|
4
|
+
if (typeof document != "undefined") {
|
|
5
|
+
var elementStyle = document.createElement("style");
|
|
6
|
+
elementStyle.appendChild(document.createTextNode("/* Container query for responsive LocalProjectCard */\n.local-projects-panel {\n container-type: inline-size;\n container-name: local-projects;\n height: 100%;\n}\n\n.local-project-card {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 12px;\n}\n\n.local-project-card__content {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.local-project-card__info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.local-project-card__path,\n.local-project-card__meta {\n display: flex;\n}\n\n.local-project-card__actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n align-items: center;\n}\n\n.local-project-card__actions--stacked {\n display: none;\n}\n\n/* Compact mode when container is 400px or less */\n@container local-projects (max-width: 400px) {\n .local-projects-panel {\n padding: 8px !important;\n gap: 8px !important;\n }\n\n .local-projects-list {\n gap: 12px !important;\n }\n\n .local-project-card {\n flex-direction: column;\n align-items: stretch;\n gap: 6px;\n padding: 0 !important;\n }\n\n .local-project-card__content {\n gap: 8px;\n }\n\n .local-project-card__path,\n .local-project-card__meta {\n display: none;\n }\n\n .local-project-card__actions {\n display: none;\n }\n\n .local-project-card__actions--stacked {\n display: flex;\n gap: 4px;\n }\n\n .local-project-card__actions--stacked button {\n flex: 1;\n }\n}"));
|
|
7
|
+
document.head.appendChild(elementStyle);
|
|
8
|
+
}
|
|
9
|
+
} catch (e) {
|
|
10
|
+
console.error("vite-plugin-css-injected-by-js", e);
|
|
11
|
+
}
|
|
12
|
+
})();
|
|
1
13
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
14
|
import React2, { createContext, useState, useEffect, useContext, forwardRef, createElement, useMemo, useCallback } from "react";
|
|
3
15
|
var terminalTheme = {
|
|
@@ -320,7 +332,46 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
320
332
|
* This source code is licensed under the ISC license.
|
|
321
333
|
* See the LICENSE file in the root directory of this source tree.
|
|
322
334
|
*/
|
|
323
|
-
const __iconNode$
|
|
335
|
+
const __iconNode$j = [
|
|
336
|
+
[
|
|
337
|
+
"path",
|
|
338
|
+
{
|
|
339
|
+
d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",
|
|
340
|
+
key: "lc1i9w"
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
["path", { d: "m7 16.5-4.74-2.85", key: "1o9zyk" }],
|
|
344
|
+
["path", { d: "m7 16.5 5-3", key: "va8pkn" }],
|
|
345
|
+
["path", { d: "M7 16.5v5.17", key: "jnp8gn" }],
|
|
346
|
+
[
|
|
347
|
+
"path",
|
|
348
|
+
{
|
|
349
|
+
d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",
|
|
350
|
+
key: "8zsnat"
|
|
351
|
+
}
|
|
352
|
+
],
|
|
353
|
+
["path", { d: "m17 16.5-5-3", key: "8arw3v" }],
|
|
354
|
+
["path", { d: "m17 16.5 4.74-2.85", key: "8rfmw" }],
|
|
355
|
+
["path", { d: "M17 16.5v5.17", key: "k6z78m" }],
|
|
356
|
+
[
|
|
357
|
+
"path",
|
|
358
|
+
{
|
|
359
|
+
d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",
|
|
360
|
+
key: "1xygjf"
|
|
361
|
+
}
|
|
362
|
+
],
|
|
363
|
+
["path", { d: "M12 8 7.26 5.15", key: "1vbdud" }],
|
|
364
|
+
["path", { d: "m12 8 4.74-2.85", key: "3rx089" }],
|
|
365
|
+
["path", { d: "M12 13.5V8", key: "1io7kd" }]
|
|
366
|
+
];
|
|
367
|
+
const Boxes = createLucideIcon("boxes", __iconNode$j);
|
|
368
|
+
/**
|
|
369
|
+
* @license lucide-react v0.552.0 - ISC
|
|
370
|
+
*
|
|
371
|
+
* This source code is licensed under the ISC license.
|
|
372
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
373
|
+
*/
|
|
374
|
+
const __iconNode$i = [
|
|
324
375
|
["path", { d: "M10 12h4", key: "a56b0p" }],
|
|
325
376
|
["path", { d: "M10 8h4", key: "1sr2af" }],
|
|
326
377
|
["path", { d: "M14 21v-3a2 2 0 0 0-4 0v3", key: "1rgiei" }],
|
|
@@ -333,47 +384,71 @@ const __iconNode$e = [
|
|
|
333
384
|
],
|
|
334
385
|
["path", { d: "M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16", key: "16ra0t" }]
|
|
335
386
|
];
|
|
336
|
-
const Building2 = createLucideIcon("building-2", __iconNode$
|
|
387
|
+
const Building2 = createLucideIcon("building-2", __iconNode$i);
|
|
337
388
|
/**
|
|
338
389
|
* @license lucide-react v0.552.0 - ISC
|
|
339
390
|
*
|
|
340
391
|
* This source code is licensed under the ISC license.
|
|
341
392
|
* See the LICENSE file in the root directory of this source tree.
|
|
342
393
|
*/
|
|
343
|
-
const __iconNode$
|
|
344
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
394
|
+
const __iconNode$h = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
395
|
+
const Check = createLucideIcon("check", __iconNode$h);
|
|
345
396
|
/**
|
|
346
397
|
* @license lucide-react v0.552.0 - ISC
|
|
347
398
|
*
|
|
348
399
|
* This source code is licensed under the ISC license.
|
|
349
400
|
* See the LICENSE file in the root directory of this source tree.
|
|
350
401
|
*/
|
|
351
|
-
const __iconNode$
|
|
402
|
+
const __iconNode$g = [
|
|
403
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
404
|
+
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
405
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
406
|
+
];
|
|
407
|
+
const CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode$g);
|
|
408
|
+
/**
|
|
409
|
+
* @license lucide-react v0.552.0 - ISC
|
|
410
|
+
*
|
|
411
|
+
* This source code is licensed under the ISC license.
|
|
412
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
413
|
+
*/
|
|
414
|
+
const __iconNode$f = [
|
|
352
415
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
353
416
|
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
354
417
|
];
|
|
355
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
418
|
+
const Copy = createLucideIcon("copy", __iconNode$f);
|
|
356
419
|
/**
|
|
357
420
|
* @license lucide-react v0.552.0 - ISC
|
|
358
421
|
*
|
|
359
422
|
* This source code is licensed under the ISC license.
|
|
360
423
|
* See the LICENSE file in the root directory of this source tree.
|
|
361
424
|
*/
|
|
362
|
-
const __iconNode$
|
|
425
|
+
const __iconNode$e = [
|
|
426
|
+
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
427
|
+
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
428
|
+
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
429
|
+
];
|
|
430
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$e);
|
|
431
|
+
/**
|
|
432
|
+
* @license lucide-react v0.552.0 - ISC
|
|
433
|
+
*
|
|
434
|
+
* This source code is licensed under the ISC license.
|
|
435
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
436
|
+
*/
|
|
437
|
+
const __iconNode$d = [
|
|
363
438
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
|
|
364
439
|
["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }],
|
|
365
440
|
["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }],
|
|
366
441
|
["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }],
|
|
367
442
|
["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }]
|
|
368
443
|
];
|
|
369
|
-
const Focus = createLucideIcon("focus", __iconNode$
|
|
444
|
+
const Focus = createLucideIcon("focus", __iconNode$d);
|
|
370
445
|
/**
|
|
371
446
|
* @license lucide-react v0.552.0 - ISC
|
|
372
447
|
*
|
|
373
448
|
* This source code is licensed under the ISC license.
|
|
374
449
|
* See the LICENSE file in the root directory of this source tree.
|
|
375
450
|
*/
|
|
376
|
-
const __iconNode$
|
|
451
|
+
const __iconNode$c = [
|
|
377
452
|
[
|
|
378
453
|
"path",
|
|
379
454
|
{
|
|
@@ -385,14 +460,14 @@ const __iconNode$a = [
|
|
|
385
460
|
["path", { d: "M18 19c-2.8 0-5-2.2-5-5v8", key: "pkpw2h" }],
|
|
386
461
|
["circle", { cx: "20", cy: "19", r: "2", key: "1obnsp" }]
|
|
387
462
|
];
|
|
388
|
-
const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$
|
|
463
|
+
const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$c);
|
|
389
464
|
/**
|
|
390
465
|
* @license lucide-react v0.552.0 - ISC
|
|
391
466
|
*
|
|
392
467
|
* This source code is licensed under the ISC license.
|
|
393
468
|
* See the LICENSE file in the root directory of this source tree.
|
|
394
469
|
*/
|
|
395
|
-
const __iconNode$
|
|
470
|
+
const __iconNode$b = [
|
|
396
471
|
[
|
|
397
472
|
"path",
|
|
398
473
|
{
|
|
@@ -401,14 +476,14 @@ const __iconNode$9 = [
|
|
|
401
476
|
}
|
|
402
477
|
]
|
|
403
478
|
];
|
|
404
|
-
const FolderOpen = createLucideIcon("folder-open", __iconNode$
|
|
479
|
+
const FolderOpen = createLucideIcon("folder-open", __iconNode$b);
|
|
405
480
|
/**
|
|
406
481
|
* @license lucide-react v0.552.0 - ISC
|
|
407
482
|
*
|
|
408
483
|
* This source code is licensed under the ISC license.
|
|
409
484
|
* See the LICENSE file in the root directory of this source tree.
|
|
410
485
|
*/
|
|
411
|
-
const __iconNode$
|
|
486
|
+
const __iconNode$a = [
|
|
412
487
|
[
|
|
413
488
|
"path",
|
|
414
489
|
{
|
|
@@ -417,14 +492,14 @@ const __iconNode$8 = [
|
|
|
417
492
|
}
|
|
418
493
|
]
|
|
419
494
|
];
|
|
420
|
-
const Folder = createLucideIcon("folder", __iconNode$
|
|
495
|
+
const Folder = createLucideIcon("folder", __iconNode$a);
|
|
421
496
|
/**
|
|
422
497
|
* @license lucide-react v0.552.0 - ISC
|
|
423
498
|
*
|
|
424
499
|
* This source code is licensed under the ISC license.
|
|
425
500
|
* See the LICENSE file in the root directory of this source tree.
|
|
426
501
|
*/
|
|
427
|
-
const __iconNode$
|
|
502
|
+
const __iconNode$9 = [
|
|
428
503
|
["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
|
|
429
504
|
[
|
|
430
505
|
"path",
|
|
@@ -434,33 +509,52 @@ const __iconNode$7 = [
|
|
|
434
509
|
}
|
|
435
510
|
]
|
|
436
511
|
];
|
|
437
|
-
const House = createLucideIcon("house", __iconNode$
|
|
512
|
+
const House = createLucideIcon("house", __iconNode$9);
|
|
438
513
|
/**
|
|
439
514
|
* @license lucide-react v0.552.0 - ISC
|
|
440
515
|
*
|
|
441
516
|
* This source code is licensed under the ISC license.
|
|
442
517
|
* See the LICENSE file in the root directory of this source tree.
|
|
443
518
|
*/
|
|
444
|
-
const __iconNode$
|
|
445
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
519
|
+
const __iconNode$8 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
520
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$8);
|
|
446
521
|
/**
|
|
447
522
|
* @license lucide-react v0.552.0 - ISC
|
|
448
523
|
*
|
|
449
524
|
* This source code is licensed under the ISC license.
|
|
450
525
|
* See the LICENSE file in the root directory of this source tree.
|
|
451
526
|
*/
|
|
452
|
-
const __iconNode$
|
|
527
|
+
const __iconNode$7 = [
|
|
453
528
|
["path", { d: "M8 6L12 2L16 6", key: "1yvkyx" }],
|
|
454
529
|
["path", { d: "M12 2V22", key: "r89rzk" }]
|
|
455
530
|
];
|
|
456
|
-
const MoveUp = createLucideIcon("move-up", __iconNode$
|
|
531
|
+
const MoveUp = createLucideIcon("move-up", __iconNode$7);
|
|
457
532
|
/**
|
|
458
533
|
* @license lucide-react v0.552.0 - ISC
|
|
459
534
|
*
|
|
460
535
|
* This source code is licensed under the ISC license.
|
|
461
536
|
* See the LICENSE file in the root directory of this source tree.
|
|
462
537
|
*/
|
|
463
|
-
const __iconNode$
|
|
538
|
+
const __iconNode$6 = [
|
|
539
|
+
[
|
|
540
|
+
"path",
|
|
541
|
+
{
|
|
542
|
+
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
|
|
543
|
+
key: "1a0edw"
|
|
544
|
+
}
|
|
545
|
+
],
|
|
546
|
+
["path", { d: "M12 22V12", key: "d0xqtd" }],
|
|
547
|
+
["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
|
|
548
|
+
["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
|
|
549
|
+
];
|
|
550
|
+
const Package = createLucideIcon("package", __iconNode$6);
|
|
551
|
+
/**
|
|
552
|
+
* @license lucide-react v0.552.0 - ISC
|
|
553
|
+
*
|
|
554
|
+
* This source code is licensed under the ISC license.
|
|
555
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
556
|
+
*/
|
|
557
|
+
const __iconNode$5 = [
|
|
464
558
|
[
|
|
465
559
|
"path",
|
|
466
560
|
{
|
|
@@ -470,18 +564,32 @@ const __iconNode$4 = [
|
|
|
470
564
|
],
|
|
471
565
|
["path", { d: "m15 5 4 4", key: "1mk7zo" }]
|
|
472
566
|
];
|
|
473
|
-
const Pencil = createLucideIcon("pencil", __iconNode$
|
|
567
|
+
const Pencil = createLucideIcon("pencil", __iconNode$5);
|
|
474
568
|
/**
|
|
475
569
|
* @license lucide-react v0.552.0 - ISC
|
|
476
570
|
*
|
|
477
571
|
* This source code is licensed under the ISC license.
|
|
478
572
|
* See the LICENSE file in the root directory of this source tree.
|
|
479
573
|
*/
|
|
480
|
-
const __iconNode$
|
|
574
|
+
const __iconNode$4 = [
|
|
481
575
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
482
576
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
483
577
|
];
|
|
484
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
578
|
+
const Plus = createLucideIcon("plus", __iconNode$4);
|
|
579
|
+
/**
|
|
580
|
+
* @license lucide-react v0.552.0 - ISC
|
|
581
|
+
*
|
|
582
|
+
* This source code is licensed under the ISC license.
|
|
583
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
584
|
+
*/
|
|
585
|
+
const __iconNode$3 = [
|
|
586
|
+
["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
|
|
587
|
+
["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
|
|
588
|
+
["path", { d: "M7 21h10", key: "1b0cd5" }],
|
|
589
|
+
["path", { d: "M12 3v18", key: "108xh3" }],
|
|
590
|
+
["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
|
|
591
|
+
];
|
|
592
|
+
const Scale = createLucideIcon("scale", __iconNode$3);
|
|
485
593
|
/**
|
|
486
594
|
* @license lucide-react v0.552.0 - ISC
|
|
487
595
|
*
|
|
@@ -604,13 +712,20 @@ const LocalProjectCard = ({
|
|
|
604
712
|
onOpen,
|
|
605
713
|
onRemove,
|
|
606
714
|
onAddToWorkspace,
|
|
715
|
+
onRemoveFromWorkspace,
|
|
716
|
+
onMoveToWorkspace,
|
|
607
717
|
isLoading = false,
|
|
608
718
|
windowState = "closed",
|
|
609
|
-
compact: _compact = false
|
|
719
|
+
compact: _compact = false,
|
|
720
|
+
isEditMode = false,
|
|
721
|
+
isInWorkspaceDirectory,
|
|
722
|
+
workspacePath
|
|
610
723
|
}) => {
|
|
611
724
|
var _a, _b, _c, _d;
|
|
612
725
|
const { theme: theme2 } = useTheme();
|
|
613
726
|
const [copiedPath, setCopiedPath] = useState(false);
|
|
727
|
+
const [isMoving, setIsMoving] = useState(false);
|
|
728
|
+
const [isRemoving, setIsRemoving] = useState(false);
|
|
614
729
|
const highlightColor = theme2.colors.primary;
|
|
615
730
|
const avatarUrl = ((_a = entry.github) == null ? void 0 : _a.owner) ? `https://github.com/${entry.github.owner}.png` : null;
|
|
616
731
|
const handleCardClick = () => {
|
|
@@ -628,6 +743,33 @@ const LocalProjectCard = ({
|
|
|
628
743
|
e.stopPropagation();
|
|
629
744
|
onAddToWorkspace == null ? void 0 : onAddToWorkspace(entry);
|
|
630
745
|
};
|
|
746
|
+
const handleRemoveFromWorkspaceClick = async (e) => {
|
|
747
|
+
e.stopPropagation();
|
|
748
|
+
try {
|
|
749
|
+
setIsRemoving(true);
|
|
750
|
+
onRemoveFromWorkspace == null ? void 0 : onRemoveFromWorkspace(entry);
|
|
751
|
+
} finally {
|
|
752
|
+
setIsRemoving(false);
|
|
753
|
+
}
|
|
754
|
+
};
|
|
755
|
+
const handleMoveToWorkspaceClick = async (e) => {
|
|
756
|
+
e.stopPropagation();
|
|
757
|
+
try {
|
|
758
|
+
setIsMoving(true);
|
|
759
|
+
onMoveToWorkspace == null ? void 0 : onMoveToWorkspace(entry);
|
|
760
|
+
} finally {
|
|
761
|
+
setIsMoving(false);
|
|
762
|
+
}
|
|
763
|
+
};
|
|
764
|
+
const displayPath = useMemo(() => {
|
|
765
|
+
if (actionMode === "workspace" && isInWorkspaceDirectory && workspacePath) {
|
|
766
|
+
if (entry.path.startsWith(workspacePath)) {
|
|
767
|
+
const relativePath = entry.path.slice(workspacePath.length);
|
|
768
|
+
return relativePath.startsWith("/") ? relativePath.slice(1) : relativePath;
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
return entry.path;
|
|
772
|
+
}, [actionMode, isInWorkspaceDirectory, workspacePath, entry.path]);
|
|
631
773
|
const handleCopyPath = async (e) => {
|
|
632
774
|
e.stopPropagation();
|
|
633
775
|
try {
|
|
@@ -672,6 +814,100 @@ const LocalProjectCard = ({
|
|
|
672
814
|
}
|
|
673
815
|
);
|
|
674
816
|
}
|
|
817
|
+
if (actionMode === "workspace") {
|
|
818
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
819
|
+
isEditMode && isInWorkspaceDirectory === false && onMoveToWorkspace && /* @__PURE__ */ jsxs(
|
|
820
|
+
"button",
|
|
821
|
+
{
|
|
822
|
+
type: "button",
|
|
823
|
+
onClick: handleMoveToWorkspaceClick,
|
|
824
|
+
disabled: isMoving,
|
|
825
|
+
title: "Move to workspace directory",
|
|
826
|
+
style: {
|
|
827
|
+
flex: buttonFlex,
|
|
828
|
+
display: "inline-flex",
|
|
829
|
+
alignItems: "center",
|
|
830
|
+
justifyContent: "center",
|
|
831
|
+
padding: "6px 10px",
|
|
832
|
+
gap: "4px",
|
|
833
|
+
borderRadius: "4px",
|
|
834
|
+
border: `1px solid ${theme2.colors.primary || "#3b82f6"}`,
|
|
835
|
+
backgroundColor: `${theme2.colors.primary || "#3b82f6"}15`,
|
|
836
|
+
color: theme2.colors.primary || "#3b82f6",
|
|
837
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
838
|
+
fontWeight: theme2.fontWeights.medium,
|
|
839
|
+
cursor: isMoving ? "wait" : "pointer",
|
|
840
|
+
opacity: isMoving ? 0.6 : 1,
|
|
841
|
+
transition: "all 0.15s ease"
|
|
842
|
+
},
|
|
843
|
+
children: [
|
|
844
|
+
isMoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 12, className: "animate-spin" }) : /* @__PURE__ */ jsx(MoveUp, { size: 12 }),
|
|
845
|
+
isMoving ? "Moving..." : "Move"
|
|
846
|
+
]
|
|
847
|
+
}
|
|
848
|
+
),
|
|
849
|
+
/* @__PURE__ */ jsxs(
|
|
850
|
+
"button",
|
|
851
|
+
{
|
|
852
|
+
type: "button",
|
|
853
|
+
onClick: handleOpenClick,
|
|
854
|
+
title: "Open repository",
|
|
855
|
+
style: {
|
|
856
|
+
flex: buttonFlex,
|
|
857
|
+
display: "inline-flex",
|
|
858
|
+
alignItems: "center",
|
|
859
|
+
justifyContent: "center",
|
|
860
|
+
padding: "6px 10px",
|
|
861
|
+
gap: "4px",
|
|
862
|
+
borderRadius: "4px",
|
|
863
|
+
border: `1px solid ${theme2.colors.success || "#10b981"}`,
|
|
864
|
+
backgroundColor: `${theme2.colors.success || "#10b981"}15`,
|
|
865
|
+
color: theme2.colors.success || "#10b981",
|
|
866
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
867
|
+
fontWeight: theme2.fontWeights.medium,
|
|
868
|
+
cursor: "pointer",
|
|
869
|
+
transition: "all 0.15s ease"
|
|
870
|
+
},
|
|
871
|
+
children: [
|
|
872
|
+
/* @__PURE__ */ jsx(FolderOpen, { size: 12 }),
|
|
873
|
+
"Open"
|
|
874
|
+
]
|
|
875
|
+
}
|
|
876
|
+
),
|
|
877
|
+
isEditMode && onRemoveFromWorkspace && /* @__PURE__ */ jsxs(
|
|
878
|
+
"button",
|
|
879
|
+
{
|
|
880
|
+
type: "button",
|
|
881
|
+
onClick: handleRemoveFromWorkspaceClick,
|
|
882
|
+
disabled: isRemoving,
|
|
883
|
+
title: "Remove from workspace",
|
|
884
|
+
style: {
|
|
885
|
+
flex: buttonFlex,
|
|
886
|
+
display: "inline-flex",
|
|
887
|
+
alignItems: "center",
|
|
888
|
+
justifyContent: "center",
|
|
889
|
+
minWidth: isCompact ? void 0 : "28px",
|
|
890
|
+
height: "28px",
|
|
891
|
+
padding: isCompact ? "6px 10px" : 0,
|
|
892
|
+
gap: "4px",
|
|
893
|
+
borderRadius: "4px",
|
|
894
|
+
border: isCompact ? `1px solid ${theme2.colors.error || "#ef4444"}` : "none",
|
|
895
|
+
backgroundColor: isCompact ? `${theme2.colors.error || "#ef4444"}15` : "transparent",
|
|
896
|
+
color: isCompact ? theme2.colors.error || "#ef4444" : theme2.colors.textSecondary,
|
|
897
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
898
|
+
fontWeight: theme2.fontWeights.medium,
|
|
899
|
+
cursor: isRemoving ? "wait" : "pointer",
|
|
900
|
+
opacity: isRemoving ? 0.6 : 1,
|
|
901
|
+
transition: "all 0.15s ease"
|
|
902
|
+
},
|
|
903
|
+
children: [
|
|
904
|
+
isRemoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(X, { size: 14 }),
|
|
905
|
+
isCompact && (isRemoving ? "Removing..." : "Remove")
|
|
906
|
+
]
|
|
907
|
+
}
|
|
908
|
+
)
|
|
909
|
+
] });
|
|
910
|
+
}
|
|
675
911
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
676
912
|
/* @__PURE__ */ jsxs(
|
|
677
913
|
"button",
|
|
@@ -809,7 +1045,7 @@ const LocalProjectCard = ({
|
|
|
809
1045
|
title: copiedPath ? "Copied!" : `Click to copy: ${entry.path}`,
|
|
810
1046
|
children: [
|
|
811
1047
|
copiedPath ? /* @__PURE__ */ jsx(Check, { size: 12 }) : /* @__PURE__ */ jsx(Copy, { size: 12 }),
|
|
812
|
-
|
|
1048
|
+
displayPath
|
|
813
1049
|
]
|
|
814
1050
|
}
|
|
815
1051
|
),
|
|
@@ -844,10 +1080,10 @@ const LocalProjectCard = ({
|
|
|
844
1080
|
}
|
|
845
1081
|
);
|
|
846
1082
|
};
|
|
847
|
-
const PANEL_ID$
|
|
1083
|
+
const PANEL_ID$4 = "industry-theme.local-projects";
|
|
848
1084
|
const createPanelEvent$1 = (type, payload) => ({
|
|
849
1085
|
type,
|
|
850
|
-
source: PANEL_ID$
|
|
1086
|
+
source: PANEL_ID$4,
|
|
851
1087
|
timestamp: Date.now(),
|
|
852
1088
|
payload
|
|
853
1089
|
});
|
|
@@ -883,7 +1119,7 @@ const LocalProjectsPanelContent = ({
|
|
|
883
1119
|
try {
|
|
884
1120
|
await panelActions.openRepository(entry);
|
|
885
1121
|
setWindowStates((prev) => new Map(prev).set(entry.path, "ready"));
|
|
886
|
-
events.emit(createPanelEvent$1(`${PANEL_ID$
|
|
1122
|
+
events.emit(createPanelEvent$1(`${PANEL_ID$4}:repository-opened`, { entry }));
|
|
887
1123
|
} catch (error) {
|
|
888
1124
|
console.error("Error opening repository:", error);
|
|
889
1125
|
setWindowStates((prev) => new Map(prev).set(entry.path, "closed"));
|
|
@@ -894,14 +1130,14 @@ const LocalProjectsPanelContent = ({
|
|
|
894
1130
|
useEffect(() => {
|
|
895
1131
|
const unsubscribers = [
|
|
896
1132
|
// Filter event from tools
|
|
897
|
-
events.on(`${PANEL_ID$
|
|
1133
|
+
events.on(`${PANEL_ID$4}:filter`, (event) => {
|
|
898
1134
|
var _a2;
|
|
899
1135
|
if (((_a2 = event.payload) == null ? void 0 : _a2.filter) !== void 0) {
|
|
900
1136
|
setFilter(event.payload.filter);
|
|
901
1137
|
}
|
|
902
1138
|
}),
|
|
903
1139
|
// Select repository event from tools
|
|
904
|
-
events.on(`${PANEL_ID$
|
|
1140
|
+
events.on(`${PANEL_ID$4}:select-repository`, (event) => {
|
|
905
1141
|
var _a2;
|
|
906
1142
|
const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
|
|
907
1143
|
if (identifier) {
|
|
@@ -910,12 +1146,12 @@ const LocalProjectsPanelContent = ({
|
|
|
910
1146
|
);
|
|
911
1147
|
if (entry) {
|
|
912
1148
|
setSelectedEntry(entry);
|
|
913
|
-
events.emit(createPanelEvent$1(`${PANEL_ID$
|
|
1149
|
+
events.emit(createPanelEvent$1(`${PANEL_ID$4}:repository-selected`, { entry }));
|
|
914
1150
|
}
|
|
915
1151
|
}
|
|
916
1152
|
}),
|
|
917
1153
|
// Open repository event from tools
|
|
918
|
-
events.on(`${PANEL_ID$
|
|
1154
|
+
events.on(`${PANEL_ID$4}:open-repository`, (event) => {
|
|
919
1155
|
var _a2;
|
|
920
1156
|
const identifier = (_a2 = event.payload) == null ? void 0 : _a2.identifier;
|
|
921
1157
|
if (identifier) {
|
|
@@ -963,7 +1199,7 @@ const LocalProjectsPanelContent = ({
|
|
|
963
1199
|
};
|
|
964
1200
|
const handleSelectRepository = (entry) => {
|
|
965
1201
|
setSelectedEntry(entry);
|
|
966
|
-
events.emit(createPanelEvent$1(`${PANEL_ID$
|
|
1202
|
+
events.emit(createPanelEvent$1(`${PANEL_ID$4}:repository-selected`, { entry }));
|
|
967
1203
|
};
|
|
968
1204
|
const normalizedFilter = filter.trim().toLowerCase();
|
|
969
1205
|
const filteredAndSortedRepositories = useMemo(() => {
|
|
@@ -1224,365 +1460,47 @@ const LocalProjectsPanelPreview = () => {
|
|
|
1224
1460
|
}
|
|
1225
1461
|
);
|
|
1226
1462
|
};
|
|
1227
|
-
const
|
|
1228
|
-
|
|
1229
|
-
|
|
1463
|
+
const PANEL_ID$3 = "industry-theme.workspace-repositories";
|
|
1464
|
+
const createPanelEvent = (type, payload) => ({
|
|
1465
|
+
type,
|
|
1466
|
+
source: PANEL_ID$3,
|
|
1467
|
+
timestamp: Date.now(),
|
|
1468
|
+
payload
|
|
1469
|
+
});
|
|
1470
|
+
const WorkspaceRepositoriesPanelContent = ({
|
|
1471
|
+
context,
|
|
1230
1472
|
actions,
|
|
1231
|
-
|
|
1232
|
-
isInWorkspaceDirectory,
|
|
1233
|
-
onSelect,
|
|
1234
|
-
onOpen,
|
|
1235
|
-
onRemoveFromWorkspace,
|
|
1236
|
-
onMoveToWorkspace
|
|
1473
|
+
events
|
|
1237
1474
|
}) => {
|
|
1238
|
-
var _a, _b;
|
|
1239
1475
|
const { theme: theme2 } = useTheme();
|
|
1240
|
-
const [
|
|
1241
|
-
const [
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
const
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
)) {
|
|
1258
|
-
return;
|
|
1259
|
-
}
|
|
1260
|
-
try {
|
|
1261
|
-
setIsRemoving(true);
|
|
1262
|
-
onRemoveFromWorkspace == null ? void 0 : onRemoveFromWorkspace(repository);
|
|
1263
|
-
} finally {
|
|
1264
|
-
setIsRemoving(false);
|
|
1265
|
-
}
|
|
1266
|
-
};
|
|
1267
|
-
const handleCopyPath = async (e) => {
|
|
1268
|
-
e.stopPropagation();
|
|
1269
|
-
try {
|
|
1270
|
-
if (actions.copyToClipboard) {
|
|
1271
|
-
await actions.copyToClipboard(repository.path);
|
|
1272
|
-
} else {
|
|
1273
|
-
await navigator.clipboard.writeText(repository.path);
|
|
1274
|
-
}
|
|
1275
|
-
setCopiedPath(true);
|
|
1276
|
-
setTimeout(() => setCopiedPath(false), 2e3);
|
|
1277
|
-
} catch (err) {
|
|
1278
|
-
console.error("Failed to copy path:", err);
|
|
1279
|
-
}
|
|
1280
|
-
};
|
|
1281
|
-
const handleMoveToWorkspace = async (e) => {
|
|
1282
|
-
e.stopPropagation();
|
|
1283
|
-
if (!(workspace == null ? void 0 : workspace.id) || !workspace.suggestedClonePath) return;
|
|
1284
|
-
if (!confirm(
|
|
1285
|
-
`Move ${repository.name} to ${workspace.suggestedClonePath}?
|
|
1286
|
-
|
|
1287
|
-
This will move all files to the workspace directory.`
|
|
1288
|
-
)) {
|
|
1289
|
-
return;
|
|
1290
|
-
}
|
|
1291
|
-
try {
|
|
1292
|
-
setIsMoving(true);
|
|
1293
|
-
onMoveToWorkspace == null ? void 0 : onMoveToWorkspace(repository);
|
|
1294
|
-
} finally {
|
|
1295
|
-
setIsMoving(false);
|
|
1296
|
-
}
|
|
1297
|
-
};
|
|
1298
|
-
const avatarUrl = ((_a = repository.github) == null ? void 0 : _a.owner) ? `https://github.com/${repository.github.owner}.png` : null;
|
|
1299
|
-
const displayPath = React2.useMemo(() => {
|
|
1300
|
-
if (isInWorkspaceDirectory && (workspace == null ? void 0 : workspace.suggestedClonePath)) {
|
|
1301
|
-
const workspacePath = workspace.suggestedClonePath;
|
|
1302
|
-
if (repository.path.startsWith(workspacePath)) {
|
|
1303
|
-
const relativePath = repository.path.slice(workspacePath.length);
|
|
1304
|
-
return relativePath.startsWith("/") ? relativePath.slice(1) : relativePath;
|
|
1476
|
+
const [isEditMode, setIsEditMode] = React2.useState(false);
|
|
1477
|
+
const [repositoryLocations, setRepositoryLocations] = React2.useState(
|
|
1478
|
+
/* @__PURE__ */ new Map()
|
|
1479
|
+
);
|
|
1480
|
+
const panelActions = actions;
|
|
1481
|
+
const workspaceSlice = context.getSlice("workspace");
|
|
1482
|
+
const repositoriesSlice = context.getSlice("workspaceRepositories");
|
|
1483
|
+
const workspace = (workspaceSlice == null ? void 0 : workspaceSlice.data) ?? null;
|
|
1484
|
+
const isLoading = (workspaceSlice == null ? void 0 : workspaceSlice.loading) || (repositoriesSlice == null ? void 0 : repositoriesSlice.loading) || false;
|
|
1485
|
+
const sortedRepositories = useMemo(() => {
|
|
1486
|
+
const repos = (repositoriesSlice == null ? void 0 : repositoriesSlice.data) ?? [];
|
|
1487
|
+
return [...repos].sort((a, b) => a.name.localeCompare(b.name));
|
|
1488
|
+
}, [repositoriesSlice == null ? void 0 : repositoriesSlice.data]);
|
|
1489
|
+
useEffect(() => {
|
|
1490
|
+
const checkLocations = async () => {
|
|
1491
|
+
if (!(workspace == null ? void 0 : workspace.id) || !panelActions.isRepositoryInWorkspaceDirectory || !sortedRepositories.length) {
|
|
1492
|
+
return;
|
|
1305
1493
|
}
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
padding: "8px 12px",
|
|
1317
|
-
borderRadius: "4px",
|
|
1318
|
-
backgroundColor: "transparent",
|
|
1319
|
-
border: "1px solid transparent",
|
|
1320
|
-
cursor: "pointer",
|
|
1321
|
-
transition: "background-color 0.15s"
|
|
1322
|
-
},
|
|
1323
|
-
onClick: handleCardClick,
|
|
1324
|
-
onMouseEnter: (event) => {
|
|
1325
|
-
event.currentTarget.style.backgroundColor = theme2.colors.backgroundTertiary || theme2.colors.backgroundSecondary;
|
|
1326
|
-
},
|
|
1327
|
-
onMouseLeave: (event) => {
|
|
1328
|
-
event.currentTarget.style.backgroundColor = "transparent";
|
|
1329
|
-
},
|
|
1330
|
-
children: [
|
|
1331
|
-
/* @__PURE__ */ jsx(
|
|
1332
|
-
RepositoryAvatar,
|
|
1333
|
-
{
|
|
1334
|
-
customAvatarUrl: avatarUrl,
|
|
1335
|
-
size: 32,
|
|
1336
|
-
fallbackIcon: /* @__PURE__ */ jsx(
|
|
1337
|
-
"div",
|
|
1338
|
-
{
|
|
1339
|
-
style: {
|
|
1340
|
-
color: theme2.colors.textSecondary,
|
|
1341
|
-
fontSize: `${theme2.fontSizes[1]}px`,
|
|
1342
|
-
fontWeight: theme2.fontWeights.semibold,
|
|
1343
|
-
fontFamily: theme2.fonts.body
|
|
1344
|
-
},
|
|
1345
|
-
children: ((_b = repository.name[0]) == null ? void 0 : _b.toUpperCase()) || "?"
|
|
1346
|
-
}
|
|
1347
|
-
)
|
|
1348
|
-
}
|
|
1349
|
-
),
|
|
1350
|
-
/* @__PURE__ */ jsxs(
|
|
1351
|
-
"div",
|
|
1352
|
-
{
|
|
1353
|
-
style: {
|
|
1354
|
-
flex: 1,
|
|
1355
|
-
minWidth: 0,
|
|
1356
|
-
display: "flex",
|
|
1357
|
-
flexDirection: "column",
|
|
1358
|
-
gap: "4px"
|
|
1359
|
-
},
|
|
1360
|
-
children: [
|
|
1361
|
-
/* @__PURE__ */ jsx(
|
|
1362
|
-
"div",
|
|
1363
|
-
{
|
|
1364
|
-
style: {
|
|
1365
|
-
display: "flex",
|
|
1366
|
-
alignItems: "center",
|
|
1367
|
-
gap: "6px",
|
|
1368
|
-
flexWrap: "wrap"
|
|
1369
|
-
},
|
|
1370
|
-
children: /* @__PURE__ */ jsx(
|
|
1371
|
-
"span",
|
|
1372
|
-
{
|
|
1373
|
-
style: {
|
|
1374
|
-
fontSize: `${theme2.fontSizes[2]}px`,
|
|
1375
|
-
fontWeight: theme2.fontWeights.medium,
|
|
1376
|
-
fontFamily: theme2.fonts.body,
|
|
1377
|
-
color: theme2.colors.text
|
|
1378
|
-
},
|
|
1379
|
-
children: repository.name
|
|
1380
|
-
}
|
|
1381
|
-
)
|
|
1382
|
-
}
|
|
1383
|
-
),
|
|
1384
|
-
/* @__PURE__ */ jsxs(
|
|
1385
|
-
"div",
|
|
1386
|
-
{
|
|
1387
|
-
onClick: handleCopyPath,
|
|
1388
|
-
style: {
|
|
1389
|
-
fontSize: `${theme2.fontSizes[0]}px`,
|
|
1390
|
-
fontFamily: theme2.fonts.monospace,
|
|
1391
|
-
color: copiedPath ? theme2.colors.success || "#10b981" : theme2.colors.textTertiary || theme2.colors.textSecondary,
|
|
1392
|
-
overflow: "hidden",
|
|
1393
|
-
textOverflow: "ellipsis",
|
|
1394
|
-
whiteSpace: "nowrap",
|
|
1395
|
-
cursor: "pointer",
|
|
1396
|
-
display: "flex",
|
|
1397
|
-
alignItems: "center",
|
|
1398
|
-
gap: "4px",
|
|
1399
|
-
transition: "color 0.15s ease"
|
|
1400
|
-
},
|
|
1401
|
-
title: copiedPath ? "Copied!" : `Click to copy: ${repository.path}`,
|
|
1402
|
-
onMouseEnter: (event) => {
|
|
1403
|
-
if (!copiedPath) {
|
|
1404
|
-
event.currentTarget.style.color = theme2.colors.textSecondary;
|
|
1405
|
-
}
|
|
1406
|
-
},
|
|
1407
|
-
onMouseLeave: (event) => {
|
|
1408
|
-
if (!copiedPath) {
|
|
1409
|
-
event.currentTarget.style.color = theme2.colors.textTertiary || theme2.colors.textSecondary;
|
|
1410
|
-
}
|
|
1411
|
-
},
|
|
1412
|
-
children: [
|
|
1413
|
-
copiedPath ? /* @__PURE__ */ jsx(Check, { size: 12 }) : /* @__PURE__ */ jsx(Copy, { size: 12 }),
|
|
1414
|
-
displayPath
|
|
1415
|
-
]
|
|
1416
|
-
}
|
|
1417
|
-
)
|
|
1418
|
-
]
|
|
1419
|
-
}
|
|
1420
|
-
),
|
|
1421
|
-
/* @__PURE__ */ jsxs(
|
|
1422
|
-
"div",
|
|
1423
|
-
{
|
|
1424
|
-
style: {
|
|
1425
|
-
display: "flex",
|
|
1426
|
-
gap: "4px",
|
|
1427
|
-
flexShrink: 0,
|
|
1428
|
-
alignItems: "center"
|
|
1429
|
-
},
|
|
1430
|
-
children: [
|
|
1431
|
-
isEditMode && workspace && workspace.suggestedClonePath && isInWorkspaceDirectory === false && /* @__PURE__ */ jsxs(
|
|
1432
|
-
"button",
|
|
1433
|
-
{
|
|
1434
|
-
type: "button",
|
|
1435
|
-
onClick: handleMoveToWorkspace,
|
|
1436
|
-
disabled: isMoving,
|
|
1437
|
-
title: `Move to ${workspace.suggestedClonePath}`,
|
|
1438
|
-
style: {
|
|
1439
|
-
display: "inline-flex",
|
|
1440
|
-
alignItems: "center",
|
|
1441
|
-
justifyContent: "center",
|
|
1442
|
-
padding: "6px 10px",
|
|
1443
|
-
gap: "4px",
|
|
1444
|
-
borderRadius: "4px",
|
|
1445
|
-
border: `1px solid ${theme2.colors.primary || "#3b82f6"}`,
|
|
1446
|
-
backgroundColor: `${theme2.colors.primary || "#3b82f6"}15`,
|
|
1447
|
-
color: theme2.colors.primary || "#3b82f6",
|
|
1448
|
-
fontSize: `${theme2.fontSizes[0]}px`,
|
|
1449
|
-
fontWeight: theme2.fontWeights.medium,
|
|
1450
|
-
fontFamily: theme2.fonts.body,
|
|
1451
|
-
cursor: isMoving ? "wait" : "pointer",
|
|
1452
|
-
opacity: isMoving ? 0.6 : 1,
|
|
1453
|
-
transition: "all 0.15s ease"
|
|
1454
|
-
},
|
|
1455
|
-
onMouseEnter: (event) => {
|
|
1456
|
-
if (!isMoving) {
|
|
1457
|
-
event.currentTarget.style.backgroundColor = `${theme2.colors.primary || "#3b82f6"}25`;
|
|
1458
|
-
}
|
|
1459
|
-
},
|
|
1460
|
-
onMouseLeave: (event) => {
|
|
1461
|
-
event.currentTarget.style.backgroundColor = `${theme2.colors.primary || "#3b82f6"}15`;
|
|
1462
|
-
},
|
|
1463
|
-
children: [
|
|
1464
|
-
isMoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 12, className: "animate-spin" }) : /* @__PURE__ */ jsx(MoveUp, { size: 12 }),
|
|
1465
|
-
isMoving ? "Moving..." : "Move"
|
|
1466
|
-
]
|
|
1467
|
-
}
|
|
1468
|
-
),
|
|
1469
|
-
/* @__PURE__ */ jsxs(
|
|
1470
|
-
"button",
|
|
1471
|
-
{
|
|
1472
|
-
type: "button",
|
|
1473
|
-
onClick: handleOpenClick,
|
|
1474
|
-
title: "Open repository",
|
|
1475
|
-
style: {
|
|
1476
|
-
display: "inline-flex",
|
|
1477
|
-
alignItems: "center",
|
|
1478
|
-
justifyContent: "center",
|
|
1479
|
-
padding: "6px 10px",
|
|
1480
|
-
gap: "4px",
|
|
1481
|
-
borderRadius: "4px",
|
|
1482
|
-
border: `1px solid ${theme2.colors.success || "#10b981"}`,
|
|
1483
|
-
backgroundColor: `${theme2.colors.success || "#10b981"}15`,
|
|
1484
|
-
color: theme2.colors.success || "#10b981",
|
|
1485
|
-
fontSize: `${theme2.fontSizes[0]}px`,
|
|
1486
|
-
fontWeight: theme2.fontWeights.medium,
|
|
1487
|
-
fontFamily: theme2.fonts.body,
|
|
1488
|
-
cursor: "pointer",
|
|
1489
|
-
transition: "all 0.15s ease"
|
|
1490
|
-
},
|
|
1491
|
-
onMouseEnter: (event) => {
|
|
1492
|
-
event.currentTarget.style.backgroundColor = `${theme2.colors.success || "#10b981"}25`;
|
|
1493
|
-
},
|
|
1494
|
-
onMouseLeave: (event) => {
|
|
1495
|
-
event.currentTarget.style.backgroundColor = `${theme2.colors.success || "#10b981"}15`;
|
|
1496
|
-
},
|
|
1497
|
-
children: [
|
|
1498
|
-
/* @__PURE__ */ jsx(FolderOpen, { size: 12 }),
|
|
1499
|
-
"Open"
|
|
1500
|
-
]
|
|
1501
|
-
}
|
|
1502
|
-
),
|
|
1503
|
-
isEditMode && workspace && /* @__PURE__ */ jsx(
|
|
1504
|
-
"button",
|
|
1505
|
-
{
|
|
1506
|
-
type: "button",
|
|
1507
|
-
onClick: handleRemoveFromWorkspace,
|
|
1508
|
-
disabled: isRemoving,
|
|
1509
|
-
title: `Remove from workspace "${workspace.name}"`,
|
|
1510
|
-
style: {
|
|
1511
|
-
display: "inline-flex",
|
|
1512
|
-
alignItems: "center",
|
|
1513
|
-
justifyContent: "center",
|
|
1514
|
-
width: "28px",
|
|
1515
|
-
height: "28px",
|
|
1516
|
-
padding: 0,
|
|
1517
|
-
borderRadius: "4px",
|
|
1518
|
-
border: "none",
|
|
1519
|
-
backgroundColor: "transparent",
|
|
1520
|
-
color: theme2.colors.textSecondary,
|
|
1521
|
-
cursor: isRemoving ? "wait" : "pointer",
|
|
1522
|
-
opacity: isRemoving ? 0.6 : 1,
|
|
1523
|
-
transition: "all 0.15s ease"
|
|
1524
|
-
},
|
|
1525
|
-
onMouseEnter: (event) => {
|
|
1526
|
-
if (!isRemoving) {
|
|
1527
|
-
event.currentTarget.style.backgroundColor = theme2.colors.error || "#ef4444";
|
|
1528
|
-
event.currentTarget.style.color = "#fff";
|
|
1529
|
-
}
|
|
1530
|
-
},
|
|
1531
|
-
onMouseLeave: (event) => {
|
|
1532
|
-
event.currentTarget.style.backgroundColor = "transparent";
|
|
1533
|
-
event.currentTarget.style.color = theme2.colors.textSecondary;
|
|
1534
|
-
},
|
|
1535
|
-
children: isRemoving ? /* @__PURE__ */ jsx(LoaderCircle, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx(X, { size: 14 })
|
|
1536
|
-
}
|
|
1537
|
-
)
|
|
1538
|
-
]
|
|
1539
|
-
}
|
|
1540
|
-
)
|
|
1541
|
-
]
|
|
1542
|
-
}
|
|
1543
|
-
);
|
|
1544
|
-
};
|
|
1545
|
-
const PANEL_ID$2 = "industry-theme.workspace-repositories";
|
|
1546
|
-
const createPanelEvent = (type, payload) => ({
|
|
1547
|
-
type,
|
|
1548
|
-
source: PANEL_ID$2,
|
|
1549
|
-
timestamp: Date.now(),
|
|
1550
|
-
payload
|
|
1551
|
-
});
|
|
1552
|
-
const WorkspaceRepositoriesPanelContent = ({
|
|
1553
|
-
context,
|
|
1554
|
-
actions,
|
|
1555
|
-
events
|
|
1556
|
-
}) => {
|
|
1557
|
-
const { theme: theme2 } = useTheme();
|
|
1558
|
-
const [isEditMode, setIsEditMode] = React2.useState(false);
|
|
1559
|
-
const [repositoryLocations, setRepositoryLocations] = React2.useState(
|
|
1560
|
-
/* @__PURE__ */ new Map()
|
|
1561
|
-
);
|
|
1562
|
-
const panelActions = actions;
|
|
1563
|
-
const workspaceSlice = context.getSlice("workspace");
|
|
1564
|
-
const repositoriesSlice = context.getSlice("workspaceRepositories");
|
|
1565
|
-
const workspace = (workspaceSlice == null ? void 0 : workspaceSlice.data) ?? null;
|
|
1566
|
-
const isLoading = (workspaceSlice == null ? void 0 : workspaceSlice.loading) || (repositoriesSlice == null ? void 0 : repositoriesSlice.loading) || false;
|
|
1567
|
-
const sortedRepositories = useMemo(() => {
|
|
1568
|
-
const repos = (repositoriesSlice == null ? void 0 : repositoriesSlice.data) ?? [];
|
|
1569
|
-
return [...repos].sort((a, b) => a.name.localeCompare(b.name));
|
|
1570
|
-
}, [repositoriesSlice == null ? void 0 : repositoriesSlice.data]);
|
|
1571
|
-
useEffect(() => {
|
|
1572
|
-
const checkLocations = async () => {
|
|
1573
|
-
if (!(workspace == null ? void 0 : workspace.id) || !panelActions.isRepositoryInWorkspaceDirectory || !sortedRepositories.length) {
|
|
1574
|
-
return;
|
|
1575
|
-
}
|
|
1576
|
-
const locationMap = /* @__PURE__ */ new Map();
|
|
1577
|
-
await Promise.all(
|
|
1578
|
-
sortedRepositories.map(async (repo) => {
|
|
1579
|
-
try {
|
|
1580
|
-
const isInWorkspace = await panelActions.isRepositoryInWorkspaceDirectory(repo, workspace.id);
|
|
1581
|
-
if (isInWorkspace !== null) {
|
|
1582
|
-
locationMap.set(repo.path, isInWorkspace);
|
|
1583
|
-
}
|
|
1584
|
-
} catch (error) {
|
|
1585
|
-
console.error(`Failed to check location for ${repo.name}:`, error);
|
|
1494
|
+
const locationMap = /* @__PURE__ */ new Map();
|
|
1495
|
+
await Promise.all(
|
|
1496
|
+
sortedRepositories.map(async (repo) => {
|
|
1497
|
+
try {
|
|
1498
|
+
const isInWorkspace = await panelActions.isRepositoryInWorkspaceDirectory(repo, workspace.id);
|
|
1499
|
+
if (isInWorkspace !== null) {
|
|
1500
|
+
locationMap.set(repo.path, isInWorkspace);
|
|
1501
|
+
}
|
|
1502
|
+
} catch (error) {
|
|
1503
|
+
console.error(`Failed to check location for ${repo.name}:`, error);
|
|
1586
1504
|
}
|
|
1587
1505
|
})
|
|
1588
1506
|
);
|
|
@@ -1661,7 +1579,7 @@ const WorkspaceRepositoriesPanelContent = ({
|
|
|
1661
1579
|
);
|
|
1662
1580
|
useEffect(() => {
|
|
1663
1581
|
const unsubscribers = [
|
|
1664
|
-
events.on(`${PANEL_ID$
|
|
1582
|
+
events.on(`${PANEL_ID$3}:select-repository`, (event) => {
|
|
1665
1583
|
var _a;
|
|
1666
1584
|
const path = (_a = event.payload) == null ? void 0 : _a.repositoryPath;
|
|
1667
1585
|
if (path) {
|
|
@@ -1671,7 +1589,7 @@ const WorkspaceRepositoriesPanelContent = ({
|
|
|
1671
1589
|
}
|
|
1672
1590
|
}
|
|
1673
1591
|
}),
|
|
1674
|
-
events.on(`${PANEL_ID$
|
|
1592
|
+
events.on(`${PANEL_ID$3}:open-repository`, (event) => {
|
|
1675
1593
|
var _a;
|
|
1676
1594
|
const path = (_a = event.payload) == null ? void 0 : _a.repositoryPath;
|
|
1677
1595
|
if (path) {
|
|
@@ -2004,13 +1922,13 @@ const WorkspaceRepositoriesPanelContent = ({
|
|
|
2004
1922
|
}
|
|
2005
1923
|
),
|
|
2006
1924
|
/* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: repositoriesInWorkspace.map((repository) => /* @__PURE__ */ jsx(
|
|
2007
|
-
|
|
1925
|
+
LocalProjectCard,
|
|
2008
1926
|
{
|
|
2009
|
-
repository,
|
|
2010
|
-
workspace,
|
|
2011
|
-
actions: panelActions,
|
|
1927
|
+
entry: repository,
|
|
1928
|
+
actionMode: "workspace",
|
|
2012
1929
|
isEditMode,
|
|
2013
1930
|
isInWorkspaceDirectory: true,
|
|
1931
|
+
workspacePath: workspace.suggestedClonePath,
|
|
2014
1932
|
onSelect: handleSelectRepository,
|
|
2015
1933
|
onOpen: handleOpenRepository,
|
|
2016
1934
|
onRemoveFromWorkspace: handleRemoveFromWorkspace,
|
|
@@ -2070,13 +1988,13 @@ const WorkspaceRepositoriesPanelContent = ({
|
|
|
2070
1988
|
}
|
|
2071
1989
|
),
|
|
2072
1990
|
/* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: repositoriesOutsideWorkspace.map((repository) => /* @__PURE__ */ jsx(
|
|
2073
|
-
|
|
1991
|
+
LocalProjectCard,
|
|
2074
1992
|
{
|
|
2075
|
-
repository,
|
|
2076
|
-
workspace,
|
|
2077
|
-
actions: panelActions,
|
|
1993
|
+
entry: repository,
|
|
1994
|
+
actionMode: "workspace",
|
|
2078
1995
|
isEditMode,
|
|
2079
1996
|
isInWorkspaceDirectory: false,
|
|
1997
|
+
workspacePath: workspace.suggestedClonePath,
|
|
2080
1998
|
onSelect: handleSelectRepository,
|
|
2081
1999
|
onOpen: handleOpenRepository,
|
|
2082
2000
|
onRemoveFromWorkspace: handleRemoveFromWorkspace,
|
|
@@ -2093,61 +2011,941 @@ const WorkspaceRepositoriesPanelContent = ({
|
|
|
2093
2011
|
const WorkspaceRepositoriesPanel = (props) => {
|
|
2094
2012
|
return /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(WorkspaceRepositoriesPanelContent, { ...props }) });
|
|
2095
2013
|
};
|
|
2096
|
-
const
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2014
|
+
const DependencyInfoModal = ({
|
|
2015
|
+
isOpen,
|
|
2016
|
+
onClose
|
|
2017
|
+
}) => {
|
|
2018
|
+
const { theme: theme2 } = useTheme();
|
|
2019
|
+
if (!isOpen) return null;
|
|
2020
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
2021
|
+
"div",
|
|
2022
|
+
{
|
|
2023
|
+
style: {
|
|
2024
|
+
position: "fixed",
|
|
2025
|
+
top: 0,
|
|
2026
|
+
left: 0,
|
|
2027
|
+
right: 0,
|
|
2028
|
+
bottom: 0,
|
|
2029
|
+
backgroundColor: theme2.colors.muted,
|
|
2030
|
+
zIndex: theme2.zIndices[4],
|
|
2031
|
+
display: "flex",
|
|
2032
|
+
alignItems: "center",
|
|
2033
|
+
justifyContent: "center"
|
|
2034
|
+
},
|
|
2035
|
+
onClick: onClose,
|
|
2036
|
+
children: /* @__PURE__ */ jsxs(
|
|
2037
|
+
"div",
|
|
2038
|
+
{
|
|
2039
|
+
style: {
|
|
2040
|
+
backgroundColor: theme2.colors.background,
|
|
2041
|
+
borderRadius: `${theme2.radii[3]}px`,
|
|
2042
|
+
maxWidth: "600px",
|
|
2043
|
+
maxHeight: "80vh",
|
|
2044
|
+
width: "90%",
|
|
2045
|
+
overflow: "hidden",
|
|
2046
|
+
display: "flex",
|
|
2047
|
+
flexDirection: "column",
|
|
2048
|
+
boxShadow: theme2.shadows[3]
|
|
2049
|
+
},
|
|
2050
|
+
onClick: (e) => e.stopPropagation(),
|
|
2051
|
+
children: [
|
|
2052
|
+
/* @__PURE__ */ jsxs(
|
|
2053
|
+
"div",
|
|
2054
|
+
{
|
|
2055
|
+
style: {
|
|
2056
|
+
padding: `${theme2.space[4]}px`,
|
|
2057
|
+
borderBottom: `1px solid ${theme2.colors.border}`,
|
|
2058
|
+
display: "flex",
|
|
2059
|
+
alignItems: "center",
|
|
2060
|
+
justifyContent: "space-between"
|
|
2061
|
+
},
|
|
2062
|
+
children: [
|
|
2063
|
+
/* @__PURE__ */ jsxs(
|
|
2064
|
+
"h2",
|
|
2065
|
+
{
|
|
2066
|
+
style: {
|
|
2067
|
+
fontSize: `${theme2.fontSizes[4]}px`,
|
|
2068
|
+
fontWeight: theme2.fontWeights.semibold,
|
|
2069
|
+
color: theme2.colors.text,
|
|
2070
|
+
display: "flex",
|
|
2071
|
+
alignItems: "center",
|
|
2072
|
+
gap: `${theme2.space[2]}px`,
|
|
2073
|
+
margin: 0
|
|
2074
|
+
},
|
|
2075
|
+
children: [
|
|
2076
|
+
/* @__PURE__ */ jsx(CircleQuestionMark, { size: 20 }),
|
|
2077
|
+
"Understanding Dependencies"
|
|
2078
|
+
]
|
|
2079
|
+
}
|
|
2080
|
+
),
|
|
2081
|
+
/* @__PURE__ */ jsx(
|
|
2082
|
+
"button",
|
|
2083
|
+
{
|
|
2084
|
+
onClick: onClose,
|
|
2085
|
+
style: {
|
|
2086
|
+
background: "none",
|
|
2087
|
+
border: "none",
|
|
2088
|
+
color: theme2.colors.textSecondary,
|
|
2089
|
+
cursor: "pointer",
|
|
2090
|
+
padding: `${theme2.space[1]}px`
|
|
2091
|
+
},
|
|
2092
|
+
children: /* @__PURE__ */ jsx(X, { size: 20 })
|
|
2093
|
+
}
|
|
2094
|
+
)
|
|
2095
|
+
]
|
|
2096
|
+
}
|
|
2097
|
+
),
|
|
2098
|
+
/* @__PURE__ */ jsxs(
|
|
2099
|
+
"div",
|
|
2100
|
+
{
|
|
2101
|
+
style: {
|
|
2102
|
+
padding: `${theme2.space[4]}px`,
|
|
2103
|
+
overflow: "auto",
|
|
2104
|
+
flex: 1
|
|
2105
|
+
},
|
|
2106
|
+
children: [
|
|
2107
|
+
/* @__PURE__ */ jsxs(
|
|
2108
|
+
Section,
|
|
2109
|
+
{
|
|
2110
|
+
icon: /* @__PURE__ */ jsx(Package, { size: 18 }),
|
|
2111
|
+
title: "Dependency Types",
|
|
2112
|
+
theme: theme2,
|
|
2113
|
+
children: [
|
|
2114
|
+
/* @__PURE__ */ jsx(
|
|
2115
|
+
InfoItem,
|
|
2116
|
+
{
|
|
2117
|
+
badge: { text: "prod", color: theme2.colors.primary },
|
|
2118
|
+
title: "Production Dependencies",
|
|
2119
|
+
description: "Required for your application to run in production. These are bundled with your app and affect its size and security.",
|
|
2120
|
+
theme: theme2
|
|
2121
|
+
}
|
|
2122
|
+
),
|
|
2123
|
+
/* @__PURE__ */ jsx(
|
|
2124
|
+
InfoItem,
|
|
2125
|
+
{
|
|
2126
|
+
badge: { text: "dev", color: theme2.colors.secondary },
|
|
2127
|
+
title: "Development Dependencies",
|
|
2128
|
+
description: "Only needed during development (build tools, testing, linters). Not included in production builds.",
|
|
2129
|
+
theme: theme2
|
|
2130
|
+
}
|
|
2131
|
+
),
|
|
2132
|
+
/* @__PURE__ */ jsx(
|
|
2133
|
+
InfoItem,
|
|
2134
|
+
{
|
|
2135
|
+
badge: { text: "peer", color: theme2.colors.accent },
|
|
2136
|
+
title: "Peer Dependencies",
|
|
2137
|
+
description: "Expected to be provided by the consumer of your package. Important for library authors to specify compatibility.",
|
|
2138
|
+
theme: theme2
|
|
2139
|
+
}
|
|
2140
|
+
)
|
|
2141
|
+
]
|
|
2142
|
+
}
|
|
2143
|
+
),
|
|
2144
|
+
/* @__PURE__ */ jsxs(
|
|
2145
|
+
Section,
|
|
2146
|
+
{
|
|
2147
|
+
icon: /* @__PURE__ */ jsx(Scale, { size: 18 }),
|
|
2148
|
+
title: "Common Licenses",
|
|
2149
|
+
theme: theme2,
|
|
2150
|
+
children: [
|
|
2151
|
+
/* @__PURE__ */ jsx(
|
|
2152
|
+
InfoItem,
|
|
2153
|
+
{
|
|
2154
|
+
badge: { text: "MIT", color: theme2.colors.success },
|
|
2155
|
+
title: "Permissive Licenses (MIT, Apache, BSD)",
|
|
2156
|
+
description: "Few restrictions. Can use in commercial projects. Must include copyright notice.",
|
|
2157
|
+
theme: theme2
|
|
2158
|
+
}
|
|
2159
|
+
),
|
|
2160
|
+
/* @__PURE__ */ jsx(
|
|
2161
|
+
InfoItem,
|
|
2162
|
+
{
|
|
2163
|
+
badge: { text: "GPL", color: theme2.colors.warning },
|
|
2164
|
+
title: "Copyleft Licenses (GPL, LGPL, AGPL)",
|
|
2165
|
+
description: "Requires sharing source code of derivative works. Can impact your project's licensing.",
|
|
2166
|
+
theme: theme2
|
|
2167
|
+
}
|
|
2168
|
+
)
|
|
2169
|
+
]
|
|
2170
|
+
}
|
|
2171
|
+
)
|
|
2172
|
+
]
|
|
2173
|
+
}
|
|
2174
|
+
)
|
|
2175
|
+
]
|
|
2176
|
+
}
|
|
2177
|
+
)
|
|
2115
2178
|
}
|
|
2116
|
-
}
|
|
2117
|
-
tags: ["filter", "search", "projects"],
|
|
2118
|
-
tool_call_template: {
|
|
2119
|
-
call_template_type: "panel_event",
|
|
2120
|
-
event_type: `${PANEL_ID$1}:filter`
|
|
2121
|
-
}
|
|
2179
|
+
) });
|
|
2122
2180
|
};
|
|
2123
|
-
const
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
selectedProject: { type: "string" }
|
|
2181
|
+
const Section = ({ icon, title, theme: theme2, children }) => /* @__PURE__ */ jsxs("div", { style: { marginBottom: `${theme2.space[5]}px` }, children: [
|
|
2182
|
+
/* @__PURE__ */ jsxs(
|
|
2183
|
+
"h3",
|
|
2184
|
+
{
|
|
2185
|
+
style: {
|
|
2186
|
+
fontSize: `${theme2.fontSizes[2]}px`,
|
|
2187
|
+
fontWeight: theme2.fontWeights.semibold,
|
|
2188
|
+
color: theme2.colors.text,
|
|
2189
|
+
marginBottom: `${theme2.space[3]}px`,
|
|
2190
|
+
display: "flex",
|
|
2191
|
+
alignItems: "center",
|
|
2192
|
+
gap: `${theme2.space[2]}px`
|
|
2193
|
+
},
|
|
2194
|
+
children: [
|
|
2195
|
+
icon,
|
|
2196
|
+
title
|
|
2197
|
+
]
|
|
2141
2198
|
}
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2199
|
+
),
|
|
2200
|
+
/* @__PURE__ */ jsx(
|
|
2201
|
+
"div",
|
|
2202
|
+
{
|
|
2203
|
+
style: {
|
|
2204
|
+
display: "flex",
|
|
2205
|
+
flexDirection: "column",
|
|
2206
|
+
gap: `${theme2.space[2]}px`
|
|
2207
|
+
},
|
|
2208
|
+
children
|
|
2209
|
+
}
|
|
2210
|
+
)
|
|
2211
|
+
] });
|
|
2212
|
+
const InfoItem = ({ badge, title, description, theme: theme2 }) => /* @__PURE__ */ jsxs(
|
|
2213
|
+
"div",
|
|
2214
|
+
{
|
|
2215
|
+
style: {
|
|
2216
|
+
padding: `${theme2.space[3]}px`,
|
|
2217
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
2218
|
+
borderRadius: `${theme2.radii[2]}px`,
|
|
2219
|
+
border: `1px solid ${theme2.colors.border}`
|
|
2220
|
+
},
|
|
2221
|
+
children: [
|
|
2222
|
+
/* @__PURE__ */ jsxs(
|
|
2223
|
+
"div",
|
|
2224
|
+
{
|
|
2225
|
+
style: {
|
|
2226
|
+
display: "flex",
|
|
2227
|
+
alignItems: "center",
|
|
2228
|
+
gap: `${theme2.space[2]}px`,
|
|
2229
|
+
marginBottom: `${theme2.space[1]}px`
|
|
2230
|
+
},
|
|
2231
|
+
children: [
|
|
2232
|
+
/* @__PURE__ */ jsx(
|
|
2233
|
+
"span",
|
|
2234
|
+
{
|
|
2235
|
+
style: {
|
|
2236
|
+
padding: `${theme2.space[1]}px ${theme2.space[2]}px`,
|
|
2237
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2238
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2239
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2240
|
+
backgroundColor: `${badge.color}20`,
|
|
2241
|
+
color: badge.color
|
|
2242
|
+
},
|
|
2243
|
+
children: badge.text
|
|
2244
|
+
}
|
|
2245
|
+
),
|
|
2246
|
+
/* @__PURE__ */ jsx(
|
|
2247
|
+
"span",
|
|
2248
|
+
{
|
|
2249
|
+
style: {
|
|
2250
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2251
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2252
|
+
color: theme2.colors.text
|
|
2253
|
+
},
|
|
2254
|
+
children: title
|
|
2255
|
+
}
|
|
2256
|
+
)
|
|
2257
|
+
]
|
|
2258
|
+
}
|
|
2259
|
+
),
|
|
2260
|
+
/* @__PURE__ */ jsx(
|
|
2261
|
+
"div",
|
|
2262
|
+
{
|
|
2263
|
+
style: {
|
|
2264
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2265
|
+
color: theme2.colors.textSecondary,
|
|
2266
|
+
lineHeight: theme2.lineHeights.relaxed
|
|
2267
|
+
},
|
|
2268
|
+
children: description
|
|
2269
|
+
}
|
|
2270
|
+
)
|
|
2271
|
+
]
|
|
2272
|
+
}
|
|
2273
|
+
);
|
|
2274
|
+
const DependencyRow = ({ dependency }) => {
|
|
2275
|
+
const { theme: theme2 } = useTheme();
|
|
2276
|
+
const getDependencyTypeBadgeStyle = (type) => {
|
|
2277
|
+
const baseStyle = {
|
|
2278
|
+
padding: `${theme2.space[1]}px ${theme2.space[2]}px`,
|
|
2279
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2280
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2281
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2282
|
+
minWidth: "36px",
|
|
2283
|
+
textAlign: "center"
|
|
2284
|
+
};
|
|
2285
|
+
switch (type) {
|
|
2286
|
+
case "production":
|
|
2287
|
+
return {
|
|
2288
|
+
...baseStyle,
|
|
2289
|
+
backgroundColor: `${theme2.colors.primary}20`,
|
|
2290
|
+
color: theme2.colors.primary
|
|
2291
|
+
};
|
|
2292
|
+
case "development":
|
|
2293
|
+
return {
|
|
2294
|
+
...baseStyle,
|
|
2295
|
+
backgroundColor: `${theme2.colors.secondary}20`,
|
|
2296
|
+
color: theme2.colors.secondary
|
|
2297
|
+
};
|
|
2298
|
+
case "peer":
|
|
2299
|
+
return {
|
|
2300
|
+
...baseStyle,
|
|
2301
|
+
backgroundColor: `${theme2.colors.accent}20`,
|
|
2302
|
+
color: theme2.colors.accent
|
|
2303
|
+
};
|
|
2304
|
+
default:
|
|
2305
|
+
return {
|
|
2306
|
+
...baseStyle,
|
|
2307
|
+
backgroundColor: theme2.colors.backgroundLight,
|
|
2308
|
+
color: theme2.colors.textSecondary
|
|
2309
|
+
};
|
|
2310
|
+
}
|
|
2311
|
+
};
|
|
2312
|
+
return /* @__PURE__ */ jsxs(
|
|
2313
|
+
"div",
|
|
2314
|
+
{
|
|
2315
|
+
style: {
|
|
2316
|
+
display: "flex",
|
|
2317
|
+
alignItems: "center",
|
|
2318
|
+
justifyContent: "space-between",
|
|
2319
|
+
padding: `${theme2.space[2]}px ${theme2.space[3]}px`,
|
|
2320
|
+
backgroundColor: theme2.colors.background,
|
|
2321
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2322
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2323
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
2324
|
+
transition: "all 0.2s"
|
|
2325
|
+
},
|
|
2326
|
+
children: [
|
|
2327
|
+
/* @__PURE__ */ jsxs(
|
|
2328
|
+
"div",
|
|
2329
|
+
{
|
|
2330
|
+
style: {
|
|
2331
|
+
display: "flex",
|
|
2332
|
+
alignItems: "center",
|
|
2333
|
+
gap: `${theme2.space[2]}px`,
|
|
2334
|
+
flex: 1,
|
|
2335
|
+
minWidth: 0
|
|
2336
|
+
},
|
|
2337
|
+
children: [
|
|
2338
|
+
/* @__PURE__ */ jsx("span", { style: getDependencyTypeBadgeStyle(dependency.dependencyType), children: dependency.dependencyType === "production" ? "prod" : dependency.dependencyType === "development" ? "dev" : "peer" }),
|
|
2339
|
+
/* @__PURE__ */ jsx(
|
|
2340
|
+
"span",
|
|
2341
|
+
{
|
|
2342
|
+
style: {
|
|
2343
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2344
|
+
color: theme2.colors.text,
|
|
2345
|
+
overflow: "hidden",
|
|
2346
|
+
textOverflow: "ellipsis",
|
|
2347
|
+
whiteSpace: "nowrap"
|
|
2348
|
+
},
|
|
2349
|
+
children: dependency.name
|
|
2350
|
+
}
|
|
2351
|
+
)
|
|
2352
|
+
]
|
|
2353
|
+
}
|
|
2354
|
+
),
|
|
2355
|
+
/* @__PURE__ */ jsxs(
|
|
2356
|
+
"div",
|
|
2357
|
+
{
|
|
2358
|
+
style: {
|
|
2359
|
+
display: "flex",
|
|
2360
|
+
alignItems: "center",
|
|
2361
|
+
gap: "8px"
|
|
2362
|
+
},
|
|
2363
|
+
children: [
|
|
2364
|
+
/* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: dependency.version }),
|
|
2365
|
+
/* @__PURE__ */ jsx(
|
|
2366
|
+
"a",
|
|
2367
|
+
{
|
|
2368
|
+
href: `https://www.npmjs.com/package/${dependency.name}`,
|
|
2369
|
+
target: "_blank",
|
|
2370
|
+
rel: "noopener noreferrer",
|
|
2371
|
+
style: {
|
|
2372
|
+
padding: `${theme2.space[1]}px`,
|
|
2373
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2374
|
+
display: "flex",
|
|
2375
|
+
alignItems: "center",
|
|
2376
|
+
transition: "background-color 0.2s"
|
|
2377
|
+
},
|
|
2378
|
+
title: "View on npm",
|
|
2379
|
+
children: /* @__PURE__ */ jsx(ExternalLink, { size: 12, color: theme2.colors.textSecondary })
|
|
2380
|
+
}
|
|
2381
|
+
)
|
|
2382
|
+
]
|
|
2383
|
+
}
|
|
2384
|
+
)
|
|
2385
|
+
]
|
|
2386
|
+
}
|
|
2387
|
+
);
|
|
2388
|
+
};
|
|
2389
|
+
const FilterBar = ({
|
|
2390
|
+
activeFilters,
|
|
2391
|
+
onToggleFilter,
|
|
2392
|
+
searchQuery,
|
|
2393
|
+
onSearchChange,
|
|
2394
|
+
counts
|
|
2395
|
+
}) => {
|
|
2396
|
+
const { theme: theme2 } = useTheme();
|
|
2397
|
+
const availableFilters = [
|
|
2398
|
+
...counts.peer > 0 ? ["peer"] : [],
|
|
2399
|
+
...counts.production > 0 ? ["production"] : [],
|
|
2400
|
+
...counts.development > 0 ? ["development"] : []
|
|
2401
|
+
];
|
|
2402
|
+
const showFilters = availableFilters.length > 1;
|
|
2403
|
+
return /* @__PURE__ */ jsxs(
|
|
2404
|
+
"div",
|
|
2405
|
+
{
|
|
2406
|
+
style: {
|
|
2407
|
+
display: "flex",
|
|
2408
|
+
flexDirection: "column",
|
|
2409
|
+
gap: `${theme2.space[2]}px`
|
|
2410
|
+
},
|
|
2411
|
+
children: [
|
|
2412
|
+
/* @__PURE__ */ jsxs(
|
|
2413
|
+
"div",
|
|
2414
|
+
{
|
|
2415
|
+
style: {
|
|
2416
|
+
position: "relative",
|
|
2417
|
+
display: "flex",
|
|
2418
|
+
alignItems: "center"
|
|
2419
|
+
},
|
|
2420
|
+
children: [
|
|
2421
|
+
/* @__PURE__ */ jsx(
|
|
2422
|
+
Search,
|
|
2423
|
+
{
|
|
2424
|
+
size: 14,
|
|
2425
|
+
style: {
|
|
2426
|
+
position: "absolute",
|
|
2427
|
+
left: `${theme2.space[3]}px`,
|
|
2428
|
+
color: theme2.colors.textSecondary,
|
|
2429
|
+
pointerEvents: "none"
|
|
2430
|
+
}
|
|
2431
|
+
}
|
|
2432
|
+
),
|
|
2433
|
+
/* @__PURE__ */ jsx(
|
|
2434
|
+
"input",
|
|
2435
|
+
{
|
|
2436
|
+
type: "text",
|
|
2437
|
+
placeholder: "Search dependencies...",
|
|
2438
|
+
value: searchQuery,
|
|
2439
|
+
onChange: (e) => onSearchChange(e.target.value),
|
|
2440
|
+
style: {
|
|
2441
|
+
width: "100%",
|
|
2442
|
+
padding: `${theme2.space[2]}px ${theme2.space[5]}px`,
|
|
2443
|
+
borderRadius: `${theme2.radii[2]}px`,
|
|
2444
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
2445
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
2446
|
+
color: theme2.colors.text,
|
|
2447
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2448
|
+
fontFamily: theme2.fonts.body,
|
|
2449
|
+
outline: "none",
|
|
2450
|
+
transition: "all 0.2s"
|
|
2451
|
+
}
|
|
2452
|
+
}
|
|
2453
|
+
),
|
|
2454
|
+
searchQuery && /* @__PURE__ */ jsx(
|
|
2455
|
+
"button",
|
|
2456
|
+
{
|
|
2457
|
+
onClick: () => onSearchChange(""),
|
|
2458
|
+
style: {
|
|
2459
|
+
position: "absolute",
|
|
2460
|
+
right: `${theme2.space[2]}px`,
|
|
2461
|
+
padding: `${theme2.space[1]}px`,
|
|
2462
|
+
display: "flex",
|
|
2463
|
+
alignItems: "center",
|
|
2464
|
+
justifyContent: "center",
|
|
2465
|
+
backgroundColor: "transparent",
|
|
2466
|
+
border: "none",
|
|
2467
|
+
cursor: "pointer",
|
|
2468
|
+
borderRadius: `${theme2.radii[1]}px`
|
|
2469
|
+
},
|
|
2470
|
+
title: "Clear search",
|
|
2471
|
+
children: /* @__PURE__ */ jsx(X, { size: 14, color: theme2.colors.textSecondary })
|
|
2472
|
+
}
|
|
2473
|
+
)
|
|
2474
|
+
]
|
|
2475
|
+
}
|
|
2476
|
+
),
|
|
2477
|
+
showFilters && /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: `${theme2.space[1]}px`, width: "100%" }, children: availableFilters.map((type) => {
|
|
2478
|
+
const isActive = activeFilters.has(type);
|
|
2479
|
+
return /* @__PURE__ */ jsxs(
|
|
2480
|
+
"button",
|
|
2481
|
+
{
|
|
2482
|
+
onClick: () => onToggleFilter(type),
|
|
2483
|
+
style: {
|
|
2484
|
+
flex: 1,
|
|
2485
|
+
padding: `${theme2.space[1]}px ${theme2.space[2]}px`,
|
|
2486
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2487
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2488
|
+
fontFamily: theme2.fonts.body,
|
|
2489
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2490
|
+
border: `1px solid ${isActive ? theme2.colors.primary : theme2.colors.border}`,
|
|
2491
|
+
backgroundColor: isActive ? `${theme2.colors.primary}20` : theme2.colors.backgroundSecondary,
|
|
2492
|
+
color: isActive ? theme2.colors.primary : theme2.colors.text,
|
|
2493
|
+
cursor: "pointer",
|
|
2494
|
+
transition: "all 0.2s"
|
|
2495
|
+
},
|
|
2496
|
+
children: [
|
|
2497
|
+
type === "production" ? "Prod" : type === "development" ? "Dev" : "Peer",
|
|
2498
|
+
/* @__PURE__ */ jsxs(
|
|
2499
|
+
"span",
|
|
2500
|
+
{
|
|
2501
|
+
style: { marginLeft: `${theme2.space[1]}px`, opacity: 0.7 },
|
|
2502
|
+
children: [
|
|
2503
|
+
"(",
|
|
2504
|
+
counts[type],
|
|
2505
|
+
")"
|
|
2506
|
+
]
|
|
2507
|
+
}
|
|
2508
|
+
)
|
|
2509
|
+
]
|
|
2510
|
+
},
|
|
2511
|
+
type
|
|
2512
|
+
);
|
|
2513
|
+
}) })
|
|
2514
|
+
]
|
|
2515
|
+
}
|
|
2516
|
+
);
|
|
2517
|
+
};
|
|
2518
|
+
const dependencyTypeOrder = {
|
|
2519
|
+
peer: 0,
|
|
2520
|
+
production: 1,
|
|
2521
|
+
development: 2
|
|
2522
|
+
};
|
|
2523
|
+
function extractDependencies(packageLayer) {
|
|
2524
|
+
const { dependencies, devDependencies, peerDependencies } = packageLayer.packageData;
|
|
2525
|
+
const items = [];
|
|
2526
|
+
if (dependencies) {
|
|
2527
|
+
Object.entries(dependencies).forEach(([name, version]) => {
|
|
2528
|
+
items.push({ name, version, dependencyType: "production" });
|
|
2529
|
+
});
|
|
2530
|
+
}
|
|
2531
|
+
if (devDependencies) {
|
|
2532
|
+
Object.entries(devDependencies).forEach(([name, version]) => {
|
|
2533
|
+
items.push({ name, version, dependencyType: "development" });
|
|
2534
|
+
});
|
|
2535
|
+
}
|
|
2536
|
+
if (peerDependencies) {
|
|
2537
|
+
Object.entries(peerDependencies).forEach(([name, version]) => {
|
|
2538
|
+
items.push({ name, version, dependencyType: "peer" });
|
|
2539
|
+
});
|
|
2540
|
+
}
|
|
2541
|
+
return items.sort((a, b) => {
|
|
2542
|
+
const typeCompare = dependencyTypeOrder[a.dependencyType] - dependencyTypeOrder[b.dependencyType];
|
|
2543
|
+
if (typeCompare !== 0) return typeCompare;
|
|
2544
|
+
return a.name.localeCompare(b.name);
|
|
2545
|
+
});
|
|
2546
|
+
}
|
|
2547
|
+
const DependenciesPanelContent = ({
|
|
2548
|
+
context
|
|
2549
|
+
}) => {
|
|
2550
|
+
var _a;
|
|
2551
|
+
const { theme: theme2 } = useTheme();
|
|
2552
|
+
const [selectedPackagePath, setSelectedPackagePath] = useState(
|
|
2553
|
+
null
|
|
2554
|
+
);
|
|
2555
|
+
const [activeFilters, setActiveFilters] = useState(/* @__PURE__ */ new Set());
|
|
2556
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
2557
|
+
const [showInfoModal, setShowInfoModal] = useState(false);
|
|
2558
|
+
const packagesSlice = context.getSlice("packages");
|
|
2559
|
+
const isLoading = context.isSliceLoading("packages");
|
|
2560
|
+
const hasPackages = context.hasSlice("packages");
|
|
2561
|
+
const packages = useMemo(() => {
|
|
2562
|
+
var _a2;
|
|
2563
|
+
return ((_a2 = packagesSlice == null ? void 0 : packagesSlice.data) == null ? void 0 : _a2.packages) ?? [];
|
|
2564
|
+
}, [(_a = packagesSlice == null ? void 0 : packagesSlice.data) == null ? void 0 : _a.packages]);
|
|
2565
|
+
const effectiveSelectedPath = useMemo(() => {
|
|
2566
|
+
if (selectedPackagePath !== null) return selectedPackagePath;
|
|
2567
|
+
if (packages.length === 1) return packages[0].packageData.path;
|
|
2568
|
+
const rootPackage = packages.find((p) => p.packageData.path === "");
|
|
2569
|
+
if (rootPackage) return "";
|
|
2570
|
+
return null;
|
|
2571
|
+
}, [selectedPackagePath, packages]);
|
|
2572
|
+
const selectedPackage = useMemo(() => {
|
|
2573
|
+
if (effectiveSelectedPath === null) return null;
|
|
2574
|
+
return packages.find((p) => p.packageData.path === effectiveSelectedPath);
|
|
2575
|
+
}, [effectiveSelectedPath, packages]);
|
|
2576
|
+
const dependencyItems = useMemo(() => {
|
|
2577
|
+
if (!selectedPackage) return [];
|
|
2578
|
+
return extractDependencies(selectedPackage);
|
|
2579
|
+
}, [selectedPackage]);
|
|
2580
|
+
const counts = useMemo(() => {
|
|
2581
|
+
return {
|
|
2582
|
+
all: dependencyItems.length,
|
|
2583
|
+
production: dependencyItems.filter((d) => d.dependencyType === "production").length,
|
|
2584
|
+
development: dependencyItems.filter(
|
|
2585
|
+
(d) => d.dependencyType === "development"
|
|
2586
|
+
).length,
|
|
2587
|
+
peer: dependencyItems.filter((d) => d.dependencyType === "peer").length
|
|
2588
|
+
};
|
|
2589
|
+
}, [dependencyItems]);
|
|
2590
|
+
const handleToggleFilter = (type) => {
|
|
2591
|
+
setActiveFilters((prev) => {
|
|
2592
|
+
const next = new Set(prev);
|
|
2593
|
+
if (next.has(type)) {
|
|
2594
|
+
next.delete(type);
|
|
2595
|
+
} else {
|
|
2596
|
+
next.add(type);
|
|
2597
|
+
}
|
|
2598
|
+
return next;
|
|
2599
|
+
});
|
|
2600
|
+
};
|
|
2601
|
+
const filteredDependencies = useMemo(() => {
|
|
2602
|
+
let filtered = [...dependencyItems];
|
|
2603
|
+
if (searchQuery.trim()) {
|
|
2604
|
+
const query = searchQuery.toLowerCase();
|
|
2605
|
+
filtered = filtered.filter(
|
|
2606
|
+
(dep) => dep.name.toLowerCase().includes(query)
|
|
2607
|
+
);
|
|
2608
|
+
}
|
|
2609
|
+
const allTypes = ["production", "development", "peer"];
|
|
2610
|
+
const availableTypes = allTypes.filter((t) => counts[t] > 0);
|
|
2611
|
+
const isAllSelected = activeFilters.size === 0 || availableTypes.every((t) => activeFilters.has(t));
|
|
2612
|
+
if (!isAllSelected && activeFilters.size > 0) {
|
|
2613
|
+
filtered = filtered.filter((dep) => activeFilters.has(dep.dependencyType));
|
|
2614
|
+
}
|
|
2615
|
+
return filtered;
|
|
2616
|
+
}, [dependencyItems, searchQuery, activeFilters, counts]);
|
|
2617
|
+
if (isLoading) {
|
|
2618
|
+
return /* @__PURE__ */ jsx(
|
|
2619
|
+
"div",
|
|
2620
|
+
{
|
|
2621
|
+
style: {
|
|
2622
|
+
padding: `${theme2.space[3]}px`,
|
|
2623
|
+
height: "100%",
|
|
2624
|
+
display: "flex",
|
|
2625
|
+
alignItems: "center",
|
|
2626
|
+
justifyContent: "center",
|
|
2627
|
+
color: theme2.colors.textSecondary,
|
|
2628
|
+
backgroundColor: theme2.colors.background,
|
|
2629
|
+
fontFamily: theme2.fonts.body
|
|
2630
|
+
},
|
|
2631
|
+
children: "Loading packages..."
|
|
2632
|
+
}
|
|
2633
|
+
);
|
|
2634
|
+
}
|
|
2635
|
+
if (!hasPackages || packages.length === 0) {
|
|
2636
|
+
return /* @__PURE__ */ jsxs(
|
|
2637
|
+
"div",
|
|
2638
|
+
{
|
|
2639
|
+
style: {
|
|
2640
|
+
padding: `${theme2.space[3]}px`,
|
|
2641
|
+
height: "100%",
|
|
2642
|
+
display: "flex",
|
|
2643
|
+
flexDirection: "column",
|
|
2644
|
+
alignItems: "center",
|
|
2645
|
+
justifyContent: "center",
|
|
2646
|
+
gap: `${theme2.space[2]}px`,
|
|
2647
|
+
color: theme2.colors.textSecondary,
|
|
2648
|
+
backgroundColor: theme2.colors.background,
|
|
2649
|
+
fontFamily: theme2.fonts.body
|
|
2650
|
+
},
|
|
2651
|
+
children: [
|
|
2652
|
+
/* @__PURE__ */ jsx(Package, { size: 32 }),
|
|
2653
|
+
/* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "No package data available" })
|
|
2654
|
+
]
|
|
2655
|
+
}
|
|
2656
|
+
);
|
|
2657
|
+
}
|
|
2658
|
+
return /* @__PURE__ */ jsxs(
|
|
2659
|
+
"div",
|
|
2660
|
+
{
|
|
2661
|
+
style: {
|
|
2662
|
+
height: "100%",
|
|
2663
|
+
display: "flex",
|
|
2664
|
+
flexDirection: "column",
|
|
2665
|
+
backgroundColor: theme2.colors.background,
|
|
2666
|
+
color: theme2.colors.text,
|
|
2667
|
+
fontFamily: theme2.fonts.body,
|
|
2668
|
+
overflow: "hidden"
|
|
2669
|
+
},
|
|
2670
|
+
children: [
|
|
2671
|
+
/* @__PURE__ */ jsxs(
|
|
2672
|
+
"div",
|
|
2673
|
+
{
|
|
2674
|
+
style: {
|
|
2675
|
+
flexShrink: 0,
|
|
2676
|
+
padding: `${theme2.space[3]}px`,
|
|
2677
|
+
paddingBottom: `${theme2.space[2]}px`,
|
|
2678
|
+
display: "flex",
|
|
2679
|
+
flexDirection: "column",
|
|
2680
|
+
gap: `${theme2.space[2]}px`,
|
|
2681
|
+
borderBottom: `1px solid ${theme2.colors.border}`
|
|
2682
|
+
},
|
|
2683
|
+
children: [
|
|
2684
|
+
/* @__PURE__ */ jsxs(
|
|
2685
|
+
"div",
|
|
2686
|
+
{
|
|
2687
|
+
style: {
|
|
2688
|
+
display: "flex",
|
|
2689
|
+
alignItems: "center",
|
|
2690
|
+
justifyContent: "space-between"
|
|
2691
|
+
},
|
|
2692
|
+
children: [
|
|
2693
|
+
/* @__PURE__ */ jsx(
|
|
2694
|
+
"h3",
|
|
2695
|
+
{
|
|
2696
|
+
style: {
|
|
2697
|
+
fontSize: `${theme2.fontSizes[2]}px`,
|
|
2698
|
+
fontWeight: theme2.fontWeights.semibold,
|
|
2699
|
+
color: theme2.colors.text,
|
|
2700
|
+
display: "flex",
|
|
2701
|
+
alignItems: "center",
|
|
2702
|
+
gap: `${theme2.space[2]}px`,
|
|
2703
|
+
margin: 0
|
|
2704
|
+
},
|
|
2705
|
+
children: packages.length > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2706
|
+
/* @__PURE__ */ jsx(Boxes, { size: 16 }),
|
|
2707
|
+
"Monorepo Dependencies",
|
|
2708
|
+
/* @__PURE__ */ jsxs(
|
|
2709
|
+
"span",
|
|
2710
|
+
{
|
|
2711
|
+
style: {
|
|
2712
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2713
|
+
fontWeight: theme2.fontWeights.body,
|
|
2714
|
+
color: theme2.colors.textSecondary
|
|
2715
|
+
},
|
|
2716
|
+
children: [
|
|
2717
|
+
"(",
|
|
2718
|
+
packages.length,
|
|
2719
|
+
")"
|
|
2720
|
+
]
|
|
2721
|
+
}
|
|
2722
|
+
)
|
|
2723
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2724
|
+
/* @__PURE__ */ jsx(Package, { size: 16 }),
|
|
2725
|
+
"Dependencies"
|
|
2726
|
+
] })
|
|
2727
|
+
}
|
|
2728
|
+
),
|
|
2729
|
+
/* @__PURE__ */ jsxs(
|
|
2730
|
+
"button",
|
|
2731
|
+
{
|
|
2732
|
+
onClick: () => setShowInfoModal(true),
|
|
2733
|
+
style: {
|
|
2734
|
+
padding: `${theme2.space[1]}px ${theme2.space[2]}px`,
|
|
2735
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2736
|
+
fontWeight: theme2.fontWeights.medium,
|
|
2737
|
+
fontFamily: theme2.fonts.body,
|
|
2738
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2739
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
2740
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
2741
|
+
color: theme2.colors.primary,
|
|
2742
|
+
cursor: "pointer",
|
|
2743
|
+
display: "flex",
|
|
2744
|
+
alignItems: "center",
|
|
2745
|
+
gap: `${theme2.space[1]}px`,
|
|
2746
|
+
transition: "all 0.2s"
|
|
2747
|
+
},
|
|
2748
|
+
children: [
|
|
2749
|
+
/* @__PURE__ */ jsx(CircleQuestionMark, { size: 12 }),
|
|
2750
|
+
"Learn More"
|
|
2751
|
+
]
|
|
2752
|
+
}
|
|
2753
|
+
)
|
|
2754
|
+
]
|
|
2755
|
+
}
|
|
2756
|
+
),
|
|
2757
|
+
packages.length > 1 && /* @__PURE__ */ jsx(
|
|
2758
|
+
"select",
|
|
2759
|
+
{
|
|
2760
|
+
value: effectiveSelectedPath ?? "__none__",
|
|
2761
|
+
onChange: (e) => setSelectedPackagePath(e.target.value === "__none__" ? null : e.target.value),
|
|
2762
|
+
style: {
|
|
2763
|
+
width: "100%",
|
|
2764
|
+
padding: `${theme2.space[2]}px`,
|
|
2765
|
+
borderRadius: `${theme2.radii[1]}px`,
|
|
2766
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
2767
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
2768
|
+
color: theme2.colors.text,
|
|
2769
|
+
fontSize: `${theme2.fontSizes[1]}px`,
|
|
2770
|
+
fontFamily: theme2.fonts.body,
|
|
2771
|
+
cursor: "pointer"
|
|
2772
|
+
},
|
|
2773
|
+
children: packages.map((pkg) => /* @__PURE__ */ jsxs("option", { value: pkg.packageData.path, children: [
|
|
2774
|
+
pkg.packageData.name,
|
|
2775
|
+
" (",
|
|
2776
|
+
pkg.packageData.path || "root",
|
|
2777
|
+
")"
|
|
2778
|
+
] }, pkg.packageData.path || "__root__"))
|
|
2779
|
+
}
|
|
2780
|
+
),
|
|
2781
|
+
packages.length === 1 && selectedPackage && /* @__PURE__ */ jsxs(
|
|
2782
|
+
"div",
|
|
2783
|
+
{
|
|
2784
|
+
style: {
|
|
2785
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2786
|
+
color: theme2.colors.textSecondary
|
|
2787
|
+
},
|
|
2788
|
+
children: [
|
|
2789
|
+
selectedPackage.packageData.name,
|
|
2790
|
+
" • ",
|
|
2791
|
+
dependencyItems.length,
|
|
2792
|
+
" dependencies"
|
|
2793
|
+
]
|
|
2794
|
+
}
|
|
2795
|
+
),
|
|
2796
|
+
selectedPackage && dependencyItems.length > 0 && /* @__PURE__ */ jsx(
|
|
2797
|
+
FilterBar,
|
|
2798
|
+
{
|
|
2799
|
+
activeFilters,
|
|
2800
|
+
onToggleFilter: handleToggleFilter,
|
|
2801
|
+
searchQuery,
|
|
2802
|
+
onSearchChange: setSearchQuery,
|
|
2803
|
+
counts
|
|
2804
|
+
}
|
|
2805
|
+
)
|
|
2806
|
+
]
|
|
2807
|
+
}
|
|
2808
|
+
),
|
|
2809
|
+
selectedPackage && dependencyItems.length > 0 && /* @__PURE__ */ jsxs(
|
|
2810
|
+
"div",
|
|
2811
|
+
{
|
|
2812
|
+
style: {
|
|
2813
|
+
flex: 1,
|
|
2814
|
+
overflow: "auto",
|
|
2815
|
+
padding: `${theme2.space[2]}px ${theme2.space[3]}px ${theme2.space[3]}px`
|
|
2816
|
+
},
|
|
2817
|
+
children: [
|
|
2818
|
+
/* @__PURE__ */ jsxs(
|
|
2819
|
+
"div",
|
|
2820
|
+
{
|
|
2821
|
+
style: {
|
|
2822
|
+
fontSize: `${theme2.fontSizes[0]}px`,
|
|
2823
|
+
color: theme2.colors.textSecondary,
|
|
2824
|
+
marginBottom: `${theme2.space[2]}px`
|
|
2825
|
+
},
|
|
2826
|
+
children: [
|
|
2827
|
+
"Showing ",
|
|
2828
|
+
filteredDependencies.length,
|
|
2829
|
+
" of ",
|
|
2830
|
+
dependencyItems.length,
|
|
2831
|
+
" dependencies"
|
|
2832
|
+
]
|
|
2833
|
+
}
|
|
2834
|
+
),
|
|
2835
|
+
/* @__PURE__ */ jsx(
|
|
2836
|
+
"div",
|
|
2837
|
+
{
|
|
2838
|
+
style: {
|
|
2839
|
+
display: "flex",
|
|
2840
|
+
flexDirection: "column",
|
|
2841
|
+
gap: `${theme2.space[1]}px`
|
|
2842
|
+
},
|
|
2843
|
+
children: filteredDependencies.length === 0 ? /* @__PURE__ */ jsx(
|
|
2844
|
+
"div",
|
|
2845
|
+
{
|
|
2846
|
+
style: {
|
|
2847
|
+
padding: `${theme2.space[3]}px`,
|
|
2848
|
+
textAlign: "center",
|
|
2849
|
+
color: theme2.colors.textSecondary,
|
|
2850
|
+
fontSize: `${theme2.fontSizes[1]}px`
|
|
2851
|
+
},
|
|
2852
|
+
children: "No dependencies match your filters"
|
|
2853
|
+
}
|
|
2854
|
+
) : filteredDependencies.map((dep) => /* @__PURE__ */ jsx(
|
|
2855
|
+
DependencyRow,
|
|
2856
|
+
{
|
|
2857
|
+
dependency: dep
|
|
2858
|
+
},
|
|
2859
|
+
`${dep.name}-${dep.dependencyType}`
|
|
2860
|
+
))
|
|
2861
|
+
}
|
|
2862
|
+
)
|
|
2863
|
+
]
|
|
2864
|
+
}
|
|
2865
|
+
),
|
|
2866
|
+
!selectedPackage && packages.length > 1 && /* @__PURE__ */ jsx(
|
|
2867
|
+
"div",
|
|
2868
|
+
{
|
|
2869
|
+
style: {
|
|
2870
|
+
flex: 1,
|
|
2871
|
+
display: "flex",
|
|
2872
|
+
alignItems: "center",
|
|
2873
|
+
justifyContent: "center",
|
|
2874
|
+
color: theme2.colors.textSecondary,
|
|
2875
|
+
fontSize: `${theme2.fontSizes[1]}px`
|
|
2876
|
+
},
|
|
2877
|
+
children: "Select a package to view its dependencies"
|
|
2878
|
+
}
|
|
2879
|
+
),
|
|
2880
|
+
/* @__PURE__ */ jsx(
|
|
2881
|
+
DependencyInfoModal,
|
|
2882
|
+
{
|
|
2883
|
+
isOpen: showInfoModal,
|
|
2884
|
+
onClose: () => setShowInfoModal(false)
|
|
2885
|
+
}
|
|
2886
|
+
)
|
|
2887
|
+
]
|
|
2888
|
+
}
|
|
2889
|
+
);
|
|
2890
|
+
};
|
|
2891
|
+
const DependenciesPanel = (props) => {
|
|
2892
|
+
return /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(DependenciesPanelContent, { ...props }) });
|
|
2893
|
+
};
|
|
2894
|
+
const PANEL_ID$2 = "industry-theme.local-projects";
|
|
2895
|
+
const filterProjectsTool = {
|
|
2896
|
+
name: "filter_projects",
|
|
2897
|
+
description: "Filter the local projects list by name, owner, or path",
|
|
2898
|
+
inputs: {
|
|
2899
|
+
type: "object",
|
|
2900
|
+
properties: {
|
|
2901
|
+
filter: {
|
|
2902
|
+
type: "string",
|
|
2903
|
+
description: "Search term to filter projects (matches name, owner, or path)"
|
|
2904
|
+
}
|
|
2905
|
+
},
|
|
2906
|
+
required: ["filter"]
|
|
2907
|
+
},
|
|
2908
|
+
outputs: {
|
|
2909
|
+
type: "object",
|
|
2910
|
+
properties: {
|
|
2911
|
+
success: { type: "boolean" },
|
|
2912
|
+
message: { type: "string" }
|
|
2913
|
+
}
|
|
2914
|
+
},
|
|
2915
|
+
tags: ["filter", "search", "projects"],
|
|
2916
|
+
tool_call_template: {
|
|
2917
|
+
call_template_type: "panel_event",
|
|
2918
|
+
event_type: `${PANEL_ID$2}:filter`
|
|
2919
|
+
}
|
|
2920
|
+
};
|
|
2921
|
+
const selectProjectTool = {
|
|
2922
|
+
name: "select_project",
|
|
2923
|
+
description: "Select a project by name or path to view its details",
|
|
2924
|
+
inputs: {
|
|
2925
|
+
type: "object",
|
|
2926
|
+
properties: {
|
|
2927
|
+
identifier: {
|
|
2928
|
+
type: "string",
|
|
2929
|
+
description: "Project name or full path to select"
|
|
2930
|
+
}
|
|
2931
|
+
},
|
|
2932
|
+
required: ["identifier"]
|
|
2933
|
+
},
|
|
2934
|
+
outputs: {
|
|
2935
|
+
type: "object",
|
|
2936
|
+
properties: {
|
|
2937
|
+
success: { type: "boolean" },
|
|
2938
|
+
selectedProject: { type: "string" }
|
|
2939
|
+
}
|
|
2940
|
+
},
|
|
2941
|
+
tags: ["select", "project", "navigation"],
|
|
2942
|
+
tool_call_template: {
|
|
2943
|
+
call_template_type: "panel_event",
|
|
2944
|
+
event_type: `${PANEL_ID$2}:select-repository`
|
|
2945
|
+
}
|
|
2946
|
+
};
|
|
2947
|
+
const openProjectTool = {
|
|
2948
|
+
name: "open_project",
|
|
2151
2949
|
description: "Open a local project in the development workspace",
|
|
2152
2950
|
inputs: {
|
|
2153
2951
|
type: "object",
|
|
@@ -2169,7 +2967,7 @@ const openProjectTool = {
|
|
|
2169
2967
|
tags: ["open", "project", "workspace"],
|
|
2170
2968
|
tool_call_template: {
|
|
2171
2969
|
call_template_type: "panel_event",
|
|
2172
|
-
event_type: `${PANEL_ID$
|
|
2970
|
+
event_type: `${PANEL_ID$2}:open-repository`
|
|
2173
2971
|
}
|
|
2174
2972
|
};
|
|
2175
2973
|
const localProjectsPanelTools = [
|
|
@@ -2178,12 +2976,12 @@ const localProjectsPanelTools = [
|
|
|
2178
2976
|
openProjectTool
|
|
2179
2977
|
];
|
|
2180
2978
|
const localProjectsPanelToolsMetadata = {
|
|
2181
|
-
id: PANEL_ID$
|
|
2979
|
+
id: PANEL_ID$2,
|
|
2182
2980
|
name: "Local Projects Panel",
|
|
2183
2981
|
description: "Tools for browsing and managing local Alexandria repositories",
|
|
2184
2982
|
tools: localProjectsPanelTools
|
|
2185
2983
|
};
|
|
2186
|
-
const PANEL_ID = "industry-theme.workspace-repositories";
|
|
2984
|
+
const PANEL_ID$1 = "industry-theme.workspace-repositories";
|
|
2187
2985
|
const selectRepositoryTool = {
|
|
2188
2986
|
name: "select_workspace_repository",
|
|
2189
2987
|
description: "Selects a repository in the workspace panel",
|
|
@@ -2207,7 +3005,7 @@ const selectRepositoryTool = {
|
|
|
2207
3005
|
tags: ["workspace", "repository", "select"],
|
|
2208
3006
|
tool_call_template: {
|
|
2209
3007
|
call_template_type: "panel_event",
|
|
2210
|
-
event_type: `${PANEL_ID}:select-repository`
|
|
3008
|
+
event_type: `${PANEL_ID$1}:select-repository`
|
|
2211
3009
|
}
|
|
2212
3010
|
};
|
|
2213
3011
|
const refreshWorkspaceTool = {
|
|
@@ -2232,7 +3030,7 @@ const refreshWorkspaceTool = {
|
|
|
2232
3030
|
tags: ["workspace", "refresh"],
|
|
2233
3031
|
tool_call_template: {
|
|
2234
3032
|
call_template_type: "panel_event",
|
|
2235
|
-
event_type: `${PANEL_ID}:refresh-workspace`
|
|
3033
|
+
event_type: `${PANEL_ID$1}:refresh-workspace`
|
|
2236
3034
|
}
|
|
2237
3035
|
};
|
|
2238
3036
|
const openRepositoryTool = {
|
|
@@ -2258,7 +3056,7 @@ const openRepositoryTool = {
|
|
|
2258
3056
|
tags: ["workspace", "repository", "open"],
|
|
2259
3057
|
tool_call_template: {
|
|
2260
3058
|
call_template_type: "panel_event",
|
|
2261
|
-
event_type: `${PANEL_ID}:open-repository`
|
|
3059
|
+
event_type: `${PANEL_ID$1}:open-repository`
|
|
2262
3060
|
}
|
|
2263
3061
|
};
|
|
2264
3062
|
const workspaceRepositoriesPanelTools = [
|
|
@@ -2267,11 +3065,102 @@ const workspaceRepositoriesPanelTools = [
|
|
|
2267
3065
|
openRepositoryTool
|
|
2268
3066
|
];
|
|
2269
3067
|
const workspaceRepositoriesPanelToolsMetadata = {
|
|
2270
|
-
id: PANEL_ID,
|
|
3068
|
+
id: PANEL_ID$1,
|
|
2271
3069
|
name: "Workspace Repositories Panel",
|
|
2272
3070
|
description: "Tools provided by the workspace repositories panel",
|
|
2273
3071
|
tools: workspaceRepositoriesPanelTools
|
|
2274
3072
|
};
|
|
3073
|
+
const PANEL_ID = "principal-ade.dependencies-panel";
|
|
3074
|
+
const filterDependenciesTool = {
|
|
3075
|
+
name: "filter_dependencies",
|
|
3076
|
+
description: "Filter the dependencies list by package name",
|
|
3077
|
+
inputs: {
|
|
3078
|
+
type: "object",
|
|
3079
|
+
properties: {
|
|
3080
|
+
filter: {
|
|
3081
|
+
type: "string",
|
|
3082
|
+
description: "Search term to filter dependencies by name"
|
|
3083
|
+
}
|
|
3084
|
+
},
|
|
3085
|
+
required: ["filter"]
|
|
3086
|
+
},
|
|
3087
|
+
outputs: {
|
|
3088
|
+
type: "object",
|
|
3089
|
+
properties: {
|
|
3090
|
+
success: { type: "boolean" },
|
|
3091
|
+
message: { type: "string" }
|
|
3092
|
+
}
|
|
3093
|
+
},
|
|
3094
|
+
tags: ["filter", "search", "dependencies"],
|
|
3095
|
+
tool_call_template: {
|
|
3096
|
+
call_template_type: "panel_event",
|
|
3097
|
+
event_type: `${PANEL_ID}:filter`
|
|
3098
|
+
}
|
|
3099
|
+
};
|
|
3100
|
+
const selectDependencyTypeTool = {
|
|
3101
|
+
name: "select_dependency_type",
|
|
3102
|
+
description: "Filter dependencies by type (production, development, or peer)",
|
|
3103
|
+
inputs: {
|
|
3104
|
+
type: "object",
|
|
3105
|
+
properties: {
|
|
3106
|
+
type: {
|
|
3107
|
+
type: "string",
|
|
3108
|
+
enum: ["production", "development", "peer", "all"],
|
|
3109
|
+
description: "The dependency type to filter by"
|
|
3110
|
+
}
|
|
3111
|
+
},
|
|
3112
|
+
required: ["type"]
|
|
3113
|
+
},
|
|
3114
|
+
outputs: {
|
|
3115
|
+
type: "object",
|
|
3116
|
+
properties: {
|
|
3117
|
+
success: { type: "boolean" },
|
|
3118
|
+
selectedType: { type: "string" }
|
|
3119
|
+
}
|
|
3120
|
+
},
|
|
3121
|
+
tags: ["filter", "type", "dependencies"],
|
|
3122
|
+
tool_call_template: {
|
|
3123
|
+
call_template_type: "panel_event",
|
|
3124
|
+
event_type: `${PANEL_ID}:select-type`
|
|
3125
|
+
}
|
|
3126
|
+
};
|
|
3127
|
+
const selectPackageTool = {
|
|
3128
|
+
name: "select_package",
|
|
3129
|
+
description: "Select a package to view its dependencies (for monorepos)",
|
|
3130
|
+
inputs: {
|
|
3131
|
+
type: "object",
|
|
3132
|
+
properties: {
|
|
3133
|
+
packagePath: {
|
|
3134
|
+
type: "string",
|
|
3135
|
+
description: "The path of the package to select"
|
|
3136
|
+
}
|
|
3137
|
+
},
|
|
3138
|
+
required: ["packagePath"]
|
|
3139
|
+
},
|
|
3140
|
+
outputs: {
|
|
3141
|
+
type: "object",
|
|
3142
|
+
properties: {
|
|
3143
|
+
success: { type: "boolean" },
|
|
3144
|
+
selectedPackage: { type: "string" }
|
|
3145
|
+
}
|
|
3146
|
+
},
|
|
3147
|
+
tags: ["select", "package", "monorepo"],
|
|
3148
|
+
tool_call_template: {
|
|
3149
|
+
call_template_type: "panel_event",
|
|
3150
|
+
event_type: `${PANEL_ID}:select-package`
|
|
3151
|
+
}
|
|
3152
|
+
};
|
|
3153
|
+
const dependenciesPanelTools = [
|
|
3154
|
+
filterDependenciesTool,
|
|
3155
|
+
selectDependencyTypeTool,
|
|
3156
|
+
selectPackageTool
|
|
3157
|
+
];
|
|
3158
|
+
const dependenciesPanelToolsMetadata = {
|
|
3159
|
+
id: PANEL_ID,
|
|
3160
|
+
name: "Dependencies Panel",
|
|
3161
|
+
description: "Tools for viewing and exploring package dependencies",
|
|
3162
|
+
tools: dependenciesPanelTools
|
|
3163
|
+
};
|
|
2275
3164
|
const panels = [
|
|
2276
3165
|
{
|
|
2277
3166
|
metadata: {
|
|
@@ -2314,6 +3203,25 @@ const panels = [
|
|
|
2314
3203
|
onUnmount: async (_context) => {
|
|
2315
3204
|
console.log("Workspace Repositories Panel unmounting");
|
|
2316
3205
|
}
|
|
3206
|
+
},
|
|
3207
|
+
{
|
|
3208
|
+
metadata: {
|
|
3209
|
+
id: "principal-ade.dependencies-panel",
|
|
3210
|
+
name: "Dependencies",
|
|
3211
|
+
icon: "Package",
|
|
3212
|
+
version: "0.1.0",
|
|
3213
|
+
author: "Principal ADE",
|
|
3214
|
+
description: "View and explore package dependencies",
|
|
3215
|
+
slices: ["packages"],
|
|
3216
|
+
tools: dependenciesPanelTools
|
|
3217
|
+
},
|
|
3218
|
+
component: DependenciesPanel,
|
|
3219
|
+
onMount: async (_context) => {
|
|
3220
|
+
console.log("Dependencies Panel mounted");
|
|
3221
|
+
},
|
|
3222
|
+
onUnmount: async (_context) => {
|
|
3223
|
+
console.log("Dependencies Panel unmounting");
|
|
3224
|
+
}
|
|
2317
3225
|
}
|
|
2318
3226
|
];
|
|
2319
3227
|
const onPackageLoad = async () => {
|
|
@@ -2323,12 +3231,15 @@ const onPackageUnload = async () => {
|
|
|
2323
3231
|
console.log("Alexandria Panels package unloading");
|
|
2324
3232
|
};
|
|
2325
3233
|
export {
|
|
3234
|
+
DependenciesPanel,
|
|
2326
3235
|
LocalProjectCard,
|
|
2327
3236
|
LocalProjectsPanel,
|
|
2328
3237
|
LocalProjectsPanelPreview,
|
|
2329
3238
|
RepositoryAvatar,
|
|
2330
3239
|
WorkspaceRepositoriesPanel,
|
|
2331
|
-
|
|
3240
|
+
dependenciesPanelTools,
|
|
3241
|
+
dependenciesPanelToolsMetadata,
|
|
3242
|
+
filterDependenciesTool,
|
|
2332
3243
|
filterProjectsTool,
|
|
2333
3244
|
localProjectsPanelTools,
|
|
2334
3245
|
localProjectsPanelToolsMetadata,
|
|
@@ -2338,6 +3249,8 @@ export {
|
|
|
2338
3249
|
openRepositoryTool,
|
|
2339
3250
|
panels,
|
|
2340
3251
|
refreshWorkspaceTool,
|
|
3252
|
+
selectDependencyTypeTool,
|
|
3253
|
+
selectPackageTool,
|
|
2341
3254
|
selectProjectTool,
|
|
2342
3255
|
selectRepositoryTool,
|
|
2343
3256
|
workspaceRepositoriesPanelTools,
|