import React, { useContext } from 'react'; import { FileEntryProps } from '../../types/file-list.types'; import { useLocalizedFileEntryStrings } from '../../util/i18n'; import { ChonkyIconContext } from '../../util/icon-helper'; import { makeLocalChonkyStyles } from '../../util/styles'; import { TextPlaceholder } from '../external/TextPlaceholder'; import { useFileEntryHtmlProps, useFileEntryState } from './FileEntry-hooks'; import { FileEntryName } from './FileEntryName'; import { FileEntryState } from './GridEntryPreview'; export const CompactEntry: React.FC = React.memo( // @ts-ignore ({ file, selected, focused, dndState }) => { const entryState: FileEntryState = useFileEntryState(file, selected, focused); const { fileModDateString, fileSizeString } = useLocalizedFileEntryStrings(file); const classes = useStyles(entryState); const ChonkyIcon = useContext(ChonkyIconContext); const fileEntryHtmlProps = useFileEntryHtmlProps(file); return (
{file ? fileModDateString ?? : }
{file ? fileSizeString ?? : }
); }, ); const useStyles = makeLocalChonkyStyles((theme) => ({ listFileEntry: { fontSize: theme.listFileEntry.fontSize, alignItems: 'center', position: 'relative', display: 'flex', height: '100%', }, listFileEntryIcon: { backgroundColor: (state: FileEntryState) => state.color, boxShadow: 'inset rgba(255, 255, 255, 0.5) 0 0 0 999px', borderRadius: theme.listFileEntry.iconBorderRadius, fontSize: theme.listFileEntry.iconFontSize, color: '#fff', padding: 8, }, listFileEntryDescription: { flexDirection: 'column', display: 'flex', flexGrow: 1, }, listFileEntryName: { padding: [0, 8, 4, 8], }, listFileEntryProperties: { fontSize: theme.listFileEntry.propertyFontSize, flexDirection: 'row', display: 'flex', }, listFileEntryProperty: { padding: [0, 8], opacity: 0.4, }, }));