/**
 * Default animation values used throughout core
 */
export const CORE_ANIMATION_DEFAULTS = {
    duration: 0.35,
    spring: {
        tension: 140,
        friction: 10,
        mass: 1,
        velocity: 0,
    },
};
/**
 * Get a duration with damping value from various spring related settings.
 * Helpful when needing to convert spring settings to isolated duration value.
 * @param springSettings various spring settings
 * @returns calculated duration with damping from spring settings
 */
export function getDurationWithDampingFromSpring(springSettings) {
    // for convenience, default spring settings are provided
    const opt = {
        ...CORE_ANIMATION_DEFAULTS.spring,
        ...(springSettings || {}),
    };
    const damping = opt.friction / Math.sqrt(2 * opt.tension);
    const undampedFrequency = Math.sqrt(opt.tension / opt.mass);
    // console.log({
    // 	damping,
    // 	undampedFrequency
    // })
    const epsilon = 0.001;
    let duration = 0;
    if (damping < 1) {
        // console.log('damping < 1');
        const a = Math.sqrt(1 - Math.pow(damping, 2));
        const b = opt.velocity / (a * undampedFrequency);
        const c = damping / a;
        const d = -((b - c) / epsilon);
        if (d > 0) {
            duration = Math.log(d) / (damping * undampedFrequency);
        }
    }
    return {
        duration,
        damping,
    };
}
//# sourceMappingURL=animation-helpers.js.map