UNPKG

@darwish/hooks-core

Version:

49 lines (48 loc) 1.92 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import React, { useMemo } from "react"; /** * @author darwish * @param defaultValue a boolean value * @description a hook to toggle boolean value * @returns `UseBooleanOutput` An object containing the boolean state value and utility functions to manipulate the state. * @property {Function} `UseBooleanOutput.set` sets the value * @property {Function} `UseBooleanOutput.value` the current boolean value * @property {Function} `UseBooleanOutput.setTrue` sets the value to `true` * @property {Function} `UseBooleanOutput.setFalse` sets the value to `false` * @property {Function} `UseBooleanOutput.toggle` toggles the value * @see [Documentation](https://darwish.vercel.app/hooks/use-boolean) * @example * const {value, setTrue, setFalse, toggle} = useBoolean(true); * <button onClick={toggle}>Toggle</button> */ var useBoolean = function (defaultValue) { var _a = React.useState(!!defaultValue), value = _a[0], setValue = _a[1]; var utils = useMemo(function () { var set = function (settingValue) { setValue(settingValue); }; var setTrue = function () { return setValue(true); }; var setFalse = function () { return setValue(false); }; var toggle = function () { setValue(function (prev) { return !prev; }); }; return { set: set, setTrue: setTrue, setFalse: setFalse, toggle: toggle, }; }, [value]); return __assign({ value: value }, utils); }; export default useBoolean;