Files
modeling-app/src/components/Toolbar/RemoveConstrainingValues.tsx
Kurt Hutten b257b202c3 Add modal typing back in, and clean up old constraints code (#865)
* Revert "Revert "Improve Prop Typings for Modals. Remove instances of `any`. (… (#813)"

This reverts commit 9822576077.

* tsc

* refactor all buttons

* add parallel constraint

* typegen?

* add constraint removal constraint

* add perpendicular distance constraint

* state diagram layout

* fmt

* improve modal typing for setAngleLength
2023-10-15 21:54:38 +00:00

63 lines
1.6 KiB
TypeScript

import { Selections, toolTips } from '../../useStore'
import { Program, Value } from '../../lang/wasm'
import {
getNodePathFromSourceRange,
getNodeFromPath,
} from '../../lang/queryAst'
import {
PathToNodeMap,
getRemoveConstraintsTransforms,
transformAstSketchLines,
} from '../../lang/std/sketchcombos'
import { kclManager } from 'lang/KclSinglton'
export function removeConstrainingValuesInfo({
selectionRanges,
}: {
selectionRanges: Selections
}) {
const paths = selectionRanges.codeBasedSelections.map(({ range }) =>
getNodePathFromSourceRange(kclManager.ast, range)
)
const nodes = paths.map(
(pathToNode) => getNodeFromPath<Value>(kclManager.ast, pathToNode).node
)
const isAllTooltips = nodes.every(
(node) =>
node?.type === 'CallExpression' &&
toolTips.includes(node.callee.name as any)
)
try {
const transforms = getRemoveConstraintsTransforms(
selectionRanges,
kclManager.ast,
'removeConstrainingValues'
)
const enabled = isAllTooltips && transforms.every(Boolean)
return { enabled, transforms }
} catch (e) {
console.error(e)
return { enabled: false, transforms: [] }
}
}
export function applyRemoveConstrainingValues({
selectionRanges,
}: {
selectionRanges: Selections
}): {
modifiedAst: Program
pathToNodeMap: PathToNodeMap
} {
const { transforms } = removeConstrainingValuesInfo({ selectionRanges })
return transformAstSketchLines({
ast: kclManager.ast,
selectionRanges,
transformInfos: transforms,
programMemory: kclManager.programMemory,
referenceSegName: '',
})
}