From 7e25a75bcd7e4437f966fc851fedee491113a16d Mon Sep 17 00:00:00 2001 From: Roman Kartsev Date: Tue, 31 Aug 2021 16:16:44 +0300 Subject: [PATCH] [review fix] introduce hasViewportRelativeCoordinates to check both mouse events and pointer events --- packages/modifiers/src/snapCenterToCursor.ts | 6 ++---- packages/utilities/src/coordinates/getEventCoordinates.ts | 5 ++--- .../utilities/src/event/hasViewportRelativeCoordinates.ts | 5 +++++ packages/utilities/src/event/index.ts | 3 +-- packages/utilities/src/event/isMouseEvent.ts | 6 ------ packages/utilities/src/event/isPointerEvent.ts | 6 ------ packages/utilities/src/index.ts | 2 +- 7 files changed, 11 insertions(+), 22 deletions(-) create mode 100644 packages/utilities/src/event/hasViewportRelativeCoordinates.ts delete mode 100644 packages/utilities/src/event/isMouseEvent.ts delete mode 100644 packages/utilities/src/event/isPointerEvent.ts diff --git a/packages/modifiers/src/snapCenterToCursor.ts b/packages/modifiers/src/snapCenterToCursor.ts index 1c12ec2d4..f1d26df14 100644 --- a/packages/modifiers/src/snapCenterToCursor.ts +++ b/packages/modifiers/src/snapCenterToCursor.ts @@ -2,8 +2,7 @@ import type {Modifier} from '@dnd-kit/core'; import { getEventCoordinates, isTouchEvent, - isMouseEvent, - isPointerEvent, + hasViewportRelativeCoordinates, } from '@dnd-kit/utilities'; export const snapCenterToCursor: Modifier = ({ @@ -15,8 +14,7 @@ export const snapCenterToCursor: Modifier = ({ activeNodeRect && activatorEvent && (isTouchEvent(activatorEvent) || - isMouseEvent(activatorEvent) || - isPointerEvent(activatorEvent)) + hasViewportRelativeCoordinates(activatorEvent)) ) { const activatorCoordinates = getEventCoordinates(activatorEvent); const offsetX = activatorCoordinates.x - activeNodeRect.left; diff --git a/packages/utilities/src/coordinates/getEventCoordinates.ts b/packages/utilities/src/coordinates/getEventCoordinates.ts index 1e69bd7bf..e0538e593 100644 --- a/packages/utilities/src/coordinates/getEventCoordinates.ts +++ b/packages/utilities/src/coordinates/getEventCoordinates.ts @@ -1,5 +1,5 @@ import type {Coordinates} from './types'; -import {isTouchEvent} from '../event'; +import {isTouchEvent, hasViewportRelativeCoordinates} from '../event'; /** * Returns the normalized x and y coordinates for mouse and touch events. @@ -23,8 +23,7 @@ export function getEventCoordinates(event: Event): Coordinates { } } - // In case of MouseEvent or PointerEvent. - if ('clientX' in event && 'clientY' in event) { + if (hasViewportRelativeCoordinates(event)) { return { x: (event as MouseEvent).clientX, y: (event as MouseEvent).clientY, diff --git a/packages/utilities/src/event/hasViewportRelativeCoordinates.ts b/packages/utilities/src/event/hasViewportRelativeCoordinates.ts new file mode 100644 index 000000000..300d6bb88 --- /dev/null +++ b/packages/utilities/src/event/hasViewportRelativeCoordinates.ts @@ -0,0 +1,5 @@ +export function hasViewportRelativeCoordinates( + event: Event +): event is Event & Pick { + return 'clientX' in event && 'clientY' in event; +} diff --git a/packages/utilities/src/event/index.ts b/packages/utilities/src/event/index.ts index bbe4817fe..99cce2fff 100644 --- a/packages/utilities/src/event/index.ts +++ b/packages/utilities/src/event/index.ts @@ -1,3 +1,2 @@ -export {isMouseEvent} from './isMouseEvent'; -export {isPointerEvent} from './isPointerEvent'; +export {hasViewportRelativeCoordinates} from './hasViewportRelativeCoordinates'; export {isTouchEvent} from './isTouchEvent'; diff --git a/packages/utilities/src/event/isMouseEvent.ts b/packages/utilities/src/event/isMouseEvent.ts deleted file mode 100644 index bff4e9d04..000000000 --- a/packages/utilities/src/event/isMouseEvent.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function isMouseEvent(event: Event): event is MouseEvent { - return ( - (window?.MouseEvent && event instanceof MouseEvent) || - event.type.includes('mouse') - ); -} diff --git a/packages/utilities/src/event/isPointerEvent.ts b/packages/utilities/src/event/isPointerEvent.ts deleted file mode 100644 index 726f09743..000000000 --- a/packages/utilities/src/event/isPointerEvent.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function isPointerEvent(event: Event): event is PointerEvent { - return ( - (window?.PointerEvent && event instanceof PointerEvent) || - event.type.includes('pointer') - ); -} diff --git a/packages/utilities/src/index.ts b/packages/utilities/src/index.ts index f5776e5c3..9372562e7 100644 --- a/packages/utilities/src/index.ts +++ b/packages/utilities/src/index.ts @@ -12,6 +12,6 @@ export type {Coordinates} from './coordinates'; export {getEventCoordinates} from './coordinates'; export {CSS} from './css'; export type {Transform, Transition} from './css'; -export {isMouseEvent, isPointerEvent, isTouchEvent} from './event'; +export {hasViewportRelativeCoordinates, isTouchEvent} from './event'; export {canUseDOM} from './execution-context'; export type {Arguments, FirstArgument, Without} from './types';