UNPKG

tdesign-vue-next

Version:
239 lines (233 loc) 9.01 kB
/** * tdesign v1.20.0 * (c) 2026 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var Vue = require('vue'); require('@babel/runtime/helpers/toConsumableArray'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-0e867224.js'); require('../../config-provider/hooks/useConfig.js'); require('@babel/runtime/helpers/slicedToArray'); require('../../_chunks/dep-ce392f73.js'); require('@babel/runtime/helpers/defineProperty'); require('tdesign-icons-vue-next'); require('../../checkbox/index.js'); require('../../loading/index.js'); require('@babel/runtime/helpers/asyncToGenerator'); require('@babel/runtime/helpers/classCallCheck'); require('@babel/runtime/helpers/createClass'); require('@babel/runtime/regenerator'); var throttle = require('../../_chunks/dep-eca8ae9d.js'); require('../../_chunks/dep-b3ef977e.js'); require('../../_chunks/dep-a64c9b8c.js'); require('../../_chunks/dep-aafbacfe.js'); require('dayjs'); require('../../_chunks/dep-c539b8cf.js'); require('../../_chunks/dep-bd404105.js'); require('../../_chunks/dep-5ed96ff4.js'); require('../../_chunks/dep-cd6733fb.js'); require('../../_chunks/dep-caa8987f.js'); require('../../_chunks/dep-5c730151.js'); require('../../_chunks/dep-b937ef62.js'); require('../../_chunks/dep-0ad5a5a6.js'); require('../../_chunks/dep-8e3205d4.js'); require('../../_chunks/dep-68ca5b5a.js'); require('../../_chunks/dep-ce54d478.js'); require('../../_chunks/dep-9b493151.js'); require('../../_chunks/dep-933eb47e.js'); require('../../_chunks/dep-01e6d254.js'); require('../../_chunks/dep-d3fa0c96.js'); require('../../_chunks/dep-f549ecb7.js'); require('../../_chunks/dep-5a252af6.js'); require('../../_chunks/dep-f4839f43.js'); require('../../_chunks/dep-330e6dfc.js'); require('../../_chunks/dep-af55a921.js'); require('../../checkbox/checkbox.js'); require('../../checkbox/props.js'); require('../../_chunks/dep-aa87a8f5.js'); require('../../_chunks/dep-aa61e27f.js'); require('../../_chunks/dep-1da18355.js'); require('../../_chunks/dep-4f8e5834.js'); require('../../_chunks/dep-b809bbd2.js'); require('../../_chunks/dep-08fc313e.js'); require('../../_chunks/dep-ff23118f.js'); require('../../_chunks/dep-678c34e4.js'); require('../../_chunks/dep-950f8e72.js'); require('../../_chunks/dep-bf028c39.js'); require('../../_chunks/dep-6b2b1f80.js'); require('../../_chunks/dep-b9c82189.js'); require('../../_chunks/dep-d3e2e950.js'); require('../../_chunks/dep-c7627f80.js'); require('../../_chunks/dep-5858b58f.js'); require('../../_chunks/dep-514a65fd.js'); require('../../_chunks/dep-b90ea288.js'); require('../../_chunks/dep-34e686da.js'); require('../../checkbox/constants/index.js'); require('../../checkbox/hooks/useCheckboxLazyLoad.js'); require('../../_chunks/dep-2199d5ef.js'); require('../../checkbox/hooks/useKeyboardEvent.js'); require('../../_chunks/dep-f6c6e123.js'); require('../../checkbox/group.js'); require('../../checkbox/checkbox-group-props.js'); require('../../_chunks/dep-b63ae774.js'); require('../../_chunks/dep-2655508e.js'); require('../../_chunks/dep-09706c94.js'); require('../../_chunks/dep-680b807b.js'); require('../../_chunks/dep-ce75379a.js'); require('../../_chunks/dep-654cced3.js'); require('../../_chunks/dep-adeb89aa.js'); require('../../loading/plugin.js'); require('../../_chunks/dep-c1f105f1.js'); require('../../loading/icon/gradient.js'); require('../../_chunks/dep-a500b5f3.js'); require('@babel/runtime/helpers/objectWithoutProperties'); require('../../_chunks/dep-67d3c773.js'); require('../../_chunks/dep-631c1469.js'); require('../../loading/props.js'); require('../../_chunks/dep-b995bb39.js'); require('../../_chunks/dep-4517d4ed.js'); require('../../_chunks/dep-85b2a790.js'); require('../../_chunks/dep-66b8651a.js'); require('../../_chunks/dep-b6ea336e.js'); require('../../_chunks/dep-b8c6ffbe.js'); require('../../_chunks/dep-4c394c9f.js'); require('../../_chunks/dep-69de6962.js'); require('../../_chunks/dep-382db868.js'); require('../../_chunks/dep-d7e01c93.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 = Vue.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; } }; 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.throttle(function (dragEvent) { updateDropPosition(dragEvent); }); return { dragStates: dragStates, handleDragStart: handleDragStart, handleDragEnd: handleDragEnd, handleDragOver: handleDragOver, handleDragLeave: handleDragLeave, handleDrop: handleDrop }; } exports.DragPosition = DragPosition; exports["default"] = useDraggable; //# sourceMappingURL=useDraggable.js.map