export interface ElementEventMap { a: { onclick: (this: HTMLAnchorElement, event: MouseEvent) => void; ondblclick: (this: HTMLAnchorElement, event: MouseEvent) => void; onmousedown: (this: HTMLAnchorElement, event: MouseEvent) => void; onmouseup: (this: HTMLAnchorElement, event: MouseEvent) => void; onmouseenter: (this: HTMLAnchorElement, event: MouseEvent) => void; onmouseleave: (this: HTMLAnchorElement, event: MouseEvent) => void; onmousemove: (this: HTMLAnchorElement, event: MouseEvent) => void; onmouseover: (this: HTMLAnchorElement, event: MouseEvent) => void; onmouseout: (this: HTMLAnchorElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLAnchorElement, event: MouseEvent) => void; onkeydown: (this: HTMLAnchorElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLAnchorElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLAnchorElement, event: KeyboardEvent) => void; onfocus: (this: HTMLAnchorElement, event: FocusEvent) => void; onblur: (this: HTMLAnchorElement, event: FocusEvent) => void; }; audio: { onplay: (this: HTMLAudioElement, event: Event) => void; onpause: (this: HTMLAudioElement, event: Event) => void; onended: (this: HTMLAudioElement, event: Event) => void; ontimeupdate: (this: HTMLAudioElement, event: Event) => void; onvolumechange: (this: HTMLAudioElement, event: Event) => void; onloadstart: (this: HTMLAudioElement, event: Event) => void; onloadedmetadata: (this: HTMLAudioElement, event: Event) => void; onerror: (this: HTMLAudioElement, event: Event) => void; oncanplay: (this: HTMLAudioElement, event: Event) => void; oncanplaythrough: (this: HTMLAudioElement, event: Event) => void; onseeking: (this: HTMLAudioElement, event: Event) => void; onseeked: (this: HTMLAudioElement, event: Event) => void; onwaiting: (this: HTMLAudioElement, event: Event) => void; }; button: { onclick: (this: HTMLButtonElement, event: MouseEvent) => void; ondblclick: (this: HTMLButtonElement, event: MouseEvent) => void; onmousedown: (this: HTMLButtonElement, event: MouseEvent) => void; onmouseup: (this: HTMLButtonElement, event: MouseEvent) => void; onmouseenter: (this: HTMLButtonElement, event: MouseEvent) => void; onmouseleave: (this: HTMLButtonElement, event: MouseEvent) => void; onmousemove: (this: HTMLButtonElement, event: MouseEvent) => void; onmouseover: (this: HTMLButtonElement, event: MouseEvent) => void; onmouseout: (this: HTMLButtonElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLButtonElement, event: MouseEvent) => void; onkeydown: (this: HTMLButtonElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLButtonElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLButtonElement, event: KeyboardEvent) => void; onfocus: (this: HTMLButtonElement, event: FocusEvent) => void; onblur: (this: HTMLButtonElement, event: FocusEvent) => void; }; canvas: { onclick: (this: HTMLCanvasElement, event: MouseEvent) => void; ondblclick: (this: HTMLCanvasElement, event: MouseEvent) => void; onmousedown: (this: HTMLCanvasElement, event: MouseEvent) => void; onmouseup: (this: HTMLCanvasElement, event: MouseEvent) => void; onmousemove: (this: HTMLCanvasElement, event: MouseEvent) => void; onmouseover: (this: HTMLCanvasElement, event: MouseEvent) => void; onmouseout: (this: HTMLCanvasElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLCanvasElement, event: MouseEvent) => void; onkeydown: (this: HTMLCanvasElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLCanvasElement, event: KeyboardEvent) => void; onfocus: (this: HTMLCanvasElement, event: FocusEvent) => void; onblur: (this: HTMLCanvasElement, event: FocusEvent) => void; }; div: { onclick: (this: HTMLDivElement, event: MouseEvent) => void; ondblclick: (this: HTMLDivElement, event: MouseEvent) => void; onmousedown: (this: HTMLDivElement, event: MouseEvent) => void; onmouseup: (this: HTMLDivElement, event: MouseEvent) => void; onmouseenter: (this: HTMLDivElement, event: MouseEvent) => void; onmouseleave: (this: HTMLDivElement, event: MouseEvent) => void; onmousemove: (this: HTMLDivElement, event: MouseEvent) => void; onmouseover: (this: HTMLDivElement, event: MouseEvent) => void; onmouseout: (this: HTMLDivElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLDivElement, event: MouseEvent) => void; onwheel: (this: HTMLDivElement, event: WheelEvent) => void; onkeydown: (this: HTMLDivElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLDivElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLDivElement, event: KeyboardEvent) => void; onfocus: (this: HTMLDivElement, event: FocusEvent) => void; onblur: (this: HTMLDivElement, event: FocusEvent) => void; onscroll: (this: HTMLDivElement, event: Event) => void; }; footer: { onclick: (this: HTMLElement, event: MouseEvent) => void; ondblclick: (this: HTMLElement, event: MouseEvent) => void; onmousedown: (this: HTMLElement, event: MouseEvent) => void; onmouseup: (this: HTMLElement, event: MouseEvent) => void; onmouseenter: (this: HTMLElement, event: MouseEvent) => void; onmouseleave: (this: HTMLElement, event: MouseEvent) => void; onmousemove: (this: HTMLElement, event: MouseEvent) => void; onmouseover: (this: HTMLElement, event: MouseEvent) => void; onmouseout: (this: HTMLElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLElement, event: MouseEvent) => void; onwheel: (this: HTMLElement, event: WheelEvent) => void; onkeydown: (this: HTMLElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLElement, event: KeyboardEvent) => void; onfocus: (this: HTMLElement, event: FocusEvent) => void; onblur: (this: HTMLElement, event: FocusEvent) => void; onscroll: (this: HTMLElement, event: Event) => void; }; form: { onsubmit: (this: HTMLFormElement, event: SubmitEvent) => void; onreset: (this: HTMLFormElement, event: Event) => void; onchange: (this: HTMLFormElement, event: Event) => void; oninput: (this: HTMLFormElement, event: Event) => void; onclick: (this: HTMLFormElement, event: MouseEvent) => void; ondblclick: (this: HTMLFormElement, event: MouseEvent) => void; onmousedown: (this: HTMLFormElement, event: MouseEvent) => void; onmouseup: (this: HTMLFormElement, event: MouseEvent) => void; onmousemove: (this: HTMLFormElement, event: MouseEvent) => void; onmouseover: (this: HTMLFormElement, event: MouseEvent) => void; onmouseout: (this: HTMLFormElement, event: MouseEvent) => void; onfocus: (this: HTMLFormElement, event: FocusEvent) => void; onblur: (this: HTMLFormElement, event: FocusEvent) => void; }; h1: ElementEventMap["footer"]; h2: ElementEventMap["footer"]; h3: ElementEventMap["footer"]; h4: ElementEventMap["footer"]; h5: ElementEventMap["footer"]; h6: ElementEventMap["footer"]; header: ElementEventMap["footer"]; i: ElementEventMap["footer"]; iframe: { onload: (this: HTMLIFrameElement, event: Event) => void; onerror: (this: HTMLIFrameElement, event: Event) => void; onmessage: (this: HTMLIFrameElement, event: MessageEvent) => void; onclick: (this: HTMLIFrameElement, event: MouseEvent) => void; onmousedown: (this: HTMLIFrameElement, event: MouseEvent) => void; onmouseup: (this: HTMLIFrameElement, event: MouseEvent) => void; onmousemove: (this: HTMLIFrameElement, event: MouseEvent) => void; onfocus: (this: HTMLIFrameElement, event: FocusEvent) => void; onblur: (this: HTMLIFrameElement, event: FocusEvent) => void; }; img: { onload: (this: HTMLImageElement, event: Event) => void; onerror: (this: HTMLImageElement, event: Event) => void; onabort: (this: HTMLImageElement, event: Event) => void; onloadstart: (this: HTMLImageElement, event: Event) => void; onloadend: (this: HTMLImageElement, event: Event) => void; onclick: (this: HTMLImageElement, event: MouseEvent) => void; ondblclick: (this: HTMLImageElement, event: MouseEvent) => void; onmousedown: (this: HTMLImageElement, event: MouseEvent) => void; onmouseup: (this: HTMLImageElement, event: MouseEvent) => void; onmousemove: (this: HTMLImageElement, event: MouseEvent) => void; onmouseover: (this: HTMLImageElement, event: MouseEvent) => void; onmouseout: (this: HTMLImageElement, event: MouseEvent) => void; oncontextmenu: (this: HTMLImageElement, event: MouseEvent) => void; }; input: { oninput: (this: HTMLInputElement, event: InputEvent) => void; onchange: (this: HTMLInputElement, event: Event) => void; onclick: (this: HTMLInputElement, event: MouseEvent) => void; ondblclick: (this: HTMLInputElement, event: MouseEvent) => void; onmousedown: (this: HTMLInputElement, event: MouseEvent) => void; onmouseup: (this: HTMLInputElement, event: MouseEvent) => void; onfocus: (this: HTMLInputElement, event: FocusEvent) => void; onblur: (this: HTMLInputElement, event: FocusEvent) => void; onkeydown: (this: HTMLInputElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLInputElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLInputElement, event: KeyboardEvent) => void; onselect: (this: HTMLInputElement, event: Event) => void; oninvalid: (this: HTMLInputElement, event: Event) => void; oncut: (this: HTMLInputElement, event: ClipboardEvent) => void; oncopy: (this: HTMLInputElement, event: ClipboardEvent) => void; onpaste: (this: HTMLInputElement, event: ClipboardEvent) => void; }; label: { onclick: (this: HTMLLabelElement, event: MouseEvent) => void; ondblclick: (this: HTMLLabelElement, event: MouseEvent) => void; onmousedown: (this: HTMLLabelElement, event: MouseEvent) => void; onmouseup: (this: HTMLLabelElement, event: MouseEvent) => void; onmouseenter: (this: HTMLLabelElement, event: MouseEvent) => void; onmouseleave: (this: HTMLLabelElement, event: MouseEvent) => void; onmousemove: (this: HTMLLabelElement, event: MouseEvent) => void; onfocus: (this: HTMLLabelElement, event: FocusEvent) => void; onblur: (this: HTMLLabelElement, event: FocusEvent) => void; }; li: ElementEventMap["footer"]; main: ElementEventMap["footer"]; nav: ElementEventMap["footer"]; ol: ElementEventMap["footer"]; option: { onclick: (this: HTMLOptionElement, event: MouseEvent) => void; ondblclick: (this: HTMLOptionElement, event: MouseEvent) => void; onmousedown: (this: HTMLOptionElement, event: MouseEvent) => void; onmouseup: (this: HTMLOptionElement, event: MouseEvent) => void; }; p: ElementEventMap["footer"]; section: ElementEventMap["footer"]; select: { onchange: (this: HTMLSelectElement, event: Event) => void; oninput: (this: HTMLSelectElement, event: Event) => void; onclick: (this: HTMLSelectElement, event: MouseEvent) => void; ondblclick: (this: HTMLSelectElement, event: MouseEvent) => void; onmousedown: (this: HTMLSelectElement, event: MouseEvent) => void; onmouseup: (this: HTMLSelectElement, event: MouseEvent) => void; onfocus: (this: HTMLSelectElement, event: FocusEvent) => void; onblur: (this: HTMLSelectElement, event: FocusEvent) => void; oninvalid: (this: HTMLSelectElement, event: Event) => void; }; span: ElementEventMap["footer"]; textarea: { oninput: (this: HTMLTextAreaElement, event: InputEvent) => void; onchange: (this: HTMLTextAreaElement, event: Event) => void; onclick: (this: HTMLTextAreaElement, event: MouseEvent) => void; ondblclick: (this: HTMLTextAreaElement, event: MouseEvent) => void; onmousedown: (this: HTMLTextAreaElement, event: MouseEvent) => void; onmouseup: (this: HTMLTextAreaElement, event: MouseEvent) => void; onfocus: (this: HTMLTextAreaElement, event: FocusEvent) => void; onblur: (this: HTMLTextAreaElement, event: FocusEvent) => void; onkeydown: (this: HTMLTextAreaElement, event: KeyboardEvent) => void; onkeyup: (this: HTMLTextAreaElement, event: KeyboardEvent) => void; onkeypress: (this: HTMLTextAreaElement, event: KeyboardEvent) => void; onselect: (this: HTMLTextAreaElement, event: Event) => void; onscroll: (this: HTMLTextAreaElement, event: Event) => void; oncut: (this: HTMLTextAreaElement, event: ClipboardEvent) => void; oncopy: (this: HTMLTextAreaElement, event: ClipboardEvent) => void; onpaste: (this: HTMLTextAreaElement, event: ClipboardEvent) => void; }; ul: ElementEventMap["footer"]; video: { onplay: (this: HTMLVideoElement, event: Event) => void; onpause: (this: HTMLVideoElement, event: Event) => void; onended: (this: HTMLVideoElement, event: Event) => void; ontimeupdate: (this: HTMLVideoElement, event: Event) => void; onvolumechange: (this: HTMLVideoElement, event: Event) => void; onloadstart: (this: HTMLVideoElement, event: Event) => void; onloadedmetadata: (this: HTMLVideoElement, event: Event) => void; onerror: (this: HTMLVideoElement, event: Event) => void; oncanplay: (this: HTMLVideoElement, event: Event) => void; oncanplaythrough: (this: HTMLVideoElement, event: Event) => void; onseeking: (this: HTMLVideoElement, event: Event) => void; onseeked: (this: HTMLVideoElement, event: Event) => void; onwaiting: (this: HTMLVideoElement, event: Event) => void; onloadeddata: (this: HTMLVideoElement, event: Event) => void; onprogress: (this: HTMLVideoElement, event: Event) => void; onclick: (this: HTMLVideoElement, event: MouseEvent) => void; ondblclick: (this: HTMLVideoElement, event: MouseEvent) => void; onmousedown: (this: HTMLVideoElement, event: MouseEvent) => void; onmouseup: (this: HTMLVideoElement, event: MouseEvent) => void; }; tbody: ElementEventMap["footer"]; table: ElementEventMap["footer"]; } export type ElementEventHandler = { [K in keyof ElementEventMap[T]]?: ElementEventMap[T][K]; };