Simple event manager for handling event listeners and dispatching events.
Provides a lightweight alternative to the more complex AcCmEventDispatcher for cases where you need basic event handling with type-safe payloads.
// Create an event manager for string payloadsconst manager = new AcCmEventManager<string>()// Add a listenermanager.addEventListener((message) => { console.log('Received:', message)})// Dispatch an eventmanager.dispatch('Hello, World!')// For complex payloadsinterface LoadEvent { url: string progress: number}const loadManager = new AcCmEventManager<LoadEvent>()loadManager.addEventListener(({ url, progress }) => { console.log(`Loading ${url}: ${progress}%`)}) Copy
// Create an event manager for string payloadsconst manager = new AcCmEventManager<string>()// Add a listenermanager.addEventListener((message) => { console.log('Received:', message)})// Dispatch an eventmanager.dispatch('Hello, World!')// For complex payloadsinterface LoadEvent { url: string progress: number}const loadManager = new AcCmEventManager<LoadEvent>()loadManager.addEventListener(({ url, progress }) => { console.log(`Loading ${url}: ${progress}%`)})
The type of the event payload.
Number of listeners currently registered.
Used by AcCmObject.set to decide whether an untracked fast path is possible — a zero-listener check is cheaper than the lazy container allocation (listenerCount === 0 means "nobody is listening").
AcCmObject.set
listenerCount === 0
Add the event listener
Input listener to be added
Notify all listeners
Optional
Input payload passed to listener
Remove the listener
Input listener to be removed
Remove all listeners bound to the target and add one new listener
Simple event manager for handling event listeners and dispatching events.
Provides a lightweight alternative to the more complex AcCmEventDispatcher for cases where you need basic event handling with type-safe payloads.
Example