Sans forcer un reflow, le browser ignore transition:none et applique
encore l'ancienne transition — causant un bug visuel sur la 1ère frame.
void canvas.offsetWidth flush les styles en attente.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Canvas caché (opacity 0) avant update → overlay (frame A) fade out
et canvas (frame B) fade in simultanément sur 500ms.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Principe : capture du canvas heatmap actuel dans une <img> superposée
(opacity 1), mise à jour immédiate du heatmap en dessous, puis
dissolution de l'overlay (opacity 0 en 500ms). Les deux frames
coexistent pendant la transition → vrai dissolve sans clignotement.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fade out 250ms → mise à jour des données → fade in 250ms sur le canvas
Leaflet.heat. Aucun état React supplémentaire — manipulation directe
du canvas interne via _canvas.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>