'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var utils = require('@motionone/utils'); var animation = require('@motionone/animation'); function stagger(duration = 0.1, { start = 0, from = 0, easing } = {}) { return (i, total) => { const fromIndex = utils.isNumber(from) ? from : getFromIndex(from, total); const distance = Math.abs(fromIndex - i); let delay = duration * distance; if (easing) { const maxDelay = total * duration; const easingFunction = animation.getEasingFunction(easing); delay = easingFunction(delay / maxDelay) * maxDelay; } return start + delay; }; } function getFromIndex(from, total) { if (from === "first") { return 0; } else { const lastIndex = total - 1; return from === "last" ? lastIndex : lastIndex / 2; } } function resolveOption(option, i, total) { return typeof option === "function" ? option(i, total) : option; } exports.getFromIndex = getFromIndex; exports.resolveOption = resolveOption; exports.stagger = stagger;