import type { StringPluginArgChoices } from './types'; import { type BaseElem } from "base-elem-js"; export interface ILazyLoadDefaults { observerID: string; imgSrcName: string | 'src'; bgSrcName: string | 'bgSrc'; loadImgs: boolean; inEvt(lazyElem: HTMLElement, entry: IntersectionObserverEntry): void; outEvt(lazyElem: HTMLElement, entry: IntersectionObserverEntry): void; force: boolean; unobserve: boolean; observerOpts: IntersectionObserverInit; } export interface ILazyLoadOptions extends Partial { observerID: string; } export default class LazyLoad { #private; element: HTMLElement; params: ILazyLoadDefaults; lazyElemObserver: IntersectionObserver; static defaults: { imgSrcName: string; bgSrcName: string; loadImgs: boolean; inEvt: any; outEvt: any; force: boolean; observerID: any; unobserve: boolean; observerOpts: IntersectionObserverInit; }; static version: string; static pluginName: string; constructor(element: HTMLElement, options: ILazyLoadOptions | StringPluginArgChoices); static remove(element: BaseElem, plugin?: LazyLoad): void; } export interface LazyLoadPlugin { lazyLoad(options: ILazyLoadOptions | StringPluginArgChoices): BaseElem; } declare module 'base-elem-js' { interface BaseElem extends LazyLoadPlugin { } }