UNPKG

ahooks

Version:
73 lines (72 loc) 2.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _useMemoizedFn = _interopRequireDefault(require("../useMemoizedFn")); var _utils = require("../utils"); function getTargetValue(val) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var min = options.min, max = options.max; var target = val; if ((0, _utils.isNumber)(max)) { target = Math.min(max, target); } if ((0, _utils.isNumber)(min)) { target = Math.max(min, target); } return target; } function useCounter() { var initialValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var min = options.min, max = options.max; var _useState = (0, _react.useState)(function () { return getTargetValue(initialValue, { min: min, max: max }); }), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), current = _useState2[0], setCurrent = _useState2[1]; var setValue = function setValue(value) { setCurrent(function (c) { var target = (0, _utils.isNumber)(value) ? value : value(c); return getTargetValue(target, { max: max, min: min }); }); }; var inc = function inc() { var delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; setValue(function (c) { return c + delta; }); }; var dec = function dec() { var delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; setValue(function (c) { return c - delta; }); }; var set = function set(value) { setValue(value); }; var reset = function reset() { setValue(initialValue); }; return [current, { inc: (0, _useMemoizedFn["default"])(inc), dec: (0, _useMemoizedFn["default"])(dec), set: (0, _useMemoizedFn["default"])(set), reset: (0, _useMemoizedFn["default"])(reset) }]; } var _default = exports["default"] = useCounter;