@benev/nubs
Version:
user-input system for web games
26 lines (20 loc) • 502 B
text/typescript
import {LitListener} from "./lit-listener.js"
export function attachEvents(
target: EventTarget,
spec: {
[key: string]:
((event: Event & any) => void) | LitListener<Event & any>
}
) {
const disposers = new Set<() => void>()
for (const [eventName, listener] of Object.entries(spec)) {
target.addEventListener(eventName, listener)
disposers.add(
() => target.removeEventListener(eventName, listener)
)
}
return () => {
for (const dispose of disposers)
dispose()
}
}