useItems.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. var __rest = this && this.__rest || function (s, e) {
  2. var t = {};
  3. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  4. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  5. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  6. }
  7. return t;
  8. };
  9. import * as React from 'react';
  10. import toArray from "rc-util/es/Children/toArray";
  11. function getCollapsible(collapsible) {
  12. if (collapsible && typeof collapsible === 'object') {
  13. return Object.assign(Object.assign({}, collapsible), {
  14. showCollapsibleIcon: collapsible.showCollapsibleIcon === undefined ? 'auto' : collapsible.showCollapsibleIcon
  15. });
  16. }
  17. const mergedCollapsible = !!collapsible;
  18. return {
  19. start: mergedCollapsible,
  20. end: mergedCollapsible,
  21. showCollapsibleIcon: 'auto'
  22. };
  23. }
  24. /**
  25. * Convert `children` into `items`.
  26. */
  27. function useItems(children) {
  28. const items = React.useMemo(() => toArray(children).filter(item => /*#__PURE__*/React.isValidElement(item)).map(node => {
  29. const {
  30. props
  31. } = node;
  32. const {
  33. collapsible
  34. } = props,
  35. restProps = __rest(props, ["collapsible"]);
  36. return Object.assign(Object.assign({}, restProps), {
  37. collapsible: getCollapsible(collapsible)
  38. });
  39. }), [children]);
  40. return items;
  41. }
  42. export default useItems;