steps.mjs 470 B

123456789101112131415
  1. import { clamp } from '../utils/clamp.mjs';
  2. function steps(numSteps, direction = "end") {
  3. return (progress) => {
  4. progress =
  5. direction === "end"
  6. ? Math.min(progress, 0.999)
  7. : Math.max(progress, 0.001);
  8. const expanded = progress * numSteps;
  9. const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
  10. return clamp(0, 1, rounded / numSteps);
  11. };
  12. }
  13. export { steps };