UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

36 lines (35 loc) 978 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useToggleable = void 0; var _react = require("react"); var _useImmutableCallback = require("../useImmutableCallback"); /** * Manage enable state */ var useToggleable = function (_a) { var state = _a.state, setStateExternal = _a.setState, disabled = _a.disabled; var control = (0, _react.useRef)(null); var setState = (0, _useImmutableCallback.useImmutableCallback)(function (state) { if (setStateExternal !== undefined && !disabled) { setStateExternal(state); } }, [disabled, setStateExternal]); var toggle = (0, _useImmutableCallback.useImmutableCallback)(function () { if (!disabled) { setState(!state); } }, [disabled, state, setState]); // Initialize if (control.current === null) { control.current = { setState: setState, toggle: toggle }; } return control.current; }; exports.useToggleable = useToggleable;