@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 CHANGED
@@ -324,6 +324,7 @@ interface InternalState {
324
324
  };
325
325
  }[];
326
326
  queuedItemSizeUpdatesWaiting?: boolean;
327
+ timeoutSetPaddingTop?: any;
327
328
  props: {
328
329
  alignItemsAtEnd: boolean;
329
330
  data: readonly any[];
package/index.d.ts CHANGED
@@ -324,6 +324,7 @@ interface InternalState {
324
324
  };
325
325
  }[];
326
326
  queuedItemSizeUpdatesWaiting?: boolean;
327
+ timeoutSetPaddingTop?: any;
327
328
  props: {
328
329
  alignItemsAtEnd: boolean;
329
330
  data: readonly any[];
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") || 0;
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
- const prevTotalSize = peek$(ctx, "totalSize") || 0;
877
+ let prevTotalSize = peek$(ctx, "totalSize");
877
878
  set$(ctx, "totalSize", prevTotalSize + prevStylePaddingTop);
878
- setTimeout(() => {
879
- set$(ctx, "totalSize", prevTotalSize);
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
- const paddingDiff = stylePaddingTopState - prevPaddingTop;
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") || 0;
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
- const prevTotalSize = peek$(ctx, "totalSize") || 0;
856
+ let prevTotalSize = peek$(ctx, "totalSize");
856
857
  set$(ctx, "totalSize", prevTotalSize + prevStylePaddingTop);
857
- setTimeout(() => {
858
- set$(ctx, "totalSize", prevTotalSize);
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
- const paddingDiff = stylePaddingTopState - prevPaddingTop;
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.7",
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,