UNPKG

context-hook

Version:

Simple util that resolves common cases with react Context API.

56 lines (55 loc) 2.48 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createContextHook = void 0; var react_1 = __importStar(require("react")); var to_pascal_case_1 = require("./to-pascal-case"); var createContextHook = function (name, useHook) { var _a; if (typeof name !== 'string' || !name) throw new TypeError('You should to pass string name.'); if (typeof useHook !== 'function') throw new TypeError('You should to pass hook function.'); var Context = (0, react_1.createContext)({}); var pascal = (0, to_pascal_case_1.toPascalCase)(name); var hookName = "use" + pascal; var providerName = pascal + "Provider"; Context.displayName = pascal + "Context"; return _a = {}, _a[hookName] = function () { return (0, react_1.useContext)(Context); }, _a[providerName] = function (_a) { var children = _a.children, payload = __rest(_a, ["children"]); return (react_1.default.createElement(Context.Provider, { value: useHook(payload), children: children })); }, _a; }; exports.createContextHook = createContextHook;