pricing4react
Version:
A library of components that ease the integration of feature toggling driven by pricing plans into your React application's UI.
104 lines (103 loc) • 4.38 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
exports.__esModule = true;
exports.Feature = exports.ErrorFallback = exports.Loading = exports.Default = exports.On = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var useGenericFeature_1 = require("./useGenericFeature");
var react_1 = __importStar(require("react"));
function On(_a) {
var children = _a.children, expression = _a.expression;
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
}
exports.On = On;
function Default(_a) {
var children = _a.children;
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
}
exports.Default = Default;
function Loading(_a) {
var children = _a.children;
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
}
exports.Loading = Loading;
function ErrorFallback(_a) {
var children = _a.children;
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
}
exports.ErrorFallback = ErrorFallback;
function Feature(_a) {
var children = _a.children, expression = _a.expression;
var _b = (0, react_1.useState)(0), key = _b[0], setKey = _b[1];
var _c = (0, react_1.useState)([]), onChildren = _c[0], setOnChildren = _c[1];
var _d = (0, react_1.useState)([]), defaultChildren = _d[0], setDefaultChildren = _d[1];
var _e = (0, react_1.useState)([]), loadingChildren = _e[0], setLoadingChildren = _e[1];
var _f = (0, react_1.useState)([]), errorChildren = _f[0], setErrorChildren = _f[1];
var onExpressions = (0, react_1.useMemo)(function () {
return onChildren.map(function (child) {
var evaluationExpression = child.props.expression !== undefined ? child.props.expression : expression;
return {
on: child.props.children,
expression: evaluationExpression
};
});
}, [onChildren]);
(0, react_1.useEffect)(function () {
setKey(key + 1);
// Gets children of Feature.On
var on = react_1["default"].Children.toArray(children).filter(function (child) {
var c = child;
return c.type === On;
});
setOnChildren(on);
// Gets children of Feature.Off
var def = react_1["default"].Children.toArray(children).filter(function (child) {
var c = child;
return c.type === Default;
});
setDefaultChildren(def);
// Gets children of Feature.Loading
var loading = react_1["default"].Children.toArray(children).filter(function (child) {
var c = child;
return c.type === Loading;
});
setLoadingChildren(loading);
// Gets children of Feature.Error
var err = react_1["default"].Children.toArray(children).filter(function (child) {
var c = child;
return c.type === ErrorFallback;
});
setErrorChildren(err);
}, [children]);
var feature = (0, useGenericFeature_1.useGenericFeature)({
key: key.toString(),
on: onExpressions,
"default": defaultChildren,
loading: loadingChildren,
error: errorChildren
});
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: feature });
// return <Suspense fallback={loading}>{feature.feature}</Suspense>;
}
exports.Feature = Feature;