|
63 | 63 | value: { |
64 | 64 | axis: _react.PropTypes.oneOf(['x', 'y']), |
65 | 65 | initialIndex: _react.PropTypes.number, |
66 | | - itemSizeGetter: _react.PropTypes.func, |
67 | 66 | itemRenderer: _react.PropTypes.func, |
| 67 | + itemSizeGetter: _react.PropTypes.func, |
68 | 68 | itemsRenderer: _react.PropTypes.func, |
69 | 69 | length: _react.PropTypes.number, |
70 | 70 | pageSize: _react.PropTypes.number, |
71 | 71 | scrollParentGetter: _react.PropTypes.func, |
72 | 72 | threshold: _react.PropTypes.number, |
73 | 73 | type: _react.PropTypes.oneOf(['simple', 'variable', 'uniform']), |
| 74 | + useStaticSize: _react.PropTypes.bool, |
74 | 75 | useTranslate3d: _react.PropTypes.bool |
75 | 76 | }, |
76 | 77 | enumerable: true |
|
79 | 80 | value: { |
80 | 81 | axis: 'y', |
81 | 82 | initialIndex: null, |
82 | | - itemSizeGetter: null, |
83 | 83 | itemRenderer: function itemRenderer(index, key) { |
84 | 84 | return _React['default'].createElement( |
85 | 85 | 'div', |
86 | 86 | { key: key }, |
87 | 87 | index |
88 | 88 | ); |
89 | 89 | }, |
| 90 | + itemSizeGetter: null, |
90 | 91 | itemsRenderer: function itemsRenderer(items, ref) { |
91 | 92 | return _React['default'].createElement( |
92 | 93 | 'div', |
|
99 | 100 | scrollParentGetter: null, |
100 | 101 | threshold: 100, |
101 | 102 | type: 'simple', |
| 103 | + useStaticSize: false, |
102 | 104 | useTranslate3d: false |
103 | 105 | }, |
104 | 106 | enumerable: true |
|
255 | 257 | }, { |
256 | 258 | key: 'getItemSizeAndItemsPerRow', |
257 | 259 | value: function getItemSizeAndItemsPerRow() { |
| 260 | + var _props4 = this.props; |
| 261 | + var axis = _props4.axis; |
| 262 | + var useStaticSize = _props4.useStaticSize; |
| 263 | + var _state2 = this.state; |
| 264 | + var itemSize = _state2.itemSize; |
| 265 | + var itemsPerRow = _state2.itemsPerRow; |
| 266 | + |
| 267 | + if (useStaticSize && itemSize && itemsPerRow) { |
| 268 | + return { itemSize: itemSize, itemsPerRow: itemsPerRow }; |
| 269 | + } |
| 270 | + |
258 | 271 | var itemEls = findDOMNode(this.items).children; |
259 | 272 | if (!itemEls.length) return {}; |
260 | 273 |
|
|
264 | 277 | // thousandths of a pixel) different size for the same element between |
265 | 278 | // renders. This can cause an infinite render loop, so only change the |
266 | 279 | // itemSize when it is significantly different. |
267 | | - var itemSize = this.state.itemSize; |
268 | | - var axis = this.props.axis; |
269 | | - |
270 | 280 | var firstElSize = firstEl[OFFSET_SIZE_KEYS[axis]]; |
271 | 281 | var delta = Math.abs(firstElSize - itemSize); |
272 | 282 | if (isNaN(delta) || delta >= 1) itemSize = firstElSize; |
|
275 | 285 |
|
276 | 286 | var startKey = OFFSET_START_KEYS[axis]; |
277 | 287 | var firstStart = firstEl[startKey]; |
278 | | - var itemsPerRow = 1; |
| 288 | + itemsPerRow = 1; |
279 | 289 | for (var item = itemEls[itemsPerRow]; item && item[startKey] === firstStart; item = itemEls[itemsPerRow]) { |
280 | 290 | ++itemsPerRow; |
281 | 291 | }return { itemSize: itemSize, itemsPerRow: itemsPerRow }; |
|
327 | 337 |
|
328 | 338 | if (elEnd > end) return cb(); |
329 | 339 |
|
330 | | - var _props4 = this.props; |
331 | | - var pageSize = _props4.pageSize; |
332 | | - var length = _props4.length; |
| 340 | + var _props5 = this.props; |
| 341 | + var pageSize = _props5.pageSize; |
| 342 | + var length = _props5.length; |
333 | 343 |
|
334 | 344 | this.setState({ size: Math.min(this.state.size + pageSize, length) }, cb); |
335 | 345 | } |
|
342 | 352 |
|
343 | 353 | var start = _getStartAndEnd2.start; |
344 | 354 | var end = _getStartAndEnd2.end; |
345 | | - var _props5 = this.props; |
346 | | - var length = _props5.length; |
347 | | - var pageSize = _props5.pageSize; |
| 355 | + var _props6 = this.props; |
| 356 | + var length = _props6.length; |
| 357 | + var pageSize = _props6.pageSize; |
348 | 358 |
|
349 | 359 | var space = 0; |
350 | 360 | var from = 0; |
|
402 | 412 | if (cache[index] != null) return cache[index]; |
403 | 413 |
|
404 | 414 | // Try the static itemSize. |
405 | | - var _state2 = this.state; |
406 | | - var itemSize = _state2.itemSize; |
407 | | - var itemsPerRow = _state2.itemsPerRow; |
| 415 | + var _state3 = this.state; |
| 416 | + var itemSize = _state3.itemSize; |
| 417 | + var itemsPerRow = _state3.itemsPerRow; |
408 | 418 |
|
409 | 419 | if (itemSize) { |
410 | 420 | return cache[index] = Math.floor(index / itemsPerRow) * itemSize; |
|
442 | 452 | value: function getSizeOf(index) { |
443 | 453 | var cache = this.cache; |
444 | 454 | var items = this.items; |
445 | | - var _props6 = this.props; |
446 | | - var axis = _props6.axis; |
447 | | - var itemSizeGetter = _props6.itemSizeGetter; |
448 | | - var type = _props6.type; |
449 | | - var _state3 = this.state; |
450 | | - var from = _state3.from; |
451 | | - var itemSize = _state3.itemSize; |
452 | | - var size = _state3.size; |
| 455 | + var _props7 = this.props; |
| 456 | + var axis = _props7.axis; |
| 457 | + var itemSizeGetter = _props7.itemSizeGetter; |
| 458 | + var type = _props7.type; |
| 459 | + var _state4 = this.state; |
| 460 | + var from = _state4.from; |
| 461 | + var itemSize = _state4.itemSize; |
| 462 | + var size = _state4.size; |
453 | 463 |
|
454 | 464 | // Try the static itemSize. |
455 | 465 | if (itemSize) return itemSize; |
|
505 | 515 | }, { |
506 | 516 | key: 'getVisibleRange', |
507 | 517 | value: function getVisibleRange() { |
508 | | - var _state4 = this.state; |
509 | | - var from = _state4.from; |
510 | | - var size = _state4.size; |
| 518 | + var _state5 = this.state; |
| 519 | + var from = _state5.from; |
| 520 | + var size = _state5.size; |
511 | 521 |
|
512 | 522 | var _getStartAndEnd4 = this.getStartAndEnd(0); |
513 | 523 |
|
|
530 | 540 | value: function renderItems() { |
531 | 541 | var _this = this; |
532 | 542 |
|
533 | | - var _props7 = this.props; |
534 | | - var itemRenderer = _props7.itemRenderer; |
535 | | - var itemsRenderer = _props7.itemsRenderer; |
536 | | - var _state5 = this.state; |
537 | | - var from = _state5.from; |
538 | | - var size = _state5.size; |
| 543 | + var _props8 = this.props; |
| 544 | + var itemRenderer = _props8.itemRenderer; |
| 545 | + var itemsRenderer = _props8.itemsRenderer; |
| 546 | + var _state6 = this.state; |
| 547 | + var from = _state6.from; |
| 548 | + var size = _state6.size; |
539 | 549 |
|
540 | 550 | var items = []; |
541 | 551 | for (var i = 0; i < size; ++i) { |
|
547 | 557 | }, { |
548 | 558 | key: 'render', |
549 | 559 | value: function render() { |
550 | | - var _props8 = this.props; |
551 | | - var axis = _props8.axis; |
552 | | - var length = _props8.length; |
553 | | - var type = _props8.type; |
554 | | - var useTranslate3d = _props8.useTranslate3d; |
555 | | - var _state6 = this.state; |
556 | | - var from = _state6.from; |
557 | | - var itemsPerRow = _state6.itemsPerRow; |
| 560 | + var _props9 = this.props; |
| 561 | + var axis = _props9.axis; |
| 562 | + var length = _props9.length; |
| 563 | + var type = _props9.type; |
| 564 | + var useTranslate3d = _props9.useTranslate3d; |
| 565 | + var _state7 = this.state; |
| 566 | + var from = _state7.from; |
| 567 | + var itemsPerRow = _state7.itemsPerRow; |
558 | 568 |
|
559 | 569 | var items = this.renderItems(); |
560 | 570 | if (type === 'simple') return items; |
|
0 commit comments