import React, { useState } from 'react'import { Typography, Collapse } from '@material-ui/core'import { makeStyles } from '@material-ui/core/styles'import Card from '@material-ui/core/Card'import CardMedia from '@material-ui/core/CardMedia'import config from '../config'import {LoveButton,RatingField,ImageUploadOverlay,useImageLoadingState,} from '../common'import Lightbox from 'react-image-lightbox'import subsonic from '../subsonic'import { SafeHTML } from '../common/SafeHTML'const useStyles = makeStyles((theme) => ({root: {display: 'flex',background: ({ img }) => `url(${img})`,},bgContainer: {display: 'flex',height: '15rem',width: '100vw',padding: 'unset',backdropFilter: 'blur(1px)',backgroundPosition: '50% 30%',background: `linear-gradient(to bottom, rgba(52 52 52 / 72%), rgba(21 21 21))`,},link: {margin: '1px',},details: {display: 'flex',alignItems: 'flex-start',flexDirection: 'column',justifyContent: 'center',marginLeft: '0.5rem',},biography: {display: 'flex',marginLeft: '3%',marginRight: '3%',marginTop: '-2em',zIndex: '1','& p': {whiteSpace: ({ expanded }) => (expanded ? 'unset' : 'nowrap'),overflow: 'hidden',width: '95vw',textOverflow: 'ellipsis',},},cover: {width: 151,boxShadow: '0px 0px 6px 0px #565656',borderRadius: '5px',backgroundColor: 'transparent',transition: 'opacity 0.3s ease-in-out',objectFit: 'cover',},coverLoading: {opacity: 0.5,},artistImage: {marginLeft: '1em',maxHeight: '7rem',backgroundColor: 'inherit',marginTop: '4rem',width: '7rem',minWidth: '7rem',display: 'flex',borderRadius: '5em',position: 'relative',},loveButton: {top: theme.spacing(-0.2),left: theme.spacing(0.5),},rating: {marginTop: '5px',},artistName: {wordBreak: 'break-word',},}),{ name: 'NDMobileArtistDetails' },)const MobileArtistDetails = ({ artistInfo, biography, record }) => {const img = subsonic.getCoverArtUrl(record, 800)const [expanded, setExpanded] = useState(false)const classes = useStyles({ img, expanded })const title = record.nameconst {imageLoading,imageError,isLightboxOpen,handleImageLoad,handleImageError,handleOpenLightbox,handleCloseLightbox,} = useImageLoadingState(record.id)return (<><div className={classes.root}><div className={classes.bgContainer}><Card className={classes.artistImage}>{artistInfo && (<CardMediakey={record.id}component="img"src={subsonic.getCoverArtUrl(record, config.uiCoverArtSize)}className={`${classes.cover} ${imageLoading ? classes.coverLoading : ''}`}onClick={handleOpenLightbox}onLoad={handleImageLoad}onError={handleImageError}title={title}style={{cursor: imageError ? 'default' : 'pointer',}}/>)}<ImageUploadOverlayentityType="artist"entityId={record.id}hasUploadedImage={!!record.uploadedImage}/></Card><div className={classes.details}><Typographycomponent="h5"variant="h5"className={classes.artistName}>{title}<LoveButtonclassName={classes.loveButton}record={record}resource={'artist'}size={'small'}aria-label="love"color="primary"/></Typography>{config.enableStarRating && (<RatingFieldrecord={record}resource={'artist'}size={'small'}className={classes.rating}/>)}</div></div></div><div className={classes.biography}><Collapse collapsedHeight={'1.5em'} in={expanded} timeout={'auto'}><Typography variant={'body1'} onClick={() => setExpanded(!expanded)}><span><SafeHTML>{biography}</SafeHTML></span></Typography></Collapse></div>{isLightboxOpen && !imageError && (<LightboximagePadding={50}animationDuration={200}imageTitle={record.name}mainSrc={img}onCloseRequest={handleCloseLightbox}/>)}</>)}export default MobileArtistDetails