/** * Описание пользовательского обработчика события. */ export type TEventListener = { fn: (event: Event) => void; }; /** * Данные слушателей события для конкретного элемента. */ export type TEventListenerData = { options: TEventListenerOptions; isListening: boolean; callbacks: TEventListener[]; handler?: EventListener; }; /** * Параметры подписки DOM-слушателя. */ export type TEventListenerOptions = AddEventListenerOptions | null; /** * Набор событий для пакетного заполнения шины. */ export type TEventListeners = Record; /** * Основное хранилище подписок Event Bus. */ export type TEventStore = Map>; /** * Event Bus. Шина для хранения и управления событиями. * @module EventBus */ export declare class EventBus { #private; store: TEventStore; constructor(); /** * Подписывается на прослушивание события * @param eventName{String=} название события * @param el{Node|Element|HTMLElement} элемент * @param callback{Function=} обработчик */ subscribe(eventName?: string, el?: EventTarget, callback?: TEventListener["fn"]): void; /** * Возвращает карту данных для события их хранилища по его имени * @param eventName{String} название события * @returns {Map|undefined} */ getMapByEventName(eventName: string): Map | undefined; /** * Отменяет подписку на событие * @param eventName{String=} название события * @param el{Node|Element|HTMLElement=} элемент * @param callback{Function=} обработчик */ unsubscribe(eventName?: string, el?: EventTarget, callback?: TEventListener["fn"]): void; /** * Добавляет событие в хранилище * @param eventName{String} название события * @param data{{ fn: Function, el: Node|Element|HTMLElement, options: EventListenerOptions=, isListening: Boolean= }} данные */ add(eventName?: string, data?: { fn?: TEventListener["fn"]; el?: EventTarget; options?: AddEventListenerOptions | null; isListening?: boolean; }): void; /** * Возвращает результат проверки существования события в хранилище по имени * @param eventName{String} название события * @returns {boolean} */ isEventExist(eventName?: string): boolean; /** * Исполняет событие, вызывая его обработчик * @param eventName{String=} название события * @param el{Node|Element|HTMLElement=} элемент * @param callback{Function=} обработчик * @param args{Event=} объект события */ publish(eventName?: string, el?: EventTarget, callback?: TEventListener["fn"], args?: Event): void; /** * Заполняет хранилище данными из объекта * @param el{Node|Element|HTMLElement=} элемент * @param listeners{Object} объект событий */ fill(el?: EventTarget, listeners?: TEventListeners): void; /** * Очищает хранилище от событий * @param eventName{String=} название события * @param el{Node|Element|HTMLElement=} элемент * @param callback{Function=} обработчик */ clear(eventName?: string, el?: EventTarget, callback?: TEventListener["fn"]): void; }