import React from 'react'; import type { FileTree } from './types'; import { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot } from '@luxfi/ui/accordion'; import IconSvg from 'ui/shared/IconSvg'; import CodeEditorFileIcon from './CodeEditorFileIcon'; import CodeEditorMainFileIndicator from './CodeEditorMainFileIndicator'; import useThemeColors from './utils/useThemeColors'; interface Props { tree: FileTree; level?: number; isCollapsed?: boolean; onItemClick: (event: React.MouseEvent) => void; selectedFile: string; mainFile?: string; } const CodeEditorFileTree = ({ tree, level = 0, onItemClick, isCollapsed, selectedFile, mainFile }: Props) => { const [ value, setValue ] = React.useState>(isCollapsed ? [] : tree.map((item) => item.name)); const handleValueChange = React.useCallback(({ value }: { value: Array }) => { setValue(value); }, []); const themeColors = useThemeColors(); return ( { tree.map((leaf, index) => { const leafName = { leaf.name }; const isExpanded = value.includes(leaf.name); if ('children' in leaf) { return (
{ leafName } ); } return ( { mainFile === leaf.file_path && ( ) } { leafName } ); }) } ); }; export default React.memo(CodeEditorFileTree);