'use client' import React from 'react' import PropTypes from 'prop-types' import {useParams} from 'next/navigation' import {GroupedVirtuoso} from 'react-virtuoso' import List from '@mui/material/List' import ListItem from '@mui/material/ListItem' import ListSubheader from '@mui/material/ListSubheader' import {groupBy} from 'lodash' import {formatKuveti} from '../../lib/kuveti' import MizikLyen from './mizik-lyen' function grupPawol(pawol) { const pawolTrie = pawol.sort((a, b) => a.attributes.titre.localeCompare(b.attributes.titre, 'fr', {sensitivity: 'base'})) const grupPawol = groupBy(pawol, anPawol => anPawol.attributes.titre[0].toUpperCase()) const grupCounts = Object.values(grupPawol).map(anPawol => anPawol.length) const grup = Object.keys(grupPawol) grup.sort((a, b) => a[0].localeCompare(b[0], 'fr', {sensitivity: 'base'})) return {pawol: pawolTrie, grupCounts, grup} } export default function MizikLis({niAwtis, paroles}) { const params = useParams() const {pawol, grupCounts, grup} = grupPawol(paroles) return (
{grup[index]}
} itemContent={index => { const anPawol = pawol[index] const {couverture} = anPawol.attributes const kuvetiFormat = formatKuveti(couverture) return ( ) }} /> ) } const MUIComponents = { List: React.forwardRef(({style, children}, listRef) => ( {children} )), Item: ({children, ...props}) => ( {children} ), Group: ({children, style, ...props}) => ( {children} ) } MizikLis.propTypes = { niAwtis: PropTypes.bool, paroles: PropTypes.array.isRequired } MUIComponents.List.propTypes = { style: PropTypes.object, children: PropTypes.node.isRequired, } MUIComponents.Item.propTypes = { children: PropTypes.node.isRequired, } MUIComponents.Group.propTypes = { children: PropTypes.node.isRequired, style: PropTypes.object, }