UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

115 lines (107 loc) 3.8 kB
/** * xdesign v1.0.6 * (c) 2023 xdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var throttle = require('lodash/throttle'); var tree_constants = require('../constants.js'); require('../../hooks/useConfig.js'); require('../../config-provider/useConfig.js'); require('lodash/isFunction'); require('lodash/cloneDeep'); require('lodash/isString'); require('../../config-provider/context.js'); require('lodash/mergeWith'); require('lodash/merge'); require('../../_common/js/global-config/default-config.js'); require('../../_common/js/global-config/locale/en_US.js'); require('../../_chunks/dep-8d10b59f.js'); require('lodash/isArray'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var throttle__default = /*#__PURE__*/_interopDefaultLegacy(throttle); function useDraggable(props) { var _toRefs = vue.toRefs(props), nodeRef = _toRefs.nodeRef, node = _toRefs.node; var onDrag = vue.inject(tree_constants.dragInjectKey); var isDragOver = vue.ref(false); var isDragging = vue.ref(false); var dropPosition = vue.ref(0); var updateDropPosition = throttle__default["default"](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; } }; return { isDragOver: isDragOver, isDragging: isDragging, dropPosition: dropPosition, setDragStatus: setDragStatus }; } exports["default"] = useDraggable; //# sourceMappingURL=useDraggable.js.map