Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@kv/react-hooks / lib / toggleable.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useToggleable = void 0;
var react_1 = require("react");
var useToggleable = function (_a) {
    var _b = _a === void 0 ? {} : _a, _c = _b.defaultValue, defaultValue = _c === void 0 ? false : _c, onEnable = _b.onEnable, onDisable = _b.onDisable;
    var _d = react_1.useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : false), value = _d[0], setValue = _d[1];
    var enable = react_1.useCallback(function () {
        setValue(true);
        onEnable === null || onEnable === void 0 ? void 0 : onEnable();
    }, [onEnable]);
    var disable = react_1.useCallback(function () {
        setValue(false);
        onDisable === null || onDisable === void 0 ? void 0 : onDisable();
    }, [onDisable]);
    var toggle = react_1.useCallback(function () {
        if (value) {
            disable();
        }
        else {
            enable();
        }
    }, [value, enable, disable]);
    var result = react_1.useMemo(function () { return ({ value: value, setValue: setValue, toggle: toggle, enable: enable, disable: disable }); }, [value, setValue, enable, disable, toggle]);
    return result;
};
exports.useToggleable = useToggleable;