react-virtuoso 2.7.1 → 2.8.0-alpha.4

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.
@@ -0,0 +1,205 @@
1
+ import { ReactElement, Ref } from 'react';
2
+ import { Components, ComputeItemKey, FollowOutput, IndexLocationWithAlign, ItemContent, ListItem, ListRange, ScrollSeekConfiguration } from '../interfaces';
3
+ import { List, ListHandle } from '../List';
4
+ import { ScrollIntoViewLocation } from '../scrollIntoViewSystem';
5
+ import { CompProps } from './CompProps';
6
+ export declare type ListProps = CompProps<typeof List>;
7
+ export interface VirtuosoProps<D, C> extends Omit<ListProps, 'groupCounts' | 'groupContent' | 'itemsRendered'> {
8
+ /**
9
+ * The total amount of items to be rendered.
10
+ */
11
+ totalCount?: number;
12
+ /**
13
+ * The data items to be rendered. If data is set, the total count will be inferred from the length of the array.
14
+ */
15
+ data?: readonly D[];
16
+ /**
17
+ * Additional context available in the custom components and content callbacks
18
+ */
19
+ context?: C;
20
+ /**
21
+ * Set the overscan property to make the component "chunk" the rendering of new items on scroll.
22
+ * The property causes the component to render more items than the necessary, but reduces the re-renders on scroll.
23
+ * Setting `{ main: number, reverse: number }` lets you extend the list in both the main and the reverse scrollable directions.
24
+ * See the `increaseViewportBy` property for a similar behavior (equivalent to the `overscan` in `react-window`).
25
+ */
26
+ overscan?: number | {
27
+ main: number;
28
+ reverse: number;
29
+ };
30
+ /**
31
+ * Set the increaseViewportBy property to artificially increase the viewport size, causing items to be rendered before outside of the viewport.
32
+ * The property causes the component to render more items than the necessary, but can help with slow loading content.
33
+ * Using `{ top?: number, bottom?: number }` lets you set the increase for each end separately.
34
+ */
35
+ increaseViewportBy?: number | {
36
+ top: number;
37
+ bottom: number;
38
+ };
39
+ /**
40
+ * Set the amount of items to remain fixed at the top of the list.
41
+ *
42
+ * For a header that scrolls away when scrolling, check the `components.Header` property.
43
+ */
44
+ topItemCount?: number;
45
+ /**
46
+ * Set to a value between 0 and totalCount - 1 to make the list start scrolled to that item.
47
+ */
48
+ initialTopMostItemIndex?: number;
49
+ /**
50
+ * Set this value to offset the initial location of the list.
51
+ * Warning: using this property will still run a render cycle at the scrollTop: 0 list window.
52
+ * If possible, avoid using it and stick to `initialTopMostItemIndex` instead.
53
+ */
54
+ initialScrollTop?: number;
55
+ /**
56
+ * Use for server-side rendering - if set, the list will render the specified amount of items
57
+ * regardless of the container / item size.
58
+ */
59
+ initialItemCount?: number;
60
+ /**
61
+ * Use the `components` property for advanced customization of the elements rendered by the list.
62
+ */
63
+ components?: Components<C>;
64
+ /**
65
+ * Set the callback to specify the contents of the item.
66
+ */
67
+ itemContent?: ItemContent<D, C>;
68
+ /**
69
+ * If specified, the component will use the function to generate the `key` property for each list item.
70
+ */
71
+ computeItemKey?: ComputeItemKey<D, C>;
72
+ /**
73
+ * By default, the component assumes the default item height from the first rendered item (rendering it as a "probe").
74
+ *
75
+ * If the first item turns out to be an outlier (very short or tall), the rest of the rendering will be slower,
76
+ * as multiple passes of rendering should happen for the list to fill the viewport.
77
+ *
78
+ * Setting `defaultItemHeight` causes the component to skip the "probe" rendering and use the property
79
+ * value as default height instead.
80
+ */
81
+ defaultItemHeight?: number;
82
+ /**
83
+ * Allows customizing the height/width calculation of `Item` elements.
84
+ *
85
+ * The default implementation reads `el.getBoundingClientRect().height` and `el.getBoundingClientRect().width`.
86
+ */
87
+ itemSize?: (el: HTMLElement, field: 'offsetHeight' | 'offsetWidth') => number;
88
+ /**
89
+ * Can be used to improve performance if the rendered items are of known size.
90
+ * Setting it causes the component to skip item measurements.
91
+ */
92
+ fixedItemHeight?: number;
93
+ /**
94
+ * Use to display placeholders if the user scrolls fast through the list.
95
+ *
96
+ * Set `components.ScrollSeekPlaceholder` to change the placeholder content.
97
+ */
98
+ scrollSeekConfiguration?: ScrollSeekConfiguration | false;
99
+ /**
100
+ * If set to `true`, the list automatically scrolls to bottom if the total count is changed.
101
+ * Set to `"smooth"` for an animated scrolling.
102
+ *
103
+ * By default, `followOutput` scrolls down only if the list is already at the bottom.
104
+ * To implement an arbitrary logic behind that, pass a function:
105
+ *
106
+ * ```tsx
107
+ * <Virtuoso
108
+ * followOutput={(isAtBottom: boolean) => {
109
+ * if (expression) {
110
+ * return 'smooth' // can be 'auto' or false to avoid scrolling
111
+ * } else {
112
+ * return false
113
+ * }
114
+ * }} />
115
+ * ```
116
+ */
117
+ followOutput?: FollowOutput;
118
+ /**
119
+ * Set to customize the wrapper tag for the header and footer components (default is `div`).
120
+ */
121
+ headerFooterTag?: string;
122
+ /**
123
+ * Use when implementing inverse infinite scrolling - decrease the value this property
124
+ * in combination with `data` or `totalCount` to prepend items to the top of the list.
125
+ *
126
+ * Warning: the firstItemIndex should **be a positive number**, based on the total amount of items to be displayed.
127
+ */
128
+ firstItemIndex?: number;
129
+ /**
130
+ * Called when the list starts/stops scrolling.
131
+ */
132
+ isScrolling?: (isScrolling: boolean) => void;
133
+ /**
134
+ * Gets called when the user scrolls to the end of the list.
135
+ * Receives the last item index as an argument. Can be used to implement endless scrolling.
136
+ */
137
+ endReached?: (index: number) => void;
138
+ /**
139
+ * Called when the user scrolls to the start of the list.
140
+ */
141
+ startReached?: (index: number) => void;
142
+ /**
143
+ * Called with the new set of items each time the list items are rendered due to scrolling.
144
+ */
145
+ rangeChanged?: (range: ListRange) => void;
146
+ /**
147
+ * Called with true / false when the list has reached the bottom / gets scrolled up.
148
+ * Can be used to load newer items, like `tail -f`.
149
+ */
150
+ atBottomStateChange?: (atBottom: boolean) => void;
151
+ /**
152
+ * Called with `true` / `false` when the list has reached the top / gets scrolled down.
153
+ */
154
+ atTopStateChange?: (atTop: boolean) => void;
155
+ /**
156
+ * Called when the total list height is changed due to new items or viewport resize.
157
+ */
158
+ totalListHeightChanged?: (height: number) => void;
159
+ /**
160
+ * Called with the new set of items each time the list items are rendered due to scrolling.
161
+ */
162
+ itemsRendered?: (items: ListItem<D>[]) => void;
163
+ /**
164
+ * Setting `alignToBottom` to `true` aligns the items to the bottom of the list if the list is shorter than the viewport.
165
+ * Use `followOutput` property to keep the list aligned when new items are appended.
166
+ */
167
+ alignToBottom?: boolean;
168
+ /**
169
+ * Uses the document scroller rather than wrapping the list in its own.
170
+ */
171
+ useWindowScroll?: boolean;
172
+ /**
173
+ * Pass a reference to a scrollable parent element, so that the list won't wrap in its own.
174
+ */
175
+ customScrollParent?: HTMLElement;
176
+ /**
177
+ * Provides access to the root DOM element
178
+ */
179
+ scrollerRef?: (ref: HTMLElement | Window | null) => any;
180
+ /**
181
+ * By default `4`. Redefine to change how much away from the bottom the scroller can be before the list is not considered not at bottom.
182
+ */
183
+ atBottomThreshold?: number;
184
+ }
185
+ export interface VirtuosoHandle extends ListHandle {
186
+ /**
187
+ * Scrolls the component to the specified item index. See {{IndexLocationWithAlign}} for more options.
188
+ */
189
+ scrollToIndex(location: number | IndexLocationWithAlign): void;
190
+ /**
191
+ * Scrolls the item into view if necessary. See [the website example](http://virtuoso.dev/keyboard-navigation/) for an implementation.
192
+ */
193
+ scrollIntoView(location: ScrollIntoViewLocation): void;
194
+ /**
195
+ * Scrolls the component to the specified location. See [ScrollToOptions (MDN)](https://developer.mozilla.org/en-US/docs/Web/API/ScrollToOptions)
196
+ */
197
+ scrollTo(location: ScrollToOptions): void;
198
+ /**
199
+ * Scrolls the component with the specified amount. See [ScrollToOptions (MDN)](https://developer.mozilla.org/en-US/docs/Web/API/ScrollToOptions)
200
+ */
201
+ scrollBy(location: ScrollToOptions): void;
202
+ }
203
+ export declare const Virtuoso: <ItemData extends unknown = any, Context extends unknown = any>(props: VirtuosoProps<ItemData, Context> & {
204
+ ref?: Ref<VirtuosoHandle> | undefined;
205
+ }) => ReactElement;
@@ -0,0 +1,93 @@
1
+ import { ReactElement, Ref } from 'react';
2
+ import { Grid, GridHandle } from '../Grid';
3
+ import { GridComponents, GridComputeItemKey, GridItemContent, IndexLocationWithAlign, ListRange, ScrollSeekConfiguration } from '../interfaces';
4
+ import { CompProps } from './CompProps';
5
+ declare type GridProps = CompProps<typeof Grid>;
6
+ export interface VirtuosoGridProps<C extends unknown = unknown> extends GridProps {
7
+ /**
8
+ * The total amount of items to be rendered.
9
+ */
10
+ totalCount: number;
11
+ /**
12
+ * Set the callback to specify the contents of the item.
13
+ */
14
+ itemContent?: GridItemContent<C>;
15
+ /**
16
+ * Use the `components` property for advanced customization of the elements rendered by the list.
17
+ */
18
+ components?: GridComponents<C>;
19
+ /**
20
+ * Set the overscan property to make the component "chunk" the rendering of new items on scroll.
21
+ * The property causes the component to render more items than the necessary, but reduces the re-renders on scroll.
22
+ * Setting `{ main: number, reverse: number }` lets you extend the list in both the main and the reverse scrollable directions.
23
+ */
24
+ overscan?: number | {
25
+ main: number;
26
+ reverse: number;
27
+ };
28
+ /**
29
+ * If specified, the component will use the function to generate the `key` property for each list item.
30
+ */
31
+ computeItemKey?: GridComputeItemKey;
32
+ /**
33
+ * Use to display placeholders if the user scrolls fast through the list.
34
+ *
35
+ * Set `components.ScrollSeekPlaceholder` to change the placeholder content.
36
+ */
37
+ scrollSeekConfiguration?: ScrollSeekConfiguration | false;
38
+ /**
39
+ * Called when the list starts/stops scrolling.
40
+ */
41
+ isScrolling?: (isScrolling: boolean) => void;
42
+ /**
43
+ * Gets called when the user scrolls to the end of the list.
44
+ * Receives the last item index as an argument. Can be used to implement endless scrolling.
45
+ */
46
+ endReached?: (index: number) => void;
47
+ /**
48
+ * Called when the user scrolls to the start of the list.
49
+ */
50
+ startReached?: (index: number) => void;
51
+ /**
52
+ * Called with the new set of items each time the list items are rendered due to scrolling.
53
+ */
54
+ rangeChanged?: (range: ListRange) => void;
55
+ /**
56
+ * Called with true / false when the list has reached the bottom / gets scrolled up.
57
+ * Can be used to load newer items, like `tail -f`.
58
+ */
59
+ atBottomStateChange?: (atBottom: boolean) => void;
60
+ /**
61
+ * Called with `true` / `false` when the list has reached the top / gets scrolled down.
62
+ */
63
+ atTopStateChange?: (atTop: boolean) => void;
64
+ /**
65
+ * Provides access to the root DOM element
66
+ */
67
+ scrollerRef?: (ref: HTMLElement | null) => any;
68
+ /**
69
+ * Sets the className for the list DOM element
70
+ */
71
+ listClassName?: string;
72
+ /**
73
+ * Sets the grid items' className
74
+ */
75
+ itemClassName?: string;
76
+ /**
77
+ * Uses the document scroller rather than wrapping the grid in its own.
78
+ */
79
+ useWindowScroll?: boolean;
80
+ /**
81
+ * Pass a reference to a scrollable parent element, so that the grid won't wrap in its own.
82
+ */
83
+ customScrollParent?: HTMLElement;
84
+ }
85
+ export interface VirtuosoGridHandle extends GridHandle {
86
+ scrollToIndex(location: number | IndexLocationWithAlign): void;
87
+ scrollTo(location: ScrollToOptions): void;
88
+ scrollBy(location: ScrollToOptions): void;
89
+ }
90
+ export declare const VirtuosoGrid: <Context extends unknown = any>(props: VirtuosoGridProps<Context> & {
91
+ ref?: Ref<VirtuosoGridHandle> | undefined;
92
+ }) => ReactElement;
93
+ export {};
@@ -0,0 +1,4 @@
1
+ export { Virtuoso } from './Virtuoso';
2
+ export { GroupedVirtuoso } from './GroupedVirtuoso';
3
+ export { TableVirtuoso } from './TableVirtuoso';
4
+ export { VirtuosoGrid } from './VirtuosoGrid';
@@ -1,3 +1,3 @@
1
- import { useEffect } from 'react';
2
- declare const useIsomorphicLayoutEffect: typeof useEffect;
1
+ import { useLayoutEffect } from 'react';
2
+ declare const useIsomorphicLayoutEffect: typeof useLayoutEffect;
3
3
  export default useIsomorphicLayoutEffect;
@@ -1,6 +1,6 @@
1
1
  export declare type ScrollerRef = Window | HTMLElement | null;
2
2
  export default function useScrollTop(scrollContainerStateCallback: (state: [number, number]) => void, smoothScrollTargetReached: (yes: true) => void, scrollerElement: any, scrollerRefCallback?: (ref: ScrollerRef) => void, customScrollParent?: HTMLElement): {
3
- scrollerRef: import("react").MutableRefObject<HTMLElement | Window | null>;
3
+ scrollerRef: import("react").MutableRefObject<Window | HTMLElement | null>;
4
4
  scrollByCallback: (location: ScrollToOptions) => void;
5
5
  scrollToCallback: (location: ScrollToOptions) => void;
6
6
  };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './components';
1
+ export * from './components/index';
2
2
  export * from './interfaces';
3
3
  export { LogLevel } from './loggerSystem';
package/dist/index.js CHANGED
@@ -1,2 +1,8 @@
1
- "use strict";var e=require("@virtuoso.dev/react-urx"),t=require("@virtuoso.dev/urx"),n=require("react");function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function r(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t.indexOf(n=i[o])>=0||(r[n]=e[n]);return r}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function a(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}function s(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}var u,c,m=t.system(function(){var e=t.stream(),n=t.stream(),o=t.statefulStream(0),r=t.stream(),i=t.statefulStream(0),a=t.stream(),l=t.stream(),s=t.statefulStream(0),u=t.statefulStream(0),c=t.stream(),m=t.stream(),d=t.statefulStream(!1);return t.connect(t.pipe(e,t.map(function(e){return e[0]})),n),t.connect(t.pipe(e,t.map(function(e){return e[1]})),l),t.connect(n,i),{scrollContainerState:e,scrollTop:n,viewportHeight:a,headerHeight:s,footerHeight:u,scrollHeight:l,smoothScrollTargetReached:r,scrollTo:c,scrollBy:m,statefulScrollTop:i,deviation:o,scrollingInProgress:d}},[],{singleton:!0});(c=exports.LogLevel||(exports.LogLevel={}))[c.DEBUG=0]="DEBUG",c[c.INFO=1]="INFO",c[c.WARN=2]="WARN",c[c.ERROR=3]="ERROR";var d=((u={})[exports.LogLevel.DEBUG]="debug",u[exports.LogLevel.INFO]="log",u[exports.LogLevel.WARN]="warn",u[exports.LogLevel.ERROR]="error",u),f=t.system(function(){var e=t.statefulStream(exports.LogLevel.ERROR);return{log:t.statefulStream(function(n,o,r){var i;void 0===r&&(r=exports.LogLevel.INFO),r>=(null!=(i=("undefined"==typeof globalThis?window:globalThis).VIRTUOSO_LOG_LEVEL)?i:t.getValue(e))&&console[d[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,o)}),logLevel:e}},[],{singleton:!0}),p=t.system(function(e){var n=e[0].log,o=t.statefulStream(!1),r=t.streamFromEmitter(t.pipe(o,t.filter(function(e){return e}),t.distinctUntilChanged()));return t.subscribe(o,function(e){e&&t.getValue(n)("props updated",{},exports.LogLevel.DEBUG)}),{propsReady:o,didMount:r}},t.tup(f),{singleton:!0}),h="up",g={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},v=t.system(function(e){var n=e[0],o=n.scrollContainerState,r=n.scrollTop,i=n.viewportHeight,a=n.headerHeight,l=n.footerHeight,s=n.scrollBy,u=t.statefulStream(!1),c=t.statefulStream(!0),m=t.stream(),d=t.stream(),f=t.statefulStream(4),p=t.streamFromEmitter(t.pipe(t.merge(t.pipe(t.duc(r),t.skip(1),t.mapTo(!0)),t.pipe(t.duc(r),t.skip(1),t.mapTo(!1),t.debounceTime(100))),t.distinctUntilChanged())),v=t.statefulStreamFromEmitter(t.pipe(t.merge(t.pipe(s,t.mapTo(!0)),t.pipe(s,t.mapTo(!1),t.debounceTime(200))),t.distinctUntilChanged()),!1);t.connect(t.pipe(t.duc(r),t.map(function(e){return 0===e}),t.distinctUntilChanged()),c),t.connect(c,d);var S=t.streamFromEmitter(t.pipe(t.combineLatest(o,t.duc(i),t.duc(a),t.duc(l),t.duc(f)),t.scan(function(e,t){var n,o,r=t[0],i=r[0],a=r[1],l=t[1],s={viewportHeight:l,scrollTop:i,scrollHeight:a};return i+l-a>-t[4]?(i>e.state.scrollTop?(n="SCROLLED_DOWN",o=e.state.scrollTop-i):(n="SIZE_DECREASED",o=e.state.scrollTop-i||e.scrollTopDelta),{atBottom:!0,state:s,atBottomBecause:n,scrollTopDelta:o}):{atBottom:!1,notAtBottomBecause:s.scrollHeight>e.state.scrollHeight?"SIZE_INCREASED":l<e.state.viewportHeight?"VIEWPORT_HEIGHT_DECREASING":i<e.state.scrollTop?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",state:s}},g),t.distinctUntilChanged(function(e,t){return e&&e.atBottom===t.atBottom}))),C=t.statefulStreamFromEmitter(t.pipe(o,t.scan(function(e,t){var n=t[0],o=t[1];return e.scrollHeight!==o?e.scrollTop!==n?{scrollHeight:o,scrollTop:n,jump:e.scrollTop-n,changed:!0}:{scrollHeight:o,scrollTop:n,jump:0,changed:!0}:{scrollTop:n,scrollHeight:o,jump:0,changed:!1}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),t.filter(function(e){return e.changed}),t.map(function(e){return e.jump})),0);t.connect(t.pipe(S,t.map(function(e){return e.atBottom})),u),t.subscribe(u,function(e){setTimeout(function(){return t.publish(m,e)})});var I=t.statefulStream("down");t.subscribe(u,function(e){setTimeout(function(){t.publish(m,e)})}),t.connect(t.pipe(o,t.map(function(e){return e[0]}),t.distinctUntilChanged(),t.scan(function(e,n){return t.getValue(v)?{direction:e.direction,prevScrollTop:n}:{direction:n<e.prevScrollTop?h:"down",prevScrollTop:n}},{direction:"down",prevScrollTop:0}),t.map(function(e){return e.direction})),I),t.connect(t.pipe(o,t.throttleTime(50),t.mapTo("none")),I),t.connect(u,m);var x=t.statefulStream(0);return t.connect(t.pipe(p,t.filter(function(e){return!e}),t.mapTo(0)),x),t.connect(t.pipe(r,t.throttleTime(100),t.withLatestFrom(p),t.filter(function(e){return!!e[1]}),t.scan(function(e,t){return[e[1],t[0]]},[0,0]),t.map(function(e){return e[1]-e[0]})),x),{isScrolling:p,isAtTop:c,isAtBottom:u,atBottomState:S,atTopStateChange:d,atBottomStateChange:m,scrollDirection:I,atBottomThreshold:f,scrollVelocity:x,lastJumpDueToItemResize:C}},t.tup(m)),S=t.system(function(e){var n=e[0].scrollVelocity,o=t.statefulStream(!1),r=t.stream(),i=t.statefulStream(!1);return t.connect(t.pipe(n,t.withLatestFrom(i,o,r),t.filter(function(e){return!!e[1]}),t.map(function(e){var t=e[0],n=e[1],o=e[2],r=e[3],i=n.enter;if(o){if((0,n.exit)(t,r))return!1}else if(i(t,r))return!0;return o}),t.distinctUntilChanged()),o),t.subscribe(t.pipe(t.combineLatest(o,n,r),t.withLatestFrom(i)),function(e){var t=e[0],n=e[1];return t[0]&&n&&n.change&&n.change(t[1],t[2])}),{isSeeking:o,scrollSeekConfiguration:i,scrollVelocity:n,scrollSeekRangeChanged:r}},t.tup(v),{singleton:!0}),C={lvl:0};function I(e,t,n,o,r){return void 0===o&&(o=C),void 0===r&&(r=C),{k:e,v:t,lvl:n,l:o,r:r}}function x(e){return e===C}function T(){return C}function w(e,t){if(x(e))return C;var n=e.k,o=e.l,r=e.r;if(t===n){if(x(o))return r;if(x(r))return o;var i=H(o);return B(k(e,{k:i[0],v:i[1],l:R(o)}))}return B(k(e,t<n?{l:w(o,t)}:{r:w(r,t)}))}function y(e,t,n){if(void 0===n&&(n="k"),x(e))return[-Infinity,void 0];if(e[n]===t)return[e.k,e.v];if(e[n]<t){var o=y(e.r,t,n);return-Infinity===o[0]?[e.k,e.v]:o}return y(e.l,t,n)}function b(e,t,n){return x(e)?I(t,n,1):t===e.k?k(e,{k:t,v:n}):function(e){return O(M(e))}(k(e,t<e.k?{l:b(e.l,t,n)}:{r:b(e.r,t,n)}))}function E(e,t,n){if(x(e))return[];var o=e.k,r=e.v,i=e.r,a=[];return o>t&&(a=a.concat(E(e.l,t,n))),o>=t&&o<=n&&a.push({k:o,v:r}),o<=n&&(a=a.concat(E(i,t,n))),a}function L(e){return x(e)?[]:[].concat(L(e.l),[{k:e.k,v:e.v}],L(e.r))}function H(e){return x(e.r)?[e.k,e.v]:H(e.r)}function R(e){return x(e.r)?e.l:B(k(e,{r:R(e.r)}))}function k(e,t){return I(void 0!==t.k?t.k:e.k,void 0!==t.v?t.v:e.v,void 0!==t.lvl?t.lvl:e.lvl,void 0!==t.l?t.l:e.l,void 0!==t.r?t.r:e.r)}function z(e){return x(e)||e.lvl>e.r.lvl}function B(e){var t=e.l,n=e.r,o=e.lvl;if(n.lvl>=o-1&&t.lvl>=o-1)return e;if(o>n.lvl+1){if(z(t))return M(k(e,{lvl:o-1}));if(x(t)||x(t.r))throw new Error("Unexpected empty nodes");return k(t.r,{l:k(t,{r:t.r.l}),r:k(e,{l:t.r.r,lvl:o-1}),lvl:o})}if(z(e))return O(k(e,{lvl:o-1}));if(x(n)||x(n.l))throw new Error("Unexpected empty nodes");var r=n.l,i=z(r)?n.lvl-1:n.lvl;return k(r,{l:k(e,{r:r.l,lvl:o-1}),r:O(k(n,{l:r.r,lvl:i})),lvl:r.lvl+1})}function F(e,t,n){return x(e)?[]:P(E(e,y(e,t)[0],n),function(e){return{index:e.k,value:e.v}})}function P(e,t){var n=e.length;if(0===n)return[];for(var o=t(e[0]),r=o.index,i=o.value,a=[],l=1;l<n;l++){var s=t(e[l]),u=s.index,c=s.value;a.push({start:r,end:u-1,value:i}),r=u,i=c}return a.push({start:r,end:Infinity,value:i}),a}function O(e){var t=e.r,n=e.lvl;return x(t)||x(t.r)||t.lvl!==n||t.r.lvl!==n?e:k(t,{l:k(e,{r:t.l}),lvl:n+1})}function M(e){var t=e.l;return x(t)||t.lvl!==e.lvl?e:k(t,{r:k(e,{l:t.r})})}function V(e,t,n,o){void 0===o&&(o=0);for(var r=e.length-1;o<=r;){var i=Math.floor((o+r)/2),a=n(e[i],t);if(0===a)return i;if(-1===a){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error("Failed binary finding record in array - "+e.join(",")+", searched for "+t)}function U(e,t,n){return e[V(e,t,n)]}function A(e,t){return Math.round(e.getBoundingClientRect()[t])}function W(e){var t=e.size,n=e.startIndex,o=e.endIndex;return function(e){return e.start===n&&(e.end===o||Infinity===e.end)&&e.value===t}}function N(e,t){var n=e.index;return t===n?0:t<n?-1:1}function D(e,t){var n=e.offset;return t===n?0:t<n?-1:1}function G(e){return{index:e.index,value:e}}function _(e,t){var n=t[0],o=t[1];n.length>0&&(0,t[2])("received item sizes",n,exports.LogLevel.DEBUG);var r=e.sizeTree,i=e.offsetTree,l=r,s=0;if(o.length>0&&x(r)&&2===n.length){var u=n[0].size,c=n[1].size;l=o.reduce(function(e,t){return b(b(e,t,u),t+1,c)},l)}else{var m=function(e,t){for(var n,o=x(e)?0:Infinity,r=a(t);!(n=r()).done;){var i=n.value,l=i.size,s=i.startIndex,u=i.endIndex;if(o=Math.min(o,s),x(e))e=b(e,0,l);else{var c=F(e,s-1,u+1);if(!c.some(W(i))){for(var m,d=!1,f=!1,p=a(c);!(m=p()).done;){var h=m.value,g=h.start,v=h.end,S=h.value;d?(u>=g||l===S)&&(e=w(e,g)):(f=S!==l,d=!0),v>u&&u>=g&&S!==l&&(e=b(e,u+1,S))}f&&(e=b(e,s,l))}}}return[e,o]}(l,n);l=m[0],s=m[1]}if(l===r)return e;var d=0,f=0,p=0,h=0;if(0!==s){h=V(i,s-1,N),p=i[h].offset;var g=y(l,s-1);d=g[0],f=g[1],i.length&&i[h].size===y(l,s)[1]&&(h-=1),i=i.slice(0,h+1)}else i=[];for(var v,S=a(F(l,s,Infinity));!(v=S()).done;){var C=v.value,I=C.start,E=C.value,L=(I-d)*f+p;i.push({offset:L,size:E,index:I}),d=I,p=L,f=E}return{sizeTree:l,offsetTree:i,groupOffsetTree:o.reduce(function(e,t){return b(e,t,j(t,i))},T()),lastIndex:d,lastOffset:p,lastSize:f,groupIndices:o}}function j(e,t){if(0===t.length)return 0;var n=U(t,e,N);return n.size*(e-n.index)+n.offset}function K(e,t){if(!Y(t))return e;for(var n=0;t.groupIndices[n]<=e+n;)n++;return e+n}function Y(e){return!x(e.groupOffsetTree)}var q={offsetHeight:"height",offsetWidth:"width"},Z=t.system(function(e){var n=e[0].log,r=t.stream(),i=t.stream(),a=t.statefulStreamFromEmitter(i,0),l=t.stream(),s=t.statefulStream(0),u=t.statefulStream([]),c=t.statefulStream(void 0),m=t.statefulStream(void 0),d=t.statefulStream(function(e,t){return A(e,q[t])}),f=t.statefulStream(void 0),p={offsetTree:[],sizeTree:T(),groupOffsetTree:T(),lastIndex:0,lastOffset:0,lastSize:0,groupIndices:[]},h=t.statefulStreamFromEmitter(t.pipe(r,t.withLatestFrom(u,n),t.scan(_,p),t.distinctUntilChanged()),p);t.connect(t.pipe(u,t.filter(function(e){return e.length>0}),t.withLatestFrom(h),t.map(function(e){var t=e[0],n=e[1],r=t.reduce(function(e,t,o){return b(e,t,j(t,n.offsetTree)||o)},T());return o({},n,{groupIndices:t,groupOffsetTree:r})})),h),t.connect(t.pipe(i,t.withLatestFrom(h),t.filter(function(e){return e[0]<e[1].lastIndex}),t.map(function(e){var t=e[1];return[{startIndex:e[0],endIndex:t.lastIndex,size:t.lastSize}]})),r),t.connect(c,m);var g=t.statefulStreamFromEmitter(t.pipe(c,t.map(function(e){return void 0===e})),!0);t.connect(t.pipe(m,t.filter(function(e){return void 0!==e&&x(t.getValue(h).sizeTree)}),t.map(function(e){return[{startIndex:0,endIndex:0,size:e}]})),r);var v=t.streamFromEmitter(t.pipe(r,t.withLatestFrom(h),t.scan(function(e,t){var n=t[1];return{changed:n!==e.sizes,sizes:n}},{changed:!1,sizes:p}),t.map(function(e){return e.changed})));t.connect(t.pipe(s,t.scan(function(e,t){return{diff:e.prev-t,prev:t}},{diff:0,prev:0}),t.map(function(e){return e.diff}),t.filter(function(e){return e>0})),l),t.subscribe(t.pipe(s,t.withLatestFrom(n)),function(e){e[0]<0&&(0,e[1])("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:s},exports.LogLevel.ERROR)});var S=t.streamFromEmitter(l);return t.connect(t.pipe(l,t.withLatestFrom(h),t.map(function(e){var t=e[0],n=e[1];if(n.groupIndices.length>0)throw new Error("Virtuoso: prepending items does not work with groups");return L(n.sizeTree).reduce(function(e,n){var o=n.k,r=n.v;return{ranges:[].concat(e.ranges,[{startIndex:e.prevIndex,endIndex:o+t-1,size:e.prevSize}]),prevIndex:o+t,prevSize:r}},{ranges:[],prevIndex:0,prevSize:n.lastSize}).ranges})),r),{data:f,totalCount:i,sizeRanges:r,groupIndices:u,defaultItemSize:m,fixedItemSize:c,unshiftWith:l,beforeUnshiftWith:S,firstItemIndex:s,sizes:h,listRefresh:v,statefulTotalCount:a,trackItemSizes:g,itemSize:d}},t.tup(f),{singleton:!0}),J="undefined"!=typeof document&&"scrollBehavior"in document.documentElement.style;function $(e){var t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),t.behavior&&J||(t.behavior="auto"),t.offset||(t.offset=0),t}var Q=t.system(function(e){var n=e[0],o=n.sizes,r=n.totalCount,i=n.listRefresh,a=e[1],l=a.scrollingInProgress,s=a.viewportHeight,u=a.scrollTo,c=a.smoothScrollTargetReached,m=a.headerHeight,d=a.footerHeight,f=e[2].log,p=t.stream(),h=t.statefulStream(0),g=null,v=null,S=null;function C(){g&&(g(),g=null),S&&(S(),S=null),v&&(clearTimeout(v),v=null),t.publish(l,!1)}return t.connect(t.pipe(p,t.withLatestFrom(o,s,r,h,m,d,f),t.map(function(e){var n=e[0],o=e[1],r=e[2],a=e[3],s=e[4],u=e[5],m=e[6],d=e[7],f=$(n),h=f.align,I=f.behavior,x=f.offset,T=a-1,w=f.index;"LAST"===w&&(w=T),w=K(w,o);var b=j(w=Math.max(0,w,Math.min(T,w)),o.offsetTree)+u;"end"===h?(b=b-r+y(o.sizeTree,w)[1],w===T&&(b+=m)):"center"===h?b=b-r/2+y(o.sizeTree,w)[1]/2:b-=s,x&&(b+=x);var E=function(e){C(),e?(d("retrying to scroll to",{location:n},exports.LogLevel.DEBUG),t.publish(p,n)):d("list did not change, scroll successful",{},exports.LogLevel.DEBUG)};if(C(),"smooth"===I){var L=!1;S=t.subscribe(i,function(e){L=L||e}),g=t.handleNext(c,function(){E(L)})}else g=t.handleNext(t.pipe(i,function(e){var t=setTimeout(function(){e(!1)},50);return function(n){n&&(e(!0),clearTimeout(t))}}),E);return v=setTimeout(function(){C()},1200),t.publish(l,!0),d("scrolling from index to",{index:w,top:b,behavior:I},exports.LogLevel.DEBUG),{top:b,behavior:I}})),u),{scrollToIndex:p,topListHeight:h}},t.tup(Z,m,f),{singleton:!0});function X(e,t,n){return"number"==typeof e?n===h&&"top"===t||"down"===n&&"bottom"===t?e:0:n===h?"top"===t?e.main:e.reverse:"bottom"===t?e.main:e.reverse}function ee(e,t){return"number"==typeof e?e:e[t]||0}var te=t.system(function(e){var n=e[0],o=n.scrollTop,r=n.viewportHeight,i=n.deviation,a=n.headerHeight,s=t.stream(),u=t.statefulStream(0),c=t.statefulStream(0),m=t.statefulStream(0),d=t.statefulStream(0);return{listBoundary:s,overscan:d,topListHeight:u,fixedHeaderHeight:c,increaseViewportBy:m,visibleRange:t.statefulStreamFromEmitter(t.pipe(t.combineLatest(t.duc(o),t.duc(r),t.duc(a),t.duc(s,l),t.duc(d),t.duc(u),t.duc(c),t.duc(i),t.duc(m)),t.map(function(e){var t=e[0],n=e[1],o=e[2],r=e[3],i=r[0],a=r[1],l=e[4],s=e[6],u=e[7],c=e[8],m=t-u,d=e[5]+s,f=Math.max(o-m,0),p="none",g=ee(c,"top"),v=ee(c,"bottom");return i-=u,a+=o,(i+=o)>t+d-g&&(p=h),(a-=u)<t-f+n+v&&(p="down"),"none"!==p?[Math.max(m-o-X(l,"top",p)-g,0),m-f-s+n+X(l,"bottom",p)+v]:null}),t.filter(function(e){return null!=e}),t.distinctUntilChanged(l)),[0,0])}},t.tup(m),{singleton:!0}),ne=t.system(function(e){var n=e[0],r=n.scrollTo,i=n.scrollContainerState,a=t.stream(),l=t.stream(),s=t.stream(),u=t.statefulStream(!1),c=t.statefulStream(void 0);return t.connect(t.pipe(t.combineLatest(a,l),t.map(function(e){var t=e[0],n=t[1];return[Math.max(0,t[0]-e[1].offsetTop),n]})),i),t.connect(t.pipe(r,t.withLatestFrom(l),t.map(function(e){var t=e[0];return o({},t,{top:t.top+e[1].offsetTop})})),s),{useWindowScroll:u,customScrollParent:c,windowScrollContainerState:a,windowViewportRect:l,windowScrollTo:s}},t.tup(m)),oe={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},re={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},ie=Math.ceil,ae=Math.floor,le=Math.min,se=Math.max;function ue(e,t){return Array.from({length:t-e+1}).map(function(t,n){return{index:n+e}})}var ce=t.system(function(e){var n=e[0],r=n.overscan,i=n.visibleRange,a=n.listBoundary,u=e[1],c=u.scrollTop,m=u.viewportHeight,d=u.scrollBy,f=u.scrollTo,p=u.smoothScrollTargetReached,h=u.scrollContainerState,g=e[2],v=e[3],S=e[4],C=S.propsReady,I=S.didMount,x=e[5],T=x.windowViewportRect,w=x.windowScrollTo,y=x.useWindowScroll,b=x.customScrollParent,E=x.windowScrollContainerState,L=t.statefulStream(0),H=t.statefulStream(0),R=t.statefulStream(oe),k=t.statefulStream({height:0,width:0}),z=t.statefulStream({height:0,width:0}),B=t.stream(),F=t.stream(),P=t.statefulStream(0);t.connect(t.pipe(I,t.withLatestFrom(H),t.filter(function(e){return 0!==e[1]}),t.map(function(e){return{items:ue(0,e[1]-1),top:0,bottom:0,offsetBottom:0,offsetTop:0,itemHeight:0,itemWidth:0}})),R),t.connect(t.pipe(t.combineLatest(t.duc(L),i,t.duc(z,function(e,t){return e&&e.width===t.width&&e.height===t.height})),t.withLatestFrom(k),t.map(function(e){var t=e[0],n=t[0],o=t[1],r=o[0],i=o[1],a=t[2],l=e[1],s=a.height,u=a.width,c=l.width;if(0===n||0===c)return oe;if(0===u)return re;var m=Math.floor(c/u),d=m*ae(r/s),f=m*ie(i/s)-1;f=le(n-1,f);var p=ue(d=le(f,se(0,d)),f),h=me(l,a,p),g=h.top,v=h.bottom;return{items:p,offsetTop:g,offsetBottom:ie(n/m)*s-v,top:g,bottom:v,itemHeight:s,itemWidth:u}})),R),t.connect(t.pipe(k,t.map(function(e){return e.height})),m),t.connect(t.pipe(t.combineLatest(k,z,R),t.map(function(e){var t=me(e[0],e[1],e[2].items);return[t.top,t.bottom]}),t.distinctUntilChanged(l)),a);var O=t.streamFromEmitter(t.pipe(t.duc(R),t.filter(function(e){return e.items.length>0}),t.withLatestFrom(L),t.filter(function(e){var t=e[0].items;return t[t.length-1].index===e[1]-1}),t.map(function(e){return e[1]-1}),t.distinctUntilChanged())),M=t.streamFromEmitter(t.pipe(t.duc(R),t.filter(function(e){var t=e.items;return t.length>0&&0===t[0].index}),t.mapTo(0),t.distinctUntilChanged())),V=t.streamFromEmitter(t.pipe(t.duc(R),t.filter(function(e){return e.items.length>0}),t.map(function(e){var t=e.items;return{startIndex:t[0].index,endIndex:t[t.length-1].index}}),t.distinctUntilChanged(s)));t.connect(V,v.scrollSeekRangeChanged),t.connect(t.pipe(B,t.withLatestFrom(k,z,L),t.map(function(e){var t=e[1],n=e[2],o=e[3],r=$(e[0]),i=r.align,a=r.behavior,l=r.offset,s=r.index;"LAST"===s&&(s=o-1);var u=de(t,n,s=Math.max(0,s,Math.min(o-1,s)));return"end"===i?u=Math.round(u-t.height+n.height):"center"===i&&(u=Math.round(u-t.height/2+n.height/2)),l&&(u+=l),{top:u,behavior:a}})),f);var U=t.statefulStreamFromEmitter(t.pipe(R,t.map(function(e){return e.offsetBottom+e.bottom})),0);return t.connect(t.pipe(T,t.map(function(e){return{width:e.visibleWidth,height:e.visibleHeight}})),k),o({totalCount:L,viewportDimensions:k,itemDimensions:z,scrollTop:c,scrollHeight:F,overscan:r,scrollBy:d,scrollTo:f,scrollToIndex:B,smoothScrollTargetReached:p,windowViewportRect:T,windowScrollTo:w,useWindowScroll:y,customScrollParent:b,windowScrollContainerState:E,deviation:P,scrollContainerState:h,initialItemCount:H},v,{gridState:R,totalListHeight:U},g,{startReached:M,endReached:O,rangeChanged:V,propsReady:C})},t.tup(te,m,v,S,p,ne));function me(e,t,n){var o=t.height;return void 0===o||0===n.length?{top:0,bottom:0}:{top:de(e,t,n[0].index),bottom:de(e,t,n[n.length-1].index)+o}}function de(e,t,n){var o=Math.floor(e.width/t.width);return ae(n/o)*t.height}function fe(e,t){void 0===t&&(t=!0);var o=n.useRef(null),r=function(e){};if("undefined"!=typeof ResizeObserver){var i=new ResizeObserver(function(t){var n=t[0].target;null!==n.offsetParent&&e(n)});r=function(e){e&&t?(i.observe(e),o.current=e):(o.current&&i.unobserve(o.current),o.current=null)}}return{ref:o,callbackRef:r}}function pe(e,t){return void 0===t&&(t=!0),fe(e,t).callbackRef}function he(e,t){var o=n.useRef(null),r=n.useCallback(function(n){if(null!==n){var r,i,a=n.getBoundingClientRect(),l=a.width;if(t){var s=t.getBoundingClientRect(),u=a.top-s.top;r=s.height-Math.max(0,u),i=u+t.scrollTop}else r=window.innerHeight-Math.max(0,a.top),i=a.top+window.pageYOffset;o.current={offsetTop:i,visibleHeight:r,visibleWidth:l},e(o.current)}},[e,t]),i=fe(r),a=i.callbackRef,l=i.ref,s=n.useCallback(function(){r(l.current)},[r,l]);return n.useEffect(function(){if(t){t.addEventListener("scroll",s);var e=new ResizeObserver(s);return e.observe(t),function(){t.removeEventListener("scroll",s),e.unobserve(t)}}return window.addEventListener("scroll",s),window.addEventListener("resize",s),function(){window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}},[s,t]),a}var ge="undefined"!=typeof document?n.useLayoutEffect:n.useEffect;function ve(e,t,n,o,r,i){return pe(function(n){for(var a=function(e,t,n,o){var r=e.length;if(0===r)return null;for(var i=[],a=0;a<r;a++){var l=e.item(a);if(l&&void 0!==l.dataset.index){var s=parseInt(l.dataset.index),u=parseFloat(l.dataset.knownSize),c=t(l,"offsetHeight");if(0===c&&o("Zero-sized element, this should not happen",{child:l},exports.LogLevel.ERROR),c!==u){var m=i[i.length-1];0===i.length||m.size!==c||m.endIndex!==s-1?i.push({startIndex:s,endIndex:s,size:c}):i[i.length-1].endIndex++}}}return i}(n.children,t,0,r),l=n.parentElement;!l.dataset.virtuosoScroller;)l=l.parentElement;var s=i?i.scrollTop:"window"===l.firstElementChild.dataset.viewportType?window.pageYOffset||document.documentElement.scrollTop:l.scrollTop;o(i?[Math.max(s,0),i.scrollHeight]:[Math.max(s,0),l.scrollHeight]),null!==a&&e(a)},n)}function Se(e,o,r,i,a){void 0===i&&(i=t.noop);var l=n.useRef(null),s=n.useRef(null),u=n.useRef(null),c=n.useCallback(function(t){var n=t.target,r=n===window||n===document?window.pageYOffset||document.documentElement.scrollTop:n.scrollTop,i=n===window?document.documentElement.scrollHeight:n.scrollHeight;e([Math.max(r,0),i]),null!==s.current&&(r===s.current||r<=0||r===n.scrollHeight-A(n,"height"))&&(s.current=null,o(!0),u.current&&(clearTimeout(u.current),u.current=null))},[e,o]);return n.useEffect(function(){var e=a||l.current;return i(a||l.current),c({target:e}),e.addEventListener("scroll",c,{passive:!0}),function(){i(null),e.removeEventListener("scroll",c)}},[l,c,r,i,a]),{scrollerRef:l,scrollByCallback:function(e){null===s.current&&l.current.scrollBy(e)},scrollToCallback:function(t){var n=l.current;if(n&&(!("offsetHeight"in n)||0!==n.offsetHeight)){var r,i,a,c="smooth"===t.behavior;if(n===window?(i=Math.max(A(document.documentElement,"height"),document.documentElement.scrollHeight),r=window.innerHeight,a=document.documentElement.scrollTop):(i=n.scrollHeight,r=A(n,"height"),a=n.scrollTop),t.top=Math.ceil(Math.max(Math.min(i-r,t.top),0)),Math.abs(r-i)<1.01||t.top===a)return e([a,i]),void(c&&o(!0));c?(s.current=t.top,u.current&&clearTimeout(u.current),u.current=setTimeout(function(){u.current=null,s.current=null,o(!0)},1e3)):s.current=null,n.scrollTo(t)}}}}var Ce=t.system(function(e){var n=e[0],o=n.sizes,r=n.listRefresh,i=n.defaultItemSize,a=e[1].scrollTop,l=e[2].scrollToIndex,s=e[3].didMount,u=t.statefulStream(!0),c=t.statefulStream(0);return t.connect(t.pipe(s,t.withLatestFrom(c),t.filter(function(e){return 0!==e[1]}),t.mapTo(!1)),u),t.subscribe(t.pipe(t.combineLatest(r,s),t.withLatestFrom(u,o,i),t.filter(function(e){var t=e[1],n=e[3];return e[0][1]&&(!x(e[2].sizeTree)||void 0!==n)&&!t}),t.withLatestFrom(c)),function(e){var n=e[1];setTimeout(function(){t.handleNext(a,function(){t.publish(u,!0)}),t.publish(l,n)})}),{scrolledToInitialItem:u,initialTopMostItemIndex:c}},t.tup(Z,m,Q,p),{singleton:!0});function Ie(e){return!!e&&("smooth"===e?"smooth":"auto")}var xe=t.system(function(e){var n=e[0],o=n.totalCount,r=n.listRefresh,i=e[1],a=i.isAtBottom,l=i.atBottomState,s=e[2].scrollToIndex,u=e[3].scrolledToInitialItem,c=e[4],m=c.propsReady,d=c.didMount,f=e[5].log,p=e[6].scrollingInProgress,h=t.statefulStream(!1),g=null;function v(e){t.publish(s,{index:"LAST",align:"end",behavior:e})}return t.subscribe(t.pipe(t.combineLatest(t.pipe(t.duc(o),t.skip(1)),d),t.withLatestFrom(t.duc(h),a,u,p),t.map(function(e){var t=e[0],n=t[0],o=t[1]&&e[3],r="auto";return o&&(r=function(e,t){return"function"==typeof e?Ie(e(t)):t&&Ie(e)}(e[1],e[2]||e[4]),o=o&&!!r),{totalCount:n,shouldFollow:o,followOutputBehavior:r}}),t.filter(function(e){return e.shouldFollow})),function(e){var n=e.totalCount,o=e.followOutputBehavior;g&&(g(),g=null),g=t.handleNext(r,function(){t.getValue(f)("following output to ",{totalCount:n},exports.LogLevel.DEBUG),v(o),g=null})}),t.subscribe(t.pipe(t.combineLatest(t.duc(h),o,m),t.filter(function(e){return e[0]&&e[2]}),t.scan(function(e,t){var n=t[1];return{refreshed:e.value===n,value:n}},{refreshed:!1,value:0}),t.filter(function(e){return e.refreshed}),t.withLatestFrom(h,o)),function(e){var n=e[1],o=t.handleNext(l,function(e){!n||e.atBottom||"SIZE_INCREASED"!==e.notAtBottomBecause||g||(t.getValue(f)("scrolling to bottom due to increased size",{},exports.LogLevel.DEBUG),v("auto"))});setTimeout(o,100)}),t.subscribe(t.combineLatest(t.duc(h),l),function(e){var t=e[1];e[0]&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&v("auto")}),{followOutput:h}},t.tup(Z,v,Q,Ce,p,f,m));function Te(e){return e.reduce(function(e,t){return e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e},{totalCount:0,groupIndices:[]})}var we=t.system(function(e){var n=e[0],o=n.totalCount,r=n.groupIndices,i=n.sizes,a=e[1],l=a.scrollTop,s=a.headerHeight,u=t.stream(),c=t.stream(),m=t.streamFromEmitter(t.pipe(u,t.map(Te)));return t.connect(t.pipe(m,t.map(t.prop("totalCount"))),o),t.connect(t.pipe(m,t.map(t.prop("groupIndices"))),r),t.connect(t.pipe(t.combineLatest(l,i,s),t.filter(function(e){return Y(e[1])}),t.map(function(e){return y(e[1].groupOffsetTree,Math.max(e[0]-e[2],0),"v")[0]}),t.distinctUntilChanged(),t.map(function(e){return[e]})),c),{groupCounts:u,topItemsIndexes:c}},t.tup(Z,m)),ye={items:[],topItems:[],offsetTop:0,offsetBottom:0,top:0,bottom:0,topListHeight:0,totalCount:0};function be(e,t,n){if(0===e.length)return[];if(!Y(t))return e.map(function(e){return o({},e,{index:e.index+n,originalIndex:e.index})});for(var r,i=[],l=F(t.groupOffsetTree,e[0].index,e[e.length-1].index),s=void 0,u=0,c=a(e);!(r=c()).done;){var m=r.value;(!s||s.end<m.index)&&(s=l.shift(),u=t.groupIndices.indexOf(s.start)),i.push(o({},m.index===s.start?{type:"group",index:u}:{index:m.index-(u+1)+n,groupIndex:u},{size:m.size,offset:m.offset,originalIndex:m.index,data:m.data}))}return i}function Ee(e,t,n,o,r){var i=0,a=0;if(e.length>0){i=e[0].offset;var l=e[e.length-1];a=l.offset+l.size}var s=i,u=o.lastOffset+(n-o.lastIndex)*o.lastSize-a;return{items:be(e,o,r),topItems:be(t,o,r),topListHeight:t.reduce(function(e,t){return t.size+e},0),offsetTop:i,offsetBottom:u,top:s,bottom:a,totalCount:n}}var Le,He,Re,ke=t.system(function(e){var n=e[0],r=n.sizes,i=n.totalCount,u=n.data,c=n.firstItemIndex,m=e[1],d=e[2],f=d.visibleRange,p=d.listBoundary,h=d.topListHeight,g=e[3],v=g.scrolledToInitialItem,S=g.initialTopMostItemIndex,C=e[4].topListHeight,I=e[5],T=e[6].didMount,w=t.statefulStream([]),b=t.stream();t.connect(m.topItemsIndexes,w);var E=t.statefulStreamFromEmitter(t.pipe(t.combineLatest(T,t.duc(f),t.duc(i),t.duc(r),t.duc(S),v,t.duc(w),t.duc(c),u),t.filter(function(e){return e[0]}),t.map(function(e){var n=e[1],o=n[0],r=n[1],i=e[2],l=e[4],s=e[5],u=e[6],c=e[7],m=e[8],d=e[3],f=d.sizeTree,p=d.offsetTree;if(0===i||0===o&&0===r)return ye;if(x(f))return Ee(function(e,t,n){if(Y(t)){var o=K(e,t);return[{index:y(t.groupOffsetTree,o)[0],size:0,offset:0},{index:o,size:0,offset:0,data:n&&n[0]}]}return[{index:e,size:0,offset:0,data:n&&n[0]}]}(l,d,m),[],i,d,c);var h=[];if(u.length>0)for(var g,v=u[0],S=u[u.length-1],C=0,I=a(F(f,v,S));!(g=I()).done;)for(var T=g.value,w=T.value,b=Math.max(T.start,v),E=Math.min(T.end,S),L=b;L<=E;L++)h.push({index:L,size:w,offset:C,data:m&&m[L]}),C+=w;if(!s)return Ee([],h,i,d,c);var H=u.length>0?u[u.length-1]+1:0,R=function(e,t,n,o){return void 0===o&&(o=0),o>0&&(t=Math.max(t,U(e,o,N).offset)),P((i=n,l=V(r=e,t,a=D),s=V(r,i,a,l),r.slice(l,s+1)),G);var r,i,a,l,s}(p,o,r,H);if(0===R.length)return null;var k=i-1;return Ee(t.tap([],function(e){for(var t,n=a(R);!(t=n()).done;){var i=t.value,l=i.value,s=l.offset,u=i.start,c=l.size;l.offset<o&&(s+=((u+=Math.floor((o-l.offset)/c))-i.start)*c),u<H&&(s+=(H-u)*c,u=H);for(var d=Math.min(i.end,k),f=u;f<=d&&!(s>=r);f++)e.push({index:f,size:c,offset:s,data:m&&m[f]}),s+=c}}),h,i,d,c)}),t.filter(function(e){return null!==e}),t.distinctUntilChanged()),ye);return t.connect(t.pipe(u,t.filter(function(e){return void 0!==e}),t.map(function(e){return e.length})),i),t.connect(t.pipe(E,t.map(t.prop("topListHeight"))),C),t.connect(C,h),t.connect(t.pipe(E,t.map(function(e){return[e.top,e.bottom]})),p),t.connect(t.pipe(E,t.map(function(e){return e.items})),b),o({listState:E,topItemsIndexes:w,endReached:t.streamFromEmitter(t.pipe(E,t.filter(function(e){return e.items.length>0}),t.withLatestFrom(i,u),t.filter(function(e){var t=e[0].items;return t[t.length-1].originalIndex===e[1]-1}),t.map(function(e){return[e[1]-1,e[2]]}),t.distinctUntilChanged(l),t.map(function(e){return e[0]}))),startReached:t.streamFromEmitter(t.pipe(E,t.throttleTime(200),t.filter(function(e){var t=e.items;return t.length>0&&t[0].originalIndex===e.topItems.length}),t.map(function(e){return e.items[0].index}),t.distinctUntilChanged())),rangeChanged:t.streamFromEmitter(t.pipe(E,t.filter(function(e){return e.items.length>0}),t.map(function(e){var t=e.items;return{startIndex:t[0].index,endIndex:t[t.length-1].index}}),t.distinctUntilChanged(s))),itemsRendered:b},I)},t.tup(Z,we,te,Ce,Q,v,p),{singleton:!0}),ze=t.system(function(e){var n=e[0],o=n.sizes,r=n.firstItemIndex,i=n.data,l=e[1].listState,s=e[2].didMount,u=t.statefulStream(0);return t.connect(t.pipe(s,t.withLatestFrom(u),t.filter(function(e){return 0!==e[1]}),t.withLatestFrom(o,r,i),t.map(function(e){var t=e[0][1],n=e[1],o=e[2],r=e[3],i=void 0===r?[]:r,l=0;if(n.groupIndices.length>0)for(var s,u=a(n.groupIndices);!((s=u()).done||s.value-l>=t);)l++;var c=t+l;return Ee(Array.from({length:c}).map(function(e,t){return{index:t,size:0,offset:0,data:i[t]}}),[],c,n,o)})),l),{initialItemCount:u}},t.tup(Z,ke,p),{singleton:!0}),Be=t.system(function(e){var n=e[0].topItemsIndexes,o=t.statefulStream(0);return t.connect(t.pipe(o,t.filter(function(e){return e>0}),t.map(function(e){return Array.from({length:e}).map(function(e,t){return t})})),n),{topItemCount:o}},t.tup(ke)),Fe=t.system(function(e){var n=e[0],o=n.footerHeight,r=n.headerHeight,i=e[1].listState,a=t.stream(),l=t.statefulStreamFromEmitter(t.pipe(t.combineLatest(o,r,i),t.map(function(e){var t=e[2];return e[0]+e[1]+t.offsetBottom+t.bottom})),0);return t.connect(t.duc(l),a),{totalListHeight:l,totalListHeightChanged:a}},t.tup(m,ke),{singleton:!0}),Pe=t.system(function(e){var n=e[0],o=n.scrollBy,r=n.scrollTop,i=n.deviation,a=n.scrollingInProgress,l=e[1],s=l.isScrolling,u=l.isAtBottom,c=l.atBottomState,m=l.scrollDirection,d=e[3],f=d.beforeUnshiftWith,p=d.sizes,g=e[4].log,v=t.streamFromEmitter(t.pipe(e[2].listState,t.withLatestFrom(l.lastJumpDueToItemResize),t.scan(function(e,t){var n=e[1],o=t[0],r=o.items,i=o.totalCount,a=t[1],l=0;if(e[2]===i){if(n.length>0&&r.length>0){var s=1===r.length;if(0!==r[0].originalIndex||0!==n[0].originalIndex)for(var u=function(e){var t=r[e],o=n.find(function(e){return e.originalIndex===t.originalIndex});return o?t.offset!==o.offset||s?(l=t.offset-o.offset+t.size-o.size,"break"):void 0:"continue"},c=r.length-1;c>=0;c--){var m=u(c);if("continue"!==m&&"break"===m)break}}0!==l&&(l+=a)}return[l,r,i]},[0,[],0]),t.filter(function(e){return 0!==e[0]}),t.withLatestFrom(r,m,a,g,u,c),t.filter(function(e){return!e[3]&&0!==e[1]&&e[2]===h}),t.map(function(e){var t=e[0][0];return(0,e[4])("Upward scrolling compensation",{amount:t},exports.LogLevel.DEBUG),t})));return t.connect(t.pipe(v,t.withLatestFrom(i),t.map(function(e){return e[1]-e[0]})),i),t.subscribe(t.pipe(t.combineLatest(t.statefulStreamFromEmitter(s,!1),i),t.filter(function(e){return!e[0]&&0!==e[1]}),t.map(function(e){return e[1]}),t.throttleTime(1)),function(e){e>0?(t.publish(o,{top:-e,behavior:"auto"}),t.publish(i,0)):(t.publish(i,0),t.publish(o,{top:-e,behavior:"auto"}))}),t.connect(t.pipe(f,t.withLatestFrom(p),t.map(function(e){return e[0]*e[1].lastSize})),v),{deviation:i}},t.tup(m,v,ke,Z,f)),Oe=t.system(function(e){var n=e[0].totalListHeight,o=e[1].didMount,r=e[2].scrollTo,i=t.statefulStream(0);return t.subscribe(t.pipe(o,t.withLatestFrom(i),t.filter(function(e){return 0!==e[1]}),t.map(function(e){return{top:e[1]}})),function(e){t.handleNext(t.pipe(n,t.filter(function(e){return 0!==e})),function(){setTimeout(function(){t.publish(r,e)})})}),{initialScrollTop:i}},t.tup(Fe,p,m),{singleton:!0}),Me=t.system(function(e){var n=e[0].viewportHeight,o=e[1].totalListHeight,r=t.statefulStream(!1);return{alignToBottom:r,paddingTopAddition:t.statefulStreamFromEmitter(t.pipe(t.combineLatest(r,n,o),t.filter(function(e){return e[0]}),t.map(function(e){return Math.max(0,e[1]-e[2])}),t.distinctUntilChanged()),0)}},t.tup(m,Fe),{singleton:!0}),Ve=t.system(function(e){var n=e[0],o=n.sizes,r=n.totalCount,i=e[1],a=i.scrollTop,l=i.viewportHeight,s=i.headerHeight,u=i.scrollingInProgress,c=e[2].scrollToIndex,m=t.stream();return t.connect(t.pipe(m,t.withLatestFrom(o,l,r,s,a),t.map(function(e){var n=e[0],o=n.index,r=n.behavior,i=void 0===r?"auto":r,a=n.done,l=e[1],s=e[2],c=e[4],m=e[5],d=e[3]-1,f=null;o=K(o,l);var p=j(o=Math.max(0,o,Math.min(d,o)),l.offsetTree)+c;return p<m?f={index:o,behavior:i,align:"start"}:p+y(l.sizeTree,o)[1]>m+s&&(f={index:o,behavior:i,align:"end"}),f?a&&t.handleNext(t.pipe(u,t.skip(1),t.filter(function(e){return!1===e})),a):a&&a(),f}),t.filter(function(e){return null!==e})),c),{scrollIntoView:m}},t.tup(Z,m,Q,ke,f),{singleton:!0}),Ue=t.system(function(e){return o({},e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},t.tup(te,ze,p,S,Fe,Oe,Me,ne,Ve)),Ae=t.system(function(e){var n=e[0],i=n.totalCount,a=n.sizeRanges,l=n.fixedItemSize,s=n.defaultItemSize,u=n.trackItemSizes,c=n.itemSize,m=n.data,d=n.firstItemIndex,f=n.groupIndices,p=n.statefulTotalCount,h=e[1],g=h.initialTopMostItemIndex,v=h.scrolledToInitialItem,S=e[2],C=e[3],I=e[4],x=I.listState,T=I.topItemsIndexes,w=r(I,["listState","topItemsIndexes"]),y=e[5].scrollToIndex,b=e[7].topItemCount,E=e[8].groupCounts,L=e[9],H=e[10];return t.connect(w.rangeChanged,L.scrollSeekRangeChanged),t.connect(t.pipe(L.windowViewportRect,t.map(t.prop("visibleHeight"))),S.viewportHeight),o({totalCount:i,data:m,firstItemIndex:d,sizeRanges:a,initialTopMostItemIndex:g,scrolledToInitialItem:v,topItemsIndexes:T,topItemCount:b,groupCounts:E,fixedItemHeight:l,defaultItemHeight:s},C,{statefulTotalCount:p,listState:x,scrollToIndex:y,trackItemSizes:u,itemSize:c,groupIndices:f},w,L,S,H)},t.tup(Z,Ce,m,xe,ke,Q,Pe,Be,we,Ue,f)),We=(Le=function(){if("undefined"==typeof document)return"sticky";var e=document.createElement("div");return e.style.position="-webkit-sticky","-webkit-sticky"===e.style.position?"-webkit-sticky":"sticky"},Re=!1,function(){return Re||(Re=!0,He=Le()),He});function Ne(e){return e}var De=t.system(function(){var e=t.statefulStream(function(e){return"Item "+e}),n=t.statefulStream(null),o=t.statefulStream(function(e){return"Group "+e}),r=t.statefulStream({}),i=t.statefulStream(Ne),a=t.statefulStream("div"),l=t.statefulStream(t.noop),s=function(e,n){return void 0===n&&(n=null),t.statefulStreamFromEmitter(t.pipe(r,t.map(function(t){return t[e]}),t.distinctUntilChanged()),n)};return{context:n,itemContent:e,groupContent:o,components:r,computeItemKey:i,headerFooterTag:a,scrollerRef:l,FooterComponent:s("Footer"),HeaderComponent:s("Header"),TopItemListComponent:s("TopItemList"),ListComponent:s("List","div"),ItemComponent:s("Item","div"),GroupComponent:s("Group","div"),ScrollerComponent:s("Scroller","div"),EmptyPlaceholder:s("EmptyPlaceholder"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder")}});function Ge(e,n){var o=t.stream();return t.subscribe(o,function(){return console.warn("react-virtuoso: You are using a deprecated property. "+n,"color: red;","color: inherit;","color: blue;")}),t.connect(o,e),o}var _e=t.system(function(e){var n=e[0],i=e[1],a={item:Ge(i.itemContent,"Rename the %citem%c prop to %citemContent."),group:Ge(i.groupContent,"Rename the %cgroup%c prop to %cgroupContent."),topItems:Ge(n.topItemCount,"Rename the %ctopItems%c prop to %ctopItemCount."),itemHeight:Ge(n.fixedItemHeight,"Rename the %citemHeight%c prop to %cfixedItemHeight."),scrollingStateChange:Ge(n.isScrolling,"Rename the %cscrollingStateChange%c prop to %cisScrolling."),adjustForPrependedItems:t.stream(),maxHeightCacheSize:t.stream(),footer:t.stream(),header:t.stream(),HeaderContainer:t.stream(),FooterContainer:t.stream(),ItemContainer:t.stream(),ScrollContainer:t.stream(),GroupContainer:t.stream(),ListContainer:t.stream(),emptyComponent:t.stream(),scrollSeek:t.stream()};function l(e,n,r){t.connect(t.pipe(e,t.withLatestFrom(i.components),t.map(function(e){var t,i=e[0],a=e[1];return console.warn("react-virtuoso: "+r+" property is deprecated. Pass components."+n+" instead."),o({},a,((t={})[n]=i,t))})),i.components)}return t.subscribe(a.adjustForPrependedItems,function(){console.warn("react-virtuoso: adjustForPrependedItems is no longer supported. Use the firstItemIndex property instead - https://virtuoso.dev/prepend-items.","color: red;","color: inherit;","color: blue;")}),t.subscribe(a.maxHeightCacheSize,function(){console.warn("react-virtuoso: maxHeightCacheSize is no longer necessary. Setting it has no effect - remove it from your code.")}),t.subscribe(a.HeaderContainer,function(){console.warn("react-virtuoso: HeaderContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the header component and pass components.Header to change its contents.")}),t.subscribe(a.FooterContainer,function(){console.warn("react-virtuoso: FooterContainer is deprecated. Use headerFooterTag if you want to change the wrapper of the footer component and pass components.Footer to change its contents.")}),t.subscribe(a.scrollSeek,function(e){var a=e.placeholder,l=r(e,["placeholder"]);console.warn("react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead."),t.publish(i.components,o({},t.getValue(i.components),{ScrollSeekPlaceholder:a})),t.publish(n.scrollSeekConfiguration,l)}),l(a.footer,"Footer","footer"),l(a.header,"Header","header"),l(a.ItemContainer,"Item","ItemContainer"),l(a.ListContainer,"List","ListContainer"),l(a.ScrollContainer,"Scroller","ScrollContainer"),l(a.emptyComponent,"EmptyPlaceholder","emptyComponent"),l(a.GroupContainer,"Group","GroupContainer"),o({},n,i,a)},t.tup(Ae,De)),je=function(e){return n.createElement("div",{style:{height:e.height}})},Ke={position:We(),zIndex:1,overflowAnchor:"none"},Ye=n.memo(function(e){var r=e.showTopList,i=void 0!==r&&r,a=ut("listState"),l=ut("deviation"),s=st("sizeRanges"),u=ut("useWindowScroll"),c=ut("customScrollParent"),m=st("windowScrollContainerState"),d=st("scrollContainerState"),f=c||u?m:d,p=ut("itemContent"),h=ut("context"),g=ut("groupContent"),v=ut("trackItemSizes"),S=ut("itemSize"),C=ut("log"),I=ve(s,S,v,i?t.noop:f,C,c),x=ut("EmptyPlaceholder"),T=ut("ScrollSeekPlaceholder")||je,w=ut("ListComponent"),y=ut("ItemComponent"),b=ut("GroupComponent"),E=ut("computeItemKey"),L=ut("isSeeking"),H=ut("groupIndices").length>0,R=ut("paddingTopAddition"),k=ut("firstItemIndex"),z=ut("statefulTotalCount"),B=i?{}:{boxSizing:"border-box",paddingTop:a.offsetTop+R,paddingBottom:a.offsetBottom,marginTop:l};return!i&&0===z&&x?n.createElement(x,$e(x,h)):n.createElement(w,o({},$e(w,h),{ref:I,style:B,"data-test-id":i?"virtuoso-top-item-list":"virtuoso-item-list"}),(i?a.topItems:a.items).map(function(e){var t=e.originalIndex,r=E(t+k,e.data,h);return L?n.createElement(T,o({},$e(T,h),{key:r,index:e.index,height:e.size,type:e.type||"item"},"group"===e.type?{}:{groupIndex:e.groupIndex})):"group"===e.type?n.createElement(b,o({},$e(b,h),{key:r,"data-index":t,"data-known-size":e.size,"data-item-index":e.index,style:Ke}),g(e.index)):n.createElement(y,o({},$e(y,h),{key:r,"data-index":t,"data-known-size":e.size,"data-item-index":e.index,"data-item-group-index":e.groupIndex,style:{overflowAnchor:"none"}}),H?p(e.index,e.groupIndex,e.data,h):p(e.index,e.data,h))}))}),qe={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Ze={width:"100%",height:"100%",position:"absolute",top:0},Je={width:"100%",position:We(),top:0};function $e(e,t){if("string"!=typeof e)return{context:t}}var Qe=n.memo(function(){var e=ut("HeaderComponent"),t=st("headerHeight"),o=ut("headerFooterTag"),r=pe(function(e){return t(A(e,"height"))}),i=ut("context");return e?n.createElement(o,{ref:r},n.createElement(e,$e(e,i))):null}),Xe=n.memo(function(){var e=ut("FooterComponent"),t=st("footerHeight"),o=ut("headerFooterTag"),r=pe(function(e){return t(A(e,"height"))}),i=ut("context");return e?n.createElement(o,{ref:r},n.createElement(e,$e(e,i))):null});function et(e){var t=e.usePublisher,i=e.useEmitter,a=e.useEmitterValue;return n.memo(function(e){var l=e.style,s=e.children,u=r(e,["style","children"]),c=t("scrollContainerState"),m=a("ScrollerComponent"),d=t("smoothScrollTargetReached"),f=a("scrollerRef"),p=a("context"),h=Se(c,d,m,f),g=h.scrollerRef,v=h.scrollByCallback;return i("scrollTo",h.scrollToCallback),i("scrollBy",v),n.createElement(m,o({ref:g,style:o({},qe,l),"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0},u,$e(m,p)),s)})}function tt(e){var i=e.usePublisher,a=e.useEmitter,l=e.useEmitterValue;return n.memo(function(e){var s=e.style,u=e.children,c=r(e,["style","children"]),m=i("windowScrollContainerState"),d=l("ScrollerComponent"),f=i("smoothScrollTargetReached"),p=l("totalListHeight"),h=l("deviation"),g=l("customScrollParent"),v=l("context"),S=Se(m,f,d,t.noop,g),C=S.scrollerRef,I=S.scrollByCallback,x=S.scrollToCallback;return ge(function(){return C.current=g||window,function(){C.current=null}},[C,g]),a("windowScrollTo",x),a("scrollBy",I),n.createElement(d,o({style:o({position:"relative"},s,0!==p?{height:p+h}:{}),"data-virtuoso-scroller":!0},c,$e(d,v)),u)})}var nt=function(e){var o=e.children,r=st("viewportHeight"),i=pe(t.compose(r,function(e){return A(e,"height")}));return n.createElement("div",{style:Ze,ref:i,"data-viewport-type":"element"},o)},ot=function(e){var t=e.children,o=he(st("windowViewportRect"),ut("customScrollParent"));return n.createElement("div",{ref:o,style:Ze,"data-viewport-type":"window"},t)},rt=function(e){var t=e.children,r=ut("TopItemListComponent"),i=ut("headerHeight"),a=o({},Je,{marginTop:i+"px"}),l=ut("context");return n.createElement(r||"div",{style:a,context:l},t)},it=n.memo(function(e){var t=ut("useWindowScroll"),r=ut("topItemsIndexes").length>0,i=ut("customScrollParent"),a=i||t?ot:nt;return n.createElement(i||t?dt:mt,o({},e),n.createElement(a,null,n.createElement(Qe,null),n.createElement(Ye,null),n.createElement(Xe,null)),r&&n.createElement(rt,null,n.createElement(Ye,{showTopList:!0})))}),at=e.systemToComponent(_e,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",item:"item",group:"group",topItems:"topItems",itemHeight:"itemHeight",scrollingStateChange:"scrollingStateChange",maxHeightCacheSize:"maxHeightCacheSize",footer:"footer",header:"header",ItemContainer:"ItemContainer",ScrollContainer:"ScrollContainer",ListContainer:"ListContainer",GroupContainer:"GroupContainer",emptyComponent:"emptyComponent",HeaderContainer:"HeaderContainer",FooterContainer:"FooterContainer",scrollSeek:"scrollSeek"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",adjustForPrependedItems:"adjustForPrependedItems"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},it),lt=at.Component,st=at.usePublisher,ut=at.useEmitterValue,ct=at.useEmitter,mt=et({usePublisher:st,useEmitterValue:ut,useEmitter:ct}),dt=tt({usePublisher:st,useEmitterValue:ut,useEmitter:ct}),ft=t.system(function(){var e=t.statefulStream(function(e){return"Item "+e}),n=t.statefulStream({}),o=t.statefulStream(null),r=t.statefulStream("virtuoso-grid-item"),i=t.statefulStream("virtuoso-grid-list"),a=t.statefulStream(Ne),l=t.statefulStream(t.noop),s=function(e,o){return void 0===o&&(o=null),t.statefulStreamFromEmitter(t.pipe(n,t.map(function(t){return t[e]}),t.distinctUntilChanged()),o)};return{context:o,itemContent:e,components:n,computeItemKey:a,itemClassName:r,listClassName:i,scrollerRef:l,ListComponent:s("List","div"),ItemComponent:s("Item","div"),ScrollerComponent:s("Scroller","div"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder","div")}}),pt=t.system(function(e){var n=e[0],i=e[1],a={item:Ge(i.itemContent,"Rename the %citem%c prop to %citemContent."),ItemContainer:t.stream(),ScrollContainer:t.stream(),ListContainer:t.stream(),emptyComponent:t.stream(),scrollSeek:t.stream()};function l(e,n,r){t.connect(t.pipe(e,t.withLatestFrom(i.components),t.map(function(e){var t,i=e[0],a=e[1];return console.warn("react-virtuoso: "+r+" property is deprecated. Pass components."+n+" instead."),o({},a,((t={})[n]=i,t))})),i.components)}return t.subscribe(a.scrollSeek,function(e){var a=e.placeholder,l=r(e,["placeholder"]);console.warn("react-virtuoso: scrollSeek property is deprecated. Pass scrollSeekConfiguration and specify the placeholder in components.ScrollSeekPlaceholder instead."),t.publish(i.components,o({},t.getValue(i.components),{ScrollSeekPlaceholder:a})),t.publish(n.scrollSeekConfiguration,l)}),l(a.ItemContainer,"Item","ItemContainer"),l(a.ListContainer,"List","ListContainer"),l(a.ScrollContainer,"Scroller","ScrollContainer"),o({},n,i,a)},t.tup(ce,ft)),ht=n.memo(function(){var e=Tt("gridState"),t=Tt("listClassName"),r=Tt("itemClassName"),i=Tt("itemContent"),a=Tt("computeItemKey"),l=Tt("isSeeking"),s=xt("scrollHeight"),u=Tt("ItemComponent"),c=Tt("ListComponent"),m=Tt("ScrollSeekPlaceholder"),d=Tt("context"),f=xt("itemDimensions"),p=pe(function(e){s(e.parentElement.parentElement.scrollHeight);var t=e.firstChild;t&&f(t.getBoundingClientRect())});return n.createElement(c,o({ref:p,className:t},$e(c,d),{style:{paddingTop:e.offsetTop,paddingBottom:e.offsetBottom}}),e.items.map(function(t){var s=a(t.index);return l?n.createElement(m,o({key:s},$e(m,d),{index:t.index,height:e.itemHeight,width:e.itemWidth})):n.createElement(u,o({},$e(u,d),{className:r,"data-index":t.index,key:s}),i(t.index,d))}))}),gt=function(e){var t=e.children,o=xt("viewportDimensions"),r=pe(function(e){o(e.getBoundingClientRect())});return n.createElement("div",{style:Ze,ref:r},t)},vt=function(e){var t=e.children,o=he(xt("windowViewportRect"),Tt("customScrollParent"));return n.createElement("div",{ref:o,style:Ze},t)},St=n.memo(function(e){var t=o({},e),r=Tt("useWindowScroll"),i=Tt("customScrollParent"),a=i||r?vt:gt;return n.createElement(i||r?bt:yt,o({},t),n.createElement(a,null,n.createElement(ht,null)))}),Ct=e.systemToComponent(pt,{optional:{totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",item:"item",ItemContainer:"ItemContainer",ScrollContainer:"ScrollContainer",ListContainer:"ListContainer",scrollSeek:"scrollSeek"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange"}},St),It=Ct.Component,xt=Ct.usePublisher,Tt=Ct.useEmitterValue,wt=Ct.useEmitter,yt=et({usePublisher:xt,useEmitterValue:Tt,useEmitter:wt}),bt=tt({usePublisher:xt,useEmitterValue:Tt,useEmitter:wt}),Et=t.system(function(){var e=t.statefulStream(function(e){return n.createElement("td",null,"Item $",e)}),o=t.statefulStream(null),r=t.statefulStream(null),i=t.statefulStream({}),a=t.statefulStream(Ne),l=t.statefulStream(t.noop),s=function(e,n){return void 0===n&&(n=null),t.statefulStreamFromEmitter(t.pipe(i,t.map(function(t){return t[e]}),t.distinctUntilChanged()),n)};return{context:o,itemContent:e,fixedHeaderContent:r,components:i,computeItemKey:a,scrollerRef:l,TableComponent:s("Table","table"),TableHeadComponent:s("TableHead","thead"),TableBodyComponent:s("TableBody","tbody"),TableRowComponent:s("TableRow","tr"),ScrollerComponent:s("Scroller","div"),EmptyPlaceholder:s("EmptyPlaceholder"),ScrollSeekPlaceholder:s("ScrollSeekPlaceholder")}}),Lt=t.system(function(e){return o({},e[0],e[1])},t.tup(Ae,Et)),Ht=function(e){return n.createElement("tr",null,n.createElement("td",{style:{height:e.height}}))},Rt=function(e){return n.createElement("tr",null,n.createElement("td",{style:{height:e.height,padding:0,border:0}}))},kt=n.memo(function(){var e=Vt("listState"),t=Vt("deviation"),r=Mt("sizeRanges"),i=Vt("useWindowScroll"),a=Vt("customScrollParent"),l=Mt("windowScrollContainerState"),s=Mt("scrollContainerState"),u=a||i?l:s,c=Vt("itemContent"),m=Vt("trackItemSizes"),d=ve(r,Vt("itemSize"),m,u,Vt("log"),a),f=Vt("EmptyPlaceholder"),p=Vt("ScrollSeekPlaceholder")||Ht,h=Vt("TableBodyComponent"),g=Vt("TableRowComponent"),v=Vt("computeItemKey"),S=Vt("isSeeking"),C=Vt("paddingTopAddition"),I=Vt("firstItemIndex"),x=Vt("statefulTotalCount"),T=Vt("context");if(0===x&&f)return n.createElement(f,$e(f,T));var w=e.offsetTop+C+t,y=e.offsetBottom,b=w>0?n.createElement(Rt,{height:w,key:"padding-top"}):null,E=y>0?n.createElement(Rt,{height:y,key:"padding-bottom"}):null,L=e.items.map(function(e){var t=e.originalIndex,r=v(t+I,e.data,T);return S?n.createElement(p,o({},$e(p,T),{key:r,index:e.index,height:e.size,type:e.type||"item"})):n.createElement(g,o({},$e(g,T),{key:r,"data-index":t,"data-known-size":e.size,"data-item-index":e.index,style:{overflowAnchor:"none"}}),c(e.index,e.data,T))});return n.createElement(h,o({ref:d,"data-test-id":"virtuoso-item-list"},$e(h,T)),[b].concat(L,[E]))}),zt=function(e){var o=e.children,r=Mt("viewportHeight"),i=pe(t.compose(r,function(e){return A(e,"height")}));return n.createElement("div",{style:Ze,ref:i,"data-viewport-type":"element"},o)},Bt=function(e){var t=e.children,o=he(Mt("windowViewportRect"),Vt("customScrollParent"));return n.createElement("div",{ref:o,style:Ze,"data-viewport-type":"window"},t)},Ft=n.memo(function(e){var r=Vt("useWindowScroll"),i=Vt("customScrollParent"),a=Mt("fixedHeaderHeight"),l=Vt("fixedHeaderContent"),s=Vt("context"),u=pe(t.compose(a,function(e){return A(e,"height")})),c=i||r?Wt:At,m=i||r?Bt:zt,d=Vt("TableComponent"),f=Vt("TableHeadComponent"),p=l?n.createElement(f,o({key:"TableHead",style:{zIndex:1,position:"sticky",top:0},ref:u},$e(f,s)),l()):null;return n.createElement(c,o({},e),n.createElement(m,null,n.createElement(d,o({style:{borderSpacing:0}},$e(d,s)),[p,n.createElement(kt,{key:"TableBody"})])))}),Pt=e.systemToComponent(Lt,{required:{},optional:{context:"context",followOutput:"followOutput",firstItemIndex:"firstItemIndex",itemContent:"itemContent",fixedHeaderContent:"fixedHeaderContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",totalCount:"totalCount",topItemCount:"topItemCount",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",groupCounts:"groupCounts",atBottomThreshold:"atBottomThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedItemHeight:"fixedItemHeight",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ft),Ot=Pt.Component,Mt=Pt.usePublisher,Vt=Pt.useEmitterValue,Ut=Pt.useEmitter,At=et({usePublisher:Mt,useEmitterValue:Vt,useEmitter:Ut}),Wt=tt({usePublisher:Mt,useEmitterValue:Vt,useEmitter:Ut}),Nt=lt,Dt=Ot,Gt=It;exports.GroupedVirtuoso=lt,exports.TableVirtuoso=Dt,exports.Virtuoso=Nt,exports.VirtuosoGrid=Gt;
2
- //# sourceMappingURL=index.js.map
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./react-virtuoso.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./react-virtuoso.cjs.development.js')
8
+ }