@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
29 lines (28 loc) • 1.07 kB
TypeScript
import { Intersection } from 'three';
export type ThreeMouseEvent = Intersection & {
nativeEvent: unknown;
stopPropagation?: () => void;
stopImmediatePropagation?: () => void;
};
export type ThreePointerEvent = ThreeMouseEvent & {
pointerId: number;
};
export type ThreeEventMap = {
mouse: ThreeMouseEvent;
wheel: ThreeMouseEvent;
pointer: ThreePointerEvent;
};
export type EventHandlers<EM extends ThreeEventMap = ThreeEventMap> = {
onClick?: (event: EM['mouse']) => void;
onContextMenu?: (event: EM['mouse']) => void;
onDoubleClick?: (event: EM['mouse']) => void;
onWheel?: (event: EM['wheel']) => void;
onPointerUp?: (event: EM['pointer']) => void;
onPointerDown?: (event: EM['pointer']) => void;
onPointerOver?: (event: EM['pointer']) => void;
onPointerOut?: (event: EM['pointer']) => void;
onPointerEnter?: (event: EM['pointer']) => void;
onPointerLeave?: (event: EM['pointer']) => void;
onPointerMove?: (event: EM['pointer']) => void;
onPointerCancel?: (event: EM['pointer']) => void;
};