import { EventRaw, UIEventRaw, DragEventRaw, FocusEventRaw, MouseEventRaw, TouchEventRaw, KeyboardEventRaw } from './alias'; import { EventObject } from './object'; interface EventBase extends EventObject { relatedTarget?: undefined; bubbles: boolean; cancelable: boolean; eventPhase: number; detail: undefined; view: undefined; button: undefined; buttons: undefined; clientX: undefined; clientY: undefined; offsetX: undefined; offsetY: undefined; pageX: undefined; pageY: undefined; screenX: undefined; screenY: undefined; /** @deprecated */ toElement: undefined; pointerId: undefined; pointerType: undefined; /** @deprecated */ char: undefined; /** @deprecated */ charCode: undefined; key: undefined; /** @deprecated */ keyCode: undefined; changedTouches: undefined; targetTouches: undefined; touches: undefined; which: undefined; altKey: undefined; ctrlKey: undefined; metaKey: undefined; shiftKey: undefined; } interface ChangeEvent extends EventBase { type: 'change'; } interface ResizeEvent extends EventBase { type: 'resize'; } interface ScrollEvent extends EventBase { type: 'scroll'; } interface SelectEvent extends EventBase { type: 'select'; } interface SubmitEvent extends EventBase { type: 'submit'; } interface UIEventBase extends EventObject { bubbles: boolean; cancelable: boolean; eventPhase: number; detail: number; view: Window; } interface MouseEventBase extends UIEventBase { relatedTarget?: EventTarget | null; button: number; buttons: number; clientX: number; clientY: number; offsetX: number; offsetY: number; pageX: number; pageY: number; screenX: number; screenY: number; /** @deprecated */ toElement: Element; pointerId: undefined; pointerType: undefined; /** @deprecated */ char: undefined; /** @deprecated */ charCode: undefined; key: undefined; /** @deprecated */ keyCode: undefined; changedTouches: undefined; targetTouches: undefined; touches: undefined; which: number; altKey: boolean; ctrlKey: boolean; metaKey: boolean; shiftKey: boolean; } export interface ClickEvent extends MouseEventBase { relatedTarget?: null; type: 'click'; } export interface ContextMenuEvent extends MouseEventBase { relatedTarget?: null; type: 'contextmenu'; } export interface DoubleClickEvent extends MouseEventBase { relatedTarget?: null; type: 'dblclick'; } export interface MouseDownEvent extends MouseEventBase { relatedTarget?: null; type: 'mousedown'; } export interface MouseEnterEvent extends MouseEventBase { type: 'mouseenter'; } export interface MouseLeaveEvent extends MouseEventBase { type: 'mouseleave'; } export interface MouseMoveEvent extends MouseEventBase { relatedTarget?: null; type: 'mousemove'; } export interface MouseOutEvent extends MouseEventBase { type: 'mouseout'; } export interface MouseOverEvent extends MouseEventBase { type: 'mouseover'; } export interface MouseUpEvent extends MouseEventBase { relatedTarget?: null; type: 'mouseup'; } interface DragEventBase extends UIEventBase { } export interface DragEvent extends DragEventBase { type: 'drag'; } export interface DragEndEvent extends DragEventBase { type: 'dragend'; } export interface DragEnterEvent extends DragEventBase { type: 'dragenter'; } export interface DragExitEvent extends DragEventBase { type: 'dragexit'; } export interface DragLeaveEvent extends DragEventBase { type: 'dragleave'; } export interface DragOverEvent extends DragEventBase { type: 'dragover'; } export interface DragStartEvent extends DragEventBase { type: 'dragstart'; } export interface DropEvent extends DragEventBase { type: 'drop'; } interface KeyboardEventBase extends UIEventBase { relatedTarget?: undefined; button: undefined; buttons: undefined; clientX: undefined; clientY: undefined; offsetX: undefined; offsetY: undefined; pageX: undefined; pageY: undefined; screenX: undefined; screenY: undefined; /** @deprecated */ toElement: undefined; pointerId: undefined; pointerType: undefined; /** @deprecated */ char: string | undefined; /** @deprecated */ charCode: number; code: string; key: string; /** @deprecated */ keyCode: number; changedTouches: undefined; targetTouches: undefined; touches: undefined; which: number; altKey: boolean; ctrlKey: boolean; metaKey: boolean; shiftKey: boolean; } export interface KeyDownEvent extends KeyboardEventBase { type: 'keydown'; } export interface KeyPressEvent extends KeyboardEventBase { type: 'keypress'; } export interface KeyUpEvent extends KeyboardEventBase { type: 'keyup'; } interface TouchEventBase extends UIEventBase { relatedTarget?: undefined; button: undefined; buttons: undefined; clientX: undefined; clientY: undefined; offsetX: undefined; offsetY: undefined; pageY: undefined; screenX: undefined; screenY: undefined; /** @deprecated */ toElement: undefined; pointerId: undefined; pointerType: undefined; /** @deprecated */ char: undefined; /** @deprecated */ charCode: undefined; key: undefined; /** @deprecated */ keyCode: undefined; changedTouches: TouchList; targetTouches: TouchList; touches: TouchList; which: undefined; altKey: boolean; ctrlKey: boolean; metaKey: boolean; shiftKey: boolean; } export interface TouchCancelEvent extends TouchEventBase { type: 'touchcancel'; } export interface TouchEndEvent extends TouchEventBase { type: 'touchend'; } export interface TouchMoveEvent extends TouchEventBase { type: 'touchmove'; } export interface TouchStartEvent extends TouchEventBase { type: 'touchstart'; } interface FocusEventBase extends UIEventBase { relatedTarget?: EventTarget | null; button: undefined; buttons: undefined; clientX: undefined; clientY: undefined; offsetX: undefined; offsetY: undefined; pageX: undefined; pageY: undefined; screenX: undefined; screenY: undefined; /** @deprecated */ toElement: undefined; pointerId: undefined; pointerType: undefined; /** @deprecated */ char: undefined; /** @deprecated */ charCode: undefined; key: undefined; /** @deprecated */ keyCode: undefined; changedTouches: undefined; targetTouches: undefined; touches: undefined; which: undefined; altKey: undefined; ctrlKey: undefined; metaKey: undefined; shiftKey: undefined; } export interface BlurEvent extends FocusEventBase { type: 'blur'; } export interface FocusEvent extends FocusEventBase { type: 'focus'; } export interface FocusInEvent extends FocusEventBase { type: 'focusin'; } export interface FocusOutEvent extends FocusEventBase { type: 'focusout'; } interface TypeToTriggeredEventMap { change: ChangeEvent; resize: ResizeEvent; scroll: ScrollEvent; select: SelectEvent; submit: SubmitEvent; click: ClickEvent; contextmenu: ContextMenuEvent; dblclick: DoubleClickEvent; mousedown: MouseDownEvent; mouseenter: MouseEnterEvent; mouseleave: MouseLeaveEvent; mousemove: MouseMoveEvent; mouseout: MouseOutEvent; mouseover: MouseOverEvent; mouseup: MouseUpEvent; drag: DragEvent; dragend: DragEndEvent; dragenter: DragEnterEvent; dragexit: DragExitEvent; dragleave: DragLeaveEvent; dragover: DragOverEvent; dragstart: DragStartEvent; drop: DropEvent; keydown: KeyDownEvent; keypress: KeyPressEvent; keyup: KeyUpEvent; touchcancel: TouchCancelEvent; touchend: TouchEndEvent; touchmove: TouchMoveEvent; touchstart: TouchStartEvent; blur: BlurEvent; focus: FocusEvent; focusin: FocusInEvent; focusout: FocusOutEvent; [type: string]: EventObject; } export type EventHandlerBase = (this: TContext, e: T, ...args: any[]) => any; export type EventHandler = EventHandlerBase>; export type TypeEventHandler> = EventHandlerBase[TType]>; export interface TypeEventHandlers extends TypeEventHandlersBase { [type: string]: TypeEventHandler | false | undefined | Record; } type TypeEventHandlersBase = { [TType in keyof TypeToTriggeredEventMap]?: TypeEventHandler | false | Record; }; export {};