agkan 2.14.3 → 2.15.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 (179) hide show
  1. package/README.ja.md +13 -13
  2. package/README.md +13 -13
  3. package/dist/board/boardFavicon.d.ts +2 -0
  4. package/dist/board/boardFavicon.d.ts.map +1 -0
  5. package/dist/board/boardFavicon.js +5 -0
  6. package/dist/board/boardFavicon.js.map +1 -0
  7. package/dist/board/boardRenderer.d.ts +22 -6
  8. package/dist/board/boardRenderer.d.ts.map +1 -1
  9. package/dist/board/boardRenderer.js +40 -24
  10. package/dist/board/boardRenderer.js.map +1 -1
  11. package/dist/board/boardRoutes.d.ts +2 -2
  12. package/dist/board/boardRoutes.d.ts.map +1 -1
  13. package/dist/board/boardRoutes.js +18 -3
  14. package/dist/board/boardRoutes.js.map +1 -1
  15. package/dist/board/boardStyles.d.ts +1 -1
  16. package/dist/board/boardStyles.d.ts.map +1 -1
  17. package/dist/board/boardStyles.js +14 -6
  18. package/dist/board/boardStyles.js.map +1 -1
  19. package/dist/board/client/board.js +369 -13
  20. package/dist/board/server.d.ts +2 -2
  21. package/dist/board/server.d.ts.map +1 -1
  22. package/dist/board/server.js +5 -5
  23. package/dist/board/server.js.map +1 -1
  24. package/dist/cli/commands/agent-guide.d.ts.map +1 -1
  25. package/dist/cli/commands/agent-guide.js +6 -0
  26. package/dist/cli/commands/agent-guide.js.map +1 -1
  27. package/dist/cli/commands/board.d.ts.map +1 -1
  28. package/dist/cli/commands/board.js +202 -15
  29. package/dist/cli/commands/board.js.map +1 -1
  30. package/dist/cli/commands/ps.d.ts +7 -0
  31. package/dist/cli/commands/ps.d.ts.map +1 -0
  32. package/dist/cli/commands/ps.js +83 -0
  33. package/dist/cli/commands/ps.js.map +1 -0
  34. package/dist/cli/commands/task/add.js +1 -1
  35. package/dist/cli/commands/task/add.js.map +1 -1
  36. package/dist/cli/commands/task/copy.d.ts +6 -0
  37. package/dist/cli/commands/task/copy.d.ts.map +1 -0
  38. package/dist/cli/commands/task/copy.js +118 -0
  39. package/dist/cli/commands/task/copy.js.map +1 -0
  40. package/dist/cli/commands/task/list.d.ts.map +1 -1
  41. package/dist/cli/commands/task/list.js +37 -17
  42. package/dist/cli/commands/task/list.js.map +1 -1
  43. package/dist/cli/index.js +2 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/utils/board-daemon.d.ts +7 -0
  46. package/dist/cli/utils/board-daemon.d.ts.map +1 -0
  47. package/dist/cli/utils/board-daemon.js +77 -0
  48. package/dist/cli/utils/board-daemon.js.map +1 -0
  49. package/dist/db/adapters/sqlite-storage-backend.d.ts +26 -0
  50. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
  51. package/dist/db/adapters/sqlite-storage-backend.js +447 -0
  52. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
  53. package/dist/db/connection.d.ts +14 -0
  54. package/dist/db/connection.d.ts.map +1 -1
  55. package/dist/db/connection.js +28 -2
  56. package/dist/db/connection.js.map +1 -1
  57. package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
  58. package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
  59. package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
  60. package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
  61. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
  62. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
  63. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
  64. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
  65. package/dist/db/migrations/index.d.ts +4 -0
  66. package/dist/db/migrations/index.d.ts.map +1 -0
  67. package/dist/db/migrations/index.js +18 -0
  68. package/dist/db/migrations/index.js.map +1 -0
  69. package/dist/db/migrations/types.d.ts +17 -0
  70. package/dist/db/migrations/types.d.ts.map +1 -0
  71. package/dist/{board/client → db/migrations}/types.js +0 -1
  72. package/dist/db/migrations/types.js.map +1 -0
  73. package/dist/db/reset.d.ts.map +1 -1
  74. package/dist/db/reset.js +8 -3
  75. package/dist/db/reset.js.map +1 -1
  76. package/dist/db/schema.d.ts +4 -4
  77. package/dist/db/schema.d.ts.map +1 -1
  78. package/dist/db/schema.js +22 -207
  79. package/dist/db/schema.js.map +1 -1
  80. package/dist/db/types/repository.d.ts +192 -0
  81. package/dist/db/types/repository.d.ts.map +1 -0
  82. package/dist/db/types/repository.js +15 -0
  83. package/dist/db/types/repository.js.map +1 -0
  84. package/dist/models/Attachment.d.ts +25 -0
  85. package/dist/models/Attachment.d.ts.map +1 -0
  86. package/dist/models/Attachment.js +7 -0
  87. package/dist/models/Attachment.js.map +1 -0
  88. package/dist/services/AttachmentService.d.ts +62 -0
  89. package/dist/services/AttachmentService.d.ts.map +1 -0
  90. package/dist/services/AttachmentService.js +95 -0
  91. package/dist/services/AttachmentService.js.map +1 -0
  92. package/dist/services/ClaudeProcessService.d.ts +100 -0
  93. package/dist/services/ClaudeProcessService.d.ts.map +1 -0
  94. package/dist/services/ClaudeProcessService.js +278 -0
  95. package/dist/services/ClaudeProcessService.js.map +1 -0
  96. package/dist/services/CommentService.d.ts +3 -3
  97. package/dist/services/CommentService.d.ts.map +1 -1
  98. package/dist/services/CommentService.js +10 -70
  99. package/dist/services/CommentService.js.map +1 -1
  100. package/dist/services/ExportImportService.d.ts +3 -3
  101. package/dist/services/ExportImportService.d.ts.map +1 -1
  102. package/dist/services/ExportImportService.js +12 -16
  103. package/dist/services/ExportImportService.js.map +1 -1
  104. package/dist/services/MetadataService.d.ts +3 -3
  105. package/dist/services/MetadataService.d.ts.map +1 -1
  106. package/dist/services/MetadataService.js +9 -69
  107. package/dist/services/MetadataService.js.map +1 -1
  108. package/dist/services/TagService.d.ts +3 -3
  109. package/dist/services/TagService.d.ts.map +1 -1
  110. package/dist/services/TagService.js +9 -35
  111. package/dist/services/TagService.js.map +1 -1
  112. package/dist/services/TaskBlockService.d.ts +3 -3
  113. package/dist/services/TaskBlockService.d.ts.map +1 -1
  114. package/dist/services/TaskBlockService.js +9 -36
  115. package/dist/services/TaskBlockService.js.map +1 -1
  116. package/dist/services/TaskService.d.ts +3 -23
  117. package/dist/services/TaskService.d.ts.map +1 -1
  118. package/dist/services/TaskService.js +34 -186
  119. package/dist/services/TaskService.js.map +1 -1
  120. package/dist/services/TaskTagService.d.ts +3 -3
  121. package/dist/services/TaskTagService.d.ts.map +1 -1
  122. package/dist/services/TaskTagService.js +19 -83
  123. package/dist/services/TaskTagService.js.map +1 -1
  124. package/dist/utils/logger.d.ts +7 -0
  125. package/dist/utils/logger.d.ts.map +1 -0
  126. package/dist/utils/logger.js +18 -0
  127. package/dist/utils/logger.js.map +1 -0
  128. package/package.json +12 -5
  129. package/dist/board/boardScript.d.ts +0 -2
  130. package/dist/board/boardScript.d.ts.map +0 -1
  131. package/dist/board/boardScript.js +0 -1202
  132. package/dist/board/boardScript.js.map +0 -1
  133. package/dist/board/client/addTaskModal.d.ts +0 -2
  134. package/dist/board/client/addTaskModal.d.ts.map +0 -1
  135. package/dist/board/client/addTaskModal.js +0 -64
  136. package/dist/board/client/addTaskModal.js.map +0 -1
  137. package/dist/board/client/autoScroll.d.ts +0 -4
  138. package/dist/board/client/autoScroll.d.ts.map +0 -1
  139. package/dist/board/client/autoScroll.js +0 -59
  140. package/dist/board/client/autoScroll.js.map +0 -1
  141. package/dist/board/client/boardPolling.d.ts +0 -15
  142. package/dist/board/client/boardPolling.d.ts.map +0 -1
  143. package/dist/board/client/boardPolling.js +0 -144
  144. package/dist/board/client/boardPolling.js.map +0 -1
  145. package/dist/board/client/burgerMenu.d.ts +0 -2
  146. package/dist/board/client/burgerMenu.d.ts.map +0 -1
  147. package/dist/board/client/burgerMenu.js +0 -80
  148. package/dist/board/client/burgerMenu.js.map +0 -1
  149. package/dist/board/client/contextMenu.d.ts +0 -2
  150. package/dist/board/client/contextMenu.d.ts.map +0 -1
  151. package/dist/board/client/contextMenu.js +0 -52
  152. package/dist/board/client/contextMenu.js.map +0 -1
  153. package/dist/board/client/detailPanel.d.ts +0 -8
  154. package/dist/board/client/detailPanel.d.ts.map +0 -1
  155. package/dist/board/client/detailPanel.js +0 -565
  156. package/dist/board/client/detailPanel.js.map +0 -1
  157. package/dist/board/client/dragDrop.d.ts +0 -6
  158. package/dist/board/client/dragDrop.d.ts.map +0 -1
  159. package/dist/board/client/dragDrop.js +0 -82
  160. package/dist/board/client/dragDrop.js.map +0 -1
  161. package/dist/board/client/filters.d.ts +0 -6
  162. package/dist/board/client/filters.d.ts.map +0 -1
  163. package/dist/board/client/filters.js +0 -167
  164. package/dist/board/client/filters.js.map +0 -1
  165. package/dist/board/client/main.d.ts +0 -2
  166. package/dist/board/client/main.d.ts.map +0 -1
  167. package/dist/board/client/main.js +0 -20
  168. package/dist/board/client/main.js.map +0 -1
  169. package/dist/board/client/tags.d.ts +0 -6
  170. package/dist/board/client/tags.d.ts.map +0 -1
  171. package/dist/board/client/tags.js +0 -198
  172. package/dist/board/client/tags.js.map +0 -1
  173. package/dist/board/client/types.d.ts +0 -48
  174. package/dist/board/client/types.d.ts.map +0 -1
  175. package/dist/board/client/types.js.map +0 -1
  176. package/dist/board/client/utils.d.ts +0 -4
  177. package/dist/board/client/utils.d.ts.map +0 -1
  178. package/dist/board/client/utils.js +0 -44
  179. package/dist/board/client/utils.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"boardScript.js","sourceRoot":"","sources":["../../src/board/boardScript.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6qCpB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function initAddTaskModal(): void;
2
- //# sourceMappingURL=addTaskModal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addTaskModal.d.ts","sourceRoot":"","sources":["../../../src/board/client/addTaskModal.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,IAAI,CA4DvC"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- // Add task modal functionality
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.initAddTaskModal = initAddTaskModal;
5
- const utils_1 = require("./utils");
6
- function initAddTaskModal() {
7
- const addModal = document.getElementById('add-modal');
8
- const addTitle = document.getElementById('add-title');
9
- const addBody = document.getElementById('add-body');
10
- const addPriority = document.getElementById('add-priority');
11
- const addStatus = document.getElementById('add-status');
12
- document.querySelectorAll('.add-btn').forEach((btn) => {
13
- btn.addEventListener('click', (e) => {
14
- e.stopPropagation();
15
- addStatus.value = btn.dataset.status;
16
- addTitle.value = '';
17
- addBody.value = '';
18
- addPriority.value = '';
19
- addModal.classList.add('show');
20
- addTitle.focus();
21
- });
22
- });
23
- document.getElementById('add-cancel')?.addEventListener('click', () => {
24
- addModal.classList.remove('show');
25
- });
26
- addModal.addEventListener('click', (e) => {
27
- if (e.target === addModal)
28
- addModal.classList.remove('show');
29
- });
30
- addTitle.addEventListener('keydown', (e) => {
31
- if (e.key === 'Enter' && !e.isComposing) {
32
- e.preventDefault();
33
- document.getElementById('add-submit').click();
34
- }
35
- });
36
- document.getElementById('add-submit')?.addEventListener('click', async () => {
37
- const title = addTitle.value.trim();
38
- if (!title) {
39
- addTitle.focus();
40
- return;
41
- }
42
- const status = addStatus.value;
43
- addModal.classList.remove('show');
44
- try {
45
- const res = await fetch('/api/tasks', {
46
- method: 'POST',
47
- headers: { 'Content-Type': 'application/json' },
48
- body: JSON.stringify({
49
- title,
50
- body: addBody.value.trim() || null,
51
- status,
52
- priority: addPriority.value || null,
53
- }),
54
- });
55
- if (!res.ok)
56
- throw new Error('Server error');
57
- location.reload();
58
- }
59
- catch {
60
- (0, utils_1.showToast)('Failed to add task');
61
- }
62
- });
63
- }
64
- //# sourceMappingURL=addTaskModal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addTaskModal.js","sourceRoot":"","sources":["../../../src/board/client/addTaskModal.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare function stopAutoScroll(): void;
2
- export declare function attachAutoScrollToBody(body: HTMLElement): void;
3
- export declare function initAutoScroll(): void;
4
- //# sourceMappingURL=autoScroll.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoScroll.d.ts","sourceRoot":"","sources":["../../../src/board/client/autoScroll.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,IAAI,IAAI,CAOrC;AAeD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAkB9D;AAED,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
@@ -1,59 +0,0 @@
1
- "use strict";
2
- // Auto-scroll during drag within column bodies
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.stopAutoScroll = stopAutoScroll;
5
- exports.attachAutoScrollToBody = attachAutoScrollToBody;
6
- exports.initAutoScroll = initAutoScroll;
7
- let autoScrollRAF = null;
8
- let autoScrollBody = null;
9
- let autoScrollDir = 0;
10
- const AUTO_SCROLL_ZONE = 60;
11
- const AUTO_SCROLL_SPEED = 8;
12
- function stopAutoScroll() {
13
- if (autoScrollRAF !== null) {
14
- cancelAnimationFrame(autoScrollRAF);
15
- autoScrollRAF = null;
16
- }
17
- autoScrollBody = null;
18
- autoScrollDir = 0;
19
- }
20
- function startAutoScroll() {
21
- if (autoScrollRAF !== null)
22
- return;
23
- function step() {
24
- if (autoScrollBody && autoScrollDir !== 0) {
25
- autoScrollBody.scrollTop += autoScrollDir * AUTO_SCROLL_SPEED;
26
- autoScrollRAF = requestAnimationFrame(step);
27
- }
28
- else {
29
- autoScrollRAF = null;
30
- }
31
- }
32
- autoScrollRAF = requestAnimationFrame(step);
33
- }
34
- function attachAutoScrollToBody(body) {
35
- body.addEventListener('dragover', (e) => {
36
- const rect = body.getBoundingClientRect();
37
- const y = e.clientY - rect.top;
38
- if (y < AUTO_SCROLL_ZONE) {
39
- autoScrollBody = body;
40
- autoScrollDir = -1;
41
- startAutoScroll();
42
- }
43
- else if (y > rect.height - AUTO_SCROLL_ZONE) {
44
- autoScrollBody = body;
45
- autoScrollDir = 1;
46
- startAutoScroll();
47
- }
48
- else {
49
- stopAutoScroll();
50
- }
51
- });
52
- body.addEventListener('dragleave', stopAutoScroll);
53
- body.addEventListener('drop', stopAutoScroll);
54
- }
55
- function initAutoScroll() {
56
- document.querySelectorAll('.column-body').forEach(attachAutoScrollToBody);
57
- document.addEventListener('dragend', stopAutoScroll);
58
- }
59
- //# sourceMappingURL=autoScroll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoScroll.js","sourceRoot":"","sources":["../../../src/board/client/autoScroll.ts"],"names":[],"mappings":";AAAA,+CAA+C;;AAQ/C,wCAOC;AAeD,wDAkBC;AAED,wCAGC;AAnDD,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,IAAI,cAAc,GAAuB,IAAI,CAAC;AAC9C,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAgB,cAAc;IAC5B,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACpC,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;IACtB,aAAa,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO;IACnC,SAAS,IAAI;QACX,IAAI,cAAc,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YAC1C,cAAc,CAAC,SAAS,IAAI,aAAa,GAAG,iBAAiB,CAAC;YAC9D,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAiB;IACtD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC;YACzB,cAAc,GAAG,IAAI,CAAC;YACtB,aAAa,GAAG,CAAC,CAAC,CAAC;YACnB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAC9C,cAAc,GAAG,IAAI,CAAC;YACtB,aAAa,GAAG,CAAC,CAAC;YAClB,eAAe,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,cAAc;IAC5B,QAAQ,CAAC,gBAAgB,CAAc,cAAc,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC"}
@@ -1,15 +0,0 @@
1
- import { ActiveFilters } from './types';
2
- export declare function getLastUpdatedAt(): string | null;
3
- export declare function setLastUpdatedAt(val: string | null): void;
4
- export declare const activeFilters: ActiveFilters;
5
- export declare function buildFilterParams(): URLSearchParams;
6
- export declare function registerDetailPanelCallbacks(callbacks: {
7
- openTaskDetail: (taskId: string) => Promise<void>;
8
- renderDetailPanel: (data: unknown) => void;
9
- showUpdateWarning: () => void;
10
- getDetailTaskId: () => number | null;
11
- }): void;
12
- export declare function refreshBoardCards(): Promise<void>;
13
- export declare function pollBoardUpdates(): Promise<void>;
14
- export declare function initBoardPolling(): void;
15
- //# sourceMappingURL=boardPolling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boardPolling.d.ts","sourceRoot":"","sources":["../../../src/board/client/boardPolling.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEzD;AAED,eAAO,MAAM,aAAa,EAAE,aAA4D,CAAC;AAEzF,wBAAgB,iBAAiB,IAAI,eAAe,CAYnD;AASD,wBAAgB,4BAA4B,CAAC,SAAS,EAAE;IACtD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACtC,GAAG,IAAI,CAKP;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2DvD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBtD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
@@ -1,144 +0,0 @@
1
- "use strict";
2
- // Board polling: reload when updated_at changes
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.activeFilters = void 0;
5
- exports.getLastUpdatedAt = getLastUpdatedAt;
6
- exports.setLastUpdatedAt = setLastUpdatedAt;
7
- exports.buildFilterParams = buildFilterParams;
8
- exports.registerDetailPanelCallbacks = registerDetailPanelCallbacks;
9
- exports.refreshBoardCards = refreshBoardCards;
10
- exports.pollBoardUpdates = pollBoardUpdates;
11
- exports.initBoardPolling = initBoardPolling;
12
- const dragDrop_1 = require("./dragDrop");
13
- const autoScroll_1 = require("./autoScroll");
14
- let lastUpdatedAt = null;
15
- function getLastUpdatedAt() {
16
- return lastUpdatedAt;
17
- }
18
- function setLastUpdatedAt(val) {
19
- lastUpdatedAt = val;
20
- }
21
- exports.activeFilters = { tagIds: [], priorities: [], assignee: '' };
22
- function buildFilterParams() {
23
- const params = new URLSearchParams();
24
- if (exports.activeFilters.priorities.length > 0) {
25
- params.set('priority', exports.activeFilters.priorities.join(','));
26
- }
27
- if (exports.activeFilters.tagIds.length > 0) {
28
- params.set('tags', exports.activeFilters.tagIds.join(','));
29
- }
30
- if (exports.activeFilters.assignee) {
31
- params.set('assignee', exports.activeFilters.assignee);
32
- }
33
- return params;
34
- }
35
- // Callbacks to be set by detailPanel module after initialization
36
- // This breaks the circular dependency
37
- let _openTaskDetail = null;
38
- let _renderDetailPanel = null;
39
- let _showUpdateWarning = null;
40
- let _getDetailTaskId = null;
41
- function registerDetailPanelCallbacks(callbacks) {
42
- _openTaskDetail = callbacks.openTaskDetail;
43
- _renderDetailPanel = callbacks.renderDetailPanel;
44
- _showUpdateWarning = callbacks.showUpdateWarning;
45
- _getDetailTaskId = callbacks.getDetailTaskId;
46
- }
47
- async function refreshBoardCards() {
48
- const filterParams = buildFilterParams();
49
- const url = '/api/board/cards' + (filterParams.toString() ? '?' + filterParams.toString() : '');
50
- try {
51
- const res = await fetch(url);
52
- if (!res.ok)
53
- return;
54
- const data = await res.json();
55
- const columns = data.columns;
56
- columns.forEach((col) => {
57
- const body = document.getElementById('col-' + col.status);
58
- if (!body)
59
- return;
60
- body.innerHTML = col.html;
61
- const colEl = body.closest('.column');
62
- if (colEl) {
63
- const countEl = colEl.querySelector('.column-count');
64
- if (countEl)
65
- countEl.textContent = String(col.count);
66
- }
67
- // Re-attach drag event listeners to new cards
68
- body.querySelectorAll('.card').forEach((card) => {
69
- (0, dragDrop_1.attachDragListeners)(card);
70
- card.addEventListener('click', async (e) => {
71
- if (e.defaultPrevented)
72
- return;
73
- if (_openTaskDetail)
74
- await _openTaskDetail(card.dataset.id);
75
- });
76
- });
77
- // Re-attach auto-scroll
78
- (0, autoScroll_1.attachAutoScrollToBody)(body);
79
- });
80
- // If detail panel is open, refresh its content if the task was updated
81
- const detailTaskId = _getDetailTaskId ? _getDetailTaskId() : null;
82
- if (detailTaskId !== null) {
83
- const editableFields = [
84
- 'detail-edit-title',
85
- 'detail-edit-body',
86
- 'detail-edit-status',
87
- 'detail-edit-priority',
88
- ];
89
- const isEditing = editableFields.some((id) => document.activeElement && document.activeElement.id === id);
90
- if (isEditing) {
91
- if (_showUpdateWarning)
92
- _showUpdateWarning();
93
- }
94
- else {
95
- try {
96
- const taskRes = await fetch('/api/tasks/' + detailTaskId);
97
- if (taskRes.ok) {
98
- const taskData = await taskRes.json();
99
- if (_renderDetailPanel)
100
- _renderDetailPanel(taskData);
101
- }
102
- }
103
- catch {
104
- // Ignore network errors during detail panel refresh
105
- }
106
- }
107
- }
108
- }
109
- catch {
110
- // Ignore network errors during card refresh
111
- }
112
- }
113
- async function pollBoardUpdates() {
114
- if (dragDrop_1.draggedCard !== null)
115
- return;
116
- try {
117
- const res = await fetch('/api/board/updated-at');
118
- if (!res.ok)
119
- return;
120
- const data = await res.json();
121
- const ts = data.updatedAt;
122
- const detailPanel = document.getElementById('detail-panel');
123
- if (lastUpdatedAt === null) {
124
- lastUpdatedAt = ts;
125
- }
126
- else if (ts !== lastUpdatedAt) {
127
- lastUpdatedAt = ts;
128
- if (detailPanel.classList.contains('open')) {
129
- await refreshBoardCards();
130
- }
131
- else {
132
- location.reload();
133
- }
134
- }
135
- }
136
- catch {
137
- // Ignore network errors during polling
138
- }
139
- }
140
- function initBoardPolling() {
141
- setInterval(pollBoardUpdates, 5000);
142
- pollBoardUpdates();
143
- }
144
- //# sourceMappingURL=boardPolling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boardPolling.js","sourceRoot":"","sources":["../../../src/board/client/boardPolling.ts"],"names":[],"mappings":";AAAA,gDAAgD;;;AAQhD,4CAEC;AAED,4CAEC;AAID,8CAYC;AASD,oEAUC;AAED,8CA2DC;AAED,4CAqBC;AAED,4CAGC;AAxID,yCAA8D;AAC9D,6CAAsD;AAGtD,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,SAAgB,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAkB;IACjD,aAAa,GAAG,GAAG,CAAC;AACtB,CAAC;AAEY,QAAA,aAAa,GAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAEzF,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,qBAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,qBAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,qBAAa,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,sCAAsC;AACtC,IAAI,eAAe,GAA+C,IAAI,CAAC;AACvE,IAAI,kBAAkB,GAAqC,IAAI,CAAC;AAChE,IAAI,kBAAkB,GAAwB,IAAI,CAAC;AACnD,IAAI,gBAAgB,GAAiC,IAAI,CAAC;AAE1D,SAAgB,4BAA4B,CAAC,SAK5C;IACC,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC;IAC3C,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACjD,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC;IACjD,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,iBAAiB;IACrC,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IACzC,MAAM,GAAG,GACP,kBAAkB,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO;QACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAA2D,IAAI,CAAC,OAAO,CAAC;QACrF,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBACrD,IAAI,OAAO;oBAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;YACD,8CAA8C;YAC9C,IAAI,CAAC,gBAAgB,CAAc,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3D,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAa,EAAE,EAAE;oBACrD,IAAI,CAAC,CAAC,gBAAgB;wBAAE,OAAO;oBAC/B,IAAI,eAAe;wBAAE,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,wBAAwB;YACxB,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG;gBACrB,mBAAmB;gBACnB,kBAAkB;gBAClB,oBAAoB;gBACpB,sBAAsB;aACvB,CAAC;YACF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CACnC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CACnE,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,kBAAkB;oBAAE,kBAAkB,EAAE,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC;oBAC1D,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;wBACf,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;wBACtC,IAAI,kBAAkB;4BAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAI,sBAAW,KAAK,IAAI;QAAE,OAAO;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO;QACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAW,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAgB,CAAC;QAC3E,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;aAAM,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;YAChC,aAAa,GAAG,EAAE,CAAC;YACnB,IAAI,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,MAAM,iBAAiB,EAAE,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB;IAC9B,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACpC,gBAAgB,EAAE,CAAC;AACrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function initBurgerMenu(): void;
2
- //# sourceMappingURL=burgerMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"burgerMenu.d.ts","sourceRoot":"","sources":["../../../src/board/client/burgerMenu.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,IAAI,IAAI,CA+ErC"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- // Burger menu, purge tasks, and version info functionality
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.initBurgerMenu = initBurgerMenu;
5
- function initBurgerMenu() {
6
- const burgerBtn = document.getElementById('burger-menu-btn');
7
- const burgerDropdown = document.getElementById('burger-menu-dropdown');
8
- burgerBtn.addEventListener('click', (e) => {
9
- e.stopPropagation();
10
- burgerDropdown.classList.toggle('open');
11
- });
12
- document.addEventListener('click', (e) => {
13
- if (!burgerDropdown.contains(e.target) && e.target !== burgerBtn) {
14
- burgerDropdown.classList.remove('open');
15
- }
16
- });
17
- // Purge tasks
18
- const purgeModal = document.getElementById('purge-confirm-modal');
19
- const purgeConfirmBtn = document.getElementById('purge-confirm-btn');
20
- const purgeCancelBtn = document.getElementById('purge-cancel-btn');
21
- const purgeResultEl = document.getElementById('purge-result');
22
- document.getElementById('burger-purge-tasks')?.addEventListener('click', () => {
23
- burgerDropdown.classList.remove('open');
24
- purgeResultEl.textContent = '';
25
- purgeModal.classList.add('show');
26
- });
27
- purgeCancelBtn.addEventListener('click', () => {
28
- purgeModal.classList.remove('show');
29
- });
30
- purgeConfirmBtn.addEventListener('click', async () => {
31
- purgeConfirmBtn.disabled = true;
32
- purgeConfirmBtn.textContent = 'Purging...';
33
- try {
34
- const res = await fetch('/api/tasks/purge', {
35
- method: 'POST',
36
- headers: { 'Content-Type': 'application/json' },
37
- body: JSON.stringify({}),
38
- });
39
- const data = await res.json();
40
- if (res.ok) {
41
- purgeResultEl.textContent = 'Purged ' + data.count + ' task(s).';
42
- setTimeout(() => {
43
- purgeModal.classList.remove('show');
44
- }, 1500);
45
- location.reload();
46
- }
47
- else {
48
- purgeResultEl.textContent = 'Error: ' + (data.error || 'Unknown error');
49
- }
50
- }
51
- catch {
52
- purgeResultEl.textContent = 'Failed to purge tasks.';
53
- }
54
- finally {
55
- purgeConfirmBtn.disabled = false;
56
- purgeConfirmBtn.textContent = 'Purge';
57
- }
58
- });
59
- // Version info
60
- const versionModal = document.getElementById('version-info-modal');
61
- const versionCloseBtn = document.getElementById('version-info-close');
62
- const versionTextEl = document.getElementById('version-info-text');
63
- document.getElementById('burger-version-info')?.addEventListener('click', async () => {
64
- burgerDropdown.classList.remove('open');
65
- versionTextEl.textContent = 'Loading...';
66
- versionModal.classList.add('show');
67
- try {
68
- const res = await fetch('/api/version');
69
- const data = await res.json();
70
- versionTextEl.textContent = 'agkan v' + data.version;
71
- }
72
- catch {
73
- versionTextEl.textContent = 'Failed to load version.';
74
- }
75
- });
76
- versionCloseBtn.addEventListener('click', () => {
77
- versionModal.classList.remove('show');
78
- });
79
- }
80
- //# sourceMappingURL=burgerMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"burgerMenu.js","sourceRoot":"","sources":["../../../src/board/client/burgerMenu.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function initContextMenu(): void;
2
- //# sourceMappingURL=contextMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextMenu.d.ts","sourceRoot":"","sources":["../../../src/board/client/contextMenu.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,IAAI,IAAI,CA6CtC"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- // Context menu functionality
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.initContextMenu = initContextMenu;
5
- const utils_1 = require("./utils");
6
- const dragDrop_1 = require("./dragDrop");
7
- function initContextMenu() {
8
- const ctxMenu = document.getElementById('context-menu');
9
- let ctxTargetCard = null;
10
- document.addEventListener('contextmenu', (e) => {
11
- const card = e.target.closest('.card');
12
- if (!card) {
13
- ctxMenu.style.display = 'none';
14
- return;
15
- }
16
- e.preventDefault();
17
- ctxTargetCard = card;
18
- ctxMenu.style.left = e.clientX + 'px';
19
- ctxMenu.style.top = e.clientY + 'px';
20
- ctxMenu.style.display = 'block';
21
- });
22
- document.addEventListener('click', (e) => {
23
- if (!e.target.closest('#context-menu')) {
24
- ctxMenu.style.display = 'none';
25
- ctxTargetCard = null;
26
- }
27
- });
28
- document.getElementById('ctx-delete')?.addEventListener('click', async (e) => {
29
- e.stopPropagation();
30
- ctxMenu.style.display = 'none';
31
- if (!ctxTargetCard)
32
- return;
33
- const card = ctxTargetCard;
34
- ctxTargetCard = null;
35
- const taskId = card.dataset.id;
36
- const status = card.dataset.status;
37
- if (!confirm('Delete task #' + taskId + '?'))
38
- return;
39
- card.remove();
40
- (0, dragDrop_1.updateCount)(status);
41
- try {
42
- const res = await fetch('/api/tasks/' + taskId, { method: 'DELETE' });
43
- if (!res.ok)
44
- throw new Error('Server error');
45
- }
46
- catch {
47
- location.reload();
48
- (0, utils_1.showToast)('Failed to delete task');
49
- }
50
- });
51
- }
52
- //# sourceMappingURL=contextMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextMenu.js","sourceRoot":"","sources":["../../../src/board/client/contextMenu.ts"],"names":[],"mappings":";AAAA,6BAA6B;;AAK7B,0CA6CC;AAhDD,mCAAoC;AACpC,yCAAyC;AAEzC,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAgB,CAAC;IACvE,IAAI,aAAa,GAAuB,IAAI,CAAC;IAE7C,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAa,EAAE,EAAE;QACzD,MAAM,IAAI,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAc,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;QACnD,IAAI,CAAE,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAa,EAAE,EAAE;QACvF,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,GAAG,GAAG,CAAC;YAAE,OAAO;QAErD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,aAAa,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,IAAA,iBAAS,EAAC,uBAAuB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,8 +0,0 @@
1
- import { TaskDetail } from './types';
2
- export declare function getDetailTaskId(): number | null;
3
- export declare function closeDetailPanel(): void;
4
- export declare function renderDetailPanel(data: TaskDetail): void;
5
- export declare function openTaskDetail(taskId: string): Promise<void>;
6
- export declare function showUpdateWarning(): void;
7
- export declare function initDetailPanel(): void;
8
- //# sourceMappingURL=detailPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detailPanel.d.ts","sourceRoot":"","sources":["../../../src/board/client/detailPanel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAUrC,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AA8MD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAuJxD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlE;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAgCxC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAoKtC"}