@legendapp/list 3.0.0-beta.4 → 3.0.0-beta.41
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/.DS_Store +0 -0
- package/CHANGELOG.md +19 -0
- package/README.md +9 -2
- package/animated.d.ts +620 -5
- package/animated.js +2 -2
- package/animated.mjs +1 -1
- package/index.d.ts +1227 -11
- package/index.js +2594 -1023
- package/index.mjs +2593 -1024
- package/index.native.js +2347 -961
- package/index.native.mjs +2327 -943
- package/keyboard-test.d.ts +206 -0
- package/keyboard-test.js +34 -0
- package/keyboard-test.mjs +13 -0
- package/keyboard.d.ts +206 -8
- package/keyboard.js +340 -32
- package/keyboard.mjs +343 -34
- package/package.json +62 -1
- package/{types-JPHClxiw.d.mts → react-native.d.ts} +436 -158
- package/react-native.js +4942 -0
- package/react-native.mjs +4911 -0
- package/{types-JPHClxiw.d.ts → react-native.web.d.ts} +493 -158
- package/react-native.web.js +5357 -0
- package/react-native.web.mjs +5326 -0
- package/{types-YNdphn_A.d.mts → react.d.ts} +493 -158
- package/react.js +5357 -0
- package/react.mjs +5326 -0
- package/reanimated.d.ts +631 -7
- package/reanimated.js +156 -30
- package/reanimated.mjs +155 -29
- package/section-list.d.ts +620 -5
- package/section-list.js +38 -3679
- package/section-list.mjs +34 -3676
- package/animated.d.mts +0 -9
- package/index.d.mts +0 -23
- package/index.native.d.mts +0 -23
- package/index.native.d.ts +0 -23
- package/keyboard-controller.d.mts +0 -12
- package/keyboard-controller.d.ts +0 -12
- package/keyboard-controller.js +0 -69
- package/keyboard-controller.mjs +0 -48
- package/keyboard.d.mts +0 -13
- package/reanimated.d.mts +0 -18
- package/section-list.d.mts +0 -113
- package/section-list.native.d.mts +0 -113
- package/section-list.native.d.ts +0 -113
- package/section-list.native.js +0 -3700
- package/section-list.native.mjs +0 -3679
- package/types-YNdphn_A.d.ts +0 -670
|
@@ -1,15 +1,60 @@
|
|
|
1
|
-
import * as React
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import Animated$1 from 'react-native-reanimated';
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Key, Dispatch, SetStateAction } from 'react';
|
|
3
|
+
import { ScrollViewProps, NativeSyntheticEvent as NativeSyntheticEvent$1, NativeScrollEvent as NativeScrollEvent$1, ScrollView, StyleProp as StyleProp$1, ViewStyle as ViewStyle$1, ScrollViewComponent, ScrollResponderMixin, Insets as Insets$1, View } from 'react-native';
|
|
5
4
|
|
|
6
5
|
type AnimatedValue = number;
|
|
7
6
|
|
|
8
|
-
type
|
|
7
|
+
type LooseMeasureCallback = (x: number, y: number, width: number, height: number, pageX: number, pageY: number) => void;
|
|
8
|
+
interface LooseView {
|
|
9
|
+
measure?: (callback: LooseMeasureCallback) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type ListenerType = "activeStickyIndex" | "debugComputedScroll" | "debugRawScroll" | "extraData" | "footerSize" | "headerSize" | "lastItemKeys" | "lastPositionUpdate" | "maintainVisibleContentPosition" | "numColumns" | "numContainers" | "numContainersPooled" | "otherAxisSize" | "readyToRender" | "scrollAdjust" | "scrollAdjustPending" | "scrollAdjustUserOffset" | "scrollSize" | "snapToOffsets" | "stylePaddingTop" | "totalSize" | `containerColumn${number}` | `containerSpan${number}` | `containerItemData${number}` | `containerItemKey${number}` | `containerPosition${number}` | `containerSticky${number}`;
|
|
13
|
+
type LegendListListenerType = Extract<ListenerType, "activeStickyIndex" | "footerSize" | "headerSize" | "lastItemKeys" | "lastPositionUpdate" | "numContainers" | "numContainersPooled" | "otherAxisSize" | "readyToRender" | "snapToOffsets" | "totalSize">;
|
|
14
|
+
type ListenerTypeValueMap = {
|
|
15
|
+
activeStickyIndex: number;
|
|
16
|
+
animatedScrollY: any;
|
|
17
|
+
debugComputedScroll: number;
|
|
18
|
+
debugRawScroll: number;
|
|
19
|
+
extraData: any;
|
|
20
|
+
footerSize: number;
|
|
21
|
+
headerSize: number;
|
|
22
|
+
lastItemKeys: string[];
|
|
23
|
+
lastPositionUpdate: number;
|
|
24
|
+
maintainVisibleContentPosition: MaintainVisibleContentPositionNormalized;
|
|
25
|
+
numColumns: number;
|
|
26
|
+
numContainers: number;
|
|
27
|
+
numContainersPooled: number;
|
|
28
|
+
otherAxisSize: number;
|
|
29
|
+
readyToRender: boolean;
|
|
30
|
+
scrollAdjust: number;
|
|
31
|
+
scrollAdjustPending: number;
|
|
32
|
+
scrollAdjustUserOffset: number;
|
|
33
|
+
scrollSize: {
|
|
34
|
+
width: number;
|
|
35
|
+
height: number;
|
|
36
|
+
};
|
|
37
|
+
snapToOffsets: number[];
|
|
38
|
+
stylePaddingTop: number;
|
|
39
|
+
totalSize: number;
|
|
40
|
+
} & {
|
|
41
|
+
[K in ListenerType as K extends `containerItemKey${number}` ? K : never]: string;
|
|
42
|
+
} & {
|
|
43
|
+
[K in ListenerType as K extends `containerItemData${number}` ? K : never]: any;
|
|
44
|
+
} & {
|
|
45
|
+
[K in ListenerType as K extends `containerPosition${number}` ? K : never]: number;
|
|
46
|
+
} & {
|
|
47
|
+
[K in ListenerType as K extends `containerColumn${number}` ? K : never]: number;
|
|
48
|
+
} & {
|
|
49
|
+
[K in ListenerType as K extends `containerSpan${number}` ? K : never]: number;
|
|
50
|
+
} & {
|
|
51
|
+
[K in ListenerType as K extends `containerSticky${number}` ? K : never]: boolean;
|
|
52
|
+
};
|
|
9
53
|
interface StateContext {
|
|
10
|
-
|
|
54
|
+
animatedScrollY: AnimatedValue;
|
|
55
|
+
columnWrapperStyle: ColumnWrapperStyle | undefined;
|
|
56
|
+
contextNum: number;
|
|
11
57
|
listeners: Map<ListenerType, Set<(value: any) => void>>;
|
|
12
|
-
values: Map<ListenerType, any>;
|
|
13
58
|
mapViewabilityCallbacks: Map<string, ViewabilityCallback>;
|
|
14
59
|
mapViewabilityValues: Map<string, ViewToken>;
|
|
15
60
|
mapViewabilityAmountCallbacks: Map<number, ViewabilityAmountCallback>;
|
|
@@ -21,22 +66,85 @@ interface StateContext {
|
|
|
21
66
|
previousStart: number;
|
|
22
67
|
previousEnd: number;
|
|
23
68
|
}>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
69
|
+
positionListeners: Map<string, Set<(value: any) => void>>;
|
|
70
|
+
state: InternalState;
|
|
71
|
+
values: Map<ListenerType, any>;
|
|
72
|
+
viewRefs: Map<number, React.RefObject<LooseView | null>>;
|
|
27
73
|
}
|
|
28
74
|
|
|
29
75
|
declare class ScrollAdjustHandler {
|
|
30
76
|
private appliedAdjust;
|
|
31
77
|
private pendingAdjust;
|
|
32
|
-
private
|
|
33
|
-
private mounted;
|
|
78
|
+
private ctx;
|
|
34
79
|
constructor(ctx: StateContext);
|
|
35
80
|
requestAdjust(add: number): void;
|
|
36
|
-
setMounted(): void;
|
|
37
81
|
getAdjust(): number;
|
|
82
|
+
commitPendingAdjust(scrollTarget: ScrollTarget): void;
|
|
38
83
|
}
|
|
39
84
|
|
|
85
|
+
type BaseSharedValue<T = number> = {
|
|
86
|
+
get: () => T;
|
|
87
|
+
};
|
|
88
|
+
type StylesAsSharedValue<Style> = {
|
|
89
|
+
[key in keyof Style]: Style[key] | BaseSharedValue<Style[key]>;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
interface Insets {
|
|
93
|
+
top: number;
|
|
94
|
+
left: number;
|
|
95
|
+
bottom: number;
|
|
96
|
+
right: number;
|
|
97
|
+
}
|
|
98
|
+
interface LayoutRectangle {
|
|
99
|
+
x: number;
|
|
100
|
+
y: number;
|
|
101
|
+
width: number;
|
|
102
|
+
height: number;
|
|
103
|
+
}
|
|
104
|
+
interface NativeScrollEvent {
|
|
105
|
+
contentOffset: {
|
|
106
|
+
x: number;
|
|
107
|
+
y: number;
|
|
108
|
+
};
|
|
109
|
+
contentSize: {
|
|
110
|
+
width: number;
|
|
111
|
+
height: number;
|
|
112
|
+
};
|
|
113
|
+
layoutMeasurement: {
|
|
114
|
+
width: number;
|
|
115
|
+
height: number;
|
|
116
|
+
};
|
|
117
|
+
contentInset: Insets;
|
|
118
|
+
zoomScale: number;
|
|
119
|
+
}
|
|
120
|
+
interface NativeSyntheticEvent<T> {
|
|
121
|
+
nativeEvent: T;
|
|
122
|
+
}
|
|
123
|
+
type ViewStyle = Record<string, unknown>;
|
|
124
|
+
type StyleProp<T> = T | T[] | null | undefined | false;
|
|
125
|
+
interface ScrollEventTargetLike {
|
|
126
|
+
addEventListener(type: string, listener: (...args: any[]) => void): void;
|
|
127
|
+
removeEventListener(type: string, listener: (...args: any[]) => void): void;
|
|
128
|
+
}
|
|
129
|
+
interface ScrollableNodeLike {
|
|
130
|
+
scrollLeft?: number;
|
|
131
|
+
scrollTop?: number;
|
|
132
|
+
}
|
|
133
|
+
interface LegendListScrollerRef {
|
|
134
|
+
flashScrollIndicators(): void;
|
|
135
|
+
getCurrentScrollOffset?(): number;
|
|
136
|
+
getScrollEventTarget(): ScrollEventTargetLike | null;
|
|
137
|
+
getScrollableNode(): ScrollableNodeLike | null;
|
|
138
|
+
getScrollResponder(): unknown;
|
|
139
|
+
scrollTo(options: {
|
|
140
|
+
animated?: boolean;
|
|
141
|
+
x?: number;
|
|
142
|
+
y?: number;
|
|
143
|
+
}): void;
|
|
144
|
+
scrollToEnd(options?: {
|
|
145
|
+
animated?: boolean;
|
|
146
|
+
}): void;
|
|
147
|
+
}
|
|
40
148
|
type BaseScrollViewProps<TScrollView> = Omit<TScrollView, "contentOffset" | "maintainVisibleContentPosition" | "stickyHeaderIndices" | "removeClippedSubviews" | "children" | "onScroll">;
|
|
41
149
|
interface DataModeProps<ItemT, TItemType extends string | undefined> {
|
|
42
150
|
/**
|
|
@@ -51,7 +159,7 @@ interface DataModeProps<ItemT, TItemType extends string | undefined> {
|
|
|
51
159
|
* - A React component: React.ComponentType<LegendListRenderItemProps<ItemT>>
|
|
52
160
|
* @required when using data mode
|
|
53
161
|
*/
|
|
54
|
-
renderItem: ((props: LegendListRenderItemProps<ItemT, TItemType>) => ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT, TItemType>>;
|
|
162
|
+
renderItem: ((props: LegendListRenderItemProps<ItemT, TItemType>) => React.ReactNode) | React.ComponentType<LegendListRenderItemProps<ItemT, TItemType>>;
|
|
55
163
|
children?: never;
|
|
56
164
|
}
|
|
57
165
|
interface ChildrenModeProps {
|
|
@@ -60,7 +168,7 @@ interface ChildrenModeProps {
|
|
|
60
168
|
* Each child will be treated as an individual list item.
|
|
61
169
|
* @required when using children mode
|
|
62
170
|
*/
|
|
63
|
-
children: ReactNode;
|
|
171
|
+
children: React.ReactNode;
|
|
64
172
|
data?: never;
|
|
65
173
|
renderItem?: never;
|
|
66
174
|
}
|
|
@@ -71,10 +179,10 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
71
179
|
*/
|
|
72
180
|
alignItemsAtEnd?: boolean;
|
|
73
181
|
/**
|
|
74
|
-
*
|
|
75
|
-
* @default
|
|
182
|
+
* Keeps selected items mounted even when they scroll out of view.
|
|
183
|
+
* @default undefined
|
|
76
184
|
*/
|
|
77
|
-
|
|
185
|
+
alwaysRender?: AlwaysRenderConfig;
|
|
78
186
|
/**
|
|
79
187
|
* Style applied to each column's wrapper view.
|
|
80
188
|
*/
|
|
@@ -111,7 +219,14 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
111
219
|
* In case you have distinct item sizes, you can provide a function to get the size of an item.
|
|
112
220
|
* Use instead of FlatList's getItemLayout or FlashList overrideItemLayout if you want to have accurate initialScrollOffset, you should provide this function
|
|
113
221
|
*/
|
|
114
|
-
getEstimatedItemSize?: (
|
|
222
|
+
getEstimatedItemSize?: (item: ItemT, index: number, type: TItemType) => number;
|
|
223
|
+
/**
|
|
224
|
+
* Customize layout for multi-column lists, such as allowing items to span multiple columns.
|
|
225
|
+
* Similar to FlashList's overrideItemLayout.
|
|
226
|
+
*/
|
|
227
|
+
overrideItemLayout?: (layout: {
|
|
228
|
+
span?: number;
|
|
229
|
+
}, item: ItemT, index: number, maxColumns: number, extraData?: any) => void;
|
|
115
230
|
/**
|
|
116
231
|
* Ratio of initial container pool size to data length (e.g., 0.5 for half).
|
|
117
232
|
* @default 2
|
|
@@ -129,6 +244,7 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
129
244
|
initialScrollIndex?: number | {
|
|
130
245
|
index: number;
|
|
131
246
|
viewOffset?: number | undefined;
|
|
247
|
+
viewPosition?: number | undefined;
|
|
132
248
|
};
|
|
133
249
|
/**
|
|
134
250
|
* When true, the list initializes scrolled to the last item.
|
|
@@ -168,6 +284,7 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
168
284
|
ListHeaderComponentStyle?: StyleProp<ViewStyle> | undefined;
|
|
169
285
|
/**
|
|
170
286
|
* If true, auto-scrolls to end when new items are added.
|
|
287
|
+
* Use an options object to opt into specific triggers and control whether that scroll is animated.
|
|
171
288
|
* @default false
|
|
172
289
|
*/
|
|
173
290
|
maintainScrollAtEnd?: boolean | MaintainScrollAtEndOptions;
|
|
@@ -177,11 +294,19 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
177
294
|
*/
|
|
178
295
|
maintainScrollAtEndThreshold?: number;
|
|
179
296
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
297
|
+
* Maintains visibility of content.
|
|
298
|
+
* - scroll (default: true) stabilizes during size/layout changes while scrolling.
|
|
299
|
+
* - data (default: false) stabilizes when the data array changes; passing true also sets the RN maintainVisibleContentPosition prop.
|
|
300
|
+
* - shouldRestorePosition can opt out specific items from data-change anchoring.
|
|
301
|
+
* - undefined (default) enables scroll stabilization but skips data-change anchoring.
|
|
302
|
+
* - true enables both behaviors; false disables both.
|
|
303
|
+
*/
|
|
304
|
+
maintainVisibleContentPosition?: boolean | MaintainVisibleContentPositionConfig<ItemT>;
|
|
305
|
+
/**
|
|
306
|
+
* Web only: when true, listens to window/body scrolling instead of rendering a scrollable list container.
|
|
182
307
|
* @default false
|
|
183
308
|
*/
|
|
184
|
-
|
|
309
|
+
useWindowScroll?: boolean;
|
|
185
310
|
/**
|
|
186
311
|
* Number of columns to render items in.
|
|
187
312
|
* @default 1
|
|
@@ -208,6 +333,10 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
208
333
|
itemKey: string;
|
|
209
334
|
itemData: ItemT;
|
|
210
335
|
}) => void;
|
|
336
|
+
/**
|
|
337
|
+
* Called when list layout metrics change.
|
|
338
|
+
*/
|
|
339
|
+
onMetricsChange?: (metrics: LegendListMetrics) => void;
|
|
211
340
|
/**
|
|
212
341
|
* Function to call when the user pulls to refresh.
|
|
213
342
|
*/
|
|
@@ -248,7 +377,7 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
248
377
|
/**
|
|
249
378
|
* Ref to the underlying ScrollView component.
|
|
250
379
|
*/
|
|
251
|
-
refScrollView?: React.Ref<
|
|
380
|
+
refScrollView?: React.Ref<any>;
|
|
252
381
|
/**
|
|
253
382
|
* If true, shows a refresh indicator.
|
|
254
383
|
* @default false
|
|
@@ -259,7 +388,7 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
259
388
|
* Note: When using `stickyHeaderIndices`, you must provide an Animated ScrollView component.
|
|
260
389
|
* @default (props) => <ScrollView {...props} />
|
|
261
390
|
*/
|
|
262
|
-
renderScrollComponent?: (props:
|
|
391
|
+
renderScrollComponent?: (props: any) => React.ReactElement | null;
|
|
263
392
|
/**
|
|
264
393
|
* This will log a suggested estimatedItemSize.
|
|
265
394
|
* @required
|
|
@@ -294,22 +423,72 @@ interface LegendListSpecificProps<ItemT, TItemType extends string | undefined> {
|
|
|
294
423
|
* @deprecated Use stickyHeaderIndices instead for parity with React Native.
|
|
295
424
|
*/
|
|
296
425
|
stickyIndices?: number[];
|
|
426
|
+
/**
|
|
427
|
+
* Configuration for sticky headers.
|
|
428
|
+
* @default undefined
|
|
429
|
+
*/
|
|
430
|
+
stickyHeaderConfig?: StickyHeaderConfig;
|
|
297
431
|
getItemType?: (item: ItemT, index: number) => TItemType;
|
|
298
|
-
getFixedItemSize?: (
|
|
432
|
+
getFixedItemSize?: (item: ItemT, index: number, type: TItemType) => number | undefined;
|
|
299
433
|
itemsAreEqual?: (itemPrevious: ItemT, item: ItemT, index: number, data: readonly ItemT[]) => boolean;
|
|
300
434
|
}
|
|
301
|
-
type LegendListPropsBase<ItemT,
|
|
435
|
+
type LegendListPropsBase<ItemT, TScrollViewProps = Record<string, any>, TItemType extends string | undefined = string | undefined> = BaseScrollViewProps<TScrollViewProps> & LegendListSpecificProps<ItemT, TItemType> & (DataModeProps<ItemT, TItemType> | ChildrenModeProps);
|
|
436
|
+
type LegendListPropsInternal = LegendListSpecificProps<any, string | undefined> & DataModeProps<any, string | undefined>;
|
|
437
|
+
interface MaintainVisibleContentPositionConfig<ItemT = any> {
|
|
438
|
+
data?: boolean;
|
|
439
|
+
size?: boolean;
|
|
440
|
+
shouldRestorePosition?: (item: ItemT, index: number, data: readonly ItemT[]) => boolean;
|
|
441
|
+
}
|
|
442
|
+
interface MaintainVisibleContentPositionNormalized<ItemT = any> {
|
|
443
|
+
data: boolean;
|
|
444
|
+
size: boolean;
|
|
445
|
+
shouldRestorePosition?: (item: ItemT, index: number, data: readonly ItemT[]) => boolean;
|
|
446
|
+
}
|
|
447
|
+
interface StickyHeaderConfig {
|
|
448
|
+
/**
|
|
449
|
+
* Specifies how far from the top edge sticky headers should start sticking.
|
|
450
|
+
* Useful for scenarios with a fixed navbar or header, where sticky elements pin below it..
|
|
451
|
+
* @default 0
|
|
452
|
+
*/
|
|
453
|
+
offset?: number;
|
|
454
|
+
/**
|
|
455
|
+
* Component to render as a backdrop behind the sticky header.
|
|
456
|
+
* @default undefined
|
|
457
|
+
*/
|
|
458
|
+
backdropComponent?: React.ComponentType<any> | React.ReactElement | null | undefined;
|
|
459
|
+
}
|
|
460
|
+
interface AlwaysRenderConfig {
|
|
461
|
+
top?: number;
|
|
462
|
+
bottom?: number;
|
|
463
|
+
indices?: number[];
|
|
464
|
+
keys?: string[];
|
|
465
|
+
}
|
|
466
|
+
interface MaintainScrollAtEndOnOptions {
|
|
467
|
+
dataChange?: boolean;
|
|
468
|
+
itemLayout?: boolean;
|
|
469
|
+
layout?: boolean;
|
|
470
|
+
}
|
|
302
471
|
interface MaintainScrollAtEndOptions {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
472
|
+
/**
|
|
473
|
+
* Whether maintainScrollAtEnd should animate when it scrolls to the end.
|
|
474
|
+
*/
|
|
475
|
+
animated?: boolean;
|
|
476
|
+
/**
|
|
477
|
+
* Which events should keep the list pinned to the end.
|
|
478
|
+
* - If omitted, object values default to all triggers.
|
|
479
|
+
* - If provided, only the keys set to `true` are enabled.
|
|
480
|
+
*/
|
|
481
|
+
on?: MaintainScrollAtEndOnOptions;
|
|
306
482
|
}
|
|
307
483
|
interface ColumnWrapperStyle {
|
|
308
484
|
rowGap?: number;
|
|
309
485
|
gap?: number;
|
|
310
486
|
columnGap?: number;
|
|
311
487
|
}
|
|
312
|
-
|
|
488
|
+
interface LegendListMetrics {
|
|
489
|
+
headerSize: number;
|
|
490
|
+
footerSize: number;
|
|
491
|
+
}
|
|
313
492
|
interface ThresholdSnapshot {
|
|
314
493
|
scrollPosition: number;
|
|
315
494
|
contentSize?: number;
|
|
@@ -317,167 +496,222 @@ interface ThresholdSnapshot {
|
|
|
317
496
|
atThreshold: boolean;
|
|
318
497
|
}
|
|
319
498
|
interface ScrollTarget {
|
|
320
|
-
offset: number;
|
|
321
|
-
index?: number;
|
|
322
|
-
viewOffset?: number;
|
|
323
|
-
viewPosition?: number;
|
|
324
499
|
animated?: boolean;
|
|
500
|
+
index?: number;
|
|
325
501
|
isInitialScroll?: boolean;
|
|
502
|
+
itemSize?: number;
|
|
503
|
+
offset: number;
|
|
326
504
|
precomputedWithViewOffset?: boolean;
|
|
505
|
+
targetOffset?: number;
|
|
506
|
+
viewOffset?: number;
|
|
507
|
+
viewPosition?: number;
|
|
327
508
|
}
|
|
328
509
|
interface InternalState {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
510
|
+
activeStickyIndex: number | undefined;
|
|
511
|
+
adjustingFromInitialMount?: number;
|
|
512
|
+
animFrameCheckFinishedScroll?: any;
|
|
513
|
+
averageSizes: Record<string, {
|
|
514
|
+
num: number;
|
|
515
|
+
avg: number;
|
|
516
|
+
}>;
|
|
517
|
+
columns: Array<number | undefined>;
|
|
518
|
+
columnSpans: Array<number | undefined>;
|
|
519
|
+
containerItemKeys: Map<string, number>;
|
|
334
520
|
containerItemTypes: Map<number, string>;
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
startBufferedId?: string;
|
|
343
|
-
startNoBuffer: number;
|
|
521
|
+
dataChangeEpoch: number;
|
|
522
|
+
dataChangeNeedsScrollUpdate: boolean;
|
|
523
|
+
didColumnsChange?: boolean;
|
|
524
|
+
didDataChange?: boolean;
|
|
525
|
+
didFinishInitialScroll?: boolean;
|
|
526
|
+
didContainersLayout?: boolean;
|
|
527
|
+
enableScrollForNextCalculateItemsInView: boolean;
|
|
344
528
|
endBuffered: number;
|
|
345
529
|
endNoBuffer: number;
|
|
530
|
+
endReachedSnapshot: ThresholdSnapshot | undefined;
|
|
346
531
|
firstFullyOnScreenIndex: number;
|
|
347
|
-
|
|
348
|
-
scrollPending: number;
|
|
349
|
-
scroll: number;
|
|
350
|
-
scrollTime: number;
|
|
351
|
-
scrollPrev: number;
|
|
352
|
-
scrollPrevTime: number;
|
|
353
|
-
scrollAdjustHandler: ScrollAdjustHandler;
|
|
354
|
-
triggerCalculateItemsInView?: (params?: {
|
|
355
|
-
doMVCP?: boolean;
|
|
356
|
-
dataChanged?: boolean;
|
|
357
|
-
forceFullItemPositions?: boolean;
|
|
358
|
-
}) => void;
|
|
359
|
-
maintainingScrollAtEnd?: boolean;
|
|
360
|
-
totalSize: number;
|
|
361
|
-
otherAxisSize?: number;
|
|
362
|
-
timeouts: Set<number>;
|
|
363
|
-
timeoutSizeMessage: any;
|
|
364
|
-
nativeMarginTop: number;
|
|
365
|
-
indexByKey: Map<string, number>;
|
|
532
|
+
hasScrolled?: boolean;
|
|
366
533
|
idCache: string[];
|
|
367
|
-
|
|
368
|
-
scrollHistory: Array<{
|
|
369
|
-
scroll: number;
|
|
370
|
-
time: number;
|
|
371
|
-
}>;
|
|
372
|
-
lastScrollAdjustForHistory?: number;
|
|
373
|
-
startReachedSnapshot: ThresholdSnapshot | undefined;
|
|
374
|
-
endReachedSnapshot: ThresholdSnapshot | undefined;
|
|
375
|
-
scrollForNextCalculateItemsInView: {
|
|
376
|
-
top: number;
|
|
377
|
-
bottom: number;
|
|
378
|
-
} | undefined;
|
|
379
|
-
enableScrollForNextCalculateItemsInView: boolean;
|
|
380
|
-
minIndexSizeChanged: number | undefined;
|
|
381
|
-
queuedInitialLayout?: boolean | undefined;
|
|
382
|
-
queuedCalculateItemsInView: number | undefined;
|
|
383
|
-
dataChangeNeedsScrollUpdate: boolean;
|
|
384
|
-
previousData?: readonly unknown[];
|
|
385
|
-
didColumnsChange?: boolean;
|
|
386
|
-
didDataChange?: boolean;
|
|
387
|
-
isFirst?: boolean;
|
|
388
|
-
lastBatchingAction: number;
|
|
534
|
+
idsInView: string[];
|
|
389
535
|
ignoreScrollFromMVCP?: {
|
|
390
536
|
lt?: number;
|
|
391
537
|
gt?: number;
|
|
392
538
|
};
|
|
393
539
|
ignoreScrollFromMVCPIgnored?: boolean;
|
|
394
540
|
ignoreScrollFromMVCPTimeout?: any;
|
|
395
|
-
|
|
396
|
-
averageSizes: Record<string, {
|
|
397
|
-
num: number;
|
|
398
|
-
avg: number;
|
|
399
|
-
}>;
|
|
400
|
-
refScroller: React.RefObject<ScrollView>;
|
|
401
|
-
loadStartTime: number;
|
|
402
|
-
initialScroll: ScrollIndexWithOffsetAndContentOffset | undefined;
|
|
541
|
+
indexByKey: Map<string, number>;
|
|
403
542
|
initialAnchor?: InitialScrollAnchor;
|
|
543
|
+
initialNativeScrollWatchdog?: {
|
|
544
|
+
startScroll: number;
|
|
545
|
+
targetOffset: number;
|
|
546
|
+
};
|
|
547
|
+
initialScrollLastDidFinish: boolean;
|
|
548
|
+
initialScrollLastTarget: ScrollIndexWithOffsetAndContentOffset | undefined;
|
|
549
|
+
initialScrollLastTargetUsesOffset: boolean;
|
|
550
|
+
initialScrollPreviousDataLength: number;
|
|
551
|
+
initialScrollRetryLastLength: number | undefined;
|
|
552
|
+
initialScrollRetryWindowUntil: number;
|
|
553
|
+
initialScroll: ScrollIndexWithOffsetAndContentOffset | undefined;
|
|
554
|
+
initialScrollUsesOffset: boolean;
|
|
555
|
+
isAtEnd: boolean;
|
|
556
|
+
isAtStart: boolean;
|
|
557
|
+
isEndReached: boolean | null;
|
|
558
|
+
isFirst?: boolean;
|
|
559
|
+
isStartReached: boolean | null;
|
|
560
|
+
lastBatchingAction: number;
|
|
404
561
|
lastLayout: LayoutRectangle | undefined;
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
562
|
+
lastScrollAdjustForHistory?: number;
|
|
563
|
+
lastScrollDelta: number;
|
|
564
|
+
loadStartTime: number;
|
|
565
|
+
maintainingScrollAtEnd?: boolean;
|
|
566
|
+
minIndexSizeChanged: number | undefined;
|
|
567
|
+
mvcpAnchorLock?: {
|
|
568
|
+
id: string;
|
|
569
|
+
position: number;
|
|
570
|
+
quietPasses: number;
|
|
571
|
+
expiresAt: number;
|
|
572
|
+
};
|
|
573
|
+
contentInsetOverride?: Partial<Insets> | null;
|
|
574
|
+
nativeContentInset?: Insets;
|
|
575
|
+
nativeMarginTop: number;
|
|
576
|
+
needsOtherAxisSize?: boolean;
|
|
577
|
+
otherAxisSize?: number;
|
|
578
|
+
pendingNativeMVCPAdjust?: {
|
|
579
|
+
amount: number;
|
|
580
|
+
closestDistanceToClamp: number;
|
|
581
|
+
hasApproachedClamp: boolean;
|
|
582
|
+
manualApplied: number;
|
|
583
|
+
startScroll: number;
|
|
584
|
+
};
|
|
585
|
+
pendingMaintainScrollAtEnd?: boolean;
|
|
410
586
|
pendingTotalSize?: number;
|
|
411
|
-
|
|
587
|
+
pendingScrollResolve?: (() => void) | undefined;
|
|
588
|
+
positions: Array<number | undefined>;
|
|
589
|
+
previousData?: readonly unknown[];
|
|
590
|
+
queuedCalculateItemsInView: number | undefined;
|
|
591
|
+
queuedMVCPRecalculate?: number;
|
|
592
|
+
queuedInitialLayout?: boolean | undefined;
|
|
593
|
+
refScroller: React.RefObject<LegendListScrollerRef | null>;
|
|
594
|
+
scroll: number;
|
|
595
|
+
scrollAdjustHandler: ScrollAdjustHandler;
|
|
596
|
+
scrollForNextCalculateItemsInView: {
|
|
597
|
+
top: number | null;
|
|
598
|
+
bottom: number | null;
|
|
599
|
+
} | undefined;
|
|
600
|
+
scrollHistory: Array<{
|
|
601
|
+
scroll: number;
|
|
602
|
+
time: number;
|
|
603
|
+
}>;
|
|
604
|
+
scrollingTo?: ScrollTarget | undefined;
|
|
605
|
+
scrollLastCalculate?: number;
|
|
606
|
+
scrollLength: number;
|
|
607
|
+
scrollPending: number;
|
|
608
|
+
scrollPrev: number;
|
|
609
|
+
scrollPrevTime: number;
|
|
610
|
+
scrollProcessingEnabled: boolean;
|
|
611
|
+
scrollTime: number;
|
|
612
|
+
sizes: Map<string, number>;
|
|
613
|
+
sizesKnown: Map<string, number>;
|
|
614
|
+
startBuffered: number;
|
|
615
|
+
startBufferedId?: string;
|
|
616
|
+
startNoBuffer: number;
|
|
617
|
+
startReachedSnapshotDataChangeEpoch: number | undefined;
|
|
618
|
+
startReachedSnapshot: ThresholdSnapshot | undefined;
|
|
619
|
+
stickyContainerPool: Set<number>;
|
|
620
|
+
stickyContainers: Map<number, number>;
|
|
621
|
+
timeouts: Set<number>;
|
|
622
|
+
timeoutSetPaddingTop?: any;
|
|
623
|
+
timeoutSizeMessage: any;
|
|
624
|
+
timeoutCheckFinishedScrollFallback?: any;
|
|
625
|
+
totalSize: number;
|
|
626
|
+
triggerCalculateItemsInView?: (params?: {
|
|
627
|
+
doMVCP?: boolean;
|
|
628
|
+
dataChanged?: boolean;
|
|
629
|
+
forceFullItemPositions?: boolean;
|
|
630
|
+
}) => void;
|
|
631
|
+
viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs<any> | undefined;
|
|
412
632
|
props: {
|
|
413
633
|
alignItemsAtEnd: boolean;
|
|
634
|
+
animatedProps: StylesAsSharedValue<Record<string, any>>;
|
|
635
|
+
alwaysRender: AlwaysRenderConfig | undefined;
|
|
636
|
+
alwaysRenderIndicesArr: number[];
|
|
637
|
+
alwaysRenderIndicesSet: Set<number>;
|
|
638
|
+
contentInset: Insets | undefined;
|
|
414
639
|
data: readonly any[];
|
|
415
640
|
dataVersion: Key | undefined;
|
|
641
|
+
drawDistance: number;
|
|
416
642
|
estimatedItemSize: number | undefined;
|
|
417
|
-
getEstimatedItemSize:
|
|
418
|
-
getFixedItemSize:
|
|
419
|
-
getItemType:
|
|
643
|
+
getEstimatedItemSize: LegendListPropsInternal["getEstimatedItemSize"];
|
|
644
|
+
getFixedItemSize: LegendListPropsInternal["getFixedItemSize"];
|
|
645
|
+
getItemType: LegendListPropsInternal["getItemType"];
|
|
420
646
|
horizontal: boolean;
|
|
421
|
-
|
|
422
|
-
|
|
647
|
+
initialContainerPoolRatio: number;
|
|
648
|
+
itemsAreEqual: LegendListPropsInternal["itemsAreEqual"];
|
|
649
|
+
keyExtractor: LegendListPropsInternal["keyExtractor"];
|
|
650
|
+
maintainScrollAtEnd: MaintainScrollAtEndNormalized | undefined;
|
|
423
651
|
maintainScrollAtEndThreshold: number | undefined;
|
|
424
|
-
maintainVisibleContentPosition:
|
|
425
|
-
|
|
652
|
+
maintainVisibleContentPosition: MaintainVisibleContentPositionNormalized;
|
|
653
|
+
numColumns: number;
|
|
654
|
+
onEndReached: LegendListPropsInternal["onEndReached"];
|
|
426
655
|
onEndReachedThreshold: number | null | undefined;
|
|
427
|
-
onItemSizeChanged:
|
|
428
|
-
onLoad:
|
|
429
|
-
onScroll:
|
|
430
|
-
onStartReached:
|
|
656
|
+
onItemSizeChanged: LegendListPropsInternal["onItemSizeChanged"];
|
|
657
|
+
onLoad: LegendListPropsInternal["onLoad"];
|
|
658
|
+
onScroll: LegendListPropsInternal["onScroll"];
|
|
659
|
+
onStartReached: LegendListPropsInternal["onStartReached"];
|
|
431
660
|
onStartReachedThreshold: number | null | undefined;
|
|
432
|
-
onStickyHeaderChange:
|
|
661
|
+
onStickyHeaderChange: LegendListPropsInternal["onStickyHeaderChange"];
|
|
662
|
+
overrideItemLayout: LegendListPropsInternal["overrideItemLayout"];
|
|
433
663
|
recycleItems: boolean;
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
renderItem: LegendListProps["renderItem"];
|
|
437
|
-
scrollBuffer: number;
|
|
438
|
-
numColumns: number;
|
|
439
|
-
initialContainerPoolRatio: number;
|
|
440
|
-
stylePaddingTop: number | undefined;
|
|
664
|
+
renderItem: LegendListPropsInternal["renderItem"];
|
|
665
|
+
scrollBuffer?: number;
|
|
441
666
|
snapToIndices: number[] | undefined;
|
|
442
|
-
|
|
667
|
+
positionComponentInternal: React.ComponentType<any> | undefined;
|
|
668
|
+
stickyPositionComponentInternal: React.ComponentType<any> | undefined;
|
|
443
669
|
stickyIndicesArr: number[];
|
|
444
|
-
|
|
445
|
-
|
|
670
|
+
stickyIndicesSet: Set<number>;
|
|
671
|
+
stylePaddingBottom: number | undefined;
|
|
672
|
+
stylePaddingTop: number | undefined;
|
|
673
|
+
suggestEstimatedItemSize: boolean;
|
|
674
|
+
useWindowScroll: boolean;
|
|
446
675
|
};
|
|
447
676
|
}
|
|
448
677
|
interface ViewableRange<T> {
|
|
449
|
-
startBuffered: number;
|
|
450
|
-
start: number;
|
|
451
|
-
endBuffered: number;
|
|
452
678
|
end: number;
|
|
679
|
+
endBuffered: number;
|
|
453
680
|
items: T[];
|
|
681
|
+
start: number;
|
|
682
|
+
startBuffered: number;
|
|
454
683
|
}
|
|
455
684
|
interface LegendListRenderItemProps<ItemT, TItemType extends string | number | undefined = string | number | undefined> {
|
|
456
|
-
item: ItemT;
|
|
457
|
-
type: TItemType;
|
|
458
|
-
index: number;
|
|
459
685
|
data: readonly ItemT[];
|
|
460
686
|
extraData: any;
|
|
687
|
+
index: number;
|
|
688
|
+
item: ItemT;
|
|
689
|
+
type: TItemType;
|
|
461
690
|
}
|
|
462
|
-
type
|
|
463
|
-
activeStickyIndex: number
|
|
691
|
+
type LegendListState$1 = {
|
|
692
|
+
activeStickyIndex: number;
|
|
464
693
|
contentLength: number;
|
|
465
694
|
data: readonly any[];
|
|
466
|
-
elementAtIndex: (index: number) =>
|
|
695
|
+
elementAtIndex: (index: number) => any;
|
|
467
696
|
end: number;
|
|
468
697
|
endBuffered: number;
|
|
469
698
|
isAtEnd: boolean;
|
|
470
699
|
isAtStart: boolean;
|
|
700
|
+
isEndReached: boolean;
|
|
701
|
+
isStartReached: boolean;
|
|
702
|
+
listen: <T extends LegendListListenerType>(listenerType: T, callback: (value: ListenerTypeValueMap[T]) => void) => () => void;
|
|
703
|
+
listenToPosition: (key: string, callback: (value: number) => void) => () => void;
|
|
471
704
|
positionAtIndex: (index: number) => number;
|
|
472
|
-
|
|
705
|
+
positionByKey: (key: string) => number | undefined;
|
|
473
706
|
scroll: number;
|
|
474
707
|
scrollLength: number;
|
|
708
|
+
scrollVelocity: number;
|
|
475
709
|
sizeAtIndex: (index: number) => number;
|
|
476
710
|
sizes: Map<string, number>;
|
|
477
711
|
start: number;
|
|
478
712
|
startBuffered: number;
|
|
479
713
|
};
|
|
480
|
-
type LegendListRef = {
|
|
714
|
+
type LegendListRef$1 = {
|
|
481
715
|
/**
|
|
482
716
|
* Displays the scroll indicators momentarily.
|
|
483
717
|
*/
|
|
@@ -485,7 +719,7 @@ type LegendListRef = {
|
|
|
485
719
|
/**
|
|
486
720
|
* Returns the native ScrollView component reference.
|
|
487
721
|
*/
|
|
488
|
-
getNativeScrollRef():
|
|
722
|
+
getNativeScrollRef(): any;
|
|
489
723
|
/**
|
|
490
724
|
* Returns the scroll responder instance for handling scroll events.
|
|
491
725
|
*/
|
|
@@ -493,11 +727,11 @@ type LegendListRef = {
|
|
|
493
727
|
/**
|
|
494
728
|
* Returns the ScrollResponderMixin for advanced scroll handling.
|
|
495
729
|
*/
|
|
496
|
-
getScrollResponder():
|
|
730
|
+
getScrollResponder(): any;
|
|
497
731
|
/**
|
|
498
732
|
* Returns the internal state of the scroll virtualization.
|
|
499
733
|
*/
|
|
500
|
-
getState():
|
|
734
|
+
getState(): LegendListState$1;
|
|
501
735
|
/**
|
|
502
736
|
* Scrolls a specific index into view.
|
|
503
737
|
* @param params - Parameters for scrolling.
|
|
@@ -507,7 +741,7 @@ type LegendListRef = {
|
|
|
507
741
|
scrollIndexIntoView(params: {
|
|
508
742
|
animated?: boolean | undefined;
|
|
509
743
|
index: number;
|
|
510
|
-
}): void
|
|
744
|
+
}): Promise<void>;
|
|
511
745
|
/**
|
|
512
746
|
* Scrolls a specific index into view.
|
|
513
747
|
* @param params - Parameters for scrolling.
|
|
@@ -517,7 +751,7 @@ type LegendListRef = {
|
|
|
517
751
|
scrollItemIntoView(params: {
|
|
518
752
|
animated?: boolean | undefined;
|
|
519
753
|
item: any;
|
|
520
|
-
}): void
|
|
754
|
+
}): Promise<void>;
|
|
521
755
|
/**
|
|
522
756
|
* Scrolls to the end of the list.
|
|
523
757
|
* @param options - Options for scrolling.
|
|
@@ -527,7 +761,7 @@ type LegendListRef = {
|
|
|
527
761
|
scrollToEnd(options?: {
|
|
528
762
|
animated?: boolean | undefined;
|
|
529
763
|
viewOffset?: number | undefined;
|
|
530
|
-
}): void
|
|
764
|
+
}): Promise<void>;
|
|
531
765
|
/**
|
|
532
766
|
* Scrolls to a specific index in the list.
|
|
533
767
|
* @param params - Parameters for scrolling.
|
|
@@ -541,7 +775,7 @@ type LegendListRef = {
|
|
|
541
775
|
index: number;
|
|
542
776
|
viewOffset?: number | undefined;
|
|
543
777
|
viewPosition?: number | undefined;
|
|
544
|
-
}): void
|
|
778
|
+
}): Promise<void>;
|
|
545
779
|
/**
|
|
546
780
|
* Scrolls to a specific item in the list.
|
|
547
781
|
* @param params - Parameters for scrolling.
|
|
@@ -555,7 +789,7 @@ type LegendListRef = {
|
|
|
555
789
|
item: any;
|
|
556
790
|
viewOffset?: number | undefined;
|
|
557
791
|
viewPosition?: number | undefined;
|
|
558
|
-
}): void
|
|
792
|
+
}): Promise<void>;
|
|
559
793
|
/**
|
|
560
794
|
* Scrolls to a specific offset in pixels.
|
|
561
795
|
* @param params - Parameters for scrolling.
|
|
@@ -565,36 +799,49 @@ type LegendListRef = {
|
|
|
565
799
|
scrollToOffset(params: {
|
|
566
800
|
offset: number;
|
|
567
801
|
animated?: boolean | undefined;
|
|
568
|
-
}): void
|
|
802
|
+
}): Promise<void>;
|
|
569
803
|
/**
|
|
570
804
|
* Sets or adds to the offset of the visible content anchor.
|
|
571
805
|
* @param value - The offset to set or add.
|
|
572
806
|
* @param animated - If true, uses Animated to animate the change.
|
|
573
807
|
*/
|
|
574
|
-
setVisibleContentAnchorOffset(value: number | ((
|
|
808
|
+
setVisibleContentAnchorOffset(value: number | ((val: number) => number)): void;
|
|
575
809
|
/**
|
|
576
810
|
* Sets whether scroll processing is enabled.
|
|
577
811
|
* @param enabled - If true, scroll processing is enabled.
|
|
578
812
|
*/
|
|
579
813
|
setScrollProcessingEnabled(enabled: boolean): void;
|
|
814
|
+
/**
|
|
815
|
+
* Clears internal virtualization caches.
|
|
816
|
+
* @param options - Cache clearing options.
|
|
817
|
+
* @param options.mode - `sizes` clears measurement caches. `full` also clears key/position caches.
|
|
818
|
+
*/
|
|
819
|
+
clearCaches(options?: {
|
|
820
|
+
mode?: "sizes" | "full";
|
|
821
|
+
}): void;
|
|
822
|
+
/**
|
|
823
|
+
* Reports an externally measured content inset. Pass null/undefined to clear.
|
|
824
|
+
* Values are merged on top of props/animated/native insets.
|
|
825
|
+
*/
|
|
826
|
+
reportContentInset(inset?: Partial<Insets> | null): void;
|
|
580
827
|
};
|
|
581
828
|
interface ViewToken<ItemT = any> {
|
|
582
|
-
|
|
583
|
-
key: string;
|
|
829
|
+
containerId: number;
|
|
584
830
|
index: number;
|
|
585
831
|
isViewable: boolean;
|
|
586
|
-
|
|
832
|
+
item: ItemT;
|
|
833
|
+
key: string;
|
|
587
834
|
}
|
|
588
835
|
interface ViewAmountToken<ItemT = any> extends ViewToken<ItemT> {
|
|
589
|
-
sizeVisible: number;
|
|
590
|
-
size: number;
|
|
591
|
-
percentVisible: number;
|
|
592
836
|
percentOfScroller: number;
|
|
837
|
+
percentVisible: number;
|
|
593
838
|
scrollSize: number;
|
|
839
|
+
size: number;
|
|
840
|
+
sizeVisible: number;
|
|
594
841
|
}
|
|
595
842
|
interface ViewabilityConfigCallbackPair<ItemT = any> {
|
|
596
|
-
viewabilityConfig: ViewabilityConfig;
|
|
597
843
|
onViewableItemsChanged?: OnViewableItemsChanged<ItemT>;
|
|
844
|
+
viewabilityConfig: ViewabilityConfig;
|
|
598
845
|
}
|
|
599
846
|
type ViewabilityConfigCallbackPairs<ItemT> = ViewabilityConfigCallbackPair<ItemT>[];
|
|
600
847
|
type OnViewableItemsChanged<ItemT> = ((info: {
|
|
@@ -633,14 +880,14 @@ interface ViewabilityConfig {
|
|
|
633
880
|
type ViewabilityCallback<ItemT = any> = (viewToken: ViewToken<ItemT>) => void;
|
|
634
881
|
type ViewabilityAmountCallback<ItemT = any> = (viewToken: ViewAmountToken<ItemT>) => void;
|
|
635
882
|
interface LegendListRecyclingState<T> {
|
|
636
|
-
item: T;
|
|
637
|
-
prevItem: T | undefined;
|
|
638
883
|
index: number;
|
|
884
|
+
item: T;
|
|
639
885
|
prevIndex: number | undefined;
|
|
886
|
+
prevItem: T | undefined;
|
|
640
887
|
}
|
|
641
|
-
type TypedForwardRef = <T, P = {}>(render: (props: P, ref: React.Ref<T>) => React.
|
|
888
|
+
type TypedForwardRef = <T, P = {}>(render: (props: P, ref: React.Ref<T>) => React.ReactElement | null) => (props: P & React.RefAttributes<T>) => React.ReactElement | null;
|
|
642
889
|
declare const typedForwardRef: TypedForwardRef;
|
|
643
|
-
type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqual?: (prevProps: Readonly<React.
|
|
890
|
+
type TypedMemo = <T extends React.ComponentType<any>>(Component: T, propsAreEqual?: (prevProps: Readonly<React.ComponentProps<T>>, nextProps: Readonly<React.ComponentProps<T>>) => boolean) => T & {
|
|
644
891
|
displayName?: string;
|
|
645
892
|
};
|
|
646
893
|
declare const typedMemo: TypedMemo;
|
|
@@ -667,4 +914,35 @@ type GetRenderedItemResult<ItemT> = {
|
|
|
667
914
|
};
|
|
668
915
|
type GetRenderedItem = (key: string) => GetRenderedItemResult<any> | null;
|
|
669
916
|
|
|
670
|
-
|
|
917
|
+
type LegendListPropsOverrides<ItemT, TItemType extends string | undefined> = Omit<LegendListPropsBase<ItemT, ScrollViewProps, TItemType>, "onScroll" | "refScrollView" | "renderScrollComponent" | "ListHeaderComponentStyle" | "ListFooterComponentStyle"> & {
|
|
918
|
+
onScroll?: (event: NativeSyntheticEvent$1<NativeScrollEvent$1>) => void;
|
|
919
|
+
refScrollView?: React.Ref<ScrollView>;
|
|
920
|
+
renderScrollComponent?: (props: ScrollViewProps) => React.ReactElement<ScrollViewProps>;
|
|
921
|
+
ListHeaderComponentStyle?: StyleProp$1<ViewStyle$1> | undefined;
|
|
922
|
+
ListFooterComponentStyle?: StyleProp$1<ViewStyle$1> | undefined;
|
|
923
|
+
};
|
|
924
|
+
type LegendListProps<ItemT = any, TItemType extends string | undefined = string | undefined> = LegendListPropsOverrides<ItemT, TItemType>;
|
|
925
|
+
type LegendListRef = Omit<LegendListRef$1, "getNativeScrollRef" | "getScrollResponder" | "reportContentInset"> & {
|
|
926
|
+
getNativeScrollRef(): React.ElementRef<typeof ScrollViewComponent>;
|
|
927
|
+
getScrollResponder(): ScrollResponderMixin;
|
|
928
|
+
reportContentInset(inset?: Partial<Insets$1> | null): void;
|
|
929
|
+
};
|
|
930
|
+
type LegendListState = Omit<LegendListState$1, "elementAtIndex"> & {
|
|
931
|
+
elementAtIndex: (index: number) => View | null | undefined;
|
|
932
|
+
};
|
|
933
|
+
type LegendListComponent = <ItemT = any>(props: LegendListProps<ItemT> & React.RefAttributes<LegendListRef>) => React.ReactElement | null;
|
|
934
|
+
|
|
935
|
+
declare function useViewability<ItemT = any>(callback: ViewabilityCallback<ItemT>, configId?: string): void;
|
|
936
|
+
declare function useViewabilityAmount<ItemT = any>(callback: ViewabilityAmountCallback<ItemT>): void;
|
|
937
|
+
declare function useRecyclingEffect(effect: (info: LegendListRecyclingState<unknown>) => void | (() => void)): void;
|
|
938
|
+
declare function useRecyclingState<ItemT>(valueOrFun: ((info: LegendListRecyclingState<ItemT>) => ItemT) | ItemT): readonly [ItemT, Dispatch<SetStateAction<ItemT>>];
|
|
939
|
+
declare function useIsLastItem(): boolean;
|
|
940
|
+
declare function useListScrollSize(): {
|
|
941
|
+
width: number;
|
|
942
|
+
height: number;
|
|
943
|
+
};
|
|
944
|
+
declare function useSyncLayout(): () => void;
|
|
945
|
+
|
|
946
|
+
declare const LegendList: LegendListComponent;
|
|
947
|
+
|
|
948
|
+
export { type AlwaysRenderConfig, type BaseScrollViewProps, type ColumnWrapperStyle, type GetRenderedItem, type GetRenderedItemResult, type InitialScrollAnchor, type Insets, type InternalState, type LayoutRectangle, LegendList, type LegendListComponent, type LegendListMetrics, type LegendListProps, type LegendListPropsBase, type LegendListRecyclingState, type LegendListRef, type LegendListRenderItemProps, type LegendListScrollerRef, type LegendListState, type MaintainScrollAtEndOnOptions, type MaintainScrollAtEndOptions, type MaintainVisibleContentPositionConfig, type MaintainVisibleContentPositionNormalized, type NativeScrollEvent, type NativeSyntheticEvent, type OnViewableItemsChanged, type ScrollEventTargetLike, type ScrollIndexWithOffset, type ScrollIndexWithOffsetAndContentOffset, type ScrollIndexWithOffsetPosition, type ScrollTarget, type ScrollableNodeLike, type StickyHeaderConfig, type StyleProp, type ThresholdSnapshot, type TypedForwardRef, type TypedMemo, type ViewAmountToken, type ViewStyle, type ViewToken, type ViewabilityAmountCallback, type ViewabilityCallback, type ViewabilityConfig, type ViewabilityConfigCallbackPair, type ViewabilityConfigCallbackPairs, type ViewableRange, typedForwardRef, typedMemo, useIsLastItem, useListScrollSize, useRecyclingEffect, useRecyclingState, useSyncLayout, useViewability, useViewabilityAmount };
|