|
|
|
@ -11,6 +11,7 @@ import type { Device, InteractiveCanvasAppState, Zoom } from "../types";
|
|
|
|
|
import {
|
|
|
|
|
isElbowArrow,
|
|
|
|
|
isFrameLikeElement,
|
|
|
|
|
isImageElement,
|
|
|
|
|
isLinearElement,
|
|
|
|
|
} from "./typeChecks";
|
|
|
|
|
import {
|
|
|
|
@ -129,6 +130,7 @@ export const getTransformHandlesFromCoords = (
|
|
|
|
|
pointerType: PointerType,
|
|
|
|
|
omitSides: { [T in TransformHandleType]?: boolean } = {},
|
|
|
|
|
margin = 4,
|
|
|
|
|
spacing = DEFAULT_TRANSFORM_HANDLE_SPACING,
|
|
|
|
|
): TransformHandles => {
|
|
|
|
|
const size = transformHandleSizes[pointerType];
|
|
|
|
|
const handleWidth = size / zoom.value;
|
|
|
|
@ -140,8 +142,7 @@ export const getTransformHandlesFromCoords = (
|
|
|
|
|
const width = x2 - x1;
|
|
|
|
|
const height = y2 - y1;
|
|
|
|
|
const dashedLineMargin = margin / zoom.value;
|
|
|
|
|
const centeringOffset =
|
|
|
|
|
(size - DEFAULT_TRANSFORM_HANDLE_SPACING * 2) / (2 * zoom.value);
|
|
|
|
|
const centeringOffset = (size - spacing * 2) / (2 * zoom.value);
|
|
|
|
|
|
|
|
|
|
const transformHandles: TransformHandles = {
|
|
|
|
|
nw: omitSides.nw
|
|
|
|
@ -301,8 +302,10 @@ export const getTransformHandles = (
|
|
|
|
|
rotation: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
const dashedLineMargin = isLinearElement(element)
|
|
|
|
|
const margin = isLinearElement(element)
|
|
|
|
|
? DEFAULT_TRANSFORM_HANDLE_SPACING + 8
|
|
|
|
|
: isImageElement(element)
|
|
|
|
|
? 0
|
|
|
|
|
: DEFAULT_TRANSFORM_HANDLE_SPACING;
|
|
|
|
|
return getTransformHandlesFromCoords(
|
|
|
|
|
getElementAbsoluteCoords(element, elementsMap, true),
|
|
|
|
@ -310,7 +313,8 @@ export const getTransformHandles = (
|
|
|
|
|
zoom,
|
|
|
|
|
pointerType,
|
|
|
|
|
omitSides,
|
|
|
|
|
dashedLineMargin,
|
|
|
|
|
margin,
|
|
|
|
|
isImageElement(element) ? 0 : undefined,
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|