/** * Svelte action: animates SVG paths inside the host node using a JS RAF loop. * * Why JS instead of CSS animations: CSS animations had timing issues — by the * time the action finished computing each path's actual length via * getTotalLength(), the CSS animation had already started using a fallback * value (1000) which doesn't match the path's real length, causing the path * to either flicker or stay fully visible. Doing everything in JS is reliable. * * Modes: * • draw — strokes appear from 0 → length (handle reverse to flip) * • undraw — strokes disappear from length → 0 * • draw-undraw — appear then disappear, repeats if loop=true * • flow — marching ants. Keeps base dasharray, shifts offset. * • none — no animation; restore original attributes. */ export interface SvgPathDrawParams { enabled: boolean; mode: 'none' | 'draw' | 'undraw' | 'draw-undraw' | 'flow'; duration: number; loop?: boolean; reverse?: boolean; key?: unknown; } export declare function traceSvgPaths(node: HTMLElement | SVGElement, params: SvgPathDrawParams): { update(p: SvgPathDrawParams): void; destroy(): void; };