123456789101112131415161718192021222324 |
- function isReactEvent(
- maybe: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent
- ): maybe is React.MouseEvent | React.TouchEvent {
- return 'nativeEvent' in maybe;
- }
- /**
- * Handle getting position out of both React and Raw DOM events
- * as both are handled here due to mousedown/mousemove events
- * working differently.
- */
- export function getPointerPosition(
- event: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent,
- property: 'pageX' | 'pageY' | 'clientX' | 'clientY'
- ): number {
- const actual = isReactEvent(event) ? event.nativeEvent : event;
- if (window.TouchEvent && actual instanceof TouchEvent) {
- return actual.targetTouches[0][property];
- }
- if (actual instanceof MouseEvent) {
- return actual[property];
- }
- return 0;
- }
|