| 2271 | } |
| 2272 | |
| 2273 | private getTaskContextFromEvent(event: Event): { task: TaskInfo; card: HTMLElement } | null { |
| 2274 | const target = event.target as HTMLElement | null; |
| 2275 | if (!target) return null; |
| 2276 | const card = target.closest<HTMLElement>(".task-card"); |
| 2277 | if (!card) return null; |
| 2278 | const path = card.dataset.taskPath; |
| 2279 | if (!path) return null; |
| 2280 | const task = this.taskInfoCache.get(path); |
| 2281 | if (!task) return null; |
| 2282 | return { task, card }; |
| 2283 | } |
| 2284 | |
| 2285 | private handleItemClick = async (event: MouseEvent) => { |
| 2286 | const target = event.target as HTMLElement; |