UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

29 lines 769 B
import { useRef } from 'react'; import { useImmutableCallback } from '../useImmutableCallback'; /** * Manage enable state */ export var useToggleable = function (_a) { var state = _a.state, setStateExternal = _a.setState, disabled = _a.disabled; var control = useRef(null); var setState = useImmutableCallback(function (state) { if (setStateExternal !== undefined && !disabled) { setStateExternal(state); } }, [disabled, setStateExternal]); var toggle = useImmutableCallback(function () { if (!disabled) { setState(!state); } }, [disabled, state, setState]); // Initialize if (control.current === null) { control.current = { setState: setState, toggle: toggle }; } return control.current; };