clean up create call back double function stuff
This commit is contained in:
@ -10,10 +10,10 @@ import {
|
|||||||
transformSecondarySketchLinesTagFirst,
|
transformSecondarySketchLinesTagFirst,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
import { kclManager } from 'lib/singletons'
|
import { kclManager } from 'lib/singletons'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
|
|
||||||
export function equalAngleInfo({
|
export function equalAngleInfo({
|
||||||
selectionRanges,
|
selectionRanges,
|
||||||
|
@ -10,8 +10,8 @@ import {
|
|||||||
transformSecondarySketchLinesTagFirst,
|
transformSecondarySketchLinesTagFirst,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { kclManager } from 'lib/singletons'
|
import { kclManager } from 'lib/singletons'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@ import {
|
|||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
transformAstSketchLines,
|
transformAstSketchLines,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { kclManager } from 'lib/singletons'
|
import { kclManager } from 'lib/singletons'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@ import {
|
|||||||
transformSecondarySketchLinesTagFirst,
|
transformSecondarySketchLinesTagFirst,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
||||||
import { createVariableDeclaration } from '../../lang/modifyAst'
|
import { createVariableDeclaration } from '../../lang/modifyAst'
|
||||||
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
||||||
|
@ -9,8 +9,8 @@ import {
|
|||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
getRemoveConstraintsTransforms,
|
getRemoveConstraintsTransforms,
|
||||||
transformAstSketchLines,
|
transformAstSketchLines,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { kclManager } from 'lib/singletons'
|
import { kclManager } from 'lib/singletons'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@ import {
|
|||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
transformAstSketchLines,
|
transformAstSketchLines,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import {
|
import {
|
||||||
SetAngleLengthModal,
|
SetAngleLengthModal,
|
||||||
createSetAngleLengthModal,
|
createSetAngleLengthModal,
|
||||||
|
@ -10,8 +10,8 @@ import {
|
|||||||
transformSecondarySketchLinesTagFirst,
|
transformSecondarySketchLinesTagFirst,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
||||||
import { createVariableDeclaration } from '../../lang/modifyAst'
|
import { createVariableDeclaration } from '../../lang/modifyAst'
|
||||||
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
||||||
|
@ -9,8 +9,8 @@ import {
|
|||||||
transformSecondarySketchLinesTagFirst,
|
transformSecondarySketchLinesTagFirst,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
import { GetInfoModal, createInfoModal } from '../SetHorVertDistanceModal'
|
||||||
import { createLiteral, createVariableDeclaration } from '../../lang/modifyAst'
|
import { createLiteral, createVariableDeclaration } from '../../lang/modifyAst'
|
||||||
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
import { removeDoubleNegatives } from '../AvailableVarsHelpers'
|
||||||
|
@ -9,8 +9,8 @@ import {
|
|||||||
PathToNodeMap,
|
PathToNodeMap,
|
||||||
getTransformInfos,
|
getTransformInfos,
|
||||||
transformAstSketchLines,
|
transformAstSketchLines,
|
||||||
TransformInfo,
|
|
||||||
} from '../../lang/std/sketchcombos'
|
} from '../../lang/std/sketchcombos'
|
||||||
|
import { TransformInfo } from 'lang/std/stdTypes'
|
||||||
import {
|
import {
|
||||||
SetAngleLengthModal,
|
SetAngleLengthModal,
|
||||||
createSetAngleLengthModal,
|
createSetAngleLengthModal,
|
||||||
|
@ -28,7 +28,6 @@ import { createPipeExpression, splitPathAtPipeExpression } from '../modifyAst'
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
SketchLineHelper,
|
SketchLineHelper,
|
||||||
TransformCallback,
|
|
||||||
ConstrainInfo,
|
ConstrainInfo,
|
||||||
ArrayItemInput,
|
ArrayItemInput,
|
||||||
ObjectPropertyInput,
|
ObjectPropertyInput,
|
||||||
@ -36,6 +35,8 @@ import {
|
|||||||
AddTagInfo,
|
AddTagInfo,
|
||||||
SegmentInputs,
|
SegmentInputs,
|
||||||
SimplifiedArgDetails,
|
SimplifiedArgDetails,
|
||||||
|
RawArgs,
|
||||||
|
CreateStdLibSketchCallExpr,
|
||||||
} from 'lang/std/stdTypes'
|
} from 'lang/std/stdTypes'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -321,8 +322,7 @@ export const lineTo: SketchLineHelper = {
|
|||||||
])
|
])
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
if (replaceExisting && createCallback) {
|
if (replaceExisting && createCallback) {
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayItem',
|
type: 'arrayItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -335,9 +335,7 @@ export const lineTo: SketchLineHelper = {
|
|||||||
argType: 'yAbsolute',
|
argType: 'yAbsolute',
|
||||||
expr: createLiteral(roundOff(to[1], 2)),
|
expr: createLiteral(roundOff(to[1], 2)),
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
@ -441,8 +439,7 @@ export const line: SketchLineHelper = {
|
|||||||
|
|
||||||
if (replaceExisting && createCallback && pipe.type !== 'CallExpression') {
|
if (replaceExisting && createCallback && pipe.type !== 'CallExpression') {
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayItem',
|
type: 'arrayItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -455,9 +452,7 @@ export const line: SketchLineHelper = {
|
|||||||
argType: 'yRelative',
|
argType: 'yRelative',
|
||||||
expr: createLiteral(roundOff(to[1] - from[1], 2)),
|
expr: createLiteral(roundOff(to[1] - from[1], 2)),
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
@ -842,8 +837,7 @@ export const tangentialArcTo: SketchLineHelper = {
|
|||||||
|
|
||||||
if (replaceExisting && createCallback && pipe.type !== 'CallExpression') {
|
if (replaceExisting && createCallback && pipe.type !== 'CallExpression') {
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayItem',
|
type: 'arrayItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -856,9 +850,7 @@ export const tangentialArcTo: SketchLineHelper = {
|
|||||||
argType: 'yAbsolute',
|
argType: 'yAbsolute',
|
||||||
expr: toY,
|
expr: toY,
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
@ -1154,8 +1146,7 @@ export const angledLine: SketchLineHelper = {
|
|||||||
|
|
||||||
if (replaceExisting && createCallback) {
|
if (replaceExisting && createCallback) {
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayOrObjItem',
|
type: 'arrayOrObjItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -1170,9 +1161,7 @@ export const angledLine: SketchLineHelper = {
|
|||||||
argType: 'length',
|
argType: 'length',
|
||||||
expr: newLengthVal,
|
expr: newLengthVal,
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
modifiedAst: _node,
|
modifiedAst: _node,
|
||||||
@ -1471,8 +1460,7 @@ export const angledLineToX: SketchLineHelper = {
|
|||||||
const angle = createLiteral(roundOff(getAngle(from, to), 0))
|
const angle = createLiteral(roundOff(getAngle(from, to), 0))
|
||||||
const xArg = createLiteral(roundOff(to[0], 2))
|
const xArg = createLiteral(roundOff(to[0], 2))
|
||||||
if (replaceExisting && createCallback) {
|
if (replaceExisting && createCallback) {
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayOrObjItem',
|
type: 'arrayOrObjItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -1487,9 +1475,7 @@ export const angledLineToX: SketchLineHelper = {
|
|||||||
argType: 'xAbsolute',
|
argType: 'xAbsolute',
|
||||||
expr: xArg,
|
expr: xArg,
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
@ -1575,8 +1561,7 @@ export const angledLineToY: SketchLineHelper = {
|
|||||||
const yArg = createLiteral(roundOff(to[1], 2))
|
const yArg = createLiteral(roundOff(to[1], 2))
|
||||||
|
|
||||||
if (replaceExisting && createCallback) {
|
if (replaceExisting && createCallback) {
|
||||||
const { callExp, valueUsedInTransform } = createCallback(
|
const { callExp, valueUsedInTransform } = createCallback([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
type: 'arrayOrObjItem',
|
type: 'arrayOrObjItem',
|
||||||
index: 0,
|
index: 0,
|
||||||
@ -1591,9 +1576,7 @@ export const angledLineToY: SketchLineHelper = {
|
|||||||
argType: 'yAbsolute',
|
argType: 'yAbsolute',
|
||||||
expr: yArg,
|
expr: yArg,
|
||||||
},
|
},
|
||||||
],
|
])
|
||||||
referencedSegment
|
|
||||||
)
|
|
||||||
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
const { index: callIndex } = splitPathAtPipeExpression(pathToNode)
|
||||||
pipe.body[callIndex] = callExp
|
pipe.body[callIndex] = callExp
|
||||||
return {
|
return {
|
||||||
@ -2121,7 +2104,7 @@ export function replaceSketchLine({
|
|||||||
pathToNode: PathToNode
|
pathToNode: PathToNode
|
||||||
fnName: ToolTip
|
fnName: ToolTip
|
||||||
segmentInput: SegmentInputs
|
segmentInput: SegmentInputs
|
||||||
createCallback: TransformCallback
|
createCallback: (rawArgs: RawArgs) => ReturnType<CreateStdLibSketchCallExpr>
|
||||||
referencedSegment?: Path
|
referencedSegment?: Path
|
||||||
}):
|
}):
|
||||||
| {
|
| {
|
||||||
@ -2151,13 +2134,16 @@ export function replaceSketchLine({
|
|||||||
return { modifiedAst, valueUsedInTransform, pathToNode }
|
return { modifiedAst, valueUsedInTransform, pathToNode }
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addTagForSketchOnFace(a: AddTagInfo, expressionName: string) {
|
export function addTagForSketchOnFace(
|
||||||
|
tagInfo: AddTagInfo,
|
||||||
|
expressionName: string
|
||||||
|
) {
|
||||||
if (expressionName === 'close') {
|
if (expressionName === 'close') {
|
||||||
return addTag(1)(a)
|
return addTag(1)(tagInfo)
|
||||||
}
|
}
|
||||||
if (expressionName in sketchLineHelperMap) {
|
if (expressionName in sketchLineHelperMap) {
|
||||||
const { addTag } = sketchLineHelperMap[expressionName]
|
const { addTag } = sketchLineHelperMap[expressionName]
|
||||||
return addTag(a)
|
return addTag(tagInfo)
|
||||||
}
|
}
|
||||||
return new Error(`"${expressionName}" is not a sketch line helper`)
|
return new Error(`"${expressionName}" is not a sketch line helper`)
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import {
|
import {
|
||||||
|
CreateStdLibSketchCallExpr,
|
||||||
InputArg,
|
InputArg,
|
||||||
InputArgs,
|
InputArgs,
|
||||||
SimplifiedArgDetails,
|
SimplifiedArgDetails,
|
||||||
TransformCallback,
|
TransformInfo,
|
||||||
} from './stdTypes'
|
} from './stdTypes'
|
||||||
import { ToolTip, toolTips } from 'lang/langHelpers'
|
import { ToolTip, toolTips } from 'lang/langHelpers'
|
||||||
import { Selections, Selection } from 'lib/selections'
|
import { Selections, Selection } from 'lib/selections'
|
||||||
@ -77,7 +78,7 @@ function createCallWrapper(
|
|||||||
val: [Expr, Expr] | Expr,
|
val: [Expr, Expr] | Expr,
|
||||||
tag?: Expr,
|
tag?: Expr,
|
||||||
valueUsedInTransform?: number
|
valueUsedInTransform?: number
|
||||||
): ReturnType<TransformCallback> {
|
): ReturnType<CreateStdLibSketchCallExpr> {
|
||||||
const args =
|
const args =
|
||||||
tooltip === 'circle'
|
tooltip === 'circle'
|
||||||
? []
|
? []
|
||||||
@ -115,7 +116,7 @@ function createStdlibCallExpression(
|
|||||||
val: Expr,
|
val: Expr,
|
||||||
tag?: Expr,
|
tag?: Expr,
|
||||||
valueUsedInTransform?: number
|
valueUsedInTransform?: number
|
||||||
): ReturnType<TransformCallback> {
|
): ReturnType<CreateStdLibSketchCallExpr> {
|
||||||
const args = [val, createPipeSubstitution()]
|
const args = [val, createPipeSubstitution()]
|
||||||
if (tag) {
|
if (tag) {
|
||||||
args.push(tag)
|
args.push(tag)
|
||||||
@ -140,7 +141,7 @@ function intersectCallWrapper({
|
|||||||
intersectTag: Expr
|
intersectTag: Expr
|
||||||
tag?: Expr
|
tag?: Expr
|
||||||
valueUsedInTransform?: number
|
valueUsedInTransform?: number
|
||||||
}): ReturnType<TransformCallback> {
|
}): ReturnType<CreateStdLibSketchCallExpr> {
|
||||||
const firstArg: any = {
|
const firstArg: any = {
|
||||||
angle: angleVal,
|
angle: angleVal,
|
||||||
offset: offsetVal,
|
offset: offsetVal,
|
||||||
@ -159,16 +160,6 @@ function intersectCallWrapper({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TransformInfo = {
|
|
||||||
tooltip: ToolTip
|
|
||||||
createNode: (a: {
|
|
||||||
inputs: InputArgs
|
|
||||||
referenceSegName: string
|
|
||||||
tag?: Expr
|
|
||||||
forceValueUsedInTransform?: Expr
|
|
||||||
}) => TransformCallback
|
|
||||||
}
|
|
||||||
|
|
||||||
type TransformMap = {
|
type TransformMap = {
|
||||||
[key in ToolTip]?: {
|
[key in ToolTip]?: {
|
||||||
[key in LineInputsType | 'free']?: {
|
[key in LineInputsType | 'free']?: {
|
||||||
@ -178,12 +169,8 @@ type TransformMap = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const xyLineSetLength =
|
const xyLineSetLength =
|
||||||
(
|
(xOrY: 'xLine' | 'yLine', referenceSeg = false): CreateStdLibSketchCallExpr =>
|
||||||
xOrY: 'xLine' | 'yLine',
|
({ referenceSegName, tag, forceValueUsedInTransform, rawArgs: args }) => {
|
||||||
referenceSeg = false
|
|
||||||
): TransformInfo['createNode'] =>
|
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform }) =>
|
|
||||||
(args) => {
|
|
||||||
const segRef = createSegLen(referenceSegName)
|
const segRef = createSegLen(referenceSegName)
|
||||||
const lineVal = forceValueUsedInTransform
|
const lineVal = forceValueUsedInTransform
|
||||||
? forceValueUsedInTransform
|
? forceValueUsedInTransform
|
||||||
@ -198,9 +185,15 @@ const basicAngledLineCreateNode =
|
|||||||
referenceSeg: 'ang' | 'len' | 'none' = 'none',
|
referenceSeg: 'ang' | 'len' | 'none' = 'none',
|
||||||
valToForce: 'ang' | 'len' | 'none' = 'none',
|
valToForce: 'ang' | 'len' | 'none' = 'none',
|
||||||
varValToUse: 'ang' | 'len' | 'none' = 'none'
|
varValToUse: 'ang' | 'len' | 'none' = 'none'
|
||||||
): TransformInfo['createNode'] =>
|
): CreateStdLibSketchCallExpr =>
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform, inputs }) =>
|
({
|
||||||
(args, path) => {
|
referenceSegName,
|
||||||
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
inputs,
|
||||||
|
rawArgs: args,
|
||||||
|
referencedSegment: path,
|
||||||
|
}) => {
|
||||||
const refAng = path ? getAngle(path?.from, path?.to) : 0
|
const refAng = path ? getAngle(path?.from, path?.to) : 0
|
||||||
const nonForcedAng =
|
const nonForcedAng =
|
||||||
varValToUse === 'ang'
|
varValToUse === 'ang'
|
||||||
@ -230,9 +223,11 @@ const basicAngledLineCreateNode =
|
|||||||
getArgLiteralVal(valToForce === 'ang' ? args[0].expr : args[1].expr)
|
getArgLiteralVal(valToForce === 'ang' ? args[0].expr : args[1].expr)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
const angledLineAngleCreateNode: TransformInfo['createNode'] =
|
const angledLineAngleCreateNode: CreateStdLibSketchCallExpr = ({
|
||||||
({ referenceSegName, inputs, tag }) =>
|
referenceSegName,
|
||||||
() =>
|
inputs,
|
||||||
|
tag,
|
||||||
|
}) =>
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'angledLine',
|
'angledLine',
|
||||||
[inputs[0].expr, createSegLen(referenceSegName)],
|
[inputs[0].expr, createSegLen(referenceSegName)],
|
||||||
@ -302,12 +297,14 @@ function getClosesAngleDirection(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setHorzVertDistanceCreateNode =
|
const setHorzVertDistanceCreateNode =
|
||||||
(
|
(xOrY: 'x' | 'y', index = xOrY === 'x' ? 0 : 1): CreateStdLibSketchCallExpr =>
|
||||||
xOrY: 'x' | 'y',
|
({
|
||||||
index = xOrY === 'x' ? 0 : 1
|
referenceSegName,
|
||||||
): TransformInfo['createNode'] =>
|
tag,
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform }) => {
|
forceValueUsedInTransform,
|
||||||
return (args, referencedSegment) => {
|
rawArgs: args,
|
||||||
|
referencedSegment,
|
||||||
|
}) => {
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
getArgLiteralVal(args?.[index].expr) -
|
getArgLiteralVal(args?.[index].expr) -
|
||||||
(referencedSegment?.to?.[index] || 0),
|
(referencedSegment?.to?.[index] || 0),
|
||||||
@ -328,17 +325,18 @@ const setHorzVertDistanceCreateNode =
|
|||||||
valueUsedInTransform
|
valueUsedInTransform
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
const setHorzVertDistanceForAngleLineCreateNode =
|
const setHorzVertDistanceForAngleLineCreateNode =
|
||||||
(
|
(xOrY: 'x' | 'y', index = xOrY === 'x' ? 0 : 1): CreateStdLibSketchCallExpr =>
|
||||||
xOrY: 'x' | 'y',
|
({
|
||||||
index = xOrY === 'x' ? 0 : 1
|
referenceSegName,
|
||||||
): TransformInfo['createNode'] =>
|
tag,
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform, inputs }) => {
|
forceValueUsedInTransform,
|
||||||
return (args, referencedSegment) => {
|
inputs,
|
||||||
|
rawArgs: args,
|
||||||
|
referencedSegment,
|
||||||
|
}) => {
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
getArgLiteralVal(args?.[1].expr) -
|
getArgLiteralVal(args?.[1].expr) - (referencedSegment?.to?.[index] || 0),
|
||||||
(referencedSegment?.to?.[index] || 0),
|
|
||||||
2
|
2
|
||||||
)
|
)
|
||||||
const binExp = createBinaryExpressionWithUnary([
|
const binExp = createBinaryExpressionWithUnary([
|
||||||
@ -353,16 +351,14 @@ const setHorzVertDistanceForAngleLineCreateNode =
|
|||||||
valueUsedInTransform
|
valueUsedInTransform
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const setAbsDistanceCreateNode =
|
const setAbsDistanceCreateNode =
|
||||||
(
|
(
|
||||||
xOrY: 'x' | 'y',
|
xOrY: 'x' | 'y',
|
||||||
isXOrYLine = false,
|
isXOrYLine = false,
|
||||||
index = xOrY === 'x' ? 0 : 1
|
index = xOrY === 'x' ? 0 : 1
|
||||||
): TransformInfo['createNode'] =>
|
): CreateStdLibSketchCallExpr =>
|
||||||
({ tag, forceValueUsedInTransform }) =>
|
({ tag, forceValueUsedInTransform, rawArgs: args }) => {
|
||||||
(args) => {
|
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
getArgLiteralVal(args?.[index].expr),
|
getArgLiteralVal(args?.[index].expr),
|
||||||
2
|
2
|
||||||
@ -386,9 +382,8 @@ const setAbsDistanceCreateNode =
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
const setAbsDistanceForAngleLineCreateNode =
|
const setAbsDistanceForAngleLineCreateNode =
|
||||||
(xOrY: 'x' | 'y'): TransformInfo['createNode'] =>
|
(xOrY: 'x' | 'y'): CreateStdLibSketchCallExpr =>
|
||||||
({ tag, forceValueUsedInTransform, inputs }) => {
|
({ tag, forceValueUsedInTransform, inputs, rawArgs: args }) => {
|
||||||
return (args) => {
|
|
||||||
const valueUsedInTransform = roundOff(getArgLiteralVal(args?.[1].expr), 2)
|
const valueUsedInTransform = roundOff(getArgLiteralVal(args?.[1].expr), 2)
|
||||||
const val =
|
const val =
|
||||||
(forceValueUsedInTransform as BinaryPart) ||
|
(forceValueUsedInTransform as BinaryPart) ||
|
||||||
@ -400,12 +395,16 @@ const setAbsDistanceForAngleLineCreateNode =
|
|||||||
valueUsedInTransform
|
valueUsedInTransform
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const setHorVertDistanceForXYLines =
|
const setHorVertDistanceForXYLines =
|
||||||
(xOrY: 'x' | 'y'): TransformInfo['createNode'] =>
|
(xOrY: 'x' | 'y'): CreateStdLibSketchCallExpr =>
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform }) => {
|
({
|
||||||
return (args, referencedSegment) => {
|
referenceSegName,
|
||||||
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
rawArgs: args,
|
||||||
|
referencedSegment,
|
||||||
|
}) => {
|
||||||
const index = xOrY === 'x' ? 0 : 1
|
const index = xOrY === 'x' ? 0 : 1
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
getArgLiteralVal(args?.[index].expr) -
|
getArgLiteralVal(args?.[index].expr) -
|
||||||
@ -424,11 +423,10 @@ const setHorVertDistanceForXYLines =
|
|||||||
valueUsedInTransform
|
valueUsedInTransform
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const setHorzVertDistanceConstraintLineCreateNode =
|
const setHorzVertDistanceConstraintLineCreateNode =
|
||||||
(isX: boolean): TransformInfo['createNode'] =>
|
(isX: boolean): CreateStdLibSketchCallExpr =>
|
||||||
({ referenceSegName, tag, inputs }) => {
|
({ referenceSegName, tag, inputs, rawArgs: args, referencedSegment }) => {
|
||||||
let varVal = isX ? inputs[1].expr : inputs[0].expr
|
let varVal = isX ? inputs[1].expr : inputs[0].expr
|
||||||
varVal = isExprBinaryPart(varVal) ? varVal : createLiteral(0)
|
varVal = isExprBinaryPart(varVal) ? varVal : createLiteral(0)
|
||||||
const varValBinExp = createBinaryExpressionWithUnary([
|
const varValBinExp = createBinaryExpressionWithUnary([
|
||||||
@ -436,14 +434,11 @@ const setHorzVertDistanceConstraintLineCreateNode =
|
|||||||
varVal,
|
varVal,
|
||||||
])
|
])
|
||||||
|
|
||||||
return (args, referencedSegment) => {
|
|
||||||
const makeBinExp = (index: 0 | 1) => {
|
const makeBinExp = (index: 0 | 1) => {
|
||||||
const arg = getArgLiteralVal(args?.[index].expr)
|
const arg = getArgLiteralVal(args?.[index].expr)
|
||||||
return createBinaryExpressionWithUnary([
|
return createBinaryExpressionWithUnary([
|
||||||
createSegEnd(referenceSegName, isX),
|
createSegEnd(referenceSegName, isX),
|
||||||
createLiteral(
|
createLiteral(roundOff(arg - (referencedSegment?.to?.[index] || 0), 2)),
|
||||||
roundOff(arg - (referencedSegment?.to?.[index] || 0), 2)
|
|
||||||
),
|
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
return createCallWrapper(
|
return createCallWrapper(
|
||||||
@ -452,17 +447,18 @@ const setHorzVertDistanceConstraintLineCreateNode =
|
|||||||
tag
|
tag
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const setAngledIntersectLineForLines: TransformInfo['createNode'] =
|
const setAngledIntersectLineForLines: CreateStdLibSketchCallExpr = ({
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform }) =>
|
referenceSegName,
|
||||||
(args) => {
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
rawArgs: args,
|
||||||
|
}) => {
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
args[1].expr.type === 'Literal' ? Number(args[1].expr.value) : 0,
|
args[1].expr.type === 'Literal' ? Number(args[1].expr.value) : 0,
|
||||||
2
|
2
|
||||||
)
|
)
|
||||||
const angle =
|
const angle = args[0].expr.type === 'Literal' ? Number(args[0].expr.value) : 0
|
||||||
args[0].expr.type === 'Literal' ? Number(args[0].expr.value) : 0
|
|
||||||
const varNamMap: { [key: number]: string } = {
|
const varNamMap: { [key: number]: string } = {
|
||||||
0: 'ZERO',
|
0: 'ZERO',
|
||||||
90: 'QUARTER_TURN',
|
90: 'QUARTER_TURN',
|
||||||
@ -475,17 +471,20 @@ const setAngledIntersectLineForLines: TransformInfo['createNode'] =
|
|||||||
return intersectCallWrapper({
|
return intersectCallWrapper({
|
||||||
fnName: 'angledLineThatIntersects',
|
fnName: 'angledLineThatIntersects',
|
||||||
angleVal,
|
angleVal,
|
||||||
offsetVal:
|
offsetVal: forceValueUsedInTransform || createLiteral(valueUsedInTransform),
|
||||||
forceValueUsedInTransform || createLiteral(valueUsedInTransform),
|
|
||||||
intersectTag: createIdentifier(referenceSegName),
|
intersectTag: createIdentifier(referenceSegName),
|
||||||
tag,
|
tag,
|
||||||
valueUsedInTransform,
|
valueUsedInTransform,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const setAngledIntersectForAngledLines: TransformInfo['createNode'] =
|
const setAngledIntersectForAngledLines: CreateStdLibSketchCallExpr = ({
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform, inputs }) =>
|
referenceSegName,
|
||||||
(args) => {
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
inputs,
|
||||||
|
rawArgs: args,
|
||||||
|
}) => {
|
||||||
const valueUsedInTransform = roundOff(
|
const valueUsedInTransform = roundOff(
|
||||||
args[1].expr.type === 'Literal' ? Number(args[1].expr.value) : 0,
|
args[1].expr.type === 'Literal' ? Number(args[1].expr.value) : 0,
|
||||||
2
|
2
|
||||||
@ -493,8 +492,7 @@ const setAngledIntersectForAngledLines: TransformInfo['createNode'] =
|
|||||||
return intersectCallWrapper({
|
return intersectCallWrapper({
|
||||||
fnName: 'angledLineThatIntersects',
|
fnName: 'angledLineThatIntersects',
|
||||||
angleVal: inputs[0].expr,
|
angleVal: inputs[0].expr,
|
||||||
offsetVal:
|
offsetVal: forceValueUsedInTransform || createLiteral(valueUsedInTransform),
|
||||||
forceValueUsedInTransform || createLiteral(valueUsedInTransform),
|
|
||||||
intersectTag: createIdentifier(referenceSegName),
|
intersectTag: createIdentifier(referenceSegName),
|
||||||
tag,
|
tag,
|
||||||
valueUsedInTransform,
|
valueUsedInTransform,
|
||||||
@ -502,9 +500,15 @@ const setAngledIntersectForAngledLines: TransformInfo['createNode'] =
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setAngleBetweenCreateNode =
|
const setAngleBetweenCreateNode =
|
||||||
(tranformToType: 'none' | 'xAbs' | 'yAbs'): TransformInfo['createNode'] =>
|
(tranformToType: 'none' | 'xAbs' | 'yAbs'): CreateStdLibSketchCallExpr =>
|
||||||
({ referenceSegName, tag, forceValueUsedInTransform, inputs }) => {
|
({
|
||||||
return (args, referencedSegment) => {
|
referenceSegName,
|
||||||
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
inputs,
|
||||||
|
rawArgs: args,
|
||||||
|
referencedSegment,
|
||||||
|
}) => {
|
||||||
const refAngle = referencedSegment
|
const refAngle = referencedSegment
|
||||||
? getAngle(referencedSegment?.from, referencedSegment?.to)
|
? getAngle(referencedSegment?.from, referencedSegment?.to)
|
||||||
: 0
|
: 0
|
||||||
@ -543,20 +547,18 @@ const setAngleBetweenCreateNode =
|
|||||||
valueUsedInTransform
|
valueUsedInTransform
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const transformMap: TransformMap = {
|
const transformMap: TransformMap = {
|
||||||
line: {
|
line: {
|
||||||
xRelative: {
|
xRelative: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'line',
|
tooltip: 'line',
|
||||||
createNode: ({ referenceSegName, inputs, tag }) => {
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
const [minVal, legLenVal] = getMinAndSegLenVals(
|
const [minVal, legLenVal] = getMinAndSegLenVals(
|
||||||
referenceSegName,
|
referenceSegName,
|
||||||
inputs[0].expr
|
inputs[0].expr
|
||||||
)
|
)
|
||||||
return (args) =>
|
return createCallWrapper(
|
||||||
createCallWrapper(
|
|
||||||
'line',
|
'line',
|
||||||
[minVal, getSignedLeg(args[1].expr, legLenVal)],
|
[minVal, getSignedLeg(args[1].expr, legLenVal)],
|
||||||
tag
|
tag
|
||||||
@ -565,9 +567,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('xLine', inputs[0].expr, tag),
|
createCallWrapper('xLine', inputs[0].expr, tag),
|
||||||
},
|
},
|
||||||
setVertDistance: {
|
setVertDistance: {
|
||||||
@ -578,13 +578,12 @@ const transformMap: TransformMap = {
|
|||||||
yRelative: {
|
yRelative: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'line',
|
tooltip: 'line',
|
||||||
createNode: ({ referenceSegName, inputs, tag }) => {
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
const [minVal, legLenVal] = getMinAndSegLenVals(
|
const [minVal, legLenVal] = getMinAndSegLenVals(
|
||||||
referenceSegName,
|
referenceSegName,
|
||||||
inputs[1].expr
|
inputs[1].expr
|
||||||
)
|
)
|
||||||
return (args) =>
|
return createCallWrapper(
|
||||||
createCallWrapper(
|
|
||||||
'line',
|
'line',
|
||||||
[getSignedLeg(args[0].expr, legLenVal), minVal],
|
[getSignedLeg(args[0].expr, legLenVal), minVal],
|
||||||
tag
|
tag
|
||||||
@ -593,9 +592,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('yLine', inputs[1].expr, tag),
|
createCallWrapper('yLine', inputs[1].expr, tag),
|
||||||
},
|
},
|
||||||
setHorzDistance: {
|
setHorzDistance: {
|
||||||
@ -610,16 +607,12 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper('xLine', args[0].expr, tag),
|
createCallWrapper('xLine', args[0].expr, tag),
|
||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'yLine',
|
'yLine',
|
||||||
getInputOfType(args, 'yRelative').expr,
|
getInputOfType(args, 'yRelative').expr,
|
||||||
@ -672,16 +665,12 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLineTo',
|
tooltip: 'xLineTo',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper('xLineTo', args[0].expr, tag),
|
createCallWrapper('xLineTo', args[0].expr, tag),
|
||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLineTo',
|
tooltip: 'yLineTo',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'yLineTo',
|
'yLineTo',
|
||||||
getInputOfType(args, 'yAbsolute').expr,
|
getInputOfType(args, 'yAbsolute').expr,
|
||||||
@ -692,9 +681,7 @@ const transformMap: TransformMap = {
|
|||||||
xAbsolute: {
|
xAbsolute: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineToX',
|
tooltip: 'angledLineToX',
|
||||||
createNode:
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, inputs, tag }) =>
|
|
||||||
(args) => {
|
|
||||||
const angleToMatchLengthXCall = createCallExpression(
|
const angleToMatchLengthXCall = createCallExpression(
|
||||||
'angleToMatchLengthX',
|
'angleToMatchLengthX',
|
||||||
[
|
[
|
||||||
@ -715,9 +702,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLineTo',
|
tooltip: 'xLineTo',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('xLineTo', inputs[0].expr, tag),
|
createCallWrapper('xLineTo', inputs[0].expr, tag),
|
||||||
},
|
},
|
||||||
setAngleBetween: {
|
setAngleBetween: {
|
||||||
@ -728,9 +713,7 @@ const transformMap: TransformMap = {
|
|||||||
yAbsolute: {
|
yAbsolute: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineToY',
|
tooltip: 'angledLineToY',
|
||||||
createNode:
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, inputs, tag }) =>
|
|
||||||
(args) => {
|
|
||||||
const angleToMatchLengthYCall = createCallExpression(
|
const angleToMatchLengthYCall = createCallExpression(
|
||||||
'angleToMatchLengthY',
|
'angleToMatchLengthY',
|
||||||
[
|
[
|
||||||
@ -751,16 +734,17 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLineTo',
|
tooltip: 'yLineTo',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('yLineTo', inputs[1].expr, tag),
|
createCallWrapper('yLineTo', inputs[1].expr, tag),
|
||||||
},
|
},
|
||||||
setAngle: {
|
setAngle: {
|
||||||
tooltip: 'angledLineToY',
|
tooltip: 'angledLineToY',
|
||||||
createNode:
|
createNode: ({
|
||||||
({ inputs, tag, forceValueUsedInTransform }) =>
|
inputs,
|
||||||
(args) => {
|
tag,
|
||||||
|
forceValueUsedInTransform,
|
||||||
|
rawArgs: args,
|
||||||
|
}) => {
|
||||||
return createCallWrapper(
|
return createCallWrapper(
|
||||||
'angledLineToY',
|
'angledLineToY',
|
||||||
[forceValueUsedInTransform || args[0].expr, inputs[1].expr],
|
[forceValueUsedInTransform || args[0].expr, inputs[1].expr],
|
||||||
@ -779,9 +763,7 @@ const transformMap: TransformMap = {
|
|||||||
angle: {
|
angle: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLine',
|
tooltip: 'angledLine',
|
||||||
createNode:
|
createNode: ({ referenceSegName, inputs, tag }) =>
|
||||||
({ referenceSegName, inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'angledLine',
|
'angledLine',
|
||||||
[inputs[0].expr, createSegLen(referenceSegName)],
|
[inputs[0].expr, createSegLen(referenceSegName)],
|
||||||
@ -824,9 +806,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'yLine',
|
'yLine',
|
||||||
getInputOfType(args, 'yRelative').expr,
|
getInputOfType(args, 'yRelative').expr,
|
||||||
@ -835,45 +815,35 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper('xLine', args[0].expr, tag),
|
createCallWrapper('xLine', args[0].expr, tag),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
length: {
|
length: {
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag, rawArgs: args }) => {
|
||||||
({ inputs, tag }) =>
|
|
||||||
([arg0]) => {
|
|
||||||
const expr = inputs[1].expr
|
const expr = inputs[1].expr
|
||||||
if (!(arg0.expr.type === 'Literal' && Number(arg0.expr.value) < 0))
|
if (
|
||||||
|
!(args[0].expr.type === 'Literal' && Number(args[0].expr.value) < 0)
|
||||||
|
)
|
||||||
return createCallWrapper('yLine', expr, tag)
|
return createCallWrapper('yLine', expr, tag)
|
||||||
if (isExprBinaryPart(expr))
|
if (isExprBinaryPart(expr))
|
||||||
return createCallWrapper(
|
return createCallWrapper('yLine', createUnaryExpression(expr), tag)
|
||||||
'yLine',
|
|
||||||
createUnaryExpression(expr),
|
|
||||||
tag
|
|
||||||
)
|
|
||||||
// TODO maybe should return error here instead
|
// TODO maybe should return error here instead
|
||||||
return createCallWrapper('yLine', expr, tag)
|
return createCallWrapper('yLine', expr, tag)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag, rawArgs: args }) => {
|
||||||
({ inputs, tag }) =>
|
|
||||||
([arg0]) => {
|
|
||||||
const expr = inputs[1].expr
|
const expr = inputs[1].expr
|
||||||
if (!(arg0.expr.type === 'Literal' && Number(arg0.expr.value) < 0))
|
if (
|
||||||
|
!(args[0].expr.type === 'Literal' && Number(args[0].expr.value) < 0)
|
||||||
|
)
|
||||||
return createCallWrapper('xLine', expr, tag)
|
return createCallWrapper('xLine', expr, tag)
|
||||||
if (isExprBinaryPart(expr))
|
if (isExprBinaryPart(expr))
|
||||||
return createCallWrapper(
|
return createCallWrapper('xLine', createUnaryExpression(expr), tag)
|
||||||
'xLine',
|
|
||||||
createUnaryExpression(expr),
|
|
||||||
tag
|
|
||||||
)
|
|
||||||
// TODO maybe should return error here instead
|
// TODO maybe should return error here instead
|
||||||
return createCallWrapper('xLine', expr, tag)
|
return createCallWrapper('xLine', expr, tag)
|
||||||
},
|
},
|
||||||
@ -896,9 +866,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper('xLine', args[0].expr, tag),
|
createCallWrapper('xLine', args[0].expr, tag),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -911,13 +879,12 @@ const transformMap: TransformMap = {
|
|||||||
xRelative: {
|
xRelative: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineOfXLength',
|
tooltip: 'angledLineOfXLength',
|
||||||
createNode: ({ referenceSegName, inputs, tag }) => {
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
const [minVal, legAngle] = getMinAndSegAngVals(
|
const [minVal, legAngle] = getMinAndSegAngVals(
|
||||||
referenceSegName,
|
referenceSegName,
|
||||||
getInputOfType(inputs, 'xRelative').expr
|
getInputOfType(inputs, 'xRelative').expr
|
||||||
)
|
)
|
||||||
return (args) =>
|
return createCallWrapper(
|
||||||
createCallWrapper(
|
|
||||||
'angledLineOfXLength',
|
'angledLineOfXLength',
|
||||||
[getLegAng(args[0].expr, legAngle), minVal],
|
[getLegAng(args[0].expr, legAngle), minVal],
|
||||||
tag
|
tag
|
||||||
@ -926,18 +893,14 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag, rawArgs: args }) => {
|
||||||
({ inputs, tag }) =>
|
|
||||||
([arg0]) => {
|
|
||||||
const expr = inputs[1].expr
|
const expr = inputs[1].expr
|
||||||
if (!(arg0.expr.type === 'Literal' && Number(arg0.expr.value) < 0))
|
if (
|
||||||
|
!(args[0].expr.type === 'Literal' && Number(args[0].expr.value) < 0)
|
||||||
|
)
|
||||||
return createCallWrapper('xLine', expr, tag)
|
return createCallWrapper('xLine', expr, tag)
|
||||||
if (isExprBinaryPart(expr))
|
if (isExprBinaryPart(expr))
|
||||||
return createCallWrapper(
|
return createCallWrapper('xLine', createUnaryExpression(expr), tag)
|
||||||
'xLine',
|
|
||||||
createUnaryExpression(expr),
|
|
||||||
tag
|
|
||||||
)
|
|
||||||
// TODO maybe should return error here instead
|
// TODO maybe should return error here instead
|
||||||
return createCallWrapper('xLine', expr, tag)
|
return createCallWrapper('xLine', expr, tag)
|
||||||
},
|
},
|
||||||
@ -952,9 +915,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'yLine',
|
'yLine',
|
||||||
getInputOfType(args, 'yRelative').expr,
|
getInputOfType(args, 'yRelative').expr,
|
||||||
@ -971,14 +932,13 @@ const transformMap: TransformMap = {
|
|||||||
yRelative: {
|
yRelative: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineOfYLength',
|
tooltip: 'angledLineOfYLength',
|
||||||
createNode: ({ referenceSegName, inputs, tag }) => {
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
const [minVal, legAngle] = getMinAndSegAngVals(
|
const [minVal, legAngle] = getMinAndSegAngVals(
|
||||||
referenceSegName,
|
referenceSegName,
|
||||||
inputs[1].expr,
|
inputs[1].expr,
|
||||||
'legAngY'
|
'legAngY'
|
||||||
)
|
)
|
||||||
return (args) =>
|
return createCallWrapper(
|
||||||
createCallWrapper(
|
|
||||||
'angledLineOfXLength',
|
'angledLineOfXLength',
|
||||||
[getLegAng(args[0].expr, legAngle), minVal],
|
[getLegAng(args[0].expr, legAngle), minVal],
|
||||||
tag
|
tag
|
||||||
@ -987,18 +947,14 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ inputs, tag, rawArgs: args }) => {
|
||||||
({ inputs, tag }) =>
|
|
||||||
([arg0]) => {
|
|
||||||
const expr = inputs[1].expr
|
const expr = inputs[1].expr
|
||||||
if (!(arg0.expr.type === 'Literal' && Number(arg0.expr.value) < 0))
|
if (
|
||||||
|
!(args[0].expr.type === 'Literal' && Number(args[0].expr.value) < 0)
|
||||||
|
)
|
||||||
return createCallWrapper('yLine', expr, tag)
|
return createCallWrapper('yLine', expr, tag)
|
||||||
if (isExprBinaryPart(expr))
|
if (isExprBinaryPart(expr))
|
||||||
return createCallWrapper(
|
return createCallWrapper('yLine', createUnaryExpression(expr), tag)
|
||||||
'yLine',
|
|
||||||
createUnaryExpression(expr),
|
|
||||||
tag
|
|
||||||
)
|
|
||||||
// TODO maybe should return error here instead
|
// TODO maybe should return error here instead
|
||||||
return createCallWrapper('yLine', expr, tag)
|
return createCallWrapper('yLine', expr, tag)
|
||||||
},
|
},
|
||||||
@ -1013,9 +969,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLineTo',
|
tooltip: 'xLineTo',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper('xLineTo', args[0].expr, tag),
|
createCallWrapper('xLineTo', args[0].expr, tag),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1028,9 +982,7 @@ const transformMap: TransformMap = {
|
|||||||
xAbsolute: {
|
xAbsolute: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineToX',
|
tooltip: 'angledLineToX',
|
||||||
createNode:
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, inputs, tag }) =>
|
|
||||||
(args) => {
|
|
||||||
const angleToMatchLengthXCall = createCallExpression(
|
const angleToMatchLengthXCall = createCallExpression(
|
||||||
'angleToMatchLengthX',
|
'angleToMatchLengthX',
|
||||||
[
|
[
|
||||||
@ -1051,9 +1003,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
horizontal: {
|
horizontal: {
|
||||||
tooltip: 'xLineTo',
|
tooltip: 'xLineTo',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
([arg0]) =>
|
|
||||||
createCallWrapper('xLineTo', inputs[1].expr, tag),
|
createCallWrapper('xLineTo', inputs[1].expr, tag),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1066,9 +1016,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLineTo',
|
tooltip: 'yLineTo',
|
||||||
createNode:
|
createNode: ({ tag, rawArgs: args }) =>
|
||||||
({ tag }) =>
|
|
||||||
(args) =>
|
|
||||||
createCallWrapper(
|
createCallWrapper(
|
||||||
'yLineTo',
|
'yLineTo',
|
||||||
getInputOfType(args, 'yAbsolute').expr,
|
getInputOfType(args, 'yAbsolute').expr,
|
||||||
@ -1085,9 +1033,7 @@ const transformMap: TransformMap = {
|
|||||||
yAbsolute: {
|
yAbsolute: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'angledLineToY',
|
tooltip: 'angledLineToY',
|
||||||
createNode:
|
createNode: ({ referenceSegName, inputs, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, inputs, tag }) =>
|
|
||||||
(args) => {
|
|
||||||
const angleToMatchLengthXCall = createCallExpression(
|
const angleToMatchLengthXCall = createCallExpression(
|
||||||
'angleToMatchLengthY',
|
'angleToMatchLengthY',
|
||||||
[
|
[
|
||||||
@ -1108,9 +1054,7 @@ const transformMap: TransformMap = {
|
|||||||
},
|
},
|
||||||
vertical: {
|
vertical: {
|
||||||
tooltip: 'yLineTo',
|
tooltip: 'yLineTo',
|
||||||
createNode:
|
createNode: ({ inputs, tag }) =>
|
||||||
({ inputs, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('yLineTo', inputs[1].expr, tag),
|
createCallWrapper('yLineTo', inputs[1].expr, tag),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1119,13 +1063,10 @@ const transformMap: TransformMap = {
|
|||||||
free: {
|
free: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ referenceSegName, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, tag }) =>
|
const argVal = getArgLiteralVal(args[0].expr)
|
||||||
(arg) => {
|
|
||||||
const argVal = getArgLiteralVal(arg[0].expr)
|
|
||||||
const segLen = createSegLen(referenceSegName) // as BinaryPart
|
const segLen = createSegLen(referenceSegName) // as BinaryPart
|
||||||
if (argVal > 0)
|
if (argVal > 0) return createCallWrapper('xLine', segLen, tag, argVal)
|
||||||
return createCallWrapper('xLine', segLen, tag, argVal)
|
|
||||||
if (isExprBinaryPart(segLen))
|
if (isExprBinaryPart(segLen))
|
||||||
return createCallWrapper(
|
return createCallWrapper(
|
||||||
'xLine',
|
'xLine',
|
||||||
@ -1159,10 +1100,8 @@ const transformMap: TransformMap = {
|
|||||||
free: {
|
free: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ referenceSegName, tag, rawArgs: args }) => {
|
||||||
({ referenceSegName, tag }) =>
|
const argVal = getArgLiteralVal(args[0].expr)
|
||||||
(arg) => {
|
|
||||||
const argVal = getArgLiteralVal(arg[0].expr)
|
|
||||||
let segLen = createSegLen(referenceSegName) as BinaryPart
|
let segLen = createSegLen(referenceSegName) as BinaryPart
|
||||||
if (argVal < 0) segLen = createUnaryExpression(segLen)
|
if (argVal < 0) segLen = createUnaryExpression(segLen)
|
||||||
return createCallWrapper('yLine', segLen, tag, argVal)
|
return createCallWrapper('yLine', segLen, tag, argVal)
|
||||||
@ -1190,9 +1129,7 @@ const transformMap: TransformMap = {
|
|||||||
free: {
|
free: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'xLine',
|
tooltip: 'xLine',
|
||||||
createNode:
|
createNode: ({ referenceSegName, tag }) =>
|
||||||
({ referenceSegName, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('xLine', createSegLen(referenceSegName), tag),
|
createCallWrapper('xLine', createSegLen(referenceSegName), tag),
|
||||||
},
|
},
|
||||||
setLength: {
|
setLength: {
|
||||||
@ -1205,9 +1142,7 @@ const transformMap: TransformMap = {
|
|||||||
free: {
|
free: {
|
||||||
equalLength: {
|
equalLength: {
|
||||||
tooltip: 'yLine',
|
tooltip: 'yLine',
|
||||||
createNode:
|
createNode: ({ referenceSegName, tag }) =>
|
||||||
({ referenceSegName, tag }) =>
|
|
||||||
() =>
|
|
||||||
createCallWrapper('yLine', createSegLen(referenceSegName), tag),
|
createCallWrapper('yLine', createSegLen(referenceSegName), tag),
|
||||||
},
|
},
|
||||||
setLength: {
|
setLength: {
|
||||||
@ -1243,9 +1178,7 @@ export function getRemoveConstraintsTransform(
|
|||||||
const transformInfo: TransformInfo = {
|
const transformInfo: TransformInfo = {
|
||||||
tooltip: 'line',
|
tooltip: 'line',
|
||||||
// tooltip: name,
|
// tooltip: name,
|
||||||
createNode:
|
createNode: ({ tag, referenceSegName, rawArgs: args }) => {
|
||||||
({ tag, referenceSegName }) =>
|
|
||||||
(args) => {
|
|
||||||
return createCallWrapper('line', [args[0].expr, args[1].expr], tag)
|
return createCallWrapper('line', [args[0].expr, args[1].expr], tag)
|
||||||
// The following commented changes values to hardcode, but keeps the line type the same, maybe that's useful?
|
// The following commented changes values to hardcode, but keeps the line type the same, maybe that's useful?
|
||||||
|
|
||||||
@ -1319,9 +1252,7 @@ export function removeSingleConstraint({
|
|||||||
|
|
||||||
const transform: TransformInfo = {
|
const transform: TransformInfo = {
|
||||||
tooltip: callExp.node.callee.name as any,
|
tooltip: callExp.node.callee.name as any,
|
||||||
createNode:
|
createNode: ({ tag, inputs, rawArgs }) => {
|
||||||
({ tag, inputs }) =>
|
|
||||||
(rawValues) => {
|
|
||||||
// inputs is the current values for each of the inputs
|
// inputs is the current values for each of the inputs
|
||||||
// rawValues is the rav 'literal' values equivalent to the inputs
|
// rawValues is the rav 'literal' values equivalent to the inputs
|
||||||
// inputDetails is the one variable we're removing the constraint from
|
// inputDetails is the one variable we're removing the constraint from
|
||||||
@ -1337,7 +1268,7 @@ export function removeSingleConstraint({
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
return arg.expr
|
return arg.expr
|
||||||
const literal = rawValues.find(
|
const literal = rawArgs.find(
|
||||||
(rawValue) =>
|
(rawValue) =>
|
||||||
(rawValue.type === 'arrayItem' ||
|
(rawValue.type === 'arrayItem' ||
|
||||||
rawValue.type === 'arrayOrObjItem') &&
|
rawValue.type === 'arrayOrObjItem') &&
|
||||||
@ -1366,14 +1297,13 @@ export function removeSingleConstraint({
|
|||||||
arg.type !== 'arrayInObject'
|
arg.type !== 'arrayInObject'
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
const rawLiteralArrayInObject = rawValues.find(
|
const rawLiteralArrayInObject = rawArgs.find(
|
||||||
(rawValue) =>
|
(rawValue) =>
|
||||||
rawValue.type === 'arrayInObject' &&
|
rawValue.type === 'arrayInObject' &&
|
||||||
rawValue.key === inputDetails.key &&
|
rawValue.key === inputDetails.key &&
|
||||||
rawValue.index ===
|
rawValue.index === (arg.type === 'arrayInObject' ? arg.index : -1)
|
||||||
(arg.type === 'arrayInObject' ? arg.index : -1)
|
|
||||||
)
|
)
|
||||||
const rawLiteralObjProp = rawValues.find(
|
const rawLiteralObjProp = rawArgs.find(
|
||||||
(rawValue) =>
|
(rawValue) =>
|
||||||
(rawValue.type === 'objectProperty' ||
|
(rawValue.type === 'objectProperty' ||
|
||||||
rawValue.type === 'arrayOrObjItem' ||
|
rawValue.type === 'arrayOrObjItem' ||
|
||||||
@ -1388,9 +1318,8 @@ export function removeSingleConstraint({
|
|||||||
) {
|
) {
|
||||||
if (!arrayDetailsNameBetterLater[arg.key])
|
if (!arrayDetailsNameBetterLater[arg.key])
|
||||||
arrayDetailsNameBetterLater[arg.key] = []
|
arrayDetailsNameBetterLater[arg.key] = []
|
||||||
arrayDetailsNameBetterLater[inputDetails.key][
|
arrayDetailsNameBetterLater[inputDetails.key][inputDetails.index] =
|
||||||
inputDetails.index
|
rawLiteralArrayInObject.expr
|
||||||
] = rawLiteralArrayInObject.expr
|
|
||||||
} else if (
|
} else if (
|
||||||
inputDetails.type === 'objectProperty' &&
|
inputDetails.type === 'objectProperty' &&
|
||||||
(rawLiteralObjProp?.type === 'objectProperty' ||
|
(rawLiteralObjProp?.type === 'objectProperty' ||
|
||||||
@ -1407,13 +1336,10 @@ export function removeSingleConstraint({
|
|||||||
otherThing[arg.key] = arg.expr
|
otherThing[arg.key] = arg.expr
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const createObjParam: Parameters<typeof createObjectExpression>[0] =
|
const createObjParam: Parameters<typeof createObjectExpression>[0] = {}
|
||||||
{}
|
Object.entries(arrayDetailsNameBetterLater).forEach(([key, value]) => {
|
||||||
Object.entries(arrayDetailsNameBetterLater).forEach(
|
|
||||||
([key, value]) => {
|
|
||||||
createObjParam[key] = createArrayExpression(value)
|
createObjParam[key] = createArrayExpression(value)
|
||||||
}
|
})
|
||||||
)
|
|
||||||
const objExp = createObjectExpression({
|
const objExp = createObjectExpression({
|
||||||
...createObjParam,
|
...createObjParam,
|
||||||
...otherThing,
|
...otherThing,
|
||||||
@ -1427,7 +1353,7 @@ export function removeSingleConstraint({
|
|||||||
|
|
||||||
return createCallWrapper(
|
return createCallWrapper(
|
||||||
callExp.node.callee.name as any,
|
callExp.node.callee.name as any,
|
||||||
rawValues[0].expr,
|
rawArgs[0].expr,
|
||||||
tag
|
tag
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@ -1818,11 +1744,15 @@ export function transformAstSketchLines({
|
|||||||
to,
|
to,
|
||||||
from,
|
from,
|
||||||
},
|
},
|
||||||
createCallback: callBack({
|
|
||||||
|
createCallback: (rawArgs) =>
|
||||||
|
callBack({
|
||||||
referenceSegName: _referencedSegmentName,
|
referenceSegName: _referencedSegmentName,
|
||||||
inputs,
|
inputs,
|
||||||
tag: callBackTag,
|
tag: callBackTag,
|
||||||
|
rawArgs,
|
||||||
forceValueUsedInTransform,
|
forceValueUsedInTransform,
|
||||||
|
referencedSegment,
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
if (err(replacedSketchLine)) return replacedSketchLine
|
if (err(replacedSketchLine)) return replacedSketchLine
|
||||||
|
@ -69,7 +69,7 @@ interface addCall extends ModifyAstBase {
|
|||||||
segmentInput: SegmentInputs
|
segmentInput: SegmentInputs
|
||||||
referencedSegment?: Path
|
referencedSegment?: Path
|
||||||
replaceExisting?: boolean
|
replaceExisting?: boolean
|
||||||
createCallback?: TransformCallback // TODO: #29 probably should not be optional
|
createCallback?: (rawArgs: RawArgs) => ReturnType<CreateStdLibSketchCallExpr>
|
||||||
/// defaults to false, normal behavior is to add a new callExpression to the end of the pipeExpression
|
/// defaults to false, normal behavior is to add a new callExpression to the end of the pipeExpression
|
||||||
spliceBetween?: boolean
|
spliceBetween?: boolean
|
||||||
}
|
}
|
||||||
@ -149,13 +149,13 @@ type RawArg = _VarValue<Literal>
|
|||||||
|
|
||||||
export type InputArgs = Array<InputArg>
|
export type InputArgs = Array<InputArg>
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * The literal equivalent of whatever current expression is
|
* The literal equivalent of whatever current expression is
|
||||||
// * i.e. if the expression is 5 + 6, the literal would be 11
|
* i.e. if the expression is 5 + 6, the literal would be 11
|
||||||
// * but of course works for expressions like myVar + someFn() etc too
|
* but of course works for expressions like myVar + someFn() etc too
|
||||||
// * This is useful in cases where we want to "un-constrain" inputs to segments
|
* This is useful in cases where we want to "un-constrain" inputs to segments
|
||||||
// */
|
*/
|
||||||
type RawArgs = Array<RawArg>
|
export type RawArgs = Array<RawArg>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serves the same role as {@link InputArg} on {@link RawArg}
|
* Serves the same role as {@link InputArg} on {@link RawArg}
|
||||||
@ -174,14 +174,23 @@ export type SimplifiedArgDetails =
|
|||||||
index: 0 | 1
|
index: 0 | 1
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TransformCallback = (
|
export type CreateStdLibSketchCallExpr = (args: {
|
||||||
inputs: InputArgs,
|
inputs: InputArgs
|
||||||
|
referenceSegName: string
|
||||||
|
tag?: Expr
|
||||||
|
forceValueUsedInTransform?: Expr
|
||||||
|
rawArgs: InputArgs
|
||||||
referencedSegment?: Path
|
referencedSegment?: Path
|
||||||
) => {
|
}) => {
|
||||||
callExp: Expr
|
callExp: Expr
|
||||||
valueUsedInTransform?: number
|
valueUsedInTransform?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type TransformInfo = {
|
||||||
|
tooltip: ToolTip
|
||||||
|
createNode: CreateStdLibSketchCallExpr
|
||||||
|
}
|
||||||
|
|
||||||
export interface ConstrainInfo {
|
export interface ConstrainInfo {
|
||||||
stdLibFnName: ToolTip
|
stdLibFnName: ToolTip
|
||||||
type:
|
type:
|
||||||
|
Reference in New Issue
Block a user