mirror of
https://github.com/ethan-zf/cesium-plot-js.git
synced 2025-06-24 03:27:29 +00:00
37 lines
964 B
TypeScript
37 lines
964 B
TypeScript
import { EventType, EventListener } from './interface';
|
|
|
|
export default class EventDispatcher {
|
|
listeners: Map<EventType, Set<EventListener>>;
|
|
|
|
constructor() {
|
|
this.listeners = new Map([
|
|
['drawStart', new Set()],
|
|
['drawUpdate', new Set()],
|
|
['drawEnd', new Set()],
|
|
['editStart', new Set()],
|
|
['editEnd', new Set()],
|
|
]);
|
|
}
|
|
|
|
on(event: EventType, listener: EventListener) {
|
|
if (!this.listeners.has(event)) {
|
|
console.warn("Event binding must be one of 'drawStart', 'drawUpdate', or 'drawEnd'.");
|
|
return;
|
|
}
|
|
this.listeners.get(event)!.add(listener);
|
|
}
|
|
|
|
off(event: EventType, listener: EventListener) {
|
|
if (this.listeners.has(event)) {
|
|
this.listeners.get(event)!.delete(listener);
|
|
}
|
|
}
|
|
|
|
dispatchEvent(event: EventType, eventData?: any) {
|
|
if (this.listeners.has(event)) {
|
|
this.listeners.get(event)!.forEach((listener) => {
|
|
listener(eventData);
|
|
});
|
|
}
|
|
}
|
|
} |