react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
36 lines (35 loc) • 978 B
JavaScript
;
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;