import type { CancelableTimeout, TimeoutController } from './timeoutController'; import { AnimationHandle } from './AnimationHandle'; /** * It's actually always the case that JavaScript-based animations produce numbers, * and CSS transition-based animations always produce strings, * but it's so much easier to just have them together than to deal with all the generics. * * @see {@link https://recharts.github.io/en-US/guide/animations/ Animation guide} * * @since 3.9 */ export type OnAnimationStateUpdate = (newState: number | string) => void; /** * AnimationController accepts the animation state machine (= RechartsAnimation) plus a timeout controller, * and manages the animation by calling the tick method of the animation state machine at the right time. * * One controller is only responsible for one animation. Every new animation will create a new controller. * * The animation state machine is responsible for calculating the animation progress * and calling the onAnimationStart and onAnimationEnd callbacks at the right time, * while the AnimationController is responsible for calling the tick method of the animation state machine. * * @see {@link https://recharts.github.io/en-US/guide/animations/ Animation guide} * * @since 3.9 */ export type AnimationController = (timeoutController: TimeoutController, animationHandle: AnimationHandle, listener: OnAnimationStateUpdate) => CancelableTimeout;