@brainfile/cli 0.8.1 → 0.9.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.
Files changed (80) hide show
  1. package/dist/commands/tui.d.ts.map +1 -1
  2. package/dist/commands/tui.js +6 -701
  3. package/dist/commands/tui.js.map +1 -1
  4. package/dist/tui/BrainfileTUI.d.ts +4 -0
  5. package/dist/tui/BrainfileTUI.d.ts.map +1 -0
  6. package/dist/tui/BrainfileTUI.js +198 -0
  7. package/dist/tui/BrainfileTUI.js.map +1 -0
  8. package/dist/tui/actions.d.ts +49 -0
  9. package/dist/tui/actions.d.ts.map +1 -0
  10. package/dist/tui/actions.js +569 -0
  11. package/dist/tui/actions.js.map +1 -0
  12. package/dist/tui/components/ColumnTabs.d.ts +9 -0
  13. package/dist/tui/components/ColumnTabs.d.ts.map +1 -0
  14. package/dist/tui/components/ColumnTabs.js +30 -0
  15. package/dist/tui/components/ColumnTabs.js.map +1 -0
  16. package/dist/tui/components/Header.d.ts +12 -0
  17. package/dist/tui/components/Header.d.ts.map +1 -0
  18. package/dist/tui/components/Header.js +24 -0
  19. package/dist/tui/components/Header.js.map +1 -0
  20. package/dist/tui/components/HelpOverlay.d.ts +7 -0
  21. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  22. package/dist/tui/components/HelpOverlay.js +56 -0
  23. package/dist/tui/components/HelpOverlay.js.map +1 -0
  24. package/dist/tui/components/Overlays.d.ts +41 -0
  25. package/dist/tui/components/Overlays.d.ts.map +1 -0
  26. package/dist/tui/components/Overlays.js +127 -0
  27. package/dist/tui/components/Overlays.js.map +1 -0
  28. package/dist/tui/components/ProgressBar.d.ts +8 -0
  29. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  30. package/dist/tui/components/ProgressBar.js +35 -0
  31. package/dist/tui/components/ProgressBar.js.map +1 -0
  32. package/dist/tui/components/SearchBar.d.ts +7 -0
  33. package/dist/tui/components/SearchBar.d.ts.map +1 -0
  34. package/dist/tui/components/SearchBar.js +22 -0
  35. package/dist/tui/components/SearchBar.js.map +1 -0
  36. package/dist/tui/components/StatusBar.d.ts +12 -0
  37. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  38. package/dist/tui/components/StatusBar.js +37 -0
  39. package/dist/tui/components/StatusBar.js.map +1 -0
  40. package/dist/tui/components/TaskCard.d.ts +19 -0
  41. package/dist/tui/components/TaskCard.d.ts.map +1 -0
  42. package/dist/tui/components/TaskCard.js +105 -0
  43. package/dist/tui/components/TaskCard.js.map +1 -0
  44. package/dist/tui/components/TaskList.d.ts +11 -0
  45. package/dist/tui/components/TaskList.d.ts.map +1 -0
  46. package/dist/tui/components/TaskList.js +56 -0
  47. package/dist/tui/components/TaskList.js.map +1 -0
  48. package/dist/tui/components/index.d.ts +19 -0
  49. package/dist/tui/components/index.d.ts.map +1 -0
  50. package/dist/tui/components/index.js +26 -0
  51. package/dist/tui/components/index.js.map +1 -0
  52. package/dist/tui/hooks/index.d.ts +3 -0
  53. package/dist/tui/hooks/index.d.ts.map +1 -0
  54. package/dist/tui/hooks/index.js +8 -0
  55. package/dist/tui/hooks/index.js.map +1 -0
  56. package/dist/tui/hooks/useBrainfileLoader.d.ts +5 -0
  57. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -0
  58. package/dist/tui/hooks/useBrainfileLoader.js +171 -0
  59. package/dist/tui/hooks/useBrainfileLoader.js.map +1 -0
  60. package/dist/tui/hooks/useKeyboardNavigation.d.ts +16 -0
  61. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -0
  62. package/dist/tui/hooks/useKeyboardNavigation.js +434 -0
  63. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -0
  64. package/dist/tui/index.d.ts +9 -0
  65. package/dist/tui/index.d.ts.map +1 -0
  66. package/dist/tui/index.js +36 -0
  67. package/dist/tui/index.js.map +1 -0
  68. package/dist/tui/theme.d.ts +113 -0
  69. package/dist/tui/theme.d.ts.map +1 -0
  70. package/dist/tui/theme.js +132 -0
  71. package/dist/tui/theme.js.map +1 -0
  72. package/dist/tui/types.d.ts +30 -0
  73. package/dist/tui/types.d.ts.map +1 -0
  74. package/dist/tui/types.js +6 -0
  75. package/dist/tui/types.js.map +1 -0
  76. package/dist/tui/utils.d.ts +3 -0
  77. package/dist/tui/utils.d.ts.map +1 -0
  78. package/dist/tui/utils.js +31 -0
  79. package/dist/tui/utils.js.map +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1,569 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.moveTaskAction = moveTaskAction;
37
+ exports.deleteTaskAction = deleteTaskAction;
38
+ exports.archiveTaskAction = archiveTaskAction;
39
+ exports.patchTaskAction = patchTaskAction;
40
+ exports.cyclePriorityAction = cyclePriorityAction;
41
+ exports.toggleSubtaskAction = toggleSubtaskAction;
42
+ exports.addTaskAction = addTaskAction;
43
+ exports.newTaskInEditor = newTaskInEditor;
44
+ exports.editTaskInEditor = editTaskInEditor;
45
+ exports.copyToClipboard = copyToClipboard;
46
+ /**
47
+ * TUI Actions - Wrappers around @brainfile/core operations
48
+ *
49
+ * All actions read/write the brainfile directly. The file watcher
50
+ * in useBrainfileLoader will detect changes and refresh the UI.
51
+ */
52
+ const fs = __importStar(require("fs"));
53
+ const path = __importStar(require("path"));
54
+ const os = __importStar(require("os"));
55
+ const child_process_1 = require("child_process");
56
+ const core_1 = require("@brainfile/core");
57
+ /**
58
+ * Read and parse the brainfile
59
+ */
60
+ function readBrainfile(filePath) {
61
+ try {
62
+ const content = fs.readFileSync(filePath, 'utf-8');
63
+ const result = core_1.Brainfile.parseWithErrors(content);
64
+ if (!result.board) {
65
+ return { board: null, content, error: result.error || 'Failed to parse brainfile' };
66
+ }
67
+ return { board: result.board, content };
68
+ }
69
+ catch (err) {
70
+ return { board: null, content: '', error: err instanceof Error ? err.message : String(err) };
71
+ }
72
+ }
73
+ /**
74
+ * Write the board back to the brainfile
75
+ */
76
+ function writeBrainfile(filePath, board) {
77
+ try {
78
+ const content = core_1.Brainfile.serialize(board);
79
+ fs.writeFileSync(filePath, content, 'utf-8');
80
+ return { success: true };
81
+ }
82
+ catch (err) {
83
+ return { success: false, error: err instanceof Error ? err.message : String(err) };
84
+ }
85
+ }
86
+ /**
87
+ * Move a task to a different column
88
+ */
89
+ function moveTaskAction(filePath, taskId, targetColumnId) {
90
+ const { board, error } = readBrainfile(filePath);
91
+ if (!board)
92
+ return { success: false, error };
93
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
94
+ if (!taskInfo)
95
+ return { success: false, error: `Task ${taskId} not found` };
96
+ const targetColumn = (0, core_1.findColumnById)(board, targetColumnId) || (0, core_1.findColumnByName)(board, targetColumnId);
97
+ if (!targetColumn)
98
+ return { success: false, error: `Column ${targetColumnId} not found` };
99
+ if (taskInfo.column.id === targetColumn.id) {
100
+ return { success: true, message: 'Task already in this column' };
101
+ }
102
+ const result = (0, core_1.moveTask)(board, taskId, taskInfo.column.id, targetColumn.id, targetColumn.tasks.length);
103
+ if (!result.success)
104
+ return { success: false, error: result.error };
105
+ const writeResult = writeBrainfile(filePath, result.board);
106
+ if (!writeResult.success)
107
+ return writeResult;
108
+ return { success: true, message: `Moved to ${targetColumn.title}` };
109
+ }
110
+ /**
111
+ * Delete a task permanently
112
+ */
113
+ function deleteTaskAction(filePath, taskId) {
114
+ const { board, error } = readBrainfile(filePath);
115
+ if (!board)
116
+ return { success: false, error };
117
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
118
+ if (!taskInfo)
119
+ return { success: false, error: `Task ${taskId} not found` };
120
+ const result = (0, core_1.deleteTask)(board, taskInfo.column.id, taskId);
121
+ if (!result.success)
122
+ return { success: false, error: result.error };
123
+ const writeResult = writeBrainfile(filePath, result.board);
124
+ if (!writeResult.success)
125
+ return writeResult;
126
+ return { success: true, message: `Deleted ${taskId}` };
127
+ }
128
+ /**
129
+ * Archive a task
130
+ */
131
+ function archiveTaskAction(filePath, taskId) {
132
+ const { board, error } = readBrainfile(filePath);
133
+ if (!board)
134
+ return { success: false, error };
135
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
136
+ if (!taskInfo)
137
+ return { success: false, error: `Task ${taskId} not found` };
138
+ const result = (0, core_1.archiveTask)(board, taskInfo.column.id, taskId);
139
+ if (!result.success)
140
+ return { success: false, error: result.error };
141
+ const writeResult = writeBrainfile(filePath, result.board);
142
+ if (!writeResult.success)
143
+ return writeResult;
144
+ return { success: true, message: `Archived ${taskId}` };
145
+ }
146
+ /**
147
+ * Patch/update task fields
148
+ */
149
+ function patchTaskAction(filePath, taskId, patch) {
150
+ const { board, error } = readBrainfile(filePath);
151
+ if (!board)
152
+ return { success: false, error };
153
+ const result = (0, core_1.patchTask)(board, taskId, patch);
154
+ if (!result.success)
155
+ return { success: false, error: result.error };
156
+ const writeResult = writeBrainfile(filePath, result.board);
157
+ if (!writeResult.success)
158
+ return writeResult;
159
+ return { success: true, message: `Updated ${taskId}` };
160
+ }
161
+ /**
162
+ * Cycle task priority: none -> low -> medium -> high -> critical -> none
163
+ */
164
+ function cyclePriorityAction(filePath, taskId) {
165
+ const { board, error } = readBrainfile(filePath);
166
+ if (!board)
167
+ return { success: false, error };
168
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
169
+ if (!taskInfo)
170
+ return { success: false, error: `Task ${taskId} not found` };
171
+ const priorities = [undefined, 'low', 'medium', 'high', 'critical'];
172
+ const currentIndex = priorities.indexOf(taskInfo.task.priority);
173
+ const nextIndex = (currentIndex + 1) % priorities.length;
174
+ const nextPriority = priorities[nextIndex];
175
+ const patch = { priority: nextPriority || null };
176
+ const result = (0, core_1.patchTask)(board, taskId, patch);
177
+ if (!result.success)
178
+ return { success: false, error: result.error };
179
+ const writeResult = writeBrainfile(filePath, result.board);
180
+ if (!writeResult.success)
181
+ return writeResult;
182
+ return { success: true, message: `Priority: ${nextPriority || 'none'}` };
183
+ }
184
+ /**
185
+ * Toggle a subtask's completion status
186
+ */
187
+ function toggleSubtaskAction(filePath, taskId, subtaskId) {
188
+ const { board, error } = readBrainfile(filePath);
189
+ if (!board)
190
+ return { success: false, error };
191
+ const result = (0, core_1.toggleSubtask)(board, taskId, subtaskId);
192
+ if (!result.success)
193
+ return { success: false, error: result.error };
194
+ const writeResult = writeBrainfile(filePath, result.board);
195
+ if (!writeResult.success)
196
+ return writeResult;
197
+ return { success: true, message: `Toggled ${subtaskId}` };
198
+ }
199
+ /**
200
+ * Add a new task to a column (quick add - title only)
201
+ */
202
+ function addTaskAction(filePath, columnId, taskInput) {
203
+ const { board, error } = readBrainfile(filePath);
204
+ if (!board)
205
+ return { success: false, error };
206
+ const column = (0, core_1.findColumnById)(board, columnId) || (0, core_1.findColumnByName)(board, columnId);
207
+ if (!column)
208
+ return { success: false, error: `Column ${columnId} not found` };
209
+ const result = (0, core_1.addTask)(board, column.id, taskInput);
210
+ if (!result.success)
211
+ return { success: false, error: result.error };
212
+ const writeResult = writeBrainfile(filePath, result.board);
213
+ if (!writeResult.success)
214
+ return writeResult;
215
+ // Get the new task ID
216
+ const newColumn = result.board.columns.find(c => c.id === column.id);
217
+ const newTask = newColumn?.tasks[newColumn.tasks.length - 1];
218
+ return { success: true, message: `Added ${newTask?.id || 'task'}` };
219
+ }
220
+ /**
221
+ * Create a new task using $EDITOR with full template
222
+ */
223
+ function newTaskInEditor(filePath, columnId) {
224
+ const { board, error } = readBrainfile(filePath);
225
+ if (!board)
226
+ return { success: false, error };
227
+ const column = (0, core_1.findColumnById)(board, columnId) || (0, core_1.findColumnByName)(board, columnId);
228
+ if (!column)
229
+ return { success: false, error: `Column ${columnId} not found` };
230
+ // Build template for new task
231
+ const template = buildNewTaskTemplate();
232
+ // Write to temp file
233
+ const tempDir = os.tmpdir();
234
+ const tempFile = path.join(tempDir, `brainfile-new-task.yaml`);
235
+ try {
236
+ fs.writeFileSync(tempFile, template, 'utf-8');
237
+ }
238
+ catch (err) {
239
+ return { success: false, error: `Failed to create temp file: ${err}` };
240
+ }
241
+ // Get editor from environment
242
+ const editor = process.env.EDITOR || process.env.VISUAL || 'nano';
243
+ // Use spawnSync to block and give full terminal control to editor
244
+ // 5 minute timeout to prevent indefinite hangs
245
+ const result = (0, child_process_1.spawnSync)(editor, [tempFile], {
246
+ stdio: 'inherit',
247
+ shell: true,
248
+ timeout: 300000,
249
+ });
250
+ if (result.error) {
251
+ cleanupTempFile(tempFile);
252
+ return { success: false, error: `Failed to open editor: ${result.error.message}` };
253
+ }
254
+ if (result.signal === 'SIGTERM') {
255
+ cleanupTempFile(tempFile);
256
+ return { success: false, error: 'Editor timed out (5 minute limit)' };
257
+ }
258
+ if (result.status !== 0) {
259
+ cleanupTempFile(tempFile);
260
+ return { success: false, error: `Editor exited with code ${result.status}` };
261
+ }
262
+ // Read edited content
263
+ let editedYaml;
264
+ try {
265
+ editedYaml = fs.readFileSync(tempFile, 'utf-8');
266
+ }
267
+ catch (err) {
268
+ cleanupTempFile(tempFile);
269
+ return { success: false, error: `Failed to read edited file: ${err}` };
270
+ }
271
+ cleanupTempFile(tempFile);
272
+ // Parse the new task
273
+ const parseResult = parseNewTaskYaml(editedYaml);
274
+ if (!parseResult.success) {
275
+ return { success: false, error: parseResult.error };
276
+ }
277
+ if (!parseResult.taskInput || !parseResult.taskInput.title) {
278
+ return { success: false, error: 'Task title is required' };
279
+ }
280
+ // Add the task
281
+ return addTaskAction(filePath, columnId, parseResult.taskInput);
282
+ }
283
+ /**
284
+ * Build template for a new task
285
+ */
286
+ function buildNewTaskTemplate() {
287
+ return `# New Task
288
+ # Fill in the fields below. Save and close to create the task.
289
+ # Lines starting with # are ignored. Title is required.
290
+
291
+ title:
292
+ description:
293
+ priority:
294
+ tags:
295
+ assignee:
296
+ dueDate:
297
+ `;
298
+ }
299
+ /**
300
+ * Parse new task YAML into TaskInput
301
+ */
302
+ function parseNewTaskYaml(yaml) {
303
+ try {
304
+ const lines = yaml.split('\n').filter(line => !line.startsWith('#') && line.trim());
305
+ const taskInput = { title: '' };
306
+ for (const line of lines) {
307
+ const colonIndex = line.indexOf(':');
308
+ if (colonIndex === -1)
309
+ continue;
310
+ const key = line.substring(0, colonIndex).trim();
311
+ const value = line.substring(colonIndex + 1).trim();
312
+ switch (key) {
313
+ case 'title':
314
+ if (value)
315
+ taskInput.title = value;
316
+ break;
317
+ case 'description':
318
+ if (value)
319
+ taskInput.description = value;
320
+ break;
321
+ case 'priority':
322
+ const validPriorities = ['low', 'medium', 'high', 'critical'];
323
+ if (validPriorities.includes(value)) {
324
+ taskInput.priority = value;
325
+ }
326
+ break;
327
+ case 'tags':
328
+ if (value) {
329
+ taskInput.tags = value.split(',').map(t => t.trim()).filter(Boolean);
330
+ }
331
+ break;
332
+ case 'assignee':
333
+ if (value)
334
+ taskInput.assignee = value;
335
+ break;
336
+ case 'dueDate':
337
+ if (value)
338
+ taskInput.dueDate = value;
339
+ break;
340
+ }
341
+ }
342
+ return { success: true, taskInput };
343
+ }
344
+ catch (err) {
345
+ return { success: false, error: `Failed to parse task: ${err}` };
346
+ }
347
+ }
348
+ /**
349
+ * Edit a task in the user's preferred editor
350
+ * Uses spawnSync to fully block and give terminal control to the editor
351
+ */
352
+ function editTaskInEditor(filePath, taskId) {
353
+ const { board, error } = readBrainfile(filePath);
354
+ if (!board) {
355
+ return { success: false, error };
356
+ }
357
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
358
+ if (!taskInfo) {
359
+ return { success: false, error: `Task ${taskId} not found` };
360
+ }
361
+ const task = taskInfo.task;
362
+ // Build YAML representation of just this task
363
+ const taskYaml = buildTaskYaml(task);
364
+ // Write to temp file
365
+ const tempDir = os.tmpdir();
366
+ const tempFile = path.join(tempDir, `brainfile-edit-${taskId}.yaml`);
367
+ try {
368
+ fs.writeFileSync(tempFile, taskYaml, 'utf-8');
369
+ }
370
+ catch (err) {
371
+ return { success: false, error: `Failed to create temp file: ${err}` };
372
+ }
373
+ // Get editor from environment
374
+ const editor = process.env.EDITOR || process.env.VISUAL || 'nano';
375
+ // Use spawnSync to block and give full terminal control to editor
376
+ // 5 minute timeout to prevent indefinite hangs
377
+ const result = (0, child_process_1.spawnSync)(editor, [tempFile], {
378
+ stdio: 'inherit',
379
+ shell: true,
380
+ timeout: 300000,
381
+ });
382
+ if (result.error) {
383
+ cleanupTempFile(tempFile);
384
+ return { success: false, error: `Failed to open editor: ${result.error.message}` };
385
+ }
386
+ if (result.signal === 'SIGTERM') {
387
+ cleanupTempFile(tempFile);
388
+ return { success: false, error: 'Editor timed out (5 minute limit)' };
389
+ }
390
+ if (result.status !== 0) {
391
+ cleanupTempFile(tempFile);
392
+ return { success: false, error: `Editor exited with code ${result.status}` };
393
+ }
394
+ // Read edited content
395
+ let editedYaml;
396
+ try {
397
+ editedYaml = fs.readFileSync(tempFile, 'utf-8');
398
+ }
399
+ catch (err) {
400
+ cleanupTempFile(tempFile);
401
+ return { success: false, error: `Failed to read edited file: ${err}` };
402
+ }
403
+ cleanupTempFile(tempFile);
404
+ // Parse edited YAML and apply as patch
405
+ const patchResult = parseEditedTaskYaml(editedYaml, task);
406
+ if (!patchResult.success) {
407
+ return { success: false, error: patchResult.error };
408
+ }
409
+ if (!patchResult.patch || Object.keys(patchResult.patch).length === 0) {
410
+ return { success: true, message: 'No changes made' };
411
+ }
412
+ // Apply the patch
413
+ return patchTaskAction(filePath, taskId, patchResult.patch);
414
+ }
415
+ /**
416
+ * Build YAML representation of a task for editing
417
+ */
418
+ function buildTaskYaml(task) {
419
+ const lines = [
420
+ `# Edit task: ${task.id}`,
421
+ `# Save and close to apply changes. Delete a field to clear it.`,
422
+ `# Lines starting with # are ignored.`,
423
+ ``,
424
+ `title: ${task.title}`,
425
+ ];
426
+ if (task.description) {
427
+ // Handle multi-line descriptions
428
+ if (task.description.includes('\n')) {
429
+ lines.push(`description: |`);
430
+ task.description.split('\n').forEach(line => {
431
+ lines.push(` ${line}`);
432
+ });
433
+ }
434
+ else {
435
+ lines.push(`description: ${task.description}`);
436
+ }
437
+ }
438
+ else {
439
+ lines.push(`# description: `);
440
+ }
441
+ lines.push(`priority: ${task.priority || ''}`);
442
+ lines.push(`tags: ${task.tags?.join(', ') || ''}`);
443
+ lines.push(`assignee: ${task.assignee || ''}`);
444
+ lines.push(`dueDate: ${task.dueDate || ''}`);
445
+ if (task.subtasks && task.subtasks.length > 0) {
446
+ lines.push(`subtasks:`);
447
+ task.subtasks.forEach(st => {
448
+ lines.push(` - [${st.completed ? 'x' : ' '}] ${st.title}`);
449
+ });
450
+ }
451
+ if (task.relatedFiles && task.relatedFiles.length > 0) {
452
+ lines.push(`relatedFiles: ${task.relatedFiles.join(', ')}`);
453
+ }
454
+ return lines.join('\n') + '\n';
455
+ }
456
+ /**
457
+ * Parse edited YAML and return a TaskPatch
458
+ */
459
+ function parseEditedTaskYaml(yaml, originalTask) {
460
+ const patch = {};
461
+ try {
462
+ const lines = yaml.split('\n').filter(line => !line.startsWith('#') && line.trim());
463
+ for (const line of lines) {
464
+ const colonIndex = line.indexOf(':');
465
+ if (colonIndex === -1)
466
+ continue;
467
+ const key = line.substring(0, colonIndex).trim();
468
+ const value = line.substring(colonIndex + 1).trim();
469
+ switch (key) {
470
+ case 'title':
471
+ if (value && value !== originalTask.title) {
472
+ patch.title = value;
473
+ }
474
+ break;
475
+ case 'description':
476
+ if (value !== (originalTask.description || '')) {
477
+ patch.description = value || undefined;
478
+ }
479
+ break;
480
+ case 'priority':
481
+ const validPriorities = ['low', 'medium', 'high', 'critical', ''];
482
+ if (validPriorities.includes(value) && value !== (originalTask.priority || '')) {
483
+ patch.priority = value || null;
484
+ }
485
+ break;
486
+ case 'tags':
487
+ const newTags = value ? value.split(',').map(t => t.trim()).filter(Boolean) : [];
488
+ const oldTags = originalTask.tags || [];
489
+ if (JSON.stringify(newTags) !== JSON.stringify(oldTags)) {
490
+ patch.tags = newTags.length > 0 ? newTags : null;
491
+ }
492
+ break;
493
+ case 'assignee':
494
+ if (value !== (originalTask.assignee || '')) {
495
+ patch.assignee = value || null;
496
+ }
497
+ break;
498
+ case 'dueDate':
499
+ if (value !== (originalTask.dueDate || '')) {
500
+ patch.dueDate = value || null;
501
+ }
502
+ break;
503
+ case 'relatedFiles':
504
+ const newFiles = value ? value.split(',').map(f => f.trim()).filter(Boolean) : [];
505
+ const oldFiles = originalTask.relatedFiles || [];
506
+ if (JSON.stringify(newFiles) !== JSON.stringify(oldFiles)) {
507
+ patch.relatedFiles = newFiles.length > 0 ? newFiles : null;
508
+ }
509
+ break;
510
+ }
511
+ }
512
+ return { success: true, patch };
513
+ }
514
+ catch (err) {
515
+ return { success: false, error: `Failed to parse edited YAML: ${err}` };
516
+ }
517
+ }
518
+ /**
519
+ * Clean up temp file
520
+ */
521
+ function cleanupTempFile(filePath) {
522
+ try {
523
+ if (fs.existsSync(filePath)) {
524
+ fs.unlinkSync(filePath);
525
+ }
526
+ }
527
+ catch {
528
+ // Ignore cleanup errors
529
+ }
530
+ }
531
+ /**
532
+ * Copy text to clipboard (cross-platform)
533
+ * Uses spawnSync with input option to pipe text to clipboard command
534
+ */
535
+ function copyToClipboard(text) {
536
+ try {
537
+ const platform = process.platform;
538
+ let command;
539
+ let args;
540
+ if (platform === 'darwin') {
541
+ command = 'pbcopy';
542
+ args = [];
543
+ }
544
+ else if (platform === 'linux') {
545
+ // Try xclip first, fall back to xsel
546
+ command = 'xclip';
547
+ args = ['-selection', 'clipboard'];
548
+ }
549
+ else if (platform === 'win32') {
550
+ command = 'clip';
551
+ args = [];
552
+ }
553
+ else {
554
+ return { success: false, error: 'Clipboard not supported on this platform' };
555
+ }
556
+ const result = (0, child_process_1.spawnSync)(command, args, {
557
+ input: text,
558
+ stdio: ['pipe', 'ignore', 'ignore'],
559
+ });
560
+ if (result.error) {
561
+ return { success: false, error: `Clipboard error: ${result.error.message}` };
562
+ }
563
+ return { success: true, message: 'Copied to clipboard' };
564
+ }
565
+ catch (err) {
566
+ return { success: false, error: `Failed to copy: ${err}` };
567
+ }
568
+ }
569
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tui/actions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,wCAyBC;AAKD,4CAcC;AAKD,8CAcC;AAKD,0CAeC;AAKD,kDAoBC;AAKD,kDAeC;AAKD,sCAsBC;AAKD,0CAwEC;AAyED,4CA8EC;AAqID,0CAiCC;AAtmBD;;;;;GAKG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAA0C;AAC1C,0CAeyB;AAQzB;;GAEG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,gBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,2BAA2B,EAAE,CAAC;QACtF,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,KAAY;IACpD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,gBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,QAAgB,EAChB,MAAc,EACd,cAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IAE5E,MAAM,YAAY,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,cAAc,CAAC,IAAI,IAAA,uBAAgB,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACtG,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,cAAc,YAAY,EAAE,CAAC;IAE1F,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,eAAQ,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvG,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,MAAc;IAC/D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IAE5E,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,MAAM,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAgB,EAAE,MAAc;IAChE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IAE5E,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,MAAM,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,QAAgB,EAChB,MAAc,EACd,KAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,MAAM,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IAClE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IAE5E,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;IAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAqC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IACzD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAc,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,YAAY,IAAI,MAAM,EAAE,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,MAAc,EACd,SAAiB;IAEjB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,SAAS,EAAE,EAAE,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,QAAgB,EAChB,QAAgB,EAChB,SAAoB;IAEpB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAA,uBAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,QAAQ,YAAY,EAAE,CAAC;IAE9E,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAE7C,sBAAsB;IACtB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,QAAgB,EAChB,QAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAA,uBAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,QAAQ,YAAY,EAAE,CAAC;IAE9E,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,GAAG,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;IAElE,kEAAkE;IAClE,+CAA+C;IAC/C,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;QAC3C,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/E,CAAC;IAED,sBAAsB;IACtB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,GAAG,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE1B,qBAAqB;IACrB,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAC7D,CAAC;IAED,eAAe;IACf,OAAO,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;CAUR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,SAAS,GAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpD,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,OAAO;oBACV,IAAI,KAAK;wBAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnC,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,KAAK;wBAAE,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzC,MAAM;gBACR,KAAK,UAAU;oBACb,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC9D,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpC,SAAS,CAAC,QAAQ,GAAG,KAA+C,CAAC;oBACvE,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,KAAK,EAAE,CAAC;wBACV,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACvE,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,KAAK;wBAAE,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,KAAK;wBAAE,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrC,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,GAAG,EAAE,EAAE,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,MAAc;IAEd,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAErC,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,MAAM,OAAO,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,GAAG,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;IAElE,kEAAkE;IAClE,+CAA+C;IAC/C,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;QAC3C,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/E,CAAC;IAED,sBAAsB;IACtB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,GAAG,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE1B,uCAAuC;IACvC,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IACvD,CAAC;IAED,kBAAkB;IAClB,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAU;IAC/B,MAAM,KAAK,GAAa;QACtB,gBAAgB,IAAI,CAAC,EAAE,EAAE;QACzB,gEAAgE;QAChE,sCAAsC;QACtC,EAAE;QACF,UAAU,IAAI,CAAC,KAAK,EAAE;KACvB,CAAC;IAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,iCAAiC;QACjC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,YAAkB;IAElB,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,SAAS;YAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpD,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,OAAO;oBACV,IAAI,KAAK,IAAI,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;wBAC1C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBACtB,CAAC;oBACD,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC/C,KAAK,CAAC,WAAW,GAAG,KAAK,IAAI,SAAS,CAAC;oBACzC,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU;oBACb,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAU,CAAC;oBAC3E,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAuC,CAAC,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;wBACjH,KAAK,CAAC,QAAQ,GAAI,KAAgD,IAAI,IAAI,CAAC;oBAC7E,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxD,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnD,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC5C,KAAK,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC;oBACjC,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC3C,KAAK,CAAC,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC;oBAChC,CAAC;oBACD,MAAM;gBACR,KAAK,cAAc;oBACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC;oBACjD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC1D,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7D,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,GAAG,EAAE,EAAE,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,OAAe,CAAC;QACpB,IAAI,IAAc,CAAC;QAEnB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,QAAQ,CAAC;YACnB,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,qCAAqC;YACrC,OAAO,GAAG,OAAO,CAAC;YAClB,IAAI,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,OAAO,EAAE,IAAI,EAAE;YACtC,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/E,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,GAAG,EAAE,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { BoardColumn } from '../types.js';
3
+ export interface ColumnTabsProps {
4
+ columns: BoardColumn[];
5
+ activeIndex: number;
6
+ termWidth: number;
7
+ }
8
+ export declare function ColumnTabs({ columns, activeIndex, termWidth }: ColumnTabsProps): React.JSX.Element;
9
+ //# sourceMappingURL=ColumnTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnTabs.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ColumnTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,eAAe,qBAsC9E"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ColumnTabs = ColumnTabs;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ink_1 = require("ink");
9
+ const theme_js_1 = require("../theme.js");
10
+ const utils_js_1 = require("../utils.js");
11
+ function ColumnTabs({ columns, activeIndex, termWidth }) {
12
+ if (columns.length === 0) {
13
+ return (react_1.default.createElement(ink_1.Box, { paddingLeft: 1, paddingRight: 1, marginTop: 1 },
14
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, "No columns")));
15
+ }
16
+ const maxTabWidth = Math.floor((termWidth - 4) / Math.max(columns.length, 1)) - 2;
17
+ return (react_1.default.createElement(ink_1.Box, { paddingLeft: 1, paddingRight: 1, marginTop: 1 }, columns.map((col, idx) => {
18
+ const isActive = idx === activeIndex;
19
+ const label = (0, utils_js_1.truncate)(col.title.toUpperCase(), maxTabWidth - 4);
20
+ const count = col.tasks.length;
21
+ return (react_1.default.createElement(ink_1.Box, { key: col.id, marginRight: 1 }, isActive ? (react_1.default.createElement(ink_1.Text, null,
22
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent }, "\u258C"),
23
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, bold: true, backgroundColor: theme_js_1.PALETTE.bgHighlight }, ` ${label} `),
24
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, ` ${count}`))) : (react_1.default.createElement(ink_1.Text, null,
25
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, ' '),
26
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted }, ` ${label} `),
27
+ react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, ` ${count}`)))));
28
+ })));
29
+ }
30
+ //# sourceMappingURL=ColumnTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnTabs.js","sourceRoot":"","sources":["../../../src/tui/components/ColumnTabs.tsx"],"names":[],"mappings":";;;;;AAYA,gCAsCC;AAlDD,kDAA0B;AAC1B,6BAAgC;AAChC,0CAAsC;AACtC,0CAAuC;AASvC,SAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAmB;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;YAChD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,iBAAmB,CAC7C,CACP,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAElF,OAAO,CACL,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,IAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,GAAG,KAAK,WAAW,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAE/B,OAAO,CACL,8BAAC,SAAG,IAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,IAC7B,QAAQ,CAAC,CAAC,CAAC,CACV,8BAAC,UAAI;YACH,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,aAAU;YACrC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,IAAI,EAAE,IAAI,QAAC,eAAe,EAAE,kBAAO,CAAC,WAAW,IAAG,IAAI,KAAK,GAAG,CAAQ;YAC3F,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,EAAE,IAAI,UAAE,IAAI,KAAK,EAAE,CAAQ,CACjD,CACR,CAAC,CAAC,CAAC,CACF,8BAAC,UAAI;YACH,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,IAAG,GAAG,CAAQ;YAC1C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,IAAG,IAAI,KAAK,GAAG,CAAQ;YACrD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,IAAG,IAAI,KAAK,EAAE,CAAQ,CAC7C,CACR,CACG,CACP,CAAC;IACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface HeaderProps {
3
+ title: string;
4
+ stats: {
5
+ total: number;
6
+ done: number;
7
+ percentage: number;
8
+ };
9
+ reloadFlash: boolean;
10
+ }
11
+ export declare function Header({ title, reloadFlash }: HeaderProps): React.JSX.Element;
12
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,WAAW,qBAUzD"}