react-smart-conditional
Version:
Manage conditional rendering in react js and it's frameworks like a pro
3 lines (2 loc) • 1.64 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e||self)["react-smart-conditional"]={},e.react)}(this,function(e,n){function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=/*#__PURE__*/r(n);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},i.apply(null,arguments)}function a(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}var o=n.forwardRef,l=function(e){return e===n.Fragment},f=["as","condition"],c=o(function(e,n){var r=e.as,o=void 0===r?"div":r,c=e.condition,d=a(e,f);return c?l(o)?d.children:t.default.createElement(o,i({ref:n},d)):null});c.displayName="If";var d=["as"],u=o(function(e,n){var r=e.as,o=void 0===r?"div":r,f=a(e,d);return l(o)?f.children:t.default.createElement(o,i({ref:n},f))});u.displayName="Else";var s=["as","children","multiple"],p=o(function(e,r){var o=e.as,f=void 0===o?"div":o,d=e.children,p=e.multiple,v=void 0!==p&&p,h=a(e,s),m=[],y=null;n.Children.toArray(d).forEach(function(e){if(n.isValidElement(e)){var r=e.type;if(r===c&&e.props.condition){if(m.push(e),!v)return}else r!==u||y||(y=e)}else console.warn("Invalid child type in Show component")});var b=m.length>0?v?m:m[0]:y;return l(f)?b:t.default.createElement(f,i({ref:r},h),b)});p.displayName="Show";var v=Object.assign(p,{If:c,Else:u});e.Show=v});
//# sourceMappingURL=index.umd.js.map