@legendapp/list 1.1.4 → 2.0.0-beta.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.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
@@ -174,7 +204,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
174
204
  /**
175
205
  * Called when the viewability of items changes.
176
206
  */
177
- onViewableItemsChanged?: OnViewableItemsChanged | undefined;
207
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT> | undefined;
178
208
  /**
179
209
  * Offset in pixels for the refresh indicator.
180
210
  * @default 0
@@ -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} />
@@ -220,7 +242,7 @@ type LegendListPropsBase<ItemT, TScrollView extends ComponentProps<typeof Scroll
220
242
  /**
221
243
  * Pairs of viewability configs and their callbacks for tracking visibility.
222
244
  */
223
- viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs | undefined;
245
+ viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs<ItemT> | undefined;
224
246
  /**
225
247
  * If true, delays rendering until initial layout is complete.
226
248
  * @default false
@@ -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>;
283
- viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs | undefined;
284
- renderItem: ((props: LegendListRenderItemProps<any>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<any>>;
312
+ idCache: Map<number, string>;
313
+ viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs<any> | undefined;
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,28 @@ 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;
408
+ data: readonly ItemT[];
329
409
  extraData: any;
330
410
  }
331
411
  type ScrollState = {
332
412
  contentLength: number;
413
+ data: readonly any[];
333
414
  end: number;
334
415
  endBuffered: number;
335
416
  isAtEnd: boolean;
336
417
  isAtStart: boolean;
418
+ positionAtIndex: (index: number) => number;
419
+ positions: Map<string, number>;
337
420
  scroll: number;
338
421
  scrollLength: number;
422
+ sizeAtIndex: (index: number) => number;
423
+ sizes: Map<string, number>;
339
424
  start: number;
340
425
  startBuffered: number;
341
- sizes: Map<string, number>;
342
- sizeAtIndex: (index: number) => number;
343
426
  };
344
427
  type LegendListRef = {
345
428
  /**
@@ -386,9 +469,11 @@ type LegendListRef = {
386
469
  * Scrolls to the end of the list.
387
470
  * @param options - Options for scrolling.
388
471
  * @param options.animated - If true, animates the scroll. Default: true.
472
+ * @param options.viewOffset - Offset from the target position.
389
473
  */
390
474
  scrollToEnd(options?: {
391
475
  animated?: boolean | undefined;
476
+ viewOffset?: number | undefined;
392
477
  }): void;
393
478
  /**
394
479
  * Scrolls to a specific index in the list.
@@ -428,6 +513,17 @@ type LegendListRef = {
428
513
  offset: number;
429
514
  animated?: boolean | undefined;
430
515
  }): void;
516
+ /**
517
+ * Sets or adds to the offset of the visible content anchor.
518
+ * @param value - The offset to set or add.
519
+ * @param animated - If true, uses Animated to animate the change.
520
+ */
521
+ setVisibleContentAnchorOffset(value: number | ((value: number) => number)): void;
522
+ /**
523
+ * Sets whether scroll processing is enabled.
524
+ * @param enabled - If true, scroll processing is enabled.
525
+ */
526
+ setScrollProcessingEnabled(enabled: boolean): void;
431
527
  };
432
528
  interface ViewToken<ItemT = any> {
433
529
  item: ItemT;
@@ -443,14 +539,14 @@ interface ViewAmountToken<ItemT = any> extends ViewToken<ItemT> {
443
539
  percentOfScroller: number;
444
540
  scrollSize: number;
445
541
  }
446
- interface ViewabilityConfigCallbackPair {
542
+ interface ViewabilityConfigCallbackPair<ItemT> {
447
543
  viewabilityConfig: ViewabilityConfig;
448
- onViewableItemsChanged?: OnViewableItemsChanged;
544
+ onViewableItemsChanged?: OnViewableItemsChanged<ItemT>;
449
545
  }
450
- type ViewabilityConfigCallbackPairs = ViewabilityConfigCallbackPair[];
451
- type OnViewableItemsChanged = ((info: {
452
- viewableItems: Array<ViewToken>;
453
- changed: Array<ViewToken>;
546
+ type ViewabilityConfigCallbackPairs<ItemT> = ViewabilityConfigCallbackPair<ItemT>[];
547
+ type OnViewableItemsChanged<ItemT> = ((info: {
548
+ viewableItems: Array<ViewToken<ItemT>>;
549
+ changed: Array<ViewToken<ItemT>>;
454
550
  }) => void) | null;
455
551
  interface ViewabilityConfig {
456
552
  /**
@@ -481,8 +577,8 @@ interface ViewabilityConfig {
481
577
  */
482
578
  waitForInteraction?: boolean | undefined;
483
579
  }
484
- type ViewabilityCallback = (viewToken: ViewToken) => void;
485
- type ViewabilityAmountCallback = (viewToken: ViewAmountToken) => void;
580
+ type ViewabilityCallback<ItemT = any> = (viewToken: ViewToken<ItemT>) => void;
581
+ type ViewabilityAmountCallback<ItemT = any> = (viewToken: ViewAmountToken<ItemT>) => void;
486
582
  interface LegendListRecyclingState<T> {
487
583
  item: T;
488
584
  prevItem: T | undefined;
@@ -491,276 +587,30 @@ interface LegendListRecyclingState<T> {
491
587
  }
492
588
  type TypedForwardRef = <T, P = {}>(render: (props: P, ref: React.Ref<T>) => React.ReactNode) => (props: P & React.RefAttributes<T>) => React.ReactNode;
493
589
  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 & {
590
+ type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqual?: (prevProps: Readonly<React.JSXElementConstructor<T>>, nextProps: Readonly<React.JSXElementConstructor<T>>) => boolean) => T & {
495
591
  displayName?: string;
496
592
  };
497
593
  declare const typedMemo: TypedMemo;
498
- type ScrollIndexWithOffsetPosition = {
594
+ interface ScrollIndexWithOffset {
595
+ index: number;
596
+ viewOffset: number;
597
+ }
598
+ interface ScrollIndexWithOffsetPosition extends ScrollIndexWithOffset {
599
+ viewPosition: number;
600
+ }
601
+ type GetRenderedItemResult<ItemT> = {
499
602
  index: number;
500
- viewOffset?: number;
501
- viewPosition?: number;
603
+ item: ItemT;
604
+ renderedItem: React.ReactNode;
502
605
  };
606
+ type GetRenderedItem = (key: string) => GetRenderedItemResult<any> | null;
503
607
 
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;
608
+ declare const LegendList: (<T>(props: LegendListProps<T> & React$1.RefAttributes<LegendListRef>) => React$1.ReactNode) & {
609
+ displayName?: string;
610
+ };
761
611
 
762
- declare function useViewability(callback: ViewabilityCallback, configId?: string): void;
763
- declare function useViewabilityAmount(callback: ViewabilityAmountCallback): void;
612
+ declare function useViewability<ItemT = any>(callback: ViewabilityCallback<ItemT>, configId?: string): void;
613
+ declare function useViewabilityAmount<ItemT = any>(callback: ViewabilityAmountCallback<ItemT>): void;
764
614
  declare function useRecyclingEffect(effect: (info: LegendListRecyclingState<unknown>) => void | (() => void)): void;
765
615
  declare function useRecyclingState<ItemT>(valueOrFun: ((info: LegendListRecyclingState<ItemT>) => ItemT) | ItemT): readonly [ItemT | null, Dispatch<SetStateAction<ItemT>>];
766
616
  declare function useIsLastItem(): boolean;
@@ -768,5 +618,6 @@ declare function useListScrollSize(): {
768
618
  width: number;
769
619
  height: number;
770
620
  };
621
+ declare function useSyncLayout(): () => void;
771
622
 
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 };
623
+ 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 };