lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
32 lines • 2.62 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
import { useMemo } from "preact/hooks";
import Model from "../../display/Model";
import { getMultipleSelectionTargets } from "../../states/useMultipleSelectionTargets";
import { getSelectionTarget } from "../../states/useSelectionTarget";
import TitleBar from "../component/bars/TitleBar";
import IconButton from "../component/IconButton";
import EmptyTreeItem from "../component/treeItems/EmptyTreeItem";
import deleteSelected from "../../engine/hotkeys/deleteSelected";
import useSyncState from "../hooks/useSyncState";
import DeleteIcon from "./icons/DeleteIcon";
import FindIcon from "./icons/FindIcon";
import GroupIcon from "./icons/GroupIcon";
import ModelTreeItem from "./ModelTreeItem";
import TreeItem from "./TreeItem";
import useSceneGraphRefresh from "../hooks/useSceneGraphRefresh";
import { appendableRoot } from "../../collections/appendableRoot";
import { isTemplate } from "../../collections/typeGuards";
import FoundManager from "../../display/core/FoundManager";
import groupSelected from "../../engine/hotkeys/groupSelected";
import root from "../../api/root";
import moveSelected from "../../engine/hotkeys/moveSelected";
const AccordionSceneGraph = () => {
const refresh = useSceneGraphRefresh();
const appendables = useMemo(() => [...appendableRoot].filter((item) => !item.$disableSceneGraph && !isTemplate(item)), [refresh]);
const [multipleSelectionTargets] = useSyncState(getMultipleSelectionTargets);
const selectionTarget = useSyncState(getSelectionTarget);
return (_jsxs("div", { className: "lingo3d-absfull lingo3d-flexcol", children: [_jsxs(TitleBar, { title: "scenegraph", children: [_jsx(IconButton, { borderless: true, disabled: !(selectionTarget instanceof FoundManager &&
selectionTarget.$disableSceneGraph), onClick: () => selectionTarget.$unghost(), children: _jsx(FindIcon, {}) }), _jsx(IconButton, { borderless: true, disabled: !multipleSelectionTargets.size, onClick: groupSelected, children: _jsx(GroupIcon, {}) }), _jsx(IconButton, { borderless: true, disabled: !selectionTarget, onClick: deleteSelected, children: _jsx(DeleteIcon, {}) })] }), _jsxs("div", { style: { overflow: "scroll", flexGrow: 1 }, children: [appendables.map((appendable) => appendable instanceof Model ? (_jsx(ModelTreeItem, { appendable: appendable }, appendable.uuid)) : (_jsx(TreeItem, { appendable: appendable }, appendable.uuid))), _jsx(EmptyTreeItem, { onDrop: () => moveSelected(root) })] })] }));
};
export default AccordionSceneGraph;
//# sourceMappingURL=AccordionSceneGraph.js.map