UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

29 lines (28 loc) 897 B
"use client"; import { clamp } from "../utils/clamp/clamp.mjs"; import { useCallback, useState } from "react"; //#region packages/@mantine/hooks/src/use-counter/use-counter.ts const DEFAULT_OPTIONS = { min: -Infinity, max: Infinity }; function useCounter(initialValue = 0, options) { const { min, max } = { ...DEFAULT_OPTIONS, ...options }; const [count, setCount] = useState(clamp(initialValue, min, max)); return [count, { increment: useCallback(() => setCount((current) => clamp(current + 1, min, max)), [min, max]), decrement: useCallback(() => setCount((current) => clamp(current - 1, min, max)), [min, max]), set: useCallback((value) => setCount(clamp(value, min, max)), [min, max]), reset: useCallback(() => setCount(clamp(initialValue, min, max)), [ initialValue, min, max ]) }]; } //#endregion export { useCounter }; //# sourceMappingURL=use-counter.mjs.map