@detergent-software/atk 3.0.0-dev.8 → 3.0.0-dev.9
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/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +2 -3
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +12 -2
- package/build/commands/browse.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +2 -3
- package/build/commands/diff.js.map +1 -1
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +2 -15
- package/build/commands/info.js.map +1 -1
- package/build/commands/install.js +1 -1
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts +2 -2
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +132 -38
- package/build/commands/list.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +2 -7
- package/build/commands/prune.js.map +1 -1
- package/build/commands/sync.js +4 -4
- package/build/commands/sync.js.map +1 -1
- package/build/components/AssetTable.d.ts +4 -3
- package/build/components/AssetTable.d.ts.map +1 -1
- package/build/components/AssetTable.js +30 -40
- package/build/components/AssetTable.js.map +1 -1
- package/build/components/FilterBar.d.ts +10 -3
- package/build/components/FilterBar.d.ts.map +1 -1
- package/build/components/FilterBar.js +4 -4
- package/build/components/FilterBar.js.map +1 -1
- package/build/components/Link.d.ts +7 -0
- package/build/components/Link.d.ts.map +1 -0
- package/build/components/Link.js +6 -0
- package/build/components/Link.js.map +1 -0
- package/build/components/ListActionBar.d.ts +9 -0
- package/build/components/ListActionBar.d.ts.map +1 -0
- package/build/components/ListActionBar.js +30 -0
- package/build/components/ListActionBar.js.map +1 -0
- package/build/components/ListBrowseList.d.ts +25 -0
- package/build/components/ListBrowseList.d.ts.map +1 -0
- package/build/components/ListBrowseList.js +55 -0
- package/build/components/ListBrowseList.js.map +1 -0
- package/build/components/ListExpandedRow.d.ts +36 -0
- package/build/components/ListExpandedRow.d.ts.map +1 -0
- package/build/components/ListExpandedRow.js +46 -0
- package/build/components/ListExpandedRow.js.map +1 -0
- package/build/components/ListHelpBar.d.ts +19 -0
- package/build/components/ListHelpBar.d.ts.map +1 -0
- package/build/components/ListHelpBar.js +11 -0
- package/build/components/ListHelpBar.js.map +1 -0
- package/build/components/index.d.ts +5 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +5 -0
- package/build/components/index.js.map +1 -1
- package/build/hooks/useListActions.d.ts +14 -0
- package/build/hooks/useListActions.d.ts.map +1 -0
- package/build/hooks/useListActions.js +151 -0
- package/build/hooks/useListActions.js.map +1 -0
- package/build/hooks/useListState.d.ts +147 -0
- package/build/hooks/useListState.d.ts.map +1 -0
- package/build/hooks/useListState.js +445 -0
- package/build/hooks/useListState.js.map +1 -0
- package/build/lib/format.d.ts +6 -0
- package/build/lib/format.d.ts.map +1 -0
- package/build/lib/format.js +18 -0
- package/build/lib/format.js.map +1 -0
- package/build/lib/github.d.ts +8 -0
- package/build/lib/github.d.ts.map +1 -1
- package/build/lib/github.js +9 -0
- package/build/lib/github.js.map +1 -1
- package/build/lib/installer.js +1 -1
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +13 -13
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +37 -39
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +2 -2
- package/build/lib/schemas/lockfile.js +1 -1
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/uninstaller.d.ts.map +1 -1
- package/build/lib/uninstaller.js +2 -5
- package/build/lib/uninstaller.js.map +1 -1
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +1 -4
- package/build/lib/updater.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AssetTypeFilter } from '../hooks/useBrowseState.js';
|
|
2
1
|
interface FilterBarProps {
|
|
2
|
+
/** Abbreviated labels for narrow terminals (defaults to browse abbreviated labels) */
|
|
3
|
+
abbreviatedTabLabels?: Record<string, string>;
|
|
3
4
|
/** Current filter text */
|
|
4
5
|
filterText: string;
|
|
5
6
|
/** Whether in filter input mode */
|
|
@@ -10,13 +11,19 @@ interface FilterBarProps {
|
|
|
10
11
|
orgOnly?: boolean;
|
|
11
12
|
/** Number of items matching current filters */
|
|
12
13
|
resultCount: number;
|
|
14
|
+
/** Optional sort indicator text to display (e.g., "Sort: Name ↑") */
|
|
15
|
+
sortIndicator?: string;
|
|
13
16
|
/** Terminal width for responsive layout */
|
|
14
17
|
terminalWidth: number;
|
|
15
18
|
/** Total number of items in registry */
|
|
16
19
|
totalCount: number;
|
|
17
20
|
/** Active type tab */
|
|
18
|
-
typeFilter:
|
|
21
|
+
typeFilter: string;
|
|
22
|
+
/** Full labels for type tabs (defaults to browse TYPE_TAB_LABELS) */
|
|
23
|
+
typeTabLabels?: Record<string, string>;
|
|
24
|
+
/** Ordered list of type tab keys (defaults to browse TYPE_TABS) */
|
|
25
|
+
typeTabs?: readonly string[];
|
|
19
26
|
}
|
|
20
|
-
export default function FilterBar({ filterText, inputMode, org, orgOnly, resultCount, terminalWidth, totalCount, typeFilter, }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default function FilterBar({ abbreviatedTabLabels, filterText, inputMode, org, orgOnly, resultCount, sortIndicator, terminalWidth, totalCount, typeFilter, typeTabLabels, typeTabs, }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
21
28
|
export {};
|
|
22
29
|
//# sourceMappingURL=FilterBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAeA,UAAU,cAAc;IACtB,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,oBAAqD,EACrD,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAyD,EACzD,QAAoB,GACrB,EAAE,cAAc,2CAwDhB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
3
|
import { TYPE_TAB_LABELS, TYPE_TABS } from '../hooks/useBrowseState.js';
|
|
4
|
-
const
|
|
4
|
+
const DEFAULT_ABBREVIATED_TAB_LABELS = {
|
|
5
5
|
agent: 'Agent',
|
|
6
6
|
all: 'All',
|
|
7
7
|
bundle: 'Bundle',
|
|
@@ -11,10 +11,10 @@ const ABBREVIATED_TAB_LABELS = {
|
|
|
11
11
|
rule: 'Rule',
|
|
12
12
|
skill: 'Skill',
|
|
13
13
|
};
|
|
14
|
-
export default function FilterBar({ filterText, inputMode, org, orgOnly = false, resultCount, terminalWidth, totalCount, typeFilter, }) {
|
|
14
|
+
export default function FilterBar({ abbreviatedTabLabels = DEFAULT_ABBREVIATED_TAB_LABELS, filterText, inputMode, org, orgOnly = false, resultCount, sortIndicator, terminalWidth, totalCount, typeFilter, typeTabLabels = TYPE_TAB_LABELS, typeTabs = TYPE_TABS, }) {
|
|
15
15
|
const counterLabel = typeFilter === 'bundle' ? 'bundles' : typeFilter === 'all' ? 'items' : 'assets';
|
|
16
|
-
return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Filter: " }), filterText ? (_jsx(Text, { children: filterText })) : inputMode === 'filter' ? (_jsx(Text, { dimColor: true, children: "type to filter..." })) : (_jsx(Text, { dimColor: true, children: "press / to filter" })), inputMode === 'filter' && _jsx(Text, { color: 'cyan', children: "|" })] }), _jsx(Box, { flexGrow: 1 }), org && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsxs(Text, { color: 'cyan', children: ["@", org] }), _jsx(Text, { dimColor: true, children: " " }), _jsxs(Text, { bold: true, color: 'cyan', children: ["[", orgOnly ? 'org only' : 'all', "]"] }), _jsx(Text, { dimColor: true, children: ' ' })] })), _jsxs(Text, { dimColor: true, children: [resultCount, "/", totalCount, " ", counterLabel] })] }), _jsx(Box, { gap: 1, children:
|
|
17
|
-
const label = terminalWidth < 80 ?
|
|
16
|
+
return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Filter: " }), filterText ? (_jsx(Text, { children: filterText })) : inputMode === 'filter' ? (_jsx(Text, { dimColor: true, children: "type to filter..." })) : (_jsx(Text, { dimColor: true, children: "press / to filter" })), inputMode === 'filter' && _jsx(Text, { color: 'cyan', children: "|" })] }), _jsx(Box, { flexGrow: 1 }), sortIndicator && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: sortIndicator }), _jsx(Text, { dimColor: true, children: ' ' })] })), org && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsxs(Text, { color: 'cyan', children: ["@", org] }), _jsx(Text, { dimColor: true, children: " " }), _jsxs(Text, { bold: true, color: 'cyan', children: ["[", orgOnly ? 'org only' : 'all', "]"] }), _jsx(Text, { dimColor: true, children: ' ' })] })), _jsxs(Text, { dimColor: true, children: [resultCount, "/", totalCount, " ", counterLabel] })] }), _jsx(Box, { gap: 1, children: typeTabs.map((tab) => {
|
|
17
|
+
const label = terminalWidth < 80 ? abbreviatedTabLabels[tab] : typeTabLabels[tab];
|
|
18
18
|
return (_jsxs(Text, { bold: tab === typeFilter, color: tab === typeFilter ? 'cyan' : undefined, dimColor: tab !== typeFilter, children: ["[", label, "]"] }, tab));
|
|
19
19
|
}) })] }));
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBar.js","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"FilterBar.js","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,2CAExD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAO3B,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAa;IACvD,OAAO,KAAC,IAAI,cAAE,WAAW,GAAG,OAAO,QAAQ,cAAc,GAAQ,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ActionResultMode, ConfirmingActionMode, ExecutingActionMode } from '../hooks/useListState.js';
|
|
2
|
+
type ListActionBarMode = ActionResultMode | ConfirmingActionMode | ExecutingActionMode;
|
|
3
|
+
interface ListActionBarProps {
|
|
4
|
+
/** Current action-related mode */
|
|
5
|
+
mode: ListActionBarMode;
|
|
6
|
+
}
|
|
7
|
+
export default function ListActionBar({ mode }: ListActionBarProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ListActionBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListActionBar.d.ts","sourceRoot":"","sources":["../../src/components/ListActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI5G,KAAK,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEvF,UAAU,kBAAkB;IAC1B,kCAAkC;IAClC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CA8BjE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import Spinner from './Spinner.js';
|
|
4
|
+
export default function ListActionBar({ mode }) {
|
|
5
|
+
switch (mode.kind) {
|
|
6
|
+
case 'action-result':
|
|
7
|
+
if (mode.success) {
|
|
8
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { color: 'green', children: ["\u2713 ", mode.message, ". Press any key to continue."] }) }));
|
|
9
|
+
}
|
|
10
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { color: 'red', children: ["\u2715 ", mode.message, ". Press any key to continue."] }) }));
|
|
11
|
+
case 'confirming-action':
|
|
12
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsx(Text, { color: 'yellow', children: getConfirmationText(mode) }) }));
|
|
13
|
+
case 'executing-action':
|
|
14
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsx(Spinner, { message: mode.message }) }));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function getConfirmationText(mode) {
|
|
18
|
+
const { name } = mode.asset;
|
|
19
|
+
switch (mode.actionKind) {
|
|
20
|
+
case 'freeze-toggle':
|
|
21
|
+
return mode.asset.frozen ? `Thaw ${name}? [Y/N]` : `Freeze ${name}? [Y/N]`;
|
|
22
|
+
case 'pin-toggle':
|
|
23
|
+
return mode.asset.pinnedVersion ? `Unpin ${name}? [Y/N]` : `Pin ${name}? [Y/N]`;
|
|
24
|
+
case 'uninstall':
|
|
25
|
+
return `Uninstall ${name}? [Y/N]`;
|
|
26
|
+
case 'update':
|
|
27
|
+
return `Update ${name}? [Y/N]`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ListActionBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListActionBar.js","sourceRoot":"","sources":["../../src/components/ListActionBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,OAAO,OAAO,MAAM,cAAc,CAAC;AASnC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IAChE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,eAAe;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBAAI,IAAI,CAAC,OAAO,oCAAoC,GACnE,CACP,CAAC;YACJ,CAAC;YACD,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,IAAI,CAAC,OAAO,oCAAoC,GACjE,CACP,CAAC;QAEJ,KAAK,mBAAmB;YACtB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,mBAAmB,CAAC,IAAI,CAAC,GAAQ,GACnD,CACP,CAAC;QAEJ,KAAK,kBAAkB;YACrB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,KAAC,OAAO,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,GAC9B,CACP,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAE5B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC;QAC7E,KAAK,YAAY;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC;QAClF,KAAK,WAAW;YACd,OAAO,aAAa,IAAI,SAAS,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,SAAS,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ListTypeFilter } from '../hooks/useListState.js';
|
|
2
|
+
import type { InstalledAsset } from '../lib/schemas/lockfile.js';
|
|
3
|
+
interface ListBrowseListProps {
|
|
4
|
+
/** Index of the cursor in the items array */
|
|
5
|
+
cursorIndex: number;
|
|
6
|
+
/** Index of expanded item, or null */
|
|
7
|
+
expandedIndex: null | number;
|
|
8
|
+
/** Filtered and sorted items to display */
|
|
9
|
+
items: InstalledAsset[];
|
|
10
|
+
/** Map of asset key (type/name) to latest available version */
|
|
11
|
+
outdatedMap: Map<string, string>;
|
|
12
|
+
/** GitHub URL to the expanded asset's README, or null */
|
|
13
|
+
readmeUrl: null | string;
|
|
14
|
+
/** First visible item index */
|
|
15
|
+
scrollOffset: number;
|
|
16
|
+
/** Terminal width for responsive layout */
|
|
17
|
+
terminalWidth: number;
|
|
18
|
+
/** Active type filter tab */
|
|
19
|
+
typeFilter: ListTypeFilter;
|
|
20
|
+
/** Available height in rows for the list area */
|
|
21
|
+
viewportHeight: number;
|
|
22
|
+
}
|
|
23
|
+
export default function ListBrowseList({ cursorIndex, expandedIndex, items, outdatedMap, readmeUrl, scrollOffset, terminalWidth, typeFilter, viewportHeight, }: ListBrowseListProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=ListBrowseList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBrowseList.d.ts","sourceRoot":"","sources":["../../src/components/ListBrowseList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,UAAU,mBAAmB;IAC3B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,+DAA+D;IAC/D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yDAAyD;IACzD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,WAAW,EACX,aAAa,EACb,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACf,EAAE,mBAAmB,2CA2JrB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { getBreakpoint } from '../lib/breakpoints.js';
|
|
4
|
+
import { formatDate } from '../lib/format.js';
|
|
5
|
+
import ListExpandedRow, { computeExpandedLines } from './ListExpandedRow.js';
|
|
6
|
+
const COLUMN_WIDTHS = {
|
|
7
|
+
medium: { cursor: 3, installDate: 14, name: 30, org: 16, status: 8, type: 14, version: 18 },
|
|
8
|
+
narrow: { cursor: 3, installDate: 14, name: 30, status: 8, version: 18 },
|
|
9
|
+
wide: { cursor: 3, installDate: 14, name: 40, org: 20, status: 8, type: 18, version: 22 },
|
|
10
|
+
};
|
|
11
|
+
export default function ListBrowseList({ cursorIndex, expandedIndex, items, outdatedMap, readmeUrl, scrollOffset, terminalWidth, typeFilter, viewportHeight, }) {
|
|
12
|
+
if (items.length === 0) {
|
|
13
|
+
const label = typeFilter === 'all' ? 'installed assets' : `installed ${typeFilter} assets`;
|
|
14
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: _jsx(Box, { paddingY: 1, children: _jsxs(Text, { dimColor: true, children: ["No ", label, " match your filters."] }) }) }));
|
|
15
|
+
}
|
|
16
|
+
const bp = getBreakpoint(terminalWidth);
|
|
17
|
+
const showType = bp !== 'narrow';
|
|
18
|
+
const showOrg = bp !== 'narrow';
|
|
19
|
+
const cols = COLUMN_WIDTHS[bp];
|
|
20
|
+
const orgWidth = 'org' in cols ? cols.org : 0;
|
|
21
|
+
const typeWidth = 'type' in cols ? cols.type : 0;
|
|
22
|
+
const aboveCount = scrollOffset;
|
|
23
|
+
// Compute expanded row line height for the expanded item (if any)
|
|
24
|
+
const expandedAsset = expandedIndex !== null ? items[expandedIndex] : null;
|
|
25
|
+
const visibleItems = [];
|
|
26
|
+
// Start at 1 to account for the column header line
|
|
27
|
+
let usedLines = 1;
|
|
28
|
+
// Reserve a line for the "▲ more above" indicator when scrolled
|
|
29
|
+
if (scrollOffset > 0)
|
|
30
|
+
usedLines += 1;
|
|
31
|
+
for (let i = scrollOffset; i < items.length; i++) {
|
|
32
|
+
let expandedLines = 0;
|
|
33
|
+
if (i === expandedIndex && expandedAsset) {
|
|
34
|
+
expandedLines = computeExpandedLines(expandedAsset, readmeUrl);
|
|
35
|
+
}
|
|
36
|
+
const linesNeeded = 1 + expandedLines;
|
|
37
|
+
// Reserve a line for the "▼ more below" indicator when there are more items after this one
|
|
38
|
+
const limit = i < items.length - 1 ? viewportHeight - 1 : viewportHeight;
|
|
39
|
+
if (usedLines + linesNeeded > limit)
|
|
40
|
+
break;
|
|
41
|
+
visibleItems.push({ index: i, item: items[i] });
|
|
42
|
+
usedLines += linesNeeded;
|
|
43
|
+
}
|
|
44
|
+
const lastVisibleIndex = visibleItems.length > 0 ? visibleItems[visibleItems.length - 1].index : scrollOffset;
|
|
45
|
+
const belowCount = items.length - lastVisibleIndex - 1;
|
|
46
|
+
return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, marginRight: 1, width: cols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { bold: true, dimColor: true, children: "Org" }) })), showType && (_jsx(Box, { flexShrink: 0, width: typeWidth, children: _jsx(Text, { bold: true, dimColor: true, children: "Type" }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexShrink: 0, width: cols.installDate, children: _jsx(Text, { bold: true, dimColor: true, children: "Installed" }) })] }), aboveCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25B2 ", aboveCount, " more above"] }), visibleItems.map(({ index, item }) => {
|
|
47
|
+
const isCursor = index === cursorIndex;
|
|
48
|
+
const isExpanded = index === expandedIndex;
|
|
49
|
+
const assetKey = `${item.type}/${item.name}`;
|
|
50
|
+
const latestVersion = outdatedMap.get(assetKey);
|
|
51
|
+
const isOutdated = latestVersion !== undefined;
|
|
52
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { color: 'cyan', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, marginRight: 1, width: cols.name, children: _jsx(Text, { bold: isCursor, color: 'cyan', wrap: 'truncate', children: item.name }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: item.org ? `@${item.org}` : '' }) })), showType && (_jsx(Box, { flexShrink: 0, width: typeWidth, children: _jsx(Text, { wrap: 'truncate', children: item.type }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: isOutdated ? (_jsxs(Text, { wrap: 'truncate', children: [item.version, " ", _jsxs(Text, { color: 'yellow', children: ['→', " ", latestVersion] })] })) : (_jsx(Text, { wrap: 'truncate', children: item.version })) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsxs(Text, { wrap: 'truncate', children: [item.pinnedVersion ? '📌' : '', item.frozen ? '🧊' : ''] }) }), _jsx(Box, { flexShrink: 0, width: cols.installDate, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: formatDate(item.installedAt) }) })] }), isExpanded && (_jsx(ListExpandedRow, { asset: item, latestVersion: latestVersion, readmeUrl: readmeUrl, terminalWidth: terminalWidth }))] }, assetKey));
|
|
53
|
+
}), belowCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25BC ", belowCount, " more below"] })] }));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ListBrowseList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBrowseList.js","sourceRoot":"","sources":["../../src/components/ListBrowseList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAKhC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,EAAE,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3F,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACxE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;CACjF,CAAC;AAuBX,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,WAAW,EACX,aAAa,EACb,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACM;IACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,UAAU,SAAS,CAAC;QAC3F,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,YAChE,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,MAAC,IAAI,IAAC,QAAQ,0BAAK,KAAK,4BAA4B,GAChD,GACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,EAAE,KAAK,QAAQ,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,KAAK,QAAQ,CAAC;IAChC,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG,YAAY,CAAC;IAEhC,kEAAkE;IAClE,MAAM,aAAa,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,MAAM,YAAY,GAAmD,EAAE,CAAC;IACxE,mDAAmD;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,gEAAgE;IAChE,IAAI,YAAY,GAAG,CAAC;QAAE,SAAS,IAAI,CAAC,CAAC;IAErC,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,aAAa,IAAI,aAAa,EAAE,CAAC;YACzC,aAAa,GAAG,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC;QACtC,2FAA2F;QAC3F,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QACzE,IAAI,SAAS,GAAG,WAAW,GAAG,KAAK;YAAE,MAAM;QAC3C,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC;QACjD,SAAS,IAAI,WAAW,CAAC;IAC3B,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/G,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC;IAEvD,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,aAEhE,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,oBAAS,GACV,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAClD,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,2BAEZ,GACH,EACL,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,YACjC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,0BAEZ,GACH,CACP,EACA,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,YAClC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,2BAEZ,GACH,CACP,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,YACrC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,8BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,6BAEZ,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,YACzC,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,gCAEZ,GACH,IACF,EACL,UAAU,GAAG,CAAC,IAAI,MAAC,IAAI,IAAC,QAAQ,+BAAK,UAAU,mBAAmB,EAClE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;gBACpC,MAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,CAAC;gBACvC,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa,CAAC;gBAC3C,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,CAAC;gBAE/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAQ,GAC9C,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,YAClD,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,YAC/C,IAAI,CAAC,IAAI,GACL,GACH,EACL,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,YACjC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1B,GACH,CACP,EACA,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,YAClC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,YAAE,IAAI,CAAC,IAAI,GAAQ,GACpC,CACP,EACD,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,YACpC,UAAU,CAAC,CAAC,CAAC,CACZ,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,aAClB,IAAI,CAAC,OAAO,OAAE,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,aAAE,GAAG,OAAG,aAAa,IAAQ,IAC3D,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,YAAE,IAAI,CAAC,OAAO,GAAQ,CAC5C,GACG,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,YACpC,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,aAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAC9B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IACnB,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,YACzC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,UAAU,YAC3B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GACxB,GACH,IACF,EACL,UAAU,IAAI,CACb,KAAC,eAAe,IACd,KAAK,EAAE,IAAI,EACX,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,GAC5B,CACH,KAlD8B,QAAQ,CAmDnC,CACP,CAAC;YACJ,CAAC,CAAC,EACD,UAAU,GAAG,CAAC,IAAI,MAAC,IAAI,IAAC,QAAQ,+BAAK,UAAU,mBAAmB,IAC/D,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { InstalledAsset } from '../lib/schemas/lockfile.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the number of lines the expanded row will consume for viewport calculations.
|
|
4
|
+
* This accounts for the base lines, variable file count, pinned/frozen indicators, and readme URL.
|
|
5
|
+
*/
|
|
6
|
+
export declare function computeExpandedLines(asset: InstalledAsset, readmeUrl: null | string): number;
|
|
7
|
+
/**
|
|
8
|
+
* Number of fixed lines rendered by the expanded row, excluding
|
|
9
|
+
* variable-length sections (file list and readme URL).
|
|
10
|
+
*
|
|
11
|
+
* Breakdown:
|
|
12
|
+
* 1 - top separator
|
|
13
|
+
* 1 - description (or empty)
|
|
14
|
+
* 1 - installed files header
|
|
15
|
+
* 1 - version / latest line
|
|
16
|
+
* 1 - install date line
|
|
17
|
+
* 1 - bottom separator
|
|
18
|
+
* ---
|
|
19
|
+
* 6 base lines
|
|
20
|
+
*
|
|
21
|
+
* Pinned, frozen, and readme URL lines are added dynamically.
|
|
22
|
+
*/
|
|
23
|
+
export declare const LIST_EXPANDED_BASE_LINES = 6;
|
|
24
|
+
interface ListExpandedRowProps {
|
|
25
|
+
/** The installed asset to show details for */
|
|
26
|
+
asset: InstalledAsset;
|
|
27
|
+
/** Latest available version from the registry, if known */
|
|
28
|
+
latestVersion: string | undefined;
|
|
29
|
+
/** GitHub URL to the asset's README, or null if unavailable */
|
|
30
|
+
readmeUrl: null | string;
|
|
31
|
+
/** Terminal width for responsive layout */
|
|
32
|
+
terminalWidth: number;
|
|
33
|
+
}
|
|
34
|
+
export default function ListExpandedRow({ asset, latestVersion, readmeUrl, terminalWidth, }: ListExpandedRowProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=ListExpandedRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListExpandedRow.d.ts","sourceRoot":"","sources":["../../src/components/ListExpandedRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,IAAI,GAAG,MAAM,GACvB,MAAM,CAgBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,UAAU,oBAAoB;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,cAAc,CAAC;IACtB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+DAA+D;IAC/D,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,2CA+EtB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { formatDate } from '../lib/format.js';
|
|
4
|
+
import Link from './Link.js';
|
|
5
|
+
/**
|
|
6
|
+
* Compute the number of lines the expanded row will consume for viewport calculations.
|
|
7
|
+
* This accounts for the base lines, variable file count, pinned/frozen indicators, and readme URL.
|
|
8
|
+
*/
|
|
9
|
+
export function computeExpandedLines(asset, readmeUrl) {
|
|
10
|
+
let lines = LIST_EXPANDED_BASE_LINES;
|
|
11
|
+
// Each installed file adds a line
|
|
12
|
+
lines += asset.files.length;
|
|
13
|
+
// Pinned indicator adds a line
|
|
14
|
+
if (asset.pinnedVersion)
|
|
15
|
+
lines += 1;
|
|
16
|
+
// Frozen indicator adds a line
|
|
17
|
+
if (asset.frozen)
|
|
18
|
+
lines += 1;
|
|
19
|
+
// Readme URL: 1 for marginTop + 1 for the URL line
|
|
20
|
+
if (readmeUrl)
|
|
21
|
+
lines += 2;
|
|
22
|
+
return lines;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Number of fixed lines rendered by the expanded row, excluding
|
|
26
|
+
* variable-length sections (file list and readme URL).
|
|
27
|
+
*
|
|
28
|
+
* Breakdown:
|
|
29
|
+
* 1 - top separator
|
|
30
|
+
* 1 - description (or empty)
|
|
31
|
+
* 1 - installed files header
|
|
32
|
+
* 1 - version / latest line
|
|
33
|
+
* 1 - install date line
|
|
34
|
+
* 1 - bottom separator
|
|
35
|
+
* ---
|
|
36
|
+
* 6 base lines
|
|
37
|
+
*
|
|
38
|
+
* Pinned, frozen, and readme URL lines are added dynamically.
|
|
39
|
+
*/
|
|
40
|
+
export const LIST_EXPANDED_BASE_LINES = 6;
|
|
41
|
+
export default function ListExpandedRow({ asset, latestVersion, readmeUrl, terminalWidth, }) {
|
|
42
|
+
const separatorWidth = Math.max(20, terminalWidth - 10);
|
|
43
|
+
const isOutdated = latestVersion !== undefined && latestVersion !== asset.version;
|
|
44
|
+
return (_jsxs(Box, { flexDirection: 'column', paddingLeft: 4, children: [_jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) }), _jsx(Text, { wrap: 'truncate', children: asset.description ?? '' }), _jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { dimColor: true, children: ["Files (", asset.files.length, "):"] }), asset.files.map((f) => (_jsxs(Text, { children: [' ', _jsx(Text, { color: 'cyan', children: f.sourcePath })] }, f.sourcePath)))] }), asset.pinnedVersion && (_jsxs(Text, { children: [_jsx(Text, { children: '📌 Pinned' }), _jsxs(Text, { dimColor: true, children: [" to ", asset.pinnedVersion] })] })), asset.frozen && (_jsxs(Text, { children: [_jsx(Text, { children: '🧊 Frozen' }), _jsx(Text, { dimColor: true, children: " \u2014 sync and update will not overwrite" })] })), _jsxs(Box, { gap: 2, children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Installed: " }), _jsxs(Text, { children: ["v", asset.version] })] }), isOutdated && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Latest: " }), _jsxs(Text, { color: 'yellow', children: ["v", latestVersion] })] })), latestVersion !== undefined && !isOutdated && (_jsx(Text, { color: 'green', children: '✓ up to date' }))] }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Installed: " }), _jsx(Text, { children: formatDate(asset.installedAt) }), asset.updatedAt && (_jsxs(Text, { dimColor: true, children: [" (updated ", formatDate(asset.updatedAt), ")"] }))] }), readmeUrl && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "README: " }), _jsx(Text, { color: 'cyan', children: _jsx(Link, { url: readmeUrl, children: "view on GitHub" }) })] })), _jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) })] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ListExpandedRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListExpandedRow.js","sourceRoot":"","sources":["../../src/components/ListExpandedRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface ListHelpBarProps {
|
|
2
|
+
/** Whether the current asset supports actions (has a selected asset) */
|
|
3
|
+
canAct: boolean;
|
|
4
|
+
/** Whether the current row is expanded */
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
/** Whether the project has an org configured */
|
|
7
|
+
hasOrg?: boolean;
|
|
8
|
+
/** Whether any installed assets have available updates */
|
|
9
|
+
hasOutdated: boolean;
|
|
10
|
+
/** Current input mode */
|
|
11
|
+
inputMode: 'filter' | 'navigate';
|
|
12
|
+
/** Whether the currently selected asset is frozen */
|
|
13
|
+
isFrozen: boolean;
|
|
14
|
+
/** Whether the currently selected asset is pinned */
|
|
15
|
+
isPinned: boolean;
|
|
16
|
+
}
|
|
17
|
+
export default function ListHelpBar({ canAct, expanded, hasOrg, hasOutdated, inputMode, isFrozen, isPinned, }: ListHelpBarProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ListHelpBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListHelpBar.d.ts","sourceRoot":"","sources":["../../src/components/ListHelpBar.tsx"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,EAAE,gBAAgB,2CAkDlB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export default function ListHelpBar({ canAct, expanded, hasOrg, hasOutdated, inputMode, isFrozen, isPinned, }) {
|
|
4
|
+
if (inputMode === 'filter') {
|
|
5
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { dimColor: true, children: [_jsx(Text, { children: "\u2191\u2193" }), " navigate", ' ', _jsx(Text, { children: "Tab" }), ": type", ' ', _jsx(Text, { children: "Esc" }), ": stop filter", ' ', "Type to filter..."] }) }));
|
|
6
|
+
}
|
|
7
|
+
const pinLabel = isPinned ? 'unpin' : 'pin';
|
|
8
|
+
const freezeLabel = isFrozen ? 'thaw' : 'freeze';
|
|
9
|
+
return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { dimColor: true, children: [_jsx(Text, { children: "\u2191\u2193" }), " navigate", ' ', _jsx(Text, { children: "/" }), ": filter", ' ', _jsx(Text, { children: "Tab" }), ": type", ' ', _jsx(Text, { children: "s" }), ": sort", ' ', hasOrg && (_jsxs(_Fragment, { children: [_jsx(Text, { children: "o" }), ": org", ' '] })), expanded ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: "Esc" }), ": collapse", ' '] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: "Enter" }), ": expand", ' '] })), _jsx(Text, { dimColor: !canAct || !hasOutdated, children: "u: update" }), ' ', _jsx(Text, { dimColor: !canAct, children: "x: uninstall" }), ' ', _jsxs(Text, { dimColor: !canAct, children: ["p: ", pinLabel] }), ' ', _jsxs(Text, { dimColor: !canAct, children: ["f: ", freezeLabel] }), ' ', _jsx(Text, { children: "q" }), ": quit"] }) }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ListHelpBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListHelpBar.js","sourceRoot":"","sources":["../../src/components/ListHelpBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAmBhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,GACS;IACjB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,QAAQ,mBACZ,KAAC,IAAI,+BAAU,eAAU,IAAI,EAC7B,KAAC,IAAI,sBAAW,YAAO,IAAI,EAC3B,KAAC,IAAI,sBAAW,mBAAc,IAAI,yBAE7B,GACH,CACP,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEjD,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,QAAQ,mBACZ,KAAC,IAAI,+BAAU,eAAU,IAAI,EAC7B,KAAC,IAAI,oBAAS,cAAS,IAAI,EAC3B,KAAC,IAAI,sBAAW,YAAO,IAAI,EAC3B,KAAC,IAAI,oBAAS,YAAO,IAAI,EACxB,MAAM,IAAI,CACT,8BACE,KAAC,IAAI,oBAAS,WAAM,IAAI,IACvB,CACJ,EACA,QAAQ,CAAC,CAAC,CAAC,CACV,8BACE,KAAC,IAAI,sBAAW,gBAAW,IAAI,IAC9B,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,IAAI,wBAAa,cAAS,IAAI,IAC9B,CACJ,EACD,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,WAAW,0BAAkB,EACxD,IAAI,EACL,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,6BAAqB,EAC3C,IAAI,EACL,MAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,oBAAM,QAAQ,IAAQ,EAC5C,IAAI,EACL,MAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,oBAAM,WAAW,IAAQ,EAC/C,IAAI,EACL,KAAC,IAAI,oBAAS,cACT,GACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -15,6 +15,11 @@ export { default as HelpBar } from './HelpBar.js';
|
|
|
15
15
|
export { default as InitSuccess } from './InitSuccess.js';
|
|
16
16
|
export { default as InstallConfirmBar } from './InstallConfirmBar.js';
|
|
17
17
|
export { type InstalledAssetResult, default as InstallSummary } from './InstallSummary.js';
|
|
18
|
+
export { default as Link } from './Link.js';
|
|
19
|
+
export { default as ListActionBar } from './ListActionBar.js';
|
|
20
|
+
export { default as ListBrowseList } from './ListBrowseList.js';
|
|
21
|
+
export { computeExpandedLines, LIST_EXPANDED_BASE_LINES, default as ListExpandedRow } from './ListExpandedRow.js';
|
|
22
|
+
export { default as ListHelpBar } from './ListHelpBar.js';
|
|
18
23
|
export { default as PromptField } from './PromptField.js';
|
|
19
24
|
export { default as SectionDivider } from './SectionDivider.js';
|
|
20
25
|
export { default as Spinner } from './Spinner.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -15,6 +15,11 @@ export { default as HelpBar } from './HelpBar.js';
|
|
|
15
15
|
export { default as InitSuccess } from './InitSuccess.js';
|
|
16
16
|
export { default as InstallConfirmBar } from './InstallConfirmBar.js';
|
|
17
17
|
export { default as InstallSummary } from './InstallSummary.js';
|
|
18
|
+
export { default as Link } from './Link.js';
|
|
19
|
+
export { default as ListActionBar } from './ListActionBar.js';
|
|
20
|
+
export { default as ListBrowseList } from './ListBrowseList.js';
|
|
21
|
+
export { computeExpandedLines, LIST_EXPANDED_BASE_LINES, default as ListExpandedRow } from './ListExpandedRow.js';
|
|
22
|
+
export { default as ListHelpBar } from './ListHelpBar.js';
|
|
18
23
|
export { default as PromptField } from './PromptField.js';
|
|
19
24
|
export { default as SectionDivider } from './SectionDivider.js';
|
|
20
25
|
export { default as Spinner } from './Spinner.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAwB,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAA6B,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAwB,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAA6B,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import type { Adapter } from '../lib/schemas/adapter.js';
|
|
3
|
+
import type { ListAction, ListState } from './useListState.js';
|
|
4
|
+
/**
|
|
5
|
+
* Encapsulates the action execution side-effect for the list command.
|
|
6
|
+
*
|
|
7
|
+
* Handles freeze-toggle, pin-toggle, uninstall, and update actions,
|
|
8
|
+
* each following a lock-read-act-write-dispatch pattern.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useListActions(state: ListState, dispatch: React.Dispatch<ListAction>, projectDirRef: RefObject<string>, resolvedToolRef: RefObject<null | {
|
|
11
|
+
adapter: Adapter;
|
|
12
|
+
tool: string;
|
|
13
|
+
}>): void;
|
|
14
|
+
//# sourceMappingURL=useListActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListActions.d.ts","sourceRoot":"","sources":["../../src/hooks/useListActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAe/D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,EAChC,eAAe,EAAE,SAAS,CAAC,IAAI,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAoJN"}
|