feat: clic Animer démarre la lecture automatiquement en vitesse ×1
ci/woodpecker/push/woodpecker Pipeline was successful

- activate() appelle maintenant setSpeed(1) + setPlaying(true) en plus de setActive(true)
- L'effet de reset ne stoppe playing que lors d'une désactivation (active=false),
  pas lors d'une activation, pour ne pas annuler le setPlaying(true) ci-dessus

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
syoul
2026-03-23 23:24:26 +01:00
parent a2fdad46d4
commit f29625c6bc
+5 -3
View File
@@ -64,10 +64,12 @@ export function useAnimation(transactions: Transaction[], periodDays: number) {
const frames = useMemo(() => buildFrames(periodDays), [periodDays]); const frames = useMemo(() => buildFrames(periodDays), [periodDays]);
// Reset cursor and playback when period or activation changes // Reset cursor when period or activation changes.
// Stop playback only on deactivation — not on activation, so activate() can
// start playing immediately without being overridden by this effect.
useEffect(() => { useEffect(() => {
setCurrentIndex(0); setCurrentIndex(0);
setPlaying(false); if (!active) setPlaying(false);
}, [periodDays, active]); }, [periodDays, active]);
// Auto-advance: one step every (2000 / speed) ms // Auto-advance: one step every (2000 / speed) ms
@@ -95,7 +97,7 @@ export function useAnimation(transactions: Transaction[], periodDays: number) {
return { return {
active, active,
activate: () => setActive(true), activate: () => { setActive(true); setSpeed(1); setPlaying(true); },
deactivate: () => { setActive(false); }, deactivate: () => { setActive(false); },
playing, playing,
play: () => setPlaying(true), play: () => setPlaying(true),