@orca-fe/hooks
Version:
React Hooks Collections
37 lines (36 loc) • 1.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useStaticClick;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _ahooks = require("ahooks");
var _react = require("react");
var _useMemorizedFn = _interopRequireDefault(require("./useMemorizedFn"));
function useStaticClick(_callback) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var mousePointRef = (0, _react.useRef)([0, 0]);
var _options$distance = options.distance,
distance = _options$distance === void 0 ? 2 : _options$distance,
target = options.target;
var callback = (0, _useMemorizedFn.default)(_callback);
(0, _ahooks.useEventListener)('mousedown', function (e) {
mousePointRef.current = [e.clientX, e.clientY];
}, {
target: target
});
(0, _ahooks.useEventListener)('click', function (e) {
if (mousePointRef.current) {
var _mousePointRef$curren = (0, _slicedToArray2.default)(mousePointRef.current, 2),
x = _mousePointRef$curren[0],
y = _mousePointRef$curren[1];
var d = Math.pow(x - e.clientX, 2) + Math.pow(y - e.clientY, 2);
if (d <= Math.pow(distance, 2)) {
callback(e);
}
}
}, {
target: target
});
}