UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

32 lines 2.62 kB
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