@pdanpdan/virtual-scroll 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -6
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +295 -31
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +954 -878
- package/dist/index.mjs.map +1 -1
- package/dist/virtual-scroll.css +1 -1
- package/package.json +1 -1
- package/src/components/VirtualScroll.vue +301 -209
- package/src/components/VirtualScrollbar.vue +8 -8
- package/src/composables/useVirtualScroll.ts +261 -521
- package/src/composables/useVirtualScrollSizes.ts +448 -0
- package/src/composables/useVirtualScrollbar.ts +30 -35
- package/src/index.ts +1 -0
- package/src/types.ts +25 -2
- package/src/utils/scroll.ts +14 -14
- package/src/utils/virtual-scroll-logic.ts +305 -1
package/README.md
CHANGED
|
@@ -116,7 +116,9 @@ Items are rendered at their VU size and positioned using `translateY()` (or `tra
|
|
|
116
116
|
- **SSR Support**: Built-in support for pre-rendering specific ranges for Server-Side Rendering.
|
|
117
117
|
- **Sticky Sections**: Support for sticky headers, footers, and indices.
|
|
118
118
|
- **Scroll Restoration**: Automatically maintains scroll position when items are prepended to the list.
|
|
119
|
+
- **Scroll Snapping**: Automatically align to the nearest item after scrolling stops (start, center, end, or auto).
|
|
119
120
|
- **RTL Support**: Full support for Right-to-Left layouts with automatic detection.
|
|
121
|
+
- **Accessibility**: Automatic ARIA role mapping for lists, grids, trees, listboxes, and menus.
|
|
120
122
|
|
|
121
123
|
## Component Reference: VirtualScroll
|
|
122
124
|
|
|
@@ -130,18 +132,53 @@ Items are rendered at their VU size and positioned using `translateY()` (or `tra
|
|
|
130
132
|
| `columnCount` | `number` | `0` | Number of columns for grid mode. |
|
|
131
133
|
| `columnWidth` | `num | num[] | fn | null` | `100` | Width for columns in grid mode. |
|
|
132
134
|
| `gap` / `columnGap` | `number` | `0` | Spacing between items/columns. |
|
|
135
|
+
| `snap` | `SnapMode` | `false` | Enable scroll snapping. See [SnapMode](#snapmode). |
|
|
133
136
|
| `stickyIndices` | `number[]` | `[]` | Indices of items that should remain sticky. |
|
|
134
137
|
| `stickyHeader` / `stickyFooter` | `boolean` | `false` | If true, measures and adds slot size to padding. |
|
|
135
138
|
| `ssrRange` | `object` | - | Range of items to pre-render for SSR. |
|
|
136
139
|
| `virtualScrollbar` | `boolean` | `false` | Whether to force virtual scrollbars. |
|
|
137
140
|
| `restoreScrollOnPrepend` | `boolean` | `false` | Maintain position when items added to top. |
|
|
138
141
|
| `container` | `HTMLElement | Window` | `hostRef` | The scrollable container element. |
|
|
142
|
+
| `containerTag` | `string` | `'div'` | HTML tag for the root container. |
|
|
143
|
+
| `wrapperTag` | `string` | `'div'` | HTML tag for the items wrapper. |
|
|
144
|
+
| `itemTag` | `string` | `'div'` | HTML tag for each rendered item. |
|
|
139
145
|
| `scrollPaddingStart` / `End` | `num | {x, y}` | `0` | Padding for scroll calculations. |
|
|
140
146
|
| `bufferBefore` / `bufferAfter` | `number` | `5` | Items to render outside the viewport. |
|
|
141
147
|
| `initialScrollIndex` | `number` | `undefined` | Index to jump to on mount. |
|
|
142
|
-
| `initialScrollAlign` | `
|
|
148
|
+
| `initialScrollAlign` | `ScrollAlignment | ScrollAlignmentOptions` | `'start'` | Alignment for initial jump. See [ScrollAlignment](#scrollalignment) or [Options](#scrollalignmentoptions). |
|
|
143
149
|
| `defaultItemSize` / `defaultColumnWidth` | `number` | `40 / 100` | Estimate for dynamic items/columns. |
|
|
144
150
|
| `debug` | `boolean` | `false` | Enable debug visualization. |
|
|
151
|
+
| `role` | `string` | - | ARIA role for the container. Defaults based on direction. |
|
|
152
|
+
| `ariaLabel` / `Labelledby` | `string` | - | Accessibility labels for the container. |
|
|
153
|
+
| `itemRole` | `string` | - | ARIA role for items. Defaults based on `role`. |
|
|
154
|
+
|
|
155
|
+
### SnapMode
|
|
156
|
+
|
|
157
|
+
Controls the automatic alignment after scrolling stops.
|
|
158
|
+
|
|
159
|
+
- `false` (default): No snapping.
|
|
160
|
+
- `true` / `'auto'`: Intelligent snapping based on scroll direction. Acts as `'end'` when scrolling towards start, and `'start'` when scrolling towards end.
|
|
161
|
+
- `'start'`: Aligns the first visible item to the viewport start if at least 50% visible, otherwise aligns the next item.
|
|
162
|
+
- `'center'`: Aligns the item that intersects the viewport center to the center.
|
|
163
|
+
- `'end'`: Aligns the last visible item to the viewport end if at least 50% visible, otherwise aligns the previous item.
|
|
164
|
+
|
|
165
|
+
**Note:** Snapping is automatically disabled if the target item's size is larger than the viewport dimension.
|
|
166
|
+
|
|
167
|
+
### ScrollAlignment
|
|
168
|
+
|
|
169
|
+
Controls the item's final position in the viewport during `scrollToIndex`.
|
|
170
|
+
|
|
171
|
+
- `'start'`: Aligns to top (vertical) or left (horizontal) edge.
|
|
172
|
+
- `'center'`: Aligns to viewport center.
|
|
173
|
+
- `'end'`: Aligns to bottom (vertical) or right (horizontal) edge.
|
|
174
|
+
- `'auto'` (default): **Smart:** If the item is already fully visible, no scroll occurs. Otherwise, aligns to `'start'` or `'end'` to bring it into view.
|
|
175
|
+
|
|
176
|
+
### ScrollAlignmentOptions
|
|
177
|
+
|
|
178
|
+
Allows axis-specific alignment in `scrollToIndex`.
|
|
179
|
+
|
|
180
|
+
- `x`: `ScrollAlignment` for the horizontal axis.
|
|
181
|
+
- `y`: `ScrollAlignment` for the vertical axis.
|
|
145
182
|
|
|
146
183
|
### Slots
|
|
147
184
|
|
|
@@ -165,8 +202,8 @@ The following properties and methods are available on the `VirtualScroll` compon
|
|
|
165
202
|
|
|
166
203
|
#### Properties
|
|
167
204
|
- **All Props**: All properties defined in [Props](#props) are available on the instance.
|
|
168
|
-
- `scrollDetails`: Full reactive state of the virtual scroll system.
|
|
169
|
-
- `columnRange`: Information about the current visible range of columns.
|
|
205
|
+
- `scrollDetails`: Full reactive state of the virtual scroll system. See [ScrollDetails](#scrolldetails).
|
|
206
|
+
- `columnRange`: Information about the current visible range of columns. See [ColumnRange](#columnrange).
|
|
170
207
|
- `isHydrated`: `true` when the component is mounted and hydrated.
|
|
171
208
|
- `isRtl`: `true` if the container is in Right-to-Left mode.
|
|
172
209
|
- `scrollbarPropsVertical` / `scrollbarPropsHorizontal`: Reactive `ScrollbarSlotProps`.
|
|
@@ -175,10 +212,10 @@ The following properties and methods are available on the `VirtualScroll` compon
|
|
|
175
212
|
- `componentOffset`: Absolute offset of the component within its container (DU).
|
|
176
213
|
|
|
177
214
|
#### Methods
|
|
178
|
-
- `scrollToIndex(row, col, options)`: Programmatic scroll to index.
|
|
215
|
+
- `scrollToIndex(row, col, options)`: Programmatic scroll to index. See [ScrollToIndexOptions](#scrolltoindexoptions).
|
|
179
216
|
- `scrollToOffset(x, y, options)`: Programmatic scroll to pixel position.
|
|
180
217
|
- `refresh()`: Resets all measurements and state.
|
|
181
|
-
- `stopProgrammaticScroll()`: Halt smooth scroll animations.
|
|
218
|
+
- `stopProgrammaticScroll()`: Halt smooth scroll animations and inertia.
|
|
182
219
|
- `updateDirection()`: Manually trigger direction detection.
|
|
183
220
|
- `updateHostOffset()`: Recalculate component position.
|
|
184
221
|
- `updateItemSize(index, w, h, el?)`: Register single measurement.
|
|
@@ -189,6 +226,59 @@ The following properties and methods are available on the `VirtualScroll` compon
|
|
|
189
226
|
- `getColumnOffset(index)`: Returns the virtual offset of a column.
|
|
190
227
|
- `getItemOffset(index)`: Returns the virtual offset of an item.
|
|
191
228
|
- `getItemSize(index)`: Returns the size of an item along the scroll axis.
|
|
229
|
+
- `getRowIndexAt(offset)`: Returns the row index at a virtual offset.
|
|
230
|
+
- `getColIndexAt(offset)`: Returns the column index at a virtual offset.
|
|
231
|
+
- `getCellAriaProps(colIndex)`: Returns ARIA attributes for a grid cell.
|
|
232
|
+
- `getItemAriaProps(index)`: Returns ARIA attributes for a row/item.
|
|
233
|
+
|
|
234
|
+
## Accessibility (ARIA)
|
|
235
|
+
|
|
236
|
+
The component automatically manages ARIA roles and attributes to ensure screen readers can navigate the virtualized content.
|
|
237
|
+
|
|
238
|
+
| Role Prop | Default Item Role | Usage Case |
|
|
239
|
+
|-----------|-------------------|------------|
|
|
240
|
+
| `list` | `listitem` | Standard vertical or horizontal list. |
|
|
241
|
+
| `grid` | `row` | Bidirectional grid or table. |
|
|
242
|
+
| `tree` | `treeitem` | Hierarchical list. |
|
|
243
|
+
| `listbox` | `option` | Selection lists. |
|
|
244
|
+
| `menu` | `menuitem` | Navigational menus. |
|
|
245
|
+
|
|
246
|
+
`aria-rowcount`, `aria-colcount`, `aria-rowindex`, and `aria-colindex` are automatically calculated and applied based on the current scroll state.
|
|
247
|
+
|
|
248
|
+
## Type Definitions
|
|
249
|
+
|
|
250
|
+
### ScrollDetails
|
|
251
|
+
|
|
252
|
+
| Property | Type | Description |
|
|
253
|
+
|----------|------|-------------|
|
|
254
|
+
| `items` | `RenderedItem[]` | List of items currently in DOM. |
|
|
255
|
+
| `currentIndex` | `number` | Index of first visible row. |
|
|
256
|
+
| `currentColIndex` | `number` | Index of first visible column. |
|
|
257
|
+
| `scrollOffset` | `Point` | Current virtual scroll position (VU). |
|
|
258
|
+
| `displayScrollOffset` | `Point` | Current physical scroll position (DU). |
|
|
259
|
+
| `viewportSize` | `Size` | Dimensions of visible area (VU). |
|
|
260
|
+
| `displayViewportSize` | `Size` | Physical dimensions of visible area (DU). |
|
|
261
|
+
| `totalSize` | `Size` | Total size of all items (VU). |
|
|
262
|
+
| `isScrolling` | `boolean` | Whether scrolling is active. |
|
|
263
|
+
| `isProgrammaticScroll`| `boolean` | Whether scroll was triggered via API. |
|
|
264
|
+
| `range` | `{start, end}` | Range of rendered item indices. |
|
|
265
|
+
| `columnRange` | `ColumnRange` | Range of rendered columns. |
|
|
266
|
+
|
|
267
|
+
### ColumnRange
|
|
268
|
+
|
|
269
|
+
| Property | Type | Description |
|
|
270
|
+
|----------|------|-------------|
|
|
271
|
+
| `start` | `number` | First rendered column index. |
|
|
272
|
+
| `end` | `number` | Last rendered column index (exclusive). |
|
|
273
|
+
| `padStart` | `number` | Virtual padding at the start of the row (VU). |
|
|
274
|
+
| `padEnd` | `number` | Virtual padding at the end of the row (VU). |
|
|
275
|
+
|
|
276
|
+
### ScrollToIndexOptions
|
|
277
|
+
|
|
278
|
+
| Property | Type | Default | Description |
|
|
279
|
+
|----------|------|---------|-------------|
|
|
280
|
+
| `align` | `ScrollAlignment | ScrollAlignmentOptions` | `'auto'` | Alignment logic. |
|
|
281
|
+
| `behavior` | `'auto' | 'smooth'` | `'smooth'` | Scroll animation. |
|
|
192
282
|
|
|
193
283
|
## Sizing Guide
|
|
194
284
|
|
|
@@ -265,12 +355,15 @@ The `scrollbar` slot provides everything needed to build a fully custom interfac
|
|
|
265
355
|
| `--vs-scrollbar-bg` | `rgba(230,230,230,0.9) / rgba(30,30,30,0.9)` | Track background color. |
|
|
266
356
|
| `--vs-scrollbar-thumb-bg` | `rgba(0,0,0,0.3) / rgba(255,255,255,0.3)` | Thumb background color. |
|
|
267
357
|
| `--vs-scrollbar-thumb-hover-bg` | `rgba(0,0,0,0.6) / rgba(255,255,255,0.6)` | Thumb background on hover/active. |
|
|
268
|
-
| `--vs-scrollbar-size` | `8px` | Width
|
|
358
|
+
| `--vs-scrollbar-size` | `8px` | Width (vertical) or height (horizontal) of the scrollbar. |
|
|
269
359
|
| `--vs-scrollbar-radius` | `4px` | Border radius for track and thumb. |
|
|
360
|
+
| `--vs-scrollbar-cross-gap` | `var(--vs-scrollbar-size)` | Size of gap where scrollbars meet. |
|
|
361
|
+
| `--vs-scrollbar-has-cross-gap` | `0` | If gap should be shown where scrollbars meet. |
|
|
270
362
|
|
|
271
363
|
## Composables
|
|
272
364
|
|
|
273
365
|
- `useVirtualScroll(props)`: Core logic for virtualization.
|
|
366
|
+
- `useVirtualScrollSizes(config)`: Size and measurement management.
|
|
274
367
|
- `useVirtualScrollbar(props)`: Logic for scrollbar interactions.
|
|
275
368
|
|
|
276
369
|
## License
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`);const t=40,n=100,r=5,i={items:[],currentIndex:0,currentColIndex:0,currentEndIndex:0,currentEndColIndex:0,scrollOffset:{x:0,y:0},displayScrollOffset:{x:0,y:0},viewportSize:{width:0,height:0},displayViewportSize:{width:0,height:0},totalSize:{width:0,height:0},isScrolling:!1,isProgrammaticScroll:!1,range:{start:0,end:0},columnRange:{start:0,end:0,padStart:0,padEnd:0}};var a=class{tree;values;constructor(e){this.tree=new Float64Array(e+1),this.values=new Float64Array(e)}update(e,t){if(!(e<0||e>=this.values.length))for(this.values[e]=this.values[e]+t,e++;e<this.tree.length;)this.tree[e]=this.tree[e]+t,e+=e&-e}query(e){let t=0;for(;e>0;)t+=this.tree[e]||0,e-=e&-e;return t}set(e,t){e<0||e>=this.values.length||(this.values[e]=t)}get length(){return this.values.length}get(e){return this.values[e]||0}getValues(){return this.values}findLowerBound(e){let t=0,n=this.tree.length,r=1<<Math.floor(Math.log2(n-1));for(;r>0;){let i=t+r;if(i<n){let n=this.tree[i]||0;n<=e&&(t=i,e-=n)}r>>=1}return t}rebuild(){this.tree.fill(0);for(let e=0;e<this.values.length;e++)this.tree[e+1]=this.values[e]||0;for(let e=1;e<this.tree.length;e++){let t=e+(e&-e);t<this.tree.length&&(this.tree[t]=this.tree[t]+this.tree[e])}}resize(e){if(e===this.values.length)return;let t=new Float64Array(e);t.set(this.values.subarray(0,Math.min(e,this.values.length))),this.values=t,this.tree=new Float64Array(e+1),this.rebuild()}shift(e){if(e===0)return;let t=this.values.length,n=new Float64Array(t);e>0?n.set(this.values.subarray(0,Math.min(t-e,this.values.length)),e):n.set(this.values.subarray(-e)),this.values=n,this.rebuild()}};const o=1e7;function s(e){return e===null||e===document.documentElement||typeof window<`u`&&e===window}function c(e){return typeof e==`object`&&!!e&&`tagName`in e&&e.tagName===`BODY`}function l(e){return s(e)||c(e)}function u(e){return e!=null&&`getBoundingClientRect`in e}function d(e){return e!=null&&`scrollLeft`in e}function f(e,t){s(e)?window.scrollTo(t):e!=null&&d(e)&&(typeof e.scrollTo==`function`?e.scrollTo(t):(t.left!==void 0&&(e.scrollLeft=t.left),t.top!==void 0&&(e.scrollTop=t.top)))}function p(e){return typeof e==`object`&&!!e&&(`align`in e||`behavior`in e||`isCorrection`in e)}function m(e,t){return typeof e==`object`&&e?e.x||0:(t===`horizontal`||t===`both`)&&e||0}function h(e,t){return typeof e==`object`&&e?e.y||0:(t===`vertical`||t===`both`)&&e||0}function g({scrollPos:e,containerSize:t,count:n,bufferBefore:r,bufferAfter:i,gap:a,fixedSize:o,findLowerBound:s,query:c}){let l=0,u=n,d=e+t;if(o!==null){let t=o+a;l=Math.floor(e/t),u=Math.ceil(d/t)}else l=s(e),u=s(d),u<n&&c(u)<d&&u++;return{start:Math.max(0,l-r),end:Math.min(n,u+i)}}function _(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]>t?(i=e[a],r=a-1):n=a+1}return i}function v(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]<t?(i=e[a],n=a+1):r=a-1}return i}function y({align:e,targetPos:t,itemSize:n,scrollPos:r,viewSize:i,stickyOffsetStart:a,stickyOffsetEnd:o}){let s=t-a,c=t-(i-o-n);return e===`start`?{target:s,effectiveAlign:`start`}:e===`center`?{target:t-a-(i-a-o-n)/2,effectiveAlign:`center`}:e===`end`?{target:c,effectiveAlign:`end`}:C(t,n,r,i,a,o)?{target:r,effectiveAlign:`auto`}:n<=i-a-o?t<r+a?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}:Math.abs(s-r)<Math.abs(c-r)?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}}function b(e,t,n,r){return e<=0?0:t===null?Math.max(0,r(e)-n):Math.max(0,e*(t+n)-n)}function x({index:e,align:t,viewSize:n,scrollPos:r,fixedSize:i,gap:a,query:o,getSize:s,stickyIndices:c,stickyStart:l,stickyEnd:u=0}){let d=l;if(c&&c.length>0){let t=v(c,e);t!==void 0&&(d+=b(1,i,0,()=>s(t)))}let f=i===null?o(e):e*(i+a),p=i===null?s(e)-a:i,{target:m,effectiveAlign:h}=y({align:t,targetPos:f,itemSize:p,scrollPos:r,viewSize:n,stickyOffsetStart:d,stickyOffsetEnd:u});return{target:m,itemSize:p,effectiveAlign:h}}function S(e,t,n,r,i,a){if(e<=t)return{isActive:!1,offset:0};let o=_(i,r);if(o===void 0)return{isActive:!0,offset:0};let s=a(o);return e>=s?{isActive:!1,offset:0}:{isActive:!0,offset:Math.max(0,Math.min(n,s-e))-n}}function C(e,t,n,r,i=0,a=0){let o=n+i,s=n+r-a;return t<=r-i-a?e>=o-.5&&e+t<=s+.5:e<=o+.5&&e+t>=s-.5}function ee(e,t,n){return(e-t)*n}function te(e,t,n){return e/n+t}function w({rowIndex:e,colIndex:t,options:n,direction:r,viewportWidth:i,viewportHeight:a,totalWidth:s,totalHeight:c,gap:l,columnGap:u,fixedSize:d,fixedWidth:f,relativeScrollX:m,relativeScrollY:h,getItemSizeY:g,getItemSizeX:_,getItemQueryY:v,getItemQueryX:y,getColumnSize:b,getColumnQuery:S,scaleX:C,scaleY:ee,hostOffsetX:te,hostOffsetY:w,stickyIndices:ne,stickyStartX:re=0,stickyStartY:ie=0,stickyEndX:ae=0,stickyEndY:oe=0,flowPaddingStartX:T=0,flowPaddingStartY:E=0,paddingStartX:D=0,paddingStartY:O=0,paddingEndX:k=0,paddingEndY:se=0}){let A;A=p(n)?n.align:n;let j=(A&&typeof A==`object`?A.x:A)||`auto`,M=(A&&typeof A==`object`?A.y:A)||`auto`,N=m,P=h,F=0,I=0,L=`auto`,ce=`auto`,le=C===1?s:o,R=ee===1?c:o,z=Math.max(0,te+le-i),ue=Math.max(0,w+R-a),B=(z-te)*C,V=(ue-w)*ee,de=T+re+D,fe=E+ie+O;if(e!=null){let t=x({index:e,align:M,viewSize:a,scrollPos:h,fixedSize:d,gap:l,query:v,getSize:g,stickyIndices:ne,stickyStart:ie+O,stickyEnd:oe+se});P=t.target+fe,I=t.itemSize,ce=t.effectiveAlign}if(t!=null){let e=r===`both`,n=x({index:t,align:j,viewSize:i,scrollPos:m,fixedSize:e?f:d,gap:e||r===`horizontal`?u:l,query:e?S:y,getSize:e?b:_,stickyIndices:ne,stickyStart:re+D,stickyEnd:ae+k});N=n.target+de,F=n.itemSize,L=n.effectiveAlign}return N=Math.max(0,Math.min(N,B)),P=Math.max(0,Math.min(P,V)),{targetX:N,targetY:P,itemWidth:F,itemHeight:I,effectiveAlignX:L,effectiveAlignY:ce}}function ne({direction:e,relativeScrollX:t,relativeScrollY:n,usableWidth:r,usableHeight:i,itemsLength:a,bufferBefore:o,bufferAfter:s,gap:c,columnGap:l,fixedSize:u,findLowerBoundY:d,findLowerBoundX:f,queryY:p,queryX:m}){let h=e===`vertical`||e===`both`;return g({scrollPos:h?n:t,containerSize:h?i:r,count:a,bufferBefore:o,bufferAfter:s,gap:h?c:l,fixedSize:u,findLowerBound:h?d:f,query:h?p:m})}function re({columnCount:e,relativeScrollX:t,usableWidth:n,colBuffer:r,fixedWidth:i,columnGap:a,findLowerBound:o,query:s,totalColsQuery:c}){if(!e)return{start:0,end:0,padStart:0,padEnd:0};let{start:l,end:u}=g({scrollPos:t,containerSize:n,count:e,bufferBefore:r,bufferAfter:r,gap:a,fixedSize:i,findLowerBound:o,query:s}),d=l,f=u,p=i===null?s(d):d*(i+a),m=i===null?Math.max(0,c()-a):e*(i+a)-a,h=i===null?s(f)-(f>0?a:0):f*(i+a)-(f>0?a:0);return{start:d,end:f,padStart:p,padEnd:Math.max(0,m-h)}}function ie({index:e,isSticky:t,direction:n,relativeScrollX:r,relativeScrollY:i,originalX:a,originalY:o,width:s,height:c,stickyIndices:l,fixedSize:u,gap:d,columnGap:f,getItemQueryY:p,getItemQueryX:m}){let h=!1,g=!1,_={x:0,y:0};if(!t)return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:!1,stickyOffset:_};if(n===`vertical`||n===`both`){let t=S(i,o,c,e,l,e=>u===null?p(e):e*(u+d));g=t.isActive,_.y=t.offset}if(n===`horizontal`){let t=S(r,a,s,e,l,e=>u===null?m(e):e*(u+f));t.isActive&&(h=!0,_.x=t.offset)}return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:h||g,stickyOffset:_}}function ae({index:e,direction:t,fixedSize:n,gap:r,columnGap:i,usableWidth:a,usableHeight:o,totalWidth:s,queryY:c,queryX:l,getSizeY:u,getSizeX:d,columnRange:f}){let p=0,m=0,h=0,g=0;return t===`horizontal`?(p=n===null?l(e):e*(n+i),h=n===null?d(e)-i:n,g=o):t===`both`&&f?(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,p=f.padStart,h=Math.max(0,s-f.padStart-f.padEnd)):(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,h=t===`both`?s:a),{height:g,width:h,x:p,y:m}}function oe({item:e,direction:t,itemSize:n,containerTag:r,paddingStartX:i,paddingStartY:a,isHydrated:o,isRtl:s}){let c=t===`vertical`,l=t===`horizontal`,u=t===`both`,d=n==null||n===0,f={blockSize:l?`100%`:d?`auto`:`${e.size.height}px`};if(c&&r===`table`?f.minInlineSize=`100%`:f.inlineSize=c?`100%`:d?`auto`:`${e.size.width}px`,d&&(c||(f.minInlineSize=`1px`),l||(f.minBlockSize=`1px`)),o){let t=e.isStickyActiveY??(e.isStickyActive&&(c||u)),n=e.isStickyActiveX??(e.isStickyActive&&l),r=s?-(n?e.stickyOffset.x:e.offset.x):n?e.stickyOffset.x:e.offset.x,o=t?e.stickyOffset.y:e.offset.y;e.isStickyActive||e.isStickyActiveX||e.isStickyActiveY?(f.insetBlockStart=t?`${a}px`:`auto`,f.insetInlineStart=n?`${i}px`:`auto`,f.transform=`translate(${r}px, ${o}px)`):f.transform=`translate(${r}px, ${e.offset.y}px)`}return f}function T({direction:e,itemsLength:t,columnCount:n,fixedSize:r,fixedWidth:i,gap:a,columnGap:o,usableWidth:s,usableHeight:c,queryY:l,queryX:u,queryColumn:d}){let f=e===`both`,p=e===`horizontal`,m=0,h=0;return f?(m=b(n,i,o,d),h=b(t,r,a,l)):p?(m=b(t,r,o,u),h=c):(m=s,h=b(t,r,a,l)),{width:f?Math.max(m,s):m,height:f?Math.max(h,c):h}}function E(t){let n=(0,e.computed)(()=>(0,e.toValue)(t)),r=(0,e.ref)(0),i=(0,e.ref)(0),s=(0,e.ref)(!1),c=(0,e.ref)(!1),g=(0,e.ref)(!1),_=(0,e.ref)(!1),y=(0,e.ref)(!1),b=(0,e.ref)(0),x=(0,e.ref)(0),S=(0,e.reactive)({x:0,y:0}),C=(0,e.reactive)({x:0,y:0}),oe,E=(0,e.ref)(!1),D=(0,e.ref)(0),O=(0,e.ref)(0),k=null,se=()=>{if(typeof window>`u`)return;let e=n.value.container||n.value.hostRef||window,t=u(e)?e:document.documentElement;(!k||!(`direction`in k))&&(k=window.getComputedStyle(t));let r=k.direction===`rtl`;y.value!==r&&(y.value=r)},A=new a(n.value.items?.length||0),j=new a(n.value.items?.length||0),M=new a(n.value.columnCount||0),N=(0,e.ref)(0),P=new Uint8Array,F=new Uint8Array,I=new Uint8Array,L=(0,e.ref)(null),ce=(0,e.ref)(!1),le=[],R=(0,e.computed)(()=>[`vertical`,`horizontal`,`both`].includes(n.value.direction)?n.value.direction:`vertical`),z=(0,e.computed)(()=>n.value.itemSize===void 0||n.value.itemSize===null||n.value.itemSize===0),ue=(0,e.computed)(()=>n.value.columnWidth===void 0||n.value.columnWidth===null||n.value.columnWidth===0),B=(0,e.computed)(()=>typeof n.value.itemSize==`number`&&n.value.itemSize>0?n.value.itemSize:null),V=(0,e.computed)(()=>typeof n.value.columnWidth==`number`&&n.value.columnWidth>0?n.value.columnWidth:null),de=(0,e.computed)(()=>n.value.defaultItemSize||B.value||40),fe=(0,e.computed)(()=>[...n.value.stickyIndices||[]].sort((e,t)=>e-t)),pe=(0,e.computed)(()=>new Set(fe.value)),H=(0,e.computed)(()=>m(n.value.scrollPaddingStart,n.value.direction)),me=(0,e.computed)(()=>m(n.value.scrollPaddingEnd,n.value.direction)),he=(0,e.computed)(()=>h(n.value.scrollPaddingStart,n.value.direction)),ge=(0,e.computed)(()=>h(n.value.scrollPaddingEnd,n.value.direction)),U=(0,e.computed)(()=>m(n.value.stickyStart,n.value.direction)),W=(0,e.computed)(()=>m(n.value.stickyEnd,n.value.direction)),G=(0,e.computed)(()=>h(n.value.stickyStart,n.value.direction)),_e=(0,e.computed)(()=>h(n.value.stickyEnd,n.value.direction)),K=(0,e.computed)(()=>m(n.value.flowPaddingStart,n.value.direction)),ve=(0,e.computed)(()=>m(n.value.flowPaddingEnd,n.value.direction)),q=(0,e.computed)(()=>h(n.value.flowPaddingStart,n.value.direction)),ye=(0,e.computed)(()=>h(n.value.flowPaddingEnd,n.value.direction)),be=(0,e.computed)(()=>b.value-(R.value===`vertical`?0:U.value+W.value)),xe=(0,e.computed)(()=>x.value-(R.value===`horizontal`?0:G.value+_e.value)),Se=(0,e.computed)(()=>{if(N.value,!c.value&&n.value.ssrRange&&!_.value){let{start:e=0,end:t=0,colStart:r=0,colEnd:i=0}=n.value.ssrRange,a=n.value.columnCount||0,o=n.value.gap||0,s=n.value.columnGap||0,c=0,l=0;if(R.value===`both`){if(a>0){let e=i||a,t=M.query(e)-M.query(r);c=Math.max(0,t-(e>r?s:0))}if(B.value!==null){let n=t-e;l=Math.max(0,n*(B.value+o)-(n>0?o:0))}else{let n=j.query(t)-j.query(e);l=Math.max(0,n-(t>e?o:0))}}else if(R.value===`horizontal`){if(B.value!==null){let n=t-e;c=Math.max(0,n*(B.value+s)-(n>0?s:0))}else{let n=A.query(t)-A.query(e);c=Math.max(0,n-(t>e?s:0))}l=xe.value}else if(c=be.value,B.value!==null){let n=t-e;l=Math.max(0,n*(B.value+o)-(n>0?o:0))}else{let n=j.query(t)-j.query(e);l=Math.max(0,n-(t>e?o:0))}return{width:Math.max(c,be.value),height:Math.max(l,xe.value)}}return T({direction:R.value,itemsLength:n.value.items.length,columnCount:n.value.columnCount||0,fixedSize:B.value,fixedWidth:V.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:be.value,usableHeight:xe.value,queryY:e=>j.query(e),queryX:e=>A.query(e),queryColumn:e=>M.query(e)})}),Ce=(0,e.computed)(()=>l(n.value.container)),we=(0,e.computed)(()=>Se.value.width+H.value+me.value),Te=(0,e.computed)(()=>Se.value.height+he.value+ge.value),J=(0,e.computed)(()=>K.value+U.value+W.value+ve.value+we.value),Y=(0,e.computed)(()=>q.value+G.value+_e.value+ye.value+Te.value),X=(0,e.reactive)({x:(0,e.computed)(()=>Math.max(0,S.x-(K.value+U.value))),y:(0,e.computed)(()=>Math.max(0,S.y-(q.value+G.value)))}),Ee=(0,e.computed)(()=>Ce.value?J.value:Math.min(J.value,o)),De=(0,e.computed)(()=>Ce.value?Y.value:Math.min(Y.value,o)),Oe=(0,e.computed)(()=>Ce.value?we.value:Math.max(0,Ee.value-(K.value+U.value+W.value+ve.value))),ke=(0,e.computed)(()=>Ce.value?Te.value:Math.max(0,De.value-(q.value+G.value+_e.value+ye.value))),Z=(0,e.computed)(()=>{if(Ce.value||J.value<=1e7)return 1;let e=J.value-b.value,t=Ee.value-b.value;return t>0?e/t:1}),Ae=(0,e.computed)(()=>{if(Ce.value||Y.value<=1e7)return 1;let e=Y.value-x.value,t=De.value-x.value;return t>0?e/t:1}),je=(0,e.computed)(()=>{if(R.value===`vertical`)return 0;let e=K.value+U.value+H.value;return D.value-e}),Q=(0,e.computed)(()=>{if(R.value===`horizontal`)return 0;let e=q.value+G.value+he.value;return O.value-e}),Me=e=>{N.value;let t=n.value.columnGap||0,r=n.value.columnWidth;if(typeof r==`number`&&r>0)return r;if(Array.isArray(r)&&r.length>0){let t=r[e%r.length];return t!=null&&t>0?t:n.value.defaultColumnWidth||100}if(typeof r==`function`)return r(e);let i=M.get(e);return i>0?i-t:n.value.defaultColumnWidth||100},Ne=e=>{if(N.value,R.value===`horizontal`)return xe.value;let t=n.value.gap||0,r=n.value.itemSize;if(typeof r==`number`&&r>0)return r;if(typeof r==`function`){let t=n.value.items[e];return t===void 0?n.value.defaultItemSize||40:r(t,e)}let i=j.get(e);return i>0?i-t:n.value.defaultItemSize||40};function Pe(e,t,a){let o=typeof a==`object`&&a&&`isCorrection`in a?a.isCorrection:!1,s=n.value.container||window,{targetX:c,targetY:l,effectiveAlignX:u,effectiveAlignY:d}=w({rowIndex:e,colIndex:t,options:a,direction:R.value,viewportWidth:b.value,viewportHeight:x.value,totalWidth:J.value,totalHeight:Y.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:B.value,fixedWidth:V.value,relativeScrollX:je.value,relativeScrollY:Q.value,getItemSizeY:e=>j.get(e),getItemSizeX:e=>A.get(e),getItemQueryY:e=>j.query(e),getItemQueryX:e=>A.query(e),getColumnSize:e=>M.get(e),getColumnQuery:e=>M.query(e),scaleX:Z.value,scaleY:Ae.value,hostOffsetX:X.x,hostOffsetY:X.y,stickyIndices:fe.value,stickyStartX:U.value,stickyStartY:G.value,stickyEndX:W.value,stickyEndY:_e.value,flowPaddingStartX:K.value,flowPaddingStartY:q.value,paddingStartX:H.value,paddingStartY:he.value,paddingEndX:me.value,paddingEndY:ge.value});if(!o){let n=p(a)?a.behavior:void 0;L.value={rowIndex:e,colIndex:t,options:{align:{x:u,y:d},...n==null?{}:{behavior:n}}}}let m=te(c,X.x,Z.value),h=te(l,X.y,Ae.value),g=y.value?-m:m,_=h,v;p(a)&&(v=a.behavior);let S=o?`auto`:v||`smooth`;E.value=!0;let C={behavior:S};if(t!=null&&(C.left=y.value?g:Math.max(0,g)),e!=null&&(C.top=Math.max(0,_)),f(s,C),(S===`auto`||S===void 0)&&(t!=null&&(r.value=y.value?g:Math.max(0,g),D.value=c),e!=null&&(i.value=Math.max(0,_),O.value=l),L.value)){let e=L.value.options;p(e)?e.behavior=`auto`:L.value.options={align:e,behavior:`auto`}}}let Fe=(e,t,a)=>{let o=n.value.container||window;E.value=!0,L.value=null;let s=e==null?null:Math.max(0,Math.min(e,J.value-b.value)),c=t==null?null:Math.max(0,Math.min(t,Y.value-x.value));s!==null&&(D.value=s),c!==null&&(O.value=c);let l=typeof window<`u`&&o===window?window.scrollX:o.scrollLeft,u=typeof window<`u`&&o===window?window.scrollY:o.scrollTop,d=s===null?null:te(s,X.x,Z.value),p=c===null?null:te(c,X.y,Ae.value),m=d===null?l:y.value?-d:d,h=p===null?u:p,g={behavior:a?.behavior||`auto`};e!=null&&(g.left=m),t!=null&&(g.top=h),f(o,g),(a?.behavior===`auto`||a?.behavior===void 0)&&(e!=null&&(r.value=m),t!=null&&(i.value=h))},Ie=(e,t)=>{if(A.resize(e),j.resize(e),M.resize(t),F.length!==e){let t=new Uint8Array(e);t.set(F.subarray(0,Math.min(e,F.length))),F=t}if(I.length!==e){let t=new Uint8Array(e);t.set(I.subarray(0,Math.min(e,I.length))),I=t}if(P.length!==t){let e=new Uint8Array(t);e.set(P.subarray(0,Math.min(t,P.length))),P=e}},Le=()=>{let e=n.value.items.length,t=n.value.columnCount||0,r=n.value.gap||0,i=n.value.columnGap||0,a=n.value.columnWidth,o=!1,s=!1;if(t>0)for(let e=0;e<t;e++){let t=M.get(e),r=P[e]===1;if(!ue.value||!r&&t===0){let r=0;r=typeof a==`number`&&a>0?a:Array.isArray(a)&&a.length>0?a[e%a.length]||n.value.defaultColumnWidth||100:typeof a==`function`?a(e):n.value.defaultColumnWidth||100;let s=r+i;Math.abs(t-s)>.5?(M.set(e,s),P[e]=ue.value?0:1,o=!0):ue.value||(P[e]=1)}}for(let t=0;t<e;t++){let e=n.value.items[t],a=A.get(t),o=j.get(t),c=F[t]===1,l=I[t]===1;if(R.value===`horizontal`){if(!z.value||!c&&a===0){let r=(typeof n.value.itemSize==`function`?n.value.itemSize(e,t):de.value)+i;Math.abs(a-r)>.5?(A.set(t,r),F[t]=z.value?0:1,s=!0):z.value||(F[t]=1)}}else a!==0&&(A.set(t,0),F[t]=0,s=!0);if(R.value!==`horizontal`){if(!z.value||!l&&o===0){let i=(typeof n.value.itemSize==`function`?n.value.itemSize(e,t):de.value)+r;Math.abs(o-i)>.5?(j.set(t,i),I[t]=z.value?0:1,s=!0):z.value||(I[t]=1)}}else o!==0&&(j.set(t,0),I[t]=0,s=!0)}o&&M.rebuild(),s&&(A.rebuild(),j.rebuild())},$=()=>{let t=n.value.items,r=t.length;Ie(r,n.value.columnCount||0);let i=0;if(n.value.restoreScrollOnPrepend&&le.length>0&&r>le.length){let e=le[0];if(e!==void 0){for(let n=1;n<=r-le.length;n++)if(t[n]===e){i=n;break}}}if(i>0){A.shift(i),j.shift(i),L.value&&L.value.rowIndex!==null&&L.value.rowIndex!==void 0&&(L.value.rowIndex+=i);let a=new Uint8Array(r),o=new Uint8Array(r);a.set(F.subarray(0,Math.min(r-i,F.length)),i),o.set(I.subarray(0,Math.min(r-i,I.length)),i),F=a,I=o;let s=n.value.gap||0,c=n.value.columnGap||0,l=0,u=0;for(let e=0;e<i;e++){let r=typeof n.value.itemSize==`function`?n.value.itemSize(t[e],e):de.value;R.value===`horizontal`?l+=r+c:u+=r+s}(l>0||u>0)&&(0,e.nextTick)(()=>{Fe(l>0?je.value+l:null,u>0?Q.value+u:null,{behavior:`auto`,isCorrection:!0})})}Le(),le=[...t],ce.value=!0,N.value++},Re=()=>{if(typeof window>`u`)return;let e=n.value.container||window,t=t=>{let n=t.getBoundingClientRect();if(e===window)return{x:y.value?document.documentElement.clientWidth-n.right-window.scrollX:n.left+window.scrollX,y:n.top+window.scrollY};if(e===t)return{x:0,y:0};if(u(e)){let t=e.getBoundingClientRect();return{x:y.value?t.right-n.right-e.scrollLeft:n.left-t.left+e.scrollLeft,y:n.top-t.top+e.scrollTop}}return{x:0,y:0}};if(n.value.hostElement){let e=t(n.value.hostElement);(Math.abs(S.x-e.x)>.1||Math.abs(S.y-e.y)>.1)&&(S.x=e.x,S.y=e.y)}if(n.value.hostRef){let e=t(n.value.hostRef);(Math.abs(C.x-e.x)>.1||Math.abs(C.y-e.y)>.1)&&(C.x=e.x,C.y=e.y)}};(0,e.watch)([()=>n.value.items,()=>n.value.items.length,()=>n.value.direction,()=>n.value.columnCount,()=>n.value.columnWidth,()=>n.value.itemSize,()=>n.value.gap,()=>n.value.columnGap,()=>n.value.defaultItemSize,()=>n.value.defaultColumnWidth],$,{immediate:!0}),(0,e.watch)(()=>[n.value.container,n.value.hostElement],()=>{Re()}),(0,e.watch)(y,(e,t)=>{if(t===void 0||e===t||!_.value)return;if(R.value===`vertical`){Re();return}let n=ee(t?Math.abs(r.value):r.value,S.x,Z.value);Re(),Fe(n,null,{behavior:`auto`})},{flush:`sync`}),(0,e.watch)([Z,Ae],()=>{!_.value||s.value||E.value||Fe(D.value,O.value,{behavior:`auto`})}),(0,e.watch)([()=>n.value.items.length,()=>n.value.columnCount],([t,n],[r,i])=>{(0,e.nextTick)(()=>{let e=Math.max(0,J.value-b.value),a=Math.max(0,Y.value-x.value);D.value>e||O.value>a?Fe(Math.min(D.value,e),Math.min(O.value,a),{behavior:`auto`}):(t!==r&&Ae.value!==1||n!==i&&Z.value!==1)&&Fe(D.value,O.value,{behavior:`auto`}),Re()})});let ze=e=>{let t=n.value.gap||0,r=n.value.columnGap||0,i=B.value;if(R.value===`horizontal`){let t=(i||0)+r;return i!==null&&t>0?Math.floor(e/t):A.findLowerBound(e)}let a=(i||0)+t;return i!==null&&a>0?Math.floor(e/a):j.findLowerBound(e)},Be=e=>R.value===`both`?M.findLowerBound(e):R.value===`horizontal`?ze(e):0,Ve=(0,e.computed)(()=>{if(N.value,(!c.value||g.value)&&n.value.ssrRange)return{start:n.value.ssrRange.start,end:n.value.ssrRange.end};let e=n.value.ssrRange&&!s.value?0:n.value.bufferBefore??5,t=n.value.bufferAfter??5;return ne({direction:R.value,relativeScrollX:je.value,relativeScrollY:Q.value,usableWidth:be.value,usableHeight:xe.value,itemsLength:n.value.items.length,bufferBefore:e,bufferAfter:t,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:B.value,findLowerBoundY:e=>j.findLowerBound(e),findLowerBoundX:e=>A.findLowerBound(e),queryY:e=>j.query(e),queryX:e=>A.query(e)})}),He=(0,e.computed)(()=>{N.value;let e=je.value+U.value,t=Q.value+G.value;return ze(R.value===`horizontal`?e:t)}),Ue=(0,e.computed)(()=>{N.value;let e=n.value.columnCount||0;if(!e)return{start:0,end:0,padStart:0,padEnd:0};if((!c.value||g.value)&&n.value.ssrRange){let{colStart:t=0,colEnd:r=0}=n.value.ssrRange,i=Math.max(0,t),a=Math.min(e,r||e),o=n.value.columnGap||0,s=V.value===null?M.query(i):i*(V.value+o),c=V.value===null?Math.max(0,M.query(e)-o):e*(V.value+o)-o,l=V.value===null?M.query(a)-(a>0?o:0):a*(V.value+o)-(a>0?o:0);return{start:i,end:a,padStart:s,padEnd:Math.max(0,c-l)}}let t=n.value.ssrRange&&!s.value?0:2;return re({columnCount:e,relativeScrollX:je.value,usableWidth:be.value,colBuffer:t,fixedWidth:V.value,columnGap:n.value.columnGap||0,findLowerBound:e=>M.findLowerBound(e),query:e=>M.query(e),totalColsQuery:()=>M.query(e)})}),We=[],Ge=(0,e.computed)(()=>{N.value;let{start:e,end:t}=Ve.value,r=[],i=B.value,a=n.value.gap||0,o=n.value.columnGap||0,s=fe.value,l=pe.value,u=[];if(c.value||!n.value.ssrRange){let t=He.value,n=v(s,t);n!==void 0&&n<e&&u.push(n)}for(let n=e;n<t;n++)u.push(n);let d=n.value.ssrRange?.start||0,f=n.value.ssrRange?.colStart||0,p=0,m=0;!c.value&&n.value.ssrRange&&(m=R.value===`horizontal`?0:i===null?j.query(d):d*(i+a),R.value===`horizontal`?p=i===null?A.query(f):f*(i+o):R.value===`both`&&(p=M.query(f)));let h=new Map(We.map(e=>[e.index,e])),g=-1,_=0,y=-1,b=0,x=e=>e===g+1?(_+=A.get(g),g=e,_):(_=A.query(e),g=e,_),S=e=>e===y+1?(b+=j.get(y),y=e,b):(b=j.query(e),y=e,b),C=K.value+U.value+H.value,ee=q.value+G.value+he.value,te=K.value+U.value,w=q.value+G.value,ne=Ue.value;for(let e of u){let t=n.value.items[e];if(t===void 0)continue;let{x:i,y:a,width:o,height:u}=ae({index:e,direction:R.value,fixedSize:B.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:be.value,usableHeight:xe.value,totalWidth:Se.value.width,queryY:S,queryX:x,getSizeY:e=>j.get(e),getSizeX:e=>A.get(e),columnRange:ne}),d=l.has(e),f=i,g=a,{isStickyActive:_,isStickyActiveX:v,isStickyActiveY:y,stickyOffset:b}=ie({index:e,isSticky:d,direction:R.value,relativeScrollX:je.value,relativeScrollY:Q.value,originalX:f,originalY:g,width:o,height:u,stickyIndices:s,fixedSize:B.value,fixedWidth:V.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,getItemQueryY:S,getItemQueryX:x}),re=c.value?D.value/Z.value+(i+C-D.value)-te:i-p,oe=c.value?O.value/Ae.value+(a+ee-O.value)-w:a-m,T=h.get(e);T&&T.item===t&&T.offset.x===re&&T.offset.y===oe&&T.size.width===o&&T.size.height===u&&T.isSticky===d&&T.isStickyActive===_&&T.isStickyActiveX===v&&T.isStickyActiveY===y&&T.stickyOffset.x===b.x&&T.stickyOffset.y===b.y?r.push(T):r.push({item:t,index:e,offset:{x:re,y:oe},size:{width:o,height:u},originalX:f,originalY:g,isSticky:d,isStickyActive:_,isStickyActiveX:v,isStickyActiveY:y,stickyOffset:b})}return We=r,r}),Ke=(0,e.computed)(()=>{N.value;let e=je.value+U.value,t=Q.value+G.value,n=je.value+(b.value-W.value)-1,a=Q.value+(x.value-_e.value)-1,o=Be(e),c=ze(t),l=ze(R.value===`horizontal`?n:a),u=Be(n);return{items:Ge.value,currentIndex:c,currentColIndex:o,currentEndIndex:l,currentEndColIndex:u,scrollOffset:{x:D.value,y:O.value},displayScrollOffset:{x:y.value?Math.abs(r.value+C.x):Math.max(0,r.value-C.x),y:Math.max(0,i.value-C.y)},viewportSize:{width:b.value,height:x.value},displayViewportSize:{width:b.value,height:x.value},totalSize:{width:J.value,height:Y.value},isScrolling:s.value,isProgrammaticScroll:E.value,range:Ve.value,columnRange:Ue.value}}),qe=()=>{E.value=!1,L.value=null},Je=e=>{let t=e.target;typeof window>`u`||(se(),t===window||t===document?(r.value=window.scrollX,i.value=window.scrollY,b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight):d(t)&&(r.value=t.scrollLeft,i.value=t.scrollTop,b.value=t.clientWidth,x.value=t.clientHeight),D.value=ee(y.value?Math.abs(r.value):r.value,X.x,Z.value),O.value=ee(i.value,X.y,Ae.value),s.value||=(E.value||(L.value=null),!0),clearTimeout(oe),oe=setTimeout(()=>{s.value=!1,E.value=!1},250))},Ye=e=>{let t=!1,r=0,i=0,a=n.value.gap||0,o=n.value.columnGap||0,s=je.value,c=Q.value,l=ze(R.value===`horizontal`?s:c),u=Be(s),d=R.value===`horizontal`,f=R.value===`both`,p=new Set,m=new Set,h=(e,i)=>{if(e>=0&&e<(n.value.columnCount||0)&&!m.has(e)){m.add(e);let n=M.get(e),a=i+o;if(!P[e]||Math.abs(n-a)>.1){let i=a-n;Math.abs(i)>.1&&(M.update(e,i),t=!0,e<u&&(r+=i)),P[e]=1}}};for(let{index:s,inlineSize:c,blockSize:u,element:m}of e){if(c<=0&&u<=0)continue;let e=z.value||typeof n.value.itemSize==`function`;if(s>=0&&!p.has(s)&&e&&u>0){if(p.add(s),d&&c>0){let e=A.get(s),n=c+o;if(!F[s]||Math.abs(n-e)>.1){let i=n-e;A.update(s,i),F[s]=1,t=!0,s<l&&(r+=i)}}if(!d){let e=j.get(s),n=u+a;if(!I[s]||Math.abs(n-e)>.1){let r=n-e;j.update(s,r),I[s]=1,t=!0,s<l&&(i+=r)}}}let g=ue.value||typeof n.value.columnWidth==`function`;if(f&&m&&n.value.columnCount&&g&&(c>0||m.dataset.colIndex===void 0)){let e=m.dataset.colIndex;if(e!=null)h(Number.parseInt(e,10),c);else{let e=Array.from(m.querySelectorAll(`[data-col-index]`));for(let t of e)h(Number.parseInt(t.dataset.colIndex,10),t.getBoundingClientRect().width)}}}if(t&&(N.value++,!(L.value!==null||E.value)&&(r!==0||i!==0))){let e=K.value+U.value+H.value,t=q.value+G.value+he.value;Fe(r===0?null:s+r+e,i===0?null:c+i+t,{behavior:`auto`})}},Xe=(e,t,n,r)=>{Ye([{index:e,inlineSize:t,blockSize:n,element:r}])};function Ze(){if(L.value&&!g.value){let{rowIndex:e,colIndex:t,options:r}=L.value;if(p(r)&&r.behavior===`smooth`&&s.value)return;let i=n.value.container||window,a=typeof window<`u`&&i===window?window.scrollX:i.scrollLeft,o=typeof window<`u`&&i===window?window.scrollY:i.scrollTop,c=y.value?Math.abs(a):a,l=o,u=ee(c,0,Z.value),d=ee(l,0,Ae.value),{targetX:f,targetY:m}=w({rowIndex:e,colIndex:t,options:r,direction:R.value,viewportWidth:b.value,viewportHeight:x.value,totalWidth:we.value,totalHeight:Te.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:B.value,fixedWidth:V.value,relativeScrollX:u,relativeScrollY:d,getItemSizeY:e=>j.get(e),getItemSizeX:e=>A.get(e),getItemQueryY:e=>j.query(e),getItemQueryX:e=>A.query(e),getColumnSize:e=>M.get(e),getColumnQuery:e=>M.query(e),scaleX:Z.value,scaleY:Ae.value,hostOffsetX:X.x,hostOffsetY:X.y,stickyIndices:fe.value,stickyStartX:U.value,stickyStartY:G.value,stickyEndX:W.value,stickyEndY:_e.value,flowPaddingStartX:K.value,flowPaddingStartY:q.value,paddingStartX:H.value,paddingStartY:he.value,paddingEndX:me.value,paddingEndY:ge.value}),h=t==null||Math.abs(u-f)<2,g=e==null||Math.abs(d-m)<2,_=t==null||t===void 0||P[t]===1,v=e==null||e===void 0||I[e]===1;h&&g?_&&v&&!s.value&&!E.value&&(L.value=null):Pe(e,t,p(r)?{...r,isCorrection:!0}:{align:r,isCorrection:!0})}}(0,e.watch)([N,b,x],Ze),(0,e.watch)(s,e=>{e||Ze()});let Qe=null,$e=null,et,tt=e=>{if(typeof window>`u`)return;let t=e||window,n=t===window||u(t)&&t===document.documentElement?document:t;if(n.addEventListener(`scroll`,Je,{passive:!0}),k=null,se(),u(t)&&($e=new MutationObserver(()=>se()),$e.observe(t,{attributes:!0,attributeFilter:[`dir`,`style`]})),et=setInterval(se,1e3),t===window){b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,r.value=window.scrollX,i.value=window.scrollY;let e=()=>{se(),b.value=document.documentElement.clientWidth,x.value=document.documentElement.clientHeight,Re()};return window.addEventListener(`resize`,e),()=>{n.removeEventListener(`scroll`,Je),window.removeEventListener(`resize`,e),$e?.disconnect(),clearInterval(et),k=null}}else return b.value=t.clientWidth,x.value=t.clientHeight,r.value=t.scrollLeft,i.value=t.scrollTop,Qe=new ResizeObserver(()=>{se(),b.value=t.clientWidth,x.value=t.clientHeight,Re()}),Qe.observe(t),()=>{n.removeEventListener(`scroll`,Je),Qe?.disconnect(),$e?.disconnect(),clearInterval(et),k=null}},nt;return(0,e.getCurrentInstance)()&&((0,e.onMounted)(()=>{_.value=!0,se(),(0,e.watch)(()=>n.value.container,e=>{nt?.(),nt=tt(e||null)},{immediate:!0}),Re(),(0,e.nextTick)(()=>{if(Re(),n.value.ssrRange||n.value.initialScrollIndex!==void 0){let t=n.value.initialScrollIndex===void 0?n.value.ssrRange?.start:n.value.initialScrollIndex,r=n.value.initialScrollAlign||`start`;t!=null&&Pe(t,n.value.ssrRange?.colStart,{align:r,behavior:`auto`}),c.value=!0,g.value=!0,(0,e.nextTick)(()=>{g.value=!1})}else c.value=!0})}),(0,e.onUnmounted)(()=>{nt?.()})),{renderedItems:Ge,totalWidth:J,totalHeight:Y,renderedWidth:Ee,renderedHeight:De,scrollDetails:Ke,getRowHeight:Ne,getColumnWidth:Me,getRowOffset:e=>q.value+G.value+he.value+j.query(e),getColumnOffset:e=>K.value+U.value+H.value+M.query(e),getItemOffset:e=>R.value===`horizontal`?K.value+U.value+H.value+A.query(e):q.value+G.value+he.value+j.query(e),getItemSize:e=>{if(R.value===`horizontal`)return Math.max(0,A.get(e)-(n.value.columnGap||0));let t=n.value.itemSize;if(typeof t==`number`&&t>0)return t;if(typeof t==`function`){let r=n.value.items[e];return r===void 0?n.value.defaultItemSize||40:t(r,e)}return Math.max(0,j.get(e)-(n.value.gap||0))},scrollToIndex:Pe,scrollToOffset:Fe,stopProgrammaticScroll:qe,updateItemSize:Xe,updateItemSizes:Ye,updateHostOffset:Re,updateDirection:se,columnRange:Ue,refresh:()=>{A.resize(0),j.resize(0),M.resize(0),P.fill(0),F.fill(0),I.fill(0),$()},isHydrated:c,isWindowContainer:Ce,isRtl:y,scaleX:Z,scaleY:Ae,componentOffset:X,renderedVirtualWidth:Oe,renderedVirtualHeight:ke}}function D(t){let n=(0,e.computed)(()=>(0,e.toValue)(t.axis)),r=(0,e.computed)(()=>(0,e.toValue)(t.totalSize)),i=(0,e.computed)(()=>(0,e.toValue)(t.position)),a=(0,e.computed)(()=>(0,e.toValue)(t.viewportSize)),o=(0,e.computed)(()=>(0,e.toValue)(t.containerId)),s=(0,e.computed)(()=>!!(0,e.toValue)(t.isRtl)),c=(0,e.computed)(()=>n.value===`horizontal`),l=(0,e.computed)(()=>r.value<=0?0:Math.min(1,a.value/r.value)),u=(0,e.computed)(()=>{let e=r.value-a.value;return e<=0?0:Math.max(0,Math.min(1,i.value/e))}),d=(0,e.computed)(()=>{let e=a.value>0?32/a.value:.1;return Math.max(Math.min(e,.1),l.value)*100}),f=(0,e.computed)(()=>u.value*(100-d.value)),p=(0,e.computed)(()=>c.value?{inlineSize:`${d.value}%`,insetInlineStart:`${f.value}%`}:{blockSize:`${d.value}%`,insetBlockStart:`${f.value}%`}),m=(0,e.computed)(()=>{let e=a.value,t=`var(--vs-scrollbar-has-cross-gap, var(--vsi-scrollbar-has-cross-gap, 0)) * var(--vs-scrollbar-cross-gap, var(--vsi-scrollbar-size, 8px))`;return c.value?{inlineSize:`calc(${Math.max(0,e-4)}px - ${t})`}:{blockSize:`calc(${Math.max(0,e-4)}px - ${t})`}}),h=(0,e.ref)(!1),g=0,_=0;function v(e){let n=e.currentTarget;if(e.target!==n)return;let i=n.getBoundingClientRect(),o=c.value?i.width:i.height,l=0;l=c.value?s.value?i.right-e.clientX:e.clientX-i.left:e.clientY-i.top;let u=d.value/100*o,f=(l-u/2)/(o-u),p=r.value-a.value,m=f*p;m>p-1&&(m=p),t.scrollToOffset(Math.max(0,Math.min(p,m)))}function y(e){h.value=!0,g=c.value?s.value?-e.clientX:e.clientX:e.clientY,_=i.value,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation()}function b(e){if(!h.value)return;let n=e.currentTarget.parentElement;if(!n)return;let i=(c.value?s.value?-e.clientX:e.clientX:e.clientY)-g,o=n.getBoundingClientRect(),l=c.value?o.width:o.height,u=l-d.value/100*l;if(u<=0)return;let f=r.value-a.value,p=_+i/u*f;p>f-1&&(p=f),t.scrollToOffset(Math.max(0,Math.min(f,p)))}function x(e){h.value&&(h.value=!1,e.currentTarget.releasePointerCapture(e.pointerId))}return(0,e.getCurrentInstance)()&&(0,e.onUnmounted)(()=>{h.value=!1}),{viewportPercent:l,positionPercent:u,thumbSizePercent:d,thumbPositionPercent:f,trackStyle:m,thumbStyle:p,trackProps:(0,e.computed)(()=>({class:[`virtual-scrollbar-track`,`virtual-scrollbar-track--${c.value?`horizontal`:`vertical`}`],style:m.value,role:`scrollbar`,"aria-label":(0,e.toValue)(t.ariaLabel),"aria-orientation":n.value,"aria-valuenow":Math.round(i.value),"aria-valuemin":0,"aria-valuemax":Math.round(r.value-a.value),"aria-controls":o.value,tabindex:-1,onMousedown:v})),thumbProps:(0,e.computed)(()=>({class:[`virtual-scrollbar-thumb`,`virtual-scrollbar-thumb--${c.value?`horizontal`:`vertical`}`,{"virtual-scrollbar-thumb--active":h.value}],style:p.value,onPointerdown:y,onPointermove:b,onPointerup:x,onPointercancel:x})),isDragging:h}}var O=(0,e.defineComponent)({__name:`VirtualScrollbar`,props:{axis:{default:`vertical`},totalSize:{},position:{},viewportSize:{},scrollToOffset:{},containerId:{},isRtl:{type:Boolean,default:!1},ariaLabel:{}},emits:[`scrollToOffset`],setup(t,{emit:n}){let r=t,i=n,{trackProps:a,thumbProps:o}=D({axis:()=>r.axis,totalSize:()=>r.totalSize,position:()=>r.position,viewportSize:()=>r.viewportSize,containerId:()=>r.containerId,isRtl:()=>r.isRtl,scrollToOffset:e=>{r.scrollToOffset?.(e),i(`scrollToOffset`,e)}});return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a))),[(0,e.createElementVNode)(`div`,(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(o))),null,16)],16))}}),k=O,se={key:0,class:`virtual-scroll-scrollbar-container`,"aria-hidden":`true`},A={key:0,class:`virtual-scroll-debug-info`},j=.95,M=.1,N=(0,e.defineComponent)({__name:`VirtualScroll`,props:{containerTag:{default:`div`},wrapperTag:{default:`div`},itemTag:{default:`div`},stickyHeader:{type:Boolean,default:!1},stickyFooter:{type:Boolean,default:!1},virtualScrollbar:{type:Boolean,default:!1},items:{},itemSize:{},direction:{default:`vertical`},bufferBefore:{default:5},bufferAfter:{default:5},container:{},ssrRange:{},columnCount:{default:0},columnWidth:{},scrollPaddingStart:{default:0},scrollPaddingEnd:{default:0},gap:{default:0},columnGap:{default:0},stickyIndices:{default:()=>[]},loadDistance:{default:200},loading:{type:Boolean,default:!1},restoreScrollOnPrepend:{type:Boolean,default:!1},initialScrollIndex:{},initialScrollAlign:{},defaultItemSize:{},defaultColumnWidth:{},debug:{type:Boolean,default:!1},role:{},ariaLabel:{},ariaLabelledby:{},itemRole:{default:void 0}},emits:[`scroll`,`load`,`visibleRangeChange`],setup(t,{expose:n,emit:r}){let i=t,a=r,o=(0,e.useSlots)(),s=(0,e.ref)(null),c=(0,e.ref)(null),l=(0,e.ref)(null),u=(0,e.ref)(null),d=new Map,f=(0,e.useId)(),p=(0,e.computed)(()=>`vs-container-${f}`),g=(0,e.ref)(0),_=(0,e.ref)(0),v=(0,e.computed)(()=>i.container===void 0?s.value:i.container),y=(0,e.computed)(()=>{let e=v.value;return e===s.value||typeof window<`u`&&(e===window||e===null)}),b=(0,e.computed)(()=>(i.items.length,{items:i.items,itemSize:i.itemSize,direction:i.direction,bufferBefore:i.bufferBefore,bufferAfter:i.bufferAfter,container:v.value,hostElement:c.value,hostRef:s.value,ssrRange:i.ssrRange,columnCount:i.columnCount,columnWidth:i.columnWidth,scrollPaddingStart:{x:m(i.scrollPaddingStart,i.direction),y:h(i.scrollPaddingStart,i.direction)},scrollPaddingEnd:{x:m(i.scrollPaddingEnd,i.direction),y:h(i.scrollPaddingEnd,i.direction)},flowPaddingStart:{x:0,y:i.stickyHeader?0:g.value},flowPaddingEnd:{x:0,y:i.stickyFooter?0:_.value},stickyStart:{x:0,y:i.stickyHeader&&y.value?g.value:0},stickyEnd:{x:0,y:i.stickyFooter&&y.value?_.value:0},gap:i.gap,columnGap:i.columnGap,stickyIndices:i.stickyIndices,loadDistance:i.loadDistance,loading:i.loading,restoreScrollOnPrepend:i.restoreScrollOnPrepend,initialScrollIndex:i.initialScrollIndex,initialScrollAlign:i.initialScrollAlign,defaultItemSize:i.defaultItemSize,defaultColumnWidth:i.defaultColumnWidth,debug:i.debug})),{isHydrated:x,isRtl:S,columnRange:C,renderedItems:te,scrollDetails:w,renderedHeight:ne,renderedWidth:re,getColumnWidth:ie,getRowHeight:ae,scrollToIndex:T,scrollToOffset:O,updateHostOffset:N,updateItemSizes:P,updateDirection:F,getItemOffset:I,getRowOffset:L,getColumnOffset:ce,getItemSize:le,refresh:R,stopProgrammaticScroll:z,scaleX:ue,scaleY:B,isWindowContainer:V,componentOffset:de,renderedVirtualWidth:fe,renderedVirtualHeight:pe}=E(b),H=(0,e.computed)(()=>ue.value!==1||B.value!==1),me=(0,e.computed)(()=>V.value?!1:i.virtualScrollbar===!0||ue.value!==1||B.value!==1);function he(e){let{displayViewportSize:t}=w.value;e>=ne.value-t.height-.5?O(null,1/0):O(null,ee(e,de.y,B.value))}function ge(e){let{displayViewportSize:t}=w.value;e>=re.value-t.width-.5?O(1/0,null):O(ee(e,de.x,ue.value),null)}let U=D({axis:`vertical`,totalSize:ne,position:(0,e.computed)(()=>w.value.displayScrollOffset.y),viewportSize:(0,e.computed)(()=>w.value.displayViewportSize.height),scrollToOffset:he,containerId:p,isRtl:S}),W=D({axis:`horizontal`,totalSize:re,position:(0,e.computed)(()=>w.value.displayScrollOffset.x),viewportSize:(0,e.computed)(()=>w.value.displayViewportSize.width),scrollToOffset:ge,containerId:p,isRtl:S}),G=(0,e.computed)(()=>i.direction===`both`?{...C.value,padStart:0,padEnd:0}:C.value);function _e(){R(),F(),(0,e.nextTick)(()=>{let e=[];for(let[t,n]of d.entries())n&&e.push({index:t,inlineSize:n.offsetWidth,blockSize:n.offsetHeight,element:n});e.length>0&&P(e)})}(0,e.watch)(w,(e,t)=>{!x.value||!e||(a(`scroll`,e),(!t||!t.range||!t.columnRange||e.range.start!==t.range.start||e.range.end!==t.range.end||e.columnRange.start!==t.columnRange.start||e.columnRange.end!==t.columnRange.end)&&a(`visibleRangeChange`,{start:e.range.start,end:e.range.end,colStart:e.columnRange.start,colEnd:e.columnRange.end}),!i.loading&&(i.direction!==`horizontal`&&e.totalSize&&e.totalSize.height-(e.scrollOffset.y+e.viewportSize.height)<=i.loadDistance&&a(`load`,`vertical`),i.direction!==`vertical`&&e.totalSize&&e.totalSize.width-(e.scrollOffset.x+e.viewportSize.width)<=i.loadDistance&&a(`load`,`horizontal`)))}),(0,e.watch)(x,e=>{e&&w.value?.range&&w.value?.columnRange&&a(`visibleRangeChange`,{start:w.value.range.start,end:w.value.range.end,colStart:w.value.columnRange.start,colEnd:w.value.columnRange.end})},{once:!0});let K=typeof window>`u`?null:new ResizeObserver(N),ve=typeof window>`u`?null:new ResizeObserver(e=>{let t=[];for(let n of e){let e=n.target,r=Number(e.dataset.index),i=e.dataset.colIndex,a=n.contentRect.width,o=n.contentRect.height;n.borderBoxSize&&n.borderBoxSize.length>0?(a=n.borderBoxSize[0].inlineSize,o=n.borderBoxSize[0].blockSize):(a=e.offsetWidth,o=e.offsetHeight),i===void 0?Number.isNaN(r)||t.push({index:r,inlineSize:a,blockSize:o,element:e}):t.push({index:-1,inlineSize:a,blockSize:o,element:e})}t.length>0&&P(t)}),q=typeof window>`u`?null:new ResizeObserver(()=>{g.value=l.value?.offsetHeight||0,_.value=u.value?.offsetHeight||0,N()});function ye(t,n){(0,e.watch)(t,(e,t)=>{t&&q?.unobserve(t),e?q?.observe(e):n.value=0},{immediate:!0})}ye(l,g),ye(u,_),(0,e.onMounted)(()=>{s.value&&K?.observe(s.value);for(let e of d.values())ve?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ve?.observe(e))}),(0,e.watch)([s,c],([e],[t])=>{t&&K?.unobserve(t),e&&K?.observe(e)}),(0,e.watch)([s,H],([e,t],[n,r])=>{let i=e!==n||t!==r;n&&i&&n.removeEventListener(`wheel`,Z),e&&i&&e.addEventListener(`wheel`,Z,{passive:!t})},{immediate:!0});function be(e,t){if(e)d.set(t,e),ve?.observe(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ve?.observe(e));else{let e=d.get(t);e&&(ve?.unobserve(e),i.direction===`both`&&e.querySelectorAll(`[data-col-index]`).forEach(e=>ve?.unobserve(e)),d.delete(t))}}let xe=(0,e.ref)(!1),Se={x:0,y:0},Ce={x:0,y:0},we={x:0,y:0},Te=0,J={x:0,y:0},Y=null;function X(){let e=()=>{J.x*=j,J.y*=j;let t=w.value.scrollOffset.x,n=w.value.scrollOffset.y;O(t+J.x*16,n+J.y*16,{behavior:`auto`}),Math.abs(J.x)>M||Math.abs(J.y)>M?Y=requestAnimationFrame(e):Ee()};Y=requestAnimationFrame(e)}function Ee(){Y!==null&&(cancelAnimationFrame(Y),Y=null),J={x:0,y:0}}function De(e){z(),Ee(),H.value&&(e.pointerType===`mouse`&&e.button!==0||(xe.value=!0,Se={x:e.clientX,y:e.clientY},we={x:e.clientX,y:e.clientY},Te=performance.now(),Ce={x:w.value.scrollOffset.x,y:w.value.scrollOffset.y},e.currentTarget.setPointerCapture(e.pointerId)))}function Oe(e){if(!xe.value)return;let t=performance.now(),n=t-Te;if(n>0){let t=(we.x-e.clientX)/n,r=(we.y-e.clientY)/n;J.x=J.x*.2+t*.8,J.y=J.y*.2+r*.8}we={x:e.clientX,y:e.clientY},Te=t;let r=Se.x-e.clientX,i=Se.y-e.clientY;requestAnimationFrame(()=>{O(Ce.x+r,Ce.y+i,{behavior:`auto`})})}function ke(e){xe.value&&(xe.value=!1,e.currentTarget.releasePointerCapture(e.pointerId),(Math.abs(J.x)>M||Math.abs(J.y)>M)&&(Math.abs(J.x)>4*Math.abs(J.y)?J.y=0:Math.abs(J.y)>4*Math.abs(J.x)&&(J.x=0),X()))}function Z(e){let{scrollOffset:t}=w.value;if(z(),H.value){e.preventDefault();let n=e.deltaX,r=e.deltaY;e.shiftKey&&n===0&&(n=r,r=0),O(t.x+n,t.y+r,{behavior:`auto`})}}function Ae(e){let{viewportSize:t,scrollOffset:n}=w.value,r=i.direction!==`vertical`,a=i.direction!==`horizontal`,o=b.value.stickyStart,s=b.value.stickyEnd;switch(e.key){case`Home`:e.preventDefault(),z(),T(0,0,{behavior:Math.max(n.x,n.y)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`,align:`start`});break;case`End`:{e.preventDefault(),z();let r=i.items.length-1,a=(i.columnCount||0)>0?i.columnCount-1:0,{totalSize:o}=w.value,s=Math.max(o.width-n.x-t.width,o.height-n.y-t.height)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`;i.direction===`both`?T(r,a,{behavior:s,align:`end`}):T(i.direction===`vertical`?r:0,i.direction===`horizontal`?r:0,{behavior:s,align:`end`});break}case`ArrowUp`:{if(e.preventDefault(),z(),!a)return;let{currentIndex:t,scrollOffset:n}=w.value,r=n.y+o.y+b.value.scrollPaddingStart.y;L(t)<r-1?T(t,null,{align:`start`}):t>0&&T(t-1,null,{align:`start`});break}case`ArrowDown`:{if(e.preventDefault(),z(),!a)return;let{currentEndIndex:r}=w.value,o=n.y+t.height-(s.y+b.value.scrollPaddingEnd.y);L(r)+ae(r)>o+1?T(r,null,{align:`end`}):r<i.items.length-1&&T(r+1,null,{align:`end`});break}case`ArrowLeft`:{if(e.preventDefault(),z(),!r)return;let{currentColIndex:a,currentEndColIndex:c}=w.value;if(S.value){let e=n.x+t.width-(s.x+b.value.scrollPaddingEnd.x);(i.columnCount?ce(c)+ie(c):I(c)+le(c))>e+1?T(null,c,{align:`end`}):c<(i.columnCount?i.columnCount-1:i.items.length-1)&&T(null,c+1,{align:`end`})}else{let e=n.x+o.x+b.value.scrollPaddingStart.x;(i.columnCount?ce(a):I(a))<e-1?T(null,a,{align:`start`}):a>0&&T(null,a-1,{align:`start`})}break}case`ArrowRight`:{if(e.preventDefault(),z(),!r)return;let{currentColIndex:a,currentEndColIndex:c}=w.value;if(S.value){let e=n.x+o.x+b.value.scrollPaddingStart.x;(i.columnCount?ce(a):I(a))<e-1?T(null,a,{align:`start`}):a>0&&T(null,a-1,{align:`start`})}else{let e=n.x+t.width-(s.x+b.value.scrollPaddingEnd.x);(i.columnCount?ce(c)+ie(c):I(c)+le(c))>e+1?T(null,c,{align:`end`}):c<(i.columnCount?i.columnCount-1:i.items.length-1)&&T(null,c+1,{align:`end`})}break}case`PageUp`:e.preventDefault(),z(),O(!a&&r?n.x-t.width:null,a?n.y-t.height:null);break;case`PageDown`:e.preventDefault(),z(),O(!a&&r?n.x+t.width:null,a?n.y+t.height:null);break}}(0,e.onUnmounted)(()=>{K?.disconnect(),ve?.disconnect(),q?.disconnect()});let je=(0,e.computed)(()=>{let e={...i.direction===`vertical`?{}:{whiteSpace:`nowrap`}};return(me.value||!V.value)&&(e.overflow=`auto`),H.value&&(e.touchAction=`none`),V.value?e:i.containerTag===`table`?{...e,display:`block`,minInlineSize:i.direction===`vertical`?`100%`:`auto`}:e}),Q=(0,e.computed)(()=>{if(i.direction===`horizontal`)return null;let{displayViewportSize:e,displayScrollOffset:t}=w.value;if(ne.value<=e.height)return null;let n={axis:`vertical`,totalSize:ne.value,position:t.y,viewportSize:e.height,scrollToOffset:he,containerId:p.value,isRtl:S.value,ariaLabel:`Vertical scroll`};return{axis:`vertical`,positionPercent:U.positionPercent.value,viewportPercent:U.viewportPercent.value,thumbSizePercent:U.thumbSizePercent.value,thumbPositionPercent:U.thumbPositionPercent.value,trackProps:U.trackProps.value,thumbProps:U.thumbProps.value,scrollbarProps:n,isDragging:U.isDragging.value}}),Me=(0,e.computed)(()=>{if(i.direction===`vertical`)return null;let{displayViewportSize:e,displayScrollOffset:t}=w.value;if(re.value<=e.width)return null;let n={axis:`horizontal`,totalSize:re.value,position:t.x,viewportSize:e.width,scrollToOffset:ge,containerId:p.value,isRtl:S.value,ariaLabel:`Horizontal scroll`};return{axis:`horizontal`,positionPercent:W.positionPercent.value,viewportPercent:W.viewportPercent.value,thumbSizePercent:W.thumbSizePercent.value,thumbPositionPercent:W.thumbPositionPercent.value,trackProps:W.trackProps.value,thumbProps:W.thumbProps.value,scrollbarProps:n,isDragging:W.isDragging.value}}),Ne=(0,e.computed)(()=>{let e=i.direction===`horizontal`,t=i.direction===`vertical`,n=i.direction===`both`,r={inlineSize:t?`100%`:`${fe.value}px`,blockSize:e?`100%`:`${pe.value}px`};return x.value||(r.display=`flex`,r.flexDirection=e?`row`:`column`,(e||n)&&i.columnGap&&(r.columnGap=`${i.columnGap}px`),(t||n)&&i.gap&&(r.rowGap=`${i.gap}px`)),r}),Pe=(0,e.computed)(()=>{let e=i.direction===`horizontal`;return{display:e?`inline-block`:`block`,...e?{blockSize:`100%`,verticalAlign:`top`}:{inlineSize:`100%`}}}),Fe=(0,e.computed)(()=>({inlineSize:i.direction===`vertical`?`1px`:`${fe.value}px`,blockSize:i.direction===`horizontal`?`1px`:`${pe.value}px`}));function Ie(e){let t=oe({containerTag:i.containerTag||`div`,direction:i.direction,isHydrated:x.value,item:e,itemSize:i.itemSize,paddingStartX:b.value.scrollPaddingStart.x,paddingStartY:b.value.scrollPaddingStart.y,isRtl:S.value});return!x.value&&i.direction===`both`&&(t.display=`flex`,i.columnGap&&(t.columnGap=`${i.columnGap}px`)),t}let Le=(0,e.computed)(()=>i.debug),$=(0,e.computed)(()=>i.containerTag===`table`),Re=(0,e.computed)(()=>$.value?`thead`:`div`),ze=(0,e.computed)(()=>$.value?`tfoot`:`div`),Be=(0,e.computed)(()=>i.role?i.role:$.value?null:i.direction===`both`?`grid`:`list`),Ve=(0,e.computed)(()=>Be.value===`grid`||$.value),He=(0,e.computed)(()=>$.value?null:i.ariaLabel||i.ariaLabelledby?`region`:`none`),Ue=(0,e.computed)(()=>$.value?null:Be.value),We=(0,e.computed)(()=>{if(Ve.value)return`row`;let e=Be.value;return e===`tree`?`treeitem`:e===`listbox`?`option`:e===`menu`?`menuitem`:`listitem`}),Ge=(0,e.computed)(()=>i.itemRole==null?We.value:i.itemRole),Ke=(0,e.computed)(()=>i.role===`grid`||!i.role&&i.direction===`both`?`gridcell`:$.value?`cell`:null),qe=(0,e.computed)(()=>{let e=Ge.value;return e==null||e!==`none`&&e!==`presentation`}),Je=(0,e.computed)(()=>({"aria-label":i.ariaLabel,"aria-labelledby":i.ariaLabelledby,"aria-busy":i.loading?`true`:void 0})),Ye=(0,e.computed)(()=>{let e={},t=Be.value;return t&&[`grid`,`tree`,`listbox`,`menu`,`tablist`].includes(t)&&(e[`aria-orientation`]=i.direction===`both`?void 0:i.direction),Ve.value&&(e[`aria-rowcount`]=i.items.length,i.columnCount>0&&(e[`aria-colcount`]=i.columnCount)),e});function Xe(e){let t={};Ve.value?t[`aria-rowindex`]=e+1:(t[`aria-setsize`]=i.items.length,t[`aria-posinset`]=e+1);let n=Ge.value;return n!==null&&(t.role=n===`none`||n===`presentation`?We.value:n),t}function Ze(e){let t=Ke.value;if(!t)return{};let n={role:t};return Ve.value&&(n[`aria-colindex`]=e+1),n}return n({...(0,e.toRefs)(i),scrollDetails:w,columnRange:C,getColumnWidth:ie,getRowHeight:ae,getCellAriaProps:Ze,getItemAriaProps:Xe,getRowOffset:L,getColumnOffset:ce,getItemOffset:I,getItemSize:le,scrollToIndex:T,scrollToOffset:O,refresh:_e,stopProgrammaticScroll:()=>{z(),Ee()},updateDirection:F,isRtl:S,isHydrated:x,scaleX:ue,scaleY:B,renderedWidth:re,renderedHeight:ne,componentOffset:de,scrollbarPropsVertical:Q,scrollbarPropsHorizontal:Me}),(n,r)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.containerTag),(0,e.mergeProps)({id:p.value,ref_key:`hostRef`,ref:s,class:[`virtual-scroll-container`,[`virtual-scroll--${t.direction}`,{"virtual-scroll--hydrated":(0,e.unref)(x),"virtual-scroll--window":(0,e.unref)(V),"virtual-scroll--table":$.value,"virtual-scroll--hide-scrollbar":me.value}]],style:je.value,tabindex:`0`,role:$.value?void 0:He.value},$.value?{...Je.value,...Ye.value}:Je.value,{onKeydown:Ae,onPointerdown:De,onPointermove:Oe,onPointerup:ke,onPointercancel:ke}),{default:(0,e.withCtx)(()=>[me.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,se,[(0,e.createElementVNode)(`div`,{class:`virtual-scroll-scrollbar-viewport`,style:(0,e.normalizeStyle)({inlineSize:`${(0,e.unref)(w).displayViewportSize.width}px`,blockSize:`${(0,e.unref)(w).displayViewportSize.height}px`,"--vsi-scrollbar-has-cross-gap":t.direction===`both`?1:0})},[o.scrollbar&&Q.value?(0,e.renderSlot)(n.$slots,`scrollbar`,(0,e.normalizeProps)((0,e.mergeProps)({key:0},Q.value)),void 0,!0):Q.value?((0,e.openBlock)(),(0,e.createBlock)(k,(0,e.normalizeProps)((0,e.mergeProps)({key:1},Q.value.scrollbarProps)),null,16)):(0,e.createCommentVNode)(``,!0),o.scrollbar&&Me.value?(0,e.renderSlot)(n.$slots,`scrollbar`,(0,e.normalizeProps)((0,e.mergeProps)({key:2},Me.value)),void 0,!0):Me.value?((0,e.openBlock)(),(0,e.createBlock)(k,(0,e.normalizeProps)((0,e.mergeProps)({key:3},Me.value.scrollbarProps)),null,16)):(0,e.createCommentVNode)(``,!0)],4)])):(0,e.createCommentVNode)(``,!0),o.header?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(Re.value),{key:1,ref_key:`headerRef`,ref:l,class:(0,e.normalizeClass)([`virtual-scroll-header`,{"virtual-scroll--sticky":t.stickyHeader}]),role:$.value?void 0:`none`},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`header`,{},void 0,!0)]),_:3},8,[`class`,`role`])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.wrapperTag),(0,e.mergeProps)({ref_key:`wrapperRef`,ref:c,class:`virtual-scroll-wrapper`,style:Ne.value,role:$.value?void 0:Ue.value},$.value?{}:Ye.value),{default:(0,e.withCtx)(()=>[$.value?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.itemTag),{key:0,class:`virtual-scroll-spacer`,style:(0,e.normalizeStyle)(Fe.value)},{default:(0,e.withCtx)(()=>[...r[0]||=[(0,e.createElementVNode)(`td`,{style:{padding:`0`,border:`none`,"block-size":`inherit`}},null,-1)]]),_:1},8,[`style`])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(te),r=>((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.itemTag),(0,e.mergeProps)({key:r.index,ref_for:!0,ref:e=>be(e,r.index),"data-index":r.index,class:[`virtual-scroll-item`,{"virtual-scroll--sticky":r.isStickyActive,"virtual-scroll--debug":Le.value}],style:Ie(r)},{ref_for:!0},qe.value?Xe(r.index):{role:`none`}),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`item`,{item:r.item,index:r.index,getItemAriaProps:Xe,columnRange:G.value,getColumnWidth:(0,e.unref)(ie),getCellAriaProps:Ze,gap:i.gap,columnGap:i.columnGap,isSticky:r.isSticky,isStickyActive:r.isStickyActive,isStickyActiveX:r.isStickyActiveX,isStickyActiveY:r.isStickyActiveY,offset:r.offset},void 0,!0),Le.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,A,` #`+(0,e.toDisplayString)(r.index)+` (`+(0,e.toDisplayString)(Math.round(r.offset.x))+`, `+(0,e.toDisplayString)(Math.round(r.offset.y))+`) `,1)):(0,e.createCommentVNode)(``,!0)]),_:2},1040,[`data-index`,`class`,`style`]))),128))]),_:3},16,[`style`,`role`])),t.loading&&o.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:2,class:`virtual-scroll-loading`,style:(0,e.normalizeStyle)(Pe.value),"aria-live":`polite`,"aria-atomic":`true`},[(0,e.renderSlot)(n.$slots,`loading`,{},void 0,!0)],4)):(0,e.createCommentVNode)(``,!0),o.footer?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(ze.value),{key:3,ref_key:`footerRef`,ref:u,class:(0,e.normalizeClass)([`virtual-scroll-footer`,{"virtual-scroll--sticky":t.stickyFooter}]),role:$.value?void 0:`none`},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`footer`,{},void 0,!0)]),_:3},8,[`class`,`role`])):(0,e.createCommentVNode)(``,!0)]),_:3},16,[`id`,`class`,`style`,`role`]))}}),P=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},F=P(N,[[`__scopeId`,`data-v-184bc0a9`]]);exports.BROWSER_MAX_SIZE=o,exports.DEFAULT_BUFFER=5,exports.DEFAULT_COLUMN_WIDTH=100,exports.DEFAULT_ITEM_SIZE=40,exports.EMPTY_SCROLL_DETAILS=i,exports.FenwickTree=a,exports.VirtualScroll=F,exports.VirtualScrollbar=k,exports.calculateColumnRange=re,exports.calculateItemPosition=ae,exports.calculateItemStyle=oe,exports.calculateRange=ne,exports.calculateScrollTarget=w,exports.calculateStickyItem=ie,exports.calculateTotalSize=T,exports.displayToVirtual=ee,exports.findPrevStickyIndex=v,exports.getPaddingX=m,exports.getPaddingY=h,exports.isBody=c,exports.isElement=u,exports.isItemVisible=C,exports.isScrollToIndexOptions=p,exports.isScrollableElement=d,exports.isWindow=s,exports.isWindowLike=l,exports.scrollTo=f,exports.useVirtualScroll=E,exports.useVirtualScrollbar=D,exports.virtualToDisplay=te;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`);const t=40,n=100,r=5,i={items:[],currentIndex:0,currentColIndex:0,currentEndIndex:0,currentEndColIndex:0,scrollOffset:{x:0,y:0},displayScrollOffset:{x:0,y:0},viewportSize:{width:0,height:0},displayViewportSize:{width:0,height:0},totalSize:{width:0,height:0},isScrolling:!1,isProgrammaticScroll:!1,range:{start:0,end:0},columnRange:{start:0,end:0,padStart:0,padEnd:0}},a=1e7;function o(e){return e===null||e===document.documentElement||typeof window<`u`&&e===window}function s(e){return typeof e==`object`&&!!e&&`tagName`in e&&e.tagName===`BODY`}function c(e){return o(e)||s(e)}function l(e){return e!=null&&`getBoundingClientRect`in e}function u(e){return e!=null&&`scrollLeft`in e}function d(e,t){o(e)?window.scrollTo(t):e!=null&&u(e)&&(typeof e.scrollTo==`function`?e.scrollTo(t):(t.left!==void 0&&(e.scrollLeft=t.left),t.top!==void 0&&(e.scrollTop=t.top)))}function f(e){return typeof e==`object`&&!!e&&(`align`in e||`behavior`in e||`isCorrection`in e)}function p(e,t){return typeof e==`object`&&e?e.x||0:(t===`horizontal`||t===`both`)&&e||0}function m(e,t){return typeof e==`object`&&e?e.y||0:(t===`vertical`||t===`both`)&&e||0}function h({scrollPos:e,containerSize:t,count:n,bufferBefore:r,bufferAfter:i,gap:a,fixedSize:o,findLowerBound:s,query:c}){let l=0,u=n,d=e+t;if(o!==null){let t=o+a;l=Math.floor(e/t),u=Math.ceil(d/t)}else l=s(e),u=s(d),u<n&&c(u)<d&&u++;return{start:Math.max(0,l-r),end:Math.min(n,u+i)}}function g(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]>t?(i=e[a],r=a-1):n=a+1}return i}function _(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=n+r>>>1;e[a]<t?(i=e[a],n=a+1):r=a-1}return i}function v({align:e,targetPos:t,itemSize:n,scrollPos:r,viewSize:i,stickyOffsetStart:a,stickyOffsetEnd:o}){let s=t-a,c=t-(i-o-n);return e===`start`?{target:s,effectiveAlign:`start`}:e===`center`?{target:t-a-(i-a-o-n)/2,effectiveAlign:`center`}:e===`end`?{target:c,effectiveAlign:`end`}:w(t,n,r,i,a,o)?{target:r,effectiveAlign:`auto`}:n<=i-a-o?t<r+a?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}:Math.abs(s-r)<Math.abs(c-r)?{target:s,effectiveAlign:`start`}:{target:c,effectiveAlign:`end`}}function y(e,t,n,r){return e<=0?0:t===null?Math.max(0,r(e)-n):Math.max(0,e*(t+n)-n)}function b(e,t,n,r,i){let a=t-e;return a<=0?0:n===null?Math.max(0,i(t)-i(e)-r):Math.max(0,a*(n+r)-r)}function x(e,t,n,r){return t===null?r(e):e*(t+n)}function S({index:e,align:t,viewSize:n,scrollPos:r,fixedSize:i,gap:a,query:o,getSize:s,stickyIndices:c,stickyStart:l,stickyEnd:u=0}){let d=l;if(c&&c.length>0){let t=_(c,e);t!==void 0&&(d+=y(1,i,0,()=>s(t)))}let f=i===null?o(e):e*(i+a),p=i===null?s(e)-a:i,{target:m,effectiveAlign:h}=v({align:t,targetPos:f,itemSize:p,scrollPos:r,viewSize:n,stickyOffsetStart:d,stickyOffsetEnd:u});return{target:m,itemSize:p,effectiveAlign:h}}function C(e,t,n,r,i,a){if(e<=t)return{isActive:!1,offset:0};let o=g(i,r);if(o===void 0)return{isActive:!0,offset:0};let s=a(o);return e>=s?{isActive:!1,offset:0}:{isActive:!0,offset:Math.max(0,Math.min(n,s-e))-n}}function w(e,t,n,r,i=0,a=0){let o=n+i,s=n+r-a;return t<=r-i-a?e>=o-.5&&e+t<=s+.5:e<=o+.5&&e+t>=s-.5}function ee(e,t,n){if(e||t<=1e7)return 1;let r=Math.min(t,a),i=t-n,o=r-n;return o>0?i/o:1}function T(e,t){return e?t:Math.min(t,a)}function E(e,t,n){return(e-t)*n}function D(e,t,n){return e/n+t}function O({rowIndex:e,colIndex:t,options:n,direction:r,viewportWidth:i,viewportHeight:o,totalWidth:s,totalHeight:c,gap:l,columnGap:u,fixedSize:d,fixedWidth:p,relativeScrollX:m,relativeScrollY:h,getItemSizeY:g,getItemSizeX:_,getItemQueryY:v,getItemQueryX:y,getColumnSize:b,getColumnQuery:x,scaleX:C,scaleY:w,hostOffsetX:ee,hostOffsetY:T,stickyIndices:E,stickyStartX:D=0,stickyStartY:O=0,stickyEndX:k=0,stickyEndY:te=0,flowPaddingStartX:A=0,flowPaddingStartY:j=0,paddingStartX:M=0,paddingStartY:ne=0,paddingEndX:N=0,paddingEndY:re=0}){let P;P=f(n)?n.align:n;let ie=(P&&typeof P==`object`?P.x:P)||`auto`,ae=(P&&typeof P==`object`?P.y:P)||`auto`,oe=m,F=h,se=0,ce=0,le=`auto`,ue=`auto`,I=C===1?s:a,L=w===1?c:a,de=Math.max(0,ee+I-i),fe=Math.max(0,T+L-o),R=(de-ee)*C,z=(fe-T)*w,pe=A+D+M,B=j+O+ne;if(e!=null){let t=S({index:e,align:ae,viewSize:o,scrollPos:h,fixedSize:d,gap:l,query:v,getSize:g,stickyIndices:E,stickyStart:O+ne,stickyEnd:te+re});F=t.target+B,ce=t.itemSize,ue=t.effectiveAlign}if(t!=null){let e=r===`both`,n=S({index:t,align:ie,viewSize:i,scrollPos:m,fixedSize:e?p:d,gap:e||r===`horizontal`?u:l,query:e?x:y,getSize:e?b:_,stickyIndices:E,stickyStart:D+M,stickyEnd:k+N});oe=n.target+pe,se=n.itemSize,le=n.effectiveAlign}return oe=Math.max(0,Math.min(oe,R)),F=Math.max(0,Math.min(F,z)),{targetX:oe,targetY:F,itemWidth:se,itemHeight:ce,effectiveAlignX:le,effectiveAlignY:ue}}function k({direction:e,relativeScrollX:t,relativeScrollY:n,usableWidth:r,usableHeight:i,itemsLength:a,bufferBefore:o,bufferAfter:s,gap:c,columnGap:l,fixedSize:u,findLowerBoundY:d,findLowerBoundX:f,queryY:p,queryX:m}){let g=e===`vertical`||e===`both`;return h({scrollPos:g?n:t,containerSize:g?i:r,count:a,bufferBefore:o,bufferAfter:s,gap:g?c:l,fixedSize:u,findLowerBound:g?d:f,query:g?p:m})}function te({columnCount:e,relativeScrollX:t,usableWidth:n,colBuffer:r,fixedWidth:i,columnGap:a,findLowerBound:o,query:s,totalColsQuery:c}){if(!e)return{start:0,end:0,padStart:0,padEnd:0};let{start:l,end:u}=h({scrollPos:t,containerSize:n,count:e,bufferBefore:r,bufferAfter:r,gap:a,fixedSize:i,findLowerBound:o,query:s}),d=l,f=u,p=i===null?s(d):d*(i+a),m=i===null?Math.max(0,c()-a):e*(i+a)-a,g=i===null?s(f)-(f>0?a:0):f*(i+a)-(f>0?a:0);return{start:d,end:f,padStart:p,padEnd:Math.max(0,m-g)}}function A({index:e,isSticky:t,direction:n,relativeScrollX:r,relativeScrollY:i,originalX:a,originalY:o,width:s,height:c,stickyIndices:l,fixedSize:u,gap:d,columnGap:f,getItemQueryY:p,getItemQueryX:m}){let h=!1,g=!1,_={x:0,y:0};if(!t)return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:!1,stickyOffset:_};if(n===`vertical`||n===`both`){let t=C(i,o,c,e,l,e=>u===null?p(e):e*(u+d));g=t.isActive,_.y=t.offset}if(n===`horizontal`){let t=C(r,a,s,e,l,e=>u===null?m(e):e*(u+f));t.isActive&&(h=!0,_.x=t.offset)}return{isStickyActiveX:h,isStickyActiveY:g,isStickyActive:h||g,stickyOffset:_}}function j({index:e,direction:t,fixedSize:n,gap:r,columnGap:i,usableWidth:a,usableHeight:o,totalWidth:s,queryY:c,queryX:l,getSizeY:u,getSizeX:d,columnRange:f}){let p=0,m=0,h=0,g=0;return t===`horizontal`?(p=n===null?l(e):e*(n+i),h=n===null?d(e)-i:n,g=o):t===`both`&&f?(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,p=f.padStart,h=Math.max(0,s-f.padStart-f.padEnd)):(m=n===null?c(e):e*(n+r),g=n===null?u(e)-r:n,h=t===`both`?s:a),{height:g,width:h,x:p,y:m}}function M({item:e,direction:t,itemSize:n,containerTag:r,paddingStartX:i,paddingStartY:a,isHydrated:o,isRtl:s}){let c=t===`vertical`,l=t===`horizontal`,u=t===`both`,d=n==null||n===0,f={blockSize:l?`100%`:d?`auto`:`${e.size.height}px`};if(c&&r===`table`?f.minInlineSize=`100%`:f.inlineSize=c?`100%`:d?`auto`:`${e.size.width}px`,d&&(c||(f.minInlineSize=`1px`),l||(f.minBlockSize=`1px`)),o){let t=e.isStickyActiveY??(e.isStickyActive&&(c||u)),n=e.isStickyActiveX??(e.isStickyActive&&l),r=s?-(n?e.stickyOffset.x:e.offset.x):n?e.stickyOffset.x:e.offset.x,o=t?e.stickyOffset.y:e.offset.y;e.isStickyActive||e.isStickyActiveX||e.isStickyActiveY?(f.insetBlockStart=t?`${a}px`:`auto`,f.insetInlineStart=n?`${i}px`:`auto`,f.transform=`translate(${r}px, ${o}px)`):f.transform=`translate(${r}px, ${e.offset.y}px)`}return f}function ne(e,t,n,r,i,a,o,s,c){let l=t.start||0,u=t.colStart||0,d=0,f=e===`horizontal`?0:x(l,n,i,o);return e===`horizontal`?d=x(u,n,a,s):e===`both`&&(d=x(u,r,a,c)),{x:d,y:f}}function N(e,t){if(e.length===0||t.length<=e.length)return 0;let n=e[0];if(n===void 0)return 0;let r=t.length-e.length;for(let e=1;e<=r;e++)if(t[e]===n)return e;return 0}function re({direction:e,itemsLength:t,columnCount:n,fixedSize:r,fixedWidth:i,gap:a,columnGap:o,usableWidth:s,usableHeight:c,queryY:l,queryX:u,queryColumn:d}){let f=e===`both`,p=e===`horizontal`,m=0,h=0;return f?(m=y(n,i,o,d),h=y(t,r,a,l)):p?(m=y(t,r,o,u),h=c):(m=s,h=y(t,r,a,l)),{width:f?Math.max(m,s):m,height:f?Math.max(h,c):h}}function P(e,t,n=16){let r={x:e.x*t,y:e.y*t};return{nextVelocity:r,delta:{x:r.x*n,y:r.y*n}}}function ie(e,t,n){return n<=0?{x:0,y:0}:{x:(e.x-t.x)/n,y:(e.y-t.y)/n}}function ae(e,t,n,r,i,a,o,s,c,l){let u=e;if(e===`auto`)if(t===`start`)u=`end`;else if(t===`end`)u=`start`;else return null;if(u===`start`){let e=s(n);if(e>a)return null;let t=c(n)+e-i;return{index:Math.min(o-1,t/e>=.5?n:n+1),align:`start`}}if(u===`end`){let e=s(r);if(e>a)return null;let t=i+a-c(r);return{index:Math.max(0,t/e>=.5?r:r-1),align:`end`}}if(u===`center`){let e=i+a/2,t=Math.max(0,Math.min(o-1,l(e)));return s(t)>a?null:{index:t,align:`center`}}return null}function oe(e,t,n,r){let i=(t||0)+n;return t!==null&&i>0?Math.floor(e/i):r(e)}var F=class{tree;values;constructor(e){this.tree=new Float64Array(e+1),this.values=new Float64Array(e)}update(e,t){if(!(e<0||e>=this.values.length))for(this.values[e]=this.values[e]+t,e++;e<this.tree.length;)this.tree[e]=this.tree[e]+t,e+=e&-e}query(e){let t=0;for(;e>0;)t+=this.tree[e]||0,e-=e&-e;return t}set(e,t){e<0||e>=this.values.length||(this.values[e]=t)}get length(){return this.values.length}get(e){return this.values[e]||0}getValues(){return this.values}findLowerBound(e){let t=0,n=this.tree.length,r=1<<Math.floor(Math.log2(n-1));for(;r>0;){let i=t+r;if(i<n){let n=this.tree[i]||0;n<=e&&(t=i,e-=n)}r>>=1}return t}rebuild(){this.tree.fill(0);for(let e=0;e<this.values.length;e++)this.tree[e+1]=this.values[e]||0;for(let e=1;e<this.tree.length;e++){let t=e+(e&-e);t<this.tree.length&&(this.tree[t]=this.tree[t]+this.tree[e])}}resize(e){if(e===this.values.length)return;let t=new Float64Array(e);t.set(this.values.subarray(0,Math.min(e,this.values.length))),this.values=t,this.tree=new Float64Array(e+1),this.rebuild()}shift(e){if(e===0)return;let t=this.values.length,n=new Float64Array(t);e>0?n.set(this.values.subarray(0,Math.min(t-e,this.values.length)),e):n.set(this.values.subarray(-e)),this.values=n,this.rebuild()}};function se(t){let n=(0,e.computed)(()=>(0,e.toValue)(t)),r=new F(n.value.props.items?.length||0),i=new F(n.value.props.items?.length||0),a=new F(n.value.props.columnCount||0),o=(0,e.shallowRef)(new Uint8Array),s=(0,e.shallowRef)(new Uint8Array),c=(0,e.shallowRef)(new Uint8Array),l=(0,e.ref)(0),u=(0,e.ref)(!1),d=[],f=(e,t)=>typeof n.value.props.itemSize==`function`?n.value.props.itemSize(e,t):n.value.defaultSize,p=(e,t,r,i,a,o)=>{if(l.value,typeof t==`number`&&t>0)return t;if(o&&Array.isArray(t)&&t.length>0){let n=t[e%t.length];return n!=null&&n>0?n:r}if(typeof t==`function`){let i=n.value.props.items[e];return o&&n.value.direction!==`both`||!o?i===void 0?r:t(i,e):t(e)}let s=a.get(e);return s>0?s-i:r},m=(e,t)=>{if(r.resize(e),i.resize(e),a.resize(t),s.value.length!==e){let t=new Uint8Array(e);t.set(s.value.subarray(0,Math.min(e,s.value.length))),s.value=t}if(c.value.length!==e){let t=new Uint8Array(e);t.set(c.value.subarray(0,Math.min(e,c.value.length))),c.value=t}if(o.value.length!==t){let e=new Uint8Array(t);e.set(o.value.subarray(0,Math.min(t,o.value.length))),o.value=e}},h=()=>{let e=n.value.props,t=e.items.length,l=e.columnCount||0,u=e.gap||0,d=e.columnGap||0,p=e.columnWidth,m=!1,h=!1;if(l>0)for(let t=0;t<l;t++){let r=a.get(t),i=o.value[t]===1;if(!n.value.isDynamicColumnWidth||!i&&r===0){let i=0;i=typeof p==`number`&&p>0?p:Array.isArray(p)&&p.length>0?p[t%p.length]||e.defaultColumnWidth||100:typeof p==`function`?p(t):e.defaultColumnWidth||100;let s=i+d;Math.abs(r-s)>.5?(a.set(t,s),o.value[t]=n.value.isDynamicColumnWidth?0:1,m=!0):n.value.isDynamicColumnWidth||(o.value[t]=1)}}for(let a=0;a<t;a++){let t=e.items[a],o=r.get(a),l=i.get(a),p=s.value[a]===1,m=c.value[a]===1;if(n.value.direction===`horizontal`){if(!n.value.isDynamicItemSize||!p&&o===0){let e=f(t,a)+d;Math.abs(o-e)>.5?(r.set(a,e),s.value[a]=n.value.isDynamicItemSize?0:1,h=!0):n.value.isDynamicItemSize||(s.value[a]=1)}}else o!==0&&(r.set(a,0),s.value[a]=0,h=!0);if(n.value.direction!==`horizontal`){if(!n.value.isDynamicItemSize||!m&&l===0){let e=f(t,a)+u;Math.abs(l-e)>.5?(i.set(a,e),c.value[a]=n.value.isDynamicItemSize?0:1,h=!0):n.value.isDynamicItemSize||(c.value[a]=1)}}else l!==0&&(i.set(a,0),c.value[a]=0,h=!0)}m&&a.rebuild(),h&&(r.rebuild(),i.rebuild())},g=e=>{let t=n.value.props,a=t.items,o=a.length;m(o,t.columnCount||0);let p=t.restoreScrollOnPrepend?N(d,a):0;if(p>0){r.shift(p),i.shift(p);let l=new Uint8Array(o),u=new Uint8Array(o);l.set(s.value.subarray(0,Math.min(o-p,s.value.length)),p),u.set(c.value.subarray(0,Math.min(o-p,c.value.length)),p),s.value=l,c.value=u;let d=t.gap||0,m=t.columnGap||0,h=0,g=0;for(let e=0;e<p;e++){let t=f(a[e],e);n.value.direction===`horizontal`?h+=t+m:g+=t+d}(h>0||g>0)&&e&&e(h,g)}h(),d=[...a],u.value=!0,l.value++};return{itemSizesX:r,itemSizesY:i,columnSizes:a,measuredItemsX:s,measuredItemsY:c,measuredColumns:o,treeUpdateFlag:l,sizesInitialized:u,getItemBaseSize:f,getSizeAt:p,initializeSizes:g,updateItemSizes:(e,t,u,d,f,p)=>{let m=!1,h=0,g=0,_=n.value.props,v=_.gap||0,y=_.columnGap||0,b=t(n.value.direction===`horizontal`?d:f),x=u(d),S=n.value.direction===`horizontal`,C=n.value.direction===`both`,w=new Set,ee=new Set,T=(e,t)=>{if(e>=0&&e<(_.columnCount||0)&&!ee.has(e)){ee.add(e);let n=a.get(e),r=t+y;if(!o.value[e]||Math.abs(n-r)>.1){let t=r-n;Math.abs(t)>.1&&(a.update(e,t),m=!0,e<x&&n>0&&(h+=t)),o.value[e]=1}}};for(let{index:t,inlineSize:a,blockSize:o,element:l}of e){if(a<=0&&o<=0)continue;let e=n.value.isDynamicItemSize||typeof _.itemSize==`function`;if(t>=0&&!w.has(t)&&e&&o>0){if(w.add(t),S&&a>0){let e=r.get(t),n=a+y;if(!s.value[t]||Math.abs(n-e)>.1){let i=n-e;r.update(t,i),s.value[t]=1,m=!0,t<b&&e>0&&(h+=i)}}if(!S){let e=i.get(t),n=o+v;if(!c.value[t]||Math.abs(n-e)>.1){let r=n-e;i.update(t,r),c.value[t]=1,m=!0,t<b&&e>0&&(g+=r)}}}let u=n.value.isDynamicColumnWidth||typeof _.columnWidth==`function`;if(C&&l&&_.columnCount&&u&&(a>0||l.dataset.colIndex===void 0)){let e=l.dataset.colIndex;if(e!=null)T(Number.parseInt(e,10),a);else{let e=Array.from(l.querySelectorAll(`[data-col-index]`));for(let t of e)T(Number.parseInt(t.dataset.colIndex,10),t.getBoundingClientRect().width)}}}m&&(l.value++,(h!==0||g!==0)&&p(h,g))},refresh:e=>{r.resize(0),i.resize(0),a.resize(0),o.value.fill(0),s.value.fill(0),c.value.fill(0),g(e)}}}function ce(t){let n=(0,e.computed)(()=>(0,e.toValue)(t)),r=(0,e.ref)(0),i=(0,e.ref)(0),a=(0,e.ref)(!1),o=(0,e.ref)(!1),s=(0,e.ref)(!1),h=(0,e.ref)(!1),g=(0,e.ref)(!1),v=(0,e.ref)(0),y=(0,e.ref)(0),S=(0,e.reactive)({x:0,y:0}),C=(0,e.reactive)({x:0,y:0}),w,M=(0,e.ref)(!1),N=(0,e.ref)(0),P=(0,e.ref)(0),ie=0,F=0,ce=null,le=null,ue=null,I=()=>{if(typeof window>`u`)return;let e=n.value.container||n.value.hostRef||window,t=l(e)?e:document.documentElement;ue=window.getComputedStyle(t);let r=ue.direction===`rtl`;g.value!==r&&(g.value=r)},L=(0,e.computed)(()=>[`vertical`,`horizontal`,`both`].includes(n.value.direction)?n.value.direction:`vertical`),de=(0,e.computed)(()=>n.value.itemSize===void 0||n.value.itemSize===null||n.value.itemSize===0),fe=(0,e.computed)(()=>n.value.columnWidth===void 0||n.value.columnWidth===null||n.value.columnWidth===0),R=(0,e.computed)(()=>typeof n.value.itemSize==`number`&&n.value.itemSize>0?n.value.itemSize:null),z=(0,e.computed)(()=>typeof n.value.columnWidth==`number`&&n.value.columnWidth>0?n.value.columnWidth:null),pe=(0,e.computed)(()=>n.value.defaultItemSize||R.value||40),{itemSizesX:B,itemSizesY:V,columnSizes:H,measuredColumns:me,measuredItemsY:he,treeUpdateFlag:ge,getSizeAt:_e,initializeSizes:ve,updateItemSizes:ye,refresh:be}=se((0,e.computed)(()=>({props:n.value,isDynamicItemSize:de.value,isDynamicColumnWidth:fe.value,defaultSize:pe.value,fixedItemSize:R.value,direction:L.value}))),U=(0,e.ref)(null),xe=(0,e.computed)(()=>[...n.value.stickyIndices||[]].sort((e,t)=>e-t)),Se=(0,e.computed)(()=>new Set(xe.value)),Ce=(0,e.computed)(()=>p(n.value.scrollPaddingStart,n.value.direction)),we=(0,e.computed)(()=>p(n.value.scrollPaddingEnd,n.value.direction)),W=(0,e.computed)(()=>m(n.value.scrollPaddingStart,n.value.direction)),Te=(0,e.computed)(()=>m(n.value.scrollPaddingEnd,n.value.direction)),G=(0,e.computed)(()=>p(n.value.stickyStart,n.value.direction)),Ee=(0,e.computed)(()=>p(n.value.stickyEnd,n.value.direction)),K=(0,e.computed)(()=>m(n.value.stickyStart,n.value.direction)),De=(0,e.computed)(()=>m(n.value.stickyEnd,n.value.direction)),q=(0,e.computed)(()=>p(n.value.flowPaddingStart,n.value.direction)),Oe=(0,e.computed)(()=>p(n.value.flowPaddingEnd,n.value.direction)),J=(0,e.computed)(()=>m(n.value.flowPaddingStart,n.value.direction)),ke=(0,e.computed)(()=>m(n.value.flowPaddingEnd,n.value.direction)),Ae=(0,e.computed)(()=>v.value-(L.value===`vertical`?0:G.value+Ee.value)),Y=(0,e.computed)(()=>y.value-(L.value===`horizontal`?0:K.value+De.value)),je=(0,e.computed)(()=>(ge.value,re({direction:L.value,itemsLength:n.value.items.length,columnCount:n.value.columnCount||0,fixedSize:R.value,fixedWidth:z.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:Ae.value,usableHeight:Y.value,queryY:e=>V.query(e),queryX:e=>B.query(e),queryColumn:e=>H.query(e)}))),Me=(0,e.computed)(()=>c(n.value.container)),Ne=(0,e.computed)(()=>je.value.width+Ce.value+we.value),Pe=(0,e.computed)(()=>je.value.height+W.value+Te.value),Fe=(0,e.computed)(()=>q.value+G.value+Ee.value+Oe.value+Ne.value),Ie=(0,e.computed)(()=>J.value+K.value+De.value+ke.value+Pe.value),X=(0,e.reactive)({x:(0,e.computed)(()=>Math.max(0,S.x-(q.value+G.value))),y:(0,e.computed)(()=>Math.max(0,S.y-(J.value+K.value)))}),Le=(0,e.computed)(()=>T(Me.value,Fe.value)),Re=(0,e.computed)(()=>T(Me.value,Ie.value)),ze=(0,e.computed)(()=>T(Me.value,Ne.value)),Be=(0,e.computed)(()=>T(Me.value,Pe.value)),Z=(0,e.computed)(()=>ee(Me.value,Fe.value,v.value)),Ve=(0,e.computed)(()=>ee(Me.value,Ie.value,y.value)),He=(0,e.computed)(()=>{if(L.value===`vertical`)return 0;let e=q.value+G.value+Ce.value;return N.value-e}),Ue=(0,e.computed)(()=>{if(L.value===`horizontal`)return 0;let e=J.value+K.value+W.value;return P.value-e}),We=e=>L.value===`both`?_e(e,n.value.columnWidth,n.value.defaultColumnWidth||100,n.value.columnGap||0,H,!0):_e(e,n.value.itemSize,n.value.defaultItemSize||40,n.value.columnGap||0,B,!0),Ge=e=>L.value===`horizontal`?Y.value:_e(e,n.value.itemSize,n.value.defaultItemSize||40,n.value.gap||0,V,!1);function Q(e,t,a){let o=typeof a==`object`&&a&&`isCorrection`in a?a.isCorrection:!1,s=n.value.container||window,{targetX:c,targetY:l,effectiveAlignX:u,effectiveAlignY:p}=O({rowIndex:e,colIndex:t,options:a,direction:L.value,viewportWidth:v.value,viewportHeight:y.value,totalWidth:Fe.value,totalHeight:Ie.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:R.value,fixedWidth:z.value,relativeScrollX:He.value,relativeScrollY:Ue.value,getItemSizeY:e=>V.get(e),getItemSizeX:e=>B.get(e),getItemQueryY:e=>V.query(e),getItemQueryX:e=>B.query(e),getColumnSize:e=>H.get(e),getColumnQuery:e=>H.query(e),scaleX:Z.value,scaleY:Ve.value,hostOffsetX:X.x,hostOffsetY:X.y,stickyIndices:xe.value,stickyStartX:G.value,stickyStartY:K.value,stickyEndX:Ee.value,stickyEndY:De.value,flowPaddingStartX:q.value,flowPaddingStartY:J.value,paddingStartX:Ce.value,paddingStartY:W.value,paddingEndX:we.value,paddingEndY:Te.value});if(!o){let n=f(a)?a.behavior:void 0;U.value={rowIndex:e,colIndex:t,options:{align:{x:u,y:p},...n==null?{}:{behavior:n}}}}let m=D(c,X.x,Z.value),h=D(l,X.y,Ve.value),_=g.value?-m:m,b=h,x;f(a)&&(x=a.behavior);let S=o?`auto`:x||`smooth`;M.value=!0;let C={behavior:S};if(t!=null&&(C.left=g.value?_:Math.max(0,_)),e!=null&&(C.top=Math.max(0,b)),d(s,C),(S===`auto`||S===void 0)&&(t!=null&&(r.value=g.value?_:Math.max(0,_),N.value=c),e!=null&&(i.value=Math.max(0,b),P.value=l),U.value)){let e=U.value.options;f(e)&&(e.behavior=`auto`)}}let Ke=(e,t,a)=>{let o=n.value.container||window;M.value=!0,U.value=null;let s=e==null?null:Math.max(0,Math.min(e,Fe.value-v.value)),c=t==null?null:Math.max(0,Math.min(t,Ie.value-y.value));s!==null&&(N.value=s),c!==null&&(P.value=c);let l=typeof window<`u`&&o===window?window.scrollX:o.scrollLeft,u=typeof window<`u`&&o===window?window.scrollY:o.scrollTop,f=s===null?null:D(s,X.x,Z.value),p=c===null?null:D(c,X.y,Ve.value),m=f===null?l:g.value?-f:f,h=p===null?u:p,_={behavior:a?.behavior||`auto`};e!=null&&(_.left=m),t!=null&&(_.top=h),d(o,_),(a?.behavior===`auto`||a?.behavior===void 0)&&(e!=null&&(r.value=m),t!=null&&(i.value=h))},qe=(t,n)=>{(0,e.nextTick)(()=>{Ke(t>0?He.value+t:null,n>0?Ue.value+n:null,{behavior:`auto`,isCorrection:!0})})},Je=()=>ve(qe),$=()=>{if(typeof window>`u`)return;let e=n.value.container||window,t=t=>{let n=t.getBoundingClientRect();if(e===window)return{x:g.value?document.documentElement.clientWidth-n.right-window.scrollX:n.left+window.scrollX,y:n.top+window.scrollY};if(e===t)return{x:0,y:0};if(l(e)){let t=e.getBoundingClientRect();return{x:g.value?t.right-n.right-e.scrollLeft:n.left-t.left+e.scrollLeft,y:n.top-t.top+e.scrollTop}}return{x:0,y:0}};if(n.value.hostElement){let e=t(n.value.hostElement);(Math.abs(S.x-e.x)>.1||Math.abs(S.y-e.y)>.1)&&(S.x=e.x,S.y=e.y)}if(n.value.hostRef){let e=t(n.value.hostRef);(Math.abs(C.x-e.x)>.1||Math.abs(C.y-e.y)>.1)&&(C.x=e.x,C.y=e.y)}};(0,e.watch)([()=>n.value.items,()=>n.value.items.length,()=>n.value.direction,()=>n.value.columnCount,()=>n.value.columnWidth,()=>n.value.itemSize,()=>n.value.gap,()=>n.value.columnGap,()=>n.value.defaultItemSize,()=>n.value.defaultColumnWidth],Je,{immediate:!0}),(0,e.watch)(()=>[n.value.container,n.value.hostElement],()=>{$()}),(0,e.watch)(g,(e,t)=>{if(t===void 0||e===t||!h.value)return;if(L.value===`vertical`){$();return}let n=E(t?Math.abs(r.value):r.value,S.x,Z.value);$(),Ke(n,null,{behavior:`auto`})},{flush:`sync`}),(0,e.watch)([Z,Ve],()=>{!h.value||a.value||M.value||Ke(N.value,P.value,{behavior:`auto`})}),(0,e.watch)([()=>n.value.items.length,()=>n.value.columnCount],([t,n],[r,i])=>{(0,e.nextTick)(()=>{let e=Math.max(0,Fe.value-v.value),a=Math.max(0,Ie.value-y.value);N.value>e||P.value>a?Ke(Math.min(N.value,e),Math.min(P.value,a),{behavior:`auto`}):(t!==r&&Ve.value!==1||n!==i&&Z.value!==1)&&Ke(N.value,P.value,{behavior:`auto`}),$()})});let Ye=e=>{let t=L.value===`horizontal`;return oe(e,R.value,t?n.value.columnGap||0:n.value.gap||0,e=>t?B.findLowerBound(e):V.findLowerBound(e))},Xe=e=>L.value===`both`?oe(e,z.value,n.value.columnGap||0,e=>H.findLowerBound(e)):L.value===`horizontal`?Ye(e):0,Ze=(0,e.computed)(()=>{if(ge.value,(!o.value||s.value)&&n.value.ssrRange)return{start:n.value.ssrRange.start,end:n.value.ssrRange.end};let e=n.value.ssrRange&&!a.value?0:n.value.bufferBefore??5,t=n.value.bufferAfter??5;return k({direction:L.value,relativeScrollX:He.value,relativeScrollY:Ue.value,usableWidth:Ae.value,usableHeight:Y.value,itemsLength:n.value.items.length,bufferBefore:e,bufferAfter:t,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:R.value,findLowerBoundY:e=>V.findLowerBound(e),findLowerBoundX:e=>B.findLowerBound(e),queryY:e=>V.query(e),queryX:e=>B.query(e)})}),Qe=(0,e.computed)(()=>{ge.value;let e=He.value+G.value,t=Ue.value+K.value;return Ye(L.value===`horizontal`?e:t)}),$e=(0,e.computed)(()=>{ge.value;let e=n.value.columnCount||0;if(!e)return{start:0,end:0,padStart:0,padEnd:0};if((!o.value||s.value)&&n.value.ssrRange){let{colStart:t=0,colEnd:r=0}=n.value.ssrRange,i=Math.max(0,t),a=Math.min(e,r||e);return te({columnCount:e,relativeScrollX:x(i,z.value,n.value.columnGap||0,e=>H.query(e)),usableWidth:b(i,a,z.value,n.value.columnGap||0,e=>H.query(e)),colBuffer:0,fixedWidth:z.value,columnGap:n.value.columnGap||0,findLowerBound:e=>H.findLowerBound(e),query:e=>H.query(e),totalColsQuery:()=>H.query(e)})}let t=n.value.ssrRange&&!a.value?0:2;return te({columnCount:e,relativeScrollX:He.value,usableWidth:Ae.value,colBuffer:t,fixedWidth:z.value,columnGap:n.value.columnGap||0,findLowerBound:e=>H.findLowerBound(e),query:e=>H.query(e),totalColsQuery:()=>H.query(e)})}),et=[],tt=(0,e.computed)(()=>{ge.value;let{start:e,end:t}=Ze.value,r=[],i=xe.value,a=Se.value,s=[];if(o.value||!n.value.ssrRange){let t=Qe.value,n=_(i,t);n!==void 0&&n<e&&s.push(n)}for(let n=e;n<t;n++)s.push(n);let{x:c,y:l}=!o.value&&n.value.ssrRange?ne(L.value,n.value.ssrRange,R.value,z.value,n.value.gap||0,n.value.columnGap||0,e=>V.query(e),e=>B.query(e),e=>H.query(e)):{x:0,y:0},u=new Map(et.map(e=>[e.index,e])),d=-1,f=0,p=-1,m=0,h=e=>e===d+1?(f+=B.get(d),d=e,f):(f=B.query(e),d=e,f),g=e=>e===p+1?(m+=V.get(p),p=e,m):(m=V.query(e),p=e,m),v=q.value+G.value+Ce.value,y=J.value+K.value+W.value,b=q.value+G.value,x=J.value+K.value,S=$e.value;for(let e of s){let t=n.value.items[e];if(t===void 0)continue;let{x:s,y:d,width:f,height:p}=j({index:e,direction:L.value,fixedSize:R.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,usableWidth:Ae.value,usableHeight:Y.value,totalWidth:je.value.width,queryY:g,queryX:h,getSizeY:e=>V.get(e),getSizeX:e=>B.get(e),columnRange:S}),m=a.has(e),_=s,C=d,{isStickyActive:w,isStickyActiveX:ee,isStickyActiveY:T,stickyOffset:E}=A({index:e,isSticky:m,direction:L.value,relativeScrollX:He.value,relativeScrollY:Ue.value,originalX:_,originalY:C,width:f,height:p,stickyIndices:i,fixedSize:R.value,fixedWidth:z.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,getItemQueryY:g,getItemQueryX:h}),D=o.value?N.value/Z.value+(s+v-N.value)-b:s-c,O=o.value?P.value/Ve.value+(d+y-P.value)-x:d-l,k=u.get(e);k&&k.item===t&&k.offset.x===D&&k.offset.y===O&&k.size.width===f&&k.size.height===p&&k.isSticky===m&&k.isStickyActive===w&&k.isStickyActiveX===ee&&k.isStickyActiveY===T&&k.stickyOffset.x===E.x&&k.stickyOffset.y===E.y?r.push(k):r.push({item:t,index:e,offset:{x:D,y:O},size:{width:f,height:p},originalX:_,originalY:C,isSticky:m,isStickyActive:w,isStickyActiveX:ee,isStickyActiveY:T,stickyOffset:E})}return et=r,r}),nt=(0,e.computed)(()=>{ge.value;let e=He.value+G.value,t=Ue.value+K.value,n=He.value+(v.value-Ee.value)-1,o=Ue.value+(y.value-De.value)-1,s=Xe(e),c=Ye(t),l=Ye(L.value===`horizontal`?n:o),u=Xe(n);return{items:tt.value,currentIndex:c,currentColIndex:s,currentEndIndex:l,currentEndColIndex:u,scrollOffset:{x:N.value,y:P.value},displayScrollOffset:{x:g.value?Math.abs(r.value+C.x):Math.max(0,r.value-C.x),y:Math.max(0,i.value-C.y)},viewportSize:{width:v.value,height:y.value},displayViewportSize:{width:v.value,height:y.value},totalSize:{width:Fe.value,height:Ie.value},isScrolling:a.value,isProgrammaticScroll:M.value,range:Ze.value,columnRange:$e.value}}),rt=()=>{M.value=!1,U.value=null},it=e=>{let t=e.target;if(typeof window>`u`)return;I(),t===window||t===document?(r.value=window.scrollX,i.value=window.scrollY,v.value=document.documentElement.clientWidth,y.value=document.documentElement.clientHeight):u(t)&&(r.value=t.scrollLeft,i.value=t.scrollTop,v.value=t.clientWidth,y.value=t.clientHeight);let o=E(g.value?Math.abs(r.value):r.value,X.x,Z.value),s=E(i.value,X.y,Ve.value);Math.abs(o-ie)>.5&&(ce=o>ie?`end`:`start`,ie=o),Math.abs(s-F)>.5&&(le=s>F?`end`:`start`,F=s),N.value=o,P.value=s,M.value||(U.value=null),a.value||=!0,clearTimeout(w),w=setTimeout(()=>{let e=M.value;if(a.value=!1,M.value=!1,n.value.snap&&!e){let e=n.value.snap,t=e===!0?`auto`:e,r=nt.value,i=n.value.items.length,a=r.currentIndex,o=r.currentColIndex,s=`start`,c=`start`,l=!1;if(L.value!==`horizontal`){let e=ae(t,le,r.currentIndex,r.currentEndIndex,Ue.value,y.value,i,e=>V.get(e),e=>V.query(e),Ye);e&&(a=e.index,s=e.align,l=!0)}if(L.value!==`vertical`){let e=L.value===`both`,a=e?n.value.columnCount||0:i,s=ae(t,ce,r.currentColIndex,r.currentEndColIndex,He.value,v.value,a,t=>e?H.get(t):B.get(t),t=>e?H.query(t):B.query(t),Xe);s&&(o=s.index,c=s.align,l=!0)}l&&Q(a,o,{align:{x:c,y:s},behavior:`smooth`})}},250)},at=e=>{ye(e,Ye,Xe,He.value,Ue.value,(e,t)=>{U.value!==null||M.value||qe(e,t)})},ot=(e,t,n,r)=>{at([{index:e,inlineSize:t,blockSize:n,element:r}])};function st(){if(U.value&&!s.value){let{rowIndex:e,colIndex:t,options:r}=U.value;if(f(r)&&r.behavior===`smooth`&&a.value)return;let i=n.value.container||window,o=typeof window<`u`&&i===window?window.scrollX:i.scrollLeft,s=typeof window<`u`&&i===window?window.scrollY:i.scrollTop,c=g.value?Math.abs(o):o,l=s,u=E(c,0,Z.value),d=E(l,0,Ve.value),{targetX:p,targetY:m}=O({rowIndex:e,colIndex:t,options:r,direction:L.value,viewportWidth:v.value,viewportHeight:y.value,totalWidth:Ne.value,totalHeight:Pe.value,gap:n.value.gap||0,columnGap:n.value.columnGap||0,fixedSize:R.value,fixedWidth:z.value,relativeScrollX:u,relativeScrollY:d,getItemSizeY:e=>V.get(e),getItemSizeX:e=>B.get(e),getItemQueryY:e=>V.query(e),getItemQueryX:e=>B.query(e),getColumnSize:e=>H.get(e),getColumnQuery:e=>H.query(e),scaleX:Z.value,scaleY:Ve.value,hostOffsetX:X.x,hostOffsetY:X.y,stickyIndices:xe.value,stickyStartX:G.value,stickyStartY:K.value,stickyEndX:Ee.value,stickyEndY:De.value,flowPaddingStartX:q.value,flowPaddingStartY:J.value,paddingStartX:Ce.value,paddingStartY:W.value,paddingEndX:we.value,paddingEndY:Te.value}),h=t==null||Math.abs(u-p)<2,_=e==null||Math.abs(d-m)<2,b=t==null||t===void 0||me.value[t]===1,x=e==null||e===void 0||he.value[e]===1;h&&_?b&&x&&!a.value&&!M.value&&(U.value=null):Q(e,t,f(r)?{...r,isCorrection:!0}:{align:r,isCorrection:!0})}}(0,e.watch)([ge,v,y],st),(0,e.watch)(a,e=>{e||st()});let ct=null,lt=null,ut,dt=e=>{if(typeof window>`u`)return;let t=e||window,n=t===window||l(t)&&t===document.documentElement?document:t;if(n.addEventListener(`scroll`,it,{passive:!0}),ue=null,I(),l(t)&&(lt=new MutationObserver(()=>I()),lt.observe(t,{attributes:!0,attributeFilter:[`dir`,`style`]})),ut=setInterval(I,1e3),t===window){v.value=document.documentElement.clientWidth,y.value=document.documentElement.clientHeight,r.value=window.scrollX,i.value=window.scrollY;let e=()=>{I(),v.value=document.documentElement.clientWidth,y.value=document.documentElement.clientHeight,$()};return window.addEventListener(`resize`,e),()=>{n.removeEventListener(`scroll`,it),window.removeEventListener(`resize`,e),lt?.disconnect(),clearInterval(ut),ue=null}}else return v.value=t.clientWidth,y.value=t.clientHeight,r.value=t.scrollLeft,i.value=t.scrollTop,ct=new ResizeObserver(()=>{I(),v.value=t.clientWidth,y.value=t.clientHeight,$()}),ct.observe(t),()=>{n.removeEventListener(`scroll`,it),ct?.disconnect(),lt?.disconnect(),clearInterval(ut),ue=null}},ft;return(0,e.getCurrentInstance)()&&((0,e.onMounted)(()=>{h.value=!0,I(),(0,e.watch)(()=>n.value.container,e=>{ft?.(),ft=dt(e||null)},{immediate:!0}),$(),(0,e.nextTick)(()=>{if($(),n.value.ssrRange||n.value.initialScrollIndex!==void 0){let t=n.value.initialScrollIndex===void 0?n.value.ssrRange?.start:n.value.initialScrollIndex,r=n.value.initialScrollAlign||`start`;t!=null&&Q(t,n.value.ssrRange?.colStart,{align:r,behavior:`auto`}),o.value=!0,s.value=!0,(0,e.nextTick)(()=>{s.value=!1})}else o.value=!0})}),(0,e.onUnmounted)(()=>{ft?.()})),{renderedItems:tt,totalWidth:Fe,totalHeight:Ie,renderedWidth:Le,renderedHeight:Re,scrollDetails:nt,getRowHeight:Ge,getColumnWidth:We,getRowOffset:e=>J.value+K.value+W.value+x(e,R.value,n.value.gap||0,e=>V.query(e)),getColumnOffset:e=>{let t=q.value+G.value+Ce.value;return L.value===`both`?t+x(e,z.value,n.value.columnGap||0,e=>H.query(e)):t+x(e,R.value,n.value.columnGap||0,e=>B.query(e))},getItemOffset:e=>L.value===`horizontal`?q.value+G.value+Ce.value+x(e,R.value,n.value.columnGap||0,e=>B.query(e)):J.value+K.value+W.value+x(e,R.value,n.value.gap||0,e=>V.query(e)),getItemSize:e=>L.value===`horizontal`?We(e):Ge(e),scrollToIndex:Q,scrollToOffset:Ke,stopProgrammaticScroll:rt,updateItemSize:ot,updateItemSizes:at,updateHostOffset:$,updateDirection:I,columnRange:$e,refresh:()=>{be(qe)},isHydrated:o,isWindowContainer:Me,isRtl:g,scaleX:Z,scaleY:Ve,componentOffset:X,renderedVirtualWidth:ze,renderedVirtualHeight:Be,getRowIndexAt:Ye,getColIndexAt:Xe}}function le(t){let n=(0,e.computed)(()=>(0,e.toValue)(t)),r=(0,e.computed)(()=>n.value.axis===`horizontal`),i=(0,e.computed)(()=>n.value.totalSize<=0?0:Math.min(1,n.value.viewportSize/n.value.totalSize)),a=(0,e.computed)(()=>{let e=n.value.totalSize-n.value.viewportSize;return e<=0?0:Math.max(0,Math.min(1,n.value.position/e))}),o=(0,e.computed)(()=>{let e=n.value.viewportSize>0?32/n.value.viewportSize:.1;return Math.max(Math.min(e,.1),i.value)*100}),s=(0,e.computed)(()=>a.value*(100-o.value)),c=(0,e.computed)(()=>r.value?{inlineSize:`${o.value}%`,insetInlineStart:`${s.value}%`}:{blockSize:`${o.value}%`,insetBlockStart:`${s.value}%`}),l=(0,e.computed)(()=>{let e=n.value.viewportSize,t=`var(--vs-scrollbar-has-cross-gap, var(--vsi-scrollbar-has-cross-gap, 0)) * var(--vs-scrollbar-cross-gap, var(--vsi-scrollbar-size, 8px))`;return r.value?{inlineSize:`calc(${Math.max(0,e-4)}px - ${t})`}:{blockSize:`calc(${Math.max(0,e-4)}px - ${t})`}}),u=(0,e.ref)(!1),d=0,f=0;function p(e){let t=e.currentTarget;if(e.target!==t)return;let i=t.getBoundingClientRect(),a=r.value?i.width:i.height,s=0;s=r.value?n.value.isRtl?i.right-e.clientX:e.clientX-i.left:e.clientY-i.top;let c=o.value/100*a,l=(s-c/2)/(a-c),u=n.value.totalSize-n.value.viewportSize,d=l*u;d>u-1&&(d=u),n.value.scrollToOffset(Math.max(0,Math.min(u,d)))}function m(e){u.value=!0,d=r.value?n.value.isRtl?-e.clientX:e.clientX:e.clientY,f=n.value.position,e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault(),e.stopPropagation()}function h(e){if(!u.value)return;let t=e.currentTarget.parentElement;if(!t)return;let i=(r.value?n.value.isRtl?-e.clientX:e.clientX:e.clientY)-d,a=t.getBoundingClientRect(),s=r.value?a.width:a.height,c=s-o.value/100*s;if(c<=0)return;let l=n.value.totalSize-n.value.viewportSize,p=f+i/c*l;p>l-1&&(p=l),n.value.scrollToOffset(Math.max(0,Math.min(l,p)))}function g(e){u.value&&(u.value=!1,e.currentTarget.releasePointerCapture(e.pointerId))}return(0,e.getCurrentInstance)()&&(0,e.onUnmounted)(()=>{u.value=!1}),{viewportPercent:i,positionPercent:a,thumbSizePercent:o,thumbPositionPercent:s,trackStyle:l,thumbStyle:c,trackProps:(0,e.computed)(()=>({class:[`virtual-scrollbar-track`,`virtual-scrollbar-track--${r.value?`horizontal`:`vertical`}`],style:l.value,role:`scrollbar`,"aria-label":n.value.ariaLabel,"aria-orientation":n.value.axis,"aria-valuenow":Math.round(n.value.position),"aria-valuemin":0,"aria-valuemax":Math.round(n.value.totalSize-n.value.viewportSize),"aria-controls":n.value.containerId,tabindex:-1,onMousedown:p})),thumbProps:(0,e.computed)(()=>({class:[`virtual-scrollbar-thumb`,`virtual-scrollbar-thumb--${r.value?`horizontal`:`vertical`}`,{"virtual-scrollbar-thumb--active":u.value}],style:c.value,onPointerdown:m,onPointermove:h,onPointerup:g,onPointercancel:g})),isDragging:u}}var ue=(0,e.defineComponent)({__name:`VirtualScrollbar`,props:{axis:{default:`vertical`},totalSize:{},position:{},viewportSize:{},scrollToOffset:{},containerId:{},isRtl:{type:Boolean,default:!1},ariaLabel:{}},emits:[`scrollToOffset`],setup(t,{emit:n}){let r=t,i=n,{trackProps:a,thumbProps:o}=le(()=>({axis:r.axis,totalSize:r.totalSize,position:r.position,viewportSize:r.viewportSize,containerId:r.containerId,isRtl:r.isRtl,scrollToOffset:e=>{r.scrollToOffset?.(e),i(`scrollToOffset`,e)}}));return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(a))),[(0,e.createElementVNode)(`div`,(0,e.normalizeProps)((0,e.guardReactiveProps)((0,e.unref)(o))),null,16)],16))}}),I=ue,L={key:0,class:`virtual-scroll-scrollbar-container`,"aria-hidden":`true`},de={key:0,class:`virtual-scroll-debug-info`},fe=.95,R=.1,z=(0,e.defineComponent)({__name:`VirtualScroll`,props:{containerTag:{default:`div`},wrapperTag:{default:`div`},itemTag:{default:`div`},stickyHeader:{type:Boolean,default:!1},stickyFooter:{type:Boolean,default:!1},virtualScrollbar:{type:Boolean,default:!1},items:{},itemSize:{},direction:{default:`vertical`},bufferBefore:{default:5},bufferAfter:{default:5},container:{},ssrRange:{},columnCount:{default:0},columnWidth:{},scrollPaddingStart:{default:0},scrollPaddingEnd:{default:0},gap:{default:0},columnGap:{default:0},stickyIndices:{default:()=>[]},loadDistance:{default:200},loading:{type:Boolean,default:!1},restoreScrollOnPrepend:{type:Boolean,default:!1},initialScrollIndex:{},initialScrollAlign:{},defaultItemSize:{},defaultColumnWidth:{},debug:{type:Boolean,default:!1},role:{},ariaLabel:{},ariaLabelledby:{},itemRole:{default:void 0},snap:{type:[Boolean,String]}},emits:[`scroll`,`load`,`visibleRangeChange`],setup(t,{expose:n,emit:r}){let i=t,a=r,o=(0,e.useSlots)(),s=(0,e.ref)(null),l=(0,e.ref)(null),u=(0,e.ref)(null),d=(0,e.ref)(null),f=new Map,h=(0,e.useId)(),g=(0,e.computed)(()=>`vs-container-${h}`),_=(0,e.ref)(0),v=(0,e.ref)(0),y=(0,e.computed)(()=>i.container===void 0?s.value:i.container),b=(0,e.computed)(()=>{let e=y.value;return e===s.value||c(e)}),x=(0,e.computed)(()=>(i.items.length,{items:i.items,itemSize:i.itemSize,direction:i.direction,bufferBefore:i.bufferBefore,bufferAfter:i.bufferAfter,container:y.value,hostElement:l.value,hostRef:s.value,ssrRange:i.ssrRange,columnCount:i.columnCount,columnWidth:i.columnWidth,scrollPaddingStart:{x:p(i.scrollPaddingStart,i.direction),y:m(i.scrollPaddingStart,i.direction)},scrollPaddingEnd:{x:p(i.scrollPaddingEnd,i.direction),y:m(i.scrollPaddingEnd,i.direction)},flowPaddingStart:{x:0,y:i.stickyHeader?0:_.value},flowPaddingEnd:{x:0,y:i.stickyFooter?0:v.value},stickyStart:{x:0,y:i.stickyHeader&&b.value?_.value:0},stickyEnd:{x:0,y:i.stickyFooter&&b.value?v.value:0},gap:i.gap,columnGap:i.columnGap,stickyIndices:i.stickyIndices,loadDistance:i.loadDistance,loading:i.loading,restoreScrollOnPrepend:i.restoreScrollOnPrepend,initialScrollIndex:i.initialScrollIndex,initialScrollAlign:i.initialScrollAlign,defaultItemSize:i.defaultItemSize,defaultColumnWidth:i.defaultColumnWidth,debug:i.debug,snap:i.snap})),{isHydrated:S,isRtl:C,columnRange:w,renderedItems:ee,scrollDetails:T,renderedHeight:D,renderedWidth:O,getColumnWidth:k,getRowHeight:te,scrollToIndex:A,scrollToOffset:j,updateHostOffset:ne,updateItemSizes:N,updateDirection:re,getItemOffset:ae,getRowOffset:oe,getColumnOffset:F,getItemSize:se,refresh:ue,stopProgrammaticScroll:z,scaleX:pe,scaleY:B,isWindowContainer:V,componentOffset:H,renderedVirtualWidth:me,renderedVirtualHeight:he,getRowIndexAt:ge,getColIndexAt:_e}=ce(x),ve=(0,e.computed)(()=>pe.value!==1||B.value!==1),ye=(0,e.computed)(()=>V.value?!1:i.virtualScrollbar===!0||pe.value!==1||B.value!==1);function be(e){let{displayViewportSize:t}=T.value;e>=D.value-t.height-.5?j(null,1/0):j(null,E(e,H.y,B.value))}function U(e){let{displayViewportSize:t}=T.value;e>=O.value-t.width-.5?j(1/0,null):j(E(e,H.x,pe.value),null)}let xe=le((0,e.computed)(()=>({axis:`vertical`,totalSize:D.value,position:T.value.displayScrollOffset.y,viewportSize:T.value.displayViewportSize.height,scrollToOffset:be,containerId:g.value,isRtl:C.value}))),Se=le((0,e.computed)(()=>({axis:`horizontal`,totalSize:O.value,position:T.value.displayScrollOffset.x,viewportSize:T.value.displayViewportSize.width,scrollToOffset:U,containerId:g.value,isRtl:C.value}))),Ce=(0,e.computed)(()=>i.direction===`both`?{...w.value,padStart:0,padEnd:0}:w.value);function we(){ue(),re(),(0,e.nextTick)(()=>{let e=[];for(let[t,n]of f.entries())n&&e.push({index:t,inlineSize:n.offsetWidth,blockSize:n.offsetHeight,element:n});e.length>0&&N(e)})}(0,e.watch)(T,(e,t)=>{!S.value||!e||(a(`scroll`,e),(!t||!t.range||!t.columnRange||e.range.start!==t.range.start||e.range.end!==t.range.end||e.columnRange.start!==t.columnRange.start||e.columnRange.end!==t.columnRange.end)&&a(`visibleRangeChange`,{start:e.range.start,end:e.range.end,colStart:e.columnRange.start,colEnd:e.columnRange.end}),!i.loading&&(i.direction!==`horizontal`&&e.totalSize&&e.totalSize.height-(e.scrollOffset.y+e.viewportSize.height)<=i.loadDistance&&a(`load`,`vertical`),i.direction!==`vertical`&&e.totalSize&&e.totalSize.width-(e.scrollOffset.x+e.viewportSize.width)<=i.loadDistance&&a(`load`,`horizontal`)))}),(0,e.watch)(S,e=>{e&&T.value?.range&&T.value?.columnRange&&a(`visibleRangeChange`,{start:T.value.range.start,end:T.value.range.end,colStart:T.value.columnRange.start,colEnd:T.value.columnRange.end})},{once:!0});let W=typeof window>`u`?null:new ResizeObserver(ne),Te=typeof window>`u`?null:new ResizeObserver(e=>{let t=[];for(let n of e){let e=n.target,r=Number(e.dataset.index),i=e.dataset.colIndex,a=n.contentRect.width,o=n.contentRect.height;n.borderBoxSize&&n.borderBoxSize.length>0?(a=n.borderBoxSize[0].inlineSize,o=n.borderBoxSize[0].blockSize):(a=e.offsetWidth,o=e.offsetHeight),i===void 0?Number.isNaN(r)||t.push({index:r,inlineSize:a,blockSize:o,element:e}):t.push({index:-1,inlineSize:a,blockSize:o,element:e})}t.length>0&&N(t)}),G=typeof window>`u`?null:new ResizeObserver(()=>{_.value=u.value?.offsetHeight||0,v.value=d.value?.offsetHeight||0,ne()});function Ee(t,n){(0,e.watch)(t,(e,t)=>{t&&G?.unobserve(t),e?G?.observe(e):n.value=0},{immediate:!0})}Ee(u,_),Ee(d,v),(0,e.onMounted)(()=>{s.value&&W?.observe(s.value);for(let e of f.values())K(e,!0)}),(0,e.watch)([s,l],([e],[t])=>{t&&W?.unobserve(t),e&&W?.observe(e)}),(0,e.watch)([s,ve],([e,t],[n,r])=>{let i=e!==n||t!==r;n&&i&&n.removeEventListener(`wheel`,X),e&&i&&e.addEventListener(`wheel`,X,{passive:!t})},{immediate:!0});function K(e,t){let n=t?`observe`:`unobserve`;Te?.[n](e),i.direction===`both`&&e.children.length>0&&e.querySelectorAll(`[data-col-index]`).forEach(e=>Te?.[n](e))}function De(e,t){if(e){let n=e;f.set(t,n),K(n,!0)}else{let e=f.get(t);e&&(K(e,!1),f.delete(t))}}let q=(0,e.ref)(!1),Oe={x:0,y:0},J={x:0,y:0},ke={x:0,y:0},Ae=0,Y={x:0,y:0},je=null;function Me(){let e=()=>{let{nextVelocity:t,delta:n}=P(Y,fe);Y.x=t.x,Y.y=t.y;let{x:r,y:i}=T.value.scrollOffset;j(r+n.x,i+n.y,{behavior:`auto`}),Math.abs(Y.x)>R||Math.abs(Y.y)>R?je=requestAnimationFrame(e):Ne()};je=requestAnimationFrame(e)}function Ne(){je!==null&&(cancelAnimationFrame(je),je=null),Y={x:0,y:0}}function Pe(e){z(),Ne(),ve.value&&(e.pointerType===`mouse`&&e.button!==0||(q.value=!0,Oe={x:e.clientX,y:e.clientY},ke={x:e.clientX,y:e.clientY},Ae=performance.now(),J={x:T.value.scrollOffset.x,y:T.value.scrollOffset.y},e.currentTarget.setPointerCapture(e.pointerId)))}function Fe(e){if(!q.value)return;let t=performance.now(),n=t-Ae;if(n>0){let t=ie(ke,{x:e.clientX,y:e.clientY},n);Y.x=Y.x*.2+t.x*.8,Y.y=Y.y*.2+t.y*.8}ke={x:e.clientX,y:e.clientY},Ae=t;let r=Oe.x-e.clientX,i=Oe.y-e.clientY;requestAnimationFrame(()=>{j(J.x+r,J.y+i,{behavior:`auto`})})}function Ie(e){q.value&&(q.value=!1,e.currentTarget.releasePointerCapture(e.pointerId),(Math.abs(Y.x)>R||Math.abs(Y.y)>R)&&(Math.abs(Y.x)>4*Math.abs(Y.y)?Y.y=0:Math.abs(Y.y)>4*Math.abs(Y.x)&&(Y.x=0),Me()))}function X(e){let{scrollOffset:t}=T.value;if(z(),ve.value){e.preventDefault();let{deltaX:n,deltaY:r}=e;e.shiftKey&&n===0&&(n=r,r=0),j(t.x+n,t.y+r,{behavior:`auto`})}}function Le(e){let{viewportSize:t,scrollOffset:n}=T.value,r=i.direction!==`vertical`,a=i.direction!==`horizontal`,o=x.value,s=o.stickyStart,c=o.stickyEnd,l=o.scrollPaddingStart,u=o.scrollPaddingEnd,d=i.snap===!0?`auto`:i.snap,f=d&&d!==`auto`?d:null,p=e=>{let r=(e?n.x:n.y)+(e?t.width:t.height)/2;return e?_e(r):ge(r)},{currentIndex:m,currentEndIndex:h,currentColIndex:g,currentEndColIndex:_}=T.value,v=(e,t)=>{let n=!e,r=e?m:g,a=e?h:_,o=Math.max(1,a-r),s=e?i.items.length-1:i.columnCount?i.columnCount-1:i.items.length-1;return t?f===`center`?Math.min(s,p(n)+o):f===`end`?Math.min(s,a+o):a:f===`center`?Math.max(0,p(n)-o):f===`start`?Math.max(0,r-o):r},y=(e,r)=>{let a=!e;if(f===`center`){let t=p(a),n=a&&i.columnCount?i.columnCount-1:i.items.length-1,o=r?Math.min(n,t+1):Math.max(0,t-1);A(e?o:null,a?o:null,{align:`center`});return}if(e)if(r)if(f===`start`)A(Math.min(i.items.length-1,m+1),null,{align:`start`});else{let e=f||`end`,r=n.y+t.height-(c.y+u.y);oe(h)+te(h)>r+1?A(h,null,{align:e}):h<i.items.length-1&&A(h+1,null,{align:e})}else if(f===`end`)A(Math.max(0,h-1),null,{align:`end`});else{let e=f||`start`,t=n.y+s.y+l.y;oe(m)<t-1?A(m,null,{align:e}):m>0&&A(m-1,null,{align:e})}else{let e=i.columnCount?i.columnCount-1:i.items.length-1;if(C.value?!r:r)if(f===`start`)A(null,Math.min(e,g+1),{align:`start`});else{let r=f||`end`,a=n.x+t.width-(c.x+u.x);(i.columnCount?F(_)+k(_):ae(_)+se(_))>a+1?A(null,_,{align:r}):_<e&&A(null,_+1,{align:r})}else if(f===`end`)A(null,Math.max(0,_-1),{align:`end`});else{let e=f||`start`,t=n.x+s.x+l.x;(i.columnCount?F(g):ae(g))<t-1?A(null,g,{align:e}):g>0&&A(null,g-1,{align:e})}}};switch(e.key){case`Home`:e.preventDefault(),z(),A(0,0,{behavior:Math.max(n.x,n.y)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`,align:`start`});break;case`End`:{e.preventDefault(),z();let r=i.items.length-1,a=(i.columnCount||0)>0?i.columnCount-1:0,{totalSize:o}=T.value,s=Math.max(o.width-n.x-t.width,o.height-n.y-t.height)>10*(i.direction===`horizontal`?t.width:t.height)?`auto`:`smooth`;i.direction===`both`?A(r,a,{behavior:s,align:`end`}):A(i.direction===`vertical`?r:0,i.direction===`horizontal`?r:0,{behavior:s,align:`end`});break}case`ArrowUp`:e.preventDefault(),z(),a&&y(!0,!1);break;case`ArrowDown`:e.preventDefault(),z(),a&&y(!0,!0);break;case`ArrowLeft`:e.preventDefault(),z(),r&&y(!1,!1);break;case`ArrowRight`:e.preventDefault(),z(),r&&y(!1,!0);break;case`PageUp`:e.preventDefault(),z(),i.direction===`horizontal`?A(null,v(!1,!1),{align:f||`end`}):A(v(!0,!1),null,{align:f||`end`});break;case`PageDown`:e.preventDefault(),z(),i.direction===`horizontal`?A(null,v(!1,!0),{align:f||`start`}):A(v(!0,!0),null,{align:f||`start`});break}}(0,e.onUnmounted)(()=>{W?.disconnect(),Te?.disconnect(),G?.disconnect()});let Re=(0,e.computed)(()=>{let e={...i.direction===`vertical`?{}:{whiteSpace:`nowrap`}};return(ye.value||!V.value)&&(e.overflow=`auto`),ve.value&&(e.touchAction=`none`),V.value?e:i.containerTag===`table`?{...e,display:`block`,minInlineSize:i.direction===`vertical`?`100%`:`auto`}:e});function ze(e,t,n,r,i,a){return t<=r?null:{axis:e,positionPercent:a.positionPercent.value,viewportPercent:a.viewportPercent.value,thumbSizePercent:a.thumbSizePercent.value,thumbPositionPercent:a.thumbPositionPercent.value,trackProps:a.trackProps.value,thumbProps:a.thumbProps.value,scrollbarProps:{axis:e,totalSize:t,position:n,viewportSize:r,scrollToOffset:i,containerId:g.value,isRtl:C.value,ariaLabel:`${e===`vertical`?`Vertical`:`Horizontal`} scroll`},isDragging:a.isDragging.value}}let Be=(0,e.computed)(()=>{if(i.direction===`horizontal`)return null;let{displayViewportSize:e,displayScrollOffset:t}=T.value;return ze(`vertical`,D.value,t.y,e.height,be,xe)}),Z=(0,e.computed)(()=>{if(i.direction===`vertical`)return null;let{displayViewportSize:e,displayScrollOffset:t}=T.value;return ze(`horizontal`,O.value,t.x,e.width,U,Se)}),Ve=(0,e.computed)(()=>{let e=i.direction===`horizontal`,t=i.direction===`vertical`,n=i.direction===`both`,r={inlineSize:t?`100%`:`${me.value}px`,blockSize:e?`100%`:`${he.value}px`};return S.value||(r.display=`flex`,r.flexDirection=e?`row`:`column`,(e||n)&&i.columnGap&&(r.columnGap=`${i.columnGap}px`),(t||n)&&i.gap&&(r.rowGap=`${i.gap}px`)),r}),He=(0,e.computed)(()=>{let e=i.direction===`horizontal`;return{display:e?`inline-block`:`block`,...e?{blockSize:`100%`,verticalAlign:`top`}:{inlineSize:`100%`}}}),Ue=(0,e.computed)(()=>({inlineSize:i.direction===`vertical`?`1px`:`${me.value}px`,blockSize:i.direction===`horizontal`?`1px`:`${he.value}px`}));function We(e){let t=M({containerTag:i.containerTag||`div`,direction:i.direction,isHydrated:S.value,item:e,itemSize:i.itemSize,paddingStartX:x.value.scrollPaddingStart.x,paddingStartY:x.value.scrollPaddingStart.y,isRtl:C.value});return!S.value&&i.direction===`both`&&(t.display=`flex`,i.columnGap&&(t.columnGap=`${i.columnGap}px`)),t}let Ge=(0,e.computed)(()=>i.debug),Q=(0,e.computed)(()=>i.containerTag===`table`),Ke=(0,e.computed)(()=>Q.value?`thead`:`div`),qe=(0,e.computed)(()=>Q.value?`tfoot`:`div`),Je=(0,e.computed)(()=>i.role?i.role:Q.value?null:i.direction===`both`?`grid`:`list`),$=(0,e.computed)(()=>Je.value===`grid`||Q.value),Ye=(0,e.computed)(()=>Q.value?null:i.ariaLabel||i.ariaLabelledby?`region`:`none`),Xe=(0,e.computed)(()=>Q.value?null:Je.value),Ze=(0,e.computed)(()=>{if($.value)return`row`;let e=Je.value;return e===`tree`?`treeitem`:e===`listbox`?`option`:e===`menu`?`menuitem`:`listitem`}),Qe=(0,e.computed)(()=>i.itemRole==null?Ze.value:i.itemRole),$e=(0,e.computed)(()=>i.role===`grid`||!i.role&&i.direction===`both`?`gridcell`:Q.value?`cell`:null),et=(0,e.computed)(()=>{let e=Qe.value;return e==null||e!==`none`&&e!==`presentation`}),tt=(0,e.computed)(()=>({"aria-label":i.ariaLabel,"aria-labelledby":i.ariaLabelledby,"aria-busy":i.loading?`true`:void 0})),nt=(0,e.computed)(()=>{let e={},t=Je.value;return t&&[`grid`,`tree`,`listbox`,`menu`,`tablist`].includes(t)&&(e[`aria-orientation`]=i.direction===`both`?void 0:i.direction),$.value&&(e[`aria-rowcount`]=i.items.length,i.columnCount>0&&(e[`aria-colcount`]=i.columnCount)),e});function rt(e){let t={};$.value?t[`aria-rowindex`]=e+1:(t[`aria-setsize`]=i.items.length,t[`aria-posinset`]=e+1);let n=Qe.value;return n!==null&&(t.role=n===`none`||n===`presentation`?Ze.value:n),t}function it(e){let t=$e.value;if(!t)return{};let n={role:t};return $.value&&(n[`aria-colindex`]=e+1),n}return n({...(0,e.toRefs)(i),scrollDetails:T,columnRange:w,getColumnWidth:k,getRowHeight:te,getCellAriaProps:it,getItemAriaProps:rt,getRowOffset:oe,getColumnOffset:F,getItemOffset:ae,getItemSize:se,getRowIndexAt:ge,getColIndexAt:_e,scrollToIndex:A,scrollToOffset:j,refresh:we,stopProgrammaticScroll:()=>{z(),Ne()},updateDirection:re,isRtl:C,isHydrated:S,scaleX:pe,scaleY:B,renderedWidth:O,renderedHeight:D,componentOffset:H,scrollbarPropsVertical:Be,scrollbarPropsHorizontal:Z}),(n,r)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.containerTag),(0,e.mergeProps)({id:g.value,ref_key:`hostRef`,ref:s,class:[`virtual-scroll-container`,[`virtual-scroll--${t.direction}`,{"virtual-scroll--hydrated":(0,e.unref)(S),"virtual-scroll--window":(0,e.unref)(V),"virtual-scroll--table":Q.value,"virtual-scroll--hide-scrollbar":ye.value}]],style:Re.value,tabindex:`0`,role:Q.value?void 0:Ye.value},Q.value?{...tt.value,...nt.value}:tt.value,{onKeydown:Le,onPointerdown:Pe,onPointermove:Fe,onPointerup:Ie,onPointercancel:Ie}),{default:(0,e.withCtx)(()=>[ye.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,L,[(0,e.createElementVNode)(`div`,{class:`virtual-scroll-scrollbar-viewport`,style:(0,e.normalizeStyle)({inlineSize:`${(0,e.unref)(T).displayViewportSize.width}px`,blockSize:`${(0,e.unref)(T).displayViewportSize.height}px`,"--vsi-scrollbar-has-cross-gap":t.direction===`both`?1:0})},[o.scrollbar&&Be.value?(0,e.renderSlot)(n.$slots,`scrollbar`,(0,e.normalizeProps)((0,e.mergeProps)({key:0},Be.value)),void 0,!0):Be.value?((0,e.openBlock)(),(0,e.createBlock)(I,(0,e.normalizeProps)((0,e.mergeProps)({key:1},Be.value.scrollbarProps)),null,16)):(0,e.createCommentVNode)(``,!0),o.scrollbar&&Z.value?(0,e.renderSlot)(n.$slots,`scrollbar`,(0,e.normalizeProps)((0,e.mergeProps)({key:2},Z.value)),void 0,!0):Z.value?((0,e.openBlock)(),(0,e.createBlock)(I,(0,e.normalizeProps)((0,e.mergeProps)({key:3},Z.value.scrollbarProps)),null,16)):(0,e.createCommentVNode)(``,!0)],4)])):(0,e.createCommentVNode)(``,!0),o.header?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(Ke.value),{key:1,ref_key:`headerRef`,ref:u,class:(0,e.normalizeClass)([`virtual-scroll-header`,{"virtual-scroll--sticky":t.stickyHeader}]),role:Q.value?void 0:`none`},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`header`,{},void 0,!0)]),_:3},8,[`class`,`role`])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.wrapperTag),(0,e.mergeProps)({ref_key:`wrapperRef`,ref:l,class:`virtual-scroll-wrapper`,style:Ve.value,role:Q.value?void 0:Xe.value},Q.value?{}:nt.value),{default:(0,e.withCtx)(()=>[Q.value?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.itemTag),{key:0,class:`virtual-scroll-spacer`,style:(0,e.normalizeStyle)(Ue.value)},{default:(0,e.withCtx)(()=>[...r[0]||=[(0,e.createElementVNode)(`td`,{style:{padding:`0`,border:`none`,"block-size":`inherit`}},null,-1)]]),_:1},8,[`style`])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(ee),r=>((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.itemTag),(0,e.mergeProps)({key:r.index,ref_for:!0,ref:e=>De(e,r.index),"data-index":r.index,class:[`virtual-scroll-item`,{"virtual-scroll--sticky":r.isStickyActive,"virtual-scroll--debug":Ge.value}],style:We(r)},{ref_for:!0},et.value?rt(r.index):{role:`none`}),{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`item`,{item:r.item,index:r.index,getItemAriaProps:rt,columnRange:Ce.value,getColumnWidth:(0,e.unref)(k),getCellAriaProps:it,gap:i.gap,columnGap:i.columnGap,isSticky:r.isSticky,isStickyActive:r.isStickyActive,isStickyActiveX:r.isStickyActiveX,isStickyActiveY:r.isStickyActiveY,offset:r.offset},void 0,!0),Ge.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,de,` #`+(0,e.toDisplayString)(r.index)+` (`+(0,e.toDisplayString)(Math.round(r.offset.x))+`, `+(0,e.toDisplayString)(Math.round(r.offset.y))+`) `,1)):(0,e.createCommentVNode)(``,!0)]),_:2},1040,[`data-index`,`class`,`style`]))),128))]),_:3},16,[`style`,`role`])),t.loading&&o.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:2,class:`virtual-scroll-loading`,style:(0,e.normalizeStyle)(He.value),"aria-live":`polite`,"aria-atomic":`true`},[(0,e.renderSlot)(n.$slots,`loading`,{},void 0,!0)],4)):(0,e.createCommentVNode)(``,!0),o.footer?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(qe.value),{key:3,ref_key:`footerRef`,ref:d,class:(0,e.normalizeClass)([`virtual-scroll-footer`,{"virtual-scroll--sticky":t.stickyFooter}]),role:Q.value?void 0:`none`},{default:(0,e.withCtx)(()=>[(0,e.renderSlot)(n.$slots,`footer`,{},void 0,!0)]),_:3},8,[`class`,`role`])):(0,e.createCommentVNode)(``,!0)]),_:3},16,[`id`,`class`,`style`,`role`]))}}),pe=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},B=pe(z,[[`__scopeId`,`data-v-55dd91b2`]]);exports.BROWSER_MAX_SIZE=a,exports.DEFAULT_BUFFER=5,exports.DEFAULT_COLUMN_WIDTH=100,exports.DEFAULT_ITEM_SIZE=40,exports.EMPTY_SCROLL_DETAILS=i,exports.FenwickTree=F,exports.VirtualScroll=B,exports.VirtualScrollbar=I,exports.calculateAxisSize=y,exports.calculateColumnRange=te,exports.calculateIndexAt=oe,exports.calculateInertiaStep=P,exports.calculateInstantaneousVelocity=ie,exports.calculateItemPosition=j,exports.calculateItemStyle=M,exports.calculateOffsetAt=x,exports.calculatePrependCount=N,exports.calculateRange=k,exports.calculateRangeSize=b,exports.calculateRenderedSize=T,exports.calculateSSROffsets=ne,exports.calculateScale=ee,exports.calculateScrollTarget=O,exports.calculateStickyItem=A,exports.calculateTotalSize=re,exports.displayToVirtual=E,exports.findPrevStickyIndex=_,exports.getPaddingX=p,exports.getPaddingY=m,exports.isBody=s,exports.isElement=l,exports.isItemVisible=w,exports.isScrollToIndexOptions=f,exports.isScrollableElement=u,exports.isWindow=o,exports.isWindowLike=c,exports.resolveSnap=ae,exports.scrollTo=d,exports.useVirtualScroll=ce,exports.useVirtualScrollSizes=se,exports.useVirtualScrollbar=le,exports.virtualToDisplay=D;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|