import React, {useContext, useEffect} from 'react'; import ls from './ConstraintExplorer.less'; import Fa from 'ui/components/Fa'; import {useStream} from "ui/effects"; import {SketcherAppContext} from "./SketcherApp"; import cx from 'classnames'; import {editConstraint} from "./ConstraintEditor"; export function ConstraintExplorer(props) { return
Constraints
; } export function ConstraintList() { const constraints = useStream(ctx => ctx.viewer.parametricManager.$constraints); let i = 0; return constraints.map((c) => { if (c.internal) { return null; } i ++; return }) } export function ConstraintButton({prefix='', constraint: c, ...props}) { const {viewer, ui} = useContext(SketcherAppContext); const edit = (constraint) => { if (constraint.editable) { editConstraint(ui.$constraintEditRequest, constraint, () => { viewer.parametricManager.reSolve(); }); } }; const remove = constr => { viewer.parametricManager.remove(constr); viewer.refresh(); }; const highlight = constr => { viewer.capture('highlight', constr.objects, true); viewer.refresh(); }; const withdraw = () => { viewer.withdrawAll('highlight'); viewer.refresh(); }; useEffect(() => withdraw, [c]); const conflicting = viewer.parametricManager.algNumSystem.conflicting.has(c); const redundant = viewer.parametricManager.algNumSystem.redundant.has(c); return
c.schema.constants && edit(c)} onMouseEnter={() => highlight(c)} onMouseLeave={() => withdraw(c)} {...props}> {prefix} {c.schema.name} remove(c)}>
}