lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
23 lines • 1.55 kB
JavaScript
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