/** * AnimationBuilder - Config-based animation creator * * Creates animations from configuration objects. * Used internally by Motion() function. */ import type { AnimationVars, AnimationTarget, TargetInput, StaggerVars, SplitType, AnimationConfig, FitConfig, FlapConfig, MaskPadding } from '../types'; /** * Internal builder configuration for cloning (not exported from SDK) */ interface BuilderConfig { fromVars?: AnimationVars; toVars?: AnimationVars; setVars?: AnimationVars; duration: number; delay: number; ease: string; axis?: 'x' | 'y'; fit?: FitConfig; flap?: FlapConfig; split?: SplitType; mask?: boolean; maskPadding?: MaskPadding; stagger?: number | StaggerVars; repeat?: number; repeatDelay?: number; yoyo?: boolean; onStart?: () => void; onUpdate?: (progress: number) => void; onComplete?: () => void; onRepeat?: (repeatCount: number) => void; onReverseComplete?: () => void; } import { Animation } from './Animation'; export declare class AnimationBuilder { /** * Callback to create animations via Engine (set by Engine to avoid circular dependency) * Engine→Timeline→AnimationBuilder→Engine cycle is broken by this callback. */ private static _createAnimationCallback; static setCreateAnimationCallback(callback: typeof AnimationBuilder._createAnimationCallback): void; private _targets; private _originalTargets; private _fromVars?; private _toVars?; private _setVars?; private _duration; private _delay; private _ease; private _animation; private _animations; private _built; private _splitType?; private _mask?; private _maskPadding?; private _repeat?; private _repeatDelay?; private _yoyo?; private _stagger?; private _axis?; private _fitConfig?; private _flapConfig?; private _onStart?; private _onUpdate?; private _onComplete?; private _onRepeat?; private _onReverseComplete?; private _skipInitialFromRender; private _plainObjectInitialValues; private _expectedAnimationIds; private _propsToAnimate; /** * Create an animation builder * @param targets - Elements or objects to animate * @param config - Animation configuration */ constructor(targets: TargetInput, config?: AnimationConfig); /** * Apply animation config */ private _applyAnimationConfig; /** * Capture initial values from plain object targets */ private _capturePlainObjectValues; /** * Restore plain object targets to initial values */ private _restorePlainObjectValues; private _ensureBuilt; /** * Check if animations have been invalidated (pooled or reused) */ private _isInvalidated; /** * Rebuild if animations were pooled */ rebuildIfPooled(): void; private _build; getAnimation(): Animation | null; getAnimations(): Animation[]; getTargets(): AnimationTarget[]; /** * Get the original (pre-split) targets. When text splitting is used, * _targets holds the split fragments; _originalTargets holds the source elements. */ getOriginalTargets(): AnimationTarget[]; /** * Whether this builder uses text splitting */ hasSplit(): boolean; /** * Whether this builder uses text flapper */ hasFlap(): boolean; private _resetBuildState; /** * Get builder configuration for cloning (used by Timeline's each mode) */ getConfig(): BuilderConfig; /** * Set axis for mouse movement binding */ setAxis(axis: 'x' | 'y'): void; /** * Get axis binding */ getAxis(): 'x' | 'y' | undefined; /** * Tell Engine to skip the immediate FROM render (animation.render(0)). * Used by Timeline so it can capture initial values BEFORE FROM is applied. */ setSkipInitialFromRender(skip: boolean): void; } export {};