import React from 'react';
import cx from 'classnames';
import ls from './SketchObjectExplorer.less'
import connect from 'ui/connect';
import {combine} from 'lstream';
import mapContext from '../../../../modules/ui/mapContext';
@connect(streams => combine(streams.sketcherApp.objects, streams.sketcherApp.selection)
.map(([objects, selection]) => ({
objects,
selection
})))
@mapContext(ctx => ({
select: (obj, exclusive) => {
let viewer = ctx.services.sketcher.inPlaceEditor.viewer;
viewer.select([obj], exclusive);
viewer.refresh();
},
deselect: obj => {
let viewer = ctx.services.sketcher.inPlaceEditor.viewer;
viewer.deselect(obj);
viewer.refresh();
},
setRole: (obj, role) => {
let viewer = ctx.services.sketcher.inPlaceEditor.viewer;
if (obj.aux) {
return;
}
obj.role = role;
viewer.refresh();
}
}))
export class SketchObjectExplorer extends React.Component {
render() {
const {objects} = this.props;
return
Objects
{objects.map(o =>

{this.getObjectRole(o)}
this.tweakSelection(o, e.shiftKey)} className={cx(ls.objectTag, o.marked&&ls.selected)}>{o.simpleClassName} {o.id}
...
)}
}
tweakSelection(obj, shiftKey) {
if (obj.marked) {
this.props.deselect(obj);
} else {
this.props.select(obj, !shiftKey);
}
}
tweakRole(obj) {
if (obj.role === 'construction') {
this.props.setRole(obj, null);
} else if (obj.role === null) {
this.props.setRole(obj, 'construction');
}
this.forceUpdate();
}
getObjectRole(o) {
if (o.aux) {
return B
} else if (o.role === 'construction') {
return this.tweakRole(o)} title="construction object not used for 3D operations" className={cx(ls.objectRole, ls.construction)}>C
} else {
return this.tweakRole(o)} title="sketch object participates in 3D operations" className={cx(ls.objectRole, ls.sketch)}>S
}
}
}
function ObjectIcon({object}) {
return null;
}
function getClassName() {
return null;
}