import type { ChakraProps } from '@chakra-ui/react'; import { Box, Accordion, AccordionButton, AccordionItem, AccordionPanel, chakra } from '@chakra-ui/react'; import React from 'react'; import type { FileTree } from './types'; 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 itemProps: ChakraProps = { borderWidth: '0px', cursor: 'pointer', lineHeight: '22px', _last: { borderBottomWidth: '0px', }, }; const themeColors = useThemeColors(); return ( index) } reduceMotion> { tree.map((leaf, index) => { const leafName = { leaf.name }; if ('children' in leaf) { return ( { ({ isExpanded }) => ( <> { leafName } ) } ); } return ( { mainFile === leaf.file_path && ( ) } { leafName } ); }) } ); }; export default React.memo(CodeEditorFileTree);