mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 16:55:05 +02:00
Improved the vc items movement
This commit is contained in:
parent
8f5a206027
commit
9076e9f2d8
@ -453,9 +453,6 @@ export function addMovementListener(
|
|||||||
let containerLeft = containerOffset.left;
|
let containerLeft = containerOffset.left;
|
||||||
let containerRight = containerLeft + containerBounds.width;
|
let containerRight = containerLeft + containerBounds.width;
|
||||||
let elementBounds = element.getBoundingClientRect();
|
let elementBounds = element.getBoundingClientRect();
|
||||||
let elementOffset = getOffset(element);
|
|
||||||
let elementLeft = elementOffset.left;
|
|
||||||
let elementTop = elementOffset.top;
|
|
||||||
let borderWidth = window.getComputedStyle(element).borderWidth || "0";
|
let borderWidth = window.getComputedStyle(element).borderWidth || "0";
|
||||||
let borderFix = Number.parseInt(borderWidth) * 2;
|
let borderFix = Number.parseInt(borderWidth) * 2;
|
||||||
|
|
||||||
@ -473,38 +470,57 @@ export function addMovementListener(
|
|||||||
let x = 0;
|
let x = 0;
|
||||||
let y = 0;
|
let y = 0;
|
||||||
|
|
||||||
// TODO: Document.
|
|
||||||
|
|
||||||
const mouseX = e.pageX;
|
const mouseX = e.pageX;
|
||||||
const mouseY = e.pageY;
|
const mouseY = e.pageY;
|
||||||
|
const mouseDeltaX = mouseX - lastMouseX;
|
||||||
|
const mouseDeltaY = mouseY - lastMouseY;
|
||||||
|
|
||||||
if (mouseX < containerLeft) x = 0;
|
const minX = 0;
|
||||||
else if (mouseX > containerRight) x = containerBounds.width;
|
const maxX = containerBounds.width - elementBounds.width + borderFix;
|
||||||
else x = mouseX - lastMouseX + lastX;
|
const minY = 0;
|
||||||
|
const maxY = containerBounds.height - elementBounds.height + borderFix;
|
||||||
|
|
||||||
if (mouseY < containerTop) y = 0;
|
const outOfBoundsLeft =
|
||||||
else if (mouseY > containerBottom)
|
mouseX < containerLeft ||
|
||||||
y = containerBounds.height - elementBounds.height + borderFix;
|
(lastX === 0 &&
|
||||||
else y = mouseY - lastMouseY + lastY;
|
mouseDeltaX > 0 &&
|
||||||
|
mouseX < containerLeft + mouseElementOffsetX);
|
||||||
|
const outOfBoundsRight =
|
||||||
|
mouseX > containerRight ||
|
||||||
|
mouseDeltaX + lastX + elementBounds.width - borderFix >
|
||||||
|
containerBounds.width ||
|
||||||
|
(lastX === maxX &&
|
||||||
|
mouseDeltaX < 0 &&
|
||||||
|
mouseX > containerLeft + maxX + mouseElementOffsetX);
|
||||||
|
const outOfBoundsTop =
|
||||||
|
mouseY < containerTop ||
|
||||||
|
(lastY === 0 &&
|
||||||
|
mouseDeltaY > 0 &&
|
||||||
|
mouseY < containerTop + mouseElementOffsetY);
|
||||||
|
const outOfBoundsBottom =
|
||||||
|
mouseY > containerBottom ||
|
||||||
|
mouseDeltaY + lastY + elementBounds.height - borderFix >
|
||||||
|
containerBounds.height ||
|
||||||
|
(lastY === maxY &&
|
||||||
|
mouseDeltaY < 0 &&
|
||||||
|
mouseY > containerTop + maxY + mouseElementOffsetY);
|
||||||
|
|
||||||
if (x < 0) x = 0;
|
if (outOfBoundsLeft) x = minX;
|
||||||
else if (x + elementBounds.width - borderFix > containerBounds.width)
|
else if (outOfBoundsRight) x = maxX;
|
||||||
x = containerBounds.width - elementBounds.width + borderFix;
|
else x = mouseDeltaX + lastX;
|
||||||
|
|
||||||
if (y < 0) y = 0;
|
if (outOfBoundsTop) y = minY;
|
||||||
else if (y + elementBounds.height - borderFix > containerBounds.height)
|
else if (outOfBoundsBottom) y = maxY;
|
||||||
y = containerBounds.height - elementBounds.height + borderFix;
|
else y = mouseDeltaY + lastY;
|
||||||
|
|
||||||
if (x === lastX && y === lastY) return;
|
if (x < 0) x = minX;
|
||||||
|
if (y < 0) y = minY;
|
||||||
|
|
||||||
// Store the last mouse coordinates.
|
// Store the last mouse coordinates.
|
||||||
lastMouseX = mouseX;
|
lastMouseX = mouseX;
|
||||||
lastMouseY = mouseY;
|
lastMouseY = mouseY;
|
||||||
|
|
||||||
// if (x < lastX && mouseX > elementLeft + mouseElementOffsetX) return;
|
if (x === lastX && y === lastY) return;
|
||||||
// if (x > lastX && mouseX < elementLeft + mouseElementOffsetX) return;
|
|
||||||
// if (y < lastY && mouseY > elementTop + mouseElementOffsetY) return;
|
|
||||||
// if (y > lastY && mouseY < elementTop + mouseElementOffsetY) return;
|
|
||||||
|
|
||||||
// Run the movement events.
|
// Run the movement events.
|
||||||
throttledMovement(x, y);
|
throttledMovement(x, y);
|
||||||
@ -554,9 +570,6 @@ export function addMovementListener(
|
|||||||
containerLeft = containerOffset.left;
|
containerLeft = containerOffset.left;
|
||||||
containerRight = containerLeft + containerBounds.width;
|
containerRight = containerLeft + containerBounds.width;
|
||||||
elementBounds = element.getBoundingClientRect();
|
elementBounds = element.getBoundingClientRect();
|
||||||
elementOffset = getOffset(element);
|
|
||||||
elementLeft = elementOffset.left;
|
|
||||||
elementTop = elementOffset.top;
|
|
||||||
borderWidth = window.getComputedStyle(element).borderWidth || "0";
|
borderWidth = window.getComputedStyle(element).borderWidth || "0";
|
||||||
borderFix = Number.parseInt(borderWidth) * 2;
|
borderFix = Number.parseInt(borderWidth) * 2;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user