react-universally
Version:
A starter kit for universal react applications.
22 lines (20 loc) • 865 B
JavaScript
const execIfFunc = x => typeof x === 'function' ? x() : x;
/**
* This is a higher order function that accepts a boolean condition and will
* return a function allowing you to provide if/else values that should be
* resolved based on the boolean condition.
*
* @param {Boolean|() => Boolean} condition:
* The condition to test against. This can be a function for lazy resolution.
*
* @return {(X|() => X, Y|() => Y) => X|Y}
* A function where the first paramater is the "if" and the second paramater
* is the "else". Each of these allows lazy resolving by providing a function.
*
* @example
* const ifDev = ifElse(process.env.NODE_ENV === 'development');
* ifDev('foo', () => 'lazy resolved'); // => 'foo'
*/
export default function ifElse(condition) {
return (then, or) => execIfFunc(condition) ? execIfFunc(then) : execIfFunc(or);
}