@legendapp/list 2.0.0-next.7 → 2.0.0-next.9

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[];
@@ -362,7 +363,6 @@ interface InternalState {
362
363
  viewPosition?: number;
363
364
  } | undefined;
364
365
  scrollBuffer: number;
365
- viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
366
366
  numColumns: number;
367
367
  initialContainerPoolRatio: number;
368
368
  stylePaddingTop: number | undefined;
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[];
@@ -362,7 +363,6 @@ interface InternalState {
362
363
  viewPosition?: number;
363
364
  } | undefined;
364
365
  scrollBuffer: number;
365
- viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
366
366
  numColumns: number;
367
367
  initialContainerPoolRatio: number;
368
368
  stylePaddingTop: number | undefined;
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) {
@@ -1736,11 +1742,11 @@ function calculateItemsInView(ctx, state, params = {}) {
1736
1742
  setDidLayout(ctx, state);
1737
1743
  }
1738
1744
  }
1739
- if (state.props.viewabilityConfigCallbackPairs) {
1745
+ if (state.viewabilityConfigCallbackPairs) {
1740
1746
  updateViewableItems(
1741
1747
  state,
1742
1748
  ctx,
1743
- state.props.viewabilityConfigCallbackPairs,
1749
+ state.viewabilityConfigCallbackPairs,
1744
1750
  scrollLength,
1745
1751
  startNoBuffer,
1746
1752
  endNoBuffer
@@ -2266,8 +2272,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2266
2272
  snapToIndices,
2267
2273
  stylePaddingBottom: stylePaddingBottomState,
2268
2274
  stylePaddingTop: stylePaddingTopState,
2269
- suggestEstimatedItemSize: !!suggestEstimatedItemSize,
2270
- viewabilityConfigCallbackPairs: void 0
2275
+ suggestEstimatedItemSize: !!suggestEstimatedItemSize
2271
2276
  };
2272
2277
  state.refScroller = refScroller;
2273
2278
  const checkResetContainers = (isFirst2) => {
@@ -2299,10 +2304,13 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2299
2304
  set$(ctx, "lastItemKeys", memoizedLastItemKeys);
2300
2305
  set$(ctx, "numColumns", numColumnsProp);
2301
2306
  const prevPaddingTop = peek$(ctx, "stylePaddingTop");
2302
- setPaddingTop(ctx, { stylePaddingTop: stylePaddingTopState });
2307
+ setPaddingTop(ctx, state, { stylePaddingTop: stylePaddingTopState });
2303
2308
  refState.current.props.stylePaddingBottom = stylePaddingBottomState;
2304
- const paddingDiff = stylePaddingTopState - prevPaddingTop;
2309
+ let paddingDiff = stylePaddingTopState - prevPaddingTop;
2305
2310
  if (maintainVisibleContentPosition && paddingDiff && prevPaddingTop !== void 0 && reactNative.Platform.OS === "ios") {
2311
+ if (state.scroll < 0) {
2312
+ paddingDiff += state.scroll;
2313
+ }
2306
2314
  requestAdjust(ctx, state, paddingDiff);
2307
2315
  }
2308
2316
  };
@@ -2394,7 +2402,6 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2394
2402
  viewabilityConfigCallbackPairs
2395
2403
  });
2396
2404
  state.viewabilityConfigCallbackPairs = viewability;
2397
- state.props.viewabilityConfigCallbackPairs = viewability;
2398
2405
  state.enableScrollForNextCalculateItemsInView = !viewability;
2399
2406
  }, [viewabilityConfig, viewabilityConfigCallbackPairs, onViewableItemsChanged]);
2400
2407
  if (!IsNewArchitecture) {
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) {
@@ -1715,11 +1721,11 @@ function calculateItemsInView(ctx, state, params = {}) {
1715
1721
  setDidLayout(ctx, state);
1716
1722
  }
1717
1723
  }
1718
- if (state.props.viewabilityConfigCallbackPairs) {
1724
+ if (state.viewabilityConfigCallbackPairs) {
1719
1725
  updateViewableItems(
1720
1726
  state,
1721
1727
  ctx,
1722
- state.props.viewabilityConfigCallbackPairs,
1728
+ state.viewabilityConfigCallbackPairs,
1723
1729
  scrollLength,
1724
1730
  startNoBuffer,
1725
1731
  endNoBuffer
@@ -2245,8 +2251,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2245
2251
  snapToIndices,
2246
2252
  stylePaddingBottom: stylePaddingBottomState,
2247
2253
  stylePaddingTop: stylePaddingTopState,
2248
- suggestEstimatedItemSize: !!suggestEstimatedItemSize,
2249
- viewabilityConfigCallbackPairs: void 0
2254
+ suggestEstimatedItemSize: !!suggestEstimatedItemSize
2250
2255
  };
2251
2256
  state.refScroller = refScroller;
2252
2257
  const checkResetContainers = (isFirst2) => {
@@ -2278,10 +2283,13 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2278
2283
  set$(ctx, "lastItemKeys", memoizedLastItemKeys);
2279
2284
  set$(ctx, "numColumns", numColumnsProp);
2280
2285
  const prevPaddingTop = peek$(ctx, "stylePaddingTop");
2281
- setPaddingTop(ctx, { stylePaddingTop: stylePaddingTopState });
2286
+ setPaddingTop(ctx, state, { stylePaddingTop: stylePaddingTopState });
2282
2287
  refState.current.props.stylePaddingBottom = stylePaddingBottomState;
2283
- const paddingDiff = stylePaddingTopState - prevPaddingTop;
2288
+ let paddingDiff = stylePaddingTopState - prevPaddingTop;
2284
2289
  if (maintainVisibleContentPosition && paddingDiff && prevPaddingTop !== void 0 && Platform.OS === "ios") {
2290
+ if (state.scroll < 0) {
2291
+ paddingDiff += state.scroll;
2292
+ }
2285
2293
  requestAdjust(ctx, state, paddingDiff);
2286
2294
  }
2287
2295
  };
@@ -2373,7 +2381,6 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
2373
2381
  viewabilityConfigCallbackPairs
2374
2382
  });
2375
2383
  state.viewabilityConfigCallbackPairs = viewability;
2376
- state.props.viewabilityConfigCallbackPairs = viewability;
2377
2384
  state.enableScrollForNextCalculateItemsInView = !viewability;
2378
2385
  }, [viewabilityConfig, viewabilityConfigCallbackPairs, onViewableItemsChanged]);
2379
2386
  if (!IsNewArchitecture) {
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.9",
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