react-molasses
Version:
React package for interacting with Molasses' API
48 lines • 1.86 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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withMolasses = exports.Feature = exports.useMolasses = exports.useFeature = exports.MolassesProvider = exports.MolassesContext = void 0;
var React = require("react");
exports.MolassesContext = React.createContext(undefined);
var MolassesProvider = function (_a) {
var client = _a.client, children = _a.children;
return React.createElement(exports.MolassesContext.Provider, { value: client }, children);
};
exports.MolassesProvider = MolassesProvider;
var useFeature = function (name, user) {
var client = React.useContext(exports.MolassesContext);
return client.isActive(name, user);
};
exports.useFeature = useFeature;
var useMolasses = function () {
return React.useContext(exports.MolassesContext);
};
exports.useMolasses = useMolasses;
function Feature(_a) {
var name = _a.name, user = _a.user, children = _a.children, _b = _a.render, render = _b === void 0 ? children : _b;
var isActive = exports.useFeature(name, user);
if (typeof render === "function")
return render(isActive);
if (!isActive)
return null;
return render;
}
exports.Feature = Feature;
function withMolasses(Component) {
return function (props) {
var molasses = exports.useMolasses();
return React.createElement(Component, __assign({}, props, { molasses: molasses }));
};
}
exports.withMolasses = withMolasses;
//# sourceMappingURL=index.js.map