text: import { useEffect } from 'react';
  import useRafState from './useRafState';
  import { off, on } from './misc/util';
  var useMouse = function (ref) {
      if (process.env.NODE_ENV === 'development') {
          if (typeof ref !== 'object' || typeof ref.current === 'undefined') {
              console.error('useMouse expects a single ref argument.');
          }
      }
      var _a = useRafState({
          docX: 0,
          docY: 0,
          posX: 0,
          posY: 0,
          elX: 0,
          elY: 0,
          elH: 0,
          elW: 0,
      }), state = _a[0], setState = _a[1];
      useEffect(function () {
          var moveHandler = function (event) {
              if (ref && ref.current) {
                  var _a = ref.current.getBoundingClientRect(), left = _a.left, top_1 = _a.top, elW = _a.width, elH = _a.height;
                  var posX = left + window.pageXOffset;
                  var posY = top_1 + window.pageYOffset;
                  var elX = event.pageX - posX;
                  var elY = event.pageY - posY;
                  setState({
                      docX: event.pageX,
                      docY: event.pageY,
                      posX: posX,
                      posY: posY,
                      elX: elX,
                      elY: elY,
                      elH: elH,
                      elW: elW,
                  });
              }
          };
          on(document, 'mousemove', moveHandler);
          return function () {
              off(document, 'mousemove', moveHandler);
          };
      }, [ref]);
      return state;
  };
  export default useMouse;
  