|
148 | 148 | size = _state.size,
|
149 | 149 | itemsPerRow = _state.itemsPerRow;
|
150 | 150 |
|
| 151 | + clearTimeout(this.updateFrameTimeoutId); |
151 | 152 | this.maybeSetState(this.constrain(from, size, itemsPerRow, next), NOOP);
|
152 | 153 | }
|
153 | 154 | }, {
|
|
162 | 163 | value: function componentDidUpdate() {
|
163 | 164 | var _this2 = this;
|
164 | 165 |
|
| 166 | + var _props = this.props, |
| 167 | + stableFrameDelay = _props.stableFrameDelay, |
| 168 | + type = _props.type; |
| 169 | + |
| 170 | + |
165 | 171 | // If the list has reached an unstable state, prevent an infinite loop.
|
166 | 172 | if (this.unstable) return;
|
167 | 173 |
|
|
177 | 183 | }, 0);
|
178 | 184 | }
|
179 | 185 |
|
180 |
| - this.updateFrame(); |
| 186 | + if (type === 'simple' && stableFrameDelay) { |
| 187 | + this.updateFrameTimeoutId = setTimeout(this.updateFrame, stableFrameDelay); |
| 188 | + } else { |
| 189 | + this.updateFrame(); |
| 190 | + } |
181 | 191 | }
|
182 | 192 | }, {
|
183 | 193 | key: 'maybeSetState',
|
|
192 | 202 | window.removeEventListener('resize', this.updateFrame);
|
193 | 203 | this.scrollParent.removeEventListener('scroll', this.updateFrame, PASSIVE);
|
194 | 204 | this.scrollParent.removeEventListener('mousewheel', NOOP, PASSIVE);
|
| 205 | + clearTimeout(this.updateFrameTimeoutId); |
195 | 206 | }
|
196 | 207 | }, {
|
197 | 208 | key: 'getOffset',
|
|
208 | 219 | }, {
|
209 | 220 | key: 'getScrollParent',
|
210 | 221 | value: function getScrollParent() {
|
211 |
| - var _props = this.props, |
212 |
| - axis = _props.axis, |
213 |
| - scrollParentGetter = _props.scrollParentGetter; |
| 222 | + var _props2 = this.props, |
| 223 | + axis = _props2.axis, |
| 224 | + scrollParentGetter = _props2.scrollParentGetter; |
214 | 225 |
|
215 | 226 | if (scrollParentGetter) return scrollParentGetter();
|
216 | 227 | var el = findDOMNode(this);
|
|
274 | 285 | }, {
|
275 | 286 | key: 'hasDeterminateSize',
|
276 | 287 | value: function hasDeterminateSize() {
|
277 |
| - var _props2 = this.props, |
278 |
| - itemSizeGetter = _props2.itemSizeGetter, |
279 |
| - type = _props2.type; |
| 288 | + var _props3 = this.props, |
| 289 | + itemSizeGetter = _props3.itemSizeGetter, |
| 290 | + type = _props3.type; |
280 | 291 |
|
281 | 292 | return type === 'uniform' || itemSizeGetter;
|
282 | 293 | }
|
|
296 | 307 | }, {
|
297 | 308 | key: 'getItemSizeAndItemsPerRow',
|
298 | 309 | value: function getItemSizeAndItemsPerRow() {
|
299 |
| - var _props3 = this.props, |
300 |
| - axis = _props3.axis, |
301 |
| - useStaticSize = _props3.useStaticSize; |
| 310 | + var _props4 = this.props, |
| 311 | + axis = _props4.axis, |
| 312 | + useStaticSize = _props4.useStaticSize; |
302 | 313 | var _state2 = this.state,
|
303 | 314 | itemSize = _state2.itemSize,
|
304 | 315 | itemsPerRow = _state2.itemsPerRow;
|
|
375 | 386 |
|
376 | 387 | if (elEnd > end) return cb();
|
377 | 388 |
|
378 |
| - var _props4 = this.props, |
379 |
| - pageSize = _props4.pageSize, |
380 |
| - length = _props4.length; |
| 389 | + var _props5 = this.props, |
| 390 | + pageSize = _props5.pageSize, |
| 391 | + length = _props5.length; |
381 | 392 |
|
382 | 393 | var size = Math.min(this.state.size + pageSize, length);
|
383 | 394 | this.maybeSetState({ size: size }, cb);
|
|
391 | 402 | start = _getStartAndEnd2.start,
|
392 | 403 | end = _getStartAndEnd2.end;
|
393 | 404 |
|
394 |
| - var _props5 = this.props, |
395 |
| - length = _props5.length, |
396 |
| - pageSize = _props5.pageSize; |
| 405 | + var _props6 = this.props, |
| 406 | + length = _props6.length, |
| 407 | + pageSize = _props6.pageSize; |
397 | 408 |
|
398 | 409 | var space = 0;
|
399 | 410 | var from = 0;
|
|
488 | 499 | value: function getSizeOf(index) {
|
489 | 500 | var cache = this.cache,
|
490 | 501 | items = this.items;
|
491 |
| - var _props6 = this.props, |
492 |
| - axis = _props6.axis, |
493 |
| - itemSizeGetter = _props6.itemSizeGetter, |
494 |
| - itemSizeEstimator = _props6.itemSizeEstimator, |
495 |
| - type = _props6.type; |
| 502 | + var _props7 = this.props, |
| 503 | + axis = _props7.axis, |
| 504 | + itemSizeGetter = _props7.itemSizeGetter, |
| 505 | + itemSizeEstimator = _props7.itemSizeEstimator, |
| 506 | + type = _props7.type; |
496 | 507 | var _state4 = this.state,
|
497 | 508 | from = _state4.from,
|
498 | 509 | itemSize = _state4.itemSize,
|
|
579 | 590 | value: function renderItems() {
|
580 | 591 | var _this3 = this;
|
581 | 592 |
|
582 |
| - var _props7 = this.props, |
583 |
| - itemRenderer = _props7.itemRenderer, |
584 |
| - itemsRenderer = _props7.itemsRenderer; |
| 593 | + var _props8 = this.props, |
| 594 | + itemRenderer = _props8.itemRenderer, |
| 595 | + itemsRenderer = _props8.itemsRenderer; |
585 | 596 | var _state6 = this.state,
|
586 | 597 | from = _state6.from,
|
587 | 598 | size = _state6.size;
|
|
596 | 607 | }, {
|
597 | 608 | key: 'render',
|
598 | 609 | value: function render() {
|
599 |
| - var _props8 = this.props, |
600 |
| - axis = _props8.axis, |
601 |
| - length = _props8.length, |
602 |
| - type = _props8.type, |
603 |
| - useTranslate3d = _props8.useTranslate3d; |
| 610 | + var _props9 = this.props, |
| 611 | + axis = _props9.axis, |
| 612 | + length = _props9.length, |
| 613 | + type = _props9.type, |
| 614 | + useTranslate3d = _props9.useTranslate3d; |
604 | 615 | var _state7 = this.state,
|
605 | 616 | from = _state7.from,
|
606 | 617 | itemsPerRow = _state7.itemsPerRow;
|
|
649 | 660 | length: _react.PropTypes.number,
|
650 | 661 | pageSize: _react.PropTypes.number,
|
651 | 662 | scrollParentGetter: _react.PropTypes.func,
|
| 663 | + stableFrameDelay: _react.PropTypes.number, |
652 | 664 | threshold: _react.PropTypes.number,
|
653 | 665 | type: _react.PropTypes.oneOf(['simple', 'variable', 'uniform']),
|
654 | 666 | useStaticSize: _react.PropTypes.bool,
|
|
0 commit comments