UNPKG

hook-conditional

Version:

Conditionally run different React hooks at runtime with a clean and safe API that follows the Rules of Hooks.

28 lines (27 loc) 1.14 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; export var useConditionalHook = function (condition, hookMap, fallbackHook) { var results = Object.entries(hookMap).reduce(function (acc, _a) { var _b; var key = _a[0], hook = _a[1]; return (__assign(__assign({}, acc), (_b = {}, _b[key] = hook(), _b))); }, {}); var result = results[String(condition)]; if (result === undefined && !fallbackHook) { if (process.env.NODE_ENV !== "production") { console.warn("[useConditionalHook] No matching hook found for condition \"".concat(condition, "\" and no fallback provided.")); } return results[Object.keys(results)[0]]; } return result !== null && result !== void 0 ? result : fallbackHook(); }; export default useConditionalHook;