import { Event } from './Face3'; /** * JavaScript events for custom objects * * # Example * var Car = function () { * * EventDispatcher.call( this ); * this.start = function () { * * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } ); * * }; * * }; * * var car = new Car(); * car.addEventListener( 'start', function ( event ) { * * alert( event.message ); * * } ); * car.start(); * * @source src/core/EventDispatcher.js */ export class EventDispatcher { /** * Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object. */ constructor(); /** * Adds a listener to an event type. * @param type The type of event to listen to. * @param listener The function that gets called when the event is fired. */ addEventListener(type: string, listener: (event: Event) => void): void; /** * Checks if listener is added to an event type. * @param type The type of event to listen to. * @param listener The function that gets called when the event is fired. */ hasEventListener(type: string, listener: (event: Event) => void): boolean; /** * Removes a listener from an event type. * @param type The type of the listener that gets removed. * @param listener The listener function that gets removed. */ removeEventListener(type: string, listener: (event: Event) => void): void; /** * Fire an event type. * @param type The type of event that gets fired. */ dispatchEvent(event: { type: string; [attachment: string]: any }): void; }