@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
64 lines • 1.71 kB
TypeScript
/**
* 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
}