@legendapp/list 1.0.0 → 1.0.1

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/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  **Legend List** is a high-performance list component for **React Native**, written purely in Typescript with no native dependencies. It is a drop-in replacement for `FlatList` and `FlashList` with better performance, especially when handling dynamically sized items.
4
4
 
5
+ <video src="https://github.com/user-attachments/assets/8641e305-ab06-4fb3-a96a-fd220df84985"></video>
6
+
5
7
  ---
6
8
 
7
9
  ## 🤔 Why Legend List?
package/index.js CHANGED
@@ -958,24 +958,27 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
958
958
  return `${ret}`;
959
959
  };
960
960
  const getItemSize = (key, index, data, useAverageSize = false) => {
961
+ var _a;
961
962
  const state = refState.current;
962
963
  const sizeKnown = state.sizesKnown.get(key);
963
- if (sizeKnown !== void 0) {
964
- return sizeKnown;
965
- }
964
+ const sizePrevious = state.sizes.get(key);
966
965
  let size;
967
- if (getEstimatedItemSize) {
968
- size = getEstimatedItemSize(index, data);
969
- }
970
- if (size === void 0 && useAverageSize) {
966
+ const numColumns = peek$(ctx, "numColumns");
967
+ if (sizeKnown === void 0 && !getEstimatedItemSize && numColumns === 1 && useAverageSize) {
971
968
  const itemType = "";
972
969
  const average = state.averageSizes[itemType];
973
970
  if (average) {
974
971
  size = roundSize(average.avg);
972
+ if (size !== sizePrevious) {
973
+ addTotalSize(key, size - sizePrevious, 0);
974
+ }
975
975
  }
976
976
  }
977
+ if (size === void 0 && sizePrevious !== void 0) {
978
+ return sizePrevious;
979
+ }
977
980
  if (size === void 0) {
978
- size = estimatedItemSize != null ? estimatedItemSize : DEFAULT_ITEM_SIZE;
981
+ size = (_a = getEstimatedItemSize ? getEstimatedItemSize(index, data) : estimatedItemSize) != null ? _a : DEFAULT_ITEM_SIZE;
979
982
  }
980
983
  state.sizes.set(key, size);
981
984
  return size;
package/index.mjs CHANGED
@@ -937,24 +937,27 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
937
937
  return `${ret}`;
938
938
  };
939
939
  const getItemSize = (key, index, data, useAverageSize = false) => {
940
+ var _a;
940
941
  const state = refState.current;
941
942
  const sizeKnown = state.sizesKnown.get(key);
942
- if (sizeKnown !== void 0) {
943
- return sizeKnown;
944
- }
943
+ const sizePrevious = state.sizes.get(key);
945
944
  let size;
946
- if (getEstimatedItemSize) {
947
- size = getEstimatedItemSize(index, data);
948
- }
949
- if (size === void 0 && useAverageSize) {
945
+ const numColumns = peek$(ctx, "numColumns");
946
+ if (sizeKnown === void 0 && !getEstimatedItemSize && numColumns === 1 && useAverageSize) {
950
947
  const itemType = "";
951
948
  const average = state.averageSizes[itemType];
952
949
  if (average) {
953
950
  size = roundSize(average.avg);
951
+ if (size !== sizePrevious) {
952
+ addTotalSize(key, size - sizePrevious, 0);
953
+ }
954
954
  }
955
955
  }
956
+ if (size === void 0 && sizePrevious !== void 0) {
957
+ return sizePrevious;
958
+ }
956
959
  if (size === void 0) {
957
- size = estimatedItemSize != null ? estimatedItemSize : DEFAULT_ITEM_SIZE;
960
+ size = (_a = getEstimatedItemSize ? getEstimatedItemSize(index, data) : estimatedItemSize) != null ? _a : DEFAULT_ITEM_SIZE;
958
961
  }
959
962
  state.sizes.set(key, size);
960
963
  return size;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/list",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
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,