53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const resize_photo_box = document.getElementById("resize_photo_box");
|
|
|
|
// Drag handling
|
|
var startXOffset = 0,
|
|
startYOffset = 0;
|
|
|
|
function calculateOffsets() {
|
|
const yOffset = startYOffset + (currentY - y_start);
|
|
const xOffset = startXOffset + (currentX - x_start);
|
|
|
|
var top = bitmap.height / 2 - yOffset - 175;
|
|
if (top > 0) top = 0;
|
|
|
|
var bottom = -(bitmap.height / 2) - yOffset + 10 + 175;
|
|
if (bottom < 0) bottom = 0;
|
|
|
|
var left = bitmap.width / 2 - xOffset - 175;
|
|
if (left > 0) left = 0;
|
|
|
|
var right = -(bitmap.width / 2) - xOffset + 10 + 175;
|
|
if (right < 0) right = 0;
|
|
return { x: xOffset + left + right, y: yOffset + top + bottom };
|
|
}
|
|
|
|
var mouseClicked = false;
|
|
resize_photo_box.addEventListener("mousemove", () => {
|
|
if (!mouseClicked) return;
|
|
|
|
offsets = calculateOffsets();
|
|
|
|
y_top = new_profile_image.style.setProperty("--x-offset", offsets.x + "px");
|
|
new_profile_image.style.setProperty("--y-offset", offsets.y + "px");
|
|
});
|
|
|
|
resize_photo_box.addEventListener("mousedown", () => {
|
|
x_start = currentX;
|
|
y_start = currentY;
|
|
mouseClicked = true;
|
|
set_cursor_state(CURSOR_GRABBING);
|
|
});
|
|
|
|
resize_photo_box.addEventListener("mouseup", () => {
|
|
offsets = calculateOffsets();
|
|
|
|
startXOffset = offsets.x;
|
|
startYOffset = offsets.y;
|
|
});
|
|
|
|
document.body.addEventListener("mouseup", () => {
|
|
mouseClicked = false;
|
|
set_cursor_state(CURSOR_NORMAL);
|
|
});
|