import React, {useState} from 'react'; import {MShell} from 'cad/model/mshell'; import {MDatum} from 'cad/model/mdatum'; import {MOpenFaceShell} from "cad/model/mopenFace"; import {useStream, useStreamWithPatcher} from "ui/effects"; import {MObject} from "cad/model/mobject"; import {SceneInlineDelineation, SceneInlineSection} from "ui/components/SceneInlineSection"; import {GenericExplorerControl, GenericExplorerNode} from "ui/components/GenericExplorer"; import ls from "cad/craft/ui/ObjectExplorer.less"; import Fa from "ui/components/Fa"; import {AiOutlineEye, AiOutlineEyeInvisible} from "react-icons/ai"; import {ModelButtonBehavior} from "cad/craft/ui/ModelButtonBehaviour"; import {ModelAttributes} from "cad/attributes/attributesService"; export function SceneInlineObjectExplorer() { const models = useStream(ctx => ctx.craftService.models$); if (!models) { return null; } return {models.map(m => { if (m instanceof MOpenFaceShell) { return } else if (m instanceof MShell) { return
{ m.faces.map(f => ) }
{m.edges.map(e => )}
} else if (m instanceof MDatum) { return ; } else { return null; } })}
} function EdgeSection({edge}) { return {edge.adjacentFaces.map(f => )} } function FaceSection({face}) { return {(face.productionInfo && face.productionInfo.role) &&
role: {face.productionInfo.role}}/>} {(face.productionInfo && face.productionInfo.originatedFromPrimitive) &&
origin: {face.productionInfo.originatedFromPrimitive}}/>} {face.edges &&
{face.edges.map(e => )}
} ; } function SketchesList({face}) { return
{''}}> {face.sketchObjects.map(o => )}
; } export function ModelSection({model, expandable = true, controlVisibility = false, ...props}: { model: MObject, children?: any, controlVisibility?: boolean, expandable?: boolean, }) { return {behavior => {props.children} } ; } function OpenFaceSection({shell}) { return ; } function Section(props) { const [expanded, setExpanded] = useState(!props.defaultCollapsed); const tweakClose = () => { setExpanded(exp => !exp); }; return <> {props.label} {expanded && props.children} ; } export function VisibleSwitch({modelId}) { const [attrs, patch] = useStreamWithPatcher(ctx => ctx.attributesService.streams.get(modelId)); const onClick = (e) => { patch(attr => { attr.hidden = !attr.hidden }); e.stopPropagation(); return false; } return {attrs.hidden ? : } }