@talend/react-components
Version:
Set of react components.
78 lines (77 loc) • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactVirtualized = require("react-virtualized");
var _VList = _interopRequireDefault(require("../VList"));
var _context = require("../context");
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const DEFAULT_THRESHOLD = 5;
const DEFAULT_MIN_BATCH_SIZE = 20;
const DEFAULT_DEBOUNCE_DELAY = 0;
function LazyLoadingList(props) {
const {
rowCount,
threshold,
minimumBatchSize,
loadMoreRows,
debounceDelay,
onRowsRendered: parentOnRowsRendered,
...rest
} = props;
const {
collection
} = (0, _context.useListContext)();
const isRowLoaded = ({
index
}) => collection && collection[index];
let loadMoreRowsCallback = loadMoreRows;
if (loadMoreRowsCallback && debounceDelay) {
loadMoreRowsCallback = (0, _lodash.debounce)(loadMoreRowsCallback, debounceDelay);
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactVirtualized.InfiniteLoader, {
isRowLoaded: isRowLoaded,
loadMoreRows: loadMoreRowsCallback,
minimumBatchSize: minimumBatchSize,
rowCount: rowCount,
threshold: threshold,
children: ({
onRowsRendered,
registerChild
}) => {
function combinedOnRowsRendered(...args) {
if (parentOnRowsRendered) {
parentOnRowsRendered(...args);
}
onRowsRendered(...args);
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_VList.default, {
registerChild: registerChild,
onRowsRendered: combinedOnRowsRendered,
rowCount: rowCount,
...rest
});
}
});
}
LazyLoadingList.defaultProps = {
threshold: DEFAULT_THRESHOLD,
minimumBatchSize: DEFAULT_MIN_BATCH_SIZE,
debounceDelay: DEFAULT_DEBOUNCE_DELAY
};
if (process.env.NODE_ENV !== 'production') {
LazyLoadingList.propTypes = {
loadMoreRows: _propTypes.default.func.isRequired,
onRowsRendered: _propTypes.default.func,
rowCount: _propTypes.default.number,
threshold: _propTypes.default.number,
minimumBatchSize: _propTypes.default.number,
debounceDelay: _propTypes.default.number
};
}
var _default = exports.default = LazyLoadingList;
//# sourceMappingURL=LazyLoadingList.component.js.map