Dashboard sipadu mbip
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

mapContextToProps.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.default = mapContextToProps;
  4. var _react = _interopRequireDefault(require("react"));
  5. var _forwardRef = _interopRequireDefault(require("./forwardRef"));
  6. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  7. function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
  8. var getDisplayName = function getDisplayName(Component) {
  9. var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;
  10. return name ? "ContextTransform(" + name + ")" : 'ContextTransform';
  11. };
  12. var ensureConsumer = function ensureConsumer(c) {
  13. return c.Consumer || c;
  14. };
  15. function $mapContextToProps(_ref, Component) {
  16. var maybeArrayOfConsumers = _ref.consumers,
  17. mapToProps = _ref.mapToProps,
  18. displayName = _ref.displayName,
  19. _ref$forwardRefAs = _ref.forwardRefAs,
  20. forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;
  21. var consumers = maybeArrayOfConsumers;
  22. if (!Array.isArray(maybeArrayOfConsumers)) {
  23. consumers = [maybeArrayOfConsumers];
  24. }
  25. var SingleConsumer = ensureConsumer(consumers[0]);
  26. function singleRender(props, ref) {
  27. var _extends2;
  28. var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);
  29. return _react.default.createElement(SingleConsumer, null, function (value) {
  30. return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));
  31. });
  32. }
  33. function multiRender(props, ref) {
  34. var _extends3;
  35. var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);
  36. return consumers.reduceRight(function (inner, Context) {
  37. return function () {
  38. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  39. args[_key] = arguments[_key];
  40. }
  41. var Consumer = ensureConsumer(Context);
  42. return _react.default.createElement(Consumer, null, function (value) {
  43. return inner.apply(void 0, args.concat([value]));
  44. });
  45. };
  46. }, function () {
  47. for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  48. contexts[_key2] = arguments[_key2];
  49. }
  50. return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));
  51. })();
  52. }
  53. var contextTransform = consumers.length === 1 ? singleRender : multiRender;
  54. return (0, _forwardRef.default)(contextTransform, {
  55. displayName: displayName || getDisplayName(Component)
  56. });
  57. }
  58. function mapContextToProps(maybeOpts, mapToProps, Component) {
  59. if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);
  60. return $mapContextToProps({
  61. consumers: maybeOpts,
  62. mapToProps: mapToProps
  63. }, Component);
  64. }