initial commit

This commit is contained in:
Ben
2025-08-16 17:11:22 +02:00
commit 1843c51e49
11 changed files with 2125 additions and 0 deletions

22
src/keybindEmitter.ts Normal file
View File

@@ -0,0 +1,22 @@
import type { KeybindEvent } from "./types";
type Listener = (event: KeybindEvent) => void;
export class KeybindEmitter {
private listeners: Listener[] = [];
on(listener: Listener) {
this.listeners.push(listener);
return () => this.off(listener);
}
off(listener: Listener) {
this.listeners = this.listeners.filter(l => l !== listener);
}
emit<T extends KeybindEvent["type"]>(
event: Extract<KeybindEvent, { type: T }>
) {
for (const l of this.listeners) l(event);
}
}