unity-hub-cli 0.10.0 → 0.11.0
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.js +222 -64
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -621,8 +621,8 @@ var UnityTempDirectoryCleaner = class {
|
|
|
621
621
|
|
|
622
622
|
// src/presentation/App.tsx
|
|
623
623
|
import clipboard from "clipboardy";
|
|
624
|
-
import { Box as
|
|
625
|
-
import { useCallback, useEffect as
|
|
624
|
+
import { Box as Box6, Text as Text4, useApp, useInput, useStdout as useStdout2 } from "ink";
|
|
625
|
+
import { useCallback, useEffect as useEffect4, useMemo as useMemo2, useState as useState4 } from "react";
|
|
626
626
|
|
|
627
627
|
// src/presentation/components/LayoutManager.tsx
|
|
628
628
|
import { Box } from "ink";
|
|
@@ -693,7 +693,7 @@ var buildCdCommand = (targetPath) => {
|
|
|
693
693
|
};
|
|
694
694
|
|
|
695
695
|
// src/presentation/components/ProjectRow.tsx
|
|
696
|
-
import { Box as Box2, Text } from "ink";
|
|
696
|
+
import { Box as Box2, Text, useStdout } from "ink";
|
|
697
697
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
698
698
|
var ProjectRow = ({
|
|
699
699
|
isSelected,
|
|
@@ -710,13 +710,16 @@ var ProjectRow = ({
|
|
|
710
710
|
showPath,
|
|
711
711
|
scrollbar
|
|
712
712
|
}) => {
|
|
713
|
+
const { stdout } = useStdout();
|
|
714
|
+
const computedCenterWidth = typeof stdout?.columns === "number" ? Math.max(0, stdout.columns - 6) : void 0;
|
|
715
|
+
const centerWidth = typeof computedCenterWidth === "number" ? Math.max(0, computedCenterWidth - (isSelected ? 1 : 0)) : void 0;
|
|
713
716
|
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "row", children: [
|
|
714
|
-
/* @__PURE__ */ jsxs2(Box2, { width: 1, flexDirection: "column", alignItems: "center", marginLeft:
|
|
717
|
+
/* @__PURE__ */ jsxs2(Box2, { width: 1, flexDirection: "column", alignItems: "center", marginLeft: 0, children: [
|
|
715
718
|
/* @__PURE__ */ jsx2(Text, { color: isSelected ? "green" : void 0, children: selectionBar }),
|
|
716
719
|
showBranch ? /* @__PURE__ */ jsx2(Text, { color: isSelected ? "green" : void 0, children: selectionBar }) : null,
|
|
717
720
|
showPath ? /* @__PURE__ */ jsx2(Text, { color: isSelected ? "green" : void 0, children: selectionBar }) : null
|
|
718
721
|
] }),
|
|
719
|
-
/* @__PURE__ */ jsxs2(Box2, {
|
|
722
|
+
/* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", marginLeft: isSelected ? 2 : 1, width: centerWidth, children: [
|
|
720
723
|
/* @__PURE__ */ jsxs2(Text, { wrap: "truncate", children: [
|
|
721
724
|
/* @__PURE__ */ jsx2(Text, { color: projectColor, bold: true, children: projectName }),
|
|
722
725
|
/* @__PURE__ */ jsxs2(Text, { children: [
|
|
@@ -977,16 +980,55 @@ var SortPanel = ({ sortPreferences, focusedIndex, width }) => {
|
|
|
977
980
|
);
|
|
978
981
|
};
|
|
979
982
|
|
|
983
|
+
// src/presentation/components/VisibilityPanel.tsx
|
|
984
|
+
import { Box as Box5, Text as Text3 } from "ink";
|
|
985
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
986
|
+
var lineForBranch = (on) => `Show branch: ${on ? "ON" : "OFF"}`;
|
|
987
|
+
var lineForPath = (on) => `Show path: ${on ? "ON" : "OFF"}`;
|
|
988
|
+
var VisibilityPanel = ({ visibility, focusedIndex, width }) => {
|
|
989
|
+
const branchLine = lineForBranch(visibility.showBranch);
|
|
990
|
+
const pathLine = lineForPath(visibility.showPath);
|
|
991
|
+
const Item = ({ label, selected }) => {
|
|
992
|
+
const prefix = selected ? "> " : " ";
|
|
993
|
+
return /* @__PURE__ */ jsxs4(Text3, { children: [
|
|
994
|
+
selected ? /* @__PURE__ */ jsx5(Text3, { color: "green", children: prefix }) : prefix,
|
|
995
|
+
label
|
|
996
|
+
] });
|
|
997
|
+
};
|
|
998
|
+
return /* @__PURE__ */ jsxs4(
|
|
999
|
+
Box5,
|
|
1000
|
+
{
|
|
1001
|
+
flexDirection: "column",
|
|
1002
|
+
borderStyle: "round",
|
|
1003
|
+
borderColor: "green",
|
|
1004
|
+
paddingX: 1,
|
|
1005
|
+
width,
|
|
1006
|
+
children: [
|
|
1007
|
+
/* @__PURE__ */ jsx5(Item, { label: branchLine, selected: focusedIndex === 0 }),
|
|
1008
|
+
/* @__PURE__ */ jsx5(Item, { label: pathLine, selected: focusedIndex === 1 })
|
|
1009
|
+
]
|
|
1010
|
+
}
|
|
1011
|
+
);
|
|
1012
|
+
};
|
|
1013
|
+
|
|
980
1014
|
// src/presentation/hooks/useSortPreferences.ts
|
|
981
1015
|
import { useEffect, useState } from "react";
|
|
982
1016
|
|
|
983
1017
|
// src/infrastructure/config.ts
|
|
984
1018
|
import { mkdir, readFile as readFile3, writeFile as writeFile2 } from "fs/promises";
|
|
985
|
-
var
|
|
1019
|
+
var defaultSortPreferences = {
|
|
986
1020
|
favoritesFirst: true,
|
|
987
1021
|
primary: "updated",
|
|
988
1022
|
direction: "desc"
|
|
989
1023
|
};
|
|
1024
|
+
var defaultVisibilityPreferences = {
|
|
1025
|
+
showBranch: true,
|
|
1026
|
+
showPath: true
|
|
1027
|
+
};
|
|
1028
|
+
var defaultAppConfig = {
|
|
1029
|
+
sort: defaultSortPreferences,
|
|
1030
|
+
visibility: defaultVisibilityPreferences
|
|
1031
|
+
};
|
|
990
1032
|
var getConfigDir = () => {
|
|
991
1033
|
const home = process.env.HOME ?? "";
|
|
992
1034
|
return `${home}/Library/Application Support/UnityHubCli`;
|
|
@@ -994,35 +1036,71 @@ var getConfigDir = () => {
|
|
|
994
1036
|
var getConfigPath = () => `${getConfigDir()}/config.json`;
|
|
995
1037
|
var isValidPrimary = (value) => value === "updated" || value === "name";
|
|
996
1038
|
var isValidDirection = (value) => value === "asc" || value === "desc";
|
|
997
|
-
var
|
|
1039
|
+
var sanitizeSort = (input) => {
|
|
998
1040
|
if (!input || typeof input !== "object") {
|
|
999
|
-
return
|
|
1041
|
+
return defaultSortPreferences;
|
|
1000
1042
|
}
|
|
1001
1043
|
const record = input;
|
|
1002
|
-
const favoritesFirst = typeof record.favoritesFirst === "boolean" ? record.favoritesFirst :
|
|
1003
|
-
const primary = isValidPrimary(record.primary) ? record.primary :
|
|
1004
|
-
const direction = isValidDirection(record.direction) ? record.direction :
|
|
1044
|
+
const favoritesFirst = typeof record.favoritesFirst === "boolean" ? record.favoritesFirst : defaultSortPreferences.favoritesFirst;
|
|
1045
|
+
const primary = isValidPrimary(record.primary) ? record.primary : defaultSortPreferences.primary;
|
|
1046
|
+
const direction = isValidDirection(record.direction) ? record.direction : defaultSortPreferences.direction;
|
|
1005
1047
|
return { favoritesFirst, primary, direction };
|
|
1006
1048
|
};
|
|
1007
|
-
var
|
|
1049
|
+
var sanitizeVisibility = (input) => {
|
|
1050
|
+
if (!input || typeof input !== "object") {
|
|
1051
|
+
return defaultVisibilityPreferences;
|
|
1052
|
+
}
|
|
1053
|
+
const record = input;
|
|
1054
|
+
const showBranch = typeof record.showBranch === "boolean" ? record.showBranch : defaultVisibilityPreferences.showBranch;
|
|
1055
|
+
const showPath = typeof record.showPath === "boolean" ? record.showPath : defaultVisibilityPreferences.showPath;
|
|
1056
|
+
return { showBranch, showPath };
|
|
1057
|
+
};
|
|
1058
|
+
var sanitizeAppConfig = (input) => {
|
|
1059
|
+
if (!input || typeof input !== "object") {
|
|
1060
|
+
return defaultAppConfig;
|
|
1061
|
+
}
|
|
1062
|
+
const record = input;
|
|
1063
|
+
const sort = sanitizeSort(record.sort);
|
|
1064
|
+
const visibility = sanitizeVisibility(record.visibility);
|
|
1065
|
+
return { sort, visibility };
|
|
1066
|
+
};
|
|
1067
|
+
var readAppConfig = async () => {
|
|
1008
1068
|
try {
|
|
1009
1069
|
const content = await readFile3(getConfigPath(), "utf8");
|
|
1010
1070
|
const json = JSON.parse(content);
|
|
1011
|
-
return
|
|
1071
|
+
return sanitizeAppConfig(json);
|
|
1012
1072
|
} catch {
|
|
1013
|
-
return
|
|
1073
|
+
return defaultAppConfig;
|
|
1014
1074
|
}
|
|
1015
1075
|
};
|
|
1016
|
-
var
|
|
1076
|
+
var writeAppConfig = async (config) => {
|
|
1017
1077
|
try {
|
|
1018
1078
|
await mkdir(getConfigDir(), { recursive: true });
|
|
1019
1079
|
} catch {
|
|
1020
1080
|
}
|
|
1021
|
-
const
|
|
1022
|
-
const json = JSON.stringify(sanitized, void 0, 2);
|
|
1081
|
+
const json = JSON.stringify(sanitizeAppConfig(config), void 0, 2);
|
|
1023
1082
|
await writeFile2(getConfigPath(), json, "utf8");
|
|
1024
1083
|
};
|
|
1025
|
-
var
|
|
1084
|
+
var readSortPreferences = async () => {
|
|
1085
|
+
const config = await readAppConfig();
|
|
1086
|
+
return config.sort;
|
|
1087
|
+
};
|
|
1088
|
+
var writeSortPreferences = async (prefs) => {
|
|
1089
|
+
const current = await readAppConfig();
|
|
1090
|
+
const next = { ...current, sort: sanitizeSort(prefs) };
|
|
1091
|
+
await writeAppConfig(next);
|
|
1092
|
+
};
|
|
1093
|
+
var getDefaultSortPreferences = () => defaultSortPreferences;
|
|
1094
|
+
var readVisibilityPreferences = async () => {
|
|
1095
|
+
const config = await readAppConfig();
|
|
1096
|
+
return config.visibility;
|
|
1097
|
+
};
|
|
1098
|
+
var writeVisibilityPreferences = async (prefs) => {
|
|
1099
|
+
const current = await readAppConfig();
|
|
1100
|
+
const next = { ...current, visibility: sanitizeVisibility(prefs) };
|
|
1101
|
+
await writeAppConfig(next);
|
|
1102
|
+
};
|
|
1103
|
+
var getDefaultVisibilityPreferences = () => defaultVisibilityPreferences;
|
|
1026
1104
|
|
|
1027
1105
|
// src/presentation/hooks/useSortPreferences.ts
|
|
1028
1106
|
var useSortPreferences = () => {
|
|
@@ -1047,8 +1125,33 @@ var useSortPreferences = () => {
|
|
|
1047
1125
|
return { sortPreferences, setSortPreferences, isLoaded };
|
|
1048
1126
|
};
|
|
1049
1127
|
|
|
1128
|
+
// src/presentation/hooks/useVisibilityPreferences.ts
|
|
1129
|
+
import { useEffect as useEffect2, useRef, useState as useState2 } from "react";
|
|
1130
|
+
var useVisibilityPreferences = () => {
|
|
1131
|
+
const [visibilityPreferences, setVisibilityPreferences] = useState2(getDefaultVisibilityPreferences());
|
|
1132
|
+
const [isLoaded, setIsLoaded] = useState2(false);
|
|
1133
|
+
const writeQueueRef = useRef(Promise.resolve());
|
|
1134
|
+
useEffect2(() => {
|
|
1135
|
+
void (async () => {
|
|
1136
|
+
try {
|
|
1137
|
+
const prefs = await readVisibilityPreferences();
|
|
1138
|
+
setVisibilityPreferences(prefs);
|
|
1139
|
+
} finally {
|
|
1140
|
+
setIsLoaded(true);
|
|
1141
|
+
}
|
|
1142
|
+
})();
|
|
1143
|
+
}, []);
|
|
1144
|
+
useEffect2(() => {
|
|
1145
|
+
if (!isLoaded) {
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
writeQueueRef.current = writeQueueRef.current.catch(() => void 0).then(() => writeVisibilityPreferences(visibilityPreferences));
|
|
1149
|
+
}, [isLoaded, visibilityPreferences]);
|
|
1150
|
+
return { visibilityPreferences, setVisibilityPreferences, isLoaded };
|
|
1151
|
+
};
|
|
1152
|
+
|
|
1050
1153
|
// src/presentation/hooks/useVisibleCount.ts
|
|
1051
|
-
import { useEffect as
|
|
1154
|
+
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
1052
1155
|
var useVisibleCount = (stdout, linesPerProject, panelVisible, panelHeight, minimumVisibleProjectCount2) => {
|
|
1053
1156
|
const compute = () => {
|
|
1054
1157
|
if (!stdout || typeof stdout.columns !== "number" || typeof stdout.rows !== "number") {
|
|
@@ -1062,8 +1165,8 @@ var useVisibleCount = (stdout, linesPerProject, panelVisible, panelHeight, minim
|
|
|
1062
1165
|
const calculatedCount = Math.max(1, Math.floor(availableRows / rowsPerProject));
|
|
1063
1166
|
return calculatedCount;
|
|
1064
1167
|
};
|
|
1065
|
-
const [visibleCount, setVisibleCount] =
|
|
1066
|
-
|
|
1168
|
+
const [visibleCount, setVisibleCount] = useState3(compute);
|
|
1169
|
+
useEffect3(() => {
|
|
1067
1170
|
const updateVisible = () => setVisibleCount(compute());
|
|
1068
1171
|
updateVisible();
|
|
1069
1172
|
stdout?.on("resize", updateVisible);
|
|
@@ -1075,7 +1178,7 @@ var useVisibleCount = (stdout, linesPerProject, panelVisible, panelHeight, minim
|
|
|
1075
1178
|
};
|
|
1076
1179
|
|
|
1077
1180
|
// src/presentation/App.tsx
|
|
1078
|
-
import { jsx as
|
|
1181
|
+
import { Fragment, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1079
1182
|
var extractRootFolder2 = (repository) => {
|
|
1080
1183
|
if (!repository?.root) {
|
|
1081
1184
|
return void 0;
|
|
@@ -1087,7 +1190,7 @@ var extractRootFolder2 = (repository) => {
|
|
|
1087
1190
|
return segments[segments.length - 1];
|
|
1088
1191
|
};
|
|
1089
1192
|
var minimumVisibleProjectCount = 4;
|
|
1090
|
-
var defaultHintMessage = "Select: j/k \xB7 Open: o \xB7 Quit: q \xB7 Refresh: r \xB7 CopyPath: c \xB7 Sort: s \xB7 Close: ctrl + c";
|
|
1193
|
+
var defaultHintMessage = "Select: j/k \xB7 Open: o \xB7 Quit: q \xB7 Refresh: r \xB7 CopyPath: c \xB7 Sort: s \xB7 Visibility: v \xB7 Close: ctrl + c";
|
|
1091
1194
|
var getCopyTargetPath = (view) => {
|
|
1092
1195
|
const root = view.repository?.root;
|
|
1093
1196
|
return root && root.length > 0 ? root : view.project.path;
|
|
@@ -1097,24 +1200,29 @@ var App = ({
|
|
|
1097
1200
|
onLaunch,
|
|
1098
1201
|
onTerminate,
|
|
1099
1202
|
onRefresh,
|
|
1100
|
-
useGitRootName = true
|
|
1101
|
-
showBranch = true,
|
|
1102
|
-
showPath = true
|
|
1203
|
+
useGitRootName = true
|
|
1103
1204
|
}) => {
|
|
1104
1205
|
const { exit } = useApp();
|
|
1105
|
-
const { stdout } =
|
|
1106
|
-
const [projectViews, setProjectViews] =
|
|
1107
|
-
const [isSortMenuOpen, setIsSortMenuOpen] =
|
|
1206
|
+
const { stdout } = useStdout2();
|
|
1207
|
+
const [projectViews, setProjectViews] = useState4(projects);
|
|
1208
|
+
const [isSortMenuOpen, setIsSortMenuOpen] = useState4(false);
|
|
1209
|
+
const [isVisibilityMenuOpen, setIsVisibilityMenuOpen] = useState4(false);
|
|
1210
|
+
const { visibilityPreferences, setVisibilityPreferences } = useVisibilityPreferences();
|
|
1211
|
+
const showBranch = visibilityPreferences.showBranch;
|
|
1212
|
+
const showPath = visibilityPreferences.showPath;
|
|
1213
|
+
const sortPanelHeight = 6;
|
|
1214
|
+
const visibilityPanelHeight = 5;
|
|
1108
1215
|
const linesPerProject = (showBranch ? 1 : 0) + (showPath ? 1 : 0) + 2;
|
|
1109
|
-
const
|
|
1110
|
-
const
|
|
1111
|
-
const
|
|
1112
|
-
const [
|
|
1113
|
-
const [
|
|
1114
|
-
const [
|
|
1115
|
-
const [
|
|
1116
|
-
const [
|
|
1117
|
-
const [
|
|
1216
|
+
const isAnyMenuOpen = isSortMenuOpen || isVisibilityMenuOpen;
|
|
1217
|
+
const panelHeight = isVisibilityMenuOpen ? visibilityPanelHeight : sortPanelHeight;
|
|
1218
|
+
const visibleCount = useVisibleCount(stdout, linesPerProject, isAnyMenuOpen, panelHeight, minimumVisibleProjectCount);
|
|
1219
|
+
const [index, setIndex] = useState4(0);
|
|
1220
|
+
const [hint, setHint] = useState4(defaultHintMessage);
|
|
1221
|
+
const [windowStart, setWindowStart] = useState4(0);
|
|
1222
|
+
const [releasedProjects, setReleasedProjects] = useState4(/* @__PURE__ */ new Set());
|
|
1223
|
+
const [launchedProjects, setLaunchedProjects] = useState4(/* @__PURE__ */ new Set());
|
|
1224
|
+
const [isRefreshing, setIsRefreshing] = useState4(false);
|
|
1225
|
+
const [sortMenuIndex, setSortMenuIndex] = useState4(0);
|
|
1118
1226
|
const { sortPreferences, setSortPreferences } = useSortPreferences();
|
|
1119
1227
|
const sortedProjects = useMemo2(() => {
|
|
1120
1228
|
const fallbackTime = 0;
|
|
@@ -1168,7 +1276,7 @@ var App = ({
|
|
|
1168
1276
|
return tieBreaker(a).localeCompare(tieBreaker(b));
|
|
1169
1277
|
});
|
|
1170
1278
|
}, [projectViews, sortPreferences]);
|
|
1171
|
-
|
|
1279
|
+
useEffect4(() => {
|
|
1172
1280
|
const handleSigint = () => {
|
|
1173
1281
|
exit();
|
|
1174
1282
|
};
|
|
@@ -1221,7 +1329,7 @@ var App = ({
|
|
|
1221
1329
|
},
|
|
1222
1330
|
[index, limit, sortedProjects.length]
|
|
1223
1331
|
);
|
|
1224
|
-
|
|
1332
|
+
useEffect4(() => {
|
|
1225
1333
|
setWindowStart((prevStart) => {
|
|
1226
1334
|
if (sortedProjects.length <= limit) {
|
|
1227
1335
|
return prevStart === 0 ? prevStart : 0;
|
|
@@ -1364,7 +1472,7 @@ var App = ({
|
|
|
1364
1472
|
}, 3e3);
|
|
1365
1473
|
}
|
|
1366
1474
|
}, [index, onTerminate, sortedProjects]);
|
|
1367
|
-
|
|
1475
|
+
useEffect4(() => {
|
|
1368
1476
|
setProjectViews(projects);
|
|
1369
1477
|
setReleasedProjects(/* @__PURE__ */ new Set());
|
|
1370
1478
|
setLaunchedProjects(/* @__PURE__ */ new Set());
|
|
@@ -1460,8 +1568,49 @@ var App = ({
|
|
|
1460
1568
|
}
|
|
1461
1569
|
return;
|
|
1462
1570
|
}
|
|
1571
|
+
if (isVisibilityMenuOpen) {
|
|
1572
|
+
if (key.escape || input === "\x1B") {
|
|
1573
|
+
setIsVisibilityMenuOpen(false);
|
|
1574
|
+
return;
|
|
1575
|
+
}
|
|
1576
|
+
if (input === "j") {
|
|
1577
|
+
setSortMenuIndex((prev) => {
|
|
1578
|
+
const last = 1;
|
|
1579
|
+
const next = prev + 1;
|
|
1580
|
+
return next > last ? 0 : next;
|
|
1581
|
+
});
|
|
1582
|
+
return;
|
|
1583
|
+
}
|
|
1584
|
+
if (input === "k") {
|
|
1585
|
+
setSortMenuIndex((prev) => {
|
|
1586
|
+
const last = 1;
|
|
1587
|
+
const next = prev - 1;
|
|
1588
|
+
return next < 0 ? last : next;
|
|
1589
|
+
});
|
|
1590
|
+
return;
|
|
1591
|
+
}
|
|
1592
|
+
const toggleCurrent = () => {
|
|
1593
|
+
if (sortMenuIndex === 0) {
|
|
1594
|
+
setVisibilityPreferences((prev) => ({ ...prev, showBranch: !prev.showBranch }));
|
|
1595
|
+
return;
|
|
1596
|
+
}
|
|
1597
|
+
setVisibilityPreferences((prev) => ({ ...prev, showPath: !prev.showPath }));
|
|
1598
|
+
};
|
|
1599
|
+
if (input === " ") {
|
|
1600
|
+
toggleCurrent();
|
|
1601
|
+
}
|
|
1602
|
+
return;
|
|
1603
|
+
}
|
|
1463
1604
|
if (input === "S" || input === "s") {
|
|
1605
|
+
setIsVisibilityMenuOpen(false);
|
|
1464
1606
|
setIsSortMenuOpen(true);
|
|
1607
|
+
setSortMenuIndex(0);
|
|
1608
|
+
return;
|
|
1609
|
+
}
|
|
1610
|
+
if (input === "v" || input === "V") {
|
|
1611
|
+
setIsSortMenuOpen(false);
|
|
1612
|
+
setIsVisibilityMenuOpen(true);
|
|
1613
|
+
setSortMenuIndex(0);
|
|
1465
1614
|
return;
|
|
1466
1615
|
}
|
|
1467
1616
|
if (input === "j" || key.downArrow) {
|
|
@@ -1501,19 +1650,19 @@ var App = ({
|
|
|
1501
1650
|
visibleProjects: sortedProjects.slice(clampedStart, end)
|
|
1502
1651
|
};
|
|
1503
1652
|
}, [limit, sortedProjects, windowStart]);
|
|
1504
|
-
return /* @__PURE__ */
|
|
1653
|
+
return /* @__PURE__ */ jsx6(
|
|
1505
1654
|
LayoutManager,
|
|
1506
1655
|
{
|
|
1507
1656
|
layoutMode: getLayoutMode(),
|
|
1508
|
-
panelVisible:
|
|
1509
|
-
list: /* @__PURE__ */
|
|
1510
|
-
|
|
1657
|
+
panelVisible: isAnyMenuOpen,
|
|
1658
|
+
list: /* @__PURE__ */ jsx6(
|
|
1659
|
+
Box6,
|
|
1511
1660
|
{
|
|
1512
1661
|
flexDirection: "column",
|
|
1513
1662
|
borderStyle: "round",
|
|
1514
1663
|
borderColor: "green",
|
|
1515
1664
|
width: typeof stdout?.columns === "number" ? stdout.columns : void 0,
|
|
1516
|
-
children: sortedProjects.length === 0 ? /* @__PURE__ */
|
|
1665
|
+
children: sortedProjects.length === 0 ? /* @__PURE__ */ jsx6(Text4, { children: "No Unity Hub projects were found." }) : /* @__PURE__ */ jsx6(
|
|
1517
1666
|
ProjectList,
|
|
1518
1667
|
{
|
|
1519
1668
|
visibleProjects,
|
|
@@ -1530,24 +1679,37 @@ var App = ({
|
|
|
1530
1679
|
)
|
|
1531
1680
|
}
|
|
1532
1681
|
),
|
|
1533
|
-
panel: /* @__PURE__ */
|
|
1534
|
-
/* @__PURE__ */
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1682
|
+
panel: /* @__PURE__ */ jsxs5(Box6, { flexDirection: "column", width: typeof stdout?.columns === "number" ? stdout.columns : void 0, children: [
|
|
1683
|
+
isSortMenuOpen && /* @__PURE__ */ jsxs5(Fragment, { children: [
|
|
1684
|
+
/* @__PURE__ */ jsx6(Text4, { children: "Sort Settings" }),
|
|
1685
|
+
/* @__PURE__ */ jsx6(Box6, { marginTop: 1, children: /* @__PURE__ */ jsx6(
|
|
1686
|
+
SortPanel,
|
|
1687
|
+
{
|
|
1688
|
+
sortPreferences,
|
|
1689
|
+
focusedIndex: sortMenuIndex,
|
|
1690
|
+
width: typeof stdout?.columns === "number" ? stdout.columns : void 0
|
|
1691
|
+
}
|
|
1692
|
+
) })
|
|
1693
|
+
] }),
|
|
1694
|
+
isVisibilityMenuOpen && /* @__PURE__ */ jsxs5(Fragment, { children: [
|
|
1695
|
+
/* @__PURE__ */ jsx6(Text4, { children: "Visibility Settings" }),
|
|
1696
|
+
/* @__PURE__ */ jsx6(Box6, { marginTop: 1, children: /* @__PURE__ */ jsx6(
|
|
1697
|
+
VisibilityPanel,
|
|
1698
|
+
{
|
|
1699
|
+
visibility: visibilityPreferences,
|
|
1700
|
+
focusedIndex: sortMenuIndex,
|
|
1701
|
+
width: typeof stdout?.columns === "number" ? stdout.columns : void 0
|
|
1702
|
+
}
|
|
1703
|
+
) })
|
|
1704
|
+
] })
|
|
1543
1705
|
] }),
|
|
1544
|
-
statusBar:
|
|
1706
|
+
statusBar: isAnyMenuOpen ? /* @__PURE__ */ jsx6(Text4, { wrap: "truncate", children: "Select: j/k, Toggle: Space, Back: Esc" }) : /* @__PURE__ */ jsx6(Text4, { wrap: "truncate", children: hint })
|
|
1545
1707
|
}
|
|
1546
1708
|
);
|
|
1547
1709
|
};
|
|
1548
1710
|
|
|
1549
1711
|
// src/index.tsx
|
|
1550
|
-
import { jsx as
|
|
1712
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1551
1713
|
var bootstrap = async () => {
|
|
1552
1714
|
const unityHubReader = new UnityHubProjectsReader();
|
|
1553
1715
|
const gitRepositoryInfoReader = new GitRepositoryInfoReader();
|
|
@@ -1578,21 +1740,17 @@ var bootstrap = async () => {
|
|
|
1578
1740
|
unityTempDirectoryCleaner
|
|
1579
1741
|
);
|
|
1580
1742
|
const useGitRootName = !process2.argv.includes("--no-git-root-name");
|
|
1581
|
-
const showBranch = !process2.argv.includes("--hide-branch");
|
|
1582
|
-
const showPath = !process2.argv.includes("--hide-path");
|
|
1583
1743
|
try {
|
|
1584
1744
|
const projects = await listProjectsUseCase.execute();
|
|
1585
1745
|
const { waitUntilExit } = render(
|
|
1586
|
-
/* @__PURE__ */
|
|
1746
|
+
/* @__PURE__ */ jsx7(
|
|
1587
1747
|
App,
|
|
1588
1748
|
{
|
|
1589
1749
|
projects,
|
|
1590
1750
|
onLaunch: (project) => launchProjectUseCase.execute(project),
|
|
1591
1751
|
onTerminate: (project) => terminateProjectUseCase.execute(project),
|
|
1592
1752
|
onRefresh: () => listProjectsUseCase.execute(),
|
|
1593
|
-
useGitRootName
|
|
1594
|
-
showBranch,
|
|
1595
|
-
showPath
|
|
1753
|
+
useGitRootName
|
|
1596
1754
|
}
|
|
1597
1755
|
)
|
|
1598
1756
|
);
|