import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import { Button } from 'semantic-ui-react'; import { useToggle } from '../../../lib/hooks'; import Item from './Item'; import styles from './Attachments.module.scss'; const Attachments = React.memo(({ items, onUpdate, onDelete, onCoverUpdate }) => { const [t] = useTranslation(); const [isOpened, toggleOpened] = useToggle(); const handleToggleClick = useCallback(() => { toggleOpened(); }, [toggleOpened]); const handleCoverSelect = useCallback( (id) => { onCoverUpdate(id); }, [onCoverUpdate], ); const handleCoverDeselect = useCallback(() => { onCoverUpdate(null); }, [onCoverUpdate]); const handleUpdate = useCallback( (id, data) => { onUpdate(id, data); }, [onUpdate], ); const handleDelete = useCallback( (id) => { onDelete(id); }, [onDelete], ); const visibleItems = isOpened ? items : items.slice(0, 4); return ( <> {visibleItems.map((item) => ( handleCoverSelect(item.id)} onCoverDeselect={handleCoverDeselect} onUpdate={(data) => handleUpdate(item.id, data)} onDelete={() => handleDelete(item.id)} /> ))} {items.length > 4 && (