Appearance
usePointerSwipe
Reactive swipe detection based on PointerEvents
Demo
Usage
tsx
import { usePointerSwipe } from '@reause/core'
import { useRef } from 'react'
const el = useRef<HTMLDivElement>(null)
const { isSwiping, direction } = usePointerSwipe(el, {
threshold: 50,
onSwipeEnd: (e, direction) => console.log(direction),
})
// direction: 'up' | 'down' | 'left' | 'right' | 'none'Type Declarations
Toggle
ts
export interface UsePointerSwipeOptions {
threshold?: number;
onSwipeStart?: (e: PointerEvent) => void;
onSwipe?: (e: PointerEvent) => void;
onSwipeEnd?: (e: PointerEvent, direction: UseSwipeDirection) => void;
pointerTypes?: PointerType[];
disableTextSelect?: boolean;
}
export interface UsePointerSwipeReturn {
readonly isSwiping: boolean;
readonly direction: UseSwipeDirection;
readonly posStart: Readonly<Position>;
readonly posEnd: Readonly<Position>;
readonly distanceX: number;
readonly distanceY: number;
stop: () => void;
}
export type UseSwipeDirection = 'up' | 'down' | 'left' | 'right' | 'none'
export interface UseSwipeOptions extends ConfigurableWindow {
passive?: boolean;
threshold?: number;
onSwipeStart?: (e: TouchEvent) => void;
onSwipe?: (e: TouchEvent) => void;
onSwipeEnd?: (e: TouchEvent, direction: UseSwipeDirection) => void;
}
export interface UseSwipeReturn {
isSwiping: boolean;
direction: UseSwipeDirection;
coordsStart: Readonly<Position>;
coordsEnd: Readonly<Position>;
lengthX: number;
lengthY: number;
stop: () => void;
}
export type PointerType = 'mouse' | 'touch' | 'pen'
export interface UsePointerState {
x: number;
y: number;
pointerId: number;
pressure: number;
tiltX: number;
tiltY: number;
width: number;
height: number;
twist: number;
pointerType: PointerType | null;
}
export interface UsePointerOptions extends ConfigurableWindow {
pointerTypes?: PointerType[];
initialValue?: Partial<UsePointerState>;
target?: RefObject<EventTarget | null | undefined>;
}
interface Position {
x: number;
y: number;
}
export function usePointerSwipe(target: RefObject<HTMLElement | null | undefined>, options?: UsePointerSwipeOptions): UsePointerSwipeReturn