@sascha384/tic 1.18.4 → 1.20.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/.claude-plugin/plugin.json +1 -1
- package/dist/components/AutocompleteInput.d.ts +4 -1
- package/dist/components/AutocompleteInput.js +6 -3
- package/dist/components/AutocompleteInput.js.map +1 -1
- package/dist/components/CardLayout.d.ts +2 -1
- package/dist/components/CardLayout.js +60 -20
- package/dist/components/CardLayout.js.map +1 -1
- package/dist/components/Header.d.ts +1 -0
- package/dist/components/Header.js +2 -1
- package/dist/components/Header.js.map +1 -1
- package/dist/components/MultiAutocompleteInput.d.ts +4 -1
- package/dist/components/MultiAutocompleteInput.js +6 -3
- package/dist/components/MultiAutocompleteInput.js.map +1 -1
- package/dist/components/SearchOverlay.d.ts +3 -1
- package/dist/components/SearchOverlay.js +3 -2
- package/dist/components/SearchOverlay.js.map +1 -1
- package/dist/components/StatusScreen.js +4 -1
- package/dist/components/StatusScreen.js.map +1 -1
- package/dist/components/TableLayout.d.ts +2 -1
- package/dist/components/TableLayout.js +49 -9
- package/dist/components/TableLayout.js.map +1 -1
- package/dist/components/WorkItemForm.js +28 -14
- package/dist/components/WorkItemForm.js.map +1 -1
- package/dist/components/WorkItemList.d.ts +1 -0
- package/dist/components/WorkItemList.js +82 -26
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/index.js +3 -7
- package/dist/index.js.map +1 -1
- package/dist/stores/backendDataStore.d.ts +1 -1
- package/dist/stores/backendDataStore.js +79 -19
- package/dist/stores/backendDataStore.js.map +1 -1
- package/dist/stores/configStore.d.ts +1 -0
- package/dist/stores/configStore.js +9 -3
- package/dist/stores/configStore.js.map +1 -1
- package/dist/stores/uiStore.d.ts +6 -0
- package/dist/stores/uiStore.js +4 -1
- package/dist/stores/uiStore.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,9 @@ interface AutocompleteInputProps {
|
|
|
5
5
|
suggestions: string[];
|
|
6
6
|
focus: boolean;
|
|
7
7
|
}
|
|
8
|
-
export declare function filterSuggestions(value: string, suggestions: string[]):
|
|
8
|
+
export declare function filterSuggestions(value: string, suggestions: string[]): {
|
|
9
|
+
visible: string[];
|
|
10
|
+
totalCount: number;
|
|
11
|
+
};
|
|
9
12
|
export declare function AutocompleteInput({ value, onChange, onSubmit, suggestions, focus, }: AutocompleteInputProps): import("react/jsx-runtime").JSX.Element;
|
|
10
13
|
export {};
|
|
@@ -7,11 +7,14 @@ export function filterSuggestions(value, suggestions) {
|
|
|
7
7
|
const filtered = value
|
|
8
8
|
? suggestions.filter((s) => s.toLowerCase().includes(value.toLowerCase()))
|
|
9
9
|
: suggestions;
|
|
10
|
-
return
|
|
10
|
+
return {
|
|
11
|
+
visible: filtered.slice(0, MAX_VISIBLE),
|
|
12
|
+
totalCount: filtered.length,
|
|
13
|
+
};
|
|
11
14
|
}
|
|
12
15
|
export function AutocompleteInput({ value, onChange, onSubmit, suggestions, focus, }) {
|
|
13
16
|
const [highlightIndex, setHighlightIndex] = useState(-1);
|
|
14
|
-
const visible = filterSuggestions(value, suggestions);
|
|
17
|
+
const { visible, totalCount } = filterSuggestions(value, suggestions);
|
|
15
18
|
useInput((_input, key) => {
|
|
16
19
|
if (key.downArrow) {
|
|
17
20
|
setHighlightIndex((i) => (i < visible.length - 1 ? i + 1 : i));
|
|
@@ -35,6 +38,6 @@ export function AutocompleteInput({ value, onChange, onSubmit, suggestions, focu
|
|
|
35
38
|
onChange(visible[highlightIndex]);
|
|
36
39
|
}
|
|
37
40
|
onSubmit();
|
|
38
|
-
} }), visible.length > 0 && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: visible.map((suggestion, i) => (_jsxs(Text, { color: i === highlightIndex ? 'cyan' : undefined, bold: i === highlightIndex, children: [i === highlightIndex ? '> ' : ' ', suggestion] }, suggestion))) }))] }));
|
|
41
|
+
} }), visible.length > 0 && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: visible.map((suggestion, i) => (_jsxs(Text, { color: i === highlightIndex ? 'cyan' : undefined, bold: i === highlightIndex, children: [i === highlightIndex ? '> ' : ' ', suggestion] }, suggestion))) })), totalCount > MAX_VISIBLE && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["+", totalCount - MAX_VISIBLE, " more"] }) }))] }));
|
|
39
42
|
}
|
|
40
43
|
//# sourceMappingURL=AutocompleteInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteInput.js","sourceRoot":"","sources":["../../src/components/AutocompleteInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,WAAW,GAAG,CAAC,CAAC;AAUtB,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,WAAqB;IAErB,MAAM,QAAQ,GAAG,KAAK;QACpB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,WAAW,CAAC;IAChB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AutocompleteInput.js","sourceRoot":"","sources":["../../src/components/AutocompleteInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,6 @@ interface CardLayoutProps {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function formatPriority(priority: string | undefined): string;
|
|
11
11
|
export declare function formatAssignee(assignee: string | undefined): string;
|
|
12
|
-
|
|
12
|
+
declare function CardLayoutInner({ treeItems, cursor, capabilities, collapsedIds, markedIds, }: CardLayoutProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export declare const CardLayout: import("react").MemoExoticComponent<typeof CardLayoutInner>;
|
|
13
14
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
2
3
|
import { Box, Text } from 'ink';
|
|
3
4
|
export function formatPriority(priority) {
|
|
4
5
|
if (!priority)
|
|
@@ -27,34 +28,73 @@ function statusColor(status) {
|
|
|
27
28
|
return 'red';
|
|
28
29
|
return 'blue';
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
const CardRow = memo(function CardRow({ treeItem, selected, marked, collapseIndicator, capabilities, isLast, }) {
|
|
32
|
+
const { item, depth, isCrossType } = treeItem;
|
|
33
|
+
const indent = ' '.repeat(depth);
|
|
34
|
+
const marker = selected ? '>' : ' ';
|
|
35
|
+
const hasDeps = capabilities.fields.dependsOn && item.dependsOn.length > 0;
|
|
36
|
+
const depIndicator = hasDeps ? ' ⧗' : '';
|
|
37
|
+
const typeLabel = isCrossType ? ` (${item.type})` : '';
|
|
38
|
+
const dimmed = isCrossType && !selected;
|
|
39
|
+
// Indent for meta line: align with title start
|
|
40
|
+
// marker(1) + indent + collapseIndicator(2) + '#'(1) + id + ' '(1) = offset
|
|
41
|
+
const metaIndent = ' ' + indent + ' ' + ' '.repeat(item.id.length + 2);
|
|
42
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: isLast ? 0 : 1, ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [marker, indent, collapseIndicator, "#", item.id, " ", item.title, typeLabel, depIndicator] }) }), _jsxs(Box, { children: [_jsx(Text, { color: selected ? 'cyan' : undefined, dimColor: dimmed, children: metaIndent }), _jsx(Text, { color: statusColor(item.status), children: "\u25CF" }), _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [' ', item.status, capabilities.fields.priority && formatPriority(item.priority)
|
|
43
|
+
? ' ' + formatPriority(item.priority)
|
|
44
|
+
: '', capabilities.fields.assignee && formatAssignee(item.assignee)
|
|
45
|
+
? ' ' + formatAssignee(item.assignee)
|
|
46
|
+
: '', capabilities.fields.labels && item.labels.length > 0
|
|
47
|
+
? ' ' + item.labels.join(', ')
|
|
48
|
+
: ''] })] })] }));
|
|
49
|
+
}, (prev, next) => {
|
|
50
|
+
if (prev.selected !== next.selected)
|
|
51
|
+
return false;
|
|
52
|
+
if (prev.marked !== next.marked)
|
|
53
|
+
return false;
|
|
54
|
+
if (prev.collapseIndicator !== next.collapseIndicator)
|
|
55
|
+
return false;
|
|
56
|
+
if (prev.capabilities !== next.capabilities)
|
|
57
|
+
return false;
|
|
58
|
+
if (prev.isLast !== next.isLast)
|
|
59
|
+
return false;
|
|
60
|
+
const prevItem = prev.treeItem.item;
|
|
61
|
+
const nextItem = next.treeItem.item;
|
|
62
|
+
if (prevItem.id !== nextItem.id)
|
|
63
|
+
return false;
|
|
64
|
+
if (prevItem.status !== nextItem.status)
|
|
65
|
+
return false;
|
|
66
|
+
if (prevItem.title !== nextItem.title)
|
|
67
|
+
return false;
|
|
68
|
+
if (prevItem.priority !== nextItem.priority)
|
|
69
|
+
return false;
|
|
70
|
+
if (prevItem.assignee !== nextItem.assignee)
|
|
71
|
+
return false;
|
|
72
|
+
if (prevItem.type !== nextItem.type)
|
|
73
|
+
return false;
|
|
74
|
+
if (prev.treeItem.depth !== next.treeItem.depth)
|
|
75
|
+
return false;
|
|
76
|
+
if (prev.treeItem.isCrossType !== next.treeItem.isCrossType)
|
|
77
|
+
return false;
|
|
78
|
+
// labels array — compare by joined string
|
|
79
|
+
if (prevItem.labels.join(',') !== nextItem.labels.join(','))
|
|
80
|
+
return false;
|
|
81
|
+
// dependsOn length affects the deps indicator
|
|
82
|
+
if (prevItem.dependsOn.length !== nextItem.dependsOn.length)
|
|
83
|
+
return false;
|
|
84
|
+
return true;
|
|
85
|
+
});
|
|
86
|
+
function CardLayoutInner({ treeItems, cursor, capabilities, collapsedIds, markedIds, }) {
|
|
31
87
|
if (treeItems.length === 0)
|
|
32
88
|
return null;
|
|
33
89
|
return (_jsx(Box, { flexDirection: "column", children: treeItems.map((treeItem, idx) => {
|
|
34
|
-
const { item,
|
|
35
|
-
const selected = idx === cursor;
|
|
36
|
-
const marked = markedIds.has(item.id);
|
|
37
|
-
const indent = ' '.repeat(depth);
|
|
38
|
-
const marker = selected ? '>' : ' ';
|
|
39
|
-
const hasDeps = capabilities.fields.dependsOn && item.dependsOn.length > 0;
|
|
40
|
-
const depIndicator = hasDeps ? ' ⧗' : '';
|
|
90
|
+
const { item, hasChildren } = treeItem;
|
|
41
91
|
const collapseIndicator = hasChildren
|
|
42
92
|
? collapsedIds.has(item.id)
|
|
43
93
|
? '▶ '
|
|
44
94
|
: '▼ '
|
|
45
95
|
: ' ';
|
|
46
|
-
|
|
47
|
-
const dimmed = isCrossType && !selected;
|
|
48
|
-
// Indent for meta line: align with title start
|
|
49
|
-
// marker(1) + indent + collapseIndicator(2) + '#'(1) + id + ' '(1) = offset
|
|
50
|
-
const metaIndent = ' ' + indent + ' ' + ' '.repeat(item.id.length + 2);
|
|
51
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: idx < treeItems.length - 1 ? 1 : 0, ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [marker, indent, collapseIndicator, "#", item.id, " ", item.title, typeLabel, depIndicator] }) }), _jsxs(Box, { children: [_jsx(Text, { color: selected ? 'cyan' : undefined, dimColor: dimmed, children: metaIndent }), _jsx(Text, { color: statusColor(item.status), children: "\u25CF" }), _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [' ', item.status, capabilities.fields.priority && formatPriority(item.priority)
|
|
52
|
-
? ' ' + formatPriority(item.priority)
|
|
53
|
-
: '', capabilities.fields.assignee && formatAssignee(item.assignee)
|
|
54
|
-
? ' ' + formatAssignee(item.assignee)
|
|
55
|
-
: '', capabilities.fields.labels && item.labels.length > 0
|
|
56
|
-
? ' ' + item.labels.join(', ')
|
|
57
|
-
: ''] })] })] }, `${item.id}-${item.type}`));
|
|
96
|
+
return (_jsx(CardRow, { treeItem: treeItem, selected: idx === cursor, marked: markedIds.has(item.id), collapseIndicator: collapseIndicator, capabilities: capabilities, isLast: idx === treeItems.length - 1 }, `${item.id}-${item.type}`));
|
|
58
97
|
}) }));
|
|
59
98
|
}
|
|
99
|
+
export const CardLayout = memo(CardLayoutInner);
|
|
60
100
|
//# sourceMappingURL=CardLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardLayout.js","sourceRoot":"","sources":["../../src/components/CardLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"CardLayout.js","sourceRoot":"","sources":["../../src/components/CardLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAqBhC,MAAM,UAAU,cAAc,CAAC,QAA4B;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACzD,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAA4B;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU;QAChE,OAAO,OAAO,CAAC;IACjB,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa;QAC1E,OAAO,QAAQ,CAAC;IAClB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAClB,SAAS,OAAO,CAAC,EACf,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,MAAM,GACO;IACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,QAAQ,CAAC;IAExC,+CAA+C;IAC/C,4EAA4E;IAC5E,MAAM,UAAU,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExE,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KACxB,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAE5D,KAAC,GAAG,cACF,MAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,aAEf,MAAM,EACN,MAAM,EACN,iBAAiB,OAAG,IAAI,CAAC,EAAE,OAAG,IAAI,CAAC,KAAK,EACxC,SAAS,EACT,YAAY,IACR,GACH,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,YACzD,UAAU,GACN,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAU,EAC/C,MAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,aAEf,GAAG,EACH,IAAI,CAAC,MAAM,EACX,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gCAC5D,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gCACtC,CAAC,CAAC,EAAE,EACL,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gCAC5D,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;gCACtC,CAAC,CAAC,EAAE,EACL,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gCACnD,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gCAC/B,CAAC,CAAC,EAAE,IACD,IACH,IACF,CACP,CAAC;AACJ,CAAC,EACD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACb,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE1E,0CAA0C;IAC1C,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1E,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1E,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,GACO;IAChB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;YACvC,MAAM,iBAAiB,GAAG,WAAW;gBACnC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI;gBACR,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,CACL,KAAC,OAAO,IAEN,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,KAAK,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,IAN/B,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAO9B,CACH,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -5,11 +5,12 @@ import { useConfigStore } from '../stores/configStore.js';
|
|
|
5
5
|
import { useBackendDataStore } from '../stores/backendDataStore.js';
|
|
6
6
|
import os from 'node:os';
|
|
7
7
|
import { VERSION } from '../version.js';
|
|
8
|
-
const BACKEND_LABELS = {
|
|
8
|
+
export const BACKEND_LABELS = {
|
|
9
9
|
local: 'Local',
|
|
10
10
|
github: 'GitHub',
|
|
11
11
|
gitlab: 'GitLab',
|
|
12
12
|
azure: 'Azure DevOps',
|
|
13
|
+
jira: 'Jira',
|
|
13
14
|
};
|
|
14
15
|
function shortenPath(fullPath) {
|
|
15
16
|
const home = os.homedir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,cAAc,GAA2B;
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ interface MultiAutocompleteInputProps {
|
|
|
5
5
|
suggestions: string[];
|
|
6
6
|
focus: boolean;
|
|
7
7
|
}
|
|
8
|
-
export declare function filterSuggestions(value: string, suggestions: string[]):
|
|
8
|
+
export declare function filterSuggestions(value: string, suggestions: string[]): {
|
|
9
|
+
visible: string[];
|
|
10
|
+
totalCount: number;
|
|
11
|
+
};
|
|
9
12
|
export declare function MultiAutocompleteInput({ value, onChange, onSubmit, suggestions, focus, }: MultiAutocompleteInputProps): import("react/jsx-runtime").JSX.Element;
|
|
10
13
|
export {};
|
|
@@ -31,11 +31,14 @@ export function filterSuggestions(value, suggestions) {
|
|
|
31
31
|
// Match if current segment is empty or contained in suggestion
|
|
32
32
|
return !current || lower.includes(current.toLowerCase());
|
|
33
33
|
});
|
|
34
|
-
return
|
|
34
|
+
return {
|
|
35
|
+
visible: filtered.slice(0, MAX_VISIBLE),
|
|
36
|
+
totalCount: filtered.length,
|
|
37
|
+
};
|
|
35
38
|
}
|
|
36
39
|
export function MultiAutocompleteInput({ value, onChange, onSubmit, suggestions, focus, }) {
|
|
37
40
|
const [highlightIndex, setHighlightIndex] = useState(-1);
|
|
38
|
-
const visible = filterSuggestions(value, suggestions);
|
|
41
|
+
const { visible, totalCount } = filterSuggestions(value, suggestions);
|
|
39
42
|
const { prefix } = parseSegments(value);
|
|
40
43
|
useInput((_input, key) => {
|
|
41
44
|
if (key.downArrow) {
|
|
@@ -61,6 +64,6 @@ export function MultiAutocompleteInput({ value, onChange, onSubmit, suggestions,
|
|
|
61
64
|
onChange(prefix + visible[highlightIndex]);
|
|
62
65
|
}
|
|
63
66
|
onSubmit();
|
|
64
|
-
} }), visible.length > 0 && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: visible.map((suggestion, i) => (_jsxs(Text, { color: i === highlightIndex ? 'cyan' : undefined, bold: i === highlightIndex, children: [i === highlightIndex ? '> ' : ' ', suggestion] }, suggestion))) }))] }));
|
|
67
|
+
} }), visible.length > 0 && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: visible.map((suggestion, i) => (_jsxs(Text, { color: i === highlightIndex ? 'cyan' : undefined, bold: i === highlightIndex, children: [i === highlightIndex ? '> ' : ' ', suggestion] }, suggestion))) })), totalCount > MAX_VISIBLE && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["+", totalCount - MAX_VISIBLE, " more"] }) }))] }));
|
|
65
68
|
}
|
|
66
69
|
//# sourceMappingURL=MultiAutocompleteInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiAutocompleteInput.js","sourceRoot":"","sources":["../../src/components/MultiAutocompleteInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,WAAW,GAAG,CAAC,CAAC;AAUtB,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG;QAC3C,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,IAAI,GAAG,CACZ,KAAK;SACF,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,WAAqB;IAErB,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE1C,kEAAkE;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,qDAAqD;QACrD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,+DAA+D;QAC/D,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiAutocompleteInput.js","sourceRoot":"","sources":["../../src/components/MultiAutocompleteInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,4 +7,6 @@ export interface SearchOverlayProps {
|
|
|
7
7
|
onCancel: () => void;
|
|
8
8
|
}
|
|
9
9
|
export declare function groupResults(results: FuzzyResult[], currentIteration: string | null, maxResults?: number): FuzzyResult[];
|
|
10
|
-
|
|
10
|
+
declare function SearchOverlayInner({ items, currentIteration, onSelect, onCancel, }: SearchOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const SearchOverlay: import("react").MemoExoticComponent<typeof SearchOverlayInner>;
|
|
12
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useMemo } from 'react';
|
|
2
|
+
import { useState, useMemo, memo } from 'react';
|
|
3
3
|
import { Box, Text, useInput } from 'ink';
|
|
4
4
|
import TextInput from 'ink-text-input';
|
|
5
5
|
import { fuzzyMatch } from './fuzzyMatch.js';
|
|
@@ -16,7 +16,7 @@ export function groupResults(results, currentIteration, maxResults = 10) {
|
|
|
16
16
|
.sort(sortByScore);
|
|
17
17
|
return [...current, ...other].slice(0, maxResults);
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
function SearchOverlayInner({ items, currentIteration, onSelect, onCancel, }) {
|
|
20
20
|
const [query, setQuery] = useState('');
|
|
21
21
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
22
22
|
const results = useMemo(() => {
|
|
@@ -60,4 +60,5 @@ export function SearchOverlay({ items, currentIteration, onSelect, onCancel, })
|
|
|
60
60
|
return (_jsxs(Box, { flexDirection: "column", children: [showCurrentHeader && _jsx(Text, { dimColor: true, children: "Current iteration:" }), showOtherHeader && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Other iterations:" }) })), _jsxs(Box, { children: [_jsx(Text, { color: index === selectedIndex ? 'cyan' : undefined, bold: index === selectedIndex, children: index === selectedIndex ? '● ' : ' ' }), _jsx(Box, { width: 8, children: _jsxs(Text, { color: index === selectedIndex ? 'cyan' : 'yellow', children: ["#", result.item.id] }) }), _jsx(Text, { color: index === selectedIndex ? 'cyan' : undefined, children: result.item.title }), result.item.labels.length > 0 && (_jsxs(Text, { dimColor: true, children: [" [", result.item.labels.join(', '), "]"] })), _jsxs(Text, { dimColor: true, children: [" (", result.item.type, ")"] })] })] }, result.item.id));
|
|
61
61
|
}), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate enter select esc cancel" }) })] }));
|
|
62
62
|
}
|
|
63
|
+
export const SearchOverlay = memo(SearchOverlayInner);
|
|
63
64
|
//# sourceMappingURL=SearchOverlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchOverlay.js","sourceRoot":"","sources":["../../src/components/SearchOverlay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchOverlay.js","sourceRoot":"","sources":["../../src/components/SearchOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ import { Box, Text, useInput } from 'ink';
|
|
|
4
4
|
import { useNavigationStore } from '../stores/navigationStore.js';
|
|
5
5
|
import { useScrollViewport } from '../hooks/useScrollViewport.js';
|
|
6
6
|
import { useBackendDataStore } from '../stores/backendDataStore.js';
|
|
7
|
+
import { useConfigStore } from '../stores/configStore.js';
|
|
8
|
+
import { BACKEND_LABELS } from './Header.js';
|
|
7
9
|
function CapabilityLine({ label, enabled, }) {
|
|
8
10
|
return (_jsxs(Text, { children: [enabled ? _jsx(Text, { color: "green", children: "\u2713" }) : _jsx(Text, { dimColor: true, children: "\u2717" }), " ", label] }));
|
|
9
11
|
}
|
|
@@ -38,7 +40,8 @@ export function StatusScreen() {
|
|
|
38
40
|
description: false,
|
|
39
41
|
},
|
|
40
42
|
}, [backend]);
|
|
41
|
-
const
|
|
43
|
+
const backendType = useConfigStore((s) => s.config.backend ?? 'local');
|
|
44
|
+
const backendName = BACKEND_LABELS[backendType] ?? backendType;
|
|
42
45
|
const syncStatus = useBackendDataStore((s) => s.syncStatus);
|
|
43
46
|
const errors = syncStatus?.errors ?? [];
|
|
44
47
|
const [scrollOffset, setScrollOffset] = useState(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusScreen.js","sourceRoot":"","sources":["../../src/components/StatusScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusScreen.js","sourceRoot":"","sources":["../../src/components/StatusScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,6 @@ interface TableLayoutProps {
|
|
|
7
7
|
collapsedIds: Set<string>;
|
|
8
8
|
markedIds: Set<string>;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
declare function TableLayoutInner({ treeItems, cursor, capabilities, collapsedIds, markedIds, }: TableLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const TableLayout: import("react").MemoExoticComponent<typeof TableLayoutInner>;
|
|
11
12
|
export {};
|
|
@@ -1,29 +1,69 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from 'react';
|
|
2
|
+
import { memo, useMemo } from 'react';
|
|
3
3
|
import { Box, Text } from 'ink';
|
|
4
4
|
const colStatus = 14;
|
|
5
5
|
const colPriority = 10;
|
|
6
6
|
const colAssignee = 12;
|
|
7
7
|
const colLabels = 16;
|
|
8
8
|
const gap = 2;
|
|
9
|
-
|
|
9
|
+
const TableRow = memo(function TableRow({ treeItem, selected, marked, collapseIndicator, capabilities, colId, }) {
|
|
10
|
+
const { item, prefix, isCrossType } = treeItem;
|
|
11
|
+
const hasUnresolvedDeps = item.dependsOn.length > 0;
|
|
12
|
+
const typeLabel = isCrossType ? ` (${item.type})` : '';
|
|
13
|
+
const dimmed = isCrossType && !selected;
|
|
14
|
+
return (_jsxs(Box, { ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: "cyan", children: selected ? '>' : ' ' }) }), _jsx(Box, { width: colId, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.id }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: [capabilities.relationships ? prefix : '', collapseIndicator, item.title, typeLabel] }) }), _jsx(Box, { width: colStatus, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [capabilities.fields.dependsOn && hasUnresolvedDeps ? '⧗ ' : '', item.status] }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.priority }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.assignee }) })), capabilities.fields.labels && (_jsx(Box, { width: colLabels, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.labels.join(', ') }) }))] }));
|
|
15
|
+
}, (prev, next) => {
|
|
16
|
+
if (prev.selected !== next.selected)
|
|
17
|
+
return false;
|
|
18
|
+
if (prev.marked !== next.marked)
|
|
19
|
+
return false;
|
|
20
|
+
if (prev.collapseIndicator !== next.collapseIndicator)
|
|
21
|
+
return false;
|
|
22
|
+
if (prev.capabilities !== next.capabilities)
|
|
23
|
+
return false;
|
|
24
|
+
if (prev.colId !== next.colId)
|
|
25
|
+
return false;
|
|
26
|
+
const prevItem = prev.treeItem.item;
|
|
27
|
+
const nextItem = next.treeItem.item;
|
|
28
|
+
if (prevItem.id !== nextItem.id)
|
|
29
|
+
return false;
|
|
30
|
+
if (prevItem.status !== nextItem.status)
|
|
31
|
+
return false;
|
|
32
|
+
if (prevItem.title !== nextItem.title)
|
|
33
|
+
return false;
|
|
34
|
+
if (prevItem.priority !== nextItem.priority)
|
|
35
|
+
return false;
|
|
36
|
+
if (prevItem.assignee !== nextItem.assignee)
|
|
37
|
+
return false;
|
|
38
|
+
if (prev.treeItem.prefix !== next.treeItem.prefix)
|
|
39
|
+
return false;
|
|
40
|
+
if (prev.treeItem.isCrossType !== next.treeItem.isCrossType)
|
|
41
|
+
return false;
|
|
42
|
+
// labels array — compare by joined string
|
|
43
|
+
if (prevItem.labels.join(',') !== nextItem.labels.join(','))
|
|
44
|
+
return false;
|
|
45
|
+
// dependsOn length affects the deps indicator
|
|
46
|
+
if (prevItem.dependsOn.length !== nextItem.dependsOn.length)
|
|
47
|
+
return false;
|
|
48
|
+
// item.type affects typeLabel for cross-type items
|
|
49
|
+
if (prevItem.type !== nextItem.type)
|
|
50
|
+
return false;
|
|
51
|
+
return true;
|
|
52
|
+
});
|
|
53
|
+
function TableLayoutInner({ treeItems, cursor, capabilities, collapsedIds, markedIds, }) {
|
|
10
54
|
const colId = useMemo(() => {
|
|
11
55
|
const maxLen = treeItems.reduce((max, { item }) => Math.max(max, item.id.length), 2);
|
|
12
56
|
return maxLen + gap;
|
|
13
57
|
}, [treeItems]);
|
|
14
58
|
return (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Box, { width: 2, children: _jsx(Text, { children: " " }) }), _jsx(Box, { width: colId, children: _jsx(Text, { bold: true, underline: true, children: "ID" }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Title" }) }), _jsx(Box, { width: colStatus, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Status" }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Priority" }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Assignee" }) })), capabilities.fields.labels && (_jsx(Box, { width: colLabels, children: _jsx(Text, { bold: true, underline: true, children: "Labels" }) }))] }), treeItems.map((treeItem, idx) => {
|
|
15
|
-
const { item,
|
|
16
|
-
const selected = idx === cursor;
|
|
17
|
-
const marked = markedIds.has(item.id);
|
|
18
|
-
const hasUnresolvedDeps = item.dependsOn.length > 0;
|
|
59
|
+
const { item, hasChildren } = treeItem;
|
|
19
60
|
const collapseIndicator = hasChildren
|
|
20
61
|
? collapsedIds.has(item.id)
|
|
21
62
|
? '▶ '
|
|
22
63
|
: '▼ '
|
|
23
64
|
: ' ';
|
|
24
|
-
|
|
25
|
-
const dimmed = isCrossType && !selected;
|
|
26
|
-
return (_jsxs(Box, { ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: "cyan", children: selected ? '>' : ' ' }) }), _jsx(Box, { width: colId, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.id }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: [capabilities.relationships ? prefix : '', collapseIndicator, item.title, typeLabel] }) }), _jsx(Box, { width: colStatus, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [capabilities.fields.dependsOn && hasUnresolvedDeps ? '⧗ ' : '', item.status] }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.priority }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.assignee }) })), capabilities.fields.labels && (_jsx(Box, { width: colLabels, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.labels.join(', ') }) }))] }, `${item.id}-${item.type}`));
|
|
65
|
+
return (_jsx(TableRow, { treeItem: treeItem, selected: idx === cursor, marked: markedIds.has(item.id), collapseIndicator: collapseIndicator, capabilities: capabilities, colId: colId }, `${item.id}-${item.type}`));
|
|
27
66
|
})] }));
|
|
28
67
|
}
|
|
68
|
+
export const TableLayout = memo(TableLayoutInner);
|
|
29
69
|
//# sourceMappingURL=TableLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":"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"}
|