react-virtuoso 2.8.3 → 2.8.6

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.
Files changed (47) hide show
  1. package/dist/index.d.ts +847 -3
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.m.js +1 -1
  5. package/dist/index.m.js.map +1 -1
  6. package/package.json +6 -2
  7. package/dist/AATree.d.ts +0 -40
  8. package/dist/Grid.d.ts +0 -482
  9. package/dist/List.d.ts +0 -6253
  10. package/dist/Table.d.ts +0 -6087
  11. package/dist/alignToBottomSystem.d.ts +0 -549
  12. package/dist/comparators.d.ts +0 -3
  13. package/dist/components.d.ts +0 -7860
  14. package/dist/domIOSystem.d.ts +0 -15
  15. package/dist/followOutputSystem.d.ts +0 -378
  16. package/dist/gridSystem.d.ts +0 -281
  17. package/dist/groupedListSystem.d.ts +0 -75
  18. package/dist/hooks/__mocks__/useChangedChildSizes.d.ts +0 -4
  19. package/dist/hooks/__mocks__/useScrollTop.d.ts +0 -7
  20. package/dist/hooks/__mocks__/useSize.d.ts +0 -3
  21. package/dist/hooks/useChangedChildSizes.d.ts +0 -3
  22. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +0 -3
  23. package/dist/hooks/useScrollTop.d.ts +0 -6
  24. package/dist/hooks/useSize.d.ts +0 -6
  25. package/dist/hooks/useWindowViewportRect.d.ts +0 -2
  26. package/dist/initialItemCountSystem.d.ts +0 -542
  27. package/dist/initialScrollTopSystem.d.ts +0 -560
  28. package/dist/initialTopMostItemIndexSystem.d.ts +0 -163
  29. package/dist/interfaces.d.ts +0 -285
  30. package/dist/listStateSystem.d.ts +0 -489
  31. package/dist/listSystem.d.ts +0 -5426
  32. package/dist/loggerSystem.d.ts +0 -17
  33. package/dist/propsReadySystem.d.ts +0 -12
  34. package/dist/scrollIntoViewSystem.d.ts +0 -645
  35. package/dist/scrollSeekSystem.d.ts +0 -57
  36. package/dist/scrollToIndexSystem.d.ts +0 -81
  37. package/dist/sizeRangeSystem.d.ts +0 -50
  38. package/dist/sizeSystem.d.ts +0 -68
  39. package/dist/stateFlagsSystem.d.ts +0 -65
  40. package/dist/topItemCountSystem.d.ts +0 -489
  41. package/dist/totalListHeightSystem.d.ts +0 -517
  42. package/dist/upwardScrollFixSystem.d.ts +0 -614
  43. package/dist/utils/binaryArraySearch.d.ts +0 -6
  44. package/dist/utils/correctItemSize.d.ts +0 -1
  45. package/dist/utils/positionStickyCssValue.d.ts +0 -1
  46. package/dist/utils/simpleMemoize.d.ts +0 -1
  47. package/dist/windowScrollerSystem.d.ts +0 -35
@@ -1,163 +0,0 @@
1
- import * as u from '@virtuoso.dev/urx';
2
- import { IndexLocation } from './scrollToIndexSystem';
3
- export declare function getInitialTopMostItemIndexNumber(location: IndexLocation, totalCount: number): number;
4
- export declare const initialTopMostItemIndexSystem: u.SystemSpec<[u.SystemSpec<[u.SystemSpec<never[], () => {
5
- log: u.StatefulStream<import("./loggerSystem").Log>;
6
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
7
- }>], ([{ log }]: [{
8
- log: u.StatefulStream<import("./loggerSystem").Log>;
9
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
10
- }]) => {
11
- data: u.StatefulStream<import("./sizeSystem").Data>;
12
- totalCount: u.Stream<number>;
13
- sizeRanges: u.Stream<import("./sizeSystem").SizeRange[]>;
14
- groupIndices: u.StatefulStream<number[]>;
15
- defaultItemSize: u.StatefulStream<number | undefined>;
16
- fixedItemSize: u.StatefulStream<number | undefined>;
17
- unshiftWith: u.Stream<number>;
18
- shiftWith: u.Stream<number>;
19
- shiftWithOffset: u.Stream<number>;
20
- beforeUnshiftWith: u.Stream<number>;
21
- firstItemIndex: u.StatefulStream<number>;
22
- sizes: u.StatefulStream<import("./sizeSystem").SizeState>;
23
- listRefresh: u.Stream<boolean>;
24
- statefulTotalCount: u.StatefulStream<number>;
25
- trackItemSizes: u.StatefulStream<boolean>;
26
- itemSize: u.StatefulStream<import("./sizeSystem").SizeFunction>;
27
- }>, u.SystemSpec<never[], () => {
28
- scrollContainerState: u.Stream<[number, number]>;
29
- scrollTop: u.Stream<number>;
30
- viewportHeight: u.Stream<number>;
31
- headerHeight: u.StatefulStream<number>;
32
- footerHeight: u.StatefulStream<number>;
33
- scrollHeight: u.Stream<number>;
34
- smoothScrollTargetReached: u.Stream<true>;
35
- scrollTo: u.Stream<ScrollToOptions>;
36
- scrollBy: u.Stream<ScrollToOptions>;
37
- statefulScrollTop: u.StatefulStream<number>;
38
- deviation: u.StatefulStream<number>;
39
- scrollingInProgress: u.StatefulStream<boolean>;
40
- }>, u.SystemSpec<[u.SystemSpec<[u.SystemSpec<never[], () => {
41
- log: u.StatefulStream<import("./loggerSystem").Log>;
42
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
43
- }>], ([{ log }]: [{
44
- log: u.StatefulStream<import("./loggerSystem").Log>;
45
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
46
- }]) => {
47
- data: u.StatefulStream<import("./sizeSystem").Data>;
48
- totalCount: u.Stream<number>;
49
- sizeRanges: u.Stream<import("./sizeSystem").SizeRange[]>;
50
- groupIndices: u.StatefulStream<number[]>;
51
- defaultItemSize: u.StatefulStream<number | undefined>;
52
- fixedItemSize: u.StatefulStream<number | undefined>;
53
- unshiftWith: u.Stream<number>;
54
- shiftWith: u.Stream<number>;
55
- shiftWithOffset: u.Stream<number>;
56
- beforeUnshiftWith: u.Stream<number>;
57
- firstItemIndex: u.StatefulStream<number>;
58
- sizes: u.StatefulStream<import("./sizeSystem").SizeState>;
59
- listRefresh: u.Stream<boolean>;
60
- statefulTotalCount: u.StatefulStream<number>;
61
- trackItemSizes: u.StatefulStream<boolean>;
62
- itemSize: u.StatefulStream<import("./sizeSystem").SizeFunction>;
63
- }>, u.SystemSpec<never[], () => {
64
- scrollContainerState: u.Stream<[number, number]>;
65
- scrollTop: u.Stream<number>;
66
- viewportHeight: u.Stream<number>;
67
- headerHeight: u.StatefulStream<number>;
68
- footerHeight: u.StatefulStream<number>;
69
- scrollHeight: u.Stream<number>;
70
- smoothScrollTargetReached: u.Stream<true>;
71
- scrollTo: u.Stream<ScrollToOptions>;
72
- scrollBy: u.Stream<ScrollToOptions>;
73
- statefulScrollTop: u.StatefulStream<number>;
74
- deviation: u.StatefulStream<number>;
75
- scrollingInProgress: u.StatefulStream<boolean>;
76
- }>, u.SystemSpec<never[], () => {
77
- log: u.StatefulStream<import("./loggerSystem").Log>;
78
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
79
- }>], ([{ sizes, totalCount, listRefresh }, { scrollingInProgress, viewportHeight, scrollTo, smoothScrollTargetReached, headerHeight, footerHeight }, { log },]: [{
80
- data: u.StatefulStream<import("./sizeSystem").Data>;
81
- totalCount: u.Stream<number>;
82
- sizeRanges: u.Stream<import("./sizeSystem").SizeRange[]>;
83
- groupIndices: u.StatefulStream<number[]>;
84
- defaultItemSize: u.StatefulStream<number | undefined>;
85
- fixedItemSize: u.StatefulStream<number | undefined>;
86
- unshiftWith: u.Stream<number>;
87
- shiftWith: u.Stream<number>;
88
- shiftWithOffset: u.Stream<number>;
89
- beforeUnshiftWith: u.Stream<number>;
90
- firstItemIndex: u.StatefulStream<number>;
91
- sizes: u.StatefulStream<import("./sizeSystem").SizeState>;
92
- listRefresh: u.Stream<boolean>;
93
- statefulTotalCount: u.StatefulStream<number>;
94
- trackItemSizes: u.StatefulStream<boolean>;
95
- itemSize: u.StatefulStream<import("./sizeSystem").SizeFunction>;
96
- }, {
97
- scrollContainerState: u.Stream<[number, number]>;
98
- scrollTop: u.Stream<number>;
99
- viewportHeight: u.Stream<number>;
100
- headerHeight: u.StatefulStream<number>;
101
- footerHeight: u.StatefulStream<number>;
102
- scrollHeight: u.Stream<number>;
103
- smoothScrollTargetReached: u.Stream<true>;
104
- scrollTo: u.Stream<ScrollToOptions>;
105
- scrollBy: u.Stream<ScrollToOptions>;
106
- statefulScrollTop: u.StatefulStream<number>;
107
- deviation: u.StatefulStream<number>;
108
- scrollingInProgress: u.StatefulStream<boolean>;
109
- }, {
110
- log: u.StatefulStream<import("./loggerSystem").Log>;
111
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
112
- }]) => {
113
- scrollToIndex: u.Stream<IndexLocation>;
114
- topListHeight: u.StatefulStream<number>;
115
- }>, u.SystemSpec<[u.SystemSpec<never[], () => {
116
- log: u.StatefulStream<import("./loggerSystem").Log>;
117
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
118
- }>], ([{ log }]: [{
119
- log: u.StatefulStream<import("./loggerSystem").Log>;
120
- logLevel: u.StatefulStream<import("./loggerSystem").LogLevel>;
121
- }]) => {
122
- propsReady: u.StatefulStream<boolean>;
123
- didMount: u.Stream<boolean>;
124
- }>], ([{ sizes, listRefresh, defaultItemSize }, { scrollTop }, { scrollToIndex }, { didMount }]: [{
125
- data: u.StatefulStream<import("./sizeSystem").Data>;
126
- totalCount: u.Stream<number>;
127
- sizeRanges: u.Stream<import("./sizeSystem").SizeRange[]>;
128
- groupIndices: u.StatefulStream<number[]>;
129
- defaultItemSize: u.StatefulStream<number | undefined>;
130
- fixedItemSize: u.StatefulStream<number | undefined>;
131
- unshiftWith: u.Stream<number>;
132
- shiftWith: u.Stream<number>;
133
- shiftWithOffset: u.Stream<number>;
134
- beforeUnshiftWith: u.Stream<number>;
135
- firstItemIndex: u.StatefulStream<number>;
136
- sizes: u.StatefulStream<import("./sizeSystem").SizeState>;
137
- listRefresh: u.Stream<boolean>;
138
- statefulTotalCount: u.StatefulStream<number>;
139
- trackItemSizes: u.StatefulStream<boolean>;
140
- itemSize: u.StatefulStream<import("./sizeSystem").SizeFunction>;
141
- }, {
142
- scrollContainerState: u.Stream<[number, number]>;
143
- scrollTop: u.Stream<number>;
144
- viewportHeight: u.Stream<number>;
145
- headerHeight: u.StatefulStream<number>;
146
- footerHeight: u.StatefulStream<number>;
147
- scrollHeight: u.Stream<number>;
148
- smoothScrollTargetReached: u.Stream<true>;
149
- scrollTo: u.Stream<ScrollToOptions>;
150
- scrollBy: u.Stream<ScrollToOptions>;
151
- statefulScrollTop: u.StatefulStream<number>;
152
- deviation: u.StatefulStream<number>;
153
- scrollingInProgress: u.StatefulStream<boolean>;
154
- }, {
155
- scrollToIndex: u.Stream<IndexLocation>;
156
- topListHeight: u.StatefulStream<number>;
157
- }, {
158
- propsReady: u.StatefulStream<boolean>;
159
- didMount: u.Stream<boolean>;
160
- }]) => {
161
- scrolledToInitialItem: u.StatefulStream<boolean>;
162
- initialTopMostItemIndex: u.StatefulStream<IndexLocation>;
163
- }>;
@@ -1,285 +0,0 @@
1
- import { ComponentPropsWithRef, ComponentType, Key, ReactNode } from 'react';
2
- export interface ListRange {
3
- startIndex: number;
4
- endIndex: number;
5
- }
6
- export interface ItemContent<D, C> {
7
- (index: number, data: D, context: C): ReactNode;
8
- }
9
- export declare type FixedHeaderContent = (() => React.ReactChildren | React.ReactNode) | null;
10
- export interface GroupItemContent<D, C> {
11
- (index: number, groupIndex: number, data: D, context: C): ReactNode;
12
- }
13
- export interface GroupContent {
14
- (index: number): ReactNode;
15
- }
16
- export interface ItemProps {
17
- 'data-index': number;
18
- 'data-item-index': number;
19
- 'data-item-group-index'?: number;
20
- 'data-known-size': number;
21
- }
22
- export interface GroupProps {
23
- 'data-index': number;
24
- 'data-item-index': number;
25
- 'data-known-size': number;
26
- }
27
- export declare type TopItemListProps = Pick<ComponentPropsWithRef<'div'>, 'style' | 'children'>;
28
- export declare type TableProps = Pick<ComponentPropsWithRef<'table'>, 'style'>;
29
- /**
30
- * Passed to the Components.TableBody custom component
31
- */
32
- export declare type TableBodyProps = Pick<ComponentPropsWithRef<'tbody'>, 'style' | 'children' | 'ref' | 'className'> & {
33
- 'data-test-id': string;
34
- };
35
- /**
36
- * Passed to the Components.List custom component
37
- */
38
- export declare type ListProps = Pick<ComponentPropsWithRef<'div'>, 'style' | 'children' | 'ref'> & {
39
- 'data-test-id': string;
40
- };
41
- /**
42
- * Passed to the Components.List custom component
43
- */
44
- export declare type GridListProps = Pick<ComponentPropsWithRef<'div'>, 'style' | 'children' | 'ref' | 'className'>;
45
- /**
46
- * Passed to the Components.Scroller custom component
47
- */
48
- export declare type ScrollerProps = Pick<ComponentPropsWithRef<'div'>, 'style' | 'children' | 'tabIndex' | 'ref'> & {
49
- 'data-test-id'?: string;
50
- 'data-virtuoso-scroller'?: boolean;
51
- };
52
- /**
53
- * Passed to the Components.ScrollSeekPlaceholder custom component
54
- */
55
- export interface ScrollSeekPlaceholderProps {
56
- index: number;
57
- height: number;
58
- groupIndex?: number;
59
- type: 'group' | 'item';
60
- }
61
- /**
62
- * Passed to the GridComponents.ScrollSeekPlaceholder custom component
63
- */
64
- export interface GridScrollSeekPlaceholderProps {
65
- index: number;
66
- height: number;
67
- width: number;
68
- }
69
- /**
70
- * Customize the Virtuoso rendering by passing a set of custom components.
71
- */
72
- export interface Components<Context = unknown> {
73
- /**
74
- * Set to render a component at the top of the list.
75
- *
76
- * The header remains above the top items and does not remain sticky.
77
- */
78
- Header?: ComponentType<{
79
- context?: Context;
80
- }>;
81
- /**
82
- * Set to render a component at the bottom of the list.
83
- */
84
- Footer?: ComponentType<{
85
- context?: Context;
86
- }>;
87
- /**
88
- * Set to customize the item wrapping element. Use only if you would like to render list from elements different than a `div`.
89
- */
90
- Item?: ComponentType<ItemProps & {
91
- context?: Context;
92
- }>;
93
- /**
94
- * Set to customize the group item wrapping element. Use only if you would like to render list from elements different than a `div`.
95
- */
96
- Group?: ComponentType<GroupProps & {
97
- context?: Context;
98
- }>;
99
- /**
100
- * Set to customize the top list item wrapping element. Use if you would like to render list from elements different than a `div`
101
- * or you want to set a custom z-index for the sticky position.
102
- */
103
- TopItemList?: ComponentType<TopItemListProps & {
104
- context?: Context;
105
- }>;
106
- /**
107
- * Set to customize the outermost scrollable element. This should not be necessary in general,
108
- * as the component passes its HTML attribute props to it.
109
- */
110
- Scroller?: ComponentType<ScrollerProps & {
111
- context?: Context;
112
- }>;
113
- /**
114
- * Set to customize the items wrapper. Use only if you would like to render list from elements different than a `div`.
115
- */
116
- List?: ComponentType<ListProps & {
117
- context?: Context;
118
- }>;
119
- /**
120
- * Set to render a custom UI when the list is empty.
121
- */
122
- EmptyPlaceholder?: ComponentType<{
123
- context?: Context;
124
- }>;
125
- /**
126
- * Set to render an item placeholder when the user scrolls fast. See the `scrollSeek` property for more details.
127
- */
128
- ScrollSeekPlaceholder?: ComponentType<ScrollSeekPlaceholderProps & {
129
- context?: Context;
130
- }>;
131
- }
132
- /**
133
- * Customize the TableVirtuoso rendering by passing a set of custom components.
134
- */
135
- export interface TableComponents<Context = unknown> {
136
- /**
137
- * Set to customize the wrapping `table` element.
138
- *
139
- */
140
- Table?: ComponentType<TableProps & {
141
- context?: Context;
142
- }>;
143
- /**
144
- * Set to render a fixed header at the top of the table (`thead`). use [[fixedHeaderHeight]] to set the contents
145
- *
146
- */
147
- TableHead?: ComponentType<{
148
- context?: Context;
149
- }>;
150
- /**
151
- * Set to customize the item wrapping element. Default is `tr`.
152
- */
153
- TableRow?: ComponentType<ItemProps & {
154
- context?: Context;
155
- }>;
156
- /**
157
- * Set to customize the outermost scrollable element. This should not be necessary in general,
158
- * as the component passes its HTML attribute props to it.
159
- */
160
- Scroller?: ComponentType<ScrollerProps & {
161
- context?: Context;
162
- }>;
163
- /**
164
- * Set to customize the items wrapper. Default is `tbody`.
165
- */
166
- TableBody?: ComponentType<TableBodyProps & {
167
- context?: Context;
168
- }>;
169
- /**
170
- * Set to render a custom UI when the list is empty.
171
- */
172
- EmptyPlaceholder?: ComponentType<{
173
- context?: Context;
174
- }>;
175
- /**
176
- * Set to render an item placeholder when the user scrolls fast. See the `scrollSeek` property for more details.
177
- */
178
- ScrollSeekPlaceholder?: ComponentType<ScrollSeekPlaceholderProps & {
179
- context?: Context;
180
- }>;
181
- }
182
- export interface ComputeItemKey<D, C> {
183
- (index: number, item: D, context: C): Key;
184
- }
185
- export interface ScrollSeekToggle {
186
- (velocity: number, range: ListRange): boolean;
187
- }
188
- export interface ScrollSeekConfiguration {
189
- /**
190
- * Callback to determine if the list should enter "scroll seek" mode.
191
- */
192
- enter: ScrollSeekToggle;
193
- /**
194
- * called during scrolling in scroll seek mode - use to display a hint where the list is.
195
- */
196
- change?: (velocity: number, range: ListRange) => void;
197
- /**
198
- * Callback to determine if the list should enter "scroll seek" mode.
199
- */
200
- exit: ScrollSeekToggle;
201
- }
202
- export declare type FollowOutputScalarType = boolean | 'smooth' | 'auto';
203
- export declare type FollowOutputCallback = (isAtBottom: boolean) => FollowOutputScalarType;
204
- export declare type FollowOutput = FollowOutputCallback | FollowOutputScalarType;
205
- export interface Item<D> {
206
- index: number;
207
- offset: number;
208
- size: number;
209
- data?: D;
210
- }
211
- export interface RecordItem<D> extends Item<D> {
212
- type?: undefined;
213
- groupIndex?: number;
214
- originalIndex?: number;
215
- data?: D;
216
- }
217
- export interface GroupItem<D> extends Item<D> {
218
- type: 'group';
219
- originalIndex?: number;
220
- }
221
- export declare type ListItem<D> = RecordItem<D> | GroupItem<D>;
222
- export interface IndexLocationWithAlign {
223
- /**
224
- * The index of the item to scroll to.
225
- */
226
- index: number | 'LAST';
227
- /**
228
- * How to position the item in the viewport.
229
- */
230
- align?: 'start' | 'center' | 'end';
231
- /**
232
- * Set 'smooth' to have an animated transition to the specified location.
233
- */
234
- behavior?: 'smooth' | 'auto';
235
- /**
236
- * The offset to scroll.
237
- */
238
- offset?: number;
239
- }
240
- export declare type ListRootProps = Omit<React.HTMLProps<'div'>, 'ref' | 'data'>;
241
- export declare type TableRootProps = Omit<React.HTMLProps<'table'>, 'ref' | 'data'>;
242
- export declare type GridRootProps = Omit<React.HTMLProps<'div'>, 'ref' | 'data'>;
243
- export interface GridItem {
244
- 'data-index': number;
245
- className?: string;
246
- }
247
- export interface GridComponents<Context = any> {
248
- /**
249
- * Set to customize the item wrapping element. Use only if you would like to render list from elements different than a `div`.
250
- */
251
- Item?: ComponentType<GridItem & {
252
- context?: Context;
253
- }>;
254
- /**
255
- * Set to customize the outermost scrollable element. This should not be necessary in general,
256
- * as the component passes its HTML attribute props to it.
257
- */
258
- Scroller?: ComponentType<ScrollerProps & {
259
- context?: Context;
260
- }>;
261
- /**
262
- * Set to customize the items wrapper. Use only if you would like to render list from elements different than a `div`.
263
- */
264
- List?: ComponentType<GridListProps & {
265
- context?: Context;
266
- }>;
267
- /**
268
- * Set to render an item placeholder when the user scrolls fast.
269
- * See the `scrollSeekConfiguration` property for more details.
270
- */
271
- ScrollSeekPlaceholder?: ComponentType<GridScrollSeekPlaceholderProps & {
272
- context?: Context;
273
- }>;
274
- }
275
- export interface GridComputeItemKey {
276
- (index: number): Key;
277
- }
278
- export interface GridItemContent<C> {
279
- (index: number, context: C): ReactNode;
280
- }
281
- export interface WindowViewportInfo {
282
- offsetTop: number;
283
- visibleHeight: number;
284
- visibleWidth: number;
285
- }