/** * Singleton. Наблюдатель, использующий `MutationObserver` для фиксирования изменений в DOM-дереве и вызывающий специальный метод коллекции `init`, чтобы создать новые вызовы для появившихся элементов, соответствующих селектору коллекции. По умолчанию подключается в самую последнюю очередь. * По умолчанию `Observer` не реагирует на изменения в следующих тегах: `iframe`, `script`, `svg`, `ymaps`, `object`, `img`, `template`, `picture`. Эти исключения определяются в параметре `observerExcludedTags` для повышения производительности. * @module Observer * @param cfg{Object} объект пользовательских настроек * @param cfg.observerExcludedTags{Array} массив исключаемых из наблюдения тегов * @param cfg.observerCfg{MutationObserverInit} конфигурация наблюдателя * @param cfg.excludedSelector{String} селектор для элементов-исключений * @param cfg.includedSelector{String} селектор для элементов-включений (приоритетнее над исключениями) * @param cfg.target{HTMLElement|null} наблюдаемый элемент * @example * import { Core, Observer } from "@delement/ui/plugins" * * new Core({ * ObserverPlugin: () => new Observer({ * observerExcludedTags: [ "iframe", "script", "svg", "object", "img", "template", "picture" ] * }) * }) */ export declare class Observer { #private; /** * Конфигурация по умолчанию * @type {{observerExcludedTags, isDebug: boolean, excludedSelector: string, includedSelector: string, observerCfg: {subtree: boolean, attributes: boolean, childList: boolean, characterData: boolean, attributeOldValue: boolean, characterDataOldValue: boolean}}} */ static defaultCfg: { observerExcludedTags: string[]; observerCfg: { attributes: boolean; childList: boolean; subtree: boolean; characterData: boolean; attributeOldValue: boolean; characterDataOldValue: boolean; }; excludedSelector: string; includedSelector: string; isDebug: boolean; }; /** * Хранилище callback-функций классов * @type {Object} */ static callbacks: Map void>; /** * Присвоение в глобальный namespace внутри Core * @type {boolean} */ static isApp: boolean; /** * Получает наблюдаемый элемент (по умолчанию body документа) * @returns {HTMLElement|null} наблюдаемый элемент */ static getTarget(): any; observerExcludedTags: string[]; observerCfg: MutationObserverInit; excludedSelector: string; includedSelector: string; isDebug: boolean; observer: MutationObserver; isConnected: boolean; constructor(cfg?: Partial); /** * Включает наблюдение за изменениями в DOM * @param target{HTMLElement|null=} наблюдаемый элемент, по умолчанию body * @param cfg{MutationObserverInit=} конфигурация наблюдателя */ connect(target?: HTMLElement | null, cfg?: MutationObserverInit): void; /** * Управляет состоянием видимости для наблюдателя у конкретного элемента * @param el{Element} DOM-элемент * @param isObservable{Boolean=} состояние видимости (true = наблюдаемый, false = исключённый) */ static setElObservableState(el: Element, isObservable?: boolean): void; /** * Проверяет, добавлен ли callback для указанного селектора класса * @param selector{String} селектор класса * @returns {Boolean} результат проверки */ static isCallbackExist(selector: string): boolean; /** * Устанавливает callback для класса, вызываемый при изменениях в DOM * @param params{Object} параметры подписки * @param params.selector{String} селектор класса для идентификации * @param params.callback{Function} callback-функция (обычно инициатор класса) */ static set subscribe({ selector, callback }: { selector: string; callback: (mutationList: MutationRecord[]) => void; }); /** * Удаляет callback по селектору класса * @param selector{String} селектор класса для удаления */ static set unsubscribe(selector: string); /** * Отключает наблюдатель и очищает все callback */ disconnect(): void; }