Dashboard sipadu mbip
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

mapContextToProps.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 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); }
  2. import React from 'react';
  3. import forwardRef from './forwardRef';
  4. var getDisplayName = function getDisplayName(Component) {
  5. var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;
  6. return name ? "ContextTransform(" + name + ")" : 'ContextTransform';
  7. };
  8. var ensureConsumer = function ensureConsumer(c) {
  9. return c.Consumer || c;
  10. };
  11. function $mapContextToProps(_ref, Component) {
  12. var maybeArrayOfConsumers = _ref.consumers,
  13. mapToProps = _ref.mapToProps,
  14. displayName = _ref.displayName,
  15. _ref$forwardRefAs = _ref.forwardRefAs,
  16. forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;
  17. var consumers = maybeArrayOfConsumers;
  18. if (!Array.isArray(maybeArrayOfConsumers)) {
  19. consumers = [maybeArrayOfConsumers];
  20. }
  21. var SingleConsumer = ensureConsumer(consumers[0]);
  22. function singleRender(props, ref) {
  23. var _extends2;
  24. var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);
  25. return React.createElement(SingleConsumer, null, function (value) {
  26. return React.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));
  27. });
  28. }
  29. function multiRender(props, ref) {
  30. var _extends3;
  31. var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);
  32. return consumers.reduceRight(function (inner, Context) {
  33. return function () {
  34. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  35. args[_key] = arguments[_key];
  36. }
  37. var Consumer = ensureConsumer(Context);
  38. return React.createElement(Consumer, null, function (value) {
  39. return inner.apply(void 0, args.concat([value]));
  40. });
  41. };
  42. }, function () {
  43. for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  44. contexts[_key2] = arguments[_key2];
  45. }
  46. return React.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));
  47. })();
  48. }
  49. var contextTransform = consumers.length === 1 ? singleRender : multiRender;
  50. return forwardRef(contextTransform, {
  51. displayName: displayName || getDisplayName(Component)
  52. });
  53. }
  54. export default function mapContextToProps(maybeOpts, mapToProps, Component) {
  55. if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);
  56. return $mapContextToProps({
  57. consumers: maybeOpts,
  58. mapToProps: mapToProps
  59. }, Component);
  60. }