完全跑通1.0版本
This commit is contained in:
10
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.d.ts
generated
vendored
Normal file
10
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { ComputedRef, Ref } from "vue";
|
||||
|
||||
//#region ../../packages/hooks/use-draggable/index.d.ts
|
||||
declare const useDraggable: (targetRef: Ref<HTMLElement | undefined>, dragRef: Ref<HTMLElement | undefined>, draggable: ComputedRef<boolean>, overflow?: ComputedRef<boolean>) => {
|
||||
isDragging: Ref<boolean, boolean>;
|
||||
resetPosition: () => void;
|
||||
updatePosition: () => void;
|
||||
};
|
||||
//#endregion
|
||||
export { useDraggable };
|
||||
91
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.js
generated
vendored
Normal file
91
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.js
generated
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
||||
require("../../_virtual/_rolldown/runtime.js");
|
||||
const require_style = require("../../utils/dom/style.js");
|
||||
let lodash_unified = require("lodash-unified");
|
||||
let vue = require("vue");
|
||||
//#region ../../packages/hooks/use-draggable/index.ts
|
||||
const useDraggable = (targetRef, dragRef, draggable, overflow) => {
|
||||
const transform = {
|
||||
offsetX: 0,
|
||||
offsetY: 0
|
||||
};
|
||||
const isDragging = (0, vue.ref)(false);
|
||||
const adjustPosition = (moveX, moveY) => {
|
||||
if (targetRef.value) {
|
||||
const { offsetX, offsetY } = transform;
|
||||
const targetRect = targetRef.value.getBoundingClientRect();
|
||||
const targetLeft = Math.max(targetRect.left, 0);
|
||||
const targetTop = Math.max(targetRect.top, 0);
|
||||
const targetWidth = targetRect.width;
|
||||
const targetHeight = targetRect.height;
|
||||
const clientWidth = document.documentElement.clientWidth;
|
||||
const clientHeight = document.documentElement.clientHeight;
|
||||
const minLeft = -targetLeft + offsetX;
|
||||
const minTop = -targetTop + offsetY;
|
||||
const maxLeft = clientWidth - targetLeft - targetWidth + offsetX;
|
||||
const maxTop = clientHeight - targetTop - (targetHeight < clientHeight ? targetHeight : 0) + offsetY;
|
||||
if (!overflow?.value) {
|
||||
moveX = (0, lodash_unified.clamp)(moveX, minLeft, maxLeft);
|
||||
moveY = (0, lodash_unified.clamp)(moveY, minTop, maxTop);
|
||||
}
|
||||
transform.offsetX = moveX;
|
||||
transform.offsetY = moveY;
|
||||
targetRef.value.style.transform = `translate(${require_style.addUnit(moveX)}, ${require_style.addUnit(moveY)})`;
|
||||
}
|
||||
};
|
||||
const onMousedown = (e) => {
|
||||
const downX = e.clientX;
|
||||
const downY = e.clientY;
|
||||
const { offsetX, offsetY } = transform;
|
||||
const onMousemove = (e) => {
|
||||
if (!isDragging.value) isDragging.value = true;
|
||||
adjustPosition(offsetX + e.clientX - downX, offsetY + e.clientY - downY);
|
||||
};
|
||||
const onMouseup = () => {
|
||||
isDragging.value = false;
|
||||
document.removeEventListener("mousemove", onMousemove);
|
||||
document.removeEventListener("mouseup", onMouseup);
|
||||
};
|
||||
document.addEventListener("mousemove", onMousemove);
|
||||
document.addEventListener("mouseup", onMouseup);
|
||||
};
|
||||
const onDraggable = () => {
|
||||
if (dragRef.value && targetRef.value) {
|
||||
dragRef.value.addEventListener("mousedown", onMousedown);
|
||||
window.addEventListener("resize", updatePosition);
|
||||
}
|
||||
};
|
||||
const offDraggable = () => {
|
||||
if (dragRef.value && targetRef.value) {
|
||||
dragRef.value.removeEventListener("mousedown", onMousedown);
|
||||
window.removeEventListener("resize", updatePosition);
|
||||
}
|
||||
};
|
||||
const resetPosition = () => {
|
||||
transform.offsetX = 0;
|
||||
transform.offsetY = 0;
|
||||
if (targetRef.value) targetRef.value.style.transform = "";
|
||||
};
|
||||
const updatePosition = () => {
|
||||
const { offsetX, offsetY } = transform;
|
||||
adjustPosition(offsetX, offsetY);
|
||||
};
|
||||
(0, vue.onMounted)(() => {
|
||||
(0, vue.watchEffect)(() => {
|
||||
if (draggable.value) onDraggable();
|
||||
else offDraggable();
|
||||
});
|
||||
});
|
||||
(0, vue.onBeforeUnmount)(() => {
|
||||
offDraggable();
|
||||
});
|
||||
return {
|
||||
isDragging,
|
||||
resetPosition,
|
||||
updatePosition
|
||||
};
|
||||
};
|
||||
//#endregion
|
||||
exports.useDraggable = useDraggable;
|
||||
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.js.map
generated
vendored
Normal file
1
frontend/node_modules/element-plus/lib/hooks/use-draggable/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user