返回 DeepSeek-Reasonix
transcriptOutlineSignals.ts
根目录 / desktop / frontend / src / lib / transcriptOutlineSignals.ts
1 // Lightweight invalidation channel: Follow does not eagerly load the directory UI.
2 type Signal = "dirty" | "suspend";
3 const listeners = new Map<string, (signal: Signal) => void>();
4 export function observeOutline(tab: string, listener: (signal: Signal) => void): () => void {
5 listeners.set(tab, listener);
6 return () => { if (listeners.get(tab) === listener) listeners.delete(tab); };
7 }
8 export function signalOutline(tab: string, signal: Signal = "dirty"): void { listeners.get(tab)?.(signal); }
9
9 lines TYPESCRIPT