UNPKG

lingo3d

Version:

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

23 lines 1.55 kB
import { jsx as _jsx } from "preact/jsx-runtime"; import { useMemo } from "preact/hooks"; import ComponentIcon from "./icons/ComponentIcon"; import BaseTreeItem from "../component/treeItems/BaseTreeItem"; import BoneIcon from "./icons/BoneIcon"; import { setSceneGraphExpanded } from "../../states/useSceneGraphExpanded"; import handleTreeItemClick from "../utils/handleTreeItemClick"; import { getFoundManager } from "../../display/core/utils/getFoundManager"; import useSelected from "./useSelected"; import useExpanded from "./useExpanded"; const NativeTreeItem = ({ object3d, appendable }) => { const manager = useMemo(() => getFoundManager(object3d, appendable), [object3d, appendable]); const selected = useSelected(manager); const expandedSignal = useExpanded(manager); const IconComponent = useMemo(() => { if ("isBone" in object3d) return BoneIcon; return ComponentIcon; }, [object3d]); return (_jsx(BaseTreeItem, { label: object3d.name, selected: selected, draggable: true, myDraggingItem: object3d, onCollapse: () => setSceneGraphExpanded(undefined), onClick: (e) => handleTreeItemClick(e, manager), onContextMenu: (e) => handleTreeItemClick(e, manager, true), expandedSignal: expandedSignal, expandable: !!object3d.children.length, outlined: true, IconComponent: IconComponent, children: () => object3d.children.map((child) => (_jsx(NativeTreeItem, { object3d: child, appendable: appendable }, child.uuid))) })); }; export default NativeTreeItem; //# sourceMappingURL=NativeTreeItem.js.map