選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

renameProps.js 1.4 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _omit = _interopRequireDefault(require("./utils/omit"));
  7. var _pick = _interopRequireDefault(require("./utils/pick"));
  8. var _mapProps = _interopRequireDefault(require("./mapProps"));
  9. var _setDisplayName = _interopRequireDefault(require("./setDisplayName"));
  10. var _wrapDisplayName = _interopRequireDefault(require("./wrapDisplayName"));
  11. var keys = Object.keys;
  12. var mapKeys = function mapKeys(obj, func) {
  13. return keys(obj).reduce(function (result, key) {
  14. var val = obj[key];
  15. /* eslint-disable no-param-reassign */
  16. result[func(val, key)] = val;
  17. /* eslint-enable no-param-reassign */
  18. return result;
  19. }, {});
  20. };
  21. var renameProps = function renameProps(nameMap) {
  22. var hoc = (0, _mapProps.default)(function (props) {
  23. return (0, _extends2.default)({}, (0, _omit.default)(props, keys(nameMap)), mapKeys((0, _pick.default)(props, keys(nameMap)), function (_, oldName) {
  24. return nameMap[oldName];
  25. }));
  26. });
  27. if (process.env.NODE_ENV !== 'production') {
  28. return function (BaseComponent) {
  29. return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'renameProps'))(hoc(BaseComponent));
  30. };
  31. }
  32. return hoc;
  33. };
  34. var _default = renameProps;
  35. exports.default = _default;