Collection.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.Collection = Collection;
  7. exports.CollectionContext = void 0;
  8. var React = _interopRequireWildcard(require("react"));
  9. var CollectionContext = exports.CollectionContext = /*#__PURE__*/React.createContext(null);
  10. /**
  11. * Collect all the resize event from children ResizeObserver
  12. */
  13. function Collection(_ref) {
  14. var children = _ref.children,
  15. onBatchResize = _ref.onBatchResize;
  16. var resizeIdRef = React.useRef(0);
  17. var resizeInfosRef = React.useRef([]);
  18. var onCollectionResize = React.useContext(CollectionContext);
  19. var onResize = React.useCallback(function (size, element, data) {
  20. resizeIdRef.current += 1;
  21. var currentId = resizeIdRef.current;
  22. resizeInfosRef.current.push({
  23. size: size,
  24. element: element,
  25. data: data
  26. });
  27. Promise.resolve().then(function () {
  28. if (currentId === resizeIdRef.current) {
  29. onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);
  30. resizeInfosRef.current = [];
  31. }
  32. });
  33. // Continue bubbling if parent exist
  34. onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);
  35. }, [onBatchResize, onCollectionResize]);
  36. return /*#__PURE__*/React.createElement(CollectionContext.Provider, {
  37. value: onResize
  38. }, children);
  39. }