useItems.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 = void 0;
  8. var React = _interopRequireWildcard(require("react"));
  9. var _toArray = _interopRequireDefault(require("rc-util/lib/Children/toArray"));
  10. var __rest = void 0 && (void 0).__rest || function (s, e) {
  11. var t = {};
  12. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  13. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  14. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  15. }
  16. return t;
  17. };
  18. function getCollapsible(collapsible) {
  19. if (collapsible && typeof collapsible === 'object') {
  20. return Object.assign(Object.assign({}, collapsible), {
  21. showCollapsibleIcon: collapsible.showCollapsibleIcon === undefined ? 'auto' : collapsible.showCollapsibleIcon
  22. });
  23. }
  24. const mergedCollapsible = !!collapsible;
  25. return {
  26. start: mergedCollapsible,
  27. end: mergedCollapsible,
  28. showCollapsibleIcon: 'auto'
  29. };
  30. }
  31. /**
  32. * Convert `children` into `items`.
  33. */
  34. function useItems(children) {
  35. const items = React.useMemo(() => (0, _toArray.default)(children).filter(item => /*#__PURE__*/React.isValidElement(item)).map(node => {
  36. const {
  37. props
  38. } = node;
  39. const {
  40. collapsible
  41. } = props,
  42. restProps = __rest(props, ["collapsible"]);
  43. return Object.assign(Object.assign({}, restProps), {
  44. collapsible: getCollapsible(collapsible)
  45. });
  46. }), [children]);
  47. return items;
  48. }
  49. var _default = exports.default = useItems;