import { DefaultHandlers, EventHandlers, EventNode, IEventContainer } from "@commonmodule/ts"; import { DomSelector, ElementOrSelector, ElementProperties, InferElementType } from "@commonmodule/universal-page"; export type ElementEventMap = H extends HTMLBodyElement ? WindowEventMap & DocumentEventMap & HTMLBodyElementEventMap : H extends HTMLVideoElement ? HTMLMediaElementEventMap & HTMLVideoElementEventMap : H extends HTMLAudioElement ? HTMLMediaElementEventMap : HTMLElementEventMap; type ElementEventHandlers = { [K in keyof HTMLElementEventMap]: (event: ElementEventMap[K]) => void; }; export type DomDefaultHandlers = { visible: () => void; }; export type AllDomHandlers = E & DefaultHandlers & DomDefaultHandlers & ElementEventHandlers; export type DomChild = Dom | ElementProperties> | string | undefined; export default class Dom extends EventNode> { htmlElement: H; constructor(elementOrSelector?: H | DomSelector, ...children: DomChild[]); private prependText; private appendText; prepend(...children: DomChild[]): this; append(...children: DomChild[]): this; protected isVisible(): boolean; private notifyVisibility; appendTo(parent: Dom, index?: number): this; clear(...except: (Dom | undefined)[]): this; set text(text: string | undefined); get text(): string; on(eventName: K, eventHandler: E[K]): this; on(eventName: K, eventHandler: DefaultHandlers[K]): this; on(eventName: K, eventHandler: DomDefaultHandlers[K]): this; on>(eventName: K, eventHandler: (event: ElementEventMap[K]) => void): this; off(eventName: K, eventHandler?: E[K]): this; off(eventName: K, eventHandler?: DefaultHandlers[K]): this; off(eventName: K, eventHandler?: DomDefaultHandlers[K]): this; off>(eventName: K, eventHandler?: (event: ElementEventMap[K]) => void): this; protected emit(eventName: K, ...args: Parameters): Promise[]>; protected emit(eventName: K, ...args: Parameters): Promise[]>; protected emit(eventName: K, ...args: Parameters): Promise[]>; bind(target: IEventContainer, eventName: K, eventHandler: E[K]): this; bind(target: IEventContainer, eventName: K, eventHandler: DefaultHandlers[K]): this; bind(target: IEventContainer, eventName: K, eventHandler: DomDefaultHandlers[K]): this; bind>(target: IEventContainer, eventName: K, eventHandler: (event: ElementEventMap[K]) => void): this; addClass(...classNames: string[]): this; hasClass(className: string): boolean; removeClass(...classNames: string[]): this; style | string>(styles: T): T extends string ? string : this; calculateRect(): DOMRect; clone(): Dom; remove(): void; } export {}; //# sourceMappingURL=Dom.d.ts.map