xdesign-vue-next
Version:
XDesign Component for vue-next
138 lines (134 loc) • 4.81 kB
JavaScript
/**
* xdesign v1.0.6
* (c) 2023 xdesign
* @license MIT
*/
import { toRefs, inject, ref } from 'vue';
import { t as throttle_1 } from '../../_chunks/dep-c72bf085.mjs';
import { dragInjectKey } from '../constants.mjs';
import '../../_chunks/dep-10a947a6.mjs';
import '../../_chunks/dep-0c786bea.mjs';
import '../../_chunks/dep-6ad18815.mjs';
import '../../_chunks/dep-82805301.mjs';
import '../../_chunks/dep-1cc1c24f.mjs';
import '../../_chunks/dep-b75d8d74.mjs';
import '../../_chunks/dep-e727a519.mjs';
import '../../_chunks/dep-7dcfa37a.mjs';
import '../../_chunks/dep-addc2a84.mjs';
import '../../hooks/useConfig.mjs';
import '../../config-provider/useConfig.mjs';
import '../../_chunks/dep-91ac8f71.mjs';
import '../../_chunks/dep-c4737535.mjs';
import '../../_chunks/dep-81c83986.mjs';
import '../../_chunks/dep-6aa0223b.mjs';
import '../../_chunks/dep-db381ece.mjs';
import '../../_chunks/dep-5755c21c.mjs';
import '../../_chunks/dep-7f239c43.mjs';
import '../../_chunks/dep-6f04869e.mjs';
import '../../_chunks/dep-d32fbbb3.mjs';
import '../../_chunks/dep-dafada74.mjs';
import '../../_chunks/dep-a95026f2.mjs';
import '../../_chunks/dep-068e912d.mjs';
import '../../_chunks/dep-6e7b37b8.mjs';
import '../../_chunks/dep-e1ab85c5.mjs';
import '../../_chunks/dep-5f0e0453.mjs';
import '../../_chunks/dep-71f84cf2.mjs';
import '../../_chunks/dep-0e832fc7.mjs';
import '../../_chunks/dep-69963a8c.mjs';
import '../../_chunks/dep-8d1c9a23.mjs';
import '../../_chunks/dep-03412fab.mjs';
import '../../_chunks/dep-205ff58d.mjs';
import '../../_chunks/dep-11fa9c2c.mjs';
import '../../_chunks/dep-b09f48fa.mjs';
import '../../_chunks/dep-26bf361a.mjs';
import '../../_chunks/dep-3ec3335a.mjs';
import '../../_chunks/dep-ed4e7c50.mjs';
import '../../_chunks/dep-a666b9ad.mjs';
import '../../_common/js/global-config/default-config.mjs';
import '../../_common/js/global-config/locale/en_US.mjs';
import '../../config-provider/type.mjs';
function useDraggable(props) {
var _toRefs = toRefs(props),
nodeRef = _toRefs.nodeRef,
node = _toRefs.node;
var onDrag = inject(dragInjectKey);
var isDragOver = ref(false);
var isDragging = ref(false);
var dropPosition = ref(0);
var updateDropPosition = throttle_1(function (e) {
if (typeof window === "undefined") return;
if (!nodeRef.value) return;
var rect = nodeRef.value.getBoundingClientRect();
var offsetY = window.pageYOffset + rect.top;
var pageY = e.pageY;
var gapHeight = rect.height / 4;
var diff = pageY - offsetY;
if (diff < gapHeight) {
dropPosition.value = -1;
} else if (diff < rect.height - gapHeight) {
dropPosition.value = 0;
} else {
dropPosition.value = 1;
}
});
var setDragStatus = function setDragStatus(status, e) {
var _onDrag$onDragStart, _onDrag$onDragEnd, _onDrag$onDragOver, _onDrag$onDragLeave, _onDrag$onDrop;
switch (status) {
case "dragStart":
isDragging.value = true;
dropPosition.value = 0;
(_onDrag$onDragStart = onDrag.onDragStart) === null || _onDrag$onDragStart === void 0 ? void 0 : _onDrag$onDragStart.call(onDrag, {
node: node.value,
e: e
});
e.dataTransfer.effectAllowed = "move";
break;
case "dragEnd":
isDragging.value = false;
isDragOver.value = false;
dropPosition.value = 0;
updateDropPosition.cancel();
(_onDrag$onDragEnd = onDrag.onDragEnd) === null || _onDrag$onDragEnd === void 0 ? void 0 : _onDrag$onDragEnd.call(onDrag, {
node: node.value,
e: e
});
break;
case "dragOver":
isDragOver.value = true;
updateDropPosition(e);
(_onDrag$onDragOver = onDrag.onDragOver) === null || _onDrag$onDragOver === void 0 ? void 0 : _onDrag$onDragOver.call(onDrag, {
node: node.value,
e: e
});
break;
case "dragLeave":
isDragOver.value = false;
dropPosition.value = 0;
updateDropPosition.cancel();
(_onDrag$onDragLeave = onDrag.onDragLeave) === null || _onDrag$onDragLeave === void 0 ? void 0 : _onDrag$onDragLeave.call(onDrag, {
node: node.value,
e: e
});
break;
case "drop":
(_onDrag$onDrop = onDrag.onDrop) === null || _onDrag$onDrop === void 0 ? void 0 : _onDrag$onDrop.call(onDrag, {
node: node.value,
dropPosition: dropPosition.value,
e: e
});
isDragOver.value = false;
updateDropPosition.cancel();
break;
default:
break;
}
};
return {
isDragOver: isDragOver,
isDragging: isDragging,
dropPosition: dropPosition,
setDragStatus: setDragStatus
};
}
export { useDraggable as default };
//# sourceMappingURL=useDraggable.mjs.map