tdesign-react
Version:
TDesign Component for React
59 lines (55 loc) • 1.68 kB
JavaScript
/**
* tdesign v1.16.2
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _slicedToArray } from '../../_chunks/dep-10d5731f.js';
import { useState, useRef } from 'react';
import useMouseEvent from '../../hooks/useMouseEvent.js';
import '../../_chunks/dep-74a10cfb.js';
var usePosition = function usePosition(imgRef, options) {
var _ref = options || {},
_ref$initPosition = _ref.initPosition,
initPosition = _ref$initPosition === void 0 ? [0, 0] : _ref$initPosition;
var _useState = useState(initPosition),
_useState2 = _slicedToArray(_useState, 2),
position = _useState2[0],
setPosition = _useState2[1];
var lastScreenPositionRef = useRef(null);
useMouseEvent(imgRef, {
onDown: function onDown(e) {
var screenX = e.screenX,
screenY = e.screenY;
lastScreenPositionRef.current = {
x: screenX,
y: screenY
};
},
onMove: function onMove(e) {
if (!lastScreenPositionRef.current) return;
var screenX = e.screenX,
screenY = e.screenY;
var _lastScreenPositionRe = lastScreenPositionRef.current,
lastX = _lastScreenPositionRe.x,
lastY = _lastScreenPositionRe.y;
setPosition(function (_ref2) {
var _ref3 = _slicedToArray(_ref2, 2),
x = _ref3[0],
y = _ref3[1];
return [x + screenX - lastX, y + screenY - lastY];
});
lastScreenPositionRef.current = {
x: screenX,
y: screenY
};
},
onUp: function onUp() {
lastScreenPositionRef.current = null;
}
});
return {
position: position
};
};
export { usePosition as default };
//# sourceMappingURL=usePosition.js.map