@darwish/hooks-core
Version:
49 lines (48 loc) • 1.92 kB
JavaScript
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;