Last active 1 month ago

Revision a3bf7c7f3595ffb1f7d6a832f742350ab8814581

Unsubs.ts Raw
1export class Unsubs {
2 private fns: (() => void)[] = [];
3
4 public add(fn: () => void): this {
5 this.fns.push(fn);
6 return this;
7 }
8
9 public unsub(): this {
10 this.fns.forEach((unsub) => unsub());
11 return this;
12 }
13
14 public clear(): this {
15 this.fns = [];
16 return this;
17 }
18}
unsubs.ts Raw
1/**
2 * https://github.com/Noah2610/i3-color-theme-editor/blob/master/src/util/unsubs.ts
3 */
4
5export interface Unsubs {
6 add(fn: () => void): void;
7 unsubAll(): void;
8 fns: (() => void)[];
9}
10
11export function createUnsubs(): Unsubs {
12 const fns: Unsubs["fns"] = [];
13
14 return {
15 add(fn) {
16 fns.push(fn);
17 },
18 unsubAll() {
19 fns.forEach((unsub) => unsub());
20 },
21 fns,
22 };
23}