@legendapp/list 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 2.0.6
2
+ - Fix: updateItemPositions edge case with items multiple screen heights long was breaking the loop too early
3
+
1
4
  ## 2.0.5
2
5
  - Perf: Change updateAllPositions to constrain processing to the scroll range
3
6
  - Fix: Crash when using snapTo in some environments
package/index.js CHANGED
@@ -1217,12 +1217,16 @@ function updateItemPositions(ctx, state, dataChanged, { startIndex, scrollBottom
1217
1217
  }
1218
1218
  const needsIndexByKey = dataChanged || indexByKey.size === 0;
1219
1219
  let didBreakEarly = false;
1220
+ let breakAt;
1220
1221
  const dataLength = data.length;
1221
1222
  for (let i = startIndex; i < dataLength; i++) {
1222
- if (!dataChanged && currentRowTop > maxVisibleArea) {
1223
+ if (breakAt && i > breakAt) {
1223
1224
  didBreakEarly = true;
1224
1225
  break;
1225
1226
  }
1227
+ if (!dataChanged && currentRowTop > maxVisibleArea) {
1228
+ breakAt = i + 10;
1229
+ }
1226
1230
  const id = (_e = idCache.get(i)) != null ? _e : getId(state, i);
1227
1231
  const size = (_f = sizesKnown.get(id)) != null ? _f : getItemSize(state, id, i, data[i], useAverageSize);
1228
1232
  if (__DEV__ && needsIndexByKey) {
package/index.mjs CHANGED
@@ -1196,12 +1196,16 @@ function updateItemPositions(ctx, state, dataChanged, { startIndex, scrollBottom
1196
1196
  }
1197
1197
  const needsIndexByKey = dataChanged || indexByKey.size === 0;
1198
1198
  let didBreakEarly = false;
1199
+ let breakAt;
1199
1200
  const dataLength = data.length;
1200
1201
  for (let i = startIndex; i < dataLength; i++) {
1201
- if (!dataChanged && currentRowTop > maxVisibleArea) {
1202
+ if (breakAt && i > breakAt) {
1202
1203
  didBreakEarly = true;
1203
1204
  break;
1204
1205
  }
1206
+ if (!dataChanged && currentRowTop > maxVisibleArea) {
1207
+ breakAt = i + 10;
1208
+ }
1205
1209
  const id = (_e = idCache.get(i)) != null ? _e : getId(state, i);
1206
1210
  const size = (_f = sizesKnown.get(id)) != null ? _f : getItemSize(state, id, i, data[i], useAverageSize);
1207
1211
  if (__DEV__ && needsIndexByKey) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/list",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "Legend List is a drop-in replacement for FlatList with much better performance and supporting dynamically sized items.",
5
5
  "sideEffects": false,
6
6
  "private": false,
package/.DS_Store DELETED
Binary file