Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@react-hook/mouse-position

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@react-hook/mouse-position - npm Package Compare versions

Comparing version
4.1.1
to
4.1.2
+28
-26
dist/umd/use-mouse-position.dev.js

@@ -7,2 +7,4 @@ (function (global, factory) {

var React__default = 'default' in React ? React['default'] : React;
function _defineProperty(obj, key, value) {

@@ -57,42 +59,42 @@ if (key in obj) {

var usePassiveLayoutEffect = React[typeof document !== 'undefined' && document.createElement !== void 0 ? 'useLayoutEffect' : 'useEffect'];
var usePassiveLayoutEffect = React__default[typeof document !== 'undefined' && document.createElement !== void 0 ? 'useLayoutEffect' : 'useEffect'];
var useLatest = function useLatest(current) {
var storedValue = React.useRef(current);
storedValue.current = current;
return storedValue;
};
function useEvent(target, type, listener, cleanup) {
if (cleanup === void 0) {
cleanup = noop;
}
var storedListener = React.useRef(listener);
var storedCleanup = React.useRef(cleanup);
usePassiveLayoutEffect(function () {
storedListener.current = listener;
storedCleanup.current = cleanup;
});
usePassiveLayoutEffect(function () {
var targetEl = target && 'current' in target ? target.current : target;
if (!targetEl) return;
var didUnsubscribe = 0;
var storedListener = useLatest(listener);
var storedCleanup = useLatest(cleanup);
function listener() {
if (didUnsubscribe) return;
function _listener() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
storedListener.current(this, args);
}
storedListener.current.apply(this, args);
}
usePassiveLayoutEffect(function () {
var targetEl = target && 'current' in target ? target.current : target;
if (!targetEl) return;
var listener = _listener;
targetEl.addEventListener(type, listener);
var cleanup = storedCleanup.current;
return function () {
didUnsubscribe = 1;
targetEl.removeEventListener(type, listener);
cleanup();
cleanup && cleanup();
}; // eslint-disable-next-line react-hooks/exhaustive-deps
}, [target, type]);
} // eslint-disable-next-line @typescript-eslint/no-empty-function
}
var useLatest = function useLatest(current) {
var storedValue = React.useRef(current);
storedValue.current = current;
return storedValue;
};
function noop() {}
var perf = typeof performance !== 'undefined' ? performance : Date;

@@ -99,0 +101,0 @@

@@ -1,1 +0,1 @@

{"version":3,"file":"use-mouse-position.dev.js","sources":["../../node_modules/@react-hook/passive-layout-effect/src/index.tsx","../../node_modules/@react-hook/latest/src/index.tsx","../../node_modules/@react-hook/event/src/index.tsx","../../node_modules/@react-hook/throttle/src/index.tsx","../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nconst usePassiveLayoutEffect =\n React[\n typeof document !== 'undefined' && document.createElement !== void 0\n ? 'useLayoutEffect'\n : 'useEffect'\n ]\n\nexport default usePassiveLayoutEffect\n","import * as React from 'react'\n\nconst useLatest = <T extends any>(current: T) => {\n const storedValue = React.useRef(current)\n storedValue.current = current\n return storedValue\n}\n\nexport default useLatest\n","import * as React from 'react'\nimport useLayoutEffect from '@react-hook/passive-layout-effect'\nimport useLatest from '@react-hook/latest'\n\nfunction useEvent<\n T extends Window = Window,\n K extends keyof WindowEventMap = keyof WindowEventMap\n>(\n target: Window | null,\n type: K,\n listener: WindowEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends Document = Document,\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n>(\n target: Document | null,\n type: K,\n listener: DocumentEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends HTMLElement = HTMLElement,\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n>(\n target: React.RefObject<T> | T | null,\n type: K,\n listener: ElementEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent(\n target: any,\n type: any,\n listener: any,\n cleanup: any = noop\n): void {\n const storedListener = useLatest(listener)\n const storedCleanup = useLatest(cleanup)\n\n useLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target\n if (!targetEl) return\n\n const listener = function (this: any, ...args: any[]) {\n storedListener.current.apply(this, args)\n }\n\n targetEl.addEventListener(type, listener)\n const cleanup = storedCleanup.current\n\n return () => {\n targetEl.removeEventListener(type, listener)\n cleanup()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type])\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nexport type ElementEventListener<\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n> = (this: HTMLElement, ev: HTMLElementEventMap[K]) => any\n\nexport type DocumentEventListener<\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n> = (this: Document, ev: DocumentEventMap[K]) => any\n\nexport type WindowEventListener<\n K extends keyof WindowEventMap = keyof WindowEventMap\n> = (this: Document, ev: WindowEventMap[K]) => any\n\nexport default useEvent\n","import * as React from 'react'\nimport useLatest from '@react-hook/latest'\n\nconst perf = typeof performance !== 'undefined' ? performance : Date\nconst now = () => perf.now()\n\nexport function useThrottleCallback<CallbackArguments extends any[]>(\n callback: (...args: CallbackArguments) => void,\n fps = 30,\n leading = false\n): (...args: CallbackArguments) => void {\n const storedCallback = useLatest(callback)\n const ms = 1000 / fps\n const prev = React.useRef(0)\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout>>()\n const clearTrailing = () =>\n trailingTimeout.current && clearTimeout(trailingTimeout.current)\n const deps = [fps, leading, storedCallback]\n\n // Reset any time the deps change\n React.useEffect(\n () => () => {\n prev.current = 0\n clearTrailing()\n },\n deps\n )\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const rightNow = now()\n const call = () => {\n prev.current = rightNow\n clearTrailing()\n storedCallback.current.apply(null, args as any)\n }\n const current = prev.current\n // leading\n if (leading && current === 0) return call()\n // body\n if (rightNow - current > ms) {\n if (current > 0) return call()\n prev.current = rightNow\n }\n // trailing\n clearTrailing()\n trailingTimeout.current = setTimeout(() => {\n call()\n prev.current = 0\n }, ms)\n }, deps)\n}\n\nexport function useThrottle<State>(\n initialState: State | (() => State),\n fps?: number,\n leading?: boolean\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const state = React.useState<State>(initialState)\n return [state[0], useThrottleCallback(state[1], fps, leading)]\n}\n","import * as React from 'react'\nimport useEvent from '@react-hook/event'\nimport {useThrottleCallback} from '@react-hook/throttle'\n\nfunction useMouse<T extends HTMLElement = HTMLElement>(\n target: React.RefObject<T> | T | null,\n options: UseMouseOptions = {}\n): MousePosition {\n const {fps = 30, enterDelay = 0, leaveDelay = 0} = options\n const [state, dispatch] = React.useReducer<\n React.Reducer<UseMouseState, UseMouseAction<T>>\n >(\n (state, action): UseMouseState => {\n const {mouse, context} = state\n const handleDown = (\n state: UseMouseState,\n action:\n | TouchdownAction<T>\n | MousedownAction<T>\n | MousemoveAction<T>\n | TouchmoveAction<T>\n ): UseMouseState => {\n if (typeof window === 'undefined') return state\n const {event: e, element} = action\n let event: MouseEvent | TouchEvent['touches'][0]\n if ('touches' in e) {\n event = (e as TouchEvent).touches[0]\n } else {\n event = e\n }\n const {clientX, clientY, screenX, screenY, pageX = 0, pageY = 0} = event\n const rect = element.getBoundingClientRect()\n const x = pageX - rect.left - (window.pageXOffset || window.scrollX)\n const y = pageY - rect.top - (window.pageYOffset || window.scrollY)\n // shims a mouseleave event for touch devices\n if (\n 'touches' in e &&\n (x < 0 || y < 0 || x > rect.width || y > rect.height)\n ) {\n return {\n ...state,\n context: {\n ...state.context,\n hoverStatus: 'leave',\n touchStatus: 'end',\n },\n }\n }\n\n return {\n context: {\n ...state.context,\n hoverStatus: 'enter',\n },\n mouse: {\n ...state.mouse,\n x,\n y,\n pageX,\n pageY,\n clientX,\n clientY,\n screenX,\n screenY,\n elementWidth: rect.width,\n elementHeight: rect.height,\n isOver: true,\n isTouch: 'touches' in e,\n },\n }\n }\n\n if (action.type === 'mousemove') {\n // Bails out if touch has ended\n if (context.touchStatus === 'end') return state\n return handleDown(state, action)\n } else if (action.type === 'touchmove') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse,\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'touchdown') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'mousedown') {\n return {\n context,\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n } else if (action.type === 'mouseup') {\n return {context, mouse: {...mouse, isDown: false}}\n } else if (action.type === 'mouseleave') {\n return {\n context: {\n ...context,\n hoverStatus: 'leave',\n },\n mouse: {...mouse, isOver: false},\n }\n } else if (action.type === 'touchleave') {\n return {\n context: {...context, hoverStatus: 'leave', touchStatus: 'end'},\n mouse: {...mouse, isOver: false, isDown: false},\n }\n } else if (action.type === 'activeStatus') {\n return {\n context: {...context, activeStatus: action.value},\n mouse,\n }\n }\n\n return state\n },\n {\n mouse: initialState,\n context: initialContext,\n }\n )\n\n const onMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'mousemove', event, element})\n },\n fps,\n true\n )\n const onTouchMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'touchmove', event, element})\n },\n fps,\n true\n )\n const onLeave = useThrottleCallback(\n () => dispatch({type: 'mouseleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n const onDown = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch(\n 'touches' in event\n ? {\n type: 'touchdown',\n element,\n event: event,\n }\n : {\n type: 'mousedown',\n element,\n event: event,\n }\n )\n },\n fps,\n true\n )\n const onUp = useThrottleCallback(\n () => dispatch({type: 'mouseup'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // down events.\n false\n )\n const onTouchEnd = useThrottleCallback(\n () => dispatch({type: 'touchleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n\n useEvent(target, 'mouseenter', onMove)\n useEvent(target, 'mousemove', onMove)\n useEvent(target, 'mouseleave', onLeave)\n useEvent(target, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mouseup', onUp)\n useEvent(target, 'touchstart', onDown)\n useEvent(target, 'touchmove', onTouchMove)\n useEvent(target, 'touchend', onTouchEnd)\n useEvent(target, 'touchcancel', onTouchEnd)\n\n React.useEffect(() => {\n if (state.context.hoverStatus === 'enter') {\n if (enterDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'active'}),\n enterDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'active'})\n } else {\n if (leaveDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'inactive'}),\n leaveDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'inactive'})\n }\n }, [state.context.hoverStatus, enterDelay, leaveDelay])\n\n return state.context.activeStatus === 'active' ? state.mouse : initialState\n}\n\nconst initialState: MousePosition = {\n x: null,\n y: null,\n pageX: null,\n pageY: null,\n clientX: null,\n clientY: null,\n screenX: null,\n screenY: null,\n elementWidth: null,\n elementHeight: null,\n isOver: false,\n isDown: false,\n isTouch: false,\n}\n\nconst initialContext: UseMouseState['context'] = {\n hoverStatus: 'idle',\n touchStatus: 'idle',\n activeStatus: 'inactive',\n}\n\ninterface UseMouseState {\n mouse: MousePosition\n context: {\n hoverStatus: 'idle' | 'enter' | 'leave'\n touchStatus: 'idle' | 'start' | 'end'\n activeStatus: 'inactive' | 'active'\n }\n}\n\ntype UseMouseAction<T extends HTMLElement> =\n | MousemoveAction<T>\n | {\n type: 'activeStatus'\n value: UseMouseState['context']['activeStatus']\n }\n | {\n type: 'mouseleave'\n }\n | {\n type: 'touchleave'\n }\n | {\n type: 'mouseup'\n }\n | TouchdownAction<T>\n | MousedownAction<T>\n | TouchmoveAction<T>\n\ntype TouchdownAction<T> = {\n type: 'touchdown'\n element: T\n event: TouchEvent\n}\n\ntype MousedownAction<T> = {\n type: 'mousedown'\n element: T\n event: MouseEvent\n}\n\ntype MousemoveAction<T> = {\n type: 'mousemove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\ntype TouchmoveAction<T> = {\n type: 'touchmove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\nexport interface UseMouseOptions {\n enterDelay?: number\n leaveDelay?: number\n fps?: number\n}\n\nexport interface MousePosition {\n x: number | null\n y: number | null\n pageX: number | null\n pageY: number | null\n clientX: number | null\n clientY: number | null\n screenX: number | null\n screenY: number | null\n elementWidth: number | null\n elementHeight: number | null\n isOver: boolean\n isDown: boolean\n isTouch: boolean\n}\n\nexport default useMouse\n"],"names":["usePassiveLayoutEffect","React","document","createElement","useLatest","current","storedValue","useEvent","target","type","listener","cleanup","noop","storedListener","storedCleanup","args","apply","useLayoutEffect","targetEl","addEventListener","removeEventListener","perf","performance","Date","now","useThrottleCallback","callback","fps","leading","storedCallback","ms","prev","trailingTimeout","clearTrailing","clearTimeout","deps","arguments","rightNow","call","setTimeout","state","action","window","e","event","element","touches","clientX","clientY","screenX","screenY","pageX","pageY","rect","getBoundingClientRect","x","left","pageXOffset","scrollX","y","top","pageYOffset","scrollY","width","height","context","hoverStatus","touchStatus","mouse","elementWidth","elementHeight","isOver","isTouch","handleDown","nextState","isDown","activeStatus","value","useMouse","options","enterDelay","leaveDelay","initialState","initialContext","dispatch","onMove","onTouchMove","onLeave","onDown","onUp","onTouchEnd","timeout"],"mappings":"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"}
{"version":3,"file":"use-mouse-position.dev.js","sources":["../../node_modules/@react-hook/passive-layout-effect/src/index.tsx","../../node_modules/@react-hook/event/src/index.tsx","../../node_modules/@react-hook/latest/src/index.tsx","../../node_modules/@react-hook/throttle/src/index.tsx","../../src/index.tsx"],"sourcesContent":["import React from 'react'\n\nconst usePassiveLayoutEffect =\n React[\n typeof document !== 'undefined' && document.createElement !== void 0\n ? 'useLayoutEffect'\n : 'useEffect'\n ]\n\nexport default usePassiveLayoutEffect\n","import * as React from 'react'\nimport useLayoutEffect from '@react-hook/passive-layout-effect'\n\nfunction useEvent<\n T extends Window = Window,\n K extends keyof WindowEventMap = keyof WindowEventMap\n>(\n target: Window | null,\n type: K,\n listener: WindowEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends Document = Document,\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n>(\n target: Document | null,\n type: K,\n listener: DocumentEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends HTMLElement = HTMLElement,\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n>(\n target: React.RefObject<T> | T | null,\n type: K,\n listener: ElementEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent(target: any, type: any, listener: any, cleanup: any): void {\n const storedListener = React.useRef(listener)\n const storedCleanup = React.useRef(cleanup)\n\n useLayoutEffect(() => {\n storedListener.current = listener\n storedCleanup.current = cleanup\n })\n\n useLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target\n if (!targetEl) return\n\n let didUnsubscribe = 0\n function listener(this: any, ...args: any[]) {\n if (didUnsubscribe) return\n storedListener.current(this, args)\n }\n\n targetEl.addEventListener(type, listener)\n const cleanup = storedCleanup.current\n\n return () => {\n didUnsubscribe = 1\n targetEl.removeEventListener(type, listener)\n cleanup && cleanup()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type])\n}\n\nexport type ElementEventListener<\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n> = (this: HTMLElement, ev: HTMLElementEventMap[K]) => any\n\nexport type DocumentEventListener<\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n> = (this: Document, ev: DocumentEventMap[K]) => any\n\nexport type WindowEventListener<\n K extends keyof WindowEventMap = keyof WindowEventMap\n> = (this: Document, ev: WindowEventMap[K]) => any\n\nexport default useEvent\n","import * as React from 'react'\n\nconst useLatest = <T extends any>(current: T) => {\n const storedValue = React.useRef(current)\n storedValue.current = current\n return storedValue\n}\n\nexport default useLatest\n","import * as React from 'react'\nimport useLatest from '@react-hook/latest'\n\nconst perf = typeof performance !== 'undefined' ? performance : Date\nconst now = () => perf.now()\n\nexport function useThrottleCallback<CallbackArguments extends any[]>(\n callback: (...args: CallbackArguments) => void,\n fps = 30,\n leading = false\n): (...args: CallbackArguments) => void {\n const storedCallback = useLatest(callback)\n const ms = 1000 / fps\n const prev = React.useRef(0)\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout>>()\n const clearTrailing = () =>\n trailingTimeout.current && clearTimeout(trailingTimeout.current)\n const deps = [fps, leading, storedCallback]\n\n // Reset any time the deps change\n React.useEffect(\n () => () => {\n prev.current = 0\n clearTrailing()\n },\n deps\n )\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const rightNow = now()\n const call = () => {\n prev.current = rightNow\n clearTrailing()\n storedCallback.current.apply(null, args as any)\n }\n const current = prev.current\n // leading\n if (leading && current === 0) return call()\n // body\n if (rightNow - current > ms) {\n if (current > 0) return call()\n prev.current = rightNow\n }\n // trailing\n clearTrailing()\n trailingTimeout.current = setTimeout(() => {\n call()\n prev.current = 0\n }, ms)\n }, deps)\n}\n\nexport function useThrottle<State>(\n initialState: State | (() => State),\n fps?: number,\n leading?: boolean\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const state = React.useState<State>(initialState)\n return [state[0], useThrottleCallback(state[1], fps, leading)]\n}\n","import * as React from 'react'\nimport useEvent from '@react-hook/event'\nimport {useThrottleCallback} from '@react-hook/throttle'\n\nfunction useMouse<T extends HTMLElement = HTMLElement>(\n target: React.RefObject<T> | T | null,\n options: UseMouseOptions = {}\n): MousePosition {\n const {fps = 30, enterDelay = 0, leaveDelay = 0} = options\n const [state, dispatch] = React.useReducer<\n React.Reducer<UseMouseState, UseMouseAction<T>>\n >(\n (state, action): UseMouseState => {\n const {mouse, context} = state\n const handleDown = (\n state: UseMouseState,\n action:\n | TouchdownAction<T>\n | MousedownAction<T>\n | MousemoveAction<T>\n | TouchmoveAction<T>\n ): UseMouseState => {\n if (typeof window === 'undefined') return state\n const {event: e, element} = action\n let event: MouseEvent | TouchEvent['touches'][0]\n if ('touches' in e) {\n event = (e as TouchEvent).touches[0]\n } else {\n event = e\n }\n const {clientX, clientY, screenX, screenY, pageX = 0, pageY = 0} = event\n const rect = element.getBoundingClientRect()\n const x = pageX - rect.left - (window.pageXOffset || window.scrollX)\n const y = pageY - rect.top - (window.pageYOffset || window.scrollY)\n // shims a mouseleave event for touch devices\n if (\n 'touches' in e &&\n (x < 0 || y < 0 || x > rect.width || y > rect.height)\n ) {\n return {\n ...state,\n context: {\n ...state.context,\n hoverStatus: 'leave',\n touchStatus: 'end',\n },\n }\n }\n\n return {\n context: {\n ...state.context,\n hoverStatus: 'enter',\n },\n mouse: {\n ...state.mouse,\n x,\n y,\n pageX,\n pageY,\n clientX,\n clientY,\n screenX,\n screenY,\n elementWidth: rect.width,\n elementHeight: rect.height,\n isOver: true,\n isTouch: 'touches' in e,\n },\n }\n }\n\n if (action.type === 'mousemove') {\n // Bails out if touch has ended\n if (context.touchStatus === 'end') return state\n return handleDown(state, action)\n } else if (action.type === 'touchmove') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse,\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'touchdown') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'mousedown') {\n return {\n context,\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n } else if (action.type === 'mouseup') {\n return {context, mouse: {...mouse, isDown: false}}\n } else if (action.type === 'mouseleave') {\n return {\n context: {\n ...context,\n hoverStatus: 'leave',\n },\n mouse: {...mouse, isOver: false},\n }\n } else if (action.type === 'touchleave') {\n return {\n context: {...context, hoverStatus: 'leave', touchStatus: 'end'},\n mouse: {...mouse, isOver: false, isDown: false},\n }\n } else if (action.type === 'activeStatus') {\n return {\n context: {...context, activeStatus: action.value},\n mouse,\n }\n }\n\n return state\n },\n {\n mouse: initialState,\n context: initialContext,\n }\n )\n\n const onMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'mousemove', event, element})\n },\n fps,\n true\n )\n const onTouchMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'touchmove', event, element})\n },\n fps,\n true\n )\n const onLeave = useThrottleCallback(\n () => dispatch({type: 'mouseleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n const onDown = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch(\n 'touches' in event\n ? {\n type: 'touchdown',\n element,\n event: event,\n }\n : {\n type: 'mousedown',\n element,\n event: event,\n }\n )\n },\n fps,\n true\n )\n const onUp = useThrottleCallback(\n () => dispatch({type: 'mouseup'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // down events.\n false\n )\n const onTouchEnd = useThrottleCallback(\n () => dispatch({type: 'touchleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n\n useEvent(target, 'mouseenter', onMove)\n useEvent(target, 'mousemove', onMove)\n useEvent(target, 'mouseleave', onLeave)\n useEvent(target, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mouseup', onUp)\n useEvent(target, 'touchstart', onDown)\n useEvent(target, 'touchmove', onTouchMove)\n useEvent(target, 'touchend', onTouchEnd)\n useEvent(target, 'touchcancel', onTouchEnd)\n\n React.useEffect(() => {\n if (state.context.hoverStatus === 'enter') {\n if (enterDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'active'}),\n enterDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'active'})\n } else {\n if (leaveDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'inactive'}),\n leaveDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'inactive'})\n }\n }, [state.context.hoverStatus, enterDelay, leaveDelay])\n\n return state.context.activeStatus === 'active' ? state.mouse : initialState\n}\n\nconst initialState: MousePosition = {\n x: null,\n y: null,\n pageX: null,\n pageY: null,\n clientX: null,\n clientY: null,\n screenX: null,\n screenY: null,\n elementWidth: null,\n elementHeight: null,\n isOver: false,\n isDown: false,\n isTouch: false,\n}\n\nconst initialContext: UseMouseState['context'] = {\n hoverStatus: 'idle',\n touchStatus: 'idle',\n activeStatus: 'inactive',\n}\n\ninterface UseMouseState {\n mouse: MousePosition\n context: {\n hoverStatus: 'idle' | 'enter' | 'leave'\n touchStatus: 'idle' | 'start' | 'end'\n activeStatus: 'inactive' | 'active'\n }\n}\n\ntype UseMouseAction<T extends HTMLElement> =\n | MousemoveAction<T>\n | {\n type: 'activeStatus'\n value: UseMouseState['context']['activeStatus']\n }\n | {\n type: 'mouseleave'\n }\n | {\n type: 'touchleave'\n }\n | {\n type: 'mouseup'\n }\n | TouchdownAction<T>\n | MousedownAction<T>\n | TouchmoveAction<T>\n\ntype TouchdownAction<T> = {\n type: 'touchdown'\n element: T\n event: TouchEvent\n}\n\ntype MousedownAction<T> = {\n type: 'mousedown'\n element: T\n event: MouseEvent\n}\n\ntype MousemoveAction<T> = {\n type: 'mousemove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\ntype TouchmoveAction<T> = {\n type: 'touchmove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\nexport interface UseMouseOptions {\n enterDelay?: number\n leaveDelay?: number\n fps?: number\n}\n\nexport interface MousePosition {\n x: number | null\n y: number | null\n pageX: number | null\n pageY: number | null\n clientX: number | null\n clientY: number | null\n screenX: number | null\n screenY: number | null\n elementWidth: number | null\n elementHeight: number | null\n isOver: boolean\n isDown: boolean\n isTouch: boolean\n}\n\nexport default useMouse\n"],"names":["usePassiveLayoutEffect","React","document","createElement","useEvent","target","type","listener","cleanup","storedListener","storedCleanup","useLayoutEffect","current","targetEl","didUnsubscribe","args","addEventListener","removeEventListener","useLatest","storedValue","perf","performance","Date","now","useThrottleCallback","callback","fps","leading","storedCallback","ms","prev","trailingTimeout","clearTrailing","clearTimeout","deps","arguments","rightNow","call","apply","setTimeout","state","action","window","e","event","element","touches","clientX","clientY","screenX","screenY","pageX","pageY","rect","getBoundingClientRect","x","left","pageXOffset","scrollX","y","top","pageYOffset","scrollY","width","height","context","hoverStatus","touchStatus","mouse","elementWidth","elementHeight","isOver","isTouch","handleDown","nextState","isDown","activeStatus","value","useMouse","options","enterDelay","leaveDelay","initialState","initialContext","dispatch","onMove","onTouchMove","onLeave","onDown","onUp","onTouchEnd","timeout"],"mappings":"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"}

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e=e||self).useMousePosition=t(e.React)}(this,(function(e){"use strict";function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:1,configurable:1,writable:1}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);t&&(u=u.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,u)}return n}function u(e){for(var u=1;arguments.length>u;u++){var o=null!=arguments[u]?arguments[u]:{};u%2?n(Object(o),1).forEach((function(n){t(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function o(e,t,n,u){function o(){for(var e=arguments.length,t=new Array(e),n=0;e>n;n++)t[n]=arguments[n];c.current.apply(this,t)}void 0===u&&(u=r);var c=f(n),i=f(u);a((function(){var n=e&&"current"in e?e.current:e;if(n){var u=o;n.addEventListener(t,u);var r=i.current;return function(){n.removeEventListener(t,u),r()}}}),[e,t])}function r(){}function c(t,n,u){function o(){i.current=0,a()}void 0===n&&(n=30),void 0===u&&(u=0);var r=f(t),c=1e3/n,i=e.useRef(0),s=e.useRef(),a=function(){return s.current&&clearTimeout(s.current)},l=[n,u,r];return e.useEffect((function(){return o}),l),e.useCallback((function(){var e=arguments,t=v(),n=function(){i.current=t,a(),r.current.apply(null,e)},o=i.current;if(u&&0===o)return n();if(t-o>c){if(o>0)return n();i.current=t}a(),s.current=setTimeout((function(){n(),i.current=0}),c)}),l)}function i(e,t){if("undefined"==typeof window)return e;var n=t.event,o=t.element,r="touches"in n?n.touches[0]:n,c=r.clientX,i=r.clientY,s=r.screenX,a=r.screenY,f=r.pageX,l=void 0===f?0:f,v=r.pageY,p=void 0===v?0:v,d=o.getBoundingClientRect(),m=l-d.left-(window.pageXOffset||window.scrollX),h=p-d.top-(window.pageYOffset||window.scrollY);return"touches"in n&&(0>m||0>h||m>d.width||h>d.height)?u(u({},e),{},{context:u(u({},e.context),{},{hoverStatus:"leave",touchStatus:"end"})}):{context:u(u({},e.context),{},{hoverStatus:"enter"}),mouse:u(u({},e.mouse),{},{x:m,y:h,pageX:l,pageY:p,clientX:c,clientY:i,screenX:s,screenY:a,elementWidth:d.width,elementHeight:d.height,isOver:1,isTouch:"touches"in n})}}function s(e,t){var n=e.mouse,o=e.context,r=i;return"mousemove"===t.type?"end"===o.touchStatus?e:r(e,t):"touchmove"===t.type?r({context:u(u({},o),{},{touchStatus:"start"}),mouse:n},t):"touchdown"===t.type?r({context:u(u({},o),{},{touchStatus:"start"}),mouse:u(u({},n),{},{isDown:1})},t):"mousedown"===t.type?{context:o,mouse:u(u({},n),{},{isDown:1})}:"mouseup"===t.type?{context:o,mouse:u(u({},n),{},{isDown:0})}:"mouseleave"===t.type?{context:u(u({},o),{},{hoverStatus:"leave"}),mouse:u(u({},n),{},{isOver:0})}:"touchleave"===t.type?{context:u(u({},o),{},{hoverStatus:"leave",touchStatus:"end"}),mouse:u(u({},n),{},{isOver:0,isDown:0})}:"activeStatus"===t.type?{context:u(u({},o),{},{activeStatus:t.value}),mouse:n}:e}var a=e["undefined"!=typeof document&&void 0!==document.createElement?"useLayoutEffect":"useEffect"],f=function(t){var n=e.useRef(t);return n.current=t,n},l="undefined"!=typeof performance?performance:Date,v=function(){return l.now()},p={x:null,y:null,pageX:null,pageY:null,clientX:null,clientY:null,screenX:null,screenY:null,elementWidth:null,elementHeight:null,isOver:0,isDown:0,isTouch:0},d={hoverStatus:"idle",touchStatus:"idle",activeStatus:"inactive"};return function(t,n){function u(){return O({type:"activeStatus",value:"active"})}function r(){return O({type:"activeStatus",value:"inactive"})}void 0===n&&(n={});var i=n,a=i.fps,f=void 0===a?30:a,l=i.enterDelay,v=void 0===l?0:l,m=i.leaveDelay,h=void 0===m?0:m,y=e.useReducer(s,{mouse:p,context:d}),w=y[0],O=y[1],g=c((function(e){var n=t&&"current"in t?t.current:t;n&&O({type:"mousemove",event:e,element:n})}),f,1),S=c((function(e){var n=t&&"current"in t?t.current:t;n&&O({type:"touchmove",event:e,element:n})}),f,1),b=c((function(){return O({type:"mouseleave"})}),f,0),x=c((function(e){var n=t&&"current"in t?t.current:t;n&&O("touches"in e?{type:"touchdown",element:n,event:e}:{type:"mousedown",element:n,event:e})}),f,1),j=c((function(){return O({type:"mouseup"})}),f,0),D=c((function(){return O({type:"touchleave"})}),f,0);return o(t,"mouseenter",g),o(t,"mousemove",g),o(t,"mouseleave",b),o(t,"mousedown",x),o("undefined"!=typeof window?window:null,"mousedown",x),o("undefined"!=typeof window?window:null,"mouseup",j),o(t,"touchstart",x),o(t,"touchmove",S),o(t,"touchend",D),o(t,"touchcancel",D),e.useEffect((function(){if("enter"===w.context.hoverStatus){if(v){var e=setTimeout(u,v);return function(){return clearTimeout(e)}}O({type:"activeStatus",value:"active"})}else{if(h){var t=setTimeout(r,h);return function(){return clearTimeout(t)}}O({type:"activeStatus",value:"inactive"})}}),[w.context.hoverStatus,v,h]),"active"===w.context.activeStatus?w.mouse:p}}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e=e||self).useMousePosition=t(e.React)}(this,(function(e){"use strict";function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:1,configurable:1,writable:1}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);t&&(u=u.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,u)}return n}function u(e){for(var u=1;arguments.length>u;u++){var o=null!=arguments[u]?arguments[u]:{};u%2?n(Object(o),1).forEach((function(n){t(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function o(t,n,u,o){var r=e.useRef(u),c=e.useRef(o);s((function(){r.current=u,c.current=o})),s((function(){function e(){if(!o){for(var e=arguments.length,t=new Array(e),n=0;e>n;n++)t[n]=arguments[n];r.current(this,t)}}var u=t&&"current"in t?t.current:t;if(u){var o=0;u.addEventListener(n,e);var i=c.current;return function(){o=1,u.removeEventListener(n,e),i&&i()}}}),[t,n])}function r(t,n,u){function o(){a.current=0,v()}void 0===n&&(n=30),void 0===u&&(u=0);var r,c,i=(r=t,(c=e.useRef(r)).current=r,c),s=1e3/n,a=e.useRef(0),l=e.useRef(),v=function(){return l.current&&clearTimeout(l.current)},d=[n,u,i];return e.useEffect((function(){return o}),d),e.useCallback((function(){var e=arguments,t=f(),n=function(){a.current=t,v(),i.current.apply(null,e)},o=a.current;if(u&&0===o)return n();if(t-o>s){if(o>0)return n();a.current=t}v(),l.current=setTimeout((function(){n(),a.current=0}),s)}),d)}function c(e,t){if("undefined"==typeof window)return e;var n=t.event,o=t.element,r="touches"in n?n.touches[0]:n,c=r.clientX,i=r.clientY,s=r.screenX,a=r.screenY,f=r.pageX,l=void 0===f?0:f,v=r.pageY,d=void 0===v?0:v,p=o.getBoundingClientRect(),m=l-p.left-(window.pageXOffset||window.scrollX),h=d-p.top-(window.pageYOffset||window.scrollY);return"touches"in n&&(0>m||0>h||m>p.width||h>p.height)?u(u({},e),{},{context:u(u({},e.context),{},{hoverStatus:"leave",touchStatus:"end"})}):{context:u(u({},e.context),{},{hoverStatus:"enter"}),mouse:u(u({},e.mouse),{},{x:m,y:h,pageX:l,pageY:d,clientX:c,clientY:i,screenX:s,screenY:a,elementWidth:p.width,elementHeight:p.height,isOver:1,isTouch:"touches"in n})}}function i(e,t){var n=e.mouse,o=e.context,r=c;return"mousemove"===t.type?"end"===o.touchStatus?e:r(e,t):"touchmove"===t.type?r({context:u(u({},o),{},{touchStatus:"start"}),mouse:n},t):"touchdown"===t.type?r({context:u(u({},o),{},{touchStatus:"start"}),mouse:u(u({},n),{},{isDown:1})},t):"mousedown"===t.type?{context:o,mouse:u(u({},n),{},{isDown:1})}:"mouseup"===t.type?{context:o,mouse:u(u({},n),{},{isDown:0})}:"mouseleave"===t.type?{context:u(u({},o),{},{hoverStatus:"leave"}),mouse:u(u({},n),{},{isOver:0})}:"touchleave"===t.type?{context:u(u({},o),{},{hoverStatus:"leave",touchStatus:"end"}),mouse:u(u({},n),{},{isOver:0,isDown:0})}:"activeStatus"===t.type?{context:u(u({},o),{},{activeStatus:t.value}),mouse:n}:e}var s=("default"in e?e.default:e)["undefined"!=typeof document&&void 0!==document.createElement?"useLayoutEffect":"useEffect"],a="undefined"!=typeof performance?performance:Date,f=function(){return a.now()},l={x:null,y:null,pageX:null,pageY:null,clientX:null,clientY:null,screenX:null,screenY:null,elementWidth:null,elementHeight:null,isOver:0,isDown:0,isTouch:0},v={hoverStatus:"idle",touchStatus:"idle",activeStatus:"inactive"};return function(t,n){function u(){return O({type:"activeStatus",value:"active"})}function c(){return O({type:"activeStatus",value:"inactive"})}void 0===n&&(n={});var s=n,a=s.fps,f=void 0===a?30:a,d=s.enterDelay,p=void 0===d?0:d,m=s.leaveDelay,h=void 0===m?0:m,y=e.useReducer(i,{mouse:l,context:v}),w=y[0],O=y[1],g=r((function(e){var n=t&&"current"in t?t.current:t;n&&O({type:"mousemove",event:e,element:n})}),f,1),S=r((function(e){var n=t&&"current"in t?t.current:t;n&&O({type:"touchmove",event:e,element:n})}),f,1),b=r((function(){return O({type:"mouseleave"})}),f,0),x=r((function(e){var n=t&&"current"in t?t.current:t;n&&O("touches"in e?{type:"touchdown",element:n,event:e}:{type:"mousedown",element:n,event:e})}),f,1),j=r((function(){return O({type:"mouseup"})}),f,0),D=r((function(){return O({type:"touchleave"})}),f,0);return o(t,"mouseenter",g),o(t,"mousemove",g),o(t,"mouseleave",b),o(t,"mousedown",x),o("undefined"!=typeof window?window:null,"mousedown",x),o("undefined"!=typeof window?window:null,"mouseup",j),o(t,"touchstart",x),o(t,"touchmove",S),o(t,"touchend",D),o(t,"touchcancel",D),e.useEffect((function(){if("enter"===w.context.hoverStatus){if(p){var e=setTimeout(u,p);return function(){return clearTimeout(e)}}O({type:"activeStatus",value:"active"})}else{if(h){var t=setTimeout(c,h);return function(){return clearTimeout(t)}}O({type:"activeStatus",value:"inactive"})}}),[w.context.hoverStatus,p,h]),"active"===w.context.activeStatus?w.mouse:l}}));
//# sourceMappingURL=use-mouse-position.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"use-mouse-position.js","sources":["../../node_modules/@react-hook/event/src/index.tsx","../../node_modules/@react-hook/throttle/src/index.tsx","../../src/index.tsx","../../node_modules/@react-hook/passive-layout-effect/src/index.tsx","../../node_modules/@react-hook/latest/src/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport useLayoutEffect from '@react-hook/passive-layout-effect'\nimport useLatest from '@react-hook/latest'\n\nfunction useEvent<\n T extends Window = Window,\n K extends keyof WindowEventMap = keyof WindowEventMap\n>(\n target: Window | null,\n type: K,\n listener: WindowEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends Document = Document,\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n>(\n target: Document | null,\n type: K,\n listener: DocumentEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends HTMLElement = HTMLElement,\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n>(\n target: React.RefObject<T> | T | null,\n type: K,\n listener: ElementEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent(\n target: any,\n type: any,\n listener: any,\n cleanup: any = noop\n): void {\n const storedListener = useLatest(listener)\n const storedCleanup = useLatest(cleanup)\n\n useLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target\n if (!targetEl) return\n\n const listener = function (this: any, ...args: any[]) {\n storedListener.current.apply(this, args)\n }\n\n targetEl.addEventListener(type, listener)\n const cleanup = storedCleanup.current\n\n return () => {\n targetEl.removeEventListener(type, listener)\n cleanup()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type])\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nexport type ElementEventListener<\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n> = (this: HTMLElement, ev: HTMLElementEventMap[K]) => any\n\nexport type DocumentEventListener<\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n> = (this: Document, ev: DocumentEventMap[K]) => any\n\nexport type WindowEventListener<\n K extends keyof WindowEventMap = keyof WindowEventMap\n> = (this: Document, ev: WindowEventMap[K]) => any\n\nexport default useEvent\n","import * as React from 'react'\nimport useLatest from '@react-hook/latest'\n\nconst perf = typeof performance !== 'undefined' ? performance : Date\nconst now = () => perf.now()\n\nexport function useThrottleCallback<CallbackArguments extends any[]>(\n callback: (...args: CallbackArguments) => void,\n fps = 30,\n leading = false\n): (...args: CallbackArguments) => void {\n const storedCallback = useLatest(callback)\n const ms = 1000 / fps\n const prev = React.useRef(0)\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout>>()\n const clearTrailing = () =>\n trailingTimeout.current && clearTimeout(trailingTimeout.current)\n const deps = [fps, leading, storedCallback]\n\n // Reset any time the deps change\n React.useEffect(\n () => () => {\n prev.current = 0\n clearTrailing()\n },\n deps\n )\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const rightNow = now()\n const call = () => {\n prev.current = rightNow\n clearTrailing()\n storedCallback.current.apply(null, args as any)\n }\n const current = prev.current\n // leading\n if (leading && current === 0) return call()\n // body\n if (rightNow - current > ms) {\n if (current > 0) return call()\n prev.current = rightNow\n }\n // trailing\n clearTrailing()\n trailingTimeout.current = setTimeout(() => {\n call()\n prev.current = 0\n }, ms)\n }, deps)\n}\n\nexport function useThrottle<State>(\n initialState: State | (() => State),\n fps?: number,\n leading?: boolean\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const state = React.useState<State>(initialState)\n return [state[0], useThrottleCallback(state[1], fps, leading)]\n}\n","import * as React from 'react'\nimport useEvent from '@react-hook/event'\nimport {useThrottleCallback} from '@react-hook/throttle'\n\nfunction useMouse<T extends HTMLElement = HTMLElement>(\n target: React.RefObject<T> | T | null,\n options: UseMouseOptions = {}\n): MousePosition {\n const {fps = 30, enterDelay = 0, leaveDelay = 0} = options\n const [state, dispatch] = React.useReducer<\n React.Reducer<UseMouseState, UseMouseAction<T>>\n >(\n (state, action): UseMouseState => {\n const {mouse, context} = state\n const handleDown = (\n state: UseMouseState,\n action:\n | TouchdownAction<T>\n | MousedownAction<T>\n | MousemoveAction<T>\n | TouchmoveAction<T>\n ): UseMouseState => {\n if (typeof window === 'undefined') return state\n const {event: e, element} = action\n let event: MouseEvent | TouchEvent['touches'][0]\n if ('touches' in e) {\n event = (e as TouchEvent).touches[0]\n } else {\n event = e\n }\n const {clientX, clientY, screenX, screenY, pageX = 0, pageY = 0} = event\n const rect = element.getBoundingClientRect()\n const x = pageX - rect.left - (window.pageXOffset || window.scrollX)\n const y = pageY - rect.top - (window.pageYOffset || window.scrollY)\n // shims a mouseleave event for touch devices\n if (\n 'touches' in e &&\n (x < 0 || y < 0 || x > rect.width || y > rect.height)\n ) {\n return {\n ...state,\n context: {\n ...state.context,\n hoverStatus: 'leave',\n touchStatus: 'end',\n },\n }\n }\n\n return {\n context: {\n ...state.context,\n hoverStatus: 'enter',\n },\n mouse: {\n ...state.mouse,\n x,\n y,\n pageX,\n pageY,\n clientX,\n clientY,\n screenX,\n screenY,\n elementWidth: rect.width,\n elementHeight: rect.height,\n isOver: true,\n isTouch: 'touches' in e,\n },\n }\n }\n\n if (action.type === 'mousemove') {\n // Bails out if touch has ended\n if (context.touchStatus === 'end') return state\n return handleDown(state, action)\n } else if (action.type === 'touchmove') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse,\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'touchdown') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'mousedown') {\n return {\n context,\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n } else if (action.type === 'mouseup') {\n return {context, mouse: {...mouse, isDown: false}}\n } else if (action.type === 'mouseleave') {\n return {\n context: {\n ...context,\n hoverStatus: 'leave',\n },\n mouse: {...mouse, isOver: false},\n }\n } else if (action.type === 'touchleave') {\n return {\n context: {...context, hoverStatus: 'leave', touchStatus: 'end'},\n mouse: {...mouse, isOver: false, isDown: false},\n }\n } else if (action.type === 'activeStatus') {\n return {\n context: {...context, activeStatus: action.value},\n mouse,\n }\n }\n\n return state\n },\n {\n mouse: initialState,\n context: initialContext,\n }\n )\n\n const onMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'mousemove', event, element})\n },\n fps,\n true\n )\n const onTouchMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'touchmove', event, element})\n },\n fps,\n true\n )\n const onLeave = useThrottleCallback(\n () => dispatch({type: 'mouseleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n const onDown = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch(\n 'touches' in event\n ? {\n type: 'touchdown',\n element,\n event: event,\n }\n : {\n type: 'mousedown',\n element,\n event: event,\n }\n )\n },\n fps,\n true\n )\n const onUp = useThrottleCallback(\n () => dispatch({type: 'mouseup'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // down events.\n false\n )\n const onTouchEnd = useThrottleCallback(\n () => dispatch({type: 'touchleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n\n useEvent(target, 'mouseenter', onMove)\n useEvent(target, 'mousemove', onMove)\n useEvent(target, 'mouseleave', onLeave)\n useEvent(target, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mouseup', onUp)\n useEvent(target, 'touchstart', onDown)\n useEvent(target, 'touchmove', onTouchMove)\n useEvent(target, 'touchend', onTouchEnd)\n useEvent(target, 'touchcancel', onTouchEnd)\n\n React.useEffect(() => {\n if (state.context.hoverStatus === 'enter') {\n if (enterDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'active'}),\n enterDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'active'})\n } else {\n if (leaveDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'inactive'}),\n leaveDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'inactive'})\n }\n }, [state.context.hoverStatus, enterDelay, leaveDelay])\n\n return state.context.activeStatus === 'active' ? state.mouse : initialState\n}\n\nconst initialState: MousePosition = {\n x: null,\n y: null,\n pageX: null,\n pageY: null,\n clientX: null,\n clientY: null,\n screenX: null,\n screenY: null,\n elementWidth: null,\n elementHeight: null,\n isOver: false,\n isDown: false,\n isTouch: false,\n}\n\nconst initialContext: UseMouseState['context'] = {\n hoverStatus: 'idle',\n touchStatus: 'idle',\n activeStatus: 'inactive',\n}\n\ninterface UseMouseState {\n mouse: MousePosition\n context: {\n hoverStatus: 'idle' | 'enter' | 'leave'\n touchStatus: 'idle' | 'start' | 'end'\n activeStatus: 'inactive' | 'active'\n }\n}\n\ntype UseMouseAction<T extends HTMLElement> =\n | MousemoveAction<T>\n | {\n type: 'activeStatus'\n value: UseMouseState['context']['activeStatus']\n }\n | {\n type: 'mouseleave'\n }\n | {\n type: 'touchleave'\n }\n | {\n type: 'mouseup'\n }\n | TouchdownAction<T>\n | MousedownAction<T>\n | TouchmoveAction<T>\n\ntype TouchdownAction<T> = {\n type: 'touchdown'\n element: T\n event: TouchEvent\n}\n\ntype MousedownAction<T> = {\n type: 'mousedown'\n element: T\n event: MouseEvent\n}\n\ntype MousemoveAction<T> = {\n type: 'mousemove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\ntype TouchmoveAction<T> = {\n type: 'touchmove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\nexport interface UseMouseOptions {\n enterDelay?: number\n leaveDelay?: number\n fps?: number\n}\n\nexport interface MousePosition {\n x: number | null\n y: number | null\n pageX: number | null\n pageY: number | null\n clientX: number | null\n clientY: number | null\n screenX: number | null\n screenY: number | null\n elementWidth: number | null\n elementHeight: number | null\n isOver: boolean\n isDown: boolean\n isTouch: boolean\n}\n\nexport default useMouse\n","import * as React from 'react'\n\nconst usePassiveLayoutEffect =\n React[\n typeof document !== 'undefined' && document.createElement !== void 0\n ? 'useLayoutEffect'\n : 'useEffect'\n ]\n\nexport default usePassiveLayoutEffect\n","import * as React from 'react'\n\nconst useLatest = <T extends any>(current: T) => {\n const storedValue = React.useRef(current)\n storedValue.current = current\n return storedValue\n}\n\nexport default useLatest\n"],"names":["useEvent","target","type","listener","cleanup","args","storedListener","current","apply","this","noop","useLatest","storedCleanup","useLayoutEffect","targetEl","addEventListener","removeEventListener","useThrottleCallback","callback","fps","leading","prev","clearTrailing","storedCallback","ms","React","trailingTimeout","clearTimeout","deps","arguments","rightNow","now","call","setTimeout","state","action","window","e","event","element","touches","clientX","clientY","screenX","screenY","pageX","pageY","rect","getBoundingClientRect","x","left","pageXOffset","scrollX","y","top","pageYOffset","scrollY","width","height","context","hoverStatus","touchStatus","mouse","elementWidth","elementHeight","isOver","isTouch","handleDown","isDown","activeStatus","value","usePassiveLayoutEffect","document","createElement","storedValue","perf","performance","Date","initialState","initialContext","options","dispatch","enterDelay","leaveDelay","onMove","onTouchMove","onLeave","onDown","onUp","onTouchEnd","timeout"],"mappings":"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"}
{"version":3,"file":"use-mouse-position.js","sources":["../../node_modules/@react-hook/event/src/index.tsx","../../node_modules/@react-hook/throttle/src/index.tsx","../../node_modules/@react-hook/latest/src/index.tsx","../../src/index.tsx","../../node_modules/@react-hook/passive-layout-effect/src/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport useLayoutEffect from '@react-hook/passive-layout-effect'\n\nfunction useEvent<\n T extends Window = Window,\n K extends keyof WindowEventMap = keyof WindowEventMap\n>(\n target: Window | null,\n type: K,\n listener: WindowEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends Document = Document,\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n>(\n target: Document | null,\n type: K,\n listener: DocumentEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent<\n T extends HTMLElement = HTMLElement,\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n>(\n target: React.RefObject<T> | T | null,\n type: K,\n listener: ElementEventListener<K>,\n cleanup?: (...args: any[]) => void\n): void\nfunction useEvent(target: any, type: any, listener: any, cleanup: any): void {\n const storedListener = React.useRef(listener)\n const storedCleanup = React.useRef(cleanup)\n\n useLayoutEffect(() => {\n storedListener.current = listener\n storedCleanup.current = cleanup\n })\n\n useLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target\n if (!targetEl) return\n\n let didUnsubscribe = 0\n function listener(this: any, ...args: any[]) {\n if (didUnsubscribe) return\n storedListener.current(this, args)\n }\n\n targetEl.addEventListener(type, listener)\n const cleanup = storedCleanup.current\n\n return () => {\n didUnsubscribe = 1\n targetEl.removeEventListener(type, listener)\n cleanup && cleanup()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type])\n}\n\nexport type ElementEventListener<\n K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap\n> = (this: HTMLElement, ev: HTMLElementEventMap[K]) => any\n\nexport type DocumentEventListener<\n K extends keyof DocumentEventMap = keyof DocumentEventMap\n> = (this: Document, ev: DocumentEventMap[K]) => any\n\nexport type WindowEventListener<\n K extends keyof WindowEventMap = keyof WindowEventMap\n> = (this: Document, ev: WindowEventMap[K]) => any\n\nexport default useEvent\n","import * as React from 'react'\nimport useLatest from '@react-hook/latest'\n\nconst perf = typeof performance !== 'undefined' ? performance : Date\nconst now = () => perf.now()\n\nexport function useThrottleCallback<CallbackArguments extends any[]>(\n callback: (...args: CallbackArguments) => void,\n fps = 30,\n leading = false\n): (...args: CallbackArguments) => void {\n const storedCallback = useLatest(callback)\n const ms = 1000 / fps\n const prev = React.useRef(0)\n const trailingTimeout = React.useRef<ReturnType<typeof setTimeout>>()\n const clearTrailing = () =>\n trailingTimeout.current && clearTimeout(trailingTimeout.current)\n const deps = [fps, leading, storedCallback]\n\n // Reset any time the deps change\n React.useEffect(\n () => () => {\n prev.current = 0\n clearTrailing()\n },\n deps\n )\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const rightNow = now()\n const call = () => {\n prev.current = rightNow\n clearTrailing()\n storedCallback.current.apply(null, args as any)\n }\n const current = prev.current\n // leading\n if (leading && current === 0) return call()\n // body\n if (rightNow - current > ms) {\n if (current > 0) return call()\n prev.current = rightNow\n }\n // trailing\n clearTrailing()\n trailingTimeout.current = setTimeout(() => {\n call()\n prev.current = 0\n }, ms)\n }, deps)\n}\n\nexport function useThrottle<State>(\n initialState: State | (() => State),\n fps?: number,\n leading?: boolean\n): [State, React.Dispatch<React.SetStateAction<State>>] {\n const state = React.useState<State>(initialState)\n return [state[0], useThrottleCallback(state[1], fps, leading)]\n}\n","import * as React from 'react'\n\nconst useLatest = <T extends any>(current: T) => {\n const storedValue = React.useRef(current)\n storedValue.current = current\n return storedValue\n}\n\nexport default useLatest\n","import * as React from 'react'\nimport useEvent from '@react-hook/event'\nimport {useThrottleCallback} from '@react-hook/throttle'\n\nfunction useMouse<T extends HTMLElement = HTMLElement>(\n target: React.RefObject<T> | T | null,\n options: UseMouseOptions = {}\n): MousePosition {\n const {fps = 30, enterDelay = 0, leaveDelay = 0} = options\n const [state, dispatch] = React.useReducer<\n React.Reducer<UseMouseState, UseMouseAction<T>>\n >(\n (state, action): UseMouseState => {\n const {mouse, context} = state\n const handleDown = (\n state: UseMouseState,\n action:\n | TouchdownAction<T>\n | MousedownAction<T>\n | MousemoveAction<T>\n | TouchmoveAction<T>\n ): UseMouseState => {\n if (typeof window === 'undefined') return state\n const {event: e, element} = action\n let event: MouseEvent | TouchEvent['touches'][0]\n if ('touches' in e) {\n event = (e as TouchEvent).touches[0]\n } else {\n event = e\n }\n const {clientX, clientY, screenX, screenY, pageX = 0, pageY = 0} = event\n const rect = element.getBoundingClientRect()\n const x = pageX - rect.left - (window.pageXOffset || window.scrollX)\n const y = pageY - rect.top - (window.pageYOffset || window.scrollY)\n // shims a mouseleave event for touch devices\n if (\n 'touches' in e &&\n (x < 0 || y < 0 || x > rect.width || y > rect.height)\n ) {\n return {\n ...state,\n context: {\n ...state.context,\n hoverStatus: 'leave',\n touchStatus: 'end',\n },\n }\n }\n\n return {\n context: {\n ...state.context,\n hoverStatus: 'enter',\n },\n mouse: {\n ...state.mouse,\n x,\n y,\n pageX,\n pageY,\n clientX,\n clientY,\n screenX,\n screenY,\n elementWidth: rect.width,\n elementHeight: rect.height,\n isOver: true,\n isTouch: 'touches' in e,\n },\n }\n }\n\n if (action.type === 'mousemove') {\n // Bails out if touch has ended\n if (context.touchStatus === 'end') return state\n return handleDown(state, action)\n } else if (action.type === 'touchmove') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse,\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'touchdown') {\n const nextState: UseMouseState = {\n context: {\n ...context,\n touchStatus: 'start',\n },\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n\n return handleDown(nextState, action)\n } else if (action.type === 'mousedown') {\n return {\n context,\n mouse: {\n ...mouse,\n isDown: true,\n },\n }\n } else if (action.type === 'mouseup') {\n return {context, mouse: {...mouse, isDown: false}}\n } else if (action.type === 'mouseleave') {\n return {\n context: {\n ...context,\n hoverStatus: 'leave',\n },\n mouse: {...mouse, isOver: false},\n }\n } else if (action.type === 'touchleave') {\n return {\n context: {...context, hoverStatus: 'leave', touchStatus: 'end'},\n mouse: {...mouse, isOver: false, isDown: false},\n }\n } else if (action.type === 'activeStatus') {\n return {\n context: {...context, activeStatus: action.value},\n mouse,\n }\n }\n\n return state\n },\n {\n mouse: initialState,\n context: initialContext,\n }\n )\n\n const onMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'mousemove', event, element})\n },\n fps,\n true\n )\n const onTouchMove = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch({type: 'touchmove', event, element})\n },\n fps,\n true\n )\n const onLeave = useThrottleCallback(\n () => dispatch({type: 'mouseleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n const onDown = useThrottleCallback(\n (event: MouseEvent | TouchEvent) => {\n const element = target && 'current' in target ? target.current : target\n if (!element) return\n dispatch(\n 'touches' in event\n ? {\n type: 'touchdown',\n element,\n event: event,\n }\n : {\n type: 'mousedown',\n element,\n event: event,\n }\n )\n },\n fps,\n true\n )\n const onUp = useThrottleCallback(\n () => dispatch({type: 'mouseup'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // down events.\n false\n )\n const onTouchEnd = useThrottleCallback(\n () => dispatch({type: 'touchleave'}),\n fps,\n // This has to be false because we always want this callback to fire after any\n // move events.\n false\n )\n\n useEvent(target, 'mouseenter', onMove)\n useEvent(target, 'mousemove', onMove)\n useEvent(target, 'mouseleave', onLeave)\n useEvent(target, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mousedown', onDown)\n useEvent(typeof window !== 'undefined' ? window : null, 'mouseup', onUp)\n useEvent(target, 'touchstart', onDown)\n useEvent(target, 'touchmove', onTouchMove)\n useEvent(target, 'touchend', onTouchEnd)\n useEvent(target, 'touchcancel', onTouchEnd)\n\n React.useEffect(() => {\n if (state.context.hoverStatus === 'enter') {\n if (enterDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'active'}),\n enterDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'active'})\n } else {\n if (leaveDelay) {\n const timeout = setTimeout(\n () => dispatch({type: 'activeStatus', value: 'inactive'}),\n leaveDelay\n )\n return () => clearTimeout(timeout)\n }\n\n dispatch({type: 'activeStatus', value: 'inactive'})\n }\n }, [state.context.hoverStatus, enterDelay, leaveDelay])\n\n return state.context.activeStatus === 'active' ? state.mouse : initialState\n}\n\nconst initialState: MousePosition = {\n x: null,\n y: null,\n pageX: null,\n pageY: null,\n clientX: null,\n clientY: null,\n screenX: null,\n screenY: null,\n elementWidth: null,\n elementHeight: null,\n isOver: false,\n isDown: false,\n isTouch: false,\n}\n\nconst initialContext: UseMouseState['context'] = {\n hoverStatus: 'idle',\n touchStatus: 'idle',\n activeStatus: 'inactive',\n}\n\ninterface UseMouseState {\n mouse: MousePosition\n context: {\n hoverStatus: 'idle' | 'enter' | 'leave'\n touchStatus: 'idle' | 'start' | 'end'\n activeStatus: 'inactive' | 'active'\n }\n}\n\ntype UseMouseAction<T extends HTMLElement> =\n | MousemoveAction<T>\n | {\n type: 'activeStatus'\n value: UseMouseState['context']['activeStatus']\n }\n | {\n type: 'mouseleave'\n }\n | {\n type: 'touchleave'\n }\n | {\n type: 'mouseup'\n }\n | TouchdownAction<T>\n | MousedownAction<T>\n | TouchmoveAction<T>\n\ntype TouchdownAction<T> = {\n type: 'touchdown'\n element: T\n event: TouchEvent\n}\n\ntype MousedownAction<T> = {\n type: 'mousedown'\n element: T\n event: MouseEvent\n}\n\ntype MousemoveAction<T> = {\n type: 'mousemove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\ntype TouchmoveAction<T> = {\n type: 'touchmove'\n element: T\n event: MouseEvent | TouchEvent\n}\n\nexport interface UseMouseOptions {\n enterDelay?: number\n leaveDelay?: number\n fps?: number\n}\n\nexport interface MousePosition {\n x: number | null\n y: number | null\n pageX: number | null\n pageY: number | null\n clientX: number | null\n clientY: number | null\n screenX: number | null\n screenY: number | null\n elementWidth: number | null\n elementHeight: number | null\n isOver: boolean\n isDown: boolean\n isTouch: boolean\n}\n\nexport default useMouse\n","import React from 'react'\n\nconst usePassiveLayoutEffect =\n React[\n typeof document !== 'undefined' && document.createElement !== void 0\n ? 'useLayoutEffect'\n : 'useEffect'\n ]\n\nexport default usePassiveLayoutEffect\n"],"names":["useEvent","target","type","listener","cleanup","storedListener","React","storedCleanup","useLayoutEffect","current","didUnsubscribe","args","this","targetEl","addEventListener","removeEventListener","useThrottleCallback","callback","fps","leading","prev","clearTrailing","storedValue","storedCallback","ms","trailingTimeout","clearTimeout","deps","arguments","rightNow","now","call","apply","setTimeout","state","action","window","e","event","element","touches","clientX","clientY","screenX","screenY","pageX","pageY","rect","getBoundingClientRect","x","left","pageXOffset","scrollX","y","top","pageYOffset","scrollY","width","height","context","hoverStatus","touchStatus","mouse","elementWidth","elementHeight","isOver","isTouch","handleDown","isDown","activeStatus","value","usePassiveLayoutEffect","document","createElement","perf","performance","Date","initialState","initialContext","options","dispatch","enterDelay","leaveDelay","onMove","onTouchMove","onLeave","onDown","onUp","onTouchEnd","timeout"],"mappings":"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"}
{
"name": "@react-hook/mouse-position",
"version": "4.1.1",
"version": "4.1.2",
"homepage": "https://github.com/jaredLunde/react-hook/tree/master/packages/mouse-position#readme",

@@ -132,3 +132,3 @@ "repository": "github:jaredLunde/react-hook",

"dependencies": {
"@react-hook/event": "^1.2.1",
"@react-hook/event": "^1.2.5",
"@react-hook/throttle": "^2.2.0"

@@ -135,0 +135,0 @@ },