fix: replace SVG animate with CSS animation for basic edge to prevent bounce

SVG <animate> restarts on every React re-render (especially visible under
StrictMode double-invoke in dev), causing a visible bounce. CSS animation
runs on the compositor thread independently of React renders.
This commit is contained in:
Pouzor
2026-04-09 16:52:43 +02:00
parent e666abefad
commit 531fb12eab
2 changed files with 11 additions and 12 deletions
+6 -12
View File
@@ -255,18 +255,12 @@ export function HomelableEdge({ id, source, target, sourceX, sourceY, targetX, t
stroke={strokeColor}
strokeWidth={style.strokeWidth as number ?? 2}
strokeDasharray="5"
style={{ pointerEvents: 'none' }}
>
{/* Always animate physically downward: if source is above target the path
goes forward (source→target = down), otherwise reverse */}
<animate
attributeName="stroke-dashoffset"
from={sourceY <= targetY ? '10' : '0'}
to={sourceY <= targetY ? '0' : '10'}
dur="0.5s"
repeatCount="indefinite"
/>
</path>
style={{
pointerEvents: 'none',
animation: 'homelable-basic-dash 0.5s linear infinite',
animationDirection: sourceY <= targetY ? 'normal' : 'reverse',
}}
/>
)}
{animMode === 'snake' && (
+5
View File
@@ -6,6 +6,11 @@
@custom-variant dark (&:is(.dark *));
@keyframes homelable-basic-dash {
from { stroke-dashoffset: 10; }
to { stroke-dashoffset: 0; }
}
/* Homelable dark theme — always dark */
:root {
--background: #0d1117;