/** * Конфигурация диспетчера. */ export type TDispatcherCfg = { eventContentProp: string; isInitiatorValid: (params: TInitiatorValidationArg) => boolean; isDebug: boolean; }; /** * Базовая структура элемента коллекции для диспетчеризации. */ export type TDispatcherCollectionItem = { instance: Element; }; /** * Контекст, в пределах которого выполняется инициатор. */ export type TDispatcherContext = Document | HTMLElement; /** * Функция получения коллекции экземпляров. */ export type TDispatcherGetCollection = () => TDispatcherCollectionItem[]; /** * Функция-инициатор, запускаемая для контекста. */ export type TDispatcherInitiatorFn = (context: TDispatcherContext) => void; /** * Значение записи инициатора в карте диспетчера. */ export type TDispatcherInitiatorMapValue = { initiator: TDispatcherInitiatorFn; getCollection?: TDispatcherGetCollection; }; /** * Тип динамически вызываемого метода экземпляра. */ export type TDispatcherMethod = (...args: never[]) => unknown; /** * Аргументы валидации инициатора перед запуском. */ export type TInitiatorValidationArg = { initiatorFn: TDispatcherInitiatorFn; eventContentField: TDispatcherContext; event: CustomEvent>; initiators: Map; }; /** * Диспетчер для управления инициаторами плагинов и их вызовом при загрузке контента. Singleton. * @module Dispatcher */ declare class Dispatcher { #private; eventContentProp: string; isInitiatorValid: TDispatcherCfg["isInitiatorValid"]; isDebug: boolean; /** * Реестр инициаторов по селектору. * Ключ — селектор, значение — функция инициализации и опциональная коллекция. * @type {Map} */ static initiators: Map; /** * Признак регистрации плагина в глобальном namespace Core. * @type {boolean} */ static isApp: boolean; /** * Конфигурация Dispatcher по умолчанию. * @type {TDispatcherCfg} */ static defaultCfg: TDispatcherCfg; constructor(cfg?: Partial); /** * Проверяет существование инициатора по селектору * @param selector{String} селектор инициатора * @returns {Boolean} результат проверки */ static isInitiatorExist(selector: string): boolean; /** * Устанавливает инициатор для селектора * @param params{Object} параметры инициатора * @param params.selector{String} селектор для идентификации * @param params.initiator{Function} функция-инициатор * @param params.getCollection{Function=} функция для получения коллекции экземпляров */ static set initiator({ selector, initiator, getCollection }: { selector: string; initiator: TDispatcherInitiatorFn; getCollection?: TDispatcherGetCollection; }); /** * Выполняет действие для всех экземпляров коллекций в указанном элементе * @param el{HTMLElement|null=} корневой элемент для поиска, по умолчанию body * @param action{String} название метода для вызова у экземпляров * @param filterFn{Function=} функция-фильтр для отбора экземпляров */ static dispatchAction(el: (HTMLElement | null) | undefined, action: string, filterFn?: (instance: TDispatcherCollectionItem) => boolean): void; /** * Удаляет инициатор по селектору * @param selector{String} селектор инициатора для удаления */ static removeInitiator(selector: string): void; /** * Очищает все инициаторы */ static clear(): void; } export { Dispatcher, };