react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
69 lines (68 loc) • 2.13 kB
TypeScript
import type { Animation, AnimatableValue, Timestamp } from '../commonTypes';
export type SpringConfig = {
stiffness?: number;
overshootClamping?: boolean;
restDisplacementThreshold?: number;
restSpeedThreshold?: number;
velocity?: number;
} & ({
mass?: number;
damping?: number;
duration?: never;
dampingRatio?: never;
} | {
mass?: never;
damping?: never;
duration?: number;
dampingRatio?: number;
});
export interface SpringConfigInner {
useDuration: boolean;
configIsInvalid: boolean;
}
export interface SpringAnimation extends Animation<SpringAnimation> {
current: AnimatableValue;
toValue: AnimatableValue;
velocity: number;
lastTimestamp: Timestamp;
startTimestamp: Timestamp;
startValue: number;
zeta: number;
omega0: number;
omega1: number;
}
export interface InnerSpringAnimation extends Omit<SpringAnimation, 'toValue' | 'current'> {
toValue: number;
current: number;
}
export declare function initialCalculations(mass: number | undefined, config: Record<keyof SpringConfig, any> & SpringConfigInner): {
zeta: number;
omega0: number;
omega1: number;
};
export declare function calculateNewMassToMatchDuration(x0: number, config: Record<keyof SpringConfig, any> & SpringConfigInner, v0: number): number;
export declare function criticallyDampedSpringCalculations(animation: InnerSpringAnimation, precalculatedValues: {
v0: number;
x0: number;
omega0: number;
t: number;
}): {
position: number;
velocity: number;
};
export declare function underDampedSpringCalculations(animation: InnerSpringAnimation, precalculatedValues: {
zeta: number;
v0: number;
x0: number;
omega0: number;
omega1: number;
t: number;
}): {
position: number;
velocity: number;
};
export declare function isAnimationTerminatingCalculation(animation: InnerSpringAnimation, config: Partial<SpringConfig> & Required<Pick<SpringConfig, 'restSpeedThreshold' | 'restDisplacementThreshold'>>): {
isOvershooting: boolean;
isVelocity: boolean;
isDisplacement: boolean;
};