diff --git a/packages/reshow-hooks/package.json b/packages/reshow-hooks/package.json index b04095dc..8fb9df2f 100644 --- a/packages/reshow-hooks/package.json +++ b/packages/reshow-hooks/package.json @@ -1,5 +1,5 @@ { - "version": "0.18.2", + "version": "0.18.3", "name": "reshow-hooks", "repository": { "type": "git", diff --git a/packages/reshow-hooks/src/useSwipe.js b/packages/reshow-hooks/src/useSwipe.js index b2d47941..90a65d74 100644 --- a/packages/reshow-hooks/src/useSwipe.js +++ b/packages/reshow-hooks/src/useSwipe.js @@ -49,19 +49,19 @@ const defaultCallback = (/**@type DirectionType*/ _bDirection) => {}; * @property {function(DirectionType):void} callback=defaultCallback * @property {number} startTime * @property {boolean} bTracking - * @property {number} startPosX - * @property {number} startPosY - * @property {number} endPosX - * @property {number} endPosY + * @property {number?} startPosX + * @property {number?} startPosY + * @property {number?} endPosX + * @property {number?} endPosY */ const resetSwipState = { startTime: 0, bTracking: false, - startPosX: 0, - startPosY: 0, - endPosX: 0, - endPosY: 0, + startPosX: null, + startPosY: null, + endPosX: null, + endPosY: null, }; /** @@ -115,13 +115,24 @@ export const useSwipe = ({ let direction; const now = new Date().getTime(); const deltaTime = now - startTime; - const deltaX = endPosX - startPosX; - const deltaY = endPosY - startPosY; + lastState.current = { + ...lastState.current, + ...resetSwipState, + }; + /* work out what the movement was */ - if (deltaTime > thresholdTime) { + if ( + deltaTime > thresholdTime || + null == endPosX || + null == endPosY || + null == startPosX || + null == startPosY + ) { /* gesture too slow */ return; } else { + const deltaX = endPosX - startPosX; + const deltaY = endPosY - startPosY; if ( deltaX > thresholdDistance && Math.abs(deltaY) < thresholdDistance @@ -145,10 +156,6 @@ export const useSwipe = ({ } else { direction = null; } - lastState.current = { - ...lastState.current, - ...resetSwipState, - }; if (null != direction) { callback(direction); } diff --git a/packages/reshow-hooks/types/useSwipe.d.ts b/packages/reshow-hooks/types/useSwipe.d.ts index 8d22ffea..9579cc87 100644 --- a/packages/reshow-hooks/types/useSwipe.d.ts +++ b/packages/reshow-hooks/types/useSwipe.d.ts @@ -43,8 +43,8 @@ export type UseSwipeState = { callback: (arg0: DirectionType) => void; startTime: number; bTracking: boolean; - startPosX: number; - startPosY: number; - endPosX: number; - endPosY: number; + startPosX: number | null; + startPosY: number | null; + endPosX: number | null; + endPosY: number | null; };