tdesign-react
Version:
TDesign Component for React
69 lines (65 loc) • 2.62 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _typeof } from '../../_chunks/dep-c37cc2fd.js';
function useDialogDrag(props) {
var contentClickRef = props.contentClickRef,
dialogCardRef = props.dialogCardRef,
canDraggable = props.canDraggable;
var validWindow = (typeof window === "undefined" ? "undefined" : _typeof(window)) === "object";
var screenHeight = validWindow ? window.innerHeight || document.documentElement.clientHeight : void 0;
var screenWidth = validWindow ? window.innerWidth || document.documentElement.clientWidth : void 0;
var dialogOffset = {
x: 0,
y: 0
};
var onDialogMove = function onDialogMove(e) {
var _dialogCardRef$curren = dialogCardRef.current,
style = _dialogCardRef$curren.style,
offsetWidth = _dialogCardRef$curren.offsetWidth,
offsetHeight = _dialogCardRef$curren.offsetHeight;
var diffX = e.clientX - dialogOffset.x;
var diffY = e.clientY - dialogOffset.y;
if (diffX < 0) diffX = 0;
if (diffY < 0) diffY = 0;
if (screenWidth - offsetWidth - diffX < 0) diffX = screenWidth - offsetWidth;
if (screenHeight - offsetHeight - diffY < 0) diffY = screenHeight - offsetHeight;
style.position = "absolute";
style.left = "".concat(diffX, "px");
style.top = "".concat(diffY, "px");
};
var _onDialogMoveEnd = function onDialogMoveEnd() {
dialogCardRef.current.style.cursor = "default";
document.removeEventListener("mousemove", onDialogMove);
document.removeEventListener("mouseup", _onDialogMoveEnd);
};
var onDialogMoveStart = function onDialogMoveStart(e) {
contentClickRef.current = true;
if (canDraggable && e.currentTarget === e.target) {
var _dialogCardRef$curren2 = dialogCardRef.current,
offsetLeft = _dialogCardRef$curren2.offsetLeft,
offsetTop = _dialogCardRef$curren2.offsetTop,
offsetHeight = _dialogCardRef$curren2.offsetHeight,
offsetWidth = _dialogCardRef$curren2.offsetWidth;
if (offsetWidth > screenWidth || offsetHeight > screenHeight) return;
dialogCardRef.current.style.cursor = "move";
var diffX = e.clientX - offsetLeft;
var diffY = e.clientY - offsetTop;
dialogOffset = {
x: diffX,
y: diffY
};
document.addEventListener("mousemove", onDialogMove);
document.addEventListener("mouseup", _onDialogMoveEnd);
}
};
return {
onDialogMoveStart: onDialogMoveStart,
onDialogMove: onDialogMove,
onDialogMoveEnd: _onDialogMoveEnd
};
}
export { useDialogDrag as default };
//# sourceMappingURL=useDialogDrag.js.map