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