@legendapp/list 1.0.9 → 1.0.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
- # 1.0.0
1
+ ## 1.0.10
2
+ - Fix: Removed an optimization that only checked newly visible items, which could sometimes cause gaps in lists
3
+ - Fix: Scroll history resets properly during scroll operations, which was causing gaps after scroll
4
+ - Fix: Made scroll buffer calculations and scroll jump handling more reliable
2
5
 
6
+ ## 1.0.9
7
+ - Fix: Use the `use-sync-external-store` shim to support older versions of react
8
+ - Fix: Lists sometimes leaving some gaps when reordering a list
9
+ - Fix: Sometimes precomputing next scroll position for calculation incorrectly
10
+
11
+ ## 1.0.8
12
+ - Perf: The scroll buffering algorithm is smarter and adjusts based on scroll direction for better performance
13
+ - Perf: The container-finding logic keeps index order, reducing gaps in rendering
14
+ - Perf: Combine multiple hooks in Container to a single `useArray$` hook
15
+
16
+ ## 1.0.7
17
+ - Fix: Containers that move out of view are handled better
18
+
19
+ ## 1.0.6
20
+ - Fix: Average item size calculations are more accurate while scrolling
21
+ - Fix: Items in view are handled better when data changes
22
+ - Fix: Scroll position is maintained more accurately during updates
23
+
24
+ ## 1.0.5
25
+ - Fix: Fast scrolling sometimes caused elements to disappear
26
+ - Fix: Out-of-range `scrollToIndex` calls are handled better
27
+
28
+ ## 1.0.4
29
+ - Fix: Container allocation is more efficient
30
+ - Fix: Bidirectional infinite lists scroll better on the old architecture
31
+ - Fix: Item size updates are handled more reliably
32
+ - Fix: Container reuse logic is more accurate
33
+ - Fix: Zero-size layouts are handled better in the old architecture
34
+
35
+ ## 1.0.3
36
+ - Fix: Items that are larger than the estimated size are handled correctly
37
+
38
+ ## 1.0.2
39
+ - Fix: Initial layout works better in the old architecture
40
+ - Fix: Average size calculations are more accurate for bidirectional scrolling
41
+ - Fix: Initial scroll index behavior is more precise
42
+ - Fix: Item size calculations are more accurate overall
43
+
44
+ ## 1.0.1
45
+ - Fix: Total size calculations are correct when using average sizes
46
+ - Fix: Keyboard avoiding behavior is improved for a smoother experience
47
+
48
+ ## 1.0.0
3
49
  Initial release! Major changes if you're coming from a beta version:
4
50
 
5
- - Item hooks like `useRecyclingState` are no longer render props, but can be imported from `@legendapp/list`
51
+ - Item hooks like `useRecyclingState` are no longer render props, but can be imported directly from `@legendapp/list`.
package/index.js CHANGED
@@ -80,12 +80,6 @@ function createSelectorFunctionsArr(ctx, signalNames) {
80
80
  }
81
81
  };
82
82
  }
83
- function useArr$(signalNames) {
84
- const ctx = React2__namespace.useContext(ContextState);
85
- const { subscribe, get } = React2__namespace.useMemo(() => createSelectorFunctionsArr(ctx, signalNames), [ctx, signalNames]);
86
- const value = shim.useSyncExternalStore(subscribe, get);
87
- return value;
88
- }
89
83
  function listen$(ctx, signalName, cb) {
90
84
  const { listeners } = ctx;
91
85
  let setListeners = listeners.get(signalName);
@@ -120,6 +114,12 @@ function getContentSize(ctx) {
120
114
  const totalSize = values.get("totalSize") || 0;
121
115
  return headerSize + footerSize + totalSize + stylePaddingTop;
122
116
  }
117
+ function useArr$(signalNames) {
118
+ const ctx = React2__namespace.useContext(ContextState);
119
+ const { subscribe, get } = React2__namespace.useMemo(() => createSelectorFunctionsArr(ctx, signalNames), [ctx, signalNames]);
120
+ const value = shim.useSyncExternalStore(subscribe, get);
121
+ return value;
122
+ }
123
123
 
124
124
  // src/DebugView.tsx
125
125
  var DebugRow = ({ children }) => {
@@ -1546,8 +1546,6 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1546
1546
  maxSizeInRow = 0;
1547
1547
  }
1548
1548
  }
1549
- const prevStartBuffered = state.startBuffered;
1550
- const prevEndBuffered = state.endBuffered;
1551
1549
  Object.assign(state, {
1552
1550
  startBuffered,
1553
1551
  startBufferedId,
@@ -1564,34 +1562,19 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1564
1562
  if (startBuffered !== null && endBuffered !== null) {
1565
1563
  let numContainers = prevNumContainers;
1566
1564
  const needNewContainers = [];
1567
- if (isReset || startBuffered < prevStartBuffered || endBuffered > prevEndBuffered) {
1568
- const isContained = (i) => {
1569
- const id = getId(i);
1570
- for (let j = 0; j < numContainers; j++) {
1571
- const key = peek$(ctx, `containerItemKey${j}`);
1572
- if (key === id) {
1573
- return true;
1574
- }
1575
- }
1576
- };
1577
- if (isReset) {
1578
- for (let i = startBuffered; i <= endBuffered; i++) {
1579
- if (!isContained(i)) {
1580
- needNewContainers.push(i);
1581
- }
1582
- }
1583
- } else {
1584
- for (let i = startBuffered; i < prevStartBuffered; i++) {
1585
- if (!isContained(i)) {
1586
- needNewContainers.push(i);
1587
- }
1588
- }
1589
- for (let i = Math.max(prevEndBuffered + 1, startBuffered); i <= endBuffered; i++) {
1590
- if (!isContained(i)) {
1591
- needNewContainers.push(i);
1592
- }
1565
+ const isContained = (i) => {
1566
+ const id = getId(i);
1567
+ for (let j = 0; j < numContainers; j++) {
1568
+ const key = peek$(ctx, `containerItemKey${j}`);
1569
+ if (key === id) {
1570
+ return true;
1593
1571
  }
1594
1572
  }
1573
+ };
1574
+ for (let i = startBuffered; i <= endBuffered; i++) {
1575
+ if (!isContained(i)) {
1576
+ needNewContainers.push(i);
1577
+ }
1595
1578
  }
1596
1579
  if (needNewContainers.length > 0) {
1597
1580
  const availableContainers = findAvailableContainers(
@@ -1717,6 +1700,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1717
1700
  var _a;
1718
1701
  const state = refState.current;
1719
1702
  state.scrollAdjustHandler.setDisableAdjust(true);
1703
+ state.scrollHistory.length = 0;
1720
1704
  state.scrollingToOffset = offset;
1721
1705
  (_a = refScroller.current) == null ? void 0 : _a.scrollTo({
1722
1706
  x: horizontal ? offset : 0,
@@ -1987,7 +1971,15 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1987
1971
  }
1988
1972
  if (__DEV__ && numContainers + stillNeeded > peek$(ctx, "numContainersPooled")) {
1989
1973
  console.warn(
1990
- "[legend-list] No container to recycle, so creating one on demand. This can be a minor performance issue and is likely caused by the estimatedItemSize being too large. Consider decreasing estimatedItemSize or increasing initialContainerPoolRatio."
1974
+ "[legend-list] No unused container available, so creating one on demand. This can be a minor performance issue and is likely caused by the estimatedItemSize being too large. Consider decreasing estimatedItemSize or increasing initialContainerPoolRatio.",
1975
+ {
1976
+ debugInfo: {
1977
+ numContainers,
1978
+ numNeeded,
1979
+ stillNeeded,
1980
+ numContainersPooled: peek$(ctx, "numContainersPooled")
1981
+ }
1982
+ }
1991
1983
  );
1992
1984
  }
1993
1985
  }
package/index.mjs CHANGED
@@ -59,12 +59,6 @@ function createSelectorFunctionsArr(ctx, signalNames) {
59
59
  }
60
60
  };
61
61
  }
62
- function useArr$(signalNames) {
63
- const ctx = React2.useContext(ContextState);
64
- const { subscribe, get } = React2.useMemo(() => createSelectorFunctionsArr(ctx, signalNames), [ctx, signalNames]);
65
- const value = useSyncExternalStore(subscribe, get);
66
- return value;
67
- }
68
62
  function listen$(ctx, signalName, cb) {
69
63
  const { listeners } = ctx;
70
64
  let setListeners = listeners.get(signalName);
@@ -99,6 +93,12 @@ function getContentSize(ctx) {
99
93
  const totalSize = values.get("totalSize") || 0;
100
94
  return headerSize + footerSize + totalSize + stylePaddingTop;
101
95
  }
96
+ function useArr$(signalNames) {
97
+ const ctx = React2.useContext(ContextState);
98
+ const { subscribe, get } = React2.useMemo(() => createSelectorFunctionsArr(ctx, signalNames), [ctx, signalNames]);
99
+ const value = useSyncExternalStore(subscribe, get);
100
+ return value;
101
+ }
102
102
 
103
103
  // src/DebugView.tsx
104
104
  var DebugRow = ({ children }) => {
@@ -1525,8 +1525,6 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1525
1525
  maxSizeInRow = 0;
1526
1526
  }
1527
1527
  }
1528
- const prevStartBuffered = state.startBuffered;
1529
- const prevEndBuffered = state.endBuffered;
1530
1528
  Object.assign(state, {
1531
1529
  startBuffered,
1532
1530
  startBufferedId,
@@ -1543,34 +1541,19 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1543
1541
  if (startBuffered !== null && endBuffered !== null) {
1544
1542
  let numContainers = prevNumContainers;
1545
1543
  const needNewContainers = [];
1546
- if (isReset || startBuffered < prevStartBuffered || endBuffered > prevEndBuffered) {
1547
- const isContained = (i) => {
1548
- const id = getId(i);
1549
- for (let j = 0; j < numContainers; j++) {
1550
- const key = peek$(ctx, `containerItemKey${j}`);
1551
- if (key === id) {
1552
- return true;
1553
- }
1554
- }
1555
- };
1556
- if (isReset) {
1557
- for (let i = startBuffered; i <= endBuffered; i++) {
1558
- if (!isContained(i)) {
1559
- needNewContainers.push(i);
1560
- }
1561
- }
1562
- } else {
1563
- for (let i = startBuffered; i < prevStartBuffered; i++) {
1564
- if (!isContained(i)) {
1565
- needNewContainers.push(i);
1566
- }
1567
- }
1568
- for (let i = Math.max(prevEndBuffered + 1, startBuffered); i <= endBuffered; i++) {
1569
- if (!isContained(i)) {
1570
- needNewContainers.push(i);
1571
- }
1544
+ const isContained = (i) => {
1545
+ const id = getId(i);
1546
+ for (let j = 0; j < numContainers; j++) {
1547
+ const key = peek$(ctx, `containerItemKey${j}`);
1548
+ if (key === id) {
1549
+ return true;
1572
1550
  }
1573
1551
  }
1552
+ };
1553
+ for (let i = startBuffered; i <= endBuffered; i++) {
1554
+ if (!isContained(i)) {
1555
+ needNewContainers.push(i);
1556
+ }
1574
1557
  }
1575
1558
  if (needNewContainers.length > 0) {
1576
1559
  const availableContainers = findAvailableContainers(
@@ -1696,6 +1679,7 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1696
1679
  var _a;
1697
1680
  const state = refState.current;
1698
1681
  state.scrollAdjustHandler.setDisableAdjust(true);
1682
+ state.scrollHistory.length = 0;
1699
1683
  state.scrollingToOffset = offset;
1700
1684
  (_a = refScroller.current) == null ? void 0 : _a.scrollTo({
1701
1685
  x: horizontal ? offset : 0,
@@ -1966,7 +1950,15 @@ var LegendListInner = typedForwardRef(function LegendListInner2(props, forwarded
1966
1950
  }
1967
1951
  if (__DEV__ && numContainers + stillNeeded > peek$(ctx, "numContainersPooled")) {
1968
1952
  console.warn(
1969
- "[legend-list] No container to recycle, so creating one on demand. This can be a minor performance issue and is likely caused by the estimatedItemSize being too large. Consider decreasing estimatedItemSize or increasing initialContainerPoolRatio."
1953
+ "[legend-list] No unused container available, so creating one on demand. This can be a minor performance issue and is likely caused by the estimatedItemSize being too large. Consider decreasing estimatedItemSize or increasing initialContainerPoolRatio.",
1954
+ {
1955
+ debugInfo: {
1956
+ numContainers,
1957
+ numNeeded,
1958
+ stillNeeded,
1959
+ numContainersPooled: peek$(ctx, "numContainersPooled")
1960
+ }
1961
+ }
1970
1962
  );
1971
1963
  }
1972
1964
  }
@@ -1,141 +1,16 @@
1
- import * as react_native_reanimated_lib_typescript_layoutReanimation_animationBuilder_Keyframe from 'react-native-reanimated/lib/typescript/layoutReanimation/animationBuilder/Keyframe';
2
- import * as react_native_reanimated from 'react-native-reanimated';
3
- import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
4
1
  import * as _legendapp_list from '@legendapp/list';
5
2
  import { LegendListRef } from '@legendapp/list';
3
+ import * as react_native_reanimated_lib_typescript_layoutReanimation_animationBuilder_Keyframe from 'react-native-reanimated/lib/typescript/layoutReanimation/animationBuilder/Keyframe';
6
4
  import * as react_native from 'react-native';
7
5
  import { Insets } from 'react-native';
6
+ import * as react_native_reanimated from 'react-native-reanimated';
7
+ import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
8
8
  import * as React from 'react';
9
9
 
10
- declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
11
- alignItemsAtEnd?: boolean;
12
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
13
- data: readonly T[];
14
- drawDistance?: number;
15
- estimatedItemSize?: number;
16
- extraData?: any;
17
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
18
- initialContainerPoolRatio?: number | undefined;
19
- initialScrollOffset?: number;
20
- initialScrollIndex?: number;
21
- ItemSeparatorComponent?: React.ComponentType<{
22
- leadingItem: T;
23
- }> | undefined;
24
- keyExtractor?: ((item: T, index: number) => string) | undefined;
25
- ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
26
- ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
27
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
28
- ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
29
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
30
- maintainScrollAtEnd?: boolean;
31
- maintainScrollAtEndThreshold?: number;
32
- maintainVisibleContentPosition?: boolean;
33
- numColumns?: number;
34
- onEndReached?: ((info: {
35
- distanceFromEnd: number;
36
- }) => void) | null | undefined;
37
- onEndReachedThreshold?: number | null | undefined;
38
- onItemSizeChanged?: ((info: {
39
- size: number;
40
- previous: number;
41
- index: number;
42
- itemKey: string;
43
- itemData: T;
44
- }) => void) | undefined;
45
- onRefresh?: () => void;
46
- onStartReached?: ((info: {
47
- distanceFromStart: number;
48
- }) => void) | null | undefined;
49
- onStartReachedThreshold?: number | null | undefined;
50
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
51
- progressViewOffset?: number;
52
- recycleItems?: boolean;
53
- refScrollView?: React.Ref<react_native.ScrollView>;
54
- refreshing?: boolean;
55
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
56
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
57
- suggestEstimatedItemSize?: boolean;
58
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
59
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
60
- waitForInitialLayout?: boolean;
61
- } & React.RefAttributes<LegendListRef>) => React.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
62
- alignItemsAtEnd?: boolean;
63
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
64
- data: readonly T[];
65
- drawDistance?: number;
66
- estimatedItemSize?: number;
67
- extraData?: any;
68
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
69
- initialContainerPoolRatio?: number | undefined;
70
- initialScrollOffset?: number;
71
- initialScrollIndex?: number;
72
- ItemSeparatorComponent?: React.ComponentType<{
73
- leadingItem: T;
74
- }> | undefined;
75
- keyExtractor?: ((item: T, index: number) => string) | undefined;
76
- ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
77
- ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
78
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
79
- ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
80
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
81
- maintainScrollAtEnd?: boolean;
82
- maintainScrollAtEndThreshold?: number;
83
- maintainVisibleContentPosition?: boolean;
84
- numColumns?: number;
85
- onEndReached?: ((info: {
86
- distanceFromEnd: number;
87
- }) => void) | null | undefined;
88
- onEndReachedThreshold?: number | null | undefined;
89
- onItemSizeChanged?: ((info: {
90
- size: number;
91
- previous: number;
92
- index: number;
93
- itemKey: string;
94
- itemData: T;
95
- }) => void) | undefined;
96
- onRefresh?: () => void;
97
- onStartReached?: ((info: {
98
- distanceFromStart: number;
99
- }) => void) | null | undefined;
100
- onStartReachedThreshold?: number | null | undefined;
101
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
102
- progressViewOffset?: number;
103
- recycleItems?: boolean;
104
- refScrollView?: React.Ref<react_native.ScrollView>;
105
- refreshing?: boolean;
106
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
107
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
108
- suggestEstimatedItemSize?: boolean;
109
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
110
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
111
- waitForInitialLayout?: boolean;
112
- } & React.RefAttributes<LegendListRef>) => React.ReactNode)> | (<ItemT_1>(props: Omit<_legendapp_list_reanimated.AnimatedLegendListPropsBase<ItemT_1>, "refLegendList"> & {
10
+ declare const LegendList: <ItemT, ListT extends (<ItemT_1>(props: Omit<_legendapp_list_reanimated.AnimatedLegendListPropsBase<ItemT_1>, "refLegendList"> & {
113
11
  getEstimatedItemSize?: ((index: number, item: ItemT_1) => number) | undefined;
114
- ItemSeparatorComponent?: React.ComponentType<{
115
- leadingItem: ItemT_1;
116
- }> | undefined;
117
12
  keyExtractor?: ((item: ItemT_1, index: number) => string) | undefined;
118
- onItemSizeChanged?: ((info: {
119
- size: number;
120
- previous: number;
121
- index: number;
122
- itemKey: string;
123
- itemData: ItemT_1;
124
- }) => void) | undefined;
125
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<ItemT_1>) => React.ReactNode) | undefined;
126
13
  animatedProps?: Partial<{
127
- contentOffset?: react_native.PointProp | react_native_reanimated.SharedValue<react_native.PointProp | undefined> | undefined;
128
- contentInset?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
129
- maintainVisibleContentPosition?: {
130
- autoscrollToTopThreshold?: number | null | undefined;
131
- minIndexForVisible: number;
132
- } | react_native_reanimated.SharedValue<{
133
- autoscrollToTopThreshold?: number | null | undefined;
134
- minIndexForVisible: number;
135
- } | null | undefined> | null | undefined;
136
- stickyHeaderIndices?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
137
- removeClippedSubviews?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
138
- scrollEventThrottle?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
139
14
  decelerationRate?: number | "fast" | "normal" | react_native_reanimated.SharedValue<number | "fast" | "normal" | undefined> | undefined;
140
15
  horizontal?: boolean | react_native_reanimated.SharedValue<boolean | null | undefined> | null | undefined;
141
16
  invertStickyHeaders?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
@@ -149,6 +24,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
149
24
  onMomentumScrollBegin?: ((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | react_native_reanimated.SharedValue<((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | undefined> | undefined;
150
25
  pagingEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
151
26
  scrollEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
27
+ removeClippedSubviews?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
152
28
  showsHorizontalScrollIndicator?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
153
29
  showsVerticalScrollIndicator?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
154
30
  stickyHeaderHiddenOnScroll?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
@@ -157,6 +33,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
157
33
  snapToOffsets?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
158
34
  snapToStart?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
159
35
  snapToEnd?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
36
+ stickyHeaderIndices?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
160
37
  disableIntervalMomentum?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
161
38
  disableScrollViewPanResponder?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
162
39
  StickyHeaderComponent?: React.ComponentType<any> | react_native_reanimated.SharedValue<React.ComponentType<any> | undefined> | undefined;
@@ -260,16 +137,26 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
260
137
  bouncesZoom?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
261
138
  canCancelContentTouches?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
262
139
  centerContent?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
140
+ contentInset?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
141
+ contentOffset?: react_native.PointProp | react_native_reanimated.SharedValue<react_native.PointProp | undefined> | undefined;
263
142
  contentInsetAdjustmentBehavior?: "always" | "never" | "automatic" | "scrollableAxes" | react_native_reanimated.SharedValue<"always" | "never" | "automatic" | "scrollableAxes" | undefined> | undefined;
264
143
  directionalLockEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
144
+ maintainVisibleContentPosition?: {
145
+ autoscrollToTopThreshold?: number | null | undefined;
146
+ minIndexForVisible: number;
147
+ } | react_native_reanimated.SharedValue<{
148
+ autoscrollToTopThreshold?: number | null | undefined;
149
+ minIndexForVisible: number;
150
+ } | null | undefined> | null | undefined;
265
151
  maximumZoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
266
152
  minimumZoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
267
153
  onScrollAnimationEnd?: (() => void) | react_native_reanimated.SharedValue<(() => void) | undefined> | undefined;
268
154
  pinchGestureEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
155
+ scrollEventThrottle?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
269
156
  scrollIndicatorInsets?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
270
157
  scrollToOverflowEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
271
158
  scrollsToTop?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
272
- snapToAlignment?: "end" | "start" | "center" | react_native_reanimated.SharedValue<"end" | "start" | "center" | undefined> | undefined;
159
+ snapToAlignment?: "center" | "start" | "end" | react_native_reanimated.SharedValue<"center" | "start" | "end" | undefined> | undefined;
273
160
  onScrollToTop?: ((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | react_native_reanimated.SharedValue<((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | undefined> | undefined;
274
161
  zoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
275
162
  endFillColor?: react_native.ColorValue | react_native_reanimated.SharedValue<react_native.ColorValue | undefined> | undefined;
@@ -279,8 +166,8 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
279
166
  fadingEdgeLength?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
280
167
  persistentScrollbar?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
281
168
  } & {
282
- contentContainerStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
283
169
  style?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
170
+ contentContainerStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
284
171
  indicatorStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<"default" | "black" | "white" | undefined>>;
285
172
  } & {
286
173
  layout?: react_native_reanimated.BaseAnimationBuilder | react_native_reanimated.LayoutAnimationFunction | typeof react_native_reanimated.BaseAnimationBuilder;
@@ -290,9 +177,122 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
290
177
  sharedTransitionTag?: string;
291
178
  sharedTransitionStyle?: react_native_reanimated.SharedTransition;
292
179
  }> | undefined;
180
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<ItemT_1>) => React.ReactNode) | undefined;
181
+ onItemSizeChanged?: ((info: {
182
+ size: number;
183
+ previous: number;
184
+ index: number;
185
+ itemKey: string;
186
+ itemData: ItemT_1;
187
+ }) => void) | undefined;
188
+ ItemSeparatorComponent?: React.ComponentType<{
189
+ leadingItem: ItemT_1;
190
+ }> | undefined;
293
191
  } & {
294
192
  ref?: React.Ref<LegendListRef>;
295
- }) => React.ReactElement | null) = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
193
+ }) => React.ReactElement | null) | (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
194
+ alignItemsAtEnd?: boolean;
195
+ columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
196
+ data: readonly T[];
197
+ drawDistance?: number;
198
+ estimatedItemSize?: number;
199
+ extraData?: any;
200
+ getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
201
+ initialContainerPoolRatio?: number | undefined;
202
+ initialScrollOffset?: number;
203
+ initialScrollIndex?: number;
204
+ ItemSeparatorComponent?: React.ComponentType<{
205
+ leadingItem: T;
206
+ }> | undefined;
207
+ keyExtractor?: ((item: T, index: number) => string) | undefined;
208
+ ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
209
+ ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
210
+ ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
211
+ ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
212
+ ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
213
+ maintainScrollAtEnd?: boolean;
214
+ maintainScrollAtEndThreshold?: number;
215
+ maintainVisibleContentPosition?: boolean;
216
+ numColumns?: number;
217
+ onEndReached?: ((info: {
218
+ distanceFromEnd: number;
219
+ }) => void) | null | undefined;
220
+ onEndReachedThreshold?: number | null | undefined;
221
+ onItemSizeChanged?: ((info: {
222
+ size: number;
223
+ previous: number;
224
+ index: number;
225
+ itemKey: string;
226
+ itemData: T;
227
+ }) => void) | undefined;
228
+ onRefresh?: () => void;
229
+ onStartReached?: ((info: {
230
+ distanceFromStart: number;
231
+ }) => void) | null | undefined;
232
+ onStartReachedThreshold?: number | null | undefined;
233
+ onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
234
+ progressViewOffset?: number;
235
+ recycleItems?: boolean;
236
+ refScrollView?: React.Ref<react_native.ScrollView>;
237
+ refreshing?: boolean;
238
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
239
+ renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
240
+ suggestEstimatedItemSize?: boolean;
241
+ viewabilityConfig?: _legendapp_list.ViewabilityConfig;
242
+ viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
243
+ waitForInitialLayout?: boolean;
244
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
245
+ alignItemsAtEnd?: boolean;
246
+ columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
247
+ data: readonly T[];
248
+ drawDistance?: number;
249
+ estimatedItemSize?: number;
250
+ extraData?: any;
251
+ getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
252
+ initialContainerPoolRatio?: number | undefined;
253
+ initialScrollOffset?: number;
254
+ initialScrollIndex?: number;
255
+ ItemSeparatorComponent?: React.ComponentType<{
256
+ leadingItem: T;
257
+ }> | undefined;
258
+ keyExtractor?: ((item: T, index: number) => string) | undefined;
259
+ ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
260
+ ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
261
+ ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
262
+ ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
263
+ ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
264
+ maintainScrollAtEnd?: boolean;
265
+ maintainScrollAtEndThreshold?: number;
266
+ maintainVisibleContentPosition?: boolean;
267
+ numColumns?: number;
268
+ onEndReached?: ((info: {
269
+ distanceFromEnd: number;
270
+ }) => void) | null | undefined;
271
+ onEndReachedThreshold?: number | null | undefined;
272
+ onItemSizeChanged?: ((info: {
273
+ size: number;
274
+ previous: number;
275
+ index: number;
276
+ itemKey: string;
277
+ itemData: T;
278
+ }) => void) | undefined;
279
+ onRefresh?: () => void;
280
+ onStartReached?: ((info: {
281
+ distanceFromStart: number;
282
+ }) => void) | null | undefined;
283
+ onStartReachedThreshold?: number | null | undefined;
284
+ onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
285
+ progressViewOffset?: number;
286
+ recycleItems?: boolean;
287
+ refScrollView?: React.Ref<react_native.ScrollView>;
288
+ refreshing?: boolean;
289
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
290
+ renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
291
+ suggestEstimatedItemSize?: boolean;
292
+ viewabilityConfig?: _legendapp_list.ViewabilityConfig;
293
+ viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
294
+ waitForInitialLayout?: boolean;
295
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode)> = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
296
296
  alignItemsAtEnd?: boolean;
297
297
  columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
298
298
  data: readonly T[];
@@ -343,7 +343,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
343
343
  viewabilityConfig?: _legendapp_list.ViewabilityConfig;
344
344
  viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
345
345
  waitForInitialLayout?: boolean;
346
- } & React.RefAttributes<LegendListRef>) => React.ReactNode>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
346
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
347
347
  alignItemsAtEnd?: boolean;
348
348
  columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
349
349
  data: readonly ItemT[];
@@ -1,141 +1,16 @@
1
- import * as react_native_reanimated_lib_typescript_layoutReanimation_animationBuilder_Keyframe from 'react-native-reanimated/lib/typescript/layoutReanimation/animationBuilder/Keyframe';
2
- import * as react_native_reanimated from 'react-native-reanimated';
3
- import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
4
1
  import * as _legendapp_list from '@legendapp/list';
5
2
  import { LegendListRef } from '@legendapp/list';
3
+ import * as react_native_reanimated_lib_typescript_layoutReanimation_animationBuilder_Keyframe from 'react-native-reanimated/lib/typescript/layoutReanimation/animationBuilder/Keyframe';
6
4
  import * as react_native from 'react-native';
7
5
  import { Insets } from 'react-native';
6
+ import * as react_native_reanimated from 'react-native-reanimated';
7
+ import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
8
8
  import * as React from 'react';
9
9
 
10
- declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
11
- alignItemsAtEnd?: boolean;
12
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
13
- data: readonly T[];
14
- drawDistance?: number;
15
- estimatedItemSize?: number;
16
- extraData?: any;
17
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
18
- initialContainerPoolRatio?: number | undefined;
19
- initialScrollOffset?: number;
20
- initialScrollIndex?: number;
21
- ItemSeparatorComponent?: React.ComponentType<{
22
- leadingItem: T;
23
- }> | undefined;
24
- keyExtractor?: ((item: T, index: number) => string) | undefined;
25
- ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
26
- ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
27
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
28
- ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
29
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
30
- maintainScrollAtEnd?: boolean;
31
- maintainScrollAtEndThreshold?: number;
32
- maintainVisibleContentPosition?: boolean;
33
- numColumns?: number;
34
- onEndReached?: ((info: {
35
- distanceFromEnd: number;
36
- }) => void) | null | undefined;
37
- onEndReachedThreshold?: number | null | undefined;
38
- onItemSizeChanged?: ((info: {
39
- size: number;
40
- previous: number;
41
- index: number;
42
- itemKey: string;
43
- itemData: T;
44
- }) => void) | undefined;
45
- onRefresh?: () => void;
46
- onStartReached?: ((info: {
47
- distanceFromStart: number;
48
- }) => void) | null | undefined;
49
- onStartReachedThreshold?: number | null | undefined;
50
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
51
- progressViewOffset?: number;
52
- recycleItems?: boolean;
53
- refScrollView?: React.Ref<react_native.ScrollView>;
54
- refreshing?: boolean;
55
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
56
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
57
- suggestEstimatedItemSize?: boolean;
58
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
59
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
60
- waitForInitialLayout?: boolean;
61
- } & React.RefAttributes<LegendListRef>) => React.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
62
- alignItemsAtEnd?: boolean;
63
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
64
- data: readonly T[];
65
- drawDistance?: number;
66
- estimatedItemSize?: number;
67
- extraData?: any;
68
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
69
- initialContainerPoolRatio?: number | undefined;
70
- initialScrollOffset?: number;
71
- initialScrollIndex?: number;
72
- ItemSeparatorComponent?: React.ComponentType<{
73
- leadingItem: T;
74
- }> | undefined;
75
- keyExtractor?: ((item: T, index: number) => string) | undefined;
76
- ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
77
- ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
78
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
79
- ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
80
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
81
- maintainScrollAtEnd?: boolean;
82
- maintainScrollAtEndThreshold?: number;
83
- maintainVisibleContentPosition?: boolean;
84
- numColumns?: number;
85
- onEndReached?: ((info: {
86
- distanceFromEnd: number;
87
- }) => void) | null | undefined;
88
- onEndReachedThreshold?: number | null | undefined;
89
- onItemSizeChanged?: ((info: {
90
- size: number;
91
- previous: number;
92
- index: number;
93
- itemKey: string;
94
- itemData: T;
95
- }) => void) | undefined;
96
- onRefresh?: () => void;
97
- onStartReached?: ((info: {
98
- distanceFromStart: number;
99
- }) => void) | null | undefined;
100
- onStartReachedThreshold?: number | null | undefined;
101
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
102
- progressViewOffset?: number;
103
- recycleItems?: boolean;
104
- refScrollView?: React.Ref<react_native.ScrollView>;
105
- refreshing?: boolean;
106
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
107
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
108
- suggestEstimatedItemSize?: boolean;
109
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
110
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
111
- waitForInitialLayout?: boolean;
112
- } & React.RefAttributes<LegendListRef>) => React.ReactNode)> | (<ItemT_1>(props: Omit<_legendapp_list_reanimated.AnimatedLegendListPropsBase<ItemT_1>, "refLegendList"> & {
10
+ declare const LegendList: <ItemT, ListT extends (<ItemT_1>(props: Omit<_legendapp_list_reanimated.AnimatedLegendListPropsBase<ItemT_1>, "refLegendList"> & {
113
11
  getEstimatedItemSize?: ((index: number, item: ItemT_1) => number) | undefined;
114
- ItemSeparatorComponent?: React.ComponentType<{
115
- leadingItem: ItemT_1;
116
- }> | undefined;
117
12
  keyExtractor?: ((item: ItemT_1, index: number) => string) | undefined;
118
- onItemSizeChanged?: ((info: {
119
- size: number;
120
- previous: number;
121
- index: number;
122
- itemKey: string;
123
- itemData: ItemT_1;
124
- }) => void) | undefined;
125
- renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<ItemT_1>) => React.ReactNode) | undefined;
126
13
  animatedProps?: Partial<{
127
- contentOffset?: react_native.PointProp | react_native_reanimated.SharedValue<react_native.PointProp | undefined> | undefined;
128
- contentInset?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
129
- maintainVisibleContentPosition?: {
130
- autoscrollToTopThreshold?: number | null | undefined;
131
- minIndexForVisible: number;
132
- } | react_native_reanimated.SharedValue<{
133
- autoscrollToTopThreshold?: number | null | undefined;
134
- minIndexForVisible: number;
135
- } | null | undefined> | null | undefined;
136
- stickyHeaderIndices?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
137
- removeClippedSubviews?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
138
- scrollEventThrottle?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
139
14
  decelerationRate?: number | "fast" | "normal" | react_native_reanimated.SharedValue<number | "fast" | "normal" | undefined> | undefined;
140
15
  horizontal?: boolean | react_native_reanimated.SharedValue<boolean | null | undefined> | null | undefined;
141
16
  invertStickyHeaders?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
@@ -149,6 +24,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
149
24
  onMomentumScrollBegin?: ((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | react_native_reanimated.SharedValue<((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | undefined> | undefined;
150
25
  pagingEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
151
26
  scrollEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
27
+ removeClippedSubviews?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
152
28
  showsHorizontalScrollIndicator?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
153
29
  showsVerticalScrollIndicator?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
154
30
  stickyHeaderHiddenOnScroll?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
@@ -157,6 +33,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
157
33
  snapToOffsets?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
158
34
  snapToStart?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
159
35
  snapToEnd?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
36
+ stickyHeaderIndices?: number[] | react_native_reanimated.SharedValue<number[] | undefined> | undefined;
160
37
  disableIntervalMomentum?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
161
38
  disableScrollViewPanResponder?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
162
39
  StickyHeaderComponent?: React.ComponentType<any> | react_native_reanimated.SharedValue<React.ComponentType<any> | undefined> | undefined;
@@ -260,16 +137,26 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
260
137
  bouncesZoom?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
261
138
  canCancelContentTouches?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
262
139
  centerContent?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
140
+ contentInset?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
141
+ contentOffset?: react_native.PointProp | react_native_reanimated.SharedValue<react_native.PointProp | undefined> | undefined;
263
142
  contentInsetAdjustmentBehavior?: "always" | "never" | "automatic" | "scrollableAxes" | react_native_reanimated.SharedValue<"always" | "never" | "automatic" | "scrollableAxes" | undefined> | undefined;
264
143
  directionalLockEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
144
+ maintainVisibleContentPosition?: {
145
+ autoscrollToTopThreshold?: number | null | undefined;
146
+ minIndexForVisible: number;
147
+ } | react_native_reanimated.SharedValue<{
148
+ autoscrollToTopThreshold?: number | null | undefined;
149
+ minIndexForVisible: number;
150
+ } | null | undefined> | null | undefined;
265
151
  maximumZoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
266
152
  minimumZoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
267
153
  onScrollAnimationEnd?: (() => void) | react_native_reanimated.SharedValue<(() => void) | undefined> | undefined;
268
154
  pinchGestureEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
155
+ scrollEventThrottle?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
269
156
  scrollIndicatorInsets?: Insets | react_native_reanimated.SharedValue<Insets | undefined> | undefined;
270
157
  scrollToOverflowEnabled?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
271
158
  scrollsToTop?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
272
- snapToAlignment?: "end" | "start" | "center" | react_native_reanimated.SharedValue<"end" | "start" | "center" | undefined> | undefined;
159
+ snapToAlignment?: "center" | "start" | "end" | react_native_reanimated.SharedValue<"center" | "start" | "end" | undefined> | undefined;
273
160
  onScrollToTop?: ((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | react_native_reanimated.SharedValue<((event: react_native.NativeSyntheticEvent<react_native.NativeScrollEvent>) => void) | undefined> | undefined;
274
161
  zoomScale?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
275
162
  endFillColor?: react_native.ColorValue | react_native_reanimated.SharedValue<react_native.ColorValue | undefined> | undefined;
@@ -279,8 +166,8 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
279
166
  fadingEdgeLength?: number | react_native_reanimated.SharedValue<number | undefined> | undefined;
280
167
  persistentScrollbar?: boolean | react_native_reanimated.SharedValue<boolean | undefined> | undefined;
281
168
  } & {
282
- contentContainerStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
283
169
  style?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
170
+ contentContainerStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<react_native.StyleProp<react_native.ViewStyle>>>;
284
171
  indicatorStyle?: react_native.StyleProp<react_native_reanimated.AnimatedStyle<"default" | "black" | "white" | undefined>>;
285
172
  } & {
286
173
  layout?: react_native_reanimated.BaseAnimationBuilder | react_native_reanimated.LayoutAnimationFunction | typeof react_native_reanimated.BaseAnimationBuilder;
@@ -290,9 +177,122 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
290
177
  sharedTransitionTag?: string;
291
178
  sharedTransitionStyle?: react_native_reanimated.SharedTransition;
292
179
  }> | undefined;
180
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<ItemT_1>) => React.ReactNode) | undefined;
181
+ onItemSizeChanged?: ((info: {
182
+ size: number;
183
+ previous: number;
184
+ index: number;
185
+ itemKey: string;
186
+ itemData: ItemT_1;
187
+ }) => void) | undefined;
188
+ ItemSeparatorComponent?: React.ComponentType<{
189
+ leadingItem: ItemT_1;
190
+ }> | undefined;
293
191
  } & {
294
192
  ref?: React.Ref<LegendListRef>;
295
- }) => React.ReactElement | null) = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
193
+ }) => React.ReactElement | null) | (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
194
+ alignItemsAtEnd?: boolean;
195
+ columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
196
+ data: readonly T[];
197
+ drawDistance?: number;
198
+ estimatedItemSize?: number;
199
+ extraData?: any;
200
+ getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
201
+ initialContainerPoolRatio?: number | undefined;
202
+ initialScrollOffset?: number;
203
+ initialScrollIndex?: number;
204
+ ItemSeparatorComponent?: React.ComponentType<{
205
+ leadingItem: T;
206
+ }> | undefined;
207
+ keyExtractor?: ((item: T, index: number) => string) | undefined;
208
+ ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
209
+ ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
210
+ ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
211
+ ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
212
+ ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
213
+ maintainScrollAtEnd?: boolean;
214
+ maintainScrollAtEndThreshold?: number;
215
+ maintainVisibleContentPosition?: boolean;
216
+ numColumns?: number;
217
+ onEndReached?: ((info: {
218
+ distanceFromEnd: number;
219
+ }) => void) | null | undefined;
220
+ onEndReachedThreshold?: number | null | undefined;
221
+ onItemSizeChanged?: ((info: {
222
+ size: number;
223
+ previous: number;
224
+ index: number;
225
+ itemKey: string;
226
+ itemData: T;
227
+ }) => void) | undefined;
228
+ onRefresh?: () => void;
229
+ onStartReached?: ((info: {
230
+ distanceFromStart: number;
231
+ }) => void) | null | undefined;
232
+ onStartReachedThreshold?: number | null | undefined;
233
+ onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
234
+ progressViewOffset?: number;
235
+ recycleItems?: boolean;
236
+ refScrollView?: React.Ref<react_native.ScrollView>;
237
+ refreshing?: boolean;
238
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
239
+ renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
240
+ suggestEstimatedItemSize?: boolean;
241
+ viewabilityConfig?: _legendapp_list.ViewabilityConfig;
242
+ viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
243
+ waitForInitialLayout?: boolean;
244
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
245
+ alignItemsAtEnd?: boolean;
246
+ columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
247
+ data: readonly T[];
248
+ drawDistance?: number;
249
+ estimatedItemSize?: number;
250
+ extraData?: any;
251
+ getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
252
+ initialContainerPoolRatio?: number | undefined;
253
+ initialScrollOffset?: number;
254
+ initialScrollIndex?: number;
255
+ ItemSeparatorComponent?: React.ComponentType<{
256
+ leadingItem: T;
257
+ }> | undefined;
258
+ keyExtractor?: ((item: T, index: number) => string) | undefined;
259
+ ListEmptyComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
260
+ ListFooterComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
261
+ ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
262
+ ListHeaderComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
263
+ ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
264
+ maintainScrollAtEnd?: boolean;
265
+ maintainScrollAtEndThreshold?: number;
266
+ maintainVisibleContentPosition?: boolean;
267
+ numColumns?: number;
268
+ onEndReached?: ((info: {
269
+ distanceFromEnd: number;
270
+ }) => void) | null | undefined;
271
+ onEndReachedThreshold?: number | null | undefined;
272
+ onItemSizeChanged?: ((info: {
273
+ size: number;
274
+ previous: number;
275
+ index: number;
276
+ itemKey: string;
277
+ itemData: T;
278
+ }) => void) | undefined;
279
+ onRefresh?: () => void;
280
+ onStartReached?: ((info: {
281
+ distanceFromStart: number;
282
+ }) => void) | null | undefined;
283
+ onStartReachedThreshold?: number | null | undefined;
284
+ onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
285
+ progressViewOffset?: number;
286
+ recycleItems?: boolean;
287
+ refScrollView?: React.Ref<react_native.ScrollView>;
288
+ refreshing?: boolean;
289
+ renderItem?: ((props: _legendapp_list.LegendListRenderItemProps<T>) => React.ReactNode) | undefined;
290
+ renderScrollComponent?: (props: react_native.ScrollViewProps) => React.ReactElement<react_native.ScrollViewProps>;
291
+ suggestEstimatedItemSize?: boolean;
292
+ viewabilityConfig?: _legendapp_list.ViewabilityConfig;
293
+ viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
294
+ waitForInitialLayout?: boolean;
295
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode)> = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
296
296
  alignItemsAtEnd?: boolean;
297
297
  columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
298
298
  data: readonly T[];
@@ -343,7 +343,7 @@ declare const LegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_nati
343
343
  viewabilityConfig?: _legendapp_list.ViewabilityConfig;
344
344
  viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
345
345
  waitForInitialLayout?: boolean;
346
- } & React.RefAttributes<LegendListRef>) => React.ReactNode>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews"> & {
346
+ } & React.RefAttributes<LegendListRef>) => React.ReactNode>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "removeClippedSubviews" | "stickyHeaderIndices" | "contentInset" | "contentOffset" | "maintainVisibleContentPosition"> & {
347
347
  alignItemsAtEnd?: boolean;
348
348
  columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
349
349
  data: readonly ItemT[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legendapp/list",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
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,