import { useState } from 'react'import { Card, CardContent, Typography, useMediaQuery } from '@material-ui/core'import { makeStyles } from '@material-ui/core/styles'import { useTranslate } from 'react-admin'import Lightbox from 'react-image-lightbox'import 'react-image-lightbox/style.css'import {CollapsibleComment,DurationField,ImageUploadOverlay,LoveButton,SizeField,isWritable,OverflowTooltip,} from '../common'import subsonic from '../subsonic'import { Artwork } from '../common/Artwork'const useStyles = makeStyles((theme) => ({root: {[theme.breakpoints.down('xs')]: {padding: '0.7em',minWidth: '20em',},[theme.breakpoints.up('sm')]: {padding: '1em',minWidth: '32em',},},cardContents: {display: 'flex',},details: {display: 'flex',flexDirection: 'column',},content: {flex: '2 0 auto',},coverParent: {[theme.breakpoints.down('xs')]: {height: '8em',width: '8em',minWidth: '8em',},[theme.breakpoints.up('sm')]: {height: '10em',width: '10em',minWidth: '10em',},[theme.breakpoints.up('lg')]: {height: '15em',width: '15em',minWidth: '15em',},backgroundColor: 'transparent',display: 'flex',alignItems: 'center',justifyContent: 'center',position: 'relative',},cover: {objectFit: 'contain',cursor: 'pointer',display: 'block',width: '100%',height: '100%',backgroundColor: 'transparent',transition: 'opacity 0.3s ease-in-out',},title: {overflow: 'hidden',textOverflow: 'ellipsis',wordBreak: 'break-word',minWidth: 0,},titleRow: {display: 'flex',alignItems: 'center',},loveButton: {marginLeft: theme.spacing(0.5),flexShrink: 0,},stats: {marginTop: '1em',marginBottom: '0.5em',},}),{name: 'NDPlaylistDetails',},)const PlaylistDetails = (props) => {const { record = {} } = propsconst translate = useTranslate()const classes = useStyles()const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('lg'))const [isLightboxOpen, setLightboxOpen] = useState(false)const fullImageUrl = subsonic.getCoverArtUrl(record)return (<Card className={classes.root}><div className={classes.cardContents}><div className={classes.coverParent}><Artworkrecord={record}squarefit="contain"className={classes.cover}title={record.name}onClick={() => setLightboxOpen(true)}/>{isWritable(record.ownerId) && (<ImageUploadOverlayentityType="playlist"entityId={record.id}hasUploadedImage={!!record.uploadedImage}/>)}</div><div className={classes.details}><CardContent className={classes.content}><div className={classes.titleRow}><OverflowTooltip title={record.name || ''}><Typographyvariant={isDesktop ? 'h5' : 'h6'}className={classes.title}>{record.name || translate('ra.page.loading')}</Typography></OverflowTooltip><LoveButtonclassName={classes.loveButton}record={record}resource={'playlist'}size={isDesktop ? 'default' : 'small'}aria-label="love"color="primary"/></div><Typography component="p" className={classes.stats}>{record.songCount ? (<span>{record.songCount}{' '}{translate('resources.song.name', {smart_count: record.songCount,})}{' Β· '}<DurationField record={record} source={'duration'} />{' Β· '}<SizeField record={record} source={'size'} /></span>) : (<span> </span>)}</Typography><CollapsibleComment record={record} /></CardContent></div></div>{isLightboxOpen && (<LightboximagePadding={50}animationDuration={200}imageTitle={record.name}mainSrc={fullImageUrl}onCloseRequest={() => setLightboxOpen(false)}/>)}</Card>)}export default PlaylistDetails