'use client' import {useEffect} from 'react' import PropTypes from 'prop-types' import Box from '@mui/material/Box' import Grid from '@mui/material/Grid2' import Typography from '@mui/material/Typography' import Tooltip from '@mui/material/Tooltip' import {useMediaQuery} from '@mui/material' import Link from 'next/link' import slugify from 'slugify' import {styled} from '@mui/material/styles' import ExplicitIcon from '@mui/icons-material/Explicit' import {formatJsonString, getAlias} from '../../lib/utils/format' import LicenseModal from '../cc/license-modal' import FilesDialog from '../files/files-dialog' import EntegreMizik from './entegre-mizik' import OkiMizik from './oki-mizik' import DiferansDialog from './diferans-dialog' const PREFIX = 'teks' const classes = { container: `${PREFIX}-container`, tooltip: `${PREFIX}-tooltip`, text: `${PREFIX}-text`, gridText: `${PREFIX}-gridText`, grid: `${PREFIX}-grid`, koute: `${PREFIX}-koute`, vwe: `${PREFIX}-vwe`, pataje: `${PREFIX}-pataje`, separation: `${PREFIX}-separation` } const Root = styled('div')(( { theme } ) => ({ [`&.${classes.container}`]: { marginTop: '3em', }, [`& .${classes.gridText}`]: { border: '2px solid grey', borderRadius: '5px', marginTop: '2em', padding: '1em' }, [`& .${classes.pataje}`]: { position: 'absolute', zIndex: 9999 }, [`& .${classes.separation}`]: { color: 'black', [theme.getColorSchemeSelector('dark')]: { color: 'white' } }, '@media (max-width: 600px)': { marginLeft: '0', }, '@media (min-width: 600px)': { marginLeft: '240px', }, })) const langToArray = parole => { const langArray = [] if (parole && parole.traductions) { const {francais, anglais, espagnol, allemand, italien} = parole.traductions if (francais) { langArray.push({title: 'Traduction', flag: 'fr', lang: francais}) } if (anglais) { langArray.push({title: 'Translation', flag: 'en', lang: anglais}) } if (espagnol) { langArray.push({title: 'Traducción', flag: 'es', lang: espagnol}) } if (allemand) { langArray.push({title: 'Übersetzung', flag: 'de', lang: allemand}) } if (italien) { langArray.push({title: 'Traduzione', flag: 'it', lang: italien}) } } return langArray } const alignTeks = (langArray, isMobile) => { if (langArray.length > 0 && !isMobile) { return 'justify' } if (langArray.length > 0 && isMobile) { return 'justify' } if (langArray.length === 0 && isMobile) { return 'justify' } if (langArray.length === 0 && !isMobile) { return 'center' } } const ExplicitTooltip = Tooltip export default function Teks({parole}) { const isMobile = useMediaQuery('(max-width:600px)') const langArray = langToArray(parole) const enhancedAliases = getAlias(parole.artistes, parole.prioriteArtistes, true) useEffect(() => { const isBrowser = () => typeof window !== 'undefined' if (!isBrowser()) { return } window.scrollTo({top: 0, behavior: 'smooth'}) }, []) return ( {enhancedAliases.map(({type, value}) => { if (type === 'element') { return ( {value} ) } return {value} })} {parole.titre} ({parole?.annee}) {parole.explicitLyrics && ( )} {parole?.user?.data && ( parole soumise par {parole.user.data.attributes.username} )} {parole?.userAdmin?.data && !parole.user.data && ( parole soumise par {parole.userAdmin.data.attributes.firstname} )} {parole.creativeCommons && ( )} {parole?.files?.data && ( )} {(parole.okiMizikID || parole.streamAudio.length > 0 || parole.gadeEmbed) && ( )} {parole.okiMizikID && ( )} {parole?.difference?.length > 0 && ( )} 0 ? 6 : null}}> Transcription {formatJsonString(parole.transcription)} {langArray.map(({title, flag, lang}) => ( {flag === 'fr' && ( 🇫🇷 )} {flag === 'en' && ( 🇬🇧 )} {flag === 'es' && ( 🇪🇸 )} {flag === 'de' && ( 🇩🇪 )} {flag === 'it' && ( 🇮🇹 )} {title} {formatJsonString(lang)} ))} ) } Teks.propTypes = { parole: PropTypes.object.isRequired, }