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
} 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 && }
;
}
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 ? : }
}