useItems.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = useItems;
  8. var React = _interopRequireWildcard(require("react"));
  9. var _toArray = _interopRequireDefault(require("rc-util/lib/Children/toArray"));
  10. var _responsiveObserver = require("../../_util/responsiveObserver");
  11. var __rest = void 0 && (void 0).__rest || function (s, e) {
  12. var t = {};
  13. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  14. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  15. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  16. }
  17. return t;
  18. };
  19. // Convert children into items
  20. const transChildren2Items = childNodes => (0, _toArray.default)(childNodes).map(node => Object.assign(Object.assign({}, node === null || node === void 0 ? void 0 : node.props), {
  21. key: node.key
  22. }));
  23. function useItems(screens, items, children) {
  24. const mergedItems = React.useMemo(() =>
  25. // Take `items` first or convert `children` into items
  26. items || transChildren2Items(children), [items, children]);
  27. const responsiveItems = React.useMemo(() => mergedItems.map(_a => {
  28. var {
  29. span
  30. } = _a,
  31. restItem = __rest(_a, ["span"]);
  32. if (span === 'filled') {
  33. return Object.assign(Object.assign({}, restItem), {
  34. filled: true
  35. });
  36. }
  37. return Object.assign(Object.assign({}, restItem), {
  38. span: typeof span === 'number' ? span : (0, _responsiveObserver.matchScreen)(screens, span)
  39. });
  40. }), [mergedItems, screens]);
  41. return responsiveItems;
  42. }