diff --git a/dist/README.md b/dist/README.md index ef2fc07..d87039d 100644 --- a/dist/README.md +++ b/dist/README.md @@ -11,7 +11,7 @@

-react-use-hoverintent is a react hook which allows you to use classic hoverintent behaviour in modern, react way. +react-use-hoverintent is a react hook which allows you to use classic hoverintent behavior in modern, react way. "hoverIntent is a plug-in that attempts to determine the user's intent... like a crystal ball, only with mouse movement! It is similar to jQuery's hover method. However, instead of calling the handlerIn function immediately, hoverIntent waits until the user's mouse slows down enough before making the call." @@ -52,20 +52,20 @@ Default `interval: 100` Basic usage ```javascript -import React from 'react'; -import { useHoverIntent } from 'react-use-hoverintent'; +import React from "react"; +import { useHoverIntent } from "react-use-hoverintent"; export const MyFunctionalComponent = (props) => { const [isHovering, ref] = useHoverIntent(); - return
; + return
; }; ``` With options ```javascript -import React from 'react'; -import { useHoverIntent } from 'react-use-hoverintent'; +import React from "react"; +import { useHoverIntent } from "react-use-hoverintent"; export const MyFunctionalComponent = (props) => { const [isHovering, ref] = useHoverIntent({ @@ -73,19 +73,19 @@ export const MyFunctionalComponent = (props) => { sensitivity: 10, interval: 200, }); - return
; + return
; }; ``` With ForwardRef ```js -import React from 'react'; -import { useHoverIntent } from 'react-use-hoverintent'; +import React from "react"; +import { useHoverIntent } from "react-use-hoverintent"; export const MyFunctionalComponent = React.forwardRef((props, ref) => { const [isHovering, intentRef] = useHoverIntent({ ref }); - return
; + return
; }); ``` @@ -94,15 +94,15 @@ With Custom UI lib Check if they have `innerRef` prop or forwarded ref ```javascript -import React from 'react'; -import { useHoverIntent } from 'react-use-hoverintent'; +import React from "react"; +import { useHoverIntent } from "react-use-hoverintent"; export const MyFunctionalComponent = (props) => { const [isHovering, intentRef] = useHoverIntent(); return ( ); }; diff --git a/dist/index.d.ts b/dist/index.d.ts index e291080..4db2955 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,9 +1,9 @@ -/// +import { Dispatch, SetStateAction } from "react"; interface optionType { ref?: React.Ref; sensitivity?: number; interval?: number; timeout?: number; } -export declare function useHoverIntent(options?: optionType): [boolean, React.RefObject]; +export declare const useHoverIntent: (options?: optionType | undefined) => [boolean, Dispatch>, import("react").RefObject]; export {}; diff --git a/dist/index.js b/dist/index.js index 8e72ed6..5e56c8a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.useHoverIntent = useHoverIntent; +exports.useHoverIntent = void 0; var _react = require("react"); @@ -19,7 +19,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -function useHoverIntent(options) { +var useHoverIntent = function useHoverIntent(options) { var _ref = options !== null && options !== void 0 ? options : {}, ref = _ref.ref, _ref$sensitivity = _ref.sensitivity, @@ -77,7 +77,7 @@ function useHoverIntent(options) { } if (intentRef.current) { - intentRef.current.removeEventListener('mousemove', tracker, false); + intentRef.current.removeEventListener("mousemove", tracker, false); } if (!isHovering) { @@ -85,7 +85,7 @@ function useHoverIntent(options) { pY = e.clientY; if (intentRef.current) { - intentRef.current.addEventListener('mousemove', tracker, false); + intentRef.current.addEventListener("mousemove", tracker, false); } timer = window.setTimeout(function () { @@ -100,7 +100,7 @@ function useHoverIntent(options) { } if (intentRef.current) { - intentRef.current.removeEventListener('mousemove', tracker, false); + intentRef.current.removeEventListener("mousemove", tracker, false); } if (isHovering) { @@ -114,8 +114,8 @@ function useHoverIntent(options) { var currentRef = intentRef.current; if (currentRef) { - currentRef.addEventListener('mouseover', dispatchOver, false); - currentRef.addEventListener('mouseout', dispatchOut, false); + currentRef.addEventListener("mouseover", dispatchOver, false); + currentRef.addEventListener("mouseout", dispatchOut, false); } return function () { @@ -124,14 +124,16 @@ function useHoverIntent(options) { } if (currentRef) { - currentRef.removeEventListener('mouseover', dispatchOver, false); - currentRef.removeEventListener('mouseout', dispatchOut, false); + currentRef.removeEventListener("mouseover", dispatchOver, false); + currentRef.removeEventListener("mouseout", dispatchOut, false); } }; }); (0, _react.useImperativeHandle)(ref, function () { return intentRef.current; }, [intentRef]); - return [isHovering, intentRef]; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJ1c2VIb3ZlckludGVudCIsIm9wdGlvbnMiLCJyZWYiLCJzZW5zaXRpdml0eSIsImludGVydmFsIiwidGltZW91dCIsImludGVudFJlZiIsImlzSG92ZXJpbmciLCJzZXRJc0hvdmVyaW5nIiwieCIsInkiLCJwWCIsInBZIiwidGltZXIiLCJkZWxheSIsImUiLCJjbGVhclRpbWVvdXQiLCJ0cmFja2VyIiwiY2xpZW50WCIsImNsaWVudFkiLCJjb21wYXJlIiwiTWF0aCIsImFicyIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJkaXNwYXRjaE92ZXIiLCJjdXJyZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNwYXRjaE91dCIsImN1cnJlbnRSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFTTyxTQUFTQSxjQUFULENBQ0xDLE9BREssRUFFd0M7QUFDN0MsYUFBOERBLE9BQTlELGFBQThEQSxPQUE5RCxjQUE4REEsT0FBOUQsR0FBeUUsRUFBekU7QUFBQSxNQUFRQyxHQUFSLFFBQVFBLEdBQVI7QUFBQSw4QkFBYUMsV0FBYjtBQUFBLE1BQWFBLFdBQWIsaUNBQTJCLENBQTNCO0FBQUEsMkJBQThCQyxRQUE5QjtBQUFBLE1BQThCQSxRQUE5Qiw4QkFBeUMsR0FBekM7QUFBQSwwQkFBOENDLE9BQTlDO0FBQUEsTUFBOENBLE9BQTlDLDZCQUF3RCxDQUF4RDs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsbUJBQXdCLElBQXhCLENBQWxCOztBQUNBLGtCQUFvQyxxQkFBUyxLQUFULENBQXBDO0FBQUE7QUFBQSxNQUFPQyxVQUFQO0FBQUEsTUFBbUJDLGFBQW5COztBQUVBLE1BQUlDLENBQUMsR0FBRyxDQUFSO0FBQUEsTUFDRUMsQ0FBQyxHQUFHLENBRE47QUFBQSxNQUVFQyxFQUFFLEdBQUcsQ0FGUDtBQUFBLE1BR0VDLEVBQUUsR0FBRyxDQUhQO0FB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SUksVUFBSixFQUFnQjtBQUNkQSxNQUFBQSxVQUFVLENBQUNGLGdCQUFYLENBQTRCLFdBQTVCLEVBQXlDSCxZQUF6QyxFQUF1RCxLQUF2RDtBQUNBSyxNQUFBQSxVQUFVLENBQUNGLGdCQUFYLENBQTRCLFVBQTVCLEVBQXdDQyxXQUF4QyxFQUFxRCxLQUFyRDtBQUNEOztBQUVELFdBQU8sWUFBTTtBQUNYLFVBQUloQixLQUFKLEVBQVc7QUFDVEcsUUFBQUEsWUFBWSxDQUFDSCxLQUFELENBQVo7QUFDRDs7QUFDRCxVQUFJaUIsVUFBSixFQUFnQjtBQUNkQSxRQUFBQSxVQUFVLENBQUNILG1CQUFYLENBQStCLFdBQS9CLEVBQTRDRixZQUE1QyxFQUEwRCxLQUExRDtBQUNBSyxRQUFBQSxVQUFVLENBQUNILG1CQUFYLENBQStCLFVBQS9CLEVBQTJDRSxXQUEzQyxFQUF3RCxLQUF4RDtBQUNEO0FBQ0YsS0FSRDtBQVNELEdBaEJEO0FBa0JBLGtDQUFvQjNCLEdBQXBCLEVBQXlCO0FBQUEsV0FBTUksU0FBUyxDQUFDb0IsT0FBaEI7QUFBQSxHQUF6QixFQUFrRCxDQUFDcEIsU0FBRCxDQUFsRDtBQUVBLFNBQU8sQ0FBQ0MsVUFBRCxFQUFhRCxTQUFiLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW50ZXJmYWNlIG9wdGlvblR5cGUge1xuICByZWY/OiBSZWFjdC5SZWY8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgc2Vuc2l0aXZpdHk/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSG92ZXJJbnRlbnQ8VCA9IEhUTUxFbGVtZW50PihcbiAgb3B0aW9ucz86IG9wdGlvblR5cGVcbik6IFtib29sZWFuLCBSZWFjdC5SZWZPYmplY3Q8SFRNTEVsZW1lbnQgJiBUPl0ge1xuICBjb25zdCB7IHJlZiwgc2Vuc2l0aXZpdHkgPSA2LCBpbnRlcnZhbCA9IDEwMCwgdGltZW91dCA9IDAgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGludGVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCAmIFQ+KG51bGwpO1xuICBjb25zdCBbaXNIb3ZlcmluZywgc2V0SXNIb3ZlcmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgbGV0IHggPSAwLFxuICAgIHkgPSAwLFxuICAgIHBYID0gMCxcbiAgICBwWSA9IDAsXG4gICAgdGltZXIgPSAwO1xuICBjb25zdCBkZWxheSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICByZXR1cm4gc2V0SXNIb3ZlcmluZyhmYWxzZSk7XG4gIH07XG4gIGNvbnN0IHRyYWNrZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIHggPSBlLmNsaWVudFg7XG4gICAgeSA9IGUuY2xpZW50WTtcbiAgfTtcbiAgY29uc3QgY29tcGFyZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICBpZiAoTWF0aC5hYnMocFggLSB4KSArIE1hdGguYWJzKHBZIC0geSkgPCBzZW5zaXRpdml0eSkge1xuICAgICAgcmV0dXJuIHNldElzSG92ZXJpbmcodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBYID0geDtcbiAgICAgIHBZID0geTtcbiAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gY29tcGFyZShlKSwgaW50ZXJ2YWwpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGlzcGF0Y2hPdmVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfVxuICAgIGlmIChpbnRlbnRSZWYuY3VycmVudCkge1xuICAgICAgaW50ZW50UmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdHJhY2tlciwgZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoIWlzSG92ZXJpbmcpIHtcbiAgICAgIHBYID0gZS5jbGllbnRYO1xuICAgICAgcFkgPSBlLmNsaWVudFk7XG4gICAgICBpZiAoaW50ZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW50ZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdHJhY2tlciwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBjb21wYXJlKGUpLCBpbnRlcnZhbCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBkaXNwYXRjaE91dCA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICBpZiAoaW50ZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgIGludGVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRyYWNrZXIsIGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGlzSG92ZXJpbmcpIHtcbiAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gZGVsYXkoZSksIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRSZWYgPSBpbnRlbnRSZWYuY3VycmVudDtcbiAgICBpZiAoY3VycmVudFJlZikge1xuICAgICAgY3VycmVudFJlZi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBkaXNwYXRjaE92ZXIsIGZhbHNlKTtcbiAgICAgIGN1cnJlbnRSZWYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBkaXNwYXRjaE91dCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50UmVmKSB7XG4gICAgICAgIGN1cnJlbnRSZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZGlzcGF0Y2hPdmVyLCBmYWxzZSk7XG4gICAgICAgIGN1cnJlbnRSZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBkaXNwYXRjaE91dCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbnRlbnRSZWYuY3VycmVudCwgW2ludGVudFJlZl0pO1xuXG4gIHJldHVybiBbaXNIb3ZlcmluZywgaW50ZW50UmVmXTtcbn1cbiJdfQ== \ No newline at end of file + return [isHovering, setIsHovering, intentRef]; +}; + +exports.useHoverIntent = useHoverIntent; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJ1c2VIb3ZlckludGVudCIsIm9wdGlvbnMiLCJyZWYiLCJzZW5zaXRpdml0eSIsImludGVydmFsIiwidGltZW91dCIsImludGVudFJlZiIsImlzSG92ZXJpbmciLCJzZXRJc0hvdmVyaW5nIiwieCIsInkiLCJwWCIsInBZIiwidGltZXIiLCJkZWxheSIsImUiLCJjbGVhclRpbWVvdXQiLCJ0cmFja2VyIiwiY2xpZW50WCIsImNsaWVudFkiLCJjb21wYXJlIiwiTWF0aCIsImFicyIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJkaXNwYXRjaE92ZXIiLCJjdXJyZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNwYXRjaE91dCIsImN1cnJlbnRSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFnQk8sSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUM1QkMsT0FENEIsRUFNekI7QUFDSCxhQUE4REEsT0FBOUQsYUFBOERBLE9BQTlELGNBQThEQSxPQUE5RCxHQUF5RSxFQUF6RTtBQUFBLE1BQVFDLEdBQVIsUUFBUUEsR0FBUjtBQUFBLDhCQUFhQyxXQUFiO0FBQUEsTUFBYUEsV0FBYixpQ0FBMkIsQ0FBM0I7QUFBQSwyQkFBOEJDLFFBQTlCO0FBQUEsTUFBOEJBLFFBQTlCLDhCQUF5QyxHQUF6QztBQUFBLDBCQUE4Q0MsT0FBOUM7QUFBQSxNQUE4Q0EsT0FBOUMsNkJBQXdELENBQXhEOztBQUNBLE1BQU1DLFNBQVMsR0FBRyxtQkFBd0IsSUFBeEIsQ0FBbEI7O0FBQ0Esa0JBQW9DLHFCQUFTLEtBQVQsQ0FBcEM7QUFBQTtBQUFBLE1BQU9DLFVBQVA7QUFBQSxNQUFtQkMsYUFBbkI7O0FBRUEsTUFBSUMsQ0FBQyxHQUFHLENBQVI7QUFBQSxNQUNFQyxDQUFDLEdBQUcsQ0FETjtBQUFBLE1BRUVDLEVBQUUsR0FBRyxDQUZQO0FBQUEsTUFH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QUNvQixPQUE3Qjs7QUFDQSxRQUFJSSxVQUFKLEVBQWdCO0FBQ2RBLE1BQUFBLFVBQVUsQ0FBQ0YsZ0JBQVgsQ0FBNEIsV0FBNUIsRUFBeUNILFlBQXpDLEVBQXVELEtBQXZEO0FBQ0FLLE1BQUFBLFVBQVUsQ0FBQ0YsZ0JBQVgsQ0FBNEIsVUFBNUIsRUFBd0NDLFdBQXhDLEVBQXFELEtBQXJEO0FBQ0Q7O0FBRUQsV0FBTyxZQUFNO0FBQ1gsVUFBSWhCLEtBQUosRUFBVztBQUNURyxRQUFBQSxZQUFZLENBQUNILEtBQUQsQ0FBWjtBQUNEOztBQUNELFVBQUlpQixVQUFKLEVBQWdCO0FBQ2RBLFFBQUFBLFVBQVUsQ0FBQ0gsbUJBQVgsQ0FBK0IsV0FBL0IsRUFBNENGLFlBQTVDLEVBQTBELEtBQTFEO0FBQ0FLLFFBQUFBLFVBQVUsQ0FBQ0gsbUJBQVgsQ0FBK0IsVUFBL0IsRUFBMkNFLFdBQTNDLEVBQXdELEtBQXhEO0FBQ0Q7QUFDRixLQVJEO0FBU0QsR0FoQkQ7QUFrQkEsa0NBQW9CM0IsR0FBcEIsRUFBeUI7QUFBQSxXQUFNSSxTQUFTLENBQUNvQixPQUFoQjtBQUFBLEdBQXpCLEVBQWtELENBQUNwQixTQUFELENBQWxEO0FBRUEsU0FBTyxDQUFDQyxVQUFELEVBQWFDLGFBQWIsRUFBNEJGLFNBQTVCLENBQVA7QUFDRCxDQXZGTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpc3BhdGNoLFxuICBTZXRTdGF0ZUFjdGlvbixcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxufSBmcm9tIFwicmVhY3RcIjtcblxuaW50ZXJmYWNlIG9wdGlvblR5cGUge1xuICByZWY/OiBSZWFjdC5SZWY8SFRNTEVsZW1lbnQgfCBudWxsPjtcbiAgc2Vuc2l0aXZpdHk/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgdXNlSG92ZXJJbnRlbnQgPSA8VD4oXG4gIG9wdGlvbnM/OiBvcHRpb25UeXBlXG4pOiBbXG4gIGJvb2xlYW4sXG4gIERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPGJvb2xlYW4+PixcbiAgUmVhY3QuUmVmT2JqZWN0PEhUTUxFbGVtZW50ICYgVD5cbl0gPT4ge1xuICBjb25zdCB7IHJlZiwgc2Vuc2l0aXZpdHkgPSA2LCBpbnRlcnZhbCA9IDEwMCwgdGltZW91dCA9IDAgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGludGVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCAmIFQ+KG51bGwpO1xuICBjb25zdCBbaXNIb3ZlcmluZywgc2V0SXNIb3ZlcmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgbGV0IHggPSAwLFxuICAgIHkgPSAwLFxuICAgIHBYID0gMCxcbiAgICBwWSA9IDAsXG4gICAgdGltZXIgPSAwO1xuICBjb25zdCBkZWxheSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICByZXR1cm4gc2V0SXNIb3ZlcmluZyhmYWxzZSk7XG4gIH07XG4gIGNvbnN0IHRyYWNrZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIHggPSBlLmNsaWVudFg7XG4gICAgeSA9IGUuY2xpZW50WTtcbiAgfTtcbiAgY29uc3QgY29tcGFyZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICBpZiAoTWF0aC5hYnMocFggLSB4KSArIE1hdGguYWJzKHBZIC0geSkgPCBzZW5zaXRpdml0eSkge1xuICAgICAgcmV0dXJuIHNldElzSG92ZXJpbmcodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBYID0geDtcbiAgICAgIHBZID0geTtcbiAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gY29tcGFyZShlKSwgaW50ZXJ2YWwpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGlzcGF0Y2hPdmVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfVxuICAgIGlmIChpbnRlbnRSZWYuY3VycmVudCkge1xuICAgICAgaW50ZW50UmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0cmFja2VyLCBmYWxzZSk7XG4gICAgfVxuICAgIGlmICghaXNIb3ZlcmluZykge1xuICAgICAgcFggPSBlLmNsaWVudFg7XG4gICAgICBwWSA9IGUuY2xpZW50WTtcbiAgICAgIGlmIChpbnRlbnRSZWYuY3VycmVudCkge1xuICAgICAgICBpbnRlbnRSZWYuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRyYWNrZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gY29tcGFyZShlKSwgaW50ZXJ2YWwpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGlzcGF0Y2hPdXQgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG4gICAgaWYgKGludGVudFJlZi5jdXJyZW50KSB7XG4gICAgICBpbnRlbnRSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRyYWNrZXIsIGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGlzSG92ZXJpbmcpIHtcbiAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gZGVsYXkoZSksIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRSZWYgPSBpbnRlbnRSZWYuY3VycmVudDtcbiAgICBpZiAoY3VycmVudFJlZikge1xuICAgICAgY3VycmVudFJlZi5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdmVyXCIsIGRpc3BhdGNoT3ZlciwgZmFsc2UpO1xuICAgICAgY3VycmVudFJlZi5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdXRcIiwgZGlzcGF0Y2hPdXQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFJlZikge1xuICAgICAgICBjdXJyZW50UmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZGlzcGF0Y2hPdmVyLCBmYWxzZSk7XG4gICAgICAgIGN1cnJlbnRSZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIGRpc3BhdGNoT3V0LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGludGVudFJlZi5jdXJyZW50LCBbaW50ZW50UmVmXSk7XG5cbiAgcmV0dXJuIFtpc0hvdmVyaW5nLCBzZXRJc0hvdmVyaW5nLCBpbnRlbnRSZWZdO1xufTtcbiJdfQ== \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index d10342c..805ff64 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,11 @@ -import { useEffect, useImperativeHandle, useRef, useState } from 'react'; +import { + Dispatch, + SetStateAction, + useState, + useEffect, + useImperativeHandle, + useRef, +} from "react"; interface optionType { ref?: React.Ref; @@ -7,9 +14,13 @@ interface optionType { timeout?: number; } -export function useHoverIntent( +export const useHoverIntent = ( options?: optionType -): [boolean, React.RefObject] { +): [ + boolean, + Dispatch>, + React.RefObject +] => { const { ref, sensitivity = 6, interval = 100, timeout = 0 } = options ?? {}; const intentRef = useRef(null); const [isHovering, setIsHovering] = useState(false); @@ -46,13 +57,13 @@ export function useHoverIntent( clearTimeout(timer); } if (intentRef.current) { - intentRef.current.removeEventListener('mousemove', tracker, false); + intentRef.current.removeEventListener("mousemove", tracker, false); } if (!isHovering) { pX = e.clientX; pY = e.clientY; if (intentRef.current) { - intentRef.current.addEventListener('mousemove', tracker, false); + intentRef.current.addEventListener("mousemove", tracker, false); } timer = window.setTimeout(() => compare(e), interval); } @@ -62,7 +73,7 @@ export function useHoverIntent( clearTimeout(timer); } if (intentRef.current) { - intentRef.current.removeEventListener('mousemove', tracker, false); + intentRef.current.removeEventListener("mousemove", tracker, false); } if (isHovering) { timer = window.setTimeout(() => delay(e), timeout); @@ -72,8 +83,8 @@ export function useHoverIntent( useEffect(() => { const currentRef = intentRef.current; if (currentRef) { - currentRef.addEventListener('mouseover', dispatchOver, false); - currentRef.addEventListener('mouseout', dispatchOut, false); + currentRef.addEventListener("mouseover", dispatchOver, false); + currentRef.addEventListener("mouseout", dispatchOut, false); } return () => { @@ -81,13 +92,13 @@ export function useHoverIntent( clearTimeout(timer); } if (currentRef) { - currentRef.removeEventListener('mouseover', dispatchOver, false); - currentRef.removeEventListener('mouseout', dispatchOut, false); + currentRef.removeEventListener("mouseover", dispatchOver, false); + currentRef.removeEventListener("mouseout", dispatchOut, false); } }; }); useImperativeHandle(ref, () => intentRef.current, [intentRef]); - return [isHovering, intentRef]; -} + return [isHovering, setIsHovering, intentRef]; +};