@mlightcad/common
Version:
[](https://opensource.org/licenses/MIT) [](https://www.npmjs.com/package/@mlightcad/common)
66 lines • 1.96 kB
TypeScript
/**
* @fileoverview Simple event manager implementation for the AutoCAD Common library.
*
* This module provides a lightweight event management system for handling
* listeners and dispatching events with type-safe payload support.
*
* @module AcCmEventManager
* @version 1.0.0
*/
/**
* 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.
*
* @template T - The type of the event payload.
*
* @example
* ```typescript
* // Create an event manager for string payloads
* const manager = new AcCmEventManager<string>()
*
* // Add a listener
* manager.addEventListener((message) => {
* console.log('Received:', message)
* })
*
* // Dispatch an event
* manager.dispatch('Hello, World!')
*
* // For complex payloads
* interface LoadEvent {
* url: string
* progress: number
* }
*
* const loadManager = new AcCmEventManager<LoadEvent>()
* loadManager.addEventListener(({ url, progress }) => {
* console.log(`Loading ${url}: ${progress}%`)
* })
* ```
*/
export declare class AcCmEventManager<T = unknown> {
private listeners;
/**
* Add the event listener
* @param listener Input listener to be added
*/
addEventListener(listener: (payload: T) => void): void;
/**
* Remove the listener
* @param listener Input listener to be removed
*/
removeEventListener(listener: (payload: T) => void): void;
/**
* Remove all listeners bound to the target and add one new listener
* @param listener Input listener to be added
*/
replaceEventListener(listener: (payload: T) => void): void;
/**
* Notify all listeners
* @param payload Input payload passed to listener
*/
dispatch(payload?: T, ...args: unknown[]): void;
}
//# sourceMappingURL=AcCmEventManager.d.ts.map