@brainfile/cli 0.9.0 → 0.9.2
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/CHANGELOG.md +42 -0
- package/README.md +24 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +9 -10
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -1
- package/dist/tui/components/HelpOverlay.js +8 -2
- package/dist/tui/components/HelpOverlay.js.map +1 -1
- package/dist/tui/components/SearchBar.d.ts +2 -1
- package/dist/tui/components/SearchBar.d.ts.map +1 -1
- package/dist/tui/components/SearchBar.js +23 -9
- package/dist/tui/components/SearchBar.js.map +1 -1
- package/dist/tui/index.d.ts +2 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/utils.d.ts +20 -0
- package/dist/tui/utils.d.ts.map +1 -1
- package/dist/tui/utils.js +115 -0
- package/dist/tui/utils.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,48 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.2] - 2025-11-26
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Advanced search filters** - Filter tasks using structured queries
|
|
14
|
+
- `p:high` or `priority:critical` - Filter by priority
|
|
15
|
+
- `#tag` or `t:bug` - Filter by tag
|
|
16
|
+
- `@john` or `assignee:john` - Filter by assignee
|
|
17
|
+
- `due:overdue`, `due:today`, `due:week`, `due:month` - Filter by due date
|
|
18
|
+
- Combine filters with text search: `p:high #bug fix login`
|
|
19
|
+
- **Filter hints in search bar** - Shows available filters when search is empty
|
|
20
|
+
- **Updated help overlay** - Documents filter syntax
|
|
21
|
+
|
|
22
|
+
## [0.9.1] - 2025-11-26
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **TUI empty string rendering bug** - Fixed critical Ink rendering error when `searchQuery` was empty
|
|
26
|
+
- Changed `searchQuery && ...` to `searchQuery.length > 0 && ...` to return `false` instead of `""`
|
|
27
|
+
- Empty strings in React/Ink cause "Text string must be rendered inside Text component" errors
|
|
28
|
+
- **truncate() utility** - Returns single space `' '` instead of empty string for Ink compatibility
|
|
29
|
+
- **Progress bar rendering** - Protected `.repeat()` calls from producing empty strings when `filled` or `empty` is 0
|
|
30
|
+
- **Separator lines** - Added `Math.max(1, ...)` safeguard for separator line widths
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- **TUI task management** - Full interactive task management in the terminal
|
|
34
|
+
- `e` - Edit task in $EDITOR
|
|
35
|
+
- `m` - Move task to different column (overlay picker)
|
|
36
|
+
- `d` - Delete task with confirmation
|
|
37
|
+
- `t` - Toggle subtask completion (overlay picker)
|
|
38
|
+
- `n` - Quick add new task (inline input)
|
|
39
|
+
- `N` - New task in $EDITOR
|
|
40
|
+
- `p` - Cycle priority (none→low→medium→high→critical)
|
|
41
|
+
- `a` - Archive task
|
|
42
|
+
- `y` - Copy task ID to clipboard
|
|
43
|
+
- **Minimum terminal size check** - Shows helpful message if terminal is smaller than 60x16
|
|
44
|
+
- **Due date display** - Shows due dates with color coding (red if overdue, yellow if ≤2 days)
|
|
45
|
+
- **Expanded subtask view** - Shows all subtasks when task is expanded (removed 5-subtask limit)
|
|
46
|
+
- **Search improvements** - Now searches description field, proper trimming, "no results" message
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
- **TUI styling** - Lipgloss-inspired rounded borders and true black theme
|
|
50
|
+
- Upgraded to @brainfile/core@^0.8.0
|
|
51
|
+
|
|
10
52
|
## [0.8.0] - 2025-11-25
|
|
11
53
|
|
|
12
54
|
### Added
|
package/README.md
CHANGED
|
@@ -53,12 +53,36 @@ brainfile ./path/to/file.md # Open specific file
|
|
|
53
53
|
|-----|--------|
|
|
54
54
|
| `TAB` / `Shift+TAB` | Navigate columns |
|
|
55
55
|
| `j`/`k` or `↑`/`↓` | Navigate tasks |
|
|
56
|
+
| `g`/`G` | Jump to top/bottom |
|
|
56
57
|
| `Enter` | Expand/collapse task |
|
|
57
58
|
| `/` | Search tasks |
|
|
58
59
|
| `?` | Show help |
|
|
59
60
|
| `r` | Refresh |
|
|
60
61
|
| `q` | Quit |
|
|
61
62
|
|
|
63
|
+
**Search Filters:**
|
|
64
|
+
| Filter | Example | Description |
|
|
65
|
+
|--------|---------|-------------|
|
|
66
|
+
| Priority | `p:high` | Filter by priority |
|
|
67
|
+
| Tag | `#bug` or `t:feature` | Filter by tag |
|
|
68
|
+
| Assignee | `@john` | Filter by assignee |
|
|
69
|
+
| Due date | `due:week` | `overdue`, `today`, `week`, `month` |
|
|
70
|
+
|
|
71
|
+
Combine filters with text: `p:high #bug login issue`
|
|
72
|
+
|
|
73
|
+
**Task Management:**
|
|
74
|
+
| Key | Action |
|
|
75
|
+
|-----|--------|
|
|
76
|
+
| `e` | Edit task in $EDITOR |
|
|
77
|
+
| `m` | Move task to column |
|
|
78
|
+
| `d` | Delete task |
|
|
79
|
+
| `n` | Quick add new task |
|
|
80
|
+
| `N` | New task in $EDITOR |
|
|
81
|
+
| `p` | Cycle priority |
|
|
82
|
+
| `t` | Toggle subtask |
|
|
83
|
+
| `a` | Archive task |
|
|
84
|
+
| `y` | Copy task ID |
|
|
85
|
+
|
|
62
86
|
---
|
|
63
87
|
|
|
64
88
|
### list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2CrD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,qBA0OlD"}
|
package/dist/tui/BrainfileTUI.js
CHANGED
|
@@ -40,6 +40,7 @@ const theme_js_1 = require("./theme.js");
|
|
|
40
40
|
const types_js_1 = require("./types.js");
|
|
41
41
|
const useBrainfileLoader_js_1 = require("./hooks/useBrainfileLoader.js");
|
|
42
42
|
const useKeyboardNavigation_js_1 = require("./hooks/useKeyboardNavigation.js");
|
|
43
|
+
const utils_js_1 = require("./utils.js");
|
|
43
44
|
const index_js_1 = require("./components/index.js");
|
|
44
45
|
const initialState = {
|
|
45
46
|
board: null,
|
|
@@ -95,24 +96,22 @@ function BrainfileTUI({ filePath }) {
|
|
|
95
96
|
return orderA - orderB;
|
|
96
97
|
});
|
|
97
98
|
}, [state.board]);
|
|
98
|
-
// Filtered columns based on search
|
|
99
|
-
const searchQuery = state.searchQuery.trim()
|
|
99
|
+
// Filtered columns based on search with structured filters
|
|
100
|
+
const searchQuery = state.searchQuery.trim();
|
|
101
|
+
const parsedSearch = (0, react_1.useMemo)(() => (0, utils_js_1.parseSearchQuery)(searchQuery), [searchQuery]);
|
|
102
|
+
const hasActiveFilter = searchQuery.length > 0;
|
|
100
103
|
const filteredColumns = (0, react_1.useMemo)(() => {
|
|
101
104
|
if (!orderedColumns.length)
|
|
102
105
|
return [];
|
|
103
|
-
if (!
|
|
106
|
+
if (!hasActiveFilter)
|
|
104
107
|
return orderedColumns;
|
|
105
108
|
return orderedColumns.map(col => ({
|
|
106
109
|
...col,
|
|
107
|
-
tasks: col.tasks.filter(task =>
|
|
108
|
-
task.id.toLowerCase().includes(searchQuery) ||
|
|
109
|
-
task.tags?.some(t => t.toLowerCase().includes(searchQuery)) ||
|
|
110
|
-
task.priority?.toLowerCase().includes(searchQuery) ||
|
|
111
|
-
task.description?.toLowerCase().includes(searchQuery)),
|
|
110
|
+
tasks: col.tasks.filter(task => (0, utils_js_1.taskMatchesFilter)(task, parsedSearch)),
|
|
112
111
|
})).filter(col => col.tasks.length > 0);
|
|
113
|
-
}, [orderedColumns,
|
|
112
|
+
}, [orderedColumns, hasActiveFilter, parsedSearch]);
|
|
114
113
|
// Check if search has no results
|
|
115
|
-
const hasNoSearchResults =
|
|
114
|
+
const hasNoSearchResults = hasActiveFilter && filteredColumns.length === 0;
|
|
116
115
|
// Current column and its tasks
|
|
117
116
|
const currentColumn = filteredColumns[state.activeColumnIndex];
|
|
118
117
|
const currentTasks = currentColumn?.tasks || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,gBAAgB,qBAqFtE"}
|
|
@@ -27,9 +27,15 @@ function HelpOverlay({ termWidth, termHeight }) {
|
|
|
27
27
|
react_1.default.createElement(ink_1.Box, { marginTop: 1 },
|
|
28
28
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "View")),
|
|
29
29
|
react_1.default.createElement(HelpRow, { k: "ENTER", desc: "Expand/collapse" }),
|
|
30
|
-
react_1.default.createElement(HelpRow, { k: "/", desc: "Search" }),
|
|
30
|
+
react_1.default.createElement(HelpRow, { k: "/", desc: "Search/filter" }),
|
|
31
31
|
react_1.default.createElement(HelpRow, { k: "r", desc: "Refresh" }),
|
|
32
|
-
react_1.default.createElement(HelpRow, { k: "ESC", desc: "Clear/close" })
|
|
32
|
+
react_1.default.createElement(HelpRow, { k: "ESC", desc: "Clear/close" }),
|
|
33
|
+
react_1.default.createElement(ink_1.Box, { marginTop: 1 },
|
|
34
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "Filters")),
|
|
35
|
+
react_1.default.createElement(HelpRow, { k: "p:high", desc: "By priority" }),
|
|
36
|
+
react_1.default.createElement(HelpRow, { k: "#tag", desc: "By tag" }),
|
|
37
|
+
react_1.default.createElement(HelpRow, { k: "@name", desc: "By assignee" }),
|
|
38
|
+
react_1.default.createElement(HelpRow, { k: "due:week", desc: "By due date" })),
|
|
33
39
|
react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
34
40
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "Tasks"),
|
|
35
41
|
react_1.default.createElement(HelpRow, { k: "n", desc: "New task (quick)" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpOverlay.js","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":";;;;;AASA,
|
|
1
|
+
{"version":3,"file":"HelpOverlay.js","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
export interface SearchBarProps {
|
|
3
3
|
query: string;
|
|
4
4
|
width: number;
|
|
5
|
+
showHints?: boolean;
|
|
5
6
|
}
|
|
6
|
-
export declare function SearchBar({ query, width }: SearchBarProps): React.JSX.Element;
|
|
7
|
+
export declare function SearchBar({ query, width, showHints }: SearchBarProps): React.JSX.Element;
|
|
7
8
|
//# sourceMappingURL=SearchBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAgB,EAAE,EAAE,cAAc,qBA8B3E"}
|
|
@@ -7,16 +7,30 @@ exports.SearchBar = SearchBar;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const ink_1 = require("ink");
|
|
9
9
|
const theme_js_1 = require("../theme.js");
|
|
10
|
-
function SearchBar({ query, width }) {
|
|
10
|
+
function SearchBar({ query, width, showHints = true }) {
|
|
11
11
|
const inputWidth = Math.min(width - 6, 60);
|
|
12
12
|
const displayQuery = query.padEnd(inputWidth, ' ').slice(0, inputWidth);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
// Show hints when query is empty
|
|
14
|
+
const showFilterHints = showHints && query.length === 0;
|
|
15
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", paddingLeft: 1, marginTop: 0 },
|
|
16
|
+
react_1.default.createElement(ink_1.Box, null,
|
|
17
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent },
|
|
18
|
+
theme_js_1.ICONS.search,
|
|
19
|
+
" "),
|
|
20
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, backgroundColor: theme_js_1.PALETTE.bgHighlight },
|
|
21
|
+
" ",
|
|
22
|
+
displayQuery,
|
|
23
|
+
" ")),
|
|
24
|
+
showFilterHints && (react_1.default.createElement(ink_1.Box, { marginTop: 0, marginLeft: 3 },
|
|
25
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
|
|
26
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "filters: "),
|
|
27
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "p:"),
|
|
28
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "priority "),
|
|
29
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "#"),
|
|
30
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "tag "),
|
|
31
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "@"),
|
|
32
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "assignee "),
|
|
33
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "due:"),
|
|
34
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "overdue|today|week"))))));
|
|
21
35
|
}
|
|
22
36
|
//# sourceMappingURL=SearchBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":";;;;;AAUA,8BA8BC;AAxCD,kDAA0B;AAC1B,6BAAgC;AAChC,0CAA6C;AAQ7C,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAkB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAExE,iCAAiC;IACjC,MAAM,eAAe,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAExD,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACtD,8BAAC,SAAG;YACF,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM;gBAAG,gBAAK,CAAC,MAAM;oBAAS;YACnD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAO,CAAC,WAAW;;gBAAI,YAAY;oBAAS,CACpF;QACL,eAAe,IAAI,CAClB,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC9B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;gBAC5B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,SAAW;gBAC7C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,WAAa;gBACzC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,WAAa;gBAC/C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,yBAA2B,CAClD,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC"}
|
package/dist/tui/index.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ export { BrainfileTUI } from './BrainfileTUI.js';
|
|
|
2
2
|
export { PALETTE, BOX, BORDERS, SPACING, ICONS } from './theme.js';
|
|
3
3
|
export type { AppState, ViewMode, BoardColumn, TUIProps } from './types.js';
|
|
4
4
|
export { HEADER_ROWS, FOOTER_ROWS } from './types.js';
|
|
5
|
-
export { truncate, getPriorityColor } from './utils.js';
|
|
5
|
+
export { truncate, getPriorityColor, parseSearchQuery, taskMatchesFilter } from './utils.js';
|
|
6
|
+
export type { ParsedSearch } from './utils.js';
|
|
6
7
|
export { useBrainfileLoader } from './hooks/useBrainfileLoader.js';
|
|
7
8
|
export { useKeyboardNavigation } from './hooks/useKeyboardNavigation.js';
|
|
8
9
|
export { Header, ProgressBar, SearchBar, ColumnTabs, TaskCard, TaskList, StatusBar, HelpOverlay, } from './components/index.js';
|
package/dist/tui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC7F,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC"}
|
package/dist/tui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = exports.useKeyboardNavigation = exports.useBrainfileLoader = exports.getPriorityColor = exports.truncate = exports.FOOTER_ROWS = exports.HEADER_ROWS = exports.ICONS = exports.SPACING = exports.BORDERS = exports.BOX = exports.PALETTE = exports.BrainfileTUI = void 0;
|
|
3
|
+
exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = exports.useKeyboardNavigation = exports.useBrainfileLoader = exports.taskMatchesFilter = exports.parseSearchQuery = exports.getPriorityColor = exports.truncate = exports.FOOTER_ROWS = exports.HEADER_ROWS = exports.ICONS = exports.SPACING = exports.BORDERS = exports.BOX = exports.PALETTE = exports.BrainfileTUI = void 0;
|
|
4
4
|
// Main component
|
|
5
5
|
var BrainfileTUI_js_1 = require("./BrainfileTUI.js");
|
|
6
6
|
Object.defineProperty(exports, "BrainfileTUI", { enumerable: true, get: function () { return BrainfileTUI_js_1.BrainfileTUI; } });
|
|
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "FOOTER_ROWS", { enumerable: true, get: function
|
|
|
18
18
|
var utils_js_1 = require("./utils.js");
|
|
19
19
|
Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return utils_js_1.truncate; } });
|
|
20
20
|
Object.defineProperty(exports, "getPriorityColor", { enumerable: true, get: function () { return utils_js_1.getPriorityColor; } });
|
|
21
|
+
Object.defineProperty(exports, "parseSearchQuery", { enumerable: true, get: function () { return utils_js_1.parseSearchQuery; } });
|
|
22
|
+
Object.defineProperty(exports, "taskMatchesFilter", { enumerable: true, get: function () { return utils_js_1.taskMatchesFilter; } });
|
|
21
23
|
// Hooks
|
|
22
24
|
var useBrainfileLoader_js_1 = require("./hooks/useBrainfileLoader.js");
|
|
23
25
|
Object.defineProperty(exports, "useBrainfileLoader", { enumerable: true, get: function () { return useBrainfileLoader_js_1.useBrainfileLoader; } });
|
package/dist/tui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,QAAQ;AACR,uCAAmE;AAA1D,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,iGAAA,KAAK,OAAA;AAI9C,uCAAsD;AAA7C,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAEjC,QAAQ;AACR,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,QAAQ;AACR,uCAAmE;AAA1D,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,iGAAA,KAAK,OAAA;AAI9C,uCAAsD;AAA7C,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAEjC,QAAQ;AACR,uCAA6F;AAApF,oGAAA,QAAQ,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAGxE,QAAQ;AACR,uEAAmE;AAA1D,2HAAA,kBAAkB,OAAA;AAC3B,6EAAyE;AAAhE,iIAAA,qBAAqB,OAAA;AAE9B,aAAa;AACb,kDAS+B;AAR7B,kGAAA,MAAM,OAAA;AACN,uGAAA,WAAW,OAAA;AACX,qGAAA,SAAS,OAAA;AACT,sGAAA,UAAU,OAAA;AACV,oGAAA,QAAQ,OAAA;AACR,oGAAA,QAAQ,OAAA;AACR,qGAAA,SAAS,OAAA;AACT,uGAAA,WAAW,OAAA"}
|
package/dist/tui/utils.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
import type { Task } from '@brainfile/core';
|
|
2
|
+
/**
|
|
3
|
+
* Parsed search query with structured filters and text search
|
|
4
|
+
*/
|
|
5
|
+
export interface ParsedSearch {
|
|
6
|
+
text: string;
|
|
7
|
+
priority?: string;
|
|
8
|
+
tag?: string;
|
|
9
|
+
assignee?: string;
|
|
10
|
+
due?: 'overdue' | 'today' | 'week' | 'month';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse search query to extract structured filters
|
|
14
|
+
* Supports: p:high, t:bug, #tag, @assignee, due:overdue
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseSearchQuery(query: string): ParsedSearch;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a task matches the parsed search filters
|
|
19
|
+
*/
|
|
20
|
+
export declare function taskMatchesFilter(task: Task, filter: ParsedSearch): boolean;
|
|
1
21
|
export declare function truncate(value: string, maxLength: number): string;
|
|
2
22
|
export declare function getPriorityColor(priority?: string): string;
|
|
3
23
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/tui/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAmD5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CA+D3E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAe1D"}
|
package/dist/tui/utils.js
CHANGED
|
@@ -1,8 +1,123 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSearchQuery = parseSearchQuery;
|
|
4
|
+
exports.taskMatchesFilter = taskMatchesFilter;
|
|
3
5
|
exports.truncate = truncate;
|
|
4
6
|
exports.getPriorityColor = getPriorityColor;
|
|
5
7
|
const theme_js_1 = require("./theme.js");
|
|
8
|
+
/**
|
|
9
|
+
* Parse search query to extract structured filters
|
|
10
|
+
* Supports: p:high, t:bug, #tag, @assignee, due:overdue
|
|
11
|
+
*/
|
|
12
|
+
function parseSearchQuery(query) {
|
|
13
|
+
const result = { text: '' };
|
|
14
|
+
const parts = [];
|
|
15
|
+
// Split by spaces but preserve quoted strings (future enhancement)
|
|
16
|
+
const tokens = query.trim().split(/\s+/);
|
|
17
|
+
for (const token of tokens) {
|
|
18
|
+
const lower = token.toLowerCase();
|
|
19
|
+
// Priority filter: p:high or priority:critical
|
|
20
|
+
if (lower.startsWith('p:') || lower.startsWith('priority:')) {
|
|
21
|
+
result.priority = token.split(':')[1]?.toLowerCase();
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Tag filter: t:bug, tag:feature, or #hashtag
|
|
25
|
+
if (lower.startsWith('t:') || lower.startsWith('tag:')) {
|
|
26
|
+
result.tag = token.split(':')[1]?.toLowerCase();
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (token.startsWith('#') && token.length > 1) {
|
|
30
|
+
result.tag = token.slice(1).toLowerCase();
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Assignee filter: @john or assignee:john
|
|
34
|
+
if (token.startsWith('@') && token.length > 1) {
|
|
35
|
+
result.assignee = token.slice(1).toLowerCase();
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (lower.startsWith('assignee:')) {
|
|
39
|
+
result.assignee = token.split(':')[1]?.toLowerCase();
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// Due date filter: due:overdue, due:today, due:week, due:month
|
|
43
|
+
if (lower.startsWith('due:')) {
|
|
44
|
+
const value = lower.split(':')[1];
|
|
45
|
+
if (['overdue', 'today', 'week', 'month'].includes(value)) {
|
|
46
|
+
result.due = value;
|
|
47
|
+
}
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Not a filter, add to text search
|
|
51
|
+
parts.push(token);
|
|
52
|
+
}
|
|
53
|
+
result.text = parts.join(' ').toLowerCase();
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if a task matches the parsed search filters
|
|
58
|
+
*/
|
|
59
|
+
function taskMatchesFilter(task, filter) {
|
|
60
|
+
// Priority filter
|
|
61
|
+
if (filter.priority) {
|
|
62
|
+
if (!task.priority || task.priority.toLowerCase() !== filter.priority) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Tag filter
|
|
67
|
+
if (filter.tag) {
|
|
68
|
+
if (!task.tags || !task.tags.some(t => t.toLowerCase().includes(filter.tag))) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Assignee filter
|
|
73
|
+
if (filter.assignee) {
|
|
74
|
+
if (!task.assignee || !task.assignee.toLowerCase().includes(filter.assignee)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Due date filter
|
|
79
|
+
if (filter.due && task.dueDate) {
|
|
80
|
+
const due = new Date(task.dueDate);
|
|
81
|
+
const now = new Date();
|
|
82
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
83
|
+
const diffDays = Math.ceil((due.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
|
|
84
|
+
switch (filter.due) {
|
|
85
|
+
case 'overdue':
|
|
86
|
+
if (diffDays >= 0)
|
|
87
|
+
return false;
|
|
88
|
+
break;
|
|
89
|
+
case 'today':
|
|
90
|
+
if (diffDays !== 0)
|
|
91
|
+
return false;
|
|
92
|
+
break;
|
|
93
|
+
case 'week':
|
|
94
|
+
if (diffDays < 0 || diffDays > 7)
|
|
95
|
+
return false;
|
|
96
|
+
break;
|
|
97
|
+
case 'month':
|
|
98
|
+
if (diffDays < 0 || diffDays > 30)
|
|
99
|
+
return false;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (filter.due) {
|
|
104
|
+
// Due filter specified but task has no due date
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
// Text search (substring match across multiple fields)
|
|
108
|
+
if (filter.text) {
|
|
109
|
+
const searchText = filter.text;
|
|
110
|
+
const matchesText = task.title.toLowerCase().includes(searchText) ||
|
|
111
|
+
task.id.toLowerCase().includes(searchText) ||
|
|
112
|
+
task.tags?.some(t => t.toLowerCase().includes(searchText)) ||
|
|
113
|
+
task.priority?.toLowerCase().includes(searchText) ||
|
|
114
|
+
task.description?.toLowerCase().includes(searchText) ||
|
|
115
|
+
task.assignee?.toLowerCase().includes(searchText);
|
|
116
|
+
if (!matchesText)
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
6
121
|
function truncate(value, maxLength) {
|
|
7
122
|
if (!value)
|
|
8
123
|
return ' '; // Return space instead of empty string for Ink compatibility
|
package/dist/tui/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":";;AAkBA,4CAmDC;AAKD,8CA+DC;AAED,4BAKC;AAED,4CAeC;AAhKD,yCAAqC;AAarC;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,MAAM,MAAM,GAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,mEAAmE;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAElC,+CAA+C;QAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,8CAA8C;QAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,+DAA+D;QAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,GAAG,GAAG,KAA4B,CAAC;YAC5C,CAAC;YACD,SAAS;QACX,CAAC;QAED,mCAAmC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAU,EAAE,MAAoB;IAChE,kBAAkB;IAClB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEtF,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,IAAI,QAAQ,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,QAAQ,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC/C,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE;oBAAE,OAAO,KAAK,CAAC;gBAChD,MAAM;QACV,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACtB,gDAAgD;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpD,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAa,EAAE,SAAiB;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC,CAAC,6DAA6D;IACrF,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1D,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,QAAQ,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,kBAAO,CAAC,QAAQ,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,kBAAO,CAAC,IAAI,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,kBAAO,CAAC,IAAI,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,kBAAO,CAAC,MAAM,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,kBAAO,CAAC,GAAG,CAAC;QACrB;YACE,OAAO,kBAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;AACH,CAAC"}
|