UNPKG

@stacksjs/stx

Version:

A performant UI Framework. Powered by Bun.

64 lines 1.71 kB
/** * Track mouse position globally or within a target */ export declare function useMouse(options?: MouseOptions): MouseRef; /** * Track mouse position relative to an element */ export declare function useMouseInElement(element: HTMLElement | (() => HTMLElement | null) | null, options?: Omit<MouseOptions, 'target'>): ElementMouseRef; /** * Track pointer (unified mouse + touch + pen) */ export declare function usePointer(options?: MouseOptions): MouseRef; /** * useMouse - Reactive mouse/pointer position tracking * * Track mouse position, movement, and button states. * * @example * ```ts * const mouse = useMouse() * mouse.subscribe(state => { * console.log(`Mouse at ${state.x}, ${state.y}`) * }) * * // Track within a specific element * const elementMouse = useMouseInElement(myElement) * ``` */ export declare interface MouseState { x: number y: number pageX: number pageY: number clientX: number clientY: number movementX: number movementY: number buttons: number isPressed: boolean isInside: boolean } export declare interface MouseOptions { target?: Window | HTMLElement | null touch?: boolean resetOnLeave?: boolean type?: 'page' | 'client' | 'screen' | 'movement' } export declare interface MouseRef { get: () => MouseState subscribe: (fn: (state: MouseState) => void) => () => void stop: () => void } export declare interface ElementMouseState extends MouseState { elementX: number elementY: number elementWidth: number elementHeight: number isOutside: boolean } export declare interface ElementMouseRef { get: () => ElementMouseState subscribe: (fn: (state: ElementMouseState) => void) => () => void stop: () => void }