UNPKG

@surface/core

Version:

Provides core functionality of many @surfaces modules.

18 lines (17 loc) 473 B
export default class Event { listeners = new Set(); subscribe(listener) { this.listeners.add(listener); return { unsubscribe: () => this.unsubscribe(listener) }; } unsubscribe(listener) { if (!this.listeners.delete(listener)) { throw new Error("Listener not subscribed"); } } notify(value) { for (const listener of this.listeners) { listener(value); } } }