@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 +2 -0
- package/index.js +11 -8
- package/index.mjs +11 -8
- package/package.json +1 -1
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
|
-
|
|
964
|
-
return sizeKnown;
|
|
965
|
-
}
|
|
964
|
+
const sizePrevious = state.sizes.get(key);
|
|
966
965
|
let size;
|
|
967
|
-
|
|
968
|
-
|
|
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 ?
|
|
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
|
-
|
|
943
|
-
return sizeKnown;
|
|
944
|
-
}
|
|
943
|
+
const sizePrevious = state.sizes.get(key);
|
|
945
944
|
let size;
|
|
946
|
-
|
|
947
|
-
|
|
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 ?
|
|
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