import React from 'react' import AudioPlayer from './AudioPlayer' import type { ExamplesData } from './Examples' import { groupByNameAndVariant } from './galleryUtils' import ExampleMetadata from './ExampleMetadata' import ExampleDetailsSection from './ExampleDetailsSection' import ExampleVariantSelector from './ExampleVariantSelector' interface GalleryProps { selectedModel: string selectedAttack: string examples: { [model: string]: { [attack: string]: ExamplesData[] } } } const AudioGallery: React.FC = ({ selectedModel, selectedAttack, examples }) => { const exampleItems = examples[selectedModel][selectedAttack] const grouped = groupByNameAndVariant(exampleItems) console.log('Audio examples:', exampleItems) console.log('Grouped audio examples:', grouped) const audioNames = Object.keys(grouped) const [selectedAudio, setSelectedAudio] = React.useState(audioNames[0] || '') const variants = grouped[selectedAudio] || {} const variantKeys = Object.keys(variants) const [selectedVariant, setSelectedVariant] = React.useState(variantKeys[0] || '') React.useEffect(() => { setSelectedVariant(variantKeys[0] || '') }, [selectedAudio]) if (!audioNames.length) { return (
No audio examples available. Please select another model and attack.
) } console.log(variants[selectedVariant]) return (
Audio Example
{selectedAudio && selectedVariant && variants[selectedVariant] && ( <>
{variants[selectedVariant].image_url && ( {selectedAudio} )} {variants[selectedVariant].audio_url && ( )}
)}
) } export default AudioGallery