import { useEffect } from 'react' import classNames from 'classnames' import { useFileTreeSelectable, useSelectableEntity, } from '../contexts/file-tree-selectable' import { useDroppable } from '../contexts/file-tree-draggable' import FileTreeItemInner from './file-tree-item/file-tree-item-inner' import FileTreeFolderList from './file-tree-folder-list' import usePersistedState from '../../../shared/hooks/use-persisted-state' import { Folder } from '../../../../../types/folder' import { Doc } from '../../../../../types/doc' import { FileRef } from '../../../../../types/file-ref' import FileTreeFolderIcons from './file-tree-folder-icons' function FileTreeFolder({ name, id, folders, docs, files, }: { name: string id: string folders: Folder[] docs: Doc[] files: FileRef[] }) { const { isSelected, props: selectableEntityProps } = useSelectableEntity( id, 'folder' ) const { selectedEntityParentIds } = useFileTreeSelectable() const [expanded, setExpanded] = usePersistedState( `folder.${id}.expanded`, false ) useEffect(() => { if (selectedEntityParentIds.has(id)) { setExpanded(true) } }, [id, selectedEntityParentIds, setExpanded]) function handleExpandCollapseClick() { setExpanded(!expanded) } const { isOver: isOverRoot, dropRef: dropRefRoot } = useDroppable(id) const { isOver: isOverList, dropRef: dropRefList } = useDroppable(id) return ( <>
  • } />
  • {expanded ? ( ) : null} ) } export default FileTreeFolder