'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var utils = require('@motionone/utils'); const timeStep = 10; const maxDuration = 10000; function pregenerateKeyframes(generator, toUnit = utils.noopReturn) { let overshootDuration = undefined; let timestamp = timeStep; let state = generator(0); const keyframes = [toUnit(state.current)]; while (!state.done && timestamp < maxDuration) { state = generator(timestamp); keyframes.push(toUnit(state.done ? state.target : state.current)); if (overshootDuration === undefined && state.hasReachedTarget) { overshootDuration = timestamp; } timestamp += timeStep; } const duration = timestamp - timeStep; /** * If generating an animation that didn't actually move, * generate a second keyframe so we have an origin and target. */ if (keyframes.length === 1) keyframes.push(state.current); return { keyframes, duration: duration / 1000, overshootDuration: (overshootDuration !== null && overshootDuration !== void 0 ? overshootDuration : duration) / 1000, }; } exports.pregenerateKeyframes = pregenerateKeyframes;