@legendapp/list 2.0.0-next.9 → 2.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/index.d.ts CHANGED
@@ -1,11 +1,9 @@
1
- import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
2
1
  import * as React$1 from 'react';
3
2
  import { ComponentProps, ReactNode, Dispatch, SetStateAction } from 'react';
4
- import * as react_native from 'react-native';
5
- import { View, ScrollView, Animated, StyleProp, ViewStyle, ScrollViewProps, LayoutRectangle, NativeSyntheticEvent, NativeScrollEvent, ScrollViewComponent, ScrollResponderMixin } from 'react-native';
3
+ import { View, Animated, ScrollView, LayoutRectangle, ScrollViewComponent, ScrollResponderMixin, StyleProp, ViewStyle, NativeSyntheticEvent, NativeScrollEvent, ScrollViewProps } from 'react-native';
6
4
  import Animated$1 from 'react-native-reanimated';
7
5
 
8
- type ListenerType = "numContainers" | "numContainersPooled" | `containerItemKey${number}` | `containerItemData${number}` | `containerPosition${number}` | `containerColumn${number}` | "containersDidLayout" | "extraData" | "numColumns" | "lastItemKeys" | "totalSize" | "alignItemsPaddingTop" | "stylePaddingTop" | "scrollAdjust" | "scrollAdjustUserOffset" | "headerSize" | "footerSize" | "maintainVisibleContentPosition" | "debugRawScroll" | "debugComputedScroll" | "otherAxisSize" | "snapToOffsets" | "scrollSize";
6
+ type ListenerType = "numContainers" | "numContainersPooled" | `containerItemKey${number}` | `containerItemData${number}` | `containerPosition${number}` | `containerColumn${number}` | `containerSticky${number}` | `containerStickyOffset${number}` | "containersDidLayout" | "extraData" | "numColumns" | "lastItemKeys" | "totalSize" | "alignItemsPaddingTop" | "stylePaddingTop" | "scrollAdjust" | "scrollAdjustUserOffset" | "headerSize" | "footerSize" | "maintainVisibleContentPosition" | "debugRawScroll" | "debugComputedScroll" | "otherAxisSize" | "snapToOffsets" | "scrollSize";
9
7
  interface StateContext {
10
8
  listeners: Map<ListenerType, Set<(value: any) => void>>;
11
9
  values: Map<ListenerType, any>;
@@ -13,8 +11,16 @@ interface StateContext {
13
11
  mapViewabilityValues: Map<string, ViewToken>;
14
12
  mapViewabilityAmountCallbacks: Map<number, ViewabilityAmountCallback>;
15
13
  mapViewabilityAmountValues: Map<number, ViewAmountToken>;
14
+ mapViewabilityConfigStates: Map<string, {
15
+ viewableItems: ViewToken[];
16
+ start: number;
17
+ end: number;
18
+ previousStart: number;
19
+ previousEnd: number;
20
+ }>;
16
21
  columnWrapperStyle: ColumnWrapperStyle | undefined;
17
22
  viewRefs: Map<number, React$1.RefObject<View>>;
23
+ animatedScrollY: Animated.Value;
18
24
  }
19
25
 
20
26
  declare class ScrollAdjustHandler {
@@ -24,23 +30,51 @@ declare class ScrollAdjustHandler {
24
30
  constructor(ctx: StateContext);
25
31
  requestAdjust(add: number): void;
26
32
  setMounted(): void;
33
+ getAdjust(): number;
27
34
  }
28
35
 
29
- type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof ScrollView> | ComponentProps<typeof Animated.ScrollView> | ComponentProps<typeof Animated$1.ScrollView>> = Omit<TScrollView, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
36
+ type BaseScrollViewProps<TScrollView> = Omit<TScrollView, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children" | "onScroll">;
37
+ interface DataModeProps<ItemT, TItemType extends string | undefined> {
38
+ /**
39
+ * Array of items to render in the list.
40
+ * @required when using data mode
41
+ */
42
+ data: ReadonlyArray<ItemT>;
43
+ /**
44
+ * Function or React component to render each item in the list.
45
+ * Can be either:
46
+ * - A function: (props: LegendListRenderItemProps<ItemT>) => ReactNode
47
+ * - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
48
+ * @required when using data mode
49
+ */
50
+ renderItem: ((props: LegendListRenderItemProps<ItemT, TItemType>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT, TItemType>>;
51
+ children?: never;
52
+ }
53
+ interface ChildrenModeProps {
54
+ /**
55
+ * React children elements to render as list items.
56
+ * Each child will be treated as an individual list item.
57
+ * @required when using children mode
58
+ */
59
+ children: ReactNode;
60
+ data?: never;
61
+ renderItem?: never;
62
+ }
63
+ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
30
64
  /**
31
65
  * If true, aligns items at the end of the list.
32
66
  * @default false
33
67
  */
34
68
  alignItemsAtEnd?: boolean;
35
69
  /**
36
- * Style applied to each column's wrapper view.
70
+ * If true, enables using average sizes for performance optimization.
71
+ * @default true
37
72
  */
38
- columnWrapperStyle?: ColumnWrapperStyle;
73
+ enableAverages?: boolean;
39
74
  /**
40
- * Array of items to render in the list.
41
- * @required
75
+ * Style applied to each column's wrapper view.
42
76
  */
43
- data: ReadonlyArray<ItemT>;
77
+ columnWrapperStyle?: ColumnWrapperStyle;
44
78
  /**
45
79
  * Distance in pixels to pre-render items ahead of the visible area.
46
80
  * @default 250
@@ -68,7 +102,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
68
102
  * In case you have distinct item sizes, you can provide a function to get the size of an item.
69
103
  * Use instead of FlatList's getItemLayout or FlashList overrideItemLayout if you want to have accurate initialScrollOffset, you should provide this function
70
104
  */
71
- getEstimatedItemSize?: (index: number, item: ItemT) => number;
105
+ getEstimatedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
72
106
  /**
73
107
  * Ratio of initial container pool size to data length (e.g., 0.5 for half).
74
108
  * @default 2
@@ -86,7 +120,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
86
120
  initialScrollIndex?: number | {
87
121
  index: number;
88
122
  viewOffset?: number | undefined;
89
- viewPosition?: number | undefined;
90
123
  };
91
124
  /**
92
125
  * Component to render between items, receiving the leading item as prop.
@@ -163,6 +196,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
163
196
  * Function to call when the user pulls to refresh.
164
197
  */
165
198
  onRefresh?: () => void;
199
+ onScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
166
200
  /**
167
201
  * Called when scrolling reaches the start within onStartReachedThreshold.
168
202
  */
@@ -177,7 +211,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
177
211
  /**
178
212
  * Called when the viewability of items changes.
179
213
  */
180
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
214
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT> | undefined;
181
215
  /**
182
216
  * Offset in pixels for the refresh indicator.
183
217
  * @default 0
@@ -197,14 +231,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
197
231
  * @default false
198
232
  */
199
233
  refreshing?: boolean;
200
- /**
201
- * Function or React component to render each item in the list.
202
- * Can be either:
203
- * - A function: (props: LegendListRenderItemProps<ItemT>) => ReactNode
204
- * - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
205
- * @required
206
- */
207
- renderItem?: ((props: LegendListRenderItemProps<ItemT>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT>>;
208
234
  /**
209
235
  * Render custom ScrollView component.
210
236
  * @default (props) => <ScrollView {...props} />
@@ -223,7 +249,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
223
249
  /**
224
250
  * Pairs of viewability configs and their callbacks for tracking visibility.
225
251
  */
226
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
252
+ viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs<ItemT> | undefined;
227
253
  /**
228
254
  * If true, delays rendering until initial layout is complete.
229
255
  * @default false
@@ -233,7 +259,18 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
233
259
  elapsedTimeInMs: number;
234
260
  }) => void;
235
261
  snapToIndices?: number[];
236
- };
262
+ /**
263
+ * Array of child indices determining which children get docked to the top of the screen when scrolling.
264
+ * For example, passing stickyIndices={[0]} will cause the first child to be fixed to the top of the scroll view.
265
+ * Not supported in conjunction with horizontal={true}.
266
+ * @default undefined
267
+ */
268
+ stickyIndices?: number[];
269
+ getItemType?: (item: ItemT, index: number) => TItemType;
270
+ getFixedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
271
+ itemsAreEqual?: (itemPrevious: ItemT, item: ItemT, index: number, data: readonly ItemT[]) => boolean;
272
+ }
273
+ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof ScrollView> | ComponentProps<typeof Animated.ScrollView> | ComponentProps<typeof Animated$1.ScrollView>, TItemType extends string | undefined = string | undefined> = BaseScrollViewProps<TScrollView> & LegendListSpecificProps<ItemT, TItemType> & (DataModeProps<ItemT, TItemType> | ChildrenModeProps);
237
274
  interface MaintainScrollAtEndOptions {
238
275
  onLayout?: boolean;
239
276
  onItemLayout?: boolean;
@@ -244,14 +281,14 @@ interface ColumnWrapperStyle {
244
281
  gap?: number;
245
282
  columnGap?: number;
246
283
  }
247
- type LegendListProps<ItemT> = LegendListPropsBase<ItemT, Omit<ComponentProps<typeof ScrollView>, "scrollEventThrottle">>;
284
+ type LegendListProps<ItemT = any> = LegendListPropsBase<ItemT, ComponentProps<typeof ScrollView>>;
248
285
  interface InternalState {
249
286
  positions: Map<string, number>;
250
287
  columns: Map<string, number>;
251
288
  sizes: Map<string, number>;
252
289
  sizesKnown: Map<string, number>;
253
290
  containerItemKeys: Set<string>;
254
- pendingAdjust: number;
291
+ containerItemTypes: Map<number, string>;
255
292
  isStartReached: boolean;
256
293
  isEndReached: boolean;
257
294
  isAtEnd: boolean;
@@ -279,7 +316,7 @@ interface InternalState {
279
316
  nativeMarginTop: number;
280
317
  indexByKey: Map<string, number>;
281
318
  idCache: Map<number, string>;
282
- viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
319
+ viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs<any> | undefined;
283
320
  scrollHistory: Array<{
284
321
  scroll: number;
285
322
  time: number;
@@ -308,65 +345,57 @@ interface InternalState {
308
345
  animated?: boolean;
309
346
  } | undefined;
310
347
  needsOtherAxisSize?: boolean;
348
+ positionRange: {
349
+ start: number;
350
+ end: number;
351
+ valid: boolean;
352
+ };
311
353
  averageSizes: Record<string, {
312
354
  num: number;
313
355
  avg: number;
314
356
  }>;
315
357
  refScroller: React.RefObject<ScrollView>;
316
358
  loadStartTime: number;
317
- initialScroll: ScrollIndexWithOffsetPosition | undefined;
359
+ initialScroll: ScrollIndexWithOffset | undefined;
318
360
  lastLayout: LayoutRectangle | undefined;
319
- queuedItemSizeUpdates: {
320
- itemKey: string;
321
- sizeObj: {
322
- width: number;
323
- height: number;
324
- };
325
- }[];
326
- queuedItemSizeUpdatesWaiting?: boolean;
327
361
  timeoutSetPaddingTop?: any;
362
+ activeStickyIndex: number | undefined;
363
+ stickyContainers: Map<number, number>;
364
+ stickyContainerPool: Set<number>;
365
+ scrollProcessingEnabled: boolean;
328
366
  props: {
329
367
  alignItemsAtEnd: boolean;
330
368
  data: readonly any[];
331
369
  estimatedItemSize: number | undefined;
332
- getEstimatedItemSize: ((index: number, item: any) => number) | undefined;
370
+ getEstimatedItemSize: LegendListProps["getEstimatedItemSize"];
371
+ getFixedItemSize: LegendListProps["getFixedItemSize"];
372
+ getItemType: LegendListProps["getItemType"];
333
373
  horizontal: boolean;
334
- keyExtractor: ((item: any, index: number) => string) | undefined;
374
+ keyExtractor: LegendListProps["keyExtractor"];
335
375
  maintainScrollAtEnd: boolean | MaintainScrollAtEndOptions;
336
376
  maintainScrollAtEndThreshold: number | undefined;
337
377
  maintainVisibleContentPosition: boolean;
338
- onEndReached: (((info: {
339
- distanceFromEnd: number;
340
- }) => void) | null | undefined) | undefined;
378
+ onEndReached: LegendListProps["onEndReached"];
341
379
  onEndReachedThreshold: number | null | undefined;
342
- onItemSizeChanged: ((info: {
343
- size: number;
344
- previous: number;
345
- index: number;
346
- itemKey: string;
347
- itemData: any;
348
- }) => void) | undefined;
349
- onLoad: ((info: {
350
- elapsedTimeInMs: number;
351
- }) => void) | undefined;
352
- onScroll: ((event: NativeSyntheticEvent<NativeScrollEvent>) => void) | undefined;
353
- onStartReached: (((info: {
354
- distanceFromStart: number;
355
- }) => void) | null | undefined) | undefined;
380
+ onItemSizeChanged: LegendListProps["onItemSizeChanged"];
381
+ onLoad: LegendListProps["onLoad"];
382
+ onScroll: LegendListProps["onScroll"];
383
+ onStartReached: LegendListProps["onStartReached"];
356
384
  onStartReachedThreshold: number | null | undefined;
385
+ recycleItems: boolean;
357
386
  suggestEstimatedItemSize: boolean;
358
387
  stylePaddingBottom: number | undefined;
359
- renderItem: ((props: LegendListRenderItemProps<any>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<any>>;
360
- initialScroll: {
361
- index: number;
362
- viewOffset?: number;
363
- viewPosition?: number;
364
- } | undefined;
388
+ renderItem: LegendListProps["renderItem"];
389
+ initialScroll: ScrollIndexWithOffset | undefined;
365
390
  scrollBuffer: number;
366
391
  numColumns: number;
367
392
  initialContainerPoolRatio: number;
368
393
  stylePaddingTop: number | undefined;
369
394
  snapToIndices: number[] | undefined;
395
+ stickyIndicesSet: Set<number>;
396
+ stickyIndicesArr: number[];
397
+ itemsAreEqual: LegendListProps["itemsAreEqual"];
398
+ enableAverages: boolean;
370
399
  };
371
400
  }
372
401
  interface ViewableRange<T> {
@@ -376,24 +405,28 @@ interface ViewableRange<T> {
376
405
  end: number;
377
406
  items: T[];
378
407
  }
379
- interface LegendListRenderItemProps<ItemT> {
408
+ interface LegendListRenderItemProps<ItemT, TItemType extends string | number | undefined = string | number | undefined> {
380
409
  item: ItemT;
410
+ type: TItemType;
381
411
  index: number;
412
+ data: readonly ItemT[];
382
413
  extraData: any;
383
414
  }
384
415
  type ScrollState = {
385
416
  contentLength: number;
417
+ data: readonly any[];
386
418
  end: number;
387
419
  endBuffered: number;
388
420
  isAtEnd: boolean;
389
421
  isAtStart: boolean;
422
+ positionAtIndex: (index: number) => number | undefined;
390
423
  positions: Map<string, number>;
391
424
  scroll: number;
392
425
  scrollLength: number;
426
+ sizeAtIndex: (index: number) => number | undefined;
427
+ sizes: Map<string, number>;
393
428
  start: number;
394
429
  startBuffered: number;
395
- sizes: Map<string, number>;
396
- sizeAtIndex: (index: number) => number;
397
430
  };
398
431
  type LegendListRef = {
399
432
  /**
@@ -440,9 +473,11 @@ type LegendListRef = {
440
473
  * Scrolls to the end of the list.
441
474
  * @param options - Options for scrolling.
442
475
  * @param options.animated - If true, animates the scroll. Default: true.
476
+ * @param options.viewOffset - Offset from the target position.
443
477
  */
444
478
  scrollToEnd(options?: {
445
479
  animated?: boolean | undefined;
480
+ viewOffset?: number | undefined;
446
481
  }): void;
447
482
  /**
448
483
  * Scrolls to a specific index in the list.
@@ -488,6 +523,11 @@ type LegendListRef = {
488
523
  * @param animated - If true, uses Animated to animate the change.
489
524
  */
490
525
  setVisibleContentAnchorOffset(value: number | ((value: number) => number)): void;
526
+ /**
527
+ * Sets whether scroll processing is enabled.
528
+ * @param enabled - If true, scroll processing is enabled.
529
+ */
530
+ setScrollProcessingEnabled(enabled: boolean): void;
491
531
  };
492
532
  interface ViewToken<ItemT = any> {
493
533
  item: ItemT;
@@ -503,14 +543,14 @@ interface ViewAmountToken<ItemT = any> extends ViewToken<ItemT> {
503
543
  percentOfScroller: number;
504
544
  scrollSize: number;
505
545
  }
506
- interface ViewabilityConfigCallbackPair {
546
+ interface ViewabilityConfigCallbackPair<ItemT> {
507
547
  viewabilityConfig: ViewabilityConfig;
508
- onViewableItemsChanged?: OnViewableItemsChanged;
548
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT>;
509
549
  }
510
- type ViewabilityConfigCallbackPairs = ViewabilityConfigCallbackPair[];
511
- type OnViewableItemsChanged = ((info: {
512
- viewableItems: Array<ViewToken>;
513
- changed: Array<ViewToken>;
550
+ type ViewabilityConfigCallbackPairs<ItemT> = ViewabilityConfigCallbackPair<ItemT>[];
551
+ type OnViewableItemsChanged<ItemT> = ((info: {
552
+ viewableItems: Array<ViewToken<ItemT>>;
553
+ changed: Array<ViewToken<ItemT>>;
514
554
  }) => void) | null;
515
555
  interface ViewabilityConfig {
516
556
  /**
@@ -541,8 +581,8 @@ interface ViewabilityConfig {
541
581
  */
542
582
  waitForInteraction?: boolean | undefined;
543
583
  }
544
- type ViewabilityCallback = (viewToken: ViewToken) => void;
545
- type ViewabilityAmountCallback = (viewToken: ViewAmountToken) => void;
584
+ type ViewabilityCallback<ItemT = any> = (viewToken: ViewToken<ItemT>) => void;
585
+ type ViewabilityAmountCallback<ItemT = any> = (viewToken: ViewAmountToken<ItemT>) => void;
546
586
  interface LegendListRecyclingState<T> {
547
587
  item: T;
548
588
  prevItem: T | undefined;
@@ -555,11 +595,13 @@ type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqua
555
595
  displayName?: string;
556
596
  };
557
597
  declare const typedMemo: TypedMemo;
558
- type ScrollIndexWithOffsetPosition = {
598
+ interface ScrollIndexWithOffset {
559
599
  index: number;
560
- viewOffset?: number;
561
- viewPosition?: number;
562
- };
600
+ viewOffset: number;
601
+ }
602
+ interface ScrollIndexWithOffsetPosition extends ScrollIndexWithOffset {
603
+ viewPosition: number;
604
+ }
563
605
  type GetRenderedItemResult<ItemT> = {
564
606
  index: number;
565
607
  item: ItemT;
@@ -567,270 +609,12 @@ type GetRenderedItemResult<ItemT> = {
567
609
  };
568
610
  type GetRenderedItem = (key: string) => GetRenderedItemResult<any> | null;
569
611
 
570
- interface LazyLegendListProps<ItemT, ListT> extends Omit<LegendListProps<ItemT>, "data" | "keyExtractor" | "renderItem"> {
571
- children?: React$1.ReactNode | undefined;
572
- LegendList?: ListT;
573
- }
574
- declare const LazyLegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
575
- alignItemsAtEnd?: boolean;
576
- columnWrapperStyle?: ColumnWrapperStyle;
577
- data: readonly T[];
578
- drawDistance?: number;
579
- estimatedItemSize?: number;
580
- estimatedListSize?: {
581
- height: number;
582
- width: number;
583
- };
584
- extraData?: any;
585
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
586
- initialContainerPoolRatio?: number | undefined;
587
- initialScrollOffset?: number;
588
- initialScrollIndex?: number | {
589
- index: number;
590
- viewOffset?: number | undefined;
591
- viewPosition?: number | undefined;
592
- };
593
- ItemSeparatorComponent?: React$1.ComponentType<{
594
- leadingItem: T;
595
- }> | undefined;
596
- keyExtractor?: ((item: T, index: number) => string) | undefined;
597
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
598
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
599
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
600
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
601
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
602
- maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
603
- maintainScrollAtEndThreshold?: number;
604
- maintainVisibleContentPosition?: boolean;
605
- numColumns?: number;
606
- onEndReached?: ((info: {
607
- distanceFromEnd: number;
608
- }) => void) | null | undefined;
609
- onEndReachedThreshold?: number | null | undefined;
610
- onItemSizeChanged?: ((info: {
611
- size: number;
612
- previous: number;
613
- index: number;
614
- itemKey: string;
615
- itemData: T;
616
- }) => void) | undefined;
617
- onRefresh?: () => void;
618
- onStartReached?: ((info: {
619
- distanceFromStart: number;
620
- }) => void) | null | undefined;
621
- onStartReachedThreshold?: number | null | undefined;
622
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
623
- progressViewOffset?: number;
624
- recycleItems?: boolean;
625
- refScrollView?: React$1.Ref<react_native.ScrollView>;
626
- refreshing?: boolean;
627
- renderItem?: ((props: LegendListRenderItemProps<T>) => React$1.ReactNode) | React$1.ComponentType<LegendListRenderItemProps<T>> | undefined;
628
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
629
- suggestEstimatedItemSize?: boolean;
630
- viewabilityConfig?: ViewabilityConfig;
631
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
632
- waitForInitialLayout?: boolean;
633
- onLoad?: (info: {
634
- elapsedTimeInMs: number;
635
- }) => void;
636
- snapToIndices?: number[];
637
- } & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
638
- alignItemsAtEnd?: boolean;
639
- columnWrapperStyle?: ColumnWrapperStyle;
640
- data: readonly T[];
641
- drawDistance?: number;
642
- estimatedItemSize?: number;
643
- estimatedListSize?: {
644
- height: number;
645
- width: number;
646
- };
647
- extraData?: any;
648
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
649
- initialContainerPoolRatio?: number | undefined;
650
- initialScrollOffset?: number;
651
- initialScrollIndex?: number | {
652
- index: number;
653
- viewOffset?: number | undefined;
654
- viewPosition?: number | undefined;
655
- };
656
- ItemSeparatorComponent?: React$1.ComponentType<{
657
- leadingItem: T;
658
- }> | undefined;
659
- keyExtractor?: ((item: T, index: number) => string) | undefined;
660
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
661
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
662
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
663
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
664
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
665
- maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
666
- maintainScrollAtEndThreshold?: number;
667
- maintainVisibleContentPosition?: boolean;
668
- numColumns?: number;
669
- onEndReached?: ((info: {
670
- distanceFromEnd: number;
671
- }) => void) | null | undefined;
672
- onEndReachedThreshold?: number | null | undefined;
673
- onItemSizeChanged?: ((info: {
674
- size: number;
675
- previous: number;
676
- index: number;
677
- itemKey: string;
678
- itemData: T;
679
- }) => void) | undefined;
680
- onRefresh?: () => void;
681
- onStartReached?: ((info: {
682
- distanceFromStart: number;
683
- }) => void) | null | undefined;
684
- onStartReachedThreshold?: number | null | undefined;
685
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
686
- progressViewOffset?: number;
687
- recycleItems?: boolean;
688
- refScrollView?: React$1.Ref<react_native.ScrollView>;
689
- refreshing?: boolean;
690
- renderItem?: ((props: LegendListRenderItemProps<T>) => React$1.ReactNode) | React$1.ComponentType<LegendListRenderItemProps<T>> | undefined;
691
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
692
- suggestEstimatedItemSize?: boolean;
693
- viewabilityConfig?: ViewabilityConfig;
694
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
695
- waitForInitialLayout?: boolean;
696
- onLoad?: (info: {
697
- elapsedTimeInMs: number;
698
- }) => void;
699
- snapToIndices?: number[];
700
- } & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode)> | (<ItemT_1>(props: _legendapp_list_reanimated.AnimatedLegendListProps<ItemT_1> & {
701
- ref?: React$1.Ref<LegendListRef>;
702
- }) => React$1.ReactElement | null) = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
703
- alignItemsAtEnd?: boolean;
704
- columnWrapperStyle?: ColumnWrapperStyle;
705
- data: readonly T[];
706
- drawDistance?: number;
707
- estimatedItemSize?: number;
708
- estimatedListSize?: {
709
- height: number;
710
- width: number;
711
- };
712
- extraData?: any;
713
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
714
- initialContainerPoolRatio?: number | undefined;
715
- initialScrollOffset?: number;
716
- initialScrollIndex?: number | {
717
- index: number;
718
- viewOffset?: number | undefined;
719
- viewPosition?: number | undefined;
720
- };
721
- ItemSeparatorComponent?: React$1.ComponentType<{
722
- leadingItem: T;
723
- }> | undefined;
724
- keyExtractor?: ((item: T, index: number) => string) | undefined;
725
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
726
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
727
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
728
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
729
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
730
- maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
731
- maintainScrollAtEndThreshold?: number;
732
- maintainVisibleContentPosition?: boolean;
733
- numColumns?: number;
734
- onEndReached?: ((info: {
735
- distanceFromEnd: number;
736
- }) => void) | null | undefined;
737
- onEndReachedThreshold?: number | null | undefined;
738
- onItemSizeChanged?: ((info: {
739
- size: number;
740
- previous: number;
741
- index: number;
742
- itemKey: string;
743
- itemData: T;
744
- }) => void) | undefined;
745
- onRefresh?: () => void;
746
- onStartReached?: ((info: {
747
- distanceFromStart: number;
748
- }) => void) | null | undefined;
749
- onStartReachedThreshold?: number | null | undefined;
750
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
751
- progressViewOffset?: number;
752
- recycleItems?: boolean;
753
- refScrollView?: React$1.Ref<react_native.ScrollView>;
754
- refreshing?: boolean;
755
- renderItem?: ((props: LegendListRenderItemProps<T>) => React$1.ReactNode) | React$1.ComponentType<LegendListRenderItemProps<T>> | undefined;
756
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
757
- suggestEstimatedItemSize?: boolean;
758
- viewabilityConfig?: ViewabilityConfig;
759
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
760
- waitForInitialLayout?: boolean;
761
- onLoad?: (info: {
762
- elapsedTimeInMs: number;
763
- }) => void;
764
- snapToIndices?: number[];
765
- } & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode>(props: LazyLegendListProps<ItemT, ListT> & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode;
766
-
767
- declare const LegendList: <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
768
- alignItemsAtEnd?: boolean;
769
- columnWrapperStyle?: ColumnWrapperStyle;
770
- data: readonly T[];
771
- drawDistance?: number;
772
- estimatedItemSize?: number;
773
- estimatedListSize?: {
774
- height: number;
775
- width: number;
776
- };
777
- extraData?: any;
778
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
779
- initialContainerPoolRatio?: number | undefined;
780
- initialScrollOffset?: number;
781
- initialScrollIndex?: number | {
782
- index: number;
783
- viewOffset?: number | undefined;
784
- viewPosition?: number | undefined;
785
- };
786
- ItemSeparatorComponent?: React$1.ComponentType<{
787
- leadingItem: T;
788
- }> | undefined;
789
- keyExtractor?: ((item: T, index: number) => string) | undefined;
790
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
791
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
792
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
793
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
794
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
795
- maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
796
- maintainScrollAtEndThreshold?: number;
797
- maintainVisibleContentPosition?: boolean;
798
- numColumns?: number;
799
- onEndReached?: ((info: {
800
- distanceFromEnd: number;
801
- }) => void) | null | undefined;
802
- onEndReachedThreshold?: number | null | undefined;
803
- onItemSizeChanged?: ((info: {
804
- size: number;
805
- previous: number;
806
- index: number;
807
- itemKey: string;
808
- itemData: T;
809
- }) => void) | undefined;
810
- onRefresh?: () => void;
811
- onStartReached?: ((info: {
812
- distanceFromStart: number;
813
- }) => void) | null | undefined;
814
- onStartReachedThreshold?: number | null | undefined;
815
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
816
- progressViewOffset?: number;
817
- recycleItems?: boolean;
818
- refScrollView?: React$1.Ref<ScrollView>;
819
- refreshing?: boolean;
820
- renderItem?: ((props: LegendListRenderItemProps<T>) => React$1.ReactNode) | React$1.ComponentType<LegendListRenderItemProps<T>> | undefined;
821
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
822
- suggestEstimatedItemSize?: boolean;
823
- viewabilityConfig?: ViewabilityConfig;
824
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
825
- waitForInitialLayout?: boolean;
826
- onLoad?: (info: {
827
- elapsedTimeInMs: number;
828
- }) => void;
829
- snapToIndices?: number[];
830
- } & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode;
612
+ declare const LegendList: (<T>(props: LegendListProps<T> & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode) & {
613
+ displayName?: string;
614
+ };
831
615
 
832
- declare function useViewability(callback: ViewabilityCallback, configId?: string): void;
833
- declare function useViewabilityAmount(callback: ViewabilityAmountCallback): void;
616
+ declare function useViewability<ItemT = any>(callback: ViewabilityCallback<ItemT>, configId?: string): void;
617
+ declare function useViewabilityAmount<ItemT = any>(callback: ViewabilityAmountCallback<ItemT>): void;
834
618
  declare function useRecyclingEffect(effect: (info: LegendListRecyclingState<unknown>) => void | (() => void)): void;
835
619
  declare function useRecyclingState<ItemT>(valueOrFun: ((info: LegendListRecyclingState<ItemT>) => ItemT) | ItemT): readonly [ItemT | null, Dispatch<SetStateAction<ItemT>>];
836
620
  declare function useIsLastItem(): boolean;
@@ -838,5 +622,6 @@ declare function useListScrollSize(): {
838
622
  width: number;
839
623
  height: number;
840
624
  };
625
+ declare function useSyncLayout(): () => void;
841
626
 
842
- export { type ColumnWrapperStyle, type GetRenderedItem, type GetRenderedItemResult, type InternalState, LazyLegendList, type LazyLegendListProps, LegendList, type LegendListProps, type LegendListPropsBase, type LegendListRecyclingState, type LegendListRef, type LegendListRenderItemProps, type MaintainScrollAtEndOptions, type OnViewableItemsChanged, type ScrollIndexWithOffsetPosition, type ScrollState, type TypedForwardRef, type TypedMemo, type ViewAmountToken, type ViewToken, type ViewabilityAmountCallback, type ViewabilityCallback, type ViewabilityConfig, type ViewabilityConfigCallbackPair, type ViewabilityConfigCallbackPairs, type ViewableRange, typedForwardRef, typedMemo, useIsLastItem, useListScrollSize, useRecyclingEffect, useRecyclingState, useViewability, useViewabilityAmount };
627
+ export { type ColumnWrapperStyle, type GetRenderedItem, type GetRenderedItemResult, type InternalState, LegendList, type LegendListProps, type LegendListPropsBase, type LegendListRecyclingState, type LegendListRef, type LegendListRenderItemProps, type MaintainScrollAtEndOptions, type OnViewableItemsChanged, type ScrollIndexWithOffset, type ScrollIndexWithOffsetPosition, type ScrollState, type TypedForwardRef, type TypedMemo, type ViewAmountToken, type ViewToken, type ViewabilityAmountCallback, type ViewabilityCallback, type ViewabilityConfig, type ViewabilityConfigCallbackPair, type ViewabilityConfigCallbackPairs, type ViewableRange, typedForwardRef, typedMemo, useIsLastItem, useListScrollSize, useRecyclingEffect, useRecyclingState, useSyncLayout, useViewability, useViewabilityAmount };