import React, { useContext, useState } from 'react';
import ls from './ContextualControls.less';
import Fa from 'ui/components/Fa';
import { matchAvailableActions } from "../actions";
import { useStream } from "ui/effects";
import { MatchIndex, matchSelection } from "../selectionMatcher";
import { ConstraintButton, GeneratorButton } from "./ConstraintExplorer";
import { Columnizer } from "ui/components/Columnizer";
import { NoIcon } from "../icons/NoIcon";
import { SketcherAppContext } from "./SketcherAppContext";
import cx from 'classnames';
export function ContextualControls() {
const selection = useStream(ctx => ctx.viewer.streams.selection);
const ___ = useStream(ctx => ctx.viewer.parametricManager.$update);
const ctx = useContext(SketcherAppContext);
const [modification, setModification] = useState(0);
if (selection.length === 0) {
return null;
}
const obj = selection.length === 1 ? selection[0] : null;
const availableActions = matchAvailableActions(selection);
const nonInternalConstraints = obj && Array.from(obj.constraints).filter(c => !c.internal);
const setRole = (obj, role) => {
let viewer = ctx.viewer;
if (obj.aux) {
return;
}
obj.role = role;
viewer.refresh();
};
const tweakRole = (obj) => {
let viewer = ctx.viewer;
if (obj.role === 'construction') {
setRole(obj, null);
} else if (obj.role === null) {
setRole(obj, 'construction');
}
viewer.refresh();
//don't know what the side effects of not having this are.
// code taken from jsketcher/web/app/sketcher/components/SketchObjectExplorer.jsx
setModification(count => count + 1);
};
const getObjectRole = (o) => {
if (o.aux) {
return B
} else if (o.role === 'construction') {
return tweakRole(o)} title="construction object not used for 3D operations"
className={cx(ls.objectRole, ls.construction)}>C
} else {
return tweakRole(o)} title="sketch object participates in 3D operations"
className={cx(ls.objectRole, ls.sketch)}>S
}
};
function ObjectIcon({ object }) {
const Icon = object.icon;
return