Appearance
useMousePressed
Reactive mouse pressing state
Demo
Basic Usage
tsx
import { useMousePressed } from '@reause/core'
const { pressed, sourceType } = useMousePressed()
// only detect mouse changes
const mouse = useMousePressed({ touch: false })
// only capture presses on a specific element (accepts an element or a React ref)
const el = useRef<HTMLDivElement>(null)
const { pressed } = useMousePressed({ target: el })
// initialValue accepts State<boolean>, including a controllable tuple
const [pressedState, setPressedState] = useState(false)
const controlled = useMousePressed({ initialValue: [pressedState, setPressedState] })Type Declarations
ts
export interface UseMousePressedOptions extends ConfigurableWindow {
touch?: boolean;
drag?: boolean;
capture?: boolean;
initialValue?: State<boolean>;
target?: RefObject<EventTarget | null | undefined>;
onPressed?: (event: MouseEvent | TouchEvent | DragEvent) => void;
onReleased?: (event: MouseEvent | TouchEvent | DragEvent) => void;
}
export type MousePressedOptions = UseMousePressedOptions
export interface UseMousePressedReturn {
pressed: boolean;
sourceType: UseMouseSourceType;
}
export type UseMouseSourceType = 'mouse' | 'touch' | null
export interface UseMouseReturn {
x: number;
y: number;
sourceType: UseMouseSourceType;
}
export function useMousePressed(options?: UseMousePressedOptions): UseMousePressedReturn