control-flow-react
Version:
Control flow components for React
26 lines • 1.21 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
exports.Case = exports.Switch = void 0;
var react_1 = __importDefault(require("react"));
var Switch = function (props) {
var when = props.when, children = props.children, _a = props.fallBack, fallBack = _a === void 0 ? null : _a;
var cases = react_1["default"].Children.toArray(children).filter(function (child) { return react_1["default"].isValidElement(child) && child.type === exports.Case; });
var successCase = cases.find(function (child) {
if (!react_1["default"].isValidElement(child))
return false;
if (child.props.values)
return child.props.values.includes(when);
return child.props.value === when;
});
return react_1["default"].createElement(react_1["default"].Fragment, null, successCase ? successCase : fallBack);
};
exports.Switch = Switch;
var Case = function (_a) {
var children = _a.children;
return (react_1["default"].createElement(react_1["default"].Fragment, null, children));
};
exports.Case = Case;
//# sourceMappingURL=switch.js.map