@grafana/ui
Version:
Grafana Components Library
41 lines (34 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
;
function createPointerDistance(distance = 10) {
let initial = { x: 0, y: 0 };
const set = (evt) => {
initial = getPoint(evt);
};
const check = (evt, overrideDistance = distance) => checkDistance(initial, getPoint(evt), overrideDistance);
return { set, check };
}
function usePointerDistance(distance = 10) {
const initial = React__default.default.useRef({ x: 0, y: 0 });
const set = React.useCallback((evt) => {
initial.current = getPoint(evt);
}, []);
const check = React.useCallback(
(evt, overrideDistance = distance) => checkDistance(initial.current, getPoint(evt), overrideDistance),
[distance]
);
return React.useMemo(() => ({ set, check }), [set, check]);
}
function getPoint(evt) {
return { x: evt.clientX, y: evt.clientY };
}
function checkDistance(point1, point2, distance) {
return Math.hypot(point1.x - point2.x, point1.y - point2.y) > distance;
}
exports.createPointerDistance = createPointerDistance;
exports.usePointerDistance = usePointerDistance;
//# sourceMappingURL=usePointerDistance.cjs.map