UNPKG

@shakacode/recompose

Version:

A React utility belt for function components and higher-order components

36 lines (34 loc) 1.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = require("react"); var _setDisplayName = _interopRequireDefault(require("./setDisplayName")); var _wrapDisplayName = _interopRequireDefault(require("./wrapDisplayName")); var _contextStore = require("./utils/contextStore"); // Note: only the keys of contextTypes are used to select which context values // to inject. The validator values (PropTypes) are not used for validation since // PropTypes is deprecated and legacy context was removed in React 19. var getContext = function getContext(contextTypes) { return function (BaseComponent) { var contextKeys = Object.keys(contextTypes); // Build a chain of Consumer wrappers var Wrapped = BaseComponent; contextKeys.forEach(function (key) { var Ctx = (0, _contextStore.getOrCreateContext)(key); var Prev = Wrapped; Wrapped = function Wrapped(props) { return /*#__PURE__*/(0, _react.createElement)(Ctx.Consumer, null, function (value) { var _extends2; return /*#__PURE__*/(0, _react.createElement)(Prev, (0, _extends3["default"])({}, props, (_extends2 = {}, _extends2[key] = value, _extends2))); }); }; }); if (process.env.NODE_ENV !== 'production') { return (0, _setDisplayName["default"])((0, _wrapDisplayName["default"])(BaseComponent, 'getContext'))(Wrapped); } return Wrapped; }; }; var _default = exports["default"] = getContext;