/** * Svelte action for arrow animations. Two strategies depending on mode: * * • 'draw' / 'undraw' / 'draw-undraw' — reveals the stroke ALONG THE PATH using * stroke-dasharray/offset keyed to the path's total length. This follows the * real geometry, so curved, looping and spiral arrows draw the way they're * shaped (a linear clip-path wipe could only sweep left↔right / top↔bottom). * The arrowhead (a separate sub-path) is revealed in step. Any dashed/dotted * pattern is overridden during the reveal and restored when fully drawn. * * • 'flow' — marching ants. Continuously shifts stroke-dashoffset on the * inner .arrow-path, so the dash pattern appears to flow along the path * like a current. Forward/reverse controls flow direction. Inherently * looping; the loop flag is ignored. */ export interface ArrowClipDrawParams { enabled: boolean; mode: 'draw' | 'undraw' | 'draw-undraw' | 'flow' | 'none' | string; duration: number; startX: number; startY: number; endX: number; endY: number; loop?: boolean; reverse?: boolean; /** Slide loop duration in ms. When provided AND loop=true (or mode='flow'), * the effective animation duration is rounded so an integer number fits in * slide_duration — guarantees seamless GIF loop. */ slideDuration?: number; key?: unknown; } export declare function arrowClipDraw(node: SVGSVGElement, params: ArrowClipDrawParams): { update(p: ArrowClipDrawParams): void; destroy(): void; };