UNPKG

mylingo3d

Version:

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

19 lines 1.33 kB
import { jsx as _jsx } from "preact/jsx-runtime"; import { useEffect, useMemo, useState } from "preact/hooks"; import { makeTreeItemCallbacks } from "./TreeItem"; import { useSceneGraphExpanded, useSceneGraphTarget } from "../states"; import ComponentIcon from "./icons/ComponentIcon"; import BaseTreeItem from "../component/BaseTreeItem"; const Object3DTreeItem = ({ appendable, object3d }) => { const [expanded, setExpanded] = useState(false); const [sceneGraphTarget] = useSceneGraphTarget(); const handleClick = useMemo(() => makeTreeItemCallbacks(object3d, appendable), []); const [sceneGraphExpanded, setSceneGraphExpanded] = useSceneGraphExpanded(); useEffect(() => { sceneGraphExpanded?.has(object3d) && setExpanded(true); }, [sceneGraphExpanded]); const selected = sceneGraphTarget === object3d; return (_jsx(BaseTreeItem, { label: object3d.name, selected: selected, onCollapse: () => setSceneGraphExpanded(undefined), onClick: handleClick, expanded: expanded, expandable: !!object3d.children.length, outlined: true, IconComponent: ComponentIcon, children: () => object3d.children.map((child) => (_jsx(Object3DTreeItem, { object3d: child, appendable: appendable }, child.uuid))) })); }; export default Object3DTreeItem; //# sourceMappingURL=Object3DTreeItem.js.map