import { Box, CircularProgress, Typography } from "@mui/material"; import { useEffect, useState } from "react"; // Component for displaying a single panel export function Panel({ segment, panel, panelIndex }) { const [imageLoaded, setImageLoaded] = useState(false); const [isLoading, setIsLoading] = useState(true); // Reset states when the image changes useEffect(() => { const hasImage = !!segment?.images?.[panelIndex]; console.log(`[Panel ${panelIndex}] Image changed:`, { hasSegment: !!segment, hasImage, imageContent: segment?.images?.[panelIndex]?.slice(0, 50), }); // Ne réinitialiser les états que si on n'a pas d'image if (!hasImage) { setImageLoaded(false); setIsLoading(true); } }, [segment?.images?.[panelIndex]]); // Log component state changes useEffect(() => { console.log(`[Panel ${panelIndex}] State updated:`, { imageLoaded, isLoading, hasSegment: !!segment, hasImage: !!segment?.images?.[panelIndex], }); }, [imageLoaded, isLoading, segment, panelIndex]); const handleImageLoad = () => { console.log(`[Panel ${panelIndex}] Image loaded successfully`); setImageLoaded(true); setIsLoading(false); }; const handleImageError = (error) => { console.error(`[Panel ${panelIndex}] Image loading error:`, error); setIsLoading(false); }; return ( {segment && ( <> {/* Conteneur d'image avec dimensions fixes */} {segment.images?.[panelIndex] && ( {`Story )} {/* Spinner de chargement */} {(!segment.images?.[panelIndex] || !imageLoaded) && ( )} {/* Texte du segment (uniquement sur le premier panel) */} {panelIndex === 0 && segment.text && ( {segment.text} )} )} ); }