|
|
|
@ -856,75 +856,75 @@ export class App extends React.Component<{}, AppState> {
|
|
|
|
|
const { x, y } = viewportCoordsToSceneCoords(e, this.state);
|
|
|
|
|
let deltaX = 0;
|
|
|
|
|
let deltaY = 0;
|
|
|
|
|
selectedElements.forEach(element => {
|
|
|
|
|
switch (resizeHandle) {
|
|
|
|
|
case "nw":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.y += element.height - element.width;
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
const deltaY = lastY - y;
|
|
|
|
|
element.height += deltaY;
|
|
|
|
|
element.y -= deltaY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "ne":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.y += element.height - element.width;
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
deltaY = lastY - y;
|
|
|
|
|
element.height += deltaY;
|
|
|
|
|
element.y -= deltaY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "sw":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
element.height += y - lastY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "se":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
element.height += y - lastY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "n":
|
|
|
|
|
const element = selectedElements[0];
|
|
|
|
|
switch (resizeHandle) {
|
|
|
|
|
case "nw":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.y += element.height - element.width;
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
const deltaY = lastY - y;
|
|
|
|
|
element.height += deltaY;
|
|
|
|
|
element.y -= deltaY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "ne":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.y += element.height - element.width;
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
deltaY = lastY - y;
|
|
|
|
|
element.height += deltaY;
|
|
|
|
|
element.y -= deltaY;
|
|
|
|
|
break;
|
|
|
|
|
case "w":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
break;
|
|
|
|
|
case "s":
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "sw":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
element.height += y - lastY;
|
|
|
|
|
break;
|
|
|
|
|
case "e":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.documentElement.style.cursor = getCursorForResizingElement(
|
|
|
|
|
{ element, resizeHandle }
|
|
|
|
|
);
|
|
|
|
|
el.x = element.x;
|
|
|
|
|
el.y = element.y;
|
|
|
|
|
el.shape = null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "se":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
if (e.shiftKey) {
|
|
|
|
|
element.height = element.width;
|
|
|
|
|
} else {
|
|
|
|
|
element.height += y - lastY;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "n":
|
|
|
|
|
deltaY = lastY - y;
|
|
|
|
|
element.height += deltaY;
|
|
|
|
|
element.y -= deltaY;
|
|
|
|
|
break;
|
|
|
|
|
case "w":
|
|
|
|
|
deltaX = lastX - x;
|
|
|
|
|
element.width += deltaX;
|
|
|
|
|
element.x -= deltaX;
|
|
|
|
|
break;
|
|
|
|
|
case "s":
|
|
|
|
|
element.height += y - lastY;
|
|
|
|
|
break;
|
|
|
|
|
case "e":
|
|
|
|
|
element.width += x - lastX;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.documentElement.style.cursor = getCursorForResizingElement(
|
|
|
|
|
{ element, resizeHandle }
|
|
|
|
|
);
|
|
|
|
|
el.x = element.x;
|
|
|
|
|
el.y = element.y;
|
|
|
|
|
el.shape = null;
|
|
|
|
|
|
|
|
|
|
lastX = x;
|
|
|
|
|
lastY = y;
|
|
|
|
|
// We don't want to save history when resizing an element
|
|
|
|
|