wrap
Wrap a value within a specified range, creating a repeating cycle.
Usage
js
import { wrap } from '@studiometa/js-toolkit/utils';
wrap(5, 0, 3); // 2
wrap(-1, 0, 3); // 2
wrap(10, 0, 3); // 1Parameters
value(number): The value to wrapmin(number): The minimum value of the rangemax(number): The maximum value of the range
Return value
number: The wrapped value within the specified range
Behavior
The wrap function ensures that:
- Values above
maxwrap around to the beginning of the range - Values below
minwrap around to the end of the range - If
minequalsmax, the function returnsmin - The result is always within
[min, max)(inclusive of min, exclusive of max)
Types
ts
function wrap(value: number, min: number, max: number): number;Examples
Carousel/slider
js
import { wrap } from '@studiometa/js-toolkit/utils';
let currentIndex = 0;
const totalSlides = 5;
// Navigate forward
currentIndex = wrap(currentIndex + 1, 0, totalSlides); // 1, 2, 3, 4, 0, 1...
// Navigate backward
currentIndex = wrap(currentIndex - 1, 0, totalSlides); // 4, 3, 2, 1, 0, 4...Angle wrapping
js
import { wrap } from '@studiometa/js-toolkit/utils';
// Keep angles between 0 and 360 degrees
let angle = 450;
angle = wrap(angle, 0, 360); // 90
angle = -45;
angle = wrap(angle, 0, 360); // 315