UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

138 lines (134 loc) 4.81 kB
/** * 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