import React, { useState, HTMLAttributes, ComponentType } from 'react'; import classNames from 'classnames'; import { FileTree } from '@teambit/ui-foundation.ui.tree.file-tree'; import { DrawerUI } from '@teambit/ui-foundation.ui.tree.drawer'; import type { DependencyType } from '@teambit/code.ui.queries.get-component-code'; import { DependencyTree } from '@teambit/code.ui.dependency-tree'; import { TreeNode } from '@teambit/design.ui.tree'; import { WidgetProps } from '@teambit/ui-foundation.ui.tree.tree-node'; import { ArtifactsTree } from '@teambit/component.ui.artifacts.artifacts-tree'; import styles from './code-tab-tree.module.scss'; export type CodeTabTreeProps = { fileTree: any[]; dependencies?: DependencyType[]; host: string; currentFile?: string; widgets?: ComponentType>[]; getHref?: (node: TreeNode) => string; getIcon?: (node: TreeNode) => string | undefined; } & HTMLAttributes; export function CodeTabTree({ className, fileTree, dependencies, currentFile = '', host, widgets, getHref, getIcon, }: CodeTabTreeProps) { const defaultDrawer = () => { if (currentFile.startsWith('~artifact')) return ['ARTIFACTS']; return ['FILES']; }; const [openDrawerList, onToggleDrawer] = useState(defaultDrawer); const handleDrawerToggle = (id: string) => { const isDrawerOpen = openDrawerList.includes(id); if (isDrawerOpen) { onToggleDrawer((list) => list.filter((drawer) => drawer !== id)); return; } onToggleDrawer((list) => list.concat(id)); }; return (
handleDrawerToggle('FILES')} name="FILES" contentClass={styles.codeDrawerContent} className={classNames(styles.codeTabDrawer, openDrawerList.includes('FILES') && styles.openDrawer)} > handleDrawerToggle('DEPENDENCIES')} className={classNames(styles.codeTabDrawer, openDrawerList.includes('DEPENDENCIES') && styles.openDrawer)} contentClass={styles.codeDrawerContent} name="DEPENDENCIES" > handleDrawerToggle('ARTIFACTS')} />
); }