import {Edit,required,SimpleForm,TextInput,useTranslate,} from 'react-admin'import { CardMedia } from '@material-ui/core'import { makeStyles } from '@material-ui/core/styles'import { urlValidate } from '../utils/validations'import {Title,ImageUploadOverlay,ReadOnlyDateField,useImageLoadingState,} from '../common'import subsonic from '../subsonic'import config from '../config'import { RADIO_PLACEHOLDER_IMAGE } from '../consts'const useStyles = makeStyles({coverParent: {display: 'inline-flex',position: 'relative',width: '8rem',height: '8rem',marginBottom: '1em',},cover: {width: '8rem',height: '8rem',objectFit: 'cover',cursor: 'pointer',transition: 'opacity 0.3s ease-in-out',},coverLoading: {opacity: 0.5,},placeholder: {width: '8rem',height: '8rem',objectFit: 'contain',},})const RadioTitle = ({ record }) => {const translate = useTranslate()const resourceName = translate('resources.radio.name', {smart_count: 1,})return <Title subTitle={`${resourceName} ${record ? record.name : ''}`} />}const RadioEdit = (props) => {return (<Edit title={<RadioTitle />} {...props}><SimpleForm variant="outlined" {...props}><RadioCoverArt /><TextInput source="name" validate={[required()]} /><TextInputtype="url"source="streamUrl"fullWidthvalidate={[required(), urlValidate]}/><TextInputtype="url"source="homePageUrl"fullWidthvalidate={[urlValidate]}/><ReadOnlyDateField source="updatedAt" /><ReadOnlyDateField source="createdAt" /></SimpleForm></Edit>)}const RadioCoverArt = ({ record }) => {const classes = useStyles()const { imageLoading, handleImageLoad, handleImageError } =useImageLoadingState(record?.id)if (!record) return nullreturn (<div className={classes.coverParent}>{record.uploadedImage ? (<CardMediacomponent="img"src={subsonic.getCoverArtUrl(record, config.uiCoverArtSize, true)}className={`${classes.cover} ${imageLoading ? classes.coverLoading : ''}`}onLoad={handleImageLoad}onError={handleImageError}title={record.name}alt={record.name}/>) : (<imgsrc={RADIO_PLACEHOLDER_IMAGE}className={classes.placeholder}alt={record.name}/>)}<ImageUploadOverlayentityType="radio"entityId={record.id}hasUploadedImage={!!record.uploadedImage}/></div>)}export default RadioEdit