What problem does it solve? Writing animation logic often requires repetitive math for value mapping, clamping, snapping, and randomization, and hand-rolled helpers are error-prone and inconsistent across a codebase. ## Core Features & Use Cases - Range and Math Helpers: Use clamp, mapRange, normalize, interpolate, wrap, and wrapYoyo to transform values between ranges, including reusable function forms for scroll handlers and tween callbacks. - Random, Snap, and Distribute: Generate random values with optional snap increments, snap values to grids or arrays, and distribute values across targets by index or grid position for advanced staggers. - Units, Colors, and Collections: Parse units with getUnit and unitize, split colors into RGB or HSL arrays, scope selectors to components, and convert NodeLists with toArray. - Use Case: When mapping scroll progress (0–1) to a rotation of 0–360 degrees, create a reusable mapper with gsap.utils.mapRange and call it inside a ScrollTrigger callback. ## Quick Start Ask the agent to map scroll progress to an element's rotation using gsap.utils.mapRange with snapping to 15-degree increments.