@legendapp/list 2.0.0-next.7 → 2.0.0-next.8
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/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.js +18 -9
- package/index.mjs +18 -9
- package/package.json +1 -1
package/index.d.mts
CHANGED
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -38,7 +38,8 @@ function StateProvider({ children }) {
|
|
|
38
38
|
["alignItemsPaddingTop", 0],
|
|
39
39
|
["stylePaddingTop", 0],
|
|
40
40
|
["headerSize", 0],
|
|
41
|
-
["numContainers", 0]
|
|
41
|
+
["numContainers", 0],
|
|
42
|
+
["totalSize", 0]
|
|
42
43
|
]),
|
|
43
44
|
viewRefs: /* @__PURE__ */ new Map()
|
|
44
45
|
}));
|
|
@@ -111,7 +112,7 @@ function getContentSize(ctx) {
|
|
|
111
112
|
const stylePaddingTop = values.get("stylePaddingTop") || 0;
|
|
112
113
|
const headerSize = values.get("headerSize") || 0;
|
|
113
114
|
const footerSize = values.get("footerSize") || 0;
|
|
114
|
-
const totalSize = values.get("totalSize")
|
|
115
|
+
const totalSize = values.get("totalSize");
|
|
115
116
|
return headerSize + footerSize + totalSize + stylePaddingTop;
|
|
116
117
|
}
|
|
117
118
|
function useArr$(signalNames) {
|
|
@@ -869,14 +870,15 @@ function prepareMVCP(ctx, state) {
|
|
|
869
870
|
}
|
|
870
871
|
|
|
871
872
|
// src/utils/setPaddingTop.ts
|
|
872
|
-
function setPaddingTop(ctx, { stylePaddingTop, alignItemsPaddingTop }) {
|
|
873
|
+
function setPaddingTop(ctx, state, { stylePaddingTop, alignItemsPaddingTop }) {
|
|
873
874
|
if (stylePaddingTop !== void 0) {
|
|
874
875
|
const prevStylePaddingTop = peek$(ctx, "stylePaddingTop") || 0;
|
|
875
876
|
if (stylePaddingTop < prevStylePaddingTop) {
|
|
876
|
-
|
|
877
|
+
let prevTotalSize = peek$(ctx, "totalSize");
|
|
877
878
|
set$(ctx, "totalSize", prevTotalSize + prevStylePaddingTop);
|
|
878
|
-
setTimeout(() => {
|
|
879
|
-
|
|
879
|
+
state.timeoutSetPaddingTop = setTimeout(() => {
|
|
880
|
+
prevTotalSize = peek$(ctx, "totalSize");
|
|
881
|
+
set$(ctx, "totalSize", prevTotalSize - prevStylePaddingTop);
|
|
880
882
|
}, 16);
|
|
881
883
|
}
|
|
882
884
|
set$(ctx, "stylePaddingTop", stylePaddingTop);
|
|
@@ -898,7 +900,7 @@ function updateAlignItemsPaddingTop(ctx, state) {
|
|
|
898
900
|
const contentSize = getContentSize(ctx);
|
|
899
901
|
alignItemsPaddingTop = Math.max(0, Math.floor(scrollLength - contentSize));
|
|
900
902
|
}
|
|
901
|
-
setPaddingTop(ctx, { alignItemsPaddingTop });
|
|
903
|
+
setPaddingTop(ctx, state, { alignItemsPaddingTop });
|
|
902
904
|
}
|
|
903
905
|
}
|
|
904
906
|
|
|
@@ -928,6 +930,10 @@ function addTotalSize(ctx, state, key, add) {
|
|
|
928
930
|
const { alignItemsAtEnd } = state.props;
|
|
929
931
|
{
|
|
930
932
|
state.totalSize = add;
|
|
933
|
+
if (state.timeoutSetPaddingTop) {
|
|
934
|
+
clearTimeout(state.timeoutSetPaddingTop);
|
|
935
|
+
state.timeoutSetPaddingTop = void 0;
|
|
936
|
+
}
|
|
931
937
|
}
|
|
932
938
|
set$(ctx, "totalSize", state.totalSize);
|
|
933
939
|
if (alignItemsAtEnd) {
|
|
@@ -2299,10 +2305,13 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
|
|
|
2299
2305
|
set$(ctx, "lastItemKeys", memoizedLastItemKeys);
|
|
2300
2306
|
set$(ctx, "numColumns", numColumnsProp);
|
|
2301
2307
|
const prevPaddingTop = peek$(ctx, "stylePaddingTop");
|
|
2302
|
-
setPaddingTop(ctx, { stylePaddingTop: stylePaddingTopState });
|
|
2308
|
+
setPaddingTop(ctx, state, { stylePaddingTop: stylePaddingTopState });
|
|
2303
2309
|
refState.current.props.stylePaddingBottom = stylePaddingBottomState;
|
|
2304
|
-
|
|
2310
|
+
let paddingDiff = stylePaddingTopState - prevPaddingTop;
|
|
2305
2311
|
if (maintainVisibleContentPosition && paddingDiff && prevPaddingTop !== void 0 && reactNative.Platform.OS === "ios") {
|
|
2312
|
+
if (state.scroll < 0) {
|
|
2313
|
+
paddingDiff += state.scroll;
|
|
2314
|
+
}
|
|
2306
2315
|
requestAdjust(ctx, state, paddingDiff);
|
|
2307
2316
|
}
|
|
2308
2317
|
};
|
package/index.mjs
CHANGED
|
@@ -17,7 +17,8 @@ function StateProvider({ children }) {
|
|
|
17
17
|
["alignItemsPaddingTop", 0],
|
|
18
18
|
["stylePaddingTop", 0],
|
|
19
19
|
["headerSize", 0],
|
|
20
|
-
["numContainers", 0]
|
|
20
|
+
["numContainers", 0],
|
|
21
|
+
["totalSize", 0]
|
|
21
22
|
]),
|
|
22
23
|
viewRefs: /* @__PURE__ */ new Map()
|
|
23
24
|
}));
|
|
@@ -90,7 +91,7 @@ function getContentSize(ctx) {
|
|
|
90
91
|
const stylePaddingTop = values.get("stylePaddingTop") || 0;
|
|
91
92
|
const headerSize = values.get("headerSize") || 0;
|
|
92
93
|
const footerSize = values.get("footerSize") || 0;
|
|
93
|
-
const totalSize = values.get("totalSize")
|
|
94
|
+
const totalSize = values.get("totalSize");
|
|
94
95
|
return headerSize + footerSize + totalSize + stylePaddingTop;
|
|
95
96
|
}
|
|
96
97
|
function useArr$(signalNames) {
|
|
@@ -848,14 +849,15 @@ function prepareMVCP(ctx, state) {
|
|
|
848
849
|
}
|
|
849
850
|
|
|
850
851
|
// src/utils/setPaddingTop.ts
|
|
851
|
-
function setPaddingTop(ctx, { stylePaddingTop, alignItemsPaddingTop }) {
|
|
852
|
+
function setPaddingTop(ctx, state, { stylePaddingTop, alignItemsPaddingTop }) {
|
|
852
853
|
if (stylePaddingTop !== void 0) {
|
|
853
854
|
const prevStylePaddingTop = peek$(ctx, "stylePaddingTop") || 0;
|
|
854
855
|
if (stylePaddingTop < prevStylePaddingTop) {
|
|
855
|
-
|
|
856
|
+
let prevTotalSize = peek$(ctx, "totalSize");
|
|
856
857
|
set$(ctx, "totalSize", prevTotalSize + prevStylePaddingTop);
|
|
857
|
-
setTimeout(() => {
|
|
858
|
-
|
|
858
|
+
state.timeoutSetPaddingTop = setTimeout(() => {
|
|
859
|
+
prevTotalSize = peek$(ctx, "totalSize");
|
|
860
|
+
set$(ctx, "totalSize", prevTotalSize - prevStylePaddingTop);
|
|
859
861
|
}, 16);
|
|
860
862
|
}
|
|
861
863
|
set$(ctx, "stylePaddingTop", stylePaddingTop);
|
|
@@ -877,7 +879,7 @@ function updateAlignItemsPaddingTop(ctx, state) {
|
|
|
877
879
|
const contentSize = getContentSize(ctx);
|
|
878
880
|
alignItemsPaddingTop = Math.max(0, Math.floor(scrollLength - contentSize));
|
|
879
881
|
}
|
|
880
|
-
setPaddingTop(ctx, { alignItemsPaddingTop });
|
|
882
|
+
setPaddingTop(ctx, state, { alignItemsPaddingTop });
|
|
881
883
|
}
|
|
882
884
|
}
|
|
883
885
|
|
|
@@ -907,6 +909,10 @@ function addTotalSize(ctx, state, key, add) {
|
|
|
907
909
|
const { alignItemsAtEnd } = state.props;
|
|
908
910
|
{
|
|
909
911
|
state.totalSize = add;
|
|
912
|
+
if (state.timeoutSetPaddingTop) {
|
|
913
|
+
clearTimeout(state.timeoutSetPaddingTop);
|
|
914
|
+
state.timeoutSetPaddingTop = void 0;
|
|
915
|
+
}
|
|
910
916
|
}
|
|
911
917
|
set$(ctx, "totalSize", state.totalSize);
|
|
912
918
|
if (alignItemsAtEnd) {
|
|
@@ -2278,10 +2284,13 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
|
|
|
2278
2284
|
set$(ctx, "lastItemKeys", memoizedLastItemKeys);
|
|
2279
2285
|
set$(ctx, "numColumns", numColumnsProp);
|
|
2280
2286
|
const prevPaddingTop = peek$(ctx, "stylePaddingTop");
|
|
2281
|
-
setPaddingTop(ctx, { stylePaddingTop: stylePaddingTopState });
|
|
2287
|
+
setPaddingTop(ctx, state, { stylePaddingTop: stylePaddingTopState });
|
|
2282
2288
|
refState.current.props.stylePaddingBottom = stylePaddingBottomState;
|
|
2283
|
-
|
|
2289
|
+
let paddingDiff = stylePaddingTopState - prevPaddingTop;
|
|
2284
2290
|
if (maintainVisibleContentPosition && paddingDiff && prevPaddingTop !== void 0 && Platform.OS === "ios") {
|
|
2291
|
+
if (state.scroll < 0) {
|
|
2292
|
+
paddingDiff += state.scroll;
|
|
2293
|
+
}
|
|
2285
2294
|
requestAdjust(ctx, state, paddingDiff);
|
|
2286
2295
|
}
|
|
2287
2296
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legendapp/list",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.8",
|
|
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,
|