Skip to content
Source
Sign inSign up
Open History to see the last commit

pendingDraftWork.ts

21 lines659 Bytes

1// Count per draft so overlapping pastes cannot release each other and strand chips.
2class PendingDraftWork {
3 private readonly counts = new Map<string, number>();
4​
5 begin(draftKey: string): void {
6 this.counts.set(draftKey, (this.counts.get(draftKey) ?? 0) + 1);
7 }
8​
9 end(draftKey: string): void {
10 const remaining = (this.counts.get(draftKey) ?? 0) - 1;
11 if (remaining > 0) this.counts.set(draftKey, remaining);
12 else this.counts.delete(draftKey);
13 }
14​
15 has(draftKey: string): boolean {
16 return (this.counts.get(draftKey) ?? 0) > 0;
17 }
19​
20// Keep claims across composer remounts.
21export const pendingDraftWork = new PendingDraftWork();