UNPKG

tdesign-vue

Version:
221 lines (217 loc) 8.05 kB
/** * tdesign v1.12.1 * (c) 2025 tdesign * @license MIT */ import { throttle } from 'lodash-es'; import '../adapt.js'; import { reactive } from '@vue/composition-api'; import 'vue'; import '../../utils/withInstall.js'; import '@babel/runtime/helpers/defineProperty'; import '../../hooks/useVModel.js'; import '../../hooks/useDefaultValue.js'; import 'tdesign-icons-vue'; import '../../checkbox/index.js'; import '../../checkbox/group.js'; import '../../_chunks/dep-323b993c.js'; import '@babel/runtime/helpers/typeof'; import '@babel/runtime/helpers/toConsumableArray'; import '@babel/runtime/helpers/slicedToArray'; import '../../utils/helper.js'; import '@babel/runtime/helpers/objectWithoutProperties'; import '../../checkbox/checkbox.js'; import '../../checkbox/props.js'; import '../../hooks/index.js'; import '../../utils/render-tnode.js'; import '@babel/runtime/helpers/readOnlyError'; import '../../hooks/slots.js'; import '../../hooks/useCommonClassName.js'; import '../../config-provider/useConfig.js'; import '../../config-provider/context.js'; import '../../_common/js/global-config/default-config.js'; import '../../_common/js/global-config/locale/zh_CN.js'; import '../../_chunks/dep-c44a474d.js'; import '../../_chunks/dep-d639fbd7.js'; import 'dayjs'; import '../../_chunks/dep-3c66615e.js'; import '../../config-provider/type.js'; import '../../_common/js/global-config/t.js'; import '../../hooks/useConfig.js'; import '../../hooks/useDestroyOnClose.js'; import '../../hooks/useElementLazyRender.js'; import '../../_common/js/utils/observe.js'; import '../../hooks/useFormDisabled.js'; import '../../hooks/useGlobalIcon.js'; import '../../hooks/useLazyLoad.js'; import '../../hooks/useResizeObserver.js'; import '../../hooks/useVirtualScrollNew.js'; import '../../hooks/useImagePreviewUrl.js'; import '../../_common/js/upload/utils.js'; import '../../_common/js/log/log.js'; import '../../checkbox/constants.js'; import '../../checkbox/store.js'; import '@babel/runtime/helpers/classCallCheck'; import '@babel/runtime/helpers/createClass'; import '../../checkbox/hooks/useKeyboardEvent.js'; import '../../_common/js/common.js'; import '../../checkbox/checkbox-group-props.js'; import './style/index.js'; import '../../checkbox/type.js'; import '../../loading/index.js'; import '../../loading/directive.js'; import '../../loading/plugin.js'; import '../../loading/loading.js'; import '../../loading/icon/gradient.js'; import '../../_common/js/loading/circle-adapter.js'; import '../../_common/js/utils/setStyle.js'; import '../../_common/js/utils/helper.js'; import '../../config-provider/config-receiver.js'; import '../../utils/mixins.js'; import '../../utils/dom.js'; import 'raf'; import '../../utils/easing.js'; import '../../utils/transfer-dom.js'; import '../../loading/props.js'; import '../../config.js'; import '../../loading/type.js'; import '../../_common/js/tree/tree-node.js'; import '@babel/runtime/helpers/asyncToGenerator'; import '@babel/runtime/regenerator'; import '../../_common/js/tree/tree-node-model.js'; import '../../_common/js/log/index.js'; var DragPosition = /* @__PURE__ */function (DragPosition2) { DragPosition2[DragPosition2["Before"] = -1] = "Before"; DragPosition2[DragPosition2["Inside"] = 0] = "Inside"; DragPosition2[DragPosition2["After"] = 1] = "After"; return DragPosition2; }(DragPosition || {}); function useDraggable(state) { var treeItemRef = state.treeItemRef; var dragStates = reactive({ isDragOver: false, isDragging: false, dropPosition: 0 /* Inside */ }); var updateDropPosition = function updateDropPosition(dragEvent) { var _rootNode$getBounding; var rootNode = treeItemRef.value; if (!rootNode) return; var rect = rootNode === null || rootNode === void 0 || (_rootNode$getBounding = rootNode.getBoundingClientRect) === null || _rootNode$getBounding === void 0 ? void 0 : _rootNode$getBounding.call(rootNode); var offsetY = window.scrollY + rect.top; var pageY = dragEvent.pageY; var gapHeight = rect.height / 4; var diff = pageY - offsetY; if (diff < gapHeight) { dragStates.dropPosition = -1 /* Before */; } else if (diff < rect.height - gapHeight) { dragStates.dropPosition = 0 /* Inside */; } else { dragStates.dropPosition = 1 /* After */; } }; var setDragStatus = function setDragStatus(status, dragEvent) { var _drag$handleDragStart, _drag$handleDragEnd, _drag$handleDragOver, _drag$handleDragLeave, _drag$handleDrop; var node = state.node, treeScope = state.treeScope; var drag = treeScope.drag; if (!drag) return; switch (status) { case "dragStart": dragStates.isDragging = true; dragStates.dropPosition = 0 /* Inside */; (_drag$handleDragStart = drag.handleDragStart) === null || _drag$handleDragStart === void 0 || _drag$handleDragStart.call(drag, { node: node, dragEvent: dragEvent }); break; case "dragEnd": dragStates.isDragging = false; dragStates.isDragOver = false; dragStates.dropPosition = 0 /* Inside */; throttleUpdateDropPosition.cancel(); (_drag$handleDragEnd = drag.handleDragEnd) === null || _drag$handleDragEnd === void 0 || _drag$handleDragEnd.call(drag, { node: node, dragEvent: dragEvent }); break; case "dragOver": dragStates.isDragOver = true; throttleUpdateDropPosition(dragEvent); (_drag$handleDragOver = drag.handleDragOver) === null || _drag$handleDragOver === void 0 || _drag$handleDragOver.call(drag, { node: node, dragEvent: dragEvent }); break; case "dragLeave": dragStates.isDragOver = false; dragStates.dropPosition = 0 /* Inside */; throttleUpdateDropPosition.cancel(); (_drag$handleDragLeave = drag.handleDragLeave) === null || _drag$handleDragLeave === void 0 || _drag$handleDragLeave.call(drag, { node: node, dragEvent: dragEvent }); break; case "drop": (_drag$handleDrop = drag.handleDrop) === null || _drag$handleDrop === void 0 || _drag$handleDrop.call(drag, { node: node, dropPosition: dragStates.dropPosition, dragEvent: dragEvent }); dragStates.isDragOver = false; throttleUpdateDropPosition.cancel(); break; default: break; } }; var handleDragStart = function handleDragStart(evt) { var node = state.node; if (!node.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragStart", evt); try { var _evt$dataTransfer; (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 || _evt$dataTransfer.setData("text/plain", ""); } catch (e) {} }; var handleDragEnd = function handleDragEnd(evt) { var node = state.node; if (!node.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragEnd", evt); }; var handleDragOver = function handleDragOver(evt) { var node = state.node; if (!node.isDraggable()) return; evt.stopPropagation(); evt.preventDefault(); setDragStatus("dragOver", evt); }; var handleDragLeave = function handleDragLeave(evt) { var node = state.node; if (!node.isDraggable()) return; evt.stopPropagation(); setDragStatus("dragLeave", evt); }; var handleDrop = function handleDrop(evt) { var node = state.node; if (!node.isDraggable()) return; evt.stopPropagation(); evt.preventDefault(); setDragStatus("drop", evt); }; var throttleUpdateDropPosition = throttle(function (dragEvent) { updateDropPosition(dragEvent); }); return { dragStates: dragStates, handleDragStart: handleDragStart, handleDragEnd: handleDragEnd, handleDragOver: handleDragOver, handleDragLeave: handleDragLeave, handleDrop: handleDrop }; } export { DragPosition, useDraggable as default }; //# sourceMappingURL=useDraggable.js.map