import { useTranslation } from 'react-i18next' import * as eventTracking from '../../../infrastructure/event-tracking' import { useFileTreeActionable } from '../contexts/file-tree-actionable' import { useFileTreeData } from '@/shared/context/file-tree-data-context' import OLTooltip from '@/features/ui/components/ol/ol-tooltip' import MaterialIcon from '@/shared/components/material-icon' import OLButtonToolbar from '@/features/ui/components/ol/ol-button-toolbar' import importOverleafModules from '../../../../macros/import-overleaf-module.macro' import React, { ElementType } from 'react' const fileTreeToolbarComponents = importOverleafModules( 'fileTreeToolbarComponents' ) as { import: { default: ElementType }; path: string }[] function FileTreeToolbar() { const { fileTreeReadOnly } = useFileTreeData() const { t } = useTranslation() if (fileTreeReadOnly) return null return ( ) } function FileTreeToolbarLeft() { const { t } = useTranslation() const { canCreate, startCreatingFolder, startCreatingDocOrFile, startUploadingDocOrFile, } = useFileTreeActionable() const createWithAnalytics = () => { eventTracking.sendMB('new-file-click', { location: 'toolbar' }) startCreatingDocOrFile() } const uploadWithAnalytics = () => { eventTracking.sendMB('upload-click', { location: 'toolbar' }) startUploadingDocOrFile() } if (!canCreate) return null return (
) } function FileTreeToolbarRight() { const { t } = useTranslation() const { canRename, canDelete, startRenaming, startDeleting } = useFileTreeActionable() return (
{fileTreeToolbarComponents.map( ({ import: { default: Component }, path }) => ( ) )} {canRename ? ( ) : null} {canDelete ? ( ) : null}
) } export default FileTreeToolbar