@legendapp/list 2.0.0-next.9 → 2.1.0-next.0

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
@@ -1,20 +1,29 @@
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, ScrollView, Animated, 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 AnimatedValue = number;
7
+
8
+ 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" | "lastPositionUpdate";
9
9
  interface StateContext {
10
+ internalState: InternalState | undefined;
10
11
  listeners: Map<ListenerType, Set<(value: any) => void>>;
11
12
  values: Map<ListenerType, any>;
12
13
  mapViewabilityCallbacks: Map<string, ViewabilityCallback>;
13
14
  mapViewabilityValues: Map<string, ViewToken>;
14
15
  mapViewabilityAmountCallbacks: Map<number, ViewabilityAmountCallback>;
15
16
  mapViewabilityAmountValues: Map<number, ViewAmountToken>;
17
+ mapViewabilityConfigStates: Map<string, {
18
+ viewableItems: ViewToken[];
19
+ start: number;
20
+ end: number;
21
+ previousStart: number;
22
+ previousEnd: number;
23
+ }>;
16
24
  columnWrapperStyle: ColumnWrapperStyle | undefined;
17
25
  viewRefs: Map<number, React$1.RefObject<View>>;
26
+ animatedScrollY: AnimatedValue;
18
27
  }
19
28
 
20
29
  declare class ScrollAdjustHandler {
@@ -24,23 +33,51 @@ declare class ScrollAdjustHandler {
24
33
  constructor(ctx: StateContext);
25
34
  requestAdjust(add: number): void;
26
35
  setMounted(): void;
36
+ getAdjust(): number;
27
37
  }
28
38
 
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"> & {
39
+ type BaseScrollViewProps<TScrollView> = Omit<TScrollView, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children" | "onScroll">;
40
+ interface DataModeProps<ItemT, TItemType extends string | undefined> {
41
+ /**
42
+ * Array of items to render in the list.
43
+ * @required when using data mode
44
+ */
45
+ data: ReadonlyArray<ItemT>;
46
+ /**
47
+ * Function or React component to render each item in the list.
48
+ * Can be either:
49
+ * - A function: (props: LegendListRenderItemProps<ItemT>) => ReactNode
50
+ * - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
51
+ * @required when using data mode
52
+ */
53
+ renderItem: ((props: LegendListRenderItemProps<ItemT, TItemType>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT, TItemType>>;
54
+ children?: never;
55
+ }
56
+ interface ChildrenModeProps {
57
+ /**
58
+ * React children elements to render as list items.
59
+ * Each child will be treated as an individual list item.
60
+ * @required when using children mode
61
+ */
62
+ children: ReactNode;
63
+ data?: never;
64
+ renderItem?: never;
65
+ }
66
+ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
30
67
  /**
31
68
  * If true, aligns items at the end of the list.
32
69
  * @default false
33
70
  */
34
71
  alignItemsAtEnd?: boolean;
35
72
  /**
36
- * Style applied to each column's wrapper view.
73
+ * If true, enables using average sizes for performance optimization.
74
+ * @default true
37
75
  */
38
- columnWrapperStyle?: ColumnWrapperStyle;
76
+ enableAverages?: boolean;
39
77
  /**
40
- * Array of items to render in the list.
41
- * @required
78
+ * Style applied to each column's wrapper view.
42
79
  */
43
- data: ReadonlyArray<ItemT>;
80
+ columnWrapperStyle?: ColumnWrapperStyle;
44
81
  /**
45
82
  * Distance in pixels to pre-render items ahead of the visible area.
46
83
  * @default 250
@@ -68,7 +105,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
68
105
  * In case you have distinct item sizes, you can provide a function to get the size of an item.
69
106
  * Use instead of FlatList's getItemLayout or FlashList overrideItemLayout if you want to have accurate initialScrollOffset, you should provide this function
70
107
  */
71
- getEstimatedItemSize?: (index: number, item: ItemT) => number;
108
+ getEstimatedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
72
109
  /**
73
110
  * Ratio of initial container pool size to data length (e.g., 0.5 for half).
74
111
  * @default 2
@@ -86,7 +123,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
86
123
  initialScrollIndex?: number | {
87
124
  index: number;
88
125
  viewOffset?: number | undefined;
89
- viewPosition?: number | undefined;
90
126
  };
91
127
  /**
92
128
  * Component to render between items, receiving the leading item as prop.
@@ -163,6 +199,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
163
199
  * Function to call when the user pulls to refresh.
164
200
  */
165
201
  onRefresh?: () => void;
202
+ onScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
166
203
  /**
167
204
  * Called when scrolling reaches the start within onStartReachedThreshold.
168
205
  */
@@ -177,7 +214,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
177
214
  /**
178
215
  * Called when the viewability of items changes.
179
216
  */
180
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
217
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT> | undefined;
181
218
  /**
182
219
  * Offset in pixels for the refresh indicator.
183
220
  * @default 0
@@ -197,14 +234,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
197
234
  * @default false
198
235
  */
199
236
  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
237
  /**
209
238
  * Render custom ScrollView component.
210
239
  * @default (props) => <ScrollView {...props} />
@@ -223,7 +252,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
223
252
  /**
224
253
  * Pairs of viewability configs and their callbacks for tracking visibility.
225
254
  */
226
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
255
+ viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs<ItemT> | undefined;
227
256
  /**
228
257
  * If true, delays rendering until initial layout is complete.
229
258
  * @default false
@@ -233,7 +262,18 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
233
262
  elapsedTimeInMs: number;
234
263
  }) => void;
235
264
  snapToIndices?: number[];
236
- };
265
+ /**
266
+ * Array of child indices determining which children get docked to the top of the screen when scrolling.
267
+ * For example, passing stickyIndices={[0]} will cause the first child to be fixed to the top of the scroll view.
268
+ * Not supported in conjunction with horizontal={true}.
269
+ * @default undefined
270
+ */
271
+ stickyIndices?: number[];
272
+ getItemType?: (item: ItemT, index: number) => TItemType;
273
+ getFixedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
274
+ itemsAreEqual?: (itemPrevious: ItemT, item: ItemT, index: number, data: readonly ItemT[]) => boolean;
275
+ }
276
+ 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
277
  interface MaintainScrollAtEndOptions {
238
278
  onLayout?: boolean;
239
279
  onItemLayout?: boolean;
@@ -244,14 +284,14 @@ interface ColumnWrapperStyle {
244
284
  gap?: number;
245
285
  columnGap?: number;
246
286
  }
247
- type LegendListProps<ItemT> = LegendListPropsBase<ItemT, Omit<ComponentProps<typeof ScrollView>, "scrollEventThrottle">>;
287
+ type LegendListProps<ItemT = any> = LegendListPropsBase<ItemT, ComponentProps<typeof ScrollView>>;
248
288
  interface InternalState {
249
289
  positions: Map<string, number>;
250
290
  columns: Map<string, number>;
251
291
  sizes: Map<string, number>;
252
292
  sizesKnown: Map<string, number>;
253
293
  containerItemKeys: Set<string>;
254
- pendingAdjust: number;
294
+ containerItemTypes: Map<number, string>;
255
295
  isStartReached: boolean;
256
296
  isEndReached: boolean;
257
297
  isAtEnd: boolean;
@@ -279,7 +319,7 @@ interface InternalState {
279
319
  nativeMarginTop: number;
280
320
  indexByKey: Map<string, number>;
281
321
  idCache: Map<number, string>;
282
- viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
322
+ viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs<any> | undefined;
283
323
  scrollHistory: Array<{
284
324
  scroll: number;
285
325
  time: number;
@@ -314,59 +354,47 @@ interface InternalState {
314
354
  }>;
315
355
  refScroller: React.RefObject<ScrollView>;
316
356
  loadStartTime: number;
317
- initialScroll: ScrollIndexWithOffsetPosition | undefined;
357
+ initialScroll: ScrollIndexWithOffset | undefined;
318
358
  lastLayout: LayoutRectangle | undefined;
319
- queuedItemSizeUpdates: {
320
- itemKey: string;
321
- sizeObj: {
322
- width: number;
323
- height: number;
324
- };
325
- }[];
326
- queuedItemSizeUpdatesWaiting?: boolean;
327
359
  timeoutSetPaddingTop?: any;
360
+ activeStickyIndex: number | undefined;
361
+ stickyContainers: Map<number, number>;
362
+ stickyContainerPool: Set<number>;
363
+ scrollProcessingEnabled: boolean;
364
+ onScrollRafScheduled?: boolean;
328
365
  props: {
329
366
  alignItemsAtEnd: boolean;
330
367
  data: readonly any[];
331
368
  estimatedItemSize: number | undefined;
332
- getEstimatedItemSize: ((index: number, item: any) => number) | undefined;
369
+ getEstimatedItemSize: LegendListProps["getEstimatedItemSize"];
370
+ getFixedItemSize: LegendListProps["getFixedItemSize"];
371
+ getItemType: LegendListProps["getItemType"];
333
372
  horizontal: boolean;
334
- keyExtractor: ((item: any, index: number) => string) | undefined;
373
+ keyExtractor: LegendListProps["keyExtractor"];
335
374
  maintainScrollAtEnd: boolean | MaintainScrollAtEndOptions;
336
375
  maintainScrollAtEndThreshold: number | undefined;
337
376
  maintainVisibleContentPosition: boolean;
338
- onEndReached: (((info: {
339
- distanceFromEnd: number;
340
- }) => void) | null | undefined) | undefined;
377
+ onEndReached: LegendListProps["onEndReached"];
341
378
  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;
379
+ onItemSizeChanged: LegendListProps["onItemSizeChanged"];
380
+ onLoad: LegendListProps["onLoad"];
381
+ onScroll: LegendListProps["onScroll"];
382
+ onStartReached: LegendListProps["onStartReached"];
356
383
  onStartReachedThreshold: number | null | undefined;
384
+ recycleItems: boolean;
357
385
  suggestEstimatedItemSize: boolean;
358
386
  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;
387
+ renderItem: LegendListProps["renderItem"];
388
+ initialScroll: ScrollIndexWithOffset | undefined;
365
389
  scrollBuffer: number;
366
390
  numColumns: number;
367
391
  initialContainerPoolRatio: number;
368
392
  stylePaddingTop: number | undefined;
369
393
  snapToIndices: number[] | undefined;
394
+ stickyIndicesSet: Set<number>;
395
+ stickyIndicesArr: number[];
396
+ itemsAreEqual: LegendListProps["itemsAreEqual"];
397
+ enableAverages: boolean;
370
398
  };
371
399
  }
372
400
  interface ViewableRange<T> {
@@ -376,24 +404,28 @@ interface ViewableRange<T> {
376
404
  end: number;
377
405
  items: T[];
378
406
  }
379
- interface LegendListRenderItemProps<ItemT> {
407
+ interface LegendListRenderItemProps<ItemT, TItemType extends string | number | undefined = string | number | undefined> {
380
408
  item: ItemT;
409
+ type: TItemType;
381
410
  index: number;
411
+ data: readonly ItemT[];
382
412
  extraData: any;
383
413
  }
384
414
  type ScrollState = {
385
415
  contentLength: number;
416
+ data: readonly any[];
386
417
  end: number;
387
418
  endBuffered: number;
388
419
  isAtEnd: boolean;
389
420
  isAtStart: boolean;
421
+ positionAtIndex: (index: number) => number;
390
422
  positions: Map<string, number>;
391
423
  scroll: number;
392
424
  scrollLength: number;
425
+ sizeAtIndex: (index: number) => number;
426
+ sizes: Map<string, number>;
393
427
  start: number;
394
428
  startBuffered: number;
395
- sizes: Map<string, number>;
396
- sizeAtIndex: (index: number) => number;
397
429
  };
398
430
  type LegendListRef = {
399
431
  /**
@@ -440,9 +472,11 @@ type LegendListRef = {
440
472
  * Scrolls to the end of the list.
441
473
  * @param options - Options for scrolling.
442
474
  * @param options.animated - If true, animates the scroll. Default: true.
475
+ * @param options.viewOffset - Offset from the target position.
443
476
  */
444
477
  scrollToEnd(options?: {
445
478
  animated?: boolean | undefined;
479
+ viewOffset?: number | undefined;
446
480
  }): void;
447
481
  /**
448
482
  * Scrolls to a specific index in the list.
@@ -488,6 +522,11 @@ type LegendListRef = {
488
522
  * @param animated - If true, uses Animated to animate the change.
489
523
  */
490
524
  setVisibleContentAnchorOffset(value: number | ((value: number) => number)): void;
525
+ /**
526
+ * Sets whether scroll processing is enabled.
527
+ * @param enabled - If true, scroll processing is enabled.
528
+ */
529
+ setScrollProcessingEnabled(enabled: boolean): void;
491
530
  };
492
531
  interface ViewToken<ItemT = any> {
493
532
  item: ItemT;
@@ -503,14 +542,14 @@ interface ViewAmountToken<ItemT = any> extends ViewToken<ItemT> {
503
542
  percentOfScroller: number;
504
543
  scrollSize: number;
505
544
  }
506
- interface ViewabilityConfigCallbackPair {
545
+ interface ViewabilityConfigCallbackPair<ItemT> {
507
546
  viewabilityConfig: ViewabilityConfig;
508
- onViewableItemsChanged?: OnViewableItemsChanged;
547
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT>;
509
548
  }
510
- type ViewabilityConfigCallbackPairs = ViewabilityConfigCallbackPair[];
511
- type OnViewableItemsChanged = ((info: {
512
- viewableItems: Array<ViewToken>;
513
- changed: Array<ViewToken>;
549
+ type ViewabilityConfigCallbackPairs<ItemT> = ViewabilityConfigCallbackPair<ItemT>[];
550
+ type OnViewableItemsChanged<ItemT> = ((info: {
551
+ viewableItems: Array<ViewToken<ItemT>>;
552
+ changed: Array<ViewToken<ItemT>>;
514
553
  }) => void) | null;
515
554
  interface ViewabilityConfig {
516
555
  /**
@@ -541,8 +580,8 @@ interface ViewabilityConfig {
541
580
  */
542
581
  waitForInteraction?: boolean | undefined;
543
582
  }
544
- type ViewabilityCallback = (viewToken: ViewToken) => void;
545
- type ViewabilityAmountCallback = (viewToken: ViewAmountToken) => void;
583
+ type ViewabilityCallback<ItemT = any> = (viewToken: ViewToken<ItemT>) => void;
584
+ type ViewabilityAmountCallback<ItemT = any> = (viewToken: ViewAmountToken<ItemT>) => void;
546
585
  interface LegendListRecyclingState<T> {
547
586
  item: T;
548
587
  prevItem: T | undefined;
@@ -555,11 +594,13 @@ type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqua
555
594
  displayName?: string;
556
595
  };
557
596
  declare const typedMemo: TypedMemo;
558
- type ScrollIndexWithOffsetPosition = {
597
+ interface ScrollIndexWithOffset {
559
598
  index: number;
560
- viewOffset?: number;
561
- viewPosition?: number;
562
- };
599
+ viewOffset: number;
600
+ }
601
+ interface ScrollIndexWithOffsetPosition extends ScrollIndexWithOffset {
602
+ viewPosition: number;
603
+ }
563
604
  type GetRenderedItemResult<ItemT> = {
564
605
  index: number;
565
606
  item: ItemT;
@@ -567,270 +608,12 @@ type GetRenderedItemResult<ItemT> = {
567
608
  };
568
609
  type GetRenderedItem = (key: string) => GetRenderedItemResult<any> | null;
569
610
 
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;
611
+ declare const LegendList: (<T>(props: LegendListProps<T> & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode) & {
612
+ displayName?: string;
613
+ };
831
614
 
832
- declare function useViewability(callback: ViewabilityCallback, configId?: string): void;
833
- declare function useViewabilityAmount(callback: ViewabilityAmountCallback): void;
615
+ declare function useViewability<ItemT = any>(callback: ViewabilityCallback<ItemT>, configId?: string): void;
616
+ declare function useViewabilityAmount<ItemT = any>(callback: ViewabilityAmountCallback<ItemT>): void;
834
617
  declare function useRecyclingEffect(effect: (info: LegendListRecyclingState<unknown>) => void | (() => void)): void;
835
618
  declare function useRecyclingState<ItemT>(valueOrFun: ((info: LegendListRecyclingState<ItemT>) => ItemT) | ItemT): readonly [ItemT | null, Dispatch<SetStateAction<ItemT>>];
836
619
  declare function useIsLastItem(): boolean;
@@ -838,5 +621,6 @@ declare function useListScrollSize(): {
838
621
  width: number;
839
622
  height: number;
840
623
  };
624
+ declare function useSyncLayout(): () => void;
841
625
 
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 };
626
+ 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 };