@industry-theme/repository-composition-panels 0.7.32 → 0.7.34
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/{browserAll-BdeGLg9f.js → browserAll-BB02N7at.js} +3 -3
- package/dist/{browserAll-BdeGLg9f.js.map → browserAll-BB02N7at.js.map} +1 -1
- package/dist/{index-anN0r0mT.js → index-C1lQoGkG.js} +966 -505
- package/dist/{index-anN0r0mT.js.map → index-C1lQoGkG.js.map} +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/{init-DsRm8ZpT.js → init-BHU8XeD1.js} +2 -2
- package/dist/{init-DsRm8ZpT.js.map → init-BHU8XeD1.js.map} +1 -1
- package/dist/panels/CollectionMapPanel.d.ts +3 -1
- package/dist/panels/CollectionMapPanel.d.ts.map +1 -1
- package/dist/panels/components/PackageLoadingGraph.d.ts.map +1 -1
- package/dist/panels/file-city-3d/FileCity3D.d.ts.map +1 -1
- package/dist/panels/file-city-3d/buildCityData.d.ts.map +1 -1
- package/dist/panels/local-project-grid/LocalProjectCard.d.ts +14 -0
- package/dist/panels/local-project-grid/LocalProjectCard.d.ts.map +1 -0
- package/dist/panels/local-project-grid/LocalProjectGridPanel.d.ts +22 -0
- package/dist/panels/local-project-grid/LocalProjectGridPanel.d.ts.map +1 -0
- package/dist/panels/local-project-grid/index.d.ts +7 -0
- package/dist/panels/local-project-grid/index.d.ts.map +1 -0
- package/dist/panels/local-project-grid/types.d.ts +47 -0
- package/dist/panels/local-project-grid/types.d.ts.map +1 -0
- package/dist/panels/overworld-map/components/CardBack.d.ts.map +1 -1
- package/dist/panels.bundle.js +5 -1
- package/dist/types/composition.d.ts +1 -1
- package/dist/types/composition.d.ts.map +1 -1
- package/dist/webworkerAll-CQOqrjDQ.js +3 -0
- package/dist/webworkerAll-CQOqrjDQ.js.map +1 -0
- package/package.json +4 -4
- package/dist/webworkerAll-DFGI4H02.js +0 -3
- package/dist/webworkerAll-DFGI4H02.js.map +0 -1
|
@@ -1737,8 +1737,7 @@ const PackageLoadingGraph = () => {
|
|
|
1737
1737
|
backgroundColor: color2,
|
|
1738
1738
|
opacity: 0.2,
|
|
1739
1739
|
transform: "translateX(-50%)",
|
|
1740
|
-
animation: `shadowPulse ${totalCycleDuration}s ease-in-out infinite
|
|
1741
|
-
animationDelay: `${box.delay}s`
|
|
1740
|
+
animation: `shadowPulse ${totalCycleDuration}s ease-in-out ${box.delay}s infinite`
|
|
1742
1741
|
}
|
|
1743
1742
|
},
|
|
1744
1743
|
`shadow-${box.id}`
|
|
@@ -10691,152 +10690,135 @@ function getAugmentedNamespace(n2) {
|
|
|
10691
10690
|
return a2;
|
|
10692
10691
|
}
|
|
10693
10692
|
var withSelector = { exports: {} };
|
|
10694
|
-
var
|
|
10693
|
+
var withSelector_production_min = {};
|
|
10695
10694
|
var shim = { exports: {} };
|
|
10696
|
-
var
|
|
10695
|
+
var useSyncExternalStoreShim_production_min = {};
|
|
10697
10696
|
/**
|
|
10698
10697
|
* @license React
|
|
10699
|
-
* use-sync-external-store-shim.production.js
|
|
10698
|
+
* use-sync-external-store-shim.production.min.js
|
|
10700
10699
|
*
|
|
10701
|
-
* Copyright (c)
|
|
10700
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
10702
10701
|
*
|
|
10703
10702
|
* This source code is licensed under the MIT license found in the
|
|
10704
10703
|
* LICENSE file in the root directory of this source tree.
|
|
10705
10704
|
*/
|
|
10706
|
-
var
|
|
10707
|
-
function
|
|
10708
|
-
if (
|
|
10709
|
-
|
|
10710
|
-
var
|
|
10711
|
-
function
|
|
10712
|
-
return
|
|
10713
|
-
}
|
|
10714
|
-
var
|
|
10715
|
-
function
|
|
10716
|
-
var
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
10727
|
-
|
|
10728
|
-
|
|
10729
|
-
|
|
10730
|
-
});
|
|
10731
|
-
},
|
|
10732
|
-
[subscribe]
|
|
10733
|
-
);
|
|
10734
|
-
useDebugValue2(value);
|
|
10735
|
-
return value;
|
|
10705
|
+
var hasRequiredUseSyncExternalStoreShim_production_min;
|
|
10706
|
+
function requireUseSyncExternalStoreShim_production_min() {
|
|
10707
|
+
if (hasRequiredUseSyncExternalStoreShim_production_min) return useSyncExternalStoreShim_production_min;
|
|
10708
|
+
hasRequiredUseSyncExternalStoreShim_production_min = 1;
|
|
10709
|
+
var e2 = React2__default;
|
|
10710
|
+
function h2(a2, b2) {
|
|
10711
|
+
return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
|
|
10712
|
+
}
|
|
10713
|
+
var k2 = "function" === typeof Object.is ? Object.is : h2, l2 = e2.useState, m2 = e2.useEffect, n2 = e2.useLayoutEffect, p2 = e2.useDebugValue;
|
|
10714
|
+
function q2(a2, b2) {
|
|
10715
|
+
var d2 = b2(), f2 = l2({ inst: { value: d2, getSnapshot: b2 } }), c2 = f2[0].inst, g2 = f2[1];
|
|
10716
|
+
n2(function() {
|
|
10717
|
+
c2.value = d2;
|
|
10718
|
+
c2.getSnapshot = b2;
|
|
10719
|
+
r2(c2) && g2({ inst: c2 });
|
|
10720
|
+
}, [a2, d2, b2]);
|
|
10721
|
+
m2(function() {
|
|
10722
|
+
r2(c2) && g2({ inst: c2 });
|
|
10723
|
+
return a2(function() {
|
|
10724
|
+
r2(c2) && g2({ inst: c2 });
|
|
10725
|
+
});
|
|
10726
|
+
}, [a2]);
|
|
10727
|
+
p2(d2);
|
|
10728
|
+
return d2;
|
|
10736
10729
|
}
|
|
10737
|
-
function
|
|
10738
|
-
var
|
|
10739
|
-
|
|
10730
|
+
function r2(a2) {
|
|
10731
|
+
var b2 = a2.getSnapshot;
|
|
10732
|
+
a2 = a2.value;
|
|
10740
10733
|
try {
|
|
10741
|
-
var
|
|
10742
|
-
return !
|
|
10743
|
-
} catch (
|
|
10734
|
+
var d2 = b2();
|
|
10735
|
+
return !k2(a2, d2);
|
|
10736
|
+
} catch (f2) {
|
|
10744
10737
|
return true;
|
|
10745
10738
|
}
|
|
10746
10739
|
}
|
|
10747
|
-
function
|
|
10748
|
-
return
|
|
10740
|
+
function t2(a2, b2) {
|
|
10741
|
+
return b2();
|
|
10749
10742
|
}
|
|
10750
|
-
var
|
|
10751
|
-
|
|
10752
|
-
return
|
|
10743
|
+
var u2 = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? t2 : q2;
|
|
10744
|
+
useSyncExternalStoreShim_production_min.useSyncExternalStore = void 0 !== e2.useSyncExternalStore ? e2.useSyncExternalStore : u2;
|
|
10745
|
+
return useSyncExternalStoreShim_production_min;
|
|
10753
10746
|
}
|
|
10754
10747
|
var hasRequiredShim;
|
|
10755
10748
|
function requireShim() {
|
|
10756
10749
|
if (hasRequiredShim) return shim.exports;
|
|
10757
10750
|
hasRequiredShim = 1;
|
|
10758
10751
|
{
|
|
10759
|
-
shim.exports =
|
|
10752
|
+
shim.exports = requireUseSyncExternalStoreShim_production_min();
|
|
10760
10753
|
}
|
|
10761
10754
|
return shim.exports;
|
|
10762
10755
|
}
|
|
10763
10756
|
/**
|
|
10764
10757
|
* @license React
|
|
10765
|
-
* use-sync-external-store-shim/with-selector.production.js
|
|
10758
|
+
* use-sync-external-store-shim/with-selector.production.min.js
|
|
10766
10759
|
*
|
|
10767
|
-
* Copyright (c)
|
|
10760
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
10768
10761
|
*
|
|
10769
10762
|
* This source code is licensed under the MIT license found in the
|
|
10770
10763
|
* LICENSE file in the root directory of this source tree.
|
|
10771
10764
|
*/
|
|
10772
|
-
var
|
|
10773
|
-
function
|
|
10774
|
-
if (
|
|
10775
|
-
|
|
10776
|
-
var
|
|
10777
|
-
function
|
|
10778
|
-
return
|
|
10779
|
-
}
|
|
10780
|
-
var
|
|
10781
|
-
|
|
10782
|
-
var
|
|
10783
|
-
if (null ===
|
|
10784
|
-
var
|
|
10785
|
-
|
|
10786
|
-
} else
|
|
10787
|
-
|
|
10788
|
-
function() {
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
if (isEqual(currentSelection, nextSnapshot))
|
|
10797
|
-
return memoizedSelection = currentSelection;
|
|
10798
|
-
}
|
|
10799
|
-
return memoizedSelection = nextSnapshot;
|
|
10800
|
-
}
|
|
10801
|
-
currentSelection = memoizedSelection;
|
|
10802
|
-
if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;
|
|
10803
|
-
var nextSelection = selector2(nextSnapshot);
|
|
10804
|
-
if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
|
|
10805
|
-
return memoizedSnapshot = nextSnapshot, currentSelection;
|
|
10806
|
-
memoizedSnapshot = nextSnapshot;
|
|
10807
|
-
return memoizedSelection = nextSelection;
|
|
10808
|
-
}
|
|
10809
|
-
var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot;
|
|
10810
|
-
return [
|
|
10811
|
-
function() {
|
|
10812
|
-
return memoizedSelector(getSnapshot());
|
|
10813
|
-
},
|
|
10814
|
-
null === maybeGetServerSnapshot ? void 0 : function() {
|
|
10815
|
-
return memoizedSelector(maybeGetServerSnapshot());
|
|
10765
|
+
var hasRequiredWithSelector_production_min;
|
|
10766
|
+
function requireWithSelector_production_min() {
|
|
10767
|
+
if (hasRequiredWithSelector_production_min) return withSelector_production_min;
|
|
10768
|
+
hasRequiredWithSelector_production_min = 1;
|
|
10769
|
+
var h2 = React2__default, n2 = requireShim();
|
|
10770
|
+
function p2(a2, b2) {
|
|
10771
|
+
return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
|
|
10772
|
+
}
|
|
10773
|
+
var q2 = "function" === typeof Object.is ? Object.is : p2, r2 = n2.useSyncExternalStore, t2 = h2.useRef, u2 = h2.useEffect, v2 = h2.useMemo, w2 = h2.useDebugValue;
|
|
10774
|
+
withSelector_production_min.useSyncExternalStoreWithSelector = function(a2, b2, e2, l2, g2) {
|
|
10775
|
+
var c2 = t2(null);
|
|
10776
|
+
if (null === c2.current) {
|
|
10777
|
+
var f2 = { hasValue: false, value: null };
|
|
10778
|
+
c2.current = f2;
|
|
10779
|
+
} else f2 = c2.current;
|
|
10780
|
+
c2 = v2(function() {
|
|
10781
|
+
function a3(a4) {
|
|
10782
|
+
if (!c3) {
|
|
10783
|
+
c3 = true;
|
|
10784
|
+
d3 = a4;
|
|
10785
|
+
a4 = l2(a4);
|
|
10786
|
+
if (void 0 !== g2 && f2.hasValue) {
|
|
10787
|
+
var b3 = f2.value;
|
|
10788
|
+
if (g2(b3, a4)) return k2 = b3;
|
|
10816
10789
|
}
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
[
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
|
|
10790
|
+
return k2 = a4;
|
|
10791
|
+
}
|
|
10792
|
+
b3 = k2;
|
|
10793
|
+
if (q2(d3, a4)) return b3;
|
|
10794
|
+
var e3 = l2(a4);
|
|
10795
|
+
if (void 0 !== g2 && g2(b3, e3)) return b3;
|
|
10796
|
+
d3 = a4;
|
|
10797
|
+
return k2 = e3;
|
|
10798
|
+
}
|
|
10799
|
+
var c3 = false, d3, k2, m2 = void 0 === e2 ? null : e2;
|
|
10800
|
+
return [function() {
|
|
10801
|
+
return a3(b2());
|
|
10802
|
+
}, null === m2 ? void 0 : function() {
|
|
10803
|
+
return a3(m2());
|
|
10804
|
+
}];
|
|
10805
|
+
}, [b2, e2, l2, g2]);
|
|
10806
|
+
var d2 = r2(a2, c2[0], c2[1]);
|
|
10807
|
+
u2(function() {
|
|
10808
|
+
f2.hasValue = true;
|
|
10809
|
+
f2.value = d2;
|
|
10810
|
+
}, [d2]);
|
|
10811
|
+
w2(d2);
|
|
10812
|
+
return d2;
|
|
10813
|
+
};
|
|
10814
|
+
return withSelector_production_min;
|
|
10833
10815
|
}
|
|
10834
10816
|
var hasRequiredWithSelector;
|
|
10835
10817
|
function requireWithSelector() {
|
|
10836
10818
|
if (hasRequiredWithSelector) return withSelector.exports;
|
|
10837
10819
|
hasRequiredWithSelector = 1;
|
|
10838
10820
|
{
|
|
10839
|
-
withSelector.exports =
|
|
10821
|
+
withSelector.exports = requireWithSelector_production_min();
|
|
10840
10822
|
}
|
|
10841
10823
|
return withSelector.exports;
|
|
10842
10824
|
}
|
|
@@ -10902,7 +10884,8 @@ function shallow$1(objA, objB) {
|
|
|
10902
10884
|
return false;
|
|
10903
10885
|
}
|
|
10904
10886
|
if (objA instanceof Map && objB instanceof Map) {
|
|
10905
|
-
if (objA.size !== objB.size)
|
|
10887
|
+
if (objA.size !== objB.size)
|
|
10888
|
+
return false;
|
|
10906
10889
|
for (const [key, value] of objA) {
|
|
10907
10890
|
if (!Object.is(value, objB.get(key))) {
|
|
10908
10891
|
return false;
|
|
@@ -10911,7 +10894,8 @@ function shallow$1(objA, objB) {
|
|
|
10911
10894
|
return true;
|
|
10912
10895
|
}
|
|
10913
10896
|
if (objA instanceof Set && objB instanceof Set) {
|
|
10914
|
-
if (objA.size !== objB.size)
|
|
10897
|
+
if (objA.size !== objB.size)
|
|
10898
|
+
return false;
|
|
10915
10899
|
for (const value of objA) {
|
|
10916
10900
|
if (!objB.has(value)) {
|
|
10917
10901
|
return false;
|
|
@@ -10923,8 +10907,8 @@ function shallow$1(objA, objB) {
|
|
|
10923
10907
|
if (keysA.length !== Object.keys(objB).length) {
|
|
10924
10908
|
return false;
|
|
10925
10909
|
}
|
|
10926
|
-
for (
|
|
10927
|
-
if (!Object.prototype.hasOwnProperty.call(objB,
|
|
10910
|
+
for (let i2 = 0; i2 < keysA.length; i2++) {
|
|
10911
|
+
if (!Object.prototype.hasOwnProperty.call(objB, keysA[i2]) || !Object.is(objA[keysA[i2]], objB[keysA[i2]])) {
|
|
10928
10912
|
return false;
|
|
10929
10913
|
}
|
|
10930
10914
|
}
|
|
@@ -106230,7 +106214,7 @@ const browserExt = {
|
|
|
106230
106214
|
},
|
|
106231
106215
|
test: () => true,
|
|
106232
106216
|
load: async () => {
|
|
106233
|
-
await import("./browserAll-
|
|
106217
|
+
await import("./browserAll-BB02N7at.js");
|
|
106234
106218
|
}
|
|
106235
106219
|
};
|
|
106236
106220
|
const webworkerExt = {
|
|
@@ -106241,7 +106225,7 @@ const webworkerExt = {
|
|
|
106241
106225
|
},
|
|
106242
106226
|
test: () => typeof self !== "undefined" && self.WorkerGlobalScope !== void 0,
|
|
106243
106227
|
load: async () => {
|
|
106244
|
-
await import("./webworkerAll-
|
|
106228
|
+
await import("./webworkerAll-CQOqrjDQ.js");
|
|
106245
106229
|
}
|
|
106246
106230
|
};
|
|
106247
106231
|
class ObservablePoint {
|
|
@@ -154423,346 +154407,6 @@ const CardLayout = ({
|
|
|
154423
154407
|
};
|
|
154424
154408
|
const ISO_TILE_WIDTH$1 = 64;
|
|
154425
154409
|
const ISO_TILE_HEIGHT$1 = 32;
|
|
154426
|
-
function getPackagePositions$1(count2, footprintWidth, footprintHeight) {
|
|
154427
|
-
const positions = [];
|
|
154428
|
-
const spacing = 0.18;
|
|
154429
|
-
const yOffset = -footprintHeight * 0.15;
|
|
154430
|
-
if (count2 === 2) {
|
|
154431
|
-
positions.push(
|
|
154432
|
-
{ x: -footprintWidth * spacing, y: yOffset },
|
|
154433
|
-
{ x: footprintWidth * spacing, y: yOffset }
|
|
154434
|
-
);
|
|
154435
|
-
} else if (count2 === 3) {
|
|
154436
|
-
positions.push(
|
|
154437
|
-
{
|
|
154438
|
-
x: -footprintWidth * spacing * 0.8,
|
|
154439
|
-
y: -footprintHeight * spacing * 0.8 + yOffset
|
|
154440
|
-
},
|
|
154441
|
-
{
|
|
154442
|
-
x: footprintWidth * spacing * 0.8,
|
|
154443
|
-
y: -footprintHeight * spacing * 0.8 + yOffset
|
|
154444
|
-
},
|
|
154445
|
-
{ x: 0, y: footprintHeight * spacing * 1 + yOffset }
|
|
154446
|
-
);
|
|
154447
|
-
} else if (count2 === 4) {
|
|
154448
|
-
positions.push(
|
|
154449
|
-
{ x: 0, y: -footprintHeight * spacing + yOffset },
|
|
154450
|
-
{ x: -footprintWidth * spacing, y: yOffset },
|
|
154451
|
-
{ x: footprintWidth * spacing, y: yOffset },
|
|
154452
|
-
{ x: 0, y: footprintHeight * spacing + yOffset }
|
|
154453
|
-
);
|
|
154454
|
-
} else {
|
|
154455
|
-
const cols = Math.ceil(Math.sqrt(count2));
|
|
154456
|
-
const rows = Math.ceil(count2 / cols);
|
|
154457
|
-
const cellWidth = footprintWidth * 0.7 / cols;
|
|
154458
|
-
const cellHeight = footprintHeight * 0.7 / rows;
|
|
154459
|
-
for (let i2 = 0; i2 < count2; i2++) {
|
|
154460
|
-
const row2 = Math.floor(i2 / cols);
|
|
154461
|
-
const col = i2 % cols;
|
|
154462
|
-
const x2 = (col - (cols - 1) / 2) * cellWidth;
|
|
154463
|
-
const y2 = (row2 - (rows - 1) / 2) * cellHeight;
|
|
154464
|
-
positions.push({ x: x2, y: y2 });
|
|
154465
|
-
}
|
|
154466
|
-
}
|
|
154467
|
-
return positions;
|
|
154468
|
-
}
|
|
154469
|
-
const RepoSprite = ({
|
|
154470
|
-
size = 2,
|
|
154471
|
-
color: color2 = 13789470,
|
|
154472
|
-
packages,
|
|
154473
|
-
files,
|
|
154474
|
-
stars,
|
|
154475
|
-
collaborators,
|
|
154476
|
-
license,
|
|
154477
|
-
label,
|
|
154478
|
-
owner,
|
|
154479
|
-
language: language2,
|
|
154480
|
-
variant = "default",
|
|
154481
|
-
cardTheme = "blue",
|
|
154482
|
-
width = 200,
|
|
154483
|
-
height = 200,
|
|
154484
|
-
backgroundColor,
|
|
154485
|
-
showBoundary = true,
|
|
154486
|
-
boundaryColor = 16776960,
|
|
154487
|
-
debug = false,
|
|
154488
|
-
onPackageHover,
|
|
154489
|
-
onPackageHoverEnd
|
|
154490
|
-
}) => {
|
|
154491
|
-
const { theme: theme2 } = useTheme();
|
|
154492
|
-
const containerRef = useRef(null);
|
|
154493
|
-
const appRef = useRef(null);
|
|
154494
|
-
useEffect(() => {
|
|
154495
|
-
if (!containerRef.current) return;
|
|
154496
|
-
const init2 = async () => {
|
|
154497
|
-
var _a;
|
|
154498
|
-
const app = new Application();
|
|
154499
|
-
await app.init({
|
|
154500
|
-
width,
|
|
154501
|
-
height,
|
|
154502
|
-
backgroundAlpha: backgroundColor !== void 0 ? 1 : 0,
|
|
154503
|
-
backgroundColor: backgroundColor ?? 0,
|
|
154504
|
-
antialias: true,
|
|
154505
|
-
resolution: 2,
|
|
154506
|
-
autoDensity: true
|
|
154507
|
-
});
|
|
154508
|
-
(_a = containerRef.current) == null ? void 0 : _a.appendChild(app.canvas);
|
|
154509
|
-
appRef.current = app;
|
|
154510
|
-
const boundarySize = 4 * size;
|
|
154511
|
-
const boundaryWidth = boundarySize * ISO_TILE_WIDTH$1;
|
|
154512
|
-
const boundaryHeight = boundarySize * ISO_TILE_HEIGHT$1;
|
|
154513
|
-
const padding = 0.9;
|
|
154514
|
-
const scaleX = width * padding / boundaryWidth;
|
|
154515
|
-
const scaleY = height * padding / boundaryHeight;
|
|
154516
|
-
const scale = Math.min(scaleX, scaleY);
|
|
154517
|
-
const mainContainer = new Container();
|
|
154518
|
-
mainContainer.x = width / 2;
|
|
154519
|
-
mainContainer.y = height / 2;
|
|
154520
|
-
mainContainer.scale.set(scale);
|
|
154521
|
-
app.stage.addChild(mainContainer);
|
|
154522
|
-
if (showBoundary) {
|
|
154523
|
-
const boundary = new Graphics();
|
|
154524
|
-
boundary.strokeStyle = { width: 2, color: boundaryColor };
|
|
154525
|
-
boundary.fillStyle = { color: boundaryColor, alpha: 0.1 };
|
|
154526
|
-
boundary.beginPath();
|
|
154527
|
-
boundary.moveTo(0, -boundaryHeight / 2);
|
|
154528
|
-
boundary.lineTo(boundaryWidth / 2, 0);
|
|
154529
|
-
boundary.lineTo(0, boundaryHeight / 2);
|
|
154530
|
-
boundary.lineTo(-boundaryWidth / 2, 0);
|
|
154531
|
-
boundary.closePath();
|
|
154532
|
-
boundary.fill();
|
|
154533
|
-
boundary.stroke();
|
|
154534
|
-
mainContainer.addChild(boundary);
|
|
154535
|
-
}
|
|
154536
|
-
const ground = license ? generateLicenseGround(license, size) : generateNeutralGround(size);
|
|
154537
|
-
mainContainer.addChild(ground);
|
|
154538
|
-
if (packages && packages.length > 1) {
|
|
154539
|
-
const positions = getPackagePositions$1(
|
|
154540
|
-
packages.length,
|
|
154541
|
-
boundaryWidth / 2,
|
|
154542
|
-
boundaryHeight / 2
|
|
154543
|
-
);
|
|
154544
|
-
for (let i2 = 0; i2 < packages.length; i2++) {
|
|
154545
|
-
const pkg = packages[i2];
|
|
154546
|
-
const pos = positions[i2] || { x: 0, y: 0 };
|
|
154547
|
-
const pkgColor = pkg.color ? parseColor$1(pkg.color) : parseColor$1(color2);
|
|
154548
|
-
const pkgSize = (pkg.size || 1) * size * 0.4;
|
|
154549
|
-
const buildingGraphics = generateBuildingSprite({
|
|
154550
|
-
size: pkgSize,
|
|
154551
|
-
color: pkgColor
|
|
154552
|
-
});
|
|
154553
|
-
buildingGraphics.x = pos.x;
|
|
154554
|
-
buildingGraphics.y = pos.y;
|
|
154555
|
-
buildingGraphics.eventMode = "static";
|
|
154556
|
-
buildingGraphics.cursor = "pointer";
|
|
154557
|
-
const originalTint = buildingGraphics.tint;
|
|
154558
|
-
const packageName = pkg.name;
|
|
154559
|
-
buildingGraphics.on("pointerover", () => {
|
|
154560
|
-
buildingGraphics.tint = 8965375;
|
|
154561
|
-
onPackageHover == null ? void 0 : onPackageHover(packageName);
|
|
154562
|
-
});
|
|
154563
|
-
buildingGraphics.on("pointerout", () => {
|
|
154564
|
-
buildingGraphics.tint = originalTint;
|
|
154565
|
-
onPackageHoverEnd == null ? void 0 : onPackageHoverEnd(packageName);
|
|
154566
|
-
});
|
|
154567
|
-
mainContainer.addChild(buildingGraphics);
|
|
154568
|
-
}
|
|
154569
|
-
} else {
|
|
154570
|
-
const parsedColor = parseColor$1(color2);
|
|
154571
|
-
const buildingGraphics = generateBuildingSprite({
|
|
154572
|
-
size,
|
|
154573
|
-
color: parsedColor
|
|
154574
|
-
});
|
|
154575
|
-
mainContainer.addChild(buildingGraphics);
|
|
154576
|
-
}
|
|
154577
|
-
if (license) {
|
|
154578
|
-
const licenseSign = generateLicenseSign(license, {
|
|
154579
|
-
name: label || "",
|
|
154580
|
-
sizeMultiplier: size
|
|
154581
|
-
});
|
|
154582
|
-
const footprintHeight = boundaryHeight / 2;
|
|
154583
|
-
licenseSign.y = footprintHeight * 0.75;
|
|
154584
|
-
mainContainer.addChild(licenseSign);
|
|
154585
|
-
}
|
|
154586
|
-
if (stars && stars > 0) {
|
|
154587
|
-
const tier = getStarTier(stars);
|
|
154588
|
-
const scaleFactor = getStarScaleFactor(stars);
|
|
154589
|
-
let starDecoration = null;
|
|
154590
|
-
if (tier) {
|
|
154591
|
-
const decorationColor = tier.color;
|
|
154592
|
-
if (tier.decorationType === "flag") {
|
|
154593
|
-
starDecoration = generateFlagSprite(decorationColor);
|
|
154594
|
-
} else if (tier.decorationType === "trophy") {
|
|
154595
|
-
starDecoration = generateTrophySprite(decorationColor);
|
|
154596
|
-
} else if (tier.decorationType === "statue") {
|
|
154597
|
-
starDecoration = generateStatueSprite(decorationColor);
|
|
154598
|
-
}
|
|
154599
|
-
}
|
|
154600
|
-
if (starDecoration) {
|
|
154601
|
-
const dim = { w: 8, h: 12 };
|
|
154602
|
-
starDecoration.pivot.set(dim.w, dim.h);
|
|
154603
|
-
starDecoration.scale.set(1.5 * scaleFactor);
|
|
154604
|
-
starDecoration.x = -boundaryWidth / 4;
|
|
154605
|
-
starDecoration.y = 0;
|
|
154606
|
-
mainContainer.addChild(starDecoration);
|
|
154607
|
-
}
|
|
154608
|
-
}
|
|
154609
|
-
if (collaborators && collaborators > 0) {
|
|
154610
|
-
const tier = getCollaboratorTier(collaborators);
|
|
154611
|
-
const scaleFactor = getCollaboratorScaleFactor(collaborators);
|
|
154612
|
-
let collabDecoration = null;
|
|
154613
|
-
if (tier) {
|
|
154614
|
-
const decorationColor = tier.color;
|
|
154615
|
-
if (tier.decorationType === "bench") {
|
|
154616
|
-
collabDecoration = generateBenchSprite(decorationColor);
|
|
154617
|
-
} else if (tier.decorationType === "pavilion") {
|
|
154618
|
-
collabDecoration = generatePavilionSprite(decorationColor);
|
|
154619
|
-
} else if (tier.decorationType === "gazebo") {
|
|
154620
|
-
collabDecoration = generateGazeboSprite(decorationColor);
|
|
154621
|
-
} else if (tier.decorationType === "bandstand") {
|
|
154622
|
-
collabDecoration = generateBandstandSprite(decorationColor);
|
|
154623
|
-
}
|
|
154624
|
-
}
|
|
154625
|
-
if (collabDecoration) {
|
|
154626
|
-
const dim = { h: 12 };
|
|
154627
|
-
collabDecoration.pivot.set(0, dim.h);
|
|
154628
|
-
collabDecoration.scale.set(1.5 * scaleFactor);
|
|
154629
|
-
collabDecoration.x = boundaryWidth / 4;
|
|
154630
|
-
collabDecoration.y = 0;
|
|
154631
|
-
mainContainer.addChild(collabDecoration);
|
|
154632
|
-
}
|
|
154633
|
-
}
|
|
154634
|
-
if (debug) {
|
|
154635
|
-
const { Graphics: Graphics2 } = await Promise.resolve().then(() => index);
|
|
154636
|
-
const debugRect = new Graphics2();
|
|
154637
|
-
debugRect.rect(-width / 2, -height / 2, width, height);
|
|
154638
|
-
debugRect.stroke({ width: 1, color: 16711680 });
|
|
154639
|
-
mainContainer.addChild(debugRect);
|
|
154640
|
-
}
|
|
154641
|
-
};
|
|
154642
|
-
init2();
|
|
154643
|
-
return () => {
|
|
154644
|
-
if (appRef.current) {
|
|
154645
|
-
appRef.current.destroy(true, { children: true });
|
|
154646
|
-
appRef.current = null;
|
|
154647
|
-
}
|
|
154648
|
-
};
|
|
154649
|
-
}, [
|
|
154650
|
-
size,
|
|
154651
|
-
color2,
|
|
154652
|
-
packages,
|
|
154653
|
-
files,
|
|
154654
|
-
stars,
|
|
154655
|
-
collaborators,
|
|
154656
|
-
license,
|
|
154657
|
-
label,
|
|
154658
|
-
variant,
|
|
154659
|
-
width,
|
|
154660
|
-
height,
|
|
154661
|
-
backgroundColor,
|
|
154662
|
-
showBoundary,
|
|
154663
|
-
boundaryColor,
|
|
154664
|
-
debug,
|
|
154665
|
-
onPackageHover,
|
|
154666
|
-
onPackageHoverEnd
|
|
154667
|
-
]);
|
|
154668
|
-
if (variant === "card") {
|
|
154669
|
-
return /* @__PURE__ */ jsx(
|
|
154670
|
-
CardLayout,
|
|
154671
|
-
{
|
|
154672
|
-
color: color2,
|
|
154673
|
-
owner,
|
|
154674
|
-
stars,
|
|
154675
|
-
label,
|
|
154676
|
-
files,
|
|
154677
|
-
language: language2,
|
|
154678
|
-
license,
|
|
154679
|
-
packages,
|
|
154680
|
-
children: /* @__PURE__ */ jsx(
|
|
154681
|
-
"div",
|
|
154682
|
-
{
|
|
154683
|
-
ref: containerRef,
|
|
154684
|
-
style: {
|
|
154685
|
-
width: "100%",
|
|
154686
|
-
height: "100%",
|
|
154687
|
-
display: "flex",
|
|
154688
|
-
alignItems: "center",
|
|
154689
|
-
justifyContent: "center"
|
|
154690
|
-
}
|
|
154691
|
-
}
|
|
154692
|
-
)
|
|
154693
|
-
}
|
|
154694
|
-
);
|
|
154695
|
-
}
|
|
154696
|
-
return /* @__PURE__ */ jsx(
|
|
154697
|
-
"div",
|
|
154698
|
-
{
|
|
154699
|
-
ref: containerRef,
|
|
154700
|
-
style: {
|
|
154701
|
-
width,
|
|
154702
|
-
height,
|
|
154703
|
-
display: "inline-block"
|
|
154704
|
-
}
|
|
154705
|
-
}
|
|
154706
|
-
);
|
|
154707
|
-
};
|
|
154708
|
-
function transformPackages(packages) {
|
|
154709
|
-
if (!packages || packages.length === 0) {
|
|
154710
|
-
return void 0;
|
|
154711
|
-
}
|
|
154712
|
-
return packages.map((pkg) => {
|
|
154713
|
-
var _a;
|
|
154714
|
-
return {
|
|
154715
|
-
name: ((_a = pkg.packageData) == null ? void 0 : _a.name) || pkg.name,
|
|
154716
|
-
size: pkg.size
|
|
154717
|
-
// Could derive color from package type or name in the future
|
|
154718
|
-
};
|
|
154719
|
-
});
|
|
154720
|
-
}
|
|
154721
|
-
const RepoCard = ({
|
|
154722
|
-
repository,
|
|
154723
|
-
variant = "card",
|
|
154724
|
-
cardTheme = "blue",
|
|
154725
|
-
width = 200,
|
|
154726
|
-
height = 280,
|
|
154727
|
-
backgroundColor,
|
|
154728
|
-
showBoundary = false,
|
|
154729
|
-
boundaryColor,
|
|
154730
|
-
debug = false,
|
|
154731
|
-
sizeOverride,
|
|
154732
|
-
colorOverride,
|
|
154733
|
-
onPackageHover,
|
|
154734
|
-
onPackageHoverEnd
|
|
154735
|
-
}) => {
|
|
154736
|
-
var _a, _b, _c, _d, _e2, _f;
|
|
154737
|
-
const size = sizeOverride ?? calculateRepositorySize(repository.metrics);
|
|
154738
|
-
const color2 = colorOverride ?? getRepositoryColor(repository);
|
|
154739
|
-
const packages = transformPackages(repository.packages);
|
|
154740
|
-
const spriteProps = {
|
|
154741
|
-
size,
|
|
154742
|
-
color: color2,
|
|
154743
|
-
packages,
|
|
154744
|
-
files: (_a = repository.metrics) == null ? void 0 : _a.fileCount,
|
|
154745
|
-
stars: (_b = repository.github) == null ? void 0 : _b.stars,
|
|
154746
|
-
collaborators: (_c = repository.metrics) == null ? void 0 : _c.contributors,
|
|
154747
|
-
license: (_d = repository.github) == null ? void 0 : _d.license,
|
|
154748
|
-
label: repository.name,
|
|
154749
|
-
owner: (_e2 = repository.github) == null ? void 0 : _e2.owner,
|
|
154750
|
-
language: (_f = repository.github) == null ? void 0 : _f.primaryLanguage,
|
|
154751
|
-
variant,
|
|
154752
|
-
cardTheme,
|
|
154753
|
-
width,
|
|
154754
|
-
height,
|
|
154755
|
-
backgroundColor,
|
|
154756
|
-
showBoundary,
|
|
154757
|
-
boundaryColor,
|
|
154758
|
-
debug,
|
|
154759
|
-
onPackageHover,
|
|
154760
|
-
onPackageHoverEnd
|
|
154761
|
-
};
|
|
154762
|
-
return /* @__PURE__ */ jsx(RepoSprite, { ...spriteProps });
|
|
154763
|
-
};
|
|
154764
|
-
const ISO_TILE_WIDTH = 64;
|
|
154765
|
-
const ISO_TILE_HEIGHT = 32;
|
|
154766
154410
|
let sharedApp = null;
|
|
154767
154411
|
let sharedAppPromise = null;
|
|
154768
154412
|
let isAppDestroyed = false;
|
|
@@ -154772,7 +154416,7 @@ function parseColor(color2) {
|
|
|
154772
154416
|
if (typeof color2 === "number") return color2;
|
|
154773
154417
|
return parseInt(color2.replace("#", ""), 16);
|
|
154774
154418
|
}
|
|
154775
|
-
function getPackagePositions(count2, footprintWidth, footprintHeight) {
|
|
154419
|
+
function getPackagePositions$1(count2, footprintWidth, footprintHeight) {
|
|
154776
154420
|
const positions = [];
|
|
154777
154421
|
const spacing = 0.18;
|
|
154778
154422
|
const yOffset = -footprintHeight * 0.15;
|
|
@@ -154863,8 +154507,8 @@ async function renderSpriteInternal(options) {
|
|
|
154863
154507
|
const app = await getSharedApp(width, height);
|
|
154864
154508
|
app.stage.removeChildren();
|
|
154865
154509
|
const boundarySize = 4 * size;
|
|
154866
|
-
const boundaryWidth = boundarySize * ISO_TILE_WIDTH;
|
|
154867
|
-
const boundaryHeight = boundarySize * ISO_TILE_HEIGHT;
|
|
154510
|
+
const boundaryWidth = boundarySize * ISO_TILE_WIDTH$1;
|
|
154511
|
+
const boundaryHeight = boundarySize * ISO_TILE_HEIGHT$1;
|
|
154868
154512
|
const padding = 0.9;
|
|
154869
154513
|
const scaleX = width * padding / boundaryWidth;
|
|
154870
154514
|
const scaleY = height * padding / boundaryHeight;
|
|
@@ -154891,7 +154535,7 @@ async function renderSpriteInternal(options) {
|
|
|
154891
154535
|
const ground = license ? generateLicenseGround(license, size) : generateNeutralGround(size);
|
|
154892
154536
|
mainContainer.addChild(ground);
|
|
154893
154537
|
if (packages && packages.length > 1) {
|
|
154894
|
-
const positions = getPackagePositions(
|
|
154538
|
+
const positions = getPackagePositions$1(
|
|
154895
154539
|
packages.length,
|
|
154896
154540
|
boundaryWidth / 2,
|
|
154897
154541
|
boundaryHeight / 2
|
|
@@ -155041,35 +154685,52 @@ function destroySharedApp() {
|
|
|
155041
154685
|
isAppDestroyed = true;
|
|
155042
154686
|
}
|
|
155043
154687
|
}
|
|
155044
|
-
|
|
155045
|
-
|
|
155046
|
-
|
|
155047
|
-
|
|
155048
|
-
|
|
155049
|
-
|
|
155050
|
-
|
|
154688
|
+
function formatRelativeTime(dateString) {
|
|
154689
|
+
if (!dateString) return "Never opened";
|
|
154690
|
+
const date = new Date(dateString);
|
|
154691
|
+
const now2 = /* @__PURE__ */ new Date();
|
|
154692
|
+
const diffMs = now2.getTime() - date.getTime();
|
|
154693
|
+
const diffMins = Math.floor(diffMs / 6e4);
|
|
154694
|
+
const diffHours = Math.floor(diffMs / 36e5);
|
|
154695
|
+
const diffDays = Math.floor(diffMs / 864e5);
|
|
154696
|
+
if (diffMins < 1) return "Just now";
|
|
154697
|
+
if (diffMins < 60) return `${diffMins}m ago`;
|
|
154698
|
+
if (diffHours < 24) return `${diffHours}h ago`;
|
|
154699
|
+
if (diffDays < 7) return `${diffDays}d ago`;
|
|
154700
|
+
if (diffDays < 30) return `${Math.floor(diffDays / 7)}w ago`;
|
|
154701
|
+
return date.toLocaleDateString();
|
|
154702
|
+
}
|
|
154703
|
+
const LocalProjectCard = ({
|
|
154704
|
+
entry,
|
|
154705
|
+
width = 220,
|
|
154706
|
+
height = 300,
|
|
154707
|
+
isSelected = false,
|
|
154708
|
+
onClick,
|
|
154709
|
+
onOpen,
|
|
154710
|
+
onRemove: onRemove2
|
|
155051
154711
|
}) => {
|
|
155052
|
-
var _a, _b, _c, _d, _e2
|
|
154712
|
+
var _a, _b, _c, _d, _e2;
|
|
154713
|
+
const { theme: theme2 } = useTheme();
|
|
155053
154714
|
const [spriteDataUrl, setSpriteDataUrl] = useState(null);
|
|
155054
154715
|
const [isLoading, setIsLoading] = useState(true);
|
|
155055
|
-
const
|
|
155056
|
-
const color2 = getRepositoryColor(
|
|
154716
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
154717
|
+
const color2 = getRepositoryColor(entry);
|
|
155057
154718
|
const colors = generateCardColors(color2);
|
|
154719
|
+
const size = entry.viewCount ? Math.min(entry.viewCount + 1, 5) : 2;
|
|
155058
154720
|
useEffect(() => {
|
|
155059
154721
|
let mounted = true;
|
|
155060
154722
|
async function renderSprite() {
|
|
155061
|
-
var _a2, _b2
|
|
154723
|
+
var _a2, _b2;
|
|
155062
154724
|
try {
|
|
155063
154725
|
const dataUrl = await renderSpriteToDataUrlCached({
|
|
155064
154726
|
size,
|
|
155065
154727
|
color: color2,
|
|
155066
|
-
|
|
155067
|
-
|
|
155068
|
-
|
|
155069
|
-
|
|
155070
|
-
|
|
155071
|
-
|
|
155072
|
-
height: spriteSize
|
|
154728
|
+
stars: (_a2 = entry.github) == null ? void 0 : _a2.stars,
|
|
154729
|
+
collaborators: void 0,
|
|
154730
|
+
license: (_b2 = entry.github) == null ? void 0 : _b2.license,
|
|
154731
|
+
label: entry.name,
|
|
154732
|
+
width: 140,
|
|
154733
|
+
height: 140
|
|
155073
154734
|
});
|
|
155074
154735
|
if (mounted) {
|
|
155075
154736
|
setSpriteDataUrl(dataUrl);
|
|
@@ -155086,23 +154747,22 @@ const RepoCardStatic = ({
|
|
|
155086
154747
|
return () => {
|
|
155087
154748
|
mounted = false;
|
|
155088
154749
|
};
|
|
155089
|
-
}, [size, color2,
|
|
154750
|
+
}, [size, color2, entry]);
|
|
155090
154751
|
const spriteContent = isLoading ? /* @__PURE__ */ jsx(
|
|
155091
154752
|
"div",
|
|
155092
154753
|
{
|
|
155093
154754
|
style: {
|
|
155094
|
-
width:
|
|
155095
|
-
height:
|
|
154755
|
+
width: 70,
|
|
154756
|
+
height: 70,
|
|
155096
154757
|
backgroundColor: `${colors.cardHighlight}40`,
|
|
155097
|
-
borderRadius: "8px"
|
|
155098
|
-
animation: "pulse 1.5s ease-in-out infinite"
|
|
154758
|
+
borderRadius: "8px"
|
|
155099
154759
|
}
|
|
155100
154760
|
}
|
|
155101
154761
|
) : spriteDataUrl ? /* @__PURE__ */ jsx(
|
|
155102
154762
|
"img",
|
|
155103
154763
|
{
|
|
155104
154764
|
src: spriteDataUrl,
|
|
155105
|
-
alt:
|
|
154765
|
+
alt: entry.name,
|
|
155106
154766
|
style: {
|
|
155107
154767
|
maxWidth: "100%",
|
|
155108
154768
|
maxHeight: "100%",
|
|
@@ -155113,29 +154773,121 @@ const RepoCardStatic = ({
|
|
|
155113
154773
|
"div",
|
|
155114
154774
|
{
|
|
155115
154775
|
style: {
|
|
155116
|
-
width:
|
|
155117
|
-
height:
|
|
154776
|
+
width: 70,
|
|
154777
|
+
height: 70,
|
|
155118
154778
|
backgroundColor: `#${color2.toString(16).padStart(6, "0")}`,
|
|
155119
154779
|
borderRadius: "8px",
|
|
155120
154780
|
opacity: 0.5
|
|
155121
154781
|
}
|
|
155122
154782
|
}
|
|
155123
154783
|
);
|
|
155124
|
-
|
|
155125
|
-
|
|
154784
|
+
const description = ((_a = entry.github) == null ? void 0 : _a.description) || formatRelativeTime(entry.lastOpenedAt);
|
|
154785
|
+
return /* @__PURE__ */ jsxs(
|
|
154786
|
+
"div",
|
|
155126
154787
|
{
|
|
155127
|
-
|
|
155128
|
-
|
|
155129
|
-
|
|
155130
|
-
|
|
155131
|
-
|
|
155132
|
-
|
|
155133
|
-
|
|
155134
|
-
|
|
155135
|
-
|
|
155136
|
-
|
|
154788
|
+
style: {
|
|
154789
|
+
width,
|
|
154790
|
+
height,
|
|
154791
|
+
cursor: "pointer",
|
|
154792
|
+
transition: "transform 0.15s ease, box-shadow 0.15s ease",
|
|
154793
|
+
transform: isHovered ? "translateY(-4px)" : "none",
|
|
154794
|
+
boxShadow: isSelected ? `0 0 0 3px ${theme2.colors.primary}` : isHovered ? "0 8px 24px rgba(0,0,0,0.3)" : "0 4px 12px rgba(0,0,0,0.2)",
|
|
154795
|
+
borderRadius: "4px",
|
|
154796
|
+
overflow: "hidden"
|
|
154797
|
+
},
|
|
154798
|
+
onClick: () => onClick == null ? void 0 : onClick(entry),
|
|
154799
|
+
onMouseEnter: () => setIsHovered(true),
|
|
154800
|
+
onMouseLeave: () => setIsHovered(false),
|
|
154801
|
+
children: [
|
|
154802
|
+
/* @__PURE__ */ jsx(
|
|
154803
|
+
CardLayout,
|
|
154804
|
+
{
|
|
154805
|
+
color: color2,
|
|
154806
|
+
owner: (_b = entry.github) == null ? void 0 : _b.owner,
|
|
154807
|
+
stars: (_c = entry.github) == null ? void 0 : _c.stars,
|
|
154808
|
+
label: entry.name,
|
|
154809
|
+
description,
|
|
154810
|
+
files: entry.viewCount || void 0,
|
|
154811
|
+
language: (_d = entry.github) == null ? void 0 : _d.primaryLanguage,
|
|
154812
|
+
license: (_e2 = entry.github) == null ? void 0 : _e2.license,
|
|
154813
|
+
children: spriteContent
|
|
154814
|
+
}
|
|
154815
|
+
),
|
|
154816
|
+
isHovered && (onOpen || onRemove2) && /* @__PURE__ */ jsxs(
|
|
154817
|
+
"div",
|
|
154818
|
+
{
|
|
154819
|
+
style: {
|
|
154820
|
+
position: "absolute",
|
|
154821
|
+
bottom: "32px",
|
|
154822
|
+
left: "50%",
|
|
154823
|
+
transform: "translateX(-50%)",
|
|
154824
|
+
display: "flex",
|
|
154825
|
+
gap: "8px",
|
|
154826
|
+
zIndex: 10
|
|
154827
|
+
},
|
|
154828
|
+
children: [
|
|
154829
|
+
onOpen && /* @__PURE__ */ jsx(
|
|
154830
|
+
"button",
|
|
154831
|
+
{
|
|
154832
|
+
onClick: (e2) => {
|
|
154833
|
+
e2.stopPropagation();
|
|
154834
|
+
onOpen(entry);
|
|
154835
|
+
},
|
|
154836
|
+
style: {
|
|
154837
|
+
padding: "6px 12px",
|
|
154838
|
+
backgroundColor: theme2.colors.primary,
|
|
154839
|
+
color: "#ffffff",
|
|
154840
|
+
border: "none",
|
|
154841
|
+
borderRadius: "4px",
|
|
154842
|
+
fontSize: theme2.fontSizes[1],
|
|
154843
|
+
fontFamily: theme2.fonts.body,
|
|
154844
|
+
fontWeight: theme2.fontWeights.medium,
|
|
154845
|
+
cursor: "pointer",
|
|
154846
|
+
transition: "background-color 0.15s ease"
|
|
154847
|
+
},
|
|
154848
|
+
onMouseEnter: (e2) => {
|
|
154849
|
+
e2.currentTarget.style.backgroundColor = theme2.colors.accent;
|
|
154850
|
+
},
|
|
154851
|
+
onMouseLeave: (e2) => {
|
|
154852
|
+
e2.currentTarget.style.backgroundColor = theme2.colors.primary;
|
|
154853
|
+
},
|
|
154854
|
+
children: "Open"
|
|
154855
|
+
}
|
|
154856
|
+
),
|
|
154857
|
+
onRemove2 && /* @__PURE__ */ jsx(
|
|
154858
|
+
"button",
|
|
154859
|
+
{
|
|
154860
|
+
onClick: (e2) => {
|
|
154861
|
+
e2.stopPropagation();
|
|
154862
|
+
onRemove2(entry);
|
|
154863
|
+
},
|
|
154864
|
+
style: {
|
|
154865
|
+
padding: "6px 12px",
|
|
154866
|
+
backgroundColor: "rgba(0,0,0,0.5)",
|
|
154867
|
+
color: "#ffffff",
|
|
154868
|
+
border: `1px solid ${theme2.colors.border}`,
|
|
154869
|
+
borderRadius: "4px",
|
|
154870
|
+
fontSize: theme2.fontSizes[1],
|
|
154871
|
+
fontFamily: theme2.fonts.body,
|
|
154872
|
+
fontWeight: theme2.fontWeights.medium,
|
|
154873
|
+
cursor: "pointer",
|
|
154874
|
+
transition: "background-color 0.15s ease"
|
|
154875
|
+
},
|
|
154876
|
+
onMouseEnter: (e2) => {
|
|
154877
|
+
e2.currentTarget.style.backgroundColor = theme2.colors.error;
|
|
154878
|
+
},
|
|
154879
|
+
onMouseLeave: (e2) => {
|
|
154880
|
+
e2.currentTarget.style.backgroundColor = "rgba(0,0,0,0.5)";
|
|
154881
|
+
},
|
|
154882
|
+
children: "Remove"
|
|
154883
|
+
}
|
|
154884
|
+
)
|
|
154885
|
+
]
|
|
154886
|
+
}
|
|
154887
|
+
)
|
|
154888
|
+
]
|
|
155137
154889
|
}
|
|
155138
|
-
)
|
|
154890
|
+
);
|
|
155139
154891
|
};
|
|
155140
154892
|
const GitLogo = ({
|
|
155141
154893
|
size = 80,
|
|
@@ -155171,7 +154923,7 @@ const injectKeyframes = () => {
|
|
|
155171
154923
|
`;
|
|
155172
154924
|
document.head.appendChild(style2);
|
|
155173
154925
|
};
|
|
155174
|
-
const Speck = ({ x: x2, y: y2, size, delay }) => /* @__PURE__ */ jsx(
|
|
154926
|
+
const Speck = ({ x: x2, y: y2, size, delay, duration }) => /* @__PURE__ */ jsx(
|
|
155175
154927
|
"div",
|
|
155176
154928
|
{
|
|
155177
154929
|
style: {
|
|
@@ -155182,8 +154934,7 @@ const Speck = ({ x: x2, y: y2, size, delay }) => /* @__PURE__ */ jsx(
|
|
|
155182
154934
|
height: size,
|
|
155183
154935
|
borderRadius: "50%",
|
|
155184
154936
|
backgroundColor: "rgba(255,255,255,0.5)",
|
|
155185
|
-
animation: `twinkle ${
|
|
155186
|
-
animationDelay: `${delay}s`
|
|
154937
|
+
animation: `twinkle ${duration}s ease-in-out ${delay}s infinite`
|
|
155187
154938
|
}
|
|
155188
154939
|
}
|
|
155189
154940
|
);
|
|
@@ -155201,7 +154952,8 @@ const generateSpecks = (cols, rows) => {
|
|
|
155201
154952
|
x: baseX + jitterX,
|
|
155202
154953
|
y: baseY + jitterY,
|
|
155203
154954
|
size: 1 + Math.random() * 1.5,
|
|
155204
|
-
delay: Math.random() * 3
|
|
154955
|
+
delay: Math.random() * 3,
|
|
154956
|
+
duration: 2 + Math.random() * 2
|
|
155205
154957
|
});
|
|
155206
154958
|
}
|
|
155207
154959
|
}
|
|
@@ -155337,6 +155089,693 @@ const CardBack = ({
|
|
|
155337
155089
|
}
|
|
155338
155090
|
);
|
|
155339
155091
|
};
|
|
155092
|
+
const BOUNCE_KEYFRAMES_ID = "card-back-bounce";
|
|
155093
|
+
const injectBounceKeyframes = () => {
|
|
155094
|
+
if (typeof document === "undefined") return;
|
|
155095
|
+
if (document.getElementById(BOUNCE_KEYFRAMES_ID)) return;
|
|
155096
|
+
const style2 = document.createElement("style");
|
|
155097
|
+
style2.id = BOUNCE_KEYFRAMES_ID;
|
|
155098
|
+
style2.textContent = `
|
|
155099
|
+
@keyframes cardBounce {
|
|
155100
|
+
0%, 100% { transform: translateY(0); }
|
|
155101
|
+
50% { transform: translateY(-8px); }
|
|
155102
|
+
}
|
|
155103
|
+
`;
|
|
155104
|
+
document.head.appendChild(style2);
|
|
155105
|
+
};
|
|
155106
|
+
const LoadingCard = ({ index: index2 }) => {
|
|
155107
|
+
const delay = useMemo(() => index2 * 0.15 + Math.random() * 0.3, [index2]);
|
|
155108
|
+
const duration = useMemo(() => 1.2 + Math.random() * 0.6, []);
|
|
155109
|
+
return /* @__PURE__ */ jsx(
|
|
155110
|
+
"div",
|
|
155111
|
+
{
|
|
155112
|
+
style: {
|
|
155113
|
+
animation: `cardBounce ${duration}s ease-in-out ${delay}s infinite`
|
|
155114
|
+
},
|
|
155115
|
+
children: /* @__PURE__ */ jsx(CardBack, { width: 220, height: 300 })
|
|
155116
|
+
}
|
|
155117
|
+
);
|
|
155118
|
+
};
|
|
155119
|
+
const LoadingGrid = () => {
|
|
155120
|
+
useEffect(() => {
|
|
155121
|
+
injectBounceKeyframes();
|
|
155122
|
+
}, []);
|
|
155123
|
+
const cardCount = 6;
|
|
155124
|
+
return /* @__PURE__ */ jsx(
|
|
155125
|
+
"div",
|
|
155126
|
+
{
|
|
155127
|
+
style: {
|
|
155128
|
+
display: "grid",
|
|
155129
|
+
gridTemplateColumns: "repeat(auto-fill, minmax(220px, 1fr))",
|
|
155130
|
+
gap: "20px",
|
|
155131
|
+
justifyItems: "center"
|
|
155132
|
+
},
|
|
155133
|
+
children: Array.from({ length: cardCount }, (_2, i2) => /* @__PURE__ */ jsx(LoadingCard, { index: i2 }, i2))
|
|
155134
|
+
}
|
|
155135
|
+
);
|
|
155136
|
+
};
|
|
155137
|
+
function sortByLastOpened(projects) {
|
|
155138
|
+
return [...projects].sort((a2, b2) => {
|
|
155139
|
+
const aDate = a2.lastOpenedAt || a2.registeredAt || "";
|
|
155140
|
+
const bDate = b2.lastOpenedAt || b2.registeredAt || "";
|
|
155141
|
+
return bDate.localeCompare(aDate);
|
|
155142
|
+
});
|
|
155143
|
+
}
|
|
155144
|
+
function filterProjects(projects, query) {
|
|
155145
|
+
if (!query.trim()) return projects;
|
|
155146
|
+
const lowerQuery = query.toLowerCase();
|
|
155147
|
+
return projects.filter((project) => {
|
|
155148
|
+
var _a, _b, _c, _d, _e2, _f;
|
|
155149
|
+
return project.name.toLowerCase().includes(lowerQuery) || project.path.toLowerCase().includes(lowerQuery) || ((_b = (_a = project.github) == null ? void 0 : _a.owner) == null ? void 0 : _b.toLowerCase().includes(lowerQuery)) || ((_d = (_c = project.github) == null ? void 0 : _c.primaryLanguage) == null ? void 0 : _d.toLowerCase().includes(lowerQuery)) || ((_f = (_e2 = project.github) == null ? void 0 : _e2.description) == null ? void 0 : _f.toLowerCase().includes(lowerQuery));
|
|
155150
|
+
});
|
|
155151
|
+
}
|
|
155152
|
+
const LocalProjectGridPanelContent = ({ context: context2, actions }) => {
|
|
155153
|
+
const { theme: theme2 } = useTheme();
|
|
155154
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
155155
|
+
const [selectedProject, setSelectedProject] = useState(null);
|
|
155156
|
+
const projectsSlice = context2.localProjects;
|
|
155157
|
+
const projects = (projectsSlice == null ? void 0 : projectsSlice.data) ?? [];
|
|
155158
|
+
const isLoading = (projectsSlice == null ? void 0 : projectsSlice.loading) ?? false;
|
|
155159
|
+
const displayProjects = useMemo(() => {
|
|
155160
|
+
const filtered = filterProjects(projects, searchQuery);
|
|
155161
|
+
return sortByLastOpened(filtered);
|
|
155162
|
+
}, [projects, searchQuery]);
|
|
155163
|
+
const handleCardClick = (entry) => {
|
|
155164
|
+
var _a;
|
|
155165
|
+
setSelectedProject(entry);
|
|
155166
|
+
(_a = actions.selectProject) == null ? void 0 : _a.call(actions, entry);
|
|
155167
|
+
};
|
|
155168
|
+
const handleOpen = (entry) => {
|
|
155169
|
+
var _a;
|
|
155170
|
+
(_a = actions.openProject) == null ? void 0 : _a.call(actions, entry);
|
|
155171
|
+
};
|
|
155172
|
+
const handleRemove = (entry) => {
|
|
155173
|
+
var _a;
|
|
155174
|
+
(_a = actions.removeProject) == null ? void 0 : _a.call(actions, entry);
|
|
155175
|
+
};
|
|
155176
|
+
return /* @__PURE__ */ jsxs(
|
|
155177
|
+
"div",
|
|
155178
|
+
{
|
|
155179
|
+
style: {
|
|
155180
|
+
display: "flex",
|
|
155181
|
+
flexDirection: "column",
|
|
155182
|
+
height: "100%",
|
|
155183
|
+
backgroundColor: theme2.colors.background,
|
|
155184
|
+
overflow: "hidden"
|
|
155185
|
+
},
|
|
155186
|
+
children: [
|
|
155187
|
+
/* @__PURE__ */ jsxs(
|
|
155188
|
+
"div",
|
|
155189
|
+
{
|
|
155190
|
+
style: {
|
|
155191
|
+
padding: "12px 16px",
|
|
155192
|
+
borderBottom: `1px solid ${theme2.colors.border}`,
|
|
155193
|
+
flexShrink: 0
|
|
155194
|
+
},
|
|
155195
|
+
children: [
|
|
155196
|
+
/* @__PURE__ */ jsxs(
|
|
155197
|
+
"div",
|
|
155198
|
+
{
|
|
155199
|
+
style: {
|
|
155200
|
+
display: "flex",
|
|
155201
|
+
alignItems: "center",
|
|
155202
|
+
gap: "8px",
|
|
155203
|
+
backgroundColor: theme2.colors.backgroundSecondary,
|
|
155204
|
+
borderRadius: "6px",
|
|
155205
|
+
padding: "8px 12px",
|
|
155206
|
+
border: `1px solid ${theme2.colors.border}`
|
|
155207
|
+
},
|
|
155208
|
+
children: [
|
|
155209
|
+
/* @__PURE__ */ jsx(Search$1, { size: 16, color: theme2.colors.textSecondary }),
|
|
155210
|
+
/* @__PURE__ */ jsx(
|
|
155211
|
+
"input",
|
|
155212
|
+
{
|
|
155213
|
+
type: "text",
|
|
155214
|
+
placeholder: "Search projects...",
|
|
155215
|
+
value: searchQuery,
|
|
155216
|
+
onChange: (e2) => setSearchQuery(e2.target.value),
|
|
155217
|
+
style: {
|
|
155218
|
+
flex: 1,
|
|
155219
|
+
backgroundColor: "transparent",
|
|
155220
|
+
border: "none",
|
|
155221
|
+
outline: "none",
|
|
155222
|
+
color: theme2.colors.text,
|
|
155223
|
+
fontSize: theme2.fontSizes[1],
|
|
155224
|
+
fontFamily: theme2.fonts.body
|
|
155225
|
+
}
|
|
155226
|
+
}
|
|
155227
|
+
),
|
|
155228
|
+
searchQuery && /* @__PURE__ */ jsx(
|
|
155229
|
+
"button",
|
|
155230
|
+
{
|
|
155231
|
+
onClick: () => setSearchQuery(""),
|
|
155232
|
+
style: {
|
|
155233
|
+
background: "none",
|
|
155234
|
+
border: "none",
|
|
155235
|
+
color: theme2.colors.textSecondary,
|
|
155236
|
+
cursor: "pointer",
|
|
155237
|
+
padding: "0 4px",
|
|
155238
|
+
fontSize: theme2.fontSizes[1]
|
|
155239
|
+
},
|
|
155240
|
+
children: "✕"
|
|
155241
|
+
}
|
|
155242
|
+
)
|
|
155243
|
+
]
|
|
155244
|
+
}
|
|
155245
|
+
),
|
|
155246
|
+
/* @__PURE__ */ jsx(
|
|
155247
|
+
"div",
|
|
155248
|
+
{
|
|
155249
|
+
style: {
|
|
155250
|
+
marginTop: "8px",
|
|
155251
|
+
fontSize: theme2.fontSizes[0],
|
|
155252
|
+
color: theme2.colors.textSecondary,
|
|
155253
|
+
fontFamily: theme2.fonts.body
|
|
155254
|
+
},
|
|
155255
|
+
children: isLoading ? "Loading projects..." : `${displayProjects.length} project${displayProjects.length !== 1 ? "s" : ""}`
|
|
155256
|
+
}
|
|
155257
|
+
)
|
|
155258
|
+
]
|
|
155259
|
+
}
|
|
155260
|
+
),
|
|
155261
|
+
/* @__PURE__ */ jsx(
|
|
155262
|
+
"div",
|
|
155263
|
+
{
|
|
155264
|
+
style: {
|
|
155265
|
+
flex: 1,
|
|
155266
|
+
overflow: "auto",
|
|
155267
|
+
padding: "16px"
|
|
155268
|
+
},
|
|
155269
|
+
children: isLoading ? /* @__PURE__ */ jsx(LoadingGrid, {}) : displayProjects.length === 0 ? /* @__PURE__ */ jsxs(
|
|
155270
|
+
"div",
|
|
155271
|
+
{
|
|
155272
|
+
style: {
|
|
155273
|
+
display: "flex",
|
|
155274
|
+
flexDirection: "column",
|
|
155275
|
+
alignItems: "center",
|
|
155276
|
+
justifyContent: "center",
|
|
155277
|
+
height: "200px",
|
|
155278
|
+
color: theme2.colors.textSecondary,
|
|
155279
|
+
fontFamily: theme2.fonts.body,
|
|
155280
|
+
textAlign: "center",
|
|
155281
|
+
gap: "8px"
|
|
155282
|
+
},
|
|
155283
|
+
children: [
|
|
155284
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[2] }, children: searchQuery ? "No matching projects" : "No projects yet" }),
|
|
155285
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[1] }, children: searchQuery ? "Try a different search term" : "Add a project to get started" })
|
|
155286
|
+
]
|
|
155287
|
+
}
|
|
155288
|
+
) : /* @__PURE__ */ jsx(
|
|
155289
|
+
"div",
|
|
155290
|
+
{
|
|
155291
|
+
style: {
|
|
155292
|
+
display: "grid",
|
|
155293
|
+
gridTemplateColumns: "repeat(auto-fill, minmax(220px, 1fr))",
|
|
155294
|
+
gap: "20px",
|
|
155295
|
+
justifyItems: "center"
|
|
155296
|
+
},
|
|
155297
|
+
children: displayProjects.map((project) => /* @__PURE__ */ jsx(
|
|
155298
|
+
LocalProjectCard,
|
|
155299
|
+
{
|
|
155300
|
+
entry: project,
|
|
155301
|
+
isSelected: (selectedProject == null ? void 0 : selectedProject.path) === project.path,
|
|
155302
|
+
onClick: handleCardClick,
|
|
155303
|
+
onOpen: actions.openProject ? handleOpen : void 0,
|
|
155304
|
+
onRemove: actions.removeProject ? handleRemove : void 0
|
|
155305
|
+
},
|
|
155306
|
+
project.path
|
|
155307
|
+
))
|
|
155308
|
+
}
|
|
155309
|
+
)
|
|
155310
|
+
}
|
|
155311
|
+
)
|
|
155312
|
+
]
|
|
155313
|
+
}
|
|
155314
|
+
);
|
|
155315
|
+
};
|
|
155316
|
+
const LocalProjectGridPanelPreview = ({ context: context2 }) => {
|
|
155317
|
+
var _a;
|
|
155318
|
+
const { theme: theme2 } = useTheme();
|
|
155319
|
+
const projects = ((_a = context2.localProjects) == null ? void 0 : _a.data) ?? [];
|
|
155320
|
+
return /* @__PURE__ */ jsxs(
|
|
155321
|
+
"div",
|
|
155322
|
+
{
|
|
155323
|
+
style: {
|
|
155324
|
+
display: "flex",
|
|
155325
|
+
flexDirection: "column",
|
|
155326
|
+
alignItems: "center",
|
|
155327
|
+
justifyContent: "center",
|
|
155328
|
+
height: "100%",
|
|
155329
|
+
gap: "4px",
|
|
155330
|
+
color: theme2.colors.text,
|
|
155331
|
+
fontFamily: theme2.fonts.body
|
|
155332
|
+
},
|
|
155333
|
+
children: [
|
|
155334
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[2], fontWeight: theme2.fontWeights.medium }, children: projects.length }),
|
|
155335
|
+
/* @__PURE__ */ jsx("div", { style: { fontSize: theme2.fontSizes[0], color: theme2.colors.textSecondary }, children: "Projects" })
|
|
155336
|
+
]
|
|
155337
|
+
}
|
|
155338
|
+
);
|
|
155339
|
+
};
|
|
155340
|
+
const LocalProjectGridPanel = (props) => {
|
|
155341
|
+
return /* @__PURE__ */ jsx(LocalProjectGridPanelContent, { ...props });
|
|
155342
|
+
};
|
|
155343
|
+
const ISO_TILE_WIDTH = 64;
|
|
155344
|
+
const ISO_TILE_HEIGHT = 32;
|
|
155345
|
+
function getPackagePositions(count2, footprintWidth, footprintHeight) {
|
|
155346
|
+
const positions = [];
|
|
155347
|
+
const spacing = 0.18;
|
|
155348
|
+
const yOffset = -footprintHeight * 0.15;
|
|
155349
|
+
if (count2 === 2) {
|
|
155350
|
+
positions.push(
|
|
155351
|
+
{ x: -footprintWidth * spacing, y: yOffset },
|
|
155352
|
+
{ x: footprintWidth * spacing, y: yOffset }
|
|
155353
|
+
);
|
|
155354
|
+
} else if (count2 === 3) {
|
|
155355
|
+
positions.push(
|
|
155356
|
+
{
|
|
155357
|
+
x: -footprintWidth * spacing * 0.8,
|
|
155358
|
+
y: -footprintHeight * spacing * 0.8 + yOffset
|
|
155359
|
+
},
|
|
155360
|
+
{
|
|
155361
|
+
x: footprintWidth * spacing * 0.8,
|
|
155362
|
+
y: -footprintHeight * spacing * 0.8 + yOffset
|
|
155363
|
+
},
|
|
155364
|
+
{ x: 0, y: footprintHeight * spacing * 1 + yOffset }
|
|
155365
|
+
);
|
|
155366
|
+
} else if (count2 === 4) {
|
|
155367
|
+
positions.push(
|
|
155368
|
+
{ x: 0, y: -footprintHeight * spacing + yOffset },
|
|
155369
|
+
{ x: -footprintWidth * spacing, y: yOffset },
|
|
155370
|
+
{ x: footprintWidth * spacing, y: yOffset },
|
|
155371
|
+
{ x: 0, y: footprintHeight * spacing + yOffset }
|
|
155372
|
+
);
|
|
155373
|
+
} else {
|
|
155374
|
+
const cols = Math.ceil(Math.sqrt(count2));
|
|
155375
|
+
const rows = Math.ceil(count2 / cols);
|
|
155376
|
+
const cellWidth = footprintWidth * 0.7 / cols;
|
|
155377
|
+
const cellHeight = footprintHeight * 0.7 / rows;
|
|
155378
|
+
for (let i2 = 0; i2 < count2; i2++) {
|
|
155379
|
+
const row2 = Math.floor(i2 / cols);
|
|
155380
|
+
const col = i2 % cols;
|
|
155381
|
+
const x2 = (col - (cols - 1) / 2) * cellWidth;
|
|
155382
|
+
const y2 = (row2 - (rows - 1) / 2) * cellHeight;
|
|
155383
|
+
positions.push({ x: x2, y: y2 });
|
|
155384
|
+
}
|
|
155385
|
+
}
|
|
155386
|
+
return positions;
|
|
155387
|
+
}
|
|
155388
|
+
const RepoSprite = ({
|
|
155389
|
+
size = 2,
|
|
155390
|
+
color: color2 = 13789470,
|
|
155391
|
+
packages,
|
|
155392
|
+
files,
|
|
155393
|
+
stars,
|
|
155394
|
+
collaborators,
|
|
155395
|
+
license,
|
|
155396
|
+
label,
|
|
155397
|
+
owner,
|
|
155398
|
+
language: language2,
|
|
155399
|
+
variant = "default",
|
|
155400
|
+
cardTheme = "blue",
|
|
155401
|
+
width = 200,
|
|
155402
|
+
height = 200,
|
|
155403
|
+
backgroundColor,
|
|
155404
|
+
showBoundary = true,
|
|
155405
|
+
boundaryColor = 16776960,
|
|
155406
|
+
debug = false,
|
|
155407
|
+
onPackageHover,
|
|
155408
|
+
onPackageHoverEnd
|
|
155409
|
+
}) => {
|
|
155410
|
+
const { theme: theme2 } = useTheme();
|
|
155411
|
+
const containerRef = useRef(null);
|
|
155412
|
+
const appRef = useRef(null);
|
|
155413
|
+
useEffect(() => {
|
|
155414
|
+
if (!containerRef.current) return;
|
|
155415
|
+
const init2 = async () => {
|
|
155416
|
+
var _a;
|
|
155417
|
+
const app = new Application();
|
|
155418
|
+
await app.init({
|
|
155419
|
+
width,
|
|
155420
|
+
height,
|
|
155421
|
+
backgroundAlpha: backgroundColor !== void 0 ? 1 : 0,
|
|
155422
|
+
backgroundColor: backgroundColor ?? 0,
|
|
155423
|
+
antialias: true,
|
|
155424
|
+
resolution: 2,
|
|
155425
|
+
autoDensity: true
|
|
155426
|
+
});
|
|
155427
|
+
(_a = containerRef.current) == null ? void 0 : _a.appendChild(app.canvas);
|
|
155428
|
+
appRef.current = app;
|
|
155429
|
+
const boundarySize = 4 * size;
|
|
155430
|
+
const boundaryWidth = boundarySize * ISO_TILE_WIDTH;
|
|
155431
|
+
const boundaryHeight = boundarySize * ISO_TILE_HEIGHT;
|
|
155432
|
+
const padding = 0.9;
|
|
155433
|
+
const scaleX = width * padding / boundaryWidth;
|
|
155434
|
+
const scaleY = height * padding / boundaryHeight;
|
|
155435
|
+
const scale = Math.min(scaleX, scaleY);
|
|
155436
|
+
const mainContainer = new Container();
|
|
155437
|
+
mainContainer.x = width / 2;
|
|
155438
|
+
mainContainer.y = height / 2;
|
|
155439
|
+
mainContainer.scale.set(scale);
|
|
155440
|
+
app.stage.addChild(mainContainer);
|
|
155441
|
+
if (showBoundary) {
|
|
155442
|
+
const boundary = new Graphics();
|
|
155443
|
+
boundary.strokeStyle = { width: 2, color: boundaryColor };
|
|
155444
|
+
boundary.fillStyle = { color: boundaryColor, alpha: 0.1 };
|
|
155445
|
+
boundary.beginPath();
|
|
155446
|
+
boundary.moveTo(0, -boundaryHeight / 2);
|
|
155447
|
+
boundary.lineTo(boundaryWidth / 2, 0);
|
|
155448
|
+
boundary.lineTo(0, boundaryHeight / 2);
|
|
155449
|
+
boundary.lineTo(-boundaryWidth / 2, 0);
|
|
155450
|
+
boundary.closePath();
|
|
155451
|
+
boundary.fill();
|
|
155452
|
+
boundary.stroke();
|
|
155453
|
+
mainContainer.addChild(boundary);
|
|
155454
|
+
}
|
|
155455
|
+
const ground = license ? generateLicenseGround(license, size) : generateNeutralGround(size);
|
|
155456
|
+
mainContainer.addChild(ground);
|
|
155457
|
+
if (packages && packages.length > 1) {
|
|
155458
|
+
const positions = getPackagePositions(
|
|
155459
|
+
packages.length,
|
|
155460
|
+
boundaryWidth / 2,
|
|
155461
|
+
boundaryHeight / 2
|
|
155462
|
+
);
|
|
155463
|
+
for (let i2 = 0; i2 < packages.length; i2++) {
|
|
155464
|
+
const pkg = packages[i2];
|
|
155465
|
+
const pos = positions[i2] || { x: 0, y: 0 };
|
|
155466
|
+
const pkgColor = pkg.color ? parseColor$1(pkg.color) : parseColor$1(color2);
|
|
155467
|
+
const pkgSize = (pkg.size || 1) * size * 0.4;
|
|
155468
|
+
const buildingGraphics = generateBuildingSprite({
|
|
155469
|
+
size: pkgSize,
|
|
155470
|
+
color: pkgColor
|
|
155471
|
+
});
|
|
155472
|
+
buildingGraphics.x = pos.x;
|
|
155473
|
+
buildingGraphics.y = pos.y;
|
|
155474
|
+
buildingGraphics.eventMode = "static";
|
|
155475
|
+
buildingGraphics.cursor = "pointer";
|
|
155476
|
+
const originalTint = buildingGraphics.tint;
|
|
155477
|
+
const packageName = pkg.name;
|
|
155478
|
+
buildingGraphics.on("pointerover", () => {
|
|
155479
|
+
buildingGraphics.tint = 8965375;
|
|
155480
|
+
onPackageHover == null ? void 0 : onPackageHover(packageName);
|
|
155481
|
+
});
|
|
155482
|
+
buildingGraphics.on("pointerout", () => {
|
|
155483
|
+
buildingGraphics.tint = originalTint;
|
|
155484
|
+
onPackageHoverEnd == null ? void 0 : onPackageHoverEnd(packageName);
|
|
155485
|
+
});
|
|
155486
|
+
mainContainer.addChild(buildingGraphics);
|
|
155487
|
+
}
|
|
155488
|
+
} else {
|
|
155489
|
+
const parsedColor = parseColor$1(color2);
|
|
155490
|
+
const buildingGraphics = generateBuildingSprite({
|
|
155491
|
+
size,
|
|
155492
|
+
color: parsedColor
|
|
155493
|
+
});
|
|
155494
|
+
mainContainer.addChild(buildingGraphics);
|
|
155495
|
+
}
|
|
155496
|
+
if (license) {
|
|
155497
|
+
const licenseSign = generateLicenseSign(license, {
|
|
155498
|
+
name: label || "",
|
|
155499
|
+
sizeMultiplier: size
|
|
155500
|
+
});
|
|
155501
|
+
const footprintHeight = boundaryHeight / 2;
|
|
155502
|
+
licenseSign.y = footprintHeight * 0.75;
|
|
155503
|
+
mainContainer.addChild(licenseSign);
|
|
155504
|
+
}
|
|
155505
|
+
if (stars && stars > 0) {
|
|
155506
|
+
const tier = getStarTier(stars);
|
|
155507
|
+
const scaleFactor = getStarScaleFactor(stars);
|
|
155508
|
+
let starDecoration = null;
|
|
155509
|
+
if (tier) {
|
|
155510
|
+
const decorationColor = tier.color;
|
|
155511
|
+
if (tier.decorationType === "flag") {
|
|
155512
|
+
starDecoration = generateFlagSprite(decorationColor);
|
|
155513
|
+
} else if (tier.decorationType === "trophy") {
|
|
155514
|
+
starDecoration = generateTrophySprite(decorationColor);
|
|
155515
|
+
} else if (tier.decorationType === "statue") {
|
|
155516
|
+
starDecoration = generateStatueSprite(decorationColor);
|
|
155517
|
+
}
|
|
155518
|
+
}
|
|
155519
|
+
if (starDecoration) {
|
|
155520
|
+
const dim = { w: 8, h: 12 };
|
|
155521
|
+
starDecoration.pivot.set(dim.w, dim.h);
|
|
155522
|
+
starDecoration.scale.set(1.5 * scaleFactor);
|
|
155523
|
+
starDecoration.x = -boundaryWidth / 4;
|
|
155524
|
+
starDecoration.y = 0;
|
|
155525
|
+
mainContainer.addChild(starDecoration);
|
|
155526
|
+
}
|
|
155527
|
+
}
|
|
155528
|
+
if (collaborators && collaborators > 0) {
|
|
155529
|
+
const tier = getCollaboratorTier(collaborators);
|
|
155530
|
+
const scaleFactor = getCollaboratorScaleFactor(collaborators);
|
|
155531
|
+
let collabDecoration = null;
|
|
155532
|
+
if (tier) {
|
|
155533
|
+
const decorationColor = tier.color;
|
|
155534
|
+
if (tier.decorationType === "bench") {
|
|
155535
|
+
collabDecoration = generateBenchSprite(decorationColor);
|
|
155536
|
+
} else if (tier.decorationType === "pavilion") {
|
|
155537
|
+
collabDecoration = generatePavilionSprite(decorationColor);
|
|
155538
|
+
} else if (tier.decorationType === "gazebo") {
|
|
155539
|
+
collabDecoration = generateGazeboSprite(decorationColor);
|
|
155540
|
+
} else if (tier.decorationType === "bandstand") {
|
|
155541
|
+
collabDecoration = generateBandstandSprite(decorationColor);
|
|
155542
|
+
}
|
|
155543
|
+
}
|
|
155544
|
+
if (collabDecoration) {
|
|
155545
|
+
const dim = { h: 12 };
|
|
155546
|
+
collabDecoration.pivot.set(0, dim.h);
|
|
155547
|
+
collabDecoration.scale.set(1.5 * scaleFactor);
|
|
155548
|
+
collabDecoration.x = boundaryWidth / 4;
|
|
155549
|
+
collabDecoration.y = 0;
|
|
155550
|
+
mainContainer.addChild(collabDecoration);
|
|
155551
|
+
}
|
|
155552
|
+
}
|
|
155553
|
+
if (debug) {
|
|
155554
|
+
const { Graphics: Graphics2 } = await Promise.resolve().then(() => index);
|
|
155555
|
+
const debugRect = new Graphics2();
|
|
155556
|
+
debugRect.rect(-width / 2, -height / 2, width, height);
|
|
155557
|
+
debugRect.stroke({ width: 1, color: 16711680 });
|
|
155558
|
+
mainContainer.addChild(debugRect);
|
|
155559
|
+
}
|
|
155560
|
+
};
|
|
155561
|
+
init2();
|
|
155562
|
+
return () => {
|
|
155563
|
+
if (appRef.current) {
|
|
155564
|
+
appRef.current.destroy(true, { children: true });
|
|
155565
|
+
appRef.current = null;
|
|
155566
|
+
}
|
|
155567
|
+
};
|
|
155568
|
+
}, [
|
|
155569
|
+
size,
|
|
155570
|
+
color2,
|
|
155571
|
+
packages,
|
|
155572
|
+
files,
|
|
155573
|
+
stars,
|
|
155574
|
+
collaborators,
|
|
155575
|
+
license,
|
|
155576
|
+
label,
|
|
155577
|
+
variant,
|
|
155578
|
+
width,
|
|
155579
|
+
height,
|
|
155580
|
+
backgroundColor,
|
|
155581
|
+
showBoundary,
|
|
155582
|
+
boundaryColor,
|
|
155583
|
+
debug,
|
|
155584
|
+
onPackageHover,
|
|
155585
|
+
onPackageHoverEnd
|
|
155586
|
+
]);
|
|
155587
|
+
if (variant === "card") {
|
|
155588
|
+
return /* @__PURE__ */ jsx(
|
|
155589
|
+
CardLayout,
|
|
155590
|
+
{
|
|
155591
|
+
color: color2,
|
|
155592
|
+
owner,
|
|
155593
|
+
stars,
|
|
155594
|
+
label,
|
|
155595
|
+
files,
|
|
155596
|
+
language: language2,
|
|
155597
|
+
license,
|
|
155598
|
+
packages,
|
|
155599
|
+
children: /* @__PURE__ */ jsx(
|
|
155600
|
+
"div",
|
|
155601
|
+
{
|
|
155602
|
+
ref: containerRef,
|
|
155603
|
+
style: {
|
|
155604
|
+
width: "100%",
|
|
155605
|
+
height: "100%",
|
|
155606
|
+
display: "flex",
|
|
155607
|
+
alignItems: "center",
|
|
155608
|
+
justifyContent: "center"
|
|
155609
|
+
}
|
|
155610
|
+
}
|
|
155611
|
+
)
|
|
155612
|
+
}
|
|
155613
|
+
);
|
|
155614
|
+
}
|
|
155615
|
+
return /* @__PURE__ */ jsx(
|
|
155616
|
+
"div",
|
|
155617
|
+
{
|
|
155618
|
+
ref: containerRef,
|
|
155619
|
+
style: {
|
|
155620
|
+
width,
|
|
155621
|
+
height,
|
|
155622
|
+
display: "inline-block"
|
|
155623
|
+
}
|
|
155624
|
+
}
|
|
155625
|
+
);
|
|
155626
|
+
};
|
|
155627
|
+
function transformPackages(packages) {
|
|
155628
|
+
if (!packages || packages.length === 0) {
|
|
155629
|
+
return void 0;
|
|
155630
|
+
}
|
|
155631
|
+
return packages.map((pkg) => {
|
|
155632
|
+
var _a;
|
|
155633
|
+
return {
|
|
155634
|
+
name: ((_a = pkg.packageData) == null ? void 0 : _a.name) || pkg.name,
|
|
155635
|
+
size: pkg.size
|
|
155636
|
+
// Could derive color from package type or name in the future
|
|
155637
|
+
};
|
|
155638
|
+
});
|
|
155639
|
+
}
|
|
155640
|
+
const RepoCard = ({
|
|
155641
|
+
repository,
|
|
155642
|
+
variant = "card",
|
|
155643
|
+
cardTheme = "blue",
|
|
155644
|
+
width = 200,
|
|
155645
|
+
height = 280,
|
|
155646
|
+
backgroundColor,
|
|
155647
|
+
showBoundary = false,
|
|
155648
|
+
boundaryColor,
|
|
155649
|
+
debug = false,
|
|
155650
|
+
sizeOverride,
|
|
155651
|
+
colorOverride,
|
|
155652
|
+
onPackageHover,
|
|
155653
|
+
onPackageHoverEnd
|
|
155654
|
+
}) => {
|
|
155655
|
+
var _a, _b, _c, _d, _e2, _f;
|
|
155656
|
+
const size = sizeOverride ?? calculateRepositorySize(repository.metrics);
|
|
155657
|
+
const color2 = colorOverride ?? getRepositoryColor(repository);
|
|
155658
|
+
const packages = transformPackages(repository.packages);
|
|
155659
|
+
const spriteProps = {
|
|
155660
|
+
size,
|
|
155661
|
+
color: color2,
|
|
155662
|
+
packages,
|
|
155663
|
+
files: (_a = repository.metrics) == null ? void 0 : _a.fileCount,
|
|
155664
|
+
stars: (_b = repository.github) == null ? void 0 : _b.stars,
|
|
155665
|
+
collaborators: (_c = repository.metrics) == null ? void 0 : _c.contributors,
|
|
155666
|
+
license: (_d = repository.github) == null ? void 0 : _d.license,
|
|
155667
|
+
label: repository.name,
|
|
155668
|
+
owner: (_e2 = repository.github) == null ? void 0 : _e2.owner,
|
|
155669
|
+
language: (_f = repository.github) == null ? void 0 : _f.primaryLanguage,
|
|
155670
|
+
variant,
|
|
155671
|
+
cardTheme,
|
|
155672
|
+
width,
|
|
155673
|
+
height,
|
|
155674
|
+
backgroundColor,
|
|
155675
|
+
showBoundary,
|
|
155676
|
+
boundaryColor,
|
|
155677
|
+
debug,
|
|
155678
|
+
onPackageHover,
|
|
155679
|
+
onPackageHoverEnd
|
|
155680
|
+
};
|
|
155681
|
+
return /* @__PURE__ */ jsx(RepoSprite, { ...spriteProps });
|
|
155682
|
+
};
|
|
155683
|
+
const RepoCardStatic = ({
|
|
155684
|
+
repository,
|
|
155685
|
+
packages,
|
|
155686
|
+
cardTheme = "blue",
|
|
155687
|
+
width = 200,
|
|
155688
|
+
height = 280,
|
|
155689
|
+
spriteSize = 160
|
|
155690
|
+
}) => {
|
|
155691
|
+
var _a, _b, _c, _d, _e2, _f;
|
|
155692
|
+
const [spriteDataUrl, setSpriteDataUrl] = useState(null);
|
|
155693
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
155694
|
+
const size = calculateRepositorySize(repository.metrics);
|
|
155695
|
+
const color2 = getRepositoryColor(repository);
|
|
155696
|
+
const colors = generateCardColors(color2);
|
|
155697
|
+
useEffect(() => {
|
|
155698
|
+
let mounted = true;
|
|
155699
|
+
async function renderSprite() {
|
|
155700
|
+
var _a2, _b2, _c2;
|
|
155701
|
+
try {
|
|
155702
|
+
const dataUrl = await renderSpriteToDataUrlCached({
|
|
155703
|
+
size,
|
|
155704
|
+
color: color2,
|
|
155705
|
+
packages,
|
|
155706
|
+
stars: (_a2 = repository.github) == null ? void 0 : _a2.stars,
|
|
155707
|
+
collaborators: (_b2 = repository.metrics) == null ? void 0 : _b2.contributors,
|
|
155708
|
+
license: (_c2 = repository.github) == null ? void 0 : _c2.license,
|
|
155709
|
+
label: repository.name,
|
|
155710
|
+
width: spriteSize,
|
|
155711
|
+
height: spriteSize
|
|
155712
|
+
});
|
|
155713
|
+
if (mounted) {
|
|
155714
|
+
setSpriteDataUrl(dataUrl);
|
|
155715
|
+
setIsLoading(false);
|
|
155716
|
+
}
|
|
155717
|
+
} catch (error) {
|
|
155718
|
+
console.error("Failed to render sprite:", error);
|
|
155719
|
+
if (mounted) {
|
|
155720
|
+
setIsLoading(false);
|
|
155721
|
+
}
|
|
155722
|
+
}
|
|
155723
|
+
}
|
|
155724
|
+
renderSprite();
|
|
155725
|
+
return () => {
|
|
155726
|
+
mounted = false;
|
|
155727
|
+
};
|
|
155728
|
+
}, [size, color2, packages, repository, spriteSize]);
|
|
155729
|
+
const spriteContent = isLoading ? /* @__PURE__ */ jsx(
|
|
155730
|
+
"div",
|
|
155731
|
+
{
|
|
155732
|
+
style: {
|
|
155733
|
+
width: spriteSize * 0.5,
|
|
155734
|
+
height: spriteSize * 0.5,
|
|
155735
|
+
backgroundColor: `${colors.cardHighlight}40`,
|
|
155736
|
+
borderRadius: "8px",
|
|
155737
|
+
animation: "pulse 1.5s ease-in-out infinite"
|
|
155738
|
+
}
|
|
155739
|
+
}
|
|
155740
|
+
) : spriteDataUrl ? /* @__PURE__ */ jsx(
|
|
155741
|
+
"img",
|
|
155742
|
+
{
|
|
155743
|
+
src: spriteDataUrl,
|
|
155744
|
+
alt: repository.name,
|
|
155745
|
+
style: {
|
|
155746
|
+
maxWidth: "100%",
|
|
155747
|
+
maxHeight: "100%",
|
|
155748
|
+
objectFit: "contain"
|
|
155749
|
+
}
|
|
155750
|
+
}
|
|
155751
|
+
) : /* @__PURE__ */ jsx(
|
|
155752
|
+
"div",
|
|
155753
|
+
{
|
|
155754
|
+
style: {
|
|
155755
|
+
width: spriteSize * 0.5,
|
|
155756
|
+
height: spriteSize * 0.5,
|
|
155757
|
+
backgroundColor: `#${color2.toString(16).padStart(6, "0")}`,
|
|
155758
|
+
borderRadius: "8px",
|
|
155759
|
+
opacity: 0.5
|
|
155760
|
+
}
|
|
155761
|
+
}
|
|
155762
|
+
);
|
|
155763
|
+
return /* @__PURE__ */ jsx("div", { style: { width, height }, children: /* @__PURE__ */ jsx(
|
|
155764
|
+
CardLayout,
|
|
155765
|
+
{
|
|
155766
|
+
color: color2,
|
|
155767
|
+
owner: (_a = repository.github) == null ? void 0 : _a.owner,
|
|
155768
|
+
stars: (_b = repository.github) == null ? void 0 : _b.stars,
|
|
155769
|
+
label: repository.name,
|
|
155770
|
+
description: (_c = repository.github) == null ? void 0 : _c.description,
|
|
155771
|
+
files: (_d = repository.metrics) == null ? void 0 : _d.fileCount,
|
|
155772
|
+
language: (_e2 = repository.github) == null ? void 0 : _e2.primaryLanguage,
|
|
155773
|
+
license: (_f = repository.github) == null ? void 0 : _f.license,
|
|
155774
|
+
packages,
|
|
155775
|
+
children: spriteContent
|
|
155776
|
+
}
|
|
155777
|
+
) });
|
|
155778
|
+
};
|
|
155340
155779
|
const panels = [
|
|
155341
155780
|
{
|
|
155342
155781
|
metadata: {
|
|
@@ -155451,6 +155890,24 @@ const panels = [
|
|
|
155451
155890
|
onUnmount: async (_context) => {
|
|
155452
155891
|
console.log("Telemetry Coverage Panel unmounting");
|
|
155453
155892
|
}
|
|
155893
|
+
},
|
|
155894
|
+
{
|
|
155895
|
+
metadata: {
|
|
155896
|
+
id: "industry-theme.local-project-grid",
|
|
155897
|
+
name: "Local Projects Grid",
|
|
155898
|
+
icon: "Grid3X3",
|
|
155899
|
+
version: "0.1.0",
|
|
155900
|
+
author: "Industry Theme",
|
|
155901
|
+
description: "Display local Alexandria projects in a card grid",
|
|
155902
|
+
slices: ["localProjects"]
|
|
155903
|
+
},
|
|
155904
|
+
component: LocalProjectGridPanel,
|
|
155905
|
+
onMount: async (_context) => {
|
|
155906
|
+
console.log("Local Projects Grid Panel mounted");
|
|
155907
|
+
},
|
|
155908
|
+
onUnmount: async (_context) => {
|
|
155909
|
+
console.log("Local Projects Grid Panel unmounting");
|
|
155910
|
+
}
|
|
155454
155911
|
}
|
|
155455
155912
|
];
|
|
155456
155913
|
const onPackageLoad = async () => {
|
|
@@ -155481,6 +155938,10 @@ export {
|
|
|
155481
155938
|
SearchPanel as S,
|
|
155482
155939
|
TelemetryCoveragePanel as T,
|
|
155483
155940
|
CollectionMapPanelContent as U,
|
|
155941
|
+
LocalProjectGridPanel as V,
|
|
155942
|
+
LocalProjectGridPanelContent as W,
|
|
155943
|
+
LocalProjectGridPanelPreview as X,
|
|
155944
|
+
LocalProjectCard as Y,
|
|
155484
155945
|
FilterPipe as a,
|
|
155485
155946
|
accessibilityTarget as b,
|
|
155486
155947
|
FederatedContainer as c,
|
|
@@ -155508,4 +155969,4 @@ export {
|
|
|
155508
155969
|
RepoCardStatic as y,
|
|
155509
155970
|
CardBack as z
|
|
155510
155971
|
};
|
|
155511
|
-
//# sourceMappingURL=index-
|
|
155972
|
+
//# sourceMappingURL=index-C1lQoGkG.js.map
|