react-if-vz
Version:
Declarative conditional rendering for React — logic-first, TypeScript-native.
3 lines (2 loc) • 4.43 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e);function r(e,n){"undefined"!=typeof console&&console.log(e,n)}var l="undefined"!=typeof process&&"production"!==process.env.NODE_ENV;function o(e,n){if(!n.wrapper)return e;var r=n.wrapper;return t.default.createElement(r,{className:n.className,style:n.style},e)}var u=function(){function e(e,n){void 0===e&&(e=r),void 0===n&&(n=!1),this.logger=e,this.traced=n,this.entries=[],this.fallback=null}return e.prototype.when=function(e,n){return this.entries.push({condition:e,node:n}),this},e.prototype.else=function(e){return this.fallback=e,this.render()},e.prototype.render=function(){var e=this,n=this.fallback;return this.entries.some((function(t,r){var o=p(t.condition,[]);return e.traced&&l&&e.logger("[Ifz.chain] when[".concat(r,"] → ").concat(o)),!!o&&(n=t.node,!0)})),t.default.createElement(t.default.Fragment,null,n)},e}(),a={logger:r,trace:!1};function i(e){return null}function c(e){return null}function f(e){return e.children,null}function d(e){return e.children,null}function s(e,n){return"function"==typeof e?e.apply(void 0,n):e}function p(e,n){return Boolean(s(e,n))}function g(e,n){return"function"==typeof e?e.apply(void 0,n):e}function h(n,r){if(void 0===r&&(r=[]),!e.isValidElement(n))return n;var u=n,f=u.type,s=u.props;return f===i||f===c?p(s.condition,s.args||r)?(s.debug&&a.trace&&l&&a.logger("[Ifz] Rendered",{label:s.debug}),o(g(s.children,s.args||r),s)):null:f===v||f===d?t.default.createElement(v,null,s.children):n}function v(n){var r=n.children;if(!r)return null;for(var l=null,o=0,u=t.default.Children.toArray(r);o<u.length;o++){var a=u[o],i=h(a);if(null!=i)return t.default.createElement(t.default.Fragment,null,i);e.isValidElement(a)&&a.type===f&&null===l&&(l=g(a.props.children,[]))}return t.default.createElement(t.default.Fragment,null,l)}function m(n){for(var r,l=n.value,u=n.children,i=n.args,c=void 0===i?[]:i,f=t.default.Children.toArray(u),d=!(null==l),p=d?s(l,c):void 0,h=null,v=0,m=0,y=f;m<y.length;m++){var I=y[m];if(e.isValidElement(I)){var w=I,F=w.type,z=w.props;if(F===x){var b=s(z.value,c);if(z.match?z.match(p,b):d?p===b:Boolean(b))return a.trace&&(null===(r=a.logger)||void 0===r||r.call(a,"[Switch] case[".concat(v,"] matched"))),o(g(z.children,z.args||c),z);v++}if(F===E&&null==h)h=o(g(z.children,z.args||c),z)}}return t.default.createElement(t.default.Fragment,null,h)}function x(e){return t.default.createElement(t.default.Fragment,null,e.children)}function E(e){return t.default.createElement(t.default.Fragment,null,e.children)}v.If=i,v.ElseIf=c,v.Else=f,v.ElseIfz=d,v.chain=function(e){return(null==e?void 0:e.logger)&&(a.logger=e.logger),void 0!==(null==e?void 0:e.trace)&&(a.trace=e.trace),new u(a.logger,a.trace)},m.Case=x,m.Default=E,exports.Case=x,exports.Default=E,exports.Else=f,exports.ElseIf=c,exports.ElseIfz=d,exports.If=i,exports.Ifz=v,exports.IfzChain=u,exports.IfzConfig=a,exports.Switch=m,exports.When=function(e){var n=e.condition,r=e.children,l=e.args,o=null!=l?l:[];return p(n,o)?t.default.createElement(t.default.Fragment,null,g(r,o)):null},exports.WhenAll=function(e){var n=e.conditions,r=e.children;return n.every(Boolean)?t.default.createElement(t.default.Fragment,null,r):null},exports.WhenAny=function(e){var n=e.conditions,r=e.children;return n.some(Boolean)?t.default.createElement(t.default.Fragment,null,r):null},exports.WhenNot=function(e){var n=e.condition,r=e.children;return n?null:t.default.createElement(t.default.Fragment,null,r)},exports.configureIfz=function(e){e.logger&&(a.logger=e.logger),void 0!==e.trace&&(a.trace=e.trace)},exports.defaultLogger=r,exports.execIfCondition=p,exports.execValue=s,exports.isDev=l,exports.renderChildren=g,exports.useIfz=function(n,o){var u,a;void 0===n&&(n=[]);var i=e.useRef([]),c=e.useRef(!1),f=null!==(u=null==o?void 0:o.logger)&&void 0!==u?u:r,d=null!==(a=null==o?void 0:o.trace)&&void 0!==a&&a,s=function(e){if(c.current)return e;c.current=!0;var r=i.current;i.current=[];var o=e;return r.some((function(e,t){var r=p(e.condition,n);return d&&l&&f("[useIfz] when[".concat(t,"] → ").concat(r)),!!r&&(o=e.node,!0)})),t.default.createElement(t.default.Fragment,null,o)},g={when:function(e,n){return i.current.push({condition:e,node:n}),g},else:s,otherwise:s};return g},exports.wrapper=o;
//# sourceMappingURL=index.cjs.js.map