@legendapp/list 1.1.4 → 2.0.0-beta.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,29 +1,65 @@
1
1
  import * as React$1 from 'react';
2
2
  import { ComponentProps, ReactNode, Dispatch, SetStateAction } from 'react';
3
- import * as react_native from 'react-native';
4
- import { ScrollView, StyleProp, ViewStyle, ScrollViewProps, NativeSyntheticEvent, NativeScrollEvent, ScrollViewComponent, ScrollResponderMixin } from 'react-native';
5
- import Animated from 'react-native-reanimated';
6
- import * as _legendapp_list_reanimated from '@legendapp/list/reanimated';
7
- import * as _legendapp_list from '@legendapp/list';
8
- import { LegendListProps as LegendListProps$1, LegendListRenderItemProps as LegendListRenderItemProps$1, LegendListRef as LegendListRef$1 } from '@legendapp/list';
3
+ import { View, Animated, ScrollView, LayoutRectangle, ScrollViewComponent, ScrollResponderMixin, StyleProp, ViewStyle, ScrollViewProps } from 'react-native';
4
+ import Animated$1 from 'react-native-reanimated';
5
+
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";
7
+ interface StateContext {
8
+ listeners: Map<ListenerType, Set<(value: any) => void>>;
9
+ values: Map<ListenerType, any>;
10
+ mapViewabilityCallbacks: Map<string, ViewabilityCallback>;
11
+ mapViewabilityValues: Map<string, ViewToken>;
12
+ mapViewabilityAmountCallbacks: Map<number, ViewabilityAmountCallback>;
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
+ }>;
21
+ columnWrapperStyle: ColumnWrapperStyle | undefined;
22
+ viewRefs: Map<number, React$1.RefObject<View>>;
23
+ animatedScrollY: Animated.Value;
24
+ }
9
25
 
10
26
  declare class ScrollAdjustHandler {
11
- private ctx;
12
27
  private appliedAdjust;
13
- private busy;
14
28
  private context;
15
- private isPaused;
16
- private isDisabled;
17
- constructor(ctx: any);
18
- private doAjdust;
19
- requestAdjust(adjust: number, onAdjusted: (diff: number) => void): void;
20
- getAppliedAdjust(): number;
21
- pauseAdjust(): void;
22
- setDisableAdjust(disable: boolean): void;
23
- unPauseAdjust(): boolean;
29
+ private mounted;
30
+ constructor(ctx: StateContext);
31
+ requestAdjust(add: number): void;
32
+ setMounted(): void;
24
33
  }
25
34
 
26
- type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof ScrollView> | ComponentProps<typeof Animated.ScrollView>> = Omit<TScrollView, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
35
+ type BaseScrollViewProps<TScrollView> = Omit<TScrollView, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children">;
36
+ interface DataModeProps<ItemT, TItemType extends string | undefined> {
37
+ /**
38
+ * Array of items to render in the list.
39
+ * @required when using data mode
40
+ */
41
+ data: ReadonlyArray<ItemT>;
42
+ /**
43
+ * Function or React component to render each item in the list.
44
+ * Can be either:
45
+ * - A function: (props: LegendListRenderItemProps<ItemT>) => ReactNode
46
+ * - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
47
+ * @required when using data mode
48
+ */
49
+ renderItem: ((props: LegendListRenderItemProps<ItemT, TItemType>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT, TItemType>>;
50
+ children?: never;
51
+ }
52
+ interface ChildrenModeProps {
53
+ /**
54
+ * React children elements to render as list items.
55
+ * Each child will be treated as an individual list item.
56
+ * @required when using children mode
57
+ */
58
+ children: ReactNode;
59
+ data?: never;
60
+ renderItem?: never;
61
+ }
62
+ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
27
63
  /**
28
64
  * If true, aligns items at the end of the list.
29
65
  * @default false
@@ -33,11 +69,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
33
69
  * Style applied to each column's wrapper view.
34
70
  */
35
71
  columnWrapperStyle?: ColumnWrapperStyle;
36
- /**
37
- * Array of items to render in the list.
38
- * @required
39
- */
40
- data: ReadonlyArray<ItemT>;
41
72
  /**
42
73
  * Distance in pixels to pre-render items ahead of the visible area.
43
74
  * @default 250
@@ -65,7 +96,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
65
96
  * In case you have distinct item sizes, you can provide a function to get the size of an item.
66
97
  * Use instead of FlatList's getItemLayout or FlashList overrideItemLayout if you want to have accurate initialScrollOffset, you should provide this function
67
98
  */
68
- getEstimatedItemSize?: (index: number, item: ItemT) => number;
99
+ getEstimatedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
69
100
  /**
70
101
  * Ratio of initial container pool size to data length (e.g., 0.5 for half).
71
102
  * @default 2
@@ -83,7 +114,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
83
114
  initialScrollIndex?: number | {
84
115
  index: number;
85
116
  viewOffset?: number | undefined;
86
- viewPosition?: number | undefined;
87
117
  };
88
118
  /**
89
119
  * Component to render between items, receiving the leading item as prop.
@@ -119,7 +149,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
119
149
  * If true, auto-scrolls to end when new items are added.
120
150
  * @default false
121
151
  */
122
- maintainScrollAtEnd?: boolean;
152
+ maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
123
153
  /**
124
154
  * Distance threshold in percentage of screen size to trigger maintainScrollAtEnd.
125
155
  * @default 0.1
@@ -194,14 +224,6 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
194
224
  * @default false
195
225
  */
196
226
  refreshing?: boolean;
197
- /**
198
- * Function or React component to render each item in the list.
199
- * Can be either:
200
- * - A function: (props: LegendListRenderItemProps<ItemT>) => ReactNode
201
- * - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
202
- * @required
203
- */
204
- renderItem?: ((props: LegendListRenderItemProps<ItemT>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT>>;
205
227
  /**
206
228
  * Render custom ScrollView component.
207
229
  * @default (props) => <ScrollView {...props} />
@@ -229,35 +251,42 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
229
251
  onLoad?: (info: {
230
252
  elapsedTimeInMs: number;
231
253
  }) => void;
232
- };
254
+ snapToIndices?: number[];
255
+ /**
256
+ * Array of child indices determining which children get docked to the top of the screen when scrolling.
257
+ * For example, passing stickyIndices={[0]} will cause the first child to be fixed to the top of the scroll view.
258
+ * Not supported in conjunction with horizontal={true}.
259
+ * @default undefined
260
+ */
261
+ stickyIndices?: number[];
262
+ getItemType?: (item: ItemT, index: number) => TItemType;
263
+ getFixedItemSize?: (index: number, item: ItemT, type: TItemType) => number;
264
+ itemsAreEqual?: (itemPrevious: ItemT, item: ItemT, index: number, data: readonly ItemT[]) => boolean;
265
+ }
266
+ 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);
267
+ interface MaintainScrollAtEndOptions {
268
+ onLayout?: boolean;
269
+ onItemLayout?: boolean;
270
+ onDataChange?: boolean;
271
+ }
233
272
  interface ColumnWrapperStyle {
234
273
  rowGap?: number;
235
274
  gap?: number;
236
275
  columnGap?: number;
237
276
  }
238
- type AnchoredPosition = {
239
- type: "top" | "bottom";
240
- relativeCoordinate: number;
241
- top: number;
242
- };
243
- type LegendListProps<ItemT> = LegendListPropsBase<ItemT, Omit<ComponentProps<typeof ScrollView>, "scrollEventThrottle">>;
277
+ type LegendListProps<ItemT = any> = LegendListPropsBase<ItemT, ComponentProps<typeof ScrollView>>;
244
278
  interface InternalState {
245
- anchorElement?: {
246
- id: string;
247
- coordinate: number;
248
- };
249
- belowAnchorElementPositions?: Map<string, number>;
250
- rowHeights: Map<number, number>;
251
279
  positions: Map<string, number>;
252
280
  columns: Map<string, number>;
253
281
  sizes: Map<string, number>;
254
282
  sizesKnown: Map<string, number>;
283
+ containerItemKeys: Set<string>;
284
+ containerItemTypes: Map<number, string>;
255
285
  pendingAdjust: number;
256
286
  isStartReached: boolean;
257
287
  isEndReached: boolean;
258
288
  isAtEnd: boolean;
259
289
  isAtStart: boolean;
260
- data: readonly any[];
261
290
  hasScrolled?: boolean;
262
291
  scrollLength: number;
263
292
  startBuffered: number;
@@ -265,28 +294,27 @@ interface InternalState {
265
294
  startNoBuffer: number;
266
295
  endBuffered: number;
267
296
  endNoBuffer: number;
297
+ firstFullyOnScreenIndex: number;
298
+ idsInView: string[];
268
299
  scrollPending: number;
269
300
  scroll: number;
270
301
  scrollTime: number;
271
302
  scrollPrev: number;
272
303
  scrollPrevTime: number;
273
- scrollVelocity: number;
274
304
  scrollAdjustHandler: ScrollAdjustHandler;
275
305
  maintainingScrollAtEnd?: boolean;
276
306
  totalSize: number;
277
- totalSizeBelowAnchor: number;
278
307
  otherAxisSize?: number;
279
308
  timeouts: Set<number>;
280
309
  timeoutSizeMessage: any;
281
310
  nativeMarginTop: number;
282
311
  indexByKey: Map<string, number>;
312
+ idCache: Map<number, string>;
283
313
  viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
284
- renderItem: ((props: LegendListRenderItemProps<any>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<any>>;
285
314
  scrollHistory: Array<{
286
315
  scroll: number;
287
316
  time: number;
288
317
  }>;
289
- scrollTimer: Timer | undefined;
290
318
  startReachedBlockedByTimer: boolean;
291
319
  endReachedBlockedByTimer: boolean;
292
320
  scrollForNextCalculateItemsInView: {
@@ -298,8 +326,11 @@ interface InternalState {
298
326
  queuedInitialLayout?: boolean | undefined;
299
327
  queuedCalculateItemsInView: number | undefined;
300
328
  lastBatchingAction: number;
301
- ignoreScrollFromCalcTotal?: boolean;
302
- disableScrollJumpsFrom?: number;
329
+ ignoreScrollFromMVCP?: {
330
+ lt?: number;
331
+ gt?: number;
332
+ };
333
+ ignoreScrollFromMVCPTimeout?: any;
303
334
  scrollingTo?: {
304
335
  offset: number;
305
336
  index?: number;
@@ -307,14 +338,61 @@ interface InternalState {
307
338
  viewPosition?: number;
308
339
  animated?: boolean;
309
340
  } | undefined;
310
- previousTotalSize?: number;
311
341
  needsOtherAxisSize?: boolean;
312
342
  averageSizes: Record<string, {
313
343
  num: number;
314
344
  avg: number;
315
345
  }>;
316
- onScroll: ((event: NativeSyntheticEvent<NativeScrollEvent>) => void) | undefined;
317
- stylePaddingBottom?: number;
346
+ refScroller: React.RefObject<ScrollView>;
347
+ loadStartTime: number;
348
+ initialScroll: ScrollIndexWithOffset | undefined;
349
+ lastLayout: LayoutRectangle | undefined;
350
+ queuedItemSizeUpdates: {
351
+ itemKey: string;
352
+ sizeObj: {
353
+ width: number;
354
+ height: number;
355
+ };
356
+ }[];
357
+ queuedItemSizeUpdatesWaiting?: boolean;
358
+ timeoutSetPaddingTop?: any;
359
+ activeStickyIndex: number | undefined;
360
+ stickyContainers: Map<number, number>;
361
+ stickyContainerPool: Set<number>;
362
+ scrollProcessingEnabled: boolean;
363
+ props: {
364
+ alignItemsAtEnd: boolean;
365
+ data: readonly any[];
366
+ estimatedItemSize: number | undefined;
367
+ getEstimatedItemSize: LegendListProps["getEstimatedItemSize"];
368
+ getFixedItemSize: LegendListProps["getFixedItemSize"];
369
+ getItemType: LegendListProps["getItemType"];
370
+ horizontal: boolean;
371
+ keyExtractor: LegendListProps["keyExtractor"];
372
+ maintainScrollAtEnd: boolean | MaintainScrollAtEndOptions;
373
+ maintainScrollAtEndThreshold: number | undefined;
374
+ maintainVisibleContentPosition: boolean;
375
+ onEndReached: LegendListProps["onEndReached"];
376
+ onEndReachedThreshold: number | null | undefined;
377
+ onItemSizeChanged: LegendListProps["onItemSizeChanged"];
378
+ onLoad: LegendListProps["onLoad"];
379
+ onScroll: LegendListProps["onScroll"];
380
+ onStartReached: LegendListProps["onStartReached"];
381
+ onStartReachedThreshold: number | null | undefined;
382
+ recycleItems: boolean;
383
+ suggestEstimatedItemSize: boolean;
384
+ stylePaddingBottom: number | undefined;
385
+ renderItem: LegendListProps["renderItem"];
386
+ initialScroll: ScrollIndexWithOffset | undefined;
387
+ scrollBuffer: number;
388
+ numColumns: number;
389
+ initialContainerPoolRatio: number;
390
+ stylePaddingTop: number | undefined;
391
+ snapToIndices: number[] | undefined;
392
+ stickyIndicesSet: Set<number>;
393
+ stickyIndicesArr: number[];
394
+ itemsAreEqual: LegendListProps["itemsAreEqual"];
395
+ };
318
396
  }
319
397
  interface ViewableRange<T> {
320
398
  startBuffered: number;
@@ -323,23 +401,27 @@ interface ViewableRange<T> {
323
401
  end: number;
324
402
  items: T[];
325
403
  }
326
- interface LegendListRenderItemProps<ItemT> {
404
+ interface LegendListRenderItemProps<ItemT, TItemType extends string | number | undefined = string | number | undefined> {
327
405
  item: ItemT;
406
+ type: TItemType;
328
407
  index: number;
329
408
  extraData: any;
330
409
  }
331
410
  type ScrollState = {
332
411
  contentLength: number;
412
+ data: readonly any[];
333
413
  end: number;
334
414
  endBuffered: number;
335
415
  isAtEnd: boolean;
336
416
  isAtStart: boolean;
417
+ positionAtIndex: (index: number) => number;
418
+ positions: Map<string, number>;
337
419
  scroll: number;
338
420
  scrollLength: number;
421
+ sizeAtIndex: (index: number) => number;
422
+ sizes: Map<string, number>;
339
423
  start: number;
340
424
  startBuffered: number;
341
- sizes: Map<string, number>;
342
- sizeAtIndex: (index: number) => number;
343
425
  };
344
426
  type LegendListRef = {
345
427
  /**
@@ -386,9 +468,11 @@ type LegendListRef = {
386
468
  * Scrolls to the end of the list.
387
469
  * @param options - Options for scrolling.
388
470
  * @param options.animated - If true, animates the scroll. Default: true.
471
+ * @param options.viewOffset - Offset from the target position.
389
472
  */
390
473
  scrollToEnd(options?: {
391
474
  animated?: boolean | undefined;
475
+ viewOffset?: number | undefined;
392
476
  }): void;
393
477
  /**
394
478
  * Scrolls to a specific index in the list.
@@ -428,6 +512,17 @@ type LegendListRef = {
428
512
  offset: number;
429
513
  animated?: boolean | undefined;
430
514
  }): void;
515
+ /**
516
+ * Sets or adds to the offset of the visible content anchor.
517
+ * @param value - The offset to set or add.
518
+ * @param animated - If true, uses Animated to animate the change.
519
+ */
520
+ setVisibleContentAnchorOffset(value: number | ((value: number) => number)): void;
521
+ /**
522
+ * Sets whether scroll processing is enabled.
523
+ * @param enabled - If true, scroll processing is enabled.
524
+ */
525
+ setScrollProcessingEnabled(enabled: boolean): void;
431
526
  };
432
527
  interface ViewToken<ItemT = any> {
433
528
  item: ItemT;
@@ -491,273 +586,27 @@ interface LegendListRecyclingState<T> {
491
586
  }
492
587
  type TypedForwardRef = <T, P = {}>(render: (props: P, ref: React.Ref<T>) => React.ReactNode) => (props: P & React.RefAttributes<T>) => React.ReactNode;
493
588
  declare const typedForwardRef: TypedForwardRef;
494
- type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqual?: (prevProps: Readonly<ComponentProps<T>>, nextProps: Readonly<ComponentProps<T>>) => boolean) => T & {
589
+ type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqual?: (prevProps: Readonly<React.JSXElementConstructor<T>>, nextProps: Readonly<React.JSXElementConstructor<T>>) => boolean) => T & {
495
590
  displayName?: string;
496
591
  };
497
592
  declare const typedMemo: TypedMemo;
498
- type ScrollIndexWithOffsetPosition = {
593
+ interface ScrollIndexWithOffset {
594
+ index: number;
595
+ viewOffset: number;
596
+ }
597
+ interface ScrollIndexWithOffsetPosition extends ScrollIndexWithOffset {
598
+ viewPosition: number;
599
+ }
600
+ type GetRenderedItemResult<ItemT> = {
499
601
  index: number;
500
- viewOffset?: number;
501
- viewPosition?: number;
602
+ item: ItemT;
603
+ renderedItem: React.ReactNode;
502
604
  };
605
+ type GetRenderedItem = (key: string) => GetRenderedItemResult<any> | null;
503
606
 
504
- declare const LegendList: <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
505
- alignItemsAtEnd?: boolean;
506
- columnWrapperStyle?: ColumnWrapperStyle;
507
- data: readonly T[];
508
- drawDistance?: number;
509
- estimatedItemSize?: number;
510
- estimatedListSize?: {
511
- height: number;
512
- width: number;
513
- };
514
- extraData?: any;
515
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
516
- initialContainerPoolRatio?: number | undefined;
517
- initialScrollOffset?: number;
518
- initialScrollIndex?: number | {
519
- index: number;
520
- viewOffset?: number | undefined;
521
- viewPosition?: number | undefined;
522
- };
523
- ItemSeparatorComponent?: React$1.ComponentType<{
524
- leadingItem: T;
525
- }> | undefined;
526
- keyExtractor?: ((item: T, index: number) => string) | undefined;
527
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
528
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
529
- ListFooterComponentStyle?: react_native.StyleProp<ViewStyle> | undefined;
530
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
531
- ListHeaderComponentStyle?: react_native.StyleProp<ViewStyle> | undefined;
532
- maintainScrollAtEnd?: boolean;
533
- maintainScrollAtEndThreshold?: number;
534
- maintainVisibleContentPosition?: boolean;
535
- numColumns?: number;
536
- onEndReached?: ((info: {
537
- distanceFromEnd: number;
538
- }) => void) | null | undefined;
539
- onEndReachedThreshold?: number | null | undefined;
540
- onItemSizeChanged?: ((info: {
541
- size: number;
542
- previous: number;
543
- index: number;
544
- itemKey: string;
545
- itemData: T;
546
- }) => void) | undefined;
547
- onRefresh?: () => void;
548
- onStartReached?: ((info: {
549
- distanceFromStart: number;
550
- }) => void) | null | undefined;
551
- onStartReachedThreshold?: number | null | undefined;
552
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
553
- progressViewOffset?: number;
554
- recycleItems?: boolean;
555
- refScrollView?: React$1.Ref<ScrollView>;
556
- refreshing?: boolean;
557
- renderItem?: React$1.ComponentType<LegendListRenderItemProps<T>> | ((props: LegendListRenderItemProps<T>) => React$1.ReactNode) | undefined;
558
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
559
- suggestEstimatedItemSize?: boolean;
560
- viewabilityConfig?: ViewabilityConfig;
561
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
562
- waitForInitialLayout?: boolean;
563
- onLoad?: (info: {
564
- elapsedTimeInMs: number;
565
- }) => void;
566
- } & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode;
567
-
568
- interface LazyLegendListProps<ItemT, ListT> extends Omit<LegendListProps$1<ItemT>, "data" | "keyExtractor" | "renderItem"> {
569
- children?: React$1.ReactNode | undefined;
570
- LegendList?: ListT;
571
- }
572
- declare const LazyLegendList: <ItemT, ListT extends (<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
573
- alignItemsAtEnd?: boolean;
574
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
575
- data: readonly T[];
576
- drawDistance?: number;
577
- estimatedItemSize?: number;
578
- estimatedListSize?: {
579
- height: number;
580
- width: number;
581
- };
582
- extraData?: any;
583
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
584
- initialContainerPoolRatio?: number | undefined;
585
- initialScrollOffset?: number;
586
- initialScrollIndex?: number | {
587
- index: number;
588
- viewOffset?: number | undefined;
589
- viewPosition?: number | undefined;
590
- };
591
- ItemSeparatorComponent?: React$1.ComponentType<{
592
- leadingItem: T;
593
- }> | undefined;
594
- keyExtractor?: ((item: T, index: number) => string) | undefined;
595
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
596
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
597
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
598
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
599
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
600
- maintainScrollAtEnd?: boolean;
601
- maintainScrollAtEndThreshold?: number;
602
- maintainVisibleContentPosition?: boolean;
603
- numColumns?: number;
604
- onEndReached?: ((info: {
605
- distanceFromEnd: number;
606
- }) => void) | null | undefined;
607
- onEndReachedThreshold?: number | null | undefined;
608
- onItemSizeChanged?: ((info: {
609
- size: number;
610
- previous: number;
611
- index: number;
612
- itemKey: string;
613
- itemData: T;
614
- }) => void) | undefined;
615
- onRefresh?: () => void;
616
- onStartReached?: ((info: {
617
- distanceFromStart: number;
618
- }) => void) | null | undefined;
619
- onStartReachedThreshold?: number | null | undefined;
620
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
621
- progressViewOffset?: number;
622
- recycleItems?: boolean;
623
- refScrollView?: React$1.Ref<react_native.ScrollView>;
624
- refreshing?: boolean;
625
- renderItem?: React$1.ComponentType<LegendListRenderItemProps$1<T>> | ((props: LegendListRenderItemProps$1<T>) => React$1.ReactNode) | undefined;
626
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
627
- suggestEstimatedItemSize?: boolean;
628
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
629
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
630
- waitForInitialLayout?: boolean;
631
- onLoad?: (info: {
632
- elapsedTimeInMs: number;
633
- }) => void;
634
- } & React$1.RefAttributes<LegendListRef$1>) => React$1.ReactNode) | react_native.Animated.AnimatedComponent<(<T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
635
- alignItemsAtEnd?: boolean;
636
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
637
- data: readonly T[];
638
- drawDistance?: number;
639
- estimatedItemSize?: number;
640
- estimatedListSize?: {
641
- height: number;
642
- width: number;
643
- };
644
- extraData?: any;
645
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
646
- initialContainerPoolRatio?: number | undefined;
647
- initialScrollOffset?: number;
648
- initialScrollIndex?: number | {
649
- index: number;
650
- viewOffset?: number | undefined;
651
- viewPosition?: number | undefined;
652
- };
653
- ItemSeparatorComponent?: React$1.ComponentType<{
654
- leadingItem: T;
655
- }> | undefined;
656
- keyExtractor?: ((item: T, index: number) => string) | undefined;
657
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
658
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
659
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
660
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
661
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
662
- maintainScrollAtEnd?: boolean;
663
- maintainScrollAtEndThreshold?: number;
664
- maintainVisibleContentPosition?: boolean;
665
- numColumns?: number;
666
- onEndReached?: ((info: {
667
- distanceFromEnd: number;
668
- }) => void) | null | undefined;
669
- onEndReachedThreshold?: number | null | undefined;
670
- onItemSizeChanged?: ((info: {
671
- size: number;
672
- previous: number;
673
- index: number;
674
- itemKey: string;
675
- itemData: T;
676
- }) => void) | undefined;
677
- onRefresh?: () => void;
678
- onStartReached?: ((info: {
679
- distanceFromStart: number;
680
- }) => void) | null | undefined;
681
- onStartReachedThreshold?: number | null | undefined;
682
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
683
- progressViewOffset?: number;
684
- recycleItems?: boolean;
685
- refScrollView?: React$1.Ref<react_native.ScrollView>;
686
- refreshing?: boolean;
687
- renderItem?: React$1.ComponentType<LegendListRenderItemProps$1<T>> | ((props: LegendListRenderItemProps$1<T>) => React$1.ReactNode) | undefined;
688
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
689
- suggestEstimatedItemSize?: boolean;
690
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
691
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
692
- waitForInitialLayout?: boolean;
693
- onLoad?: (info: {
694
- elapsedTimeInMs: number;
695
- }) => void;
696
- } & React$1.RefAttributes<LegendListRef$1>) => React$1.ReactNode)> | (<ItemT_1>(props: _legendapp_list_reanimated.AnimatedLegendListProps<ItemT_1> & {
697
- ref?: React$1.Ref<LegendListRef$1>;
698
- }) => React$1.ReactElement | null) = <T>(props: Omit<Omit<react_native.ScrollViewProps, "scrollEventThrottle">, "contentOffset" | "contentInset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children"> & {
699
- alignItemsAtEnd?: boolean;
700
- columnWrapperStyle?: _legendapp_list.ColumnWrapperStyle;
701
- data: readonly T[];
702
- drawDistance?: number;
703
- estimatedItemSize?: number;
704
- estimatedListSize?: {
705
- height: number;
706
- width: number;
707
- };
708
- extraData?: any;
709
- getEstimatedItemSize?: ((index: number, item: T) => number) | undefined;
710
- initialContainerPoolRatio?: number | undefined;
711
- initialScrollOffset?: number;
712
- initialScrollIndex?: number | {
713
- index: number;
714
- viewOffset?: number | undefined;
715
- viewPosition?: number | undefined;
716
- };
717
- ItemSeparatorComponent?: React$1.ComponentType<{
718
- leadingItem: T;
719
- }> | undefined;
720
- keyExtractor?: ((item: T, index: number) => string) | undefined;
721
- ListEmptyComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
722
- ListFooterComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
723
- ListFooterComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
724
- ListHeaderComponent?: React$1.ComponentType<any> | React$1.ReactElement | null | undefined;
725
- ListHeaderComponentStyle?: react_native.StyleProp<react_native.ViewStyle> | undefined;
726
- maintainScrollAtEnd?: boolean;
727
- maintainScrollAtEndThreshold?: number;
728
- maintainVisibleContentPosition?: boolean;
729
- numColumns?: number;
730
- onEndReached?: ((info: {
731
- distanceFromEnd: number;
732
- }) => void) | null | undefined;
733
- onEndReachedThreshold?: number | null | undefined;
734
- onItemSizeChanged?: ((info: {
735
- size: number;
736
- previous: number;
737
- index: number;
738
- itemKey: string;
739
- itemData: T;
740
- }) => void) | undefined;
741
- onRefresh?: () => void;
742
- onStartReached?: ((info: {
743
- distanceFromStart: number;
744
- }) => void) | null | undefined;
745
- onStartReachedThreshold?: number | null | undefined;
746
- onViewableItemsChanged?: _legendapp_list.OnViewableItemsChanged | undefined;
747
- progressViewOffset?: number;
748
- recycleItems?: boolean;
749
- refScrollView?: React$1.Ref<react_native.ScrollView>;
750
- refreshing?: boolean;
751
- renderItem?: React$1.ComponentType<LegendListRenderItemProps$1<T>> | ((props: LegendListRenderItemProps$1<T>) => React$1.ReactNode) | undefined;
752
- renderScrollComponent?: (props: react_native.ScrollViewProps) => React$1.ReactElement<react_native.ScrollViewProps>;
753
- suggestEstimatedItemSize?: boolean;
754
- viewabilityConfig?: _legendapp_list.ViewabilityConfig;
755
- viewabilityConfigCallbackPairs?: _legendapp_list.ViewabilityConfigCallbackPairs | undefined;
756
- waitForInitialLayout?: boolean;
757
- onLoad?: (info: {
758
- elapsedTimeInMs: number;
759
- }) => void;
760
- } & React$1.RefAttributes<LegendListRef$1>) => React$1.ReactNode>(props: LazyLegendListProps<ItemT, ListT> & React$1.RefAttributes<LegendListRef$1>) => React$1.ReactNode;
607
+ declare const LegendList: (<T>(props: LegendListProps<T> & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode) & {
608
+ displayName?: string;
609
+ };
761
610
 
762
611
  declare function useViewability(callback: ViewabilityCallback, configId?: string): void;
763
612
  declare function useViewabilityAmount(callback: ViewabilityAmountCallback): void;
@@ -768,5 +617,6 @@ declare function useListScrollSize(): {
768
617
  width: number;
769
618
  height: number;
770
619
  };
620
+ declare function useSyncLayout(): () => void;
771
621
 
772
- export { type AnchoredPosition, type ColumnWrapperStyle, type InternalState, LazyLegendList, type LazyLegendListProps, LegendList, type LegendListProps, type LegendListPropsBase, type LegendListRecyclingState, type LegendListRef, type LegendListRenderItemProps, 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 };
622
+ 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 };