https://github.com/akgondber/range-stepper
Build a range with current value and a step and use methods to get previous or next value
https://github.com/akgondber/range-stepper
Last synced: 3 months ago
JSON representation
Build a range with current value and a step and use methods to get previous or next value
- Host: GitHub
- URL: https://github.com/akgondber/range-stepper
- Owner: akgondber
- License: mit
- Created: 2023-05-18T23:23:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-18T00:31:47.000Z (over 1 year ago)
- Last Synced: 2025-01-05T23:43:04.761Z (5 months ago)
- Language: TypeScript
- Size: 93.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# range-stepper [![NPM version][npm-image]][npm-url]
> Build a range with current value and a step and use convenient api to manipulate with a pointer
This package can be useful for cycling through tabs, index based apps and games, slides, etc. Instead of defining and checking indexes you can instantiate this class and use convenience api.
## Installation
```sh
$ npm install range-stepper
```or
```sh
$ yarn add range-stepper
```## Usage
```javascript
import RangeStepper from "range-stepper";const stepper = new RangeStepper({ max: 16 });
stepper.next();
console.log(stepper.value); // 1stepper.next();
console.log(stepper.value); // 2stepper.next();
console.log(stepper.value); // 3stepper.previous();
console.log(stepper.value); // 2
```## Features
```javascript
const stepper = new RangeStepper({ max: 16 });
stepper.next();
console.log(stepper.value); // 1console.log(stepper.isCurrent(1)); // true
console.log(stepper.isCurrent(5)); // falseconsole.log(stepper.setValue(6));
console.log(stepper.value); // 7console.log(stepper.hasNext()); // true
console.log(stepper.setValue(16));
console.log(stepper.hasNext()); // falseconsole.log(stepper.setValue(5));
console.log(stepper.hasPrevious()); // true
console.log(stepper.setValue(0));
console.log(stepper.hasPrevious()); // falseconsole.log(stepper.setValue(16));
// uses cyclical approach
// when max is reached
// `next()` method moves a current pointer to the min value
stepper.next();
console.log(stepper.value); // 0console.log(stepper.setValue(0));
// when current value equals to min value
// `previous()` method moves a current pointer to the max value
stepper.previous();
console.log(stepper.value); // 16// in order to move a pointer to start value
// you can use the `first()` method
stepper.first();
console.log(stepper.value); // 0// in order to move a pointer to start value
// you can use the `last()` method
stepper.last();
console.log(stepper.value); // 16const obj = stepper.asObject(); // get an object representation
const clonedInstance = stepper.clone(); // get a clone
const dupInstance = stepper.dup(); // `dup` is an alias for the `clone` method// setting the `inclusive value to false indicating that max must be greater than min
const stepper = new RangeStepper({ min: 0, max: 0, inclusive: false });
// raises `max must be greater than min`// whether max value equal to min value
const stepper = new RangeStepper({ min: 0, max: 0 });
console.log(stepper.isSingle()); // true
const stepper = new RangeStepper({ min: 0, max: 8 });
console.log(stepper.isSingle()); // false
```## License
MIT © [Rushan Alyautdinov](https://github.com/akgondber)
[npm-image]: https://img.shields.io/npm/v/range-stepper.svg?style=flat
[npm-url]: https://npmjs.org/package/range-stepper