fix ABS XY constraint (#2560)

* fix source rangen for abs x y constraints

* fix abs bug

* add e2e test
This commit is contained in:
Kurt Hutten
2024-05-31 14:00:32 +10:00
committed by GitHub
parent bd16902f02
commit 3c01924184
4 changed files with 157 additions and 25 deletions

View File

@ -341,36 +341,29 @@ const setAbsDistanceCreateNode =
isXOrYLine = false,
index = xOrY === 'x' ? 0 : 1
): TransformInfo['createNode'] =>
({ tag, forceValueUsedInTransform }) => {
return (args, _, referencedSegment) => {
const valueUsedInTransform = roundOff(
getArgLiteralVal(args?.[index]) - (referencedSegment?.to?.[index] || 0),
2
)
const val =
(forceValueUsedInTransform as BinaryPart) ||
createLiteral(valueUsedInTransform)
if (isXOrYLine) {
return createCallWrapper(
xOrY === 'x' ? 'xLineTo' : 'yLineTo',
val,
tag,
valueUsedInTransform
)
}
({ tag, forceValueUsedInTransform }) =>
(args) => {
const valueUsedInTransform = roundOff(getArgLiteralVal(args?.[index]), 2)
const val =
(forceValueUsedInTransform as BinaryPart) ||
createLiteral(valueUsedInTransform)
if (isXOrYLine) {
return createCallWrapper(
'lineTo',
!index ? [val, args[1]] : [args[0], val],
xOrY === 'x' ? 'xLineTo' : 'yLineTo',
val,
tag,
valueUsedInTransform
)
}
return createCallWrapper(
'lineTo',
!index ? [val, args[1]] : [args[0], val],
tag,
valueUsedInTransform
)
}
const setAbsDistanceForAngleLineCreateNode =
(
xOrY: 'x' | 'y',
index = xOrY === 'x' ? 0 : 1
): TransformInfo['createNode'] =>
(xOrY: 'x' | 'y'): TransformInfo['createNode'] =>
({ tag, forceValueUsedInTransform, varValA }) => {
return (args) => {
const valueUsedInTransform = roundOff(getArgLiteralVal(args?.[1]), 2)