@pdanpdan/virtual-scroll 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toRefs, toValue, unref, useId, useSlots, watch, withCtx } from "vue";
1
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRefs, toValue, unref, useId, useSlots, watch, withCtx } from "vue";
2
2
  const DEFAULT_ITEM_SIZE = 40, DEFAULT_COLUMN_WIDTH = 100, DEFAULT_BUFFER = 5, EMPTY_SCROLL_DETAILS = {
3
3
  items: [],
4
4
  currentIndex: 0,
@@ -37,65 +37,7 @@ const DEFAULT_ITEM_SIZE = 40, DEFAULT_COLUMN_WIDTH = 100, DEFAULT_BUFFER = 5, EM
37
37
  padStart: 0,
38
38
  padEnd: 0
39
39
  }
40
- };
41
- var FenwickTree = class {
42
- tree;
43
- values;
44
- constructor(e) {
45
- this.tree = new Float64Array(e + 1), this.values = new Float64Array(e);
46
- }
47
- update(e, t) {
48
- 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;
49
- }
50
- query(e) {
51
- let t = 0;
52
- for (; e > 0;) t += this.tree[e] || 0, e -= e & -e;
53
- return t;
54
- }
55
- set(e, t) {
56
- e < 0 || e >= this.values.length || (this.values[e] = t);
57
- }
58
- get length() {
59
- return this.values.length;
60
- }
61
- get(e) {
62
- return this.values[e] || 0;
63
- }
64
- getValues() {
65
- return this.values;
66
- }
67
- findLowerBound(e) {
68
- let t = 0, n = this.tree.length, r = 1 << Math.floor(Math.log2(n - 1));
69
- for (; r > 0;) {
70
- let i = t + r;
71
- if (i < n) {
72
- let n = this.tree[i] || 0;
73
- n <= e && (t = i, e -= n);
74
- }
75
- r >>= 1;
76
- }
77
- return t;
78
- }
79
- rebuild() {
80
- this.tree.fill(0);
81
- for (let e = 0; e < this.values.length; e++) this.tree[e + 1] = this.values[e] || 0;
82
- for (let e = 1; e < this.tree.length; e++) {
83
- let t = e + (e & -e);
84
- t < this.tree.length && (this.tree[t] = this.tree[t] + this.tree[e]);
85
- }
86
- }
87
- resize(e) {
88
- if (e === this.values.length) return;
89
- let t = new Float64Array(e);
90
- t.set(this.values.subarray(0, Math.min(e, this.values.length))), this.values = t, this.tree = new Float64Array(e + 1), this.rebuild();
91
- }
92
- shift(e) {
93
- if (e === 0) return;
94
- let t = this.values.length, n = new Float64Array(t);
95
- 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();
96
- }
97
- };
98
- const BROWSER_MAX_SIZE = 1e7;
40
+ }, BROWSER_MAX_SIZE = 1e7;
99
41
  function isWindow(e) {
100
42
  return e === null || e === document.documentElement || typeof window < "u" && e === window;
101
43
  }
@@ -181,6 +123,13 @@ function calculateAxisAlignment({ align: e, targetPos: t, itemSize: n, scrollPos
181
123
  function calculateAxisSize(e, t, n, r) {
182
124
  return e <= 0 ? 0 : t === null ? Math.max(0, r(e) - n) : Math.max(0, e * (t + n) - n);
183
125
  }
126
+ function calculateRangeSize(e, t, n, r, i) {
127
+ let a = t - e;
128
+ return a <= 0 ? 0 : n === null ? Math.max(0, i(t) - i(e) - r) : Math.max(0, a * (n + r) - r);
129
+ }
130
+ function calculateOffsetAt(e, t, n, r) {
131
+ return t === null ? r(e) : e * (t + n);
132
+ }
184
133
  function calculateAxisTarget({ index: e, align: t, viewSize: n, scrollPos: r, fixedSize: i, gap: a, query: o, getSize: s, stickyIndices: c, stickyStart: l, stickyEnd: u = 0 }) {
185
134
  let d = l;
186
135
  if (c && c.length > 0) {
@@ -202,43 +151,51 @@ function calculateAxisTarget({ index: e, align: t, viewSize: n, scrollPos: r, fi
202
151
  effectiveAlign: h
203
152
  };
204
153
  }
205
- function calculateAxisSticky(e, t, n, r, i, a) {
154
+ function calculateAxisSticky(e, t, n, r, i, a, o) {
206
155
  if (e <= t) return {
207
156
  isActive: !1,
208
157
  offset: 0
209
158
  };
210
- let o = findNextStickyIndex(i, r);
211
- if (o === void 0) return {
159
+ let s = o === void 0 ? findNextStickyIndex(i, r) : o;
160
+ if (s === void 0) return {
212
161
  isActive: !0,
213
162
  offset: 0
214
163
  };
215
- let s = a(o);
216
- return e >= s ? {
164
+ let c = a(s);
165
+ return e >= c ? {
217
166
  isActive: !1,
218
167
  offset: 0
219
168
  } : {
220
169
  isActive: !0,
221
- offset: Math.max(0, Math.min(n, s - e)) - n
170
+ offset: Math.max(0, Math.min(n, c - e)) - n
222
171
  };
223
172
  }
224
173
  function isItemVisible(e, t, n, r, i = 0, a = 0) {
225
174
  let o = n + i, s = n + r - a;
226
175
  return t <= r - i - a ? e >= o - .5 && e + t <= s + .5 : e <= o + .5 && e + t >= s - .5;
227
176
  }
177
+ function calculateScale(e, t, n) {
178
+ if (e || t <= 1e7) return 1;
179
+ let r = Math.min(t, BROWSER_MAX_SIZE), i = t - n, a = r - n;
180
+ return a > 0 ? i / a : 1;
181
+ }
182
+ function calculateRenderedSize(e, t) {
183
+ return e ? t : Math.min(t, BROWSER_MAX_SIZE);
184
+ }
228
185
  function displayToVirtual(e, t, n) {
229
186
  return (e - t) * n;
230
187
  }
231
188
  function virtualToDisplay(e, t, n) {
232
189
  return e / n + t;
233
190
  }
234
- function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction: r, viewportWidth: i, viewportHeight: a, totalWidth: o, totalHeight: s, gap: c, columnGap: l, fixedSize: u, fixedWidth: d, relativeScrollX: f, relativeScrollY: p, getItemSizeY: m, getItemSizeX: h, getItemQueryY: g, getItemQueryX: _, getColumnSize: v, getColumnQuery: y, scaleX: b, scaleY: x, hostOffsetX: S, hostOffsetY: C, stickyIndices: w, stickyStartX: T = 0, stickyStartY: ee = 0, stickyEndX: E = 0, stickyEndY: te = 0, flowPaddingStartX: D = 0, flowPaddingStartY: O = 0, paddingStartX: k = 0, paddingStartY: A = 0, paddingEndX: j = 0, paddingEndY: M = 0 }) {
235
- let N;
236
- N = isScrollToIndexOptions(n) ? n.align : n;
237
- let P = (N && typeof N == "object" ? N.x : N) || "auto", re = (N && typeof N == "object" ? N.y : N) || "auto", ie = f, ae = p, oe = 0, se = 0, ce = "auto", le = "auto", I = b === 1 ? o : BROWSER_MAX_SIZE, ue = x === 1 ? s : BROWSER_MAX_SIZE, L = Math.max(0, S + I - i), R = Math.max(0, C + ue - a), z = (L - S) * b, B = (R - C) * x, fe = D + T + k, pe = O + ee + A;
191
+ function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction: r, viewportWidth: i, viewportHeight: a, totalWidth: o, totalHeight: s, gap: c, columnGap: l, fixedSize: u, fixedWidth: d, relativeScrollX: f, relativeScrollY: p, getItemSizeY: m, getItemSizeX: h, getItemQueryY: g, getItemQueryX: _, getColumnSize: v, getColumnQuery: y, scaleX: b, scaleY: x, hostOffsetX: S, hostOffsetY: C, stickyIndices: w, stickyStartX: T = 0, stickyStartY: te = 0, stickyEndX: ne = 0, stickyEndY: re = 0, flowPaddingStartX: ie = 0, flowPaddingStartY: ae = 0, paddingStartX: E = 0, paddingStartY: D = 0, paddingEndX: oe = 0, paddingEndY: se = 0 }) {
192
+ let k;
193
+ k = isScrollToIndexOptions(n) ? n.align : n;
194
+ let A = (k && typeof k == "object" ? k.x : k) || "auto", ce = (k && typeof k == "object" ? k.y : k) || "auto", le = f, ue = p, de = 0, pe = 0, me = "auto", j = "auto", M = b === 1 ? o : BROWSER_MAX_SIZE, he = x === 1 ? s : BROWSER_MAX_SIZE, N = Math.max(0, S + M - i), ge = Math.max(0, C + he - a), P = (N - S) * b, _e = (ge - C) * x, F = ie + T + E, ye = ae + te + D;
238
195
  if (e != null) {
239
196
  let t = calculateAxisTarget({
240
197
  index: e,
241
- align: re,
198
+ align: ce,
242
199
  viewSize: a,
243
200
  scrollPos: p,
244
201
  fixedSize: u,
@@ -246,15 +203,15 @@ function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction
246
203
  query: g,
247
204
  getSize: m,
248
205
  stickyIndices: w,
249
- stickyStart: ee + A,
250
- stickyEnd: te + M
206
+ stickyStart: te + D,
207
+ stickyEnd: re + se
251
208
  });
252
- ae = t.target + pe, se = t.itemSize, le = t.effectiveAlign;
209
+ ue = t.target + ye, pe = t.itemSize, j = t.effectiveAlign;
253
210
  }
254
211
  if (t != null) {
255
212
  let e = r === "both", n = calculateAxisTarget({
256
213
  index: t,
257
- align: P,
214
+ align: A,
258
215
  viewSize: i,
259
216
  scrollPos: f,
260
217
  fixedSize: e ? d : u,
@@ -262,18 +219,18 @@ function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction
262
219
  query: e ? y : _,
263
220
  getSize: e ? v : h,
264
221
  stickyIndices: w,
265
- stickyStart: T + k,
266
- stickyEnd: E + j
222
+ stickyStart: T + E,
223
+ stickyEnd: ne + oe
267
224
  });
268
- ie = n.target + fe, oe = n.itemSize, ce = n.effectiveAlign;
225
+ le = n.target + F, de = n.itemSize, me = n.effectiveAlign;
269
226
  }
270
- return ie = Math.max(0, Math.min(ie, z)), ae = Math.max(0, Math.min(ae, B)), {
271
- targetX: ie,
272
- targetY: ae,
273
- itemWidth: oe,
274
- itemHeight: se,
275
- effectiveAlignX: ce,
276
- effectiveAlignY: le
227
+ return le = Math.max(0, Math.min(le, P)), ue = Math.max(0, Math.min(ue, _e)), {
228
+ targetX: le,
229
+ targetY: ue,
230
+ itemWidth: de,
231
+ itemHeight: pe,
232
+ effectiveAlignX: me,
233
+ effectiveAlignY: j
277
234
  };
278
235
  }
279
236
  function calculateRange({ 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 }) {
@@ -315,30 +272,30 @@ function calculateColumnRange({ columnCount: e, relativeScrollX: t, usableWidth:
315
272
  padEnd: Math.max(0, m - h)
316
273
  };
317
274
  }
318
- function calculateStickyItem({ 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 }) {
319
- let h = !1, g = !1, _ = {
275
+ function calculateStickyItem({ 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, nextStickyIndex: h }) {
276
+ let g = !1, _ = !1, v = {
320
277
  x: 0,
321
278
  y: 0
322
279
  };
323
280
  if (!t) return {
324
- isStickyActiveX: h,
325
- isStickyActiveY: g,
281
+ isStickyActiveX: g,
282
+ isStickyActiveY: _,
326
283
  isStickyActive: !1,
327
- stickyOffset: _
284
+ stickyOffset: v
328
285
  };
329
286
  if (n === "vertical" || n === "both") {
330
- let t = calculateAxisSticky(i, o, c, e, l, (e) => u === null ? p(e) : e * (u + d));
331
- g = t.isActive, _.y = t.offset;
287
+ let t = calculateAxisSticky(i, o, c, e, l, (e) => u === null ? p(e) : e * (u + d), h);
288
+ _ = t.isActive, v.y = t.offset;
332
289
  }
333
290
  if (n === "horizontal") {
334
- let t = calculateAxisSticky(r, a, s, e, l, (e) => u === null ? m(e) : e * (u + f));
335
- t.isActive && (h = !0, _.x = t.offset);
291
+ let t = calculateAxisSticky(r, a, s, e, l, (e) => u === null ? m(e) : e * (u + f), h);
292
+ t.isActive && (g = !0, v.x = t.offset);
336
293
  }
337
294
  return {
338
- isStickyActiveX: h,
339
- isStickyActiveY: g,
340
- isStickyActive: h || g,
341
- stickyOffset: _
295
+ isStickyActiveX: g,
296
+ isStickyActiveY: _,
297
+ isStickyActive: g || _,
298
+ stickyOffset: v
342
299
  };
343
300
  }
344
301
  function calculateItemPosition({ 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 }) {
@@ -358,6 +315,21 @@ function calculateItemStyle({ item: e, direction: t, itemSize: n, containerTag:
358
315
  }
359
316
  return f;
360
317
  }
318
+ function calculateSSROffsets(e, t, n, r, i, a, o, s, c) {
319
+ let l = t.start || 0, u = t.colStart || 0, d = 0, f = e === "horizontal" ? 0 : calculateOffsetAt(l, n, i, o);
320
+ return e === "horizontal" ? d = calculateOffsetAt(u, n, a, s) : e === "both" && (d = calculateOffsetAt(u, r, a, c)), {
321
+ x: d,
322
+ y: f
323
+ };
324
+ }
325
+ function calculatePrependCount(e, t) {
326
+ if (e.length === 0 || t.length <= e.length) return 0;
327
+ let n = e[0];
328
+ if (n === void 0) return 0;
329
+ let r = t.length - e.length;
330
+ for (let e = 1; e <= r; e++) if (t[e] === n) return e;
331
+ return 0;
332
+ }
361
333
  function calculateTotalSize({ direction: e, itemsLength: t, columnCount: n, fixedSize: r, fixedWidth: i, gap: a, columnGap: o, usableWidth: s, usableHeight: c, queryY: l, queryX: u, queryColumn: d }) {
362
334
  let f = e === "both", p = e === "horizontal", m = 0, h = 0;
363
335
  return f ? (m = calculateAxisSize(n, i, o, d), h = calculateAxisSize(t, r, a, l)) : p ? (m = calculateAxisSize(t, r, o, u), h = c) : (m = s, h = calculateAxisSize(t, r, a, l)), {
@@ -365,6 +337,225 @@ function calculateTotalSize({ direction: e, itemsLength: t, columnCount: n, fixe
365
337
  height: f ? Math.max(h, c) : h
366
338
  };
367
339
  }
340
+ function calculateInertiaStep(e, t, n = 16) {
341
+ let r = {
342
+ x: e.x * t,
343
+ y: e.y * t
344
+ };
345
+ return {
346
+ nextVelocity: r,
347
+ delta: {
348
+ x: r.x * n,
349
+ y: r.y * n
350
+ }
351
+ };
352
+ }
353
+ function calculateInstantaneousVelocity(e, t, n) {
354
+ return n <= 0 ? {
355
+ x: 0,
356
+ y: 0
357
+ } : {
358
+ x: (e.x - t.x) / n,
359
+ y: (e.y - t.y) / n
360
+ };
361
+ }
362
+ function resolveSnap(e, t, n, r, i, a, o, s, c, l) {
363
+ let u = e;
364
+ if (e === "auto") if (t === "start") u = "end";
365
+ else if (t === "end") u = "start";
366
+ else return null;
367
+ if (u === "start") {
368
+ let e = s(n);
369
+ if (e > a) return null;
370
+ let t = c(n) + e - i;
371
+ return {
372
+ index: Math.min(o - 1, t / e >= .5 ? n : n + 1),
373
+ align: "start"
374
+ };
375
+ }
376
+ if (u === "end") {
377
+ let e = s(r);
378
+ if (e > a) return null;
379
+ let t = i + a - c(r);
380
+ return {
381
+ index: Math.max(0, t / e >= .5 ? r : r - 1),
382
+ align: "end"
383
+ };
384
+ }
385
+ if (u === "center") {
386
+ let e = i + a / 2, t = Math.max(0, Math.min(o - 1, l(e)));
387
+ return s(t) > a ? null : {
388
+ index: t,
389
+ align: "center"
390
+ };
391
+ }
392
+ return null;
393
+ }
394
+ function calculateIndexAt(e, t, n, r) {
395
+ let i = (t || 0) + n;
396
+ return t !== null && i > 0 ? Math.floor(e / i) : r(e);
397
+ }
398
+ var FenwickTree = class {
399
+ tree;
400
+ values;
401
+ constructor(e) {
402
+ this.tree = new Float64Array(e + 1), this.values = new Float64Array(e);
403
+ }
404
+ update(e, t) {
405
+ 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;
406
+ }
407
+ query(e) {
408
+ let t = 0;
409
+ for (; e > 0;) t += this.tree[e] || 0, e -= e & -e;
410
+ return t;
411
+ }
412
+ set(e, t) {
413
+ e < 0 || e >= this.values.length || (this.values[e] = t);
414
+ }
415
+ get length() {
416
+ return this.values.length;
417
+ }
418
+ get(e) {
419
+ return this.values[e] || 0;
420
+ }
421
+ getValues() {
422
+ return this.values;
423
+ }
424
+ findLowerBound(e) {
425
+ let t = 0, n = this.tree.length, r = 1 << Math.floor(Math.log2(n - 1));
426
+ for (; r > 0;) {
427
+ let i = t + r;
428
+ if (i < n) {
429
+ let n = this.tree[i] || 0;
430
+ n <= e && (t = i, e -= n);
431
+ }
432
+ r >>= 1;
433
+ }
434
+ return t;
435
+ }
436
+ rebuild() {
437
+ this.tree.fill(0);
438
+ for (let e = 0; e < this.values.length; e++) this.tree[e + 1] = this.values[e] || 0;
439
+ for (let e = 1; e < this.tree.length; e++) {
440
+ let t = e + (e & -e);
441
+ t < this.tree.length && (this.tree[t] = this.tree[t] + this.tree[e]);
442
+ }
443
+ }
444
+ resize(e) {
445
+ if (e === this.values.length) return;
446
+ let t = new Float64Array(e);
447
+ t.set(this.values.subarray(0, Math.min(e, this.values.length))), this.values = t, this.tree = new Float64Array(e + 1), this.rebuild();
448
+ }
449
+ shift(e) {
450
+ if (e === 0) return;
451
+ let t = this.values.length, n = new Float64Array(t);
452
+ 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();
453
+ }
454
+ };
455
+ function useVirtualScrollSizes(e) {
456
+ let n = computed(() => toValue(e)), r = new FenwickTree(n.value.props.items?.length || 0), i = new FenwickTree(n.value.props.items?.length || 0), a = new FenwickTree(n.value.props.columnCount || 0), o = shallowRef(new Uint8Array()), s = shallowRef(new Uint8Array()), c = shallowRef(new Uint8Array()), l = ref(0), u = 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) => {
457
+ if (l.value, typeof t == "number" && t > 0) return t;
458
+ if (o && Array.isArray(t) && t.length > 0) {
459
+ let n = t[e % t.length];
460
+ return n != null && n > 0 ? n : r;
461
+ }
462
+ if (typeof t == "function") {
463
+ let i = n.value.props.items[e];
464
+ return o && n.value.direction !== "both" || !o ? i === void 0 ? r : t(i, e) : t(e);
465
+ }
466
+ let s = a.get(e);
467
+ return s > 0 ? s - i : r;
468
+ }, m = (e, t) => {
469
+ if (r.resize(e), i.resize(e), a.resize(t), s.value.length !== e) {
470
+ let t = new Uint8Array(e);
471
+ t.set(s.value.subarray(0, Math.min(e, s.value.length))), s.value = t;
472
+ }
473
+ if (c.value.length !== e) {
474
+ let t = new Uint8Array(e);
475
+ t.set(c.value.subarray(0, Math.min(e, c.value.length))), c.value = t;
476
+ }
477
+ if (o.value.length !== t) {
478
+ let e = new Uint8Array(t);
479
+ e.set(o.value.subarray(0, Math.min(t, o.value.length))), o.value = e;
480
+ }
481
+ }, h = (e, t, n, r, i, a, o, s, c) => {
482
+ let l = !1;
483
+ if (c) {
484
+ for (let r = 0; r < e; r++) t.get(r) !== 0 && (t.set(r, 0), n[r] = 0, l = !0);
485
+ return l;
486
+ }
487
+ for (let c = 0; c < e; c++) {
488
+ let e = t.get(c), u = n[c] === 1;
489
+ if (!o || !u && e === 0) {
490
+ let u = p(c, r, i, a, t, s) + a;
491
+ Math.abs(e - u) > .5 ? (t.set(c, u), n[c] = o ? 0 : 1, l = !0) : o || (n[c] = 1);
492
+ }
493
+ }
494
+ return l;
495
+ }, g = () => {
496
+ let e = n.value.props, t = e.items.length, l = e.columnCount || 0, u = e.gap || 0, d = e.columnGap || 0, f = e.columnWidth, p = e.itemSize, m = e.defaultColumnWidth || 100, g = e.defaultItemSize || n.value.defaultSize, _ = h(l, a, o.value, f, m, d, n.value.isDynamicColumnWidth, !0, !1), v = h(t, r, s.value, p, g, d, n.value.isDynamicItemSize, !0, n.value.direction !== "horizontal"), y = h(t, i, c.value, p, g, u, n.value.isDynamicItemSize, !1, n.value.direction === "horizontal");
497
+ _ && a.rebuild(), v && r.rebuild(), y && i.rebuild();
498
+ }, _ = (e, t, n, r, i, a, o) => {
499
+ let s = n.get(e), c = t + i, l = !1;
500
+ if (!r[e] || Math.abs(c - s) > .1) {
501
+ let t = c - s;
502
+ n.update(e, t), r[e] = 1, l = !0, e < a && s > 0 && (o.val += t);
503
+ }
504
+ return l;
505
+ }, y = (e) => {
506
+ let t = n.value.props, a = t.items, o = a.length;
507
+ m(o, t.columnCount || 0);
508
+ let p = t.restoreScrollOnPrepend ? calculatePrependCount(d, a) : 0;
509
+ if (p > 0) {
510
+ r.shift(p), i.shift(p);
511
+ let l = new Uint8Array(o), u = new Uint8Array(o);
512
+ 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;
513
+ let d = t.gap || 0, m = t.columnGap || 0, h = 0, g = 0;
514
+ for (let e = 0; e < p; e++) {
515
+ let t = f(a[e], e);
516
+ n.value.direction === "horizontal" ? h += t + m : g += t + d;
517
+ }
518
+ (h > 0 || g > 0) && e && e(h, g);
519
+ }
520
+ g(), d = [...a], u.value = !0, l.value++;
521
+ };
522
+ return {
523
+ itemSizesX: r,
524
+ itemSizesY: i,
525
+ columnSizes: a,
526
+ measuredItemsX: s,
527
+ measuredItemsY: c,
528
+ measuredColumns: o,
529
+ treeUpdateFlag: l,
530
+ sizesInitialized: u,
531
+ getItemBaseSize: f,
532
+ getSizeAt: p,
533
+ initializeSizes: y,
534
+ updateItemSizes: (e, t, u, d, f, p) => {
535
+ let m = !1, h = { val: 0 }, g = { val: 0 }, v = n.value.props, y = v.gap || 0, b = v.columnGap || 0, x = t(n.value.direction === "horizontal" ? d : f), S = u(d), C = n.value.direction === "horizontal", w = n.value.direction === "both", T = /* @__PURE__ */ new Set(), te = /* @__PURE__ */ new Set(), ne = (e, t) => {
536
+ e >= 0 && e < (v.columnCount || 0) && !te.has(e) && (te.add(e), _(e, t, a, o.value, b, S, h) && (m = !0));
537
+ };
538
+ for (let { index: t, inlineSize: a, blockSize: o, element: l } of e) {
539
+ if (a <= 0 && o <= 0) continue;
540
+ let e = n.value.isDynamicItemSize || typeof v.itemSize == "function";
541
+ t >= 0 && !T.has(t) && e && o > 0 && (T.add(t), C && a > 0 && _(t, a, r, s.value, b, x, h) && (m = !0), C || _(t, o, i, c.value, y, x, g) && (m = !0));
542
+ let u = n.value.isDynamicColumnWidth || typeof v.columnWidth == "function";
543
+ if (w && l && v.columnCount && u && (a > 0 || l.dataset.colIndex === void 0)) {
544
+ let e = l.dataset.colIndex;
545
+ if (e != null) ne(Number.parseInt(e, 10), a);
546
+ else {
547
+ let e = Array.from(l.querySelectorAll("[data-col-index]"));
548
+ for (let t of e) ne(Number.parseInt(t.dataset.colIndex, 10), t.getBoundingClientRect().width);
549
+ }
550
+ }
551
+ }
552
+ m && (l.value++, (h.val !== 0 || g.val !== 0) && p(h.val, g.val));
553
+ },
554
+ refresh: (e) => {
555
+ r.resize(0), i.resize(0), a.resize(0), o.value.fill(0), s.value.fill(0), c.value.fill(0), y(e);
556
+ }
557
+ };
558
+ }
368
559
  function useVirtualScroll(e) {
369
560
  let n = computed(() => toValue(e)), r = ref(0), i = ref(0), a = ref(!1), o = ref(!1), c = ref(!1), l = ref(!1), d = ref(!1), f = ref(0), p = ref(0), g = reactive({
370
561
  x: 0,
@@ -372,148 +563,89 @@ function useVirtualScroll(e) {
372
563
  }), y = reactive({
373
564
  x: 0,
374
565
  y: 0
375
- }), b, x = ref(!1), S = ref(0), C = ref(0), T = null, ee = () => {
566
+ }), b, x = ref(!1), S = ref(0), C = ref(0), w = 0, te = 0, ne = null, re = null, ae = null, E = () => {
376
567
  if (typeof window > "u") return;
377
568
  let e = n.value.container || n.value.hostRef || window, t = isElement(e) ? e : document.documentElement;
378
- (!T || !("direction" in T)) && (T = window.getComputedStyle(t));
379
- let r = T.direction === "rtl";
569
+ ae = window.getComputedStyle(t);
570
+ let r = ae.direction === "rtl";
380
571
  d.value !== r && (d.value = r);
381
- }, E = new FenwickTree(n.value.items?.length || 0), D = new FenwickTree(n.value.items?.length || 0), O = new FenwickTree(n.value.columnCount || 0), k = ref(0), A = new Uint8Array(), j = new Uint8Array(), N = new Uint8Array(), P = ref(null), le = ref(!1), I = [], L = computed(() => [
572
+ }, D = computed(() => [
382
573
  "vertical",
383
574
  "horizontal",
384
575
  "both"
385
- ].includes(n.value.direction) ? n.value.direction : "vertical"), R = computed(() => n.value.itemSize === void 0 || n.value.itemSize === null || n.value.itemSize === 0), de = computed(() => n.value.columnWidth === void 0 || n.value.columnWidth === null || n.value.columnWidth === 0), z = computed(() => typeof n.value.itemSize == "number" && n.value.itemSize > 0 ? n.value.itemSize : null), B = computed(() => typeof n.value.columnWidth == "number" && n.value.columnWidth > 0 ? n.value.columnWidth : null), ve = computed(() => n.value.defaultItemSize || z.value || 40), be = computed(() => [...n.value.stickyIndices || []].sort((e, t) => e - t)), xe = computed(() => new Set(be.value)), Se = computed(() => getPaddingX(n.value.scrollPaddingStart, n.value.direction)), Ce = computed(() => getPaddingX(n.value.scrollPaddingEnd, n.value.direction)), we = computed(() => getPaddingY(n.value.scrollPaddingStart, n.value.direction)), Te = computed(() => getPaddingY(n.value.scrollPaddingEnd, n.value.direction)), H = computed(() => getPaddingX(n.value.stickyStart, n.value.direction)), Ee = computed(() => getPaddingX(n.value.stickyEnd, n.value.direction)), U = computed(() => getPaddingY(n.value.stickyStart, n.value.direction)), De = computed(() => getPaddingY(n.value.stickyEnd, n.value.direction)), W = computed(() => getPaddingX(n.value.flowPaddingStart, n.value.direction)), G = computed(() => getPaddingX(n.value.flowPaddingEnd, n.value.direction)), K = computed(() => getPaddingY(n.value.flowPaddingStart, n.value.direction)), Oe = computed(() => getPaddingY(n.value.flowPaddingEnd, n.value.direction)), ke = computed(() => f.value - (L.value === "vertical" ? 0 : H.value + Ee.value)), Ae = computed(() => p.value - (L.value === "horizontal" ? 0 : U.value + De.value)), je = computed(() => {
386
- if (k.value, !o.value && n.value.ssrRange && !l.value) {
387
- 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;
388
- if (L.value === "both") {
389
- if (a > 0) {
390
- let e = i || a, t = O.query(e) - O.query(r);
391
- c = Math.max(0, t - (e > r ? s : 0));
392
- }
393
- if (z.value !== null) {
394
- let n = t - e;
395
- l = Math.max(0, n * (z.value + o) - (n > 0 ? o : 0));
396
- } else {
397
- let n = D.query(t) - D.query(e);
398
- l = Math.max(0, n - (t > e ? o : 0));
399
- }
400
- } else if (L.value === "horizontal") {
401
- if (z.value !== null) {
402
- let n = t - e;
403
- c = Math.max(0, n * (z.value + s) - (n > 0 ? s : 0));
404
- } else {
405
- let n = E.query(t) - E.query(e);
406
- c = Math.max(0, n - (t > e ? s : 0));
407
- }
408
- l = Ae.value;
409
- } else if (c = ke.value, z.value !== null) {
410
- let n = t - e;
411
- l = Math.max(0, n * (z.value + o) - (n > 0 ? o : 0));
412
- } else {
413
- let n = D.query(t) - D.query(e);
414
- l = Math.max(0, n - (t > e ? o : 0));
415
- }
416
- return {
417
- width: Math.max(c, ke.value),
418
- height: Math.max(l, Ae.value)
419
- };
420
- }
421
- return calculateTotalSize({
422
- direction: L.value,
423
- itemsLength: n.value.items.length,
424
- columnCount: n.value.columnCount || 0,
425
- fixedSize: z.value,
426
- fixedWidth: B.value,
427
- gap: n.value.gap || 0,
428
- columnGap: n.value.columnGap || 0,
429
- usableWidth: ke.value,
430
- usableHeight: Ae.value,
431
- queryY: (e) => D.query(e),
432
- queryX: (e) => E.query(e),
433
- queryColumn: (e) => O.query(e)
434
- });
435
- }), Me = computed(() => isWindowLike(n.value.container)), Ne = computed(() => je.value.width + Se.value + Ce.value), Pe = computed(() => je.value.height + we.value + Te.value), q = computed(() => W.value + H.value + Ee.value + G.value + Ne.value), J = computed(() => K.value + U.value + De.value + Oe.value + Pe.value), Y = reactive({
436
- x: computed(() => Math.max(0, g.x - (W.value + H.value))),
437
- y: computed(() => Math.max(0, g.y - (K.value + U.value)))
438
- }), Fe = computed(() => Me.value ? q.value : Math.min(q.value, BROWSER_MAX_SIZE)), Ie = computed(() => Me.value ? J.value : Math.min(J.value, BROWSER_MAX_SIZE)), Le = computed(() => Me.value ? Ne.value : Math.max(0, Fe.value - (W.value + H.value + Ee.value + G.value))), Re = computed(() => Me.value ? Pe.value : Math.max(0, Ie.value - (K.value + U.value + De.value + Oe.value))), X = computed(() => {
439
- if (Me.value || q.value <= 1e7) return 1;
440
- let e = q.value - f.value, t = Fe.value - f.value;
441
- return t > 0 ? e / t : 1;
442
- }), Z = computed(() => {
443
- if (Me.value || J.value <= 1e7) return 1;
444
- let e = J.value - p.value, t = Ie.value - p.value;
445
- return t > 0 ? e / t : 1;
446
- }), ze = computed(() => {
447
- if (L.value === "vertical") return 0;
448
- let e = W.value + H.value + Se.value;
576
+ ].includes(n.value.direction) ? n.value.direction : "vertical"), oe = computed(() => n.value.itemSize === void 0 || n.value.itemSize === null || n.value.itemSize === 0), se = computed(() => n.value.columnWidth === void 0 || n.value.columnWidth === null || n.value.columnWidth === 0), O = computed(() => typeof n.value.itemSize == "number" && n.value.itemSize > 0 ? n.value.itemSize : null), k = computed(() => typeof n.value.columnWidth == "number" && n.value.columnWidth > 0 ? n.value.columnWidth : null), A = computed(() => n.value.defaultItemSize || O.value || 40), { itemSizesX: j, itemSizesY: M, columnSizes: N, measuredColumns: ge, measuredItemsY: ve, treeUpdateFlag: F, getSizeAt: ye, initializeSizes: De, updateItemSizes: ke, refresh: Ae } = useVirtualScrollSizes(computed(() => ({
577
+ props: n.value,
578
+ isDynamicItemSize: oe.value,
579
+ isDynamicColumnWidth: se.value,
580
+ defaultSize: A.value,
581
+ fixedItemSize: O.value,
582
+ direction: D.value
583
+ }))), R = ref(null), Ne = computed(() => [...n.value.stickyIndices || []].sort((e, t) => e - t)), Fe = computed(() => new Set(Ne.value)), Ie = computed(() => getPaddingX(n.value.scrollPaddingStart, n.value.direction)), Le = computed(() => getPaddingX(n.value.scrollPaddingEnd, n.value.direction)), Re = computed(() => getPaddingY(n.value.scrollPaddingStart, n.value.direction)), ze = computed(() => getPaddingY(n.value.scrollPaddingEnd, n.value.direction)), z = computed(() => getPaddingX(n.value.stickyStart, n.value.direction)), Be = computed(() => getPaddingX(n.value.stickyEnd, n.value.direction)), B = computed(() => getPaddingY(n.value.stickyStart, n.value.direction)), Ve = computed(() => getPaddingY(n.value.stickyEnd, n.value.direction)), V = computed(() => getPaddingX(n.value.flowPaddingStart, n.value.direction)), He = computed(() => getPaddingX(n.value.flowPaddingEnd, n.value.direction)), H = computed(() => getPaddingY(n.value.flowPaddingStart, n.value.direction)), Ue = computed(() => getPaddingY(n.value.flowPaddingEnd, n.value.direction)), We = computed(() => f.value - (D.value === "vertical" ? 0 : z.value + Be.value)), Ge = computed(() => p.value - (D.value === "horizontal" ? 0 : B.value + Ve.value)), Ke = computed(() => (F.value, calculateTotalSize({
584
+ direction: D.value,
585
+ itemsLength: n.value.items.length,
586
+ columnCount: n.value.columnCount || 0,
587
+ fixedSize: O.value,
588
+ fixedWidth: k.value,
589
+ gap: n.value.gap || 0,
590
+ columnGap: n.value.columnGap || 0,
591
+ usableWidth: We.value,
592
+ usableHeight: Ge.value,
593
+ queryY: (e) => M.query(e),
594
+ queryX: (e) => j.query(e),
595
+ queryColumn: (e) => N.query(e)
596
+ }))), qe = computed(() => isWindowLike(n.value.container)), Je = computed(() => Ke.value.width + Ie.value + Le.value), Ye = computed(() => Ke.value.height + Re.value + ze.value), U = computed(() => V.value + z.value + Be.value + He.value + Je.value), W = computed(() => H.value + B.value + Ve.value + Ue.value + Ye.value), G = reactive({
597
+ x: computed(() => Math.max(0, g.x - (V.value + z.value))),
598
+ y: computed(() => Math.max(0, g.y - (H.value + B.value)))
599
+ }), Xe = computed(() => calculateRenderedSize(qe.value, U.value)), Ze = computed(() => calculateRenderedSize(qe.value, W.value)), Qe = computed(() => calculateRenderedSize(qe.value, Je.value)), $e = computed(() => calculateRenderedSize(qe.value, Ye.value)), K = computed(() => calculateScale(qe.value, U.value, f.value)), q = computed(() => calculateScale(qe.value, W.value, p.value)), J = computed(() => {
600
+ if (D.value === "vertical") return 0;
601
+ let e = V.value + z.value + Ie.value;
449
602
  return S.value - e;
450
- }), Be = computed(() => {
451
- if (L.value === "horizontal") return 0;
452
- let e = K.value + U.value + we.value;
603
+ }), Y = computed(() => {
604
+ if (D.value === "horizontal") return 0;
605
+ let e = H.value + B.value + Re.value;
453
606
  return C.value - e;
454
- }), Ve = (e) => {
455
- k.value;
456
- let t = n.value.columnGap || 0, r = n.value.columnWidth;
457
- if (typeof r == "number" && r > 0) return r;
458
- if (Array.isArray(r) && r.length > 0) {
459
- let t = r[e % r.length];
460
- return t != null && t > 0 ? t : n.value.defaultColumnWidth || 100;
461
- }
462
- if (typeof r == "function") return r(e);
463
- let i = O.get(e);
464
- return i > 0 ? i - t : n.value.defaultColumnWidth || 100;
465
- }, He = (e) => {
466
- if (k.value, L.value === "horizontal") return Ae.value;
467
- let t = n.value.gap || 0, r = n.value.itemSize;
468
- if (typeof r == "number" && r > 0) return r;
469
- if (typeof r == "function") {
470
- let t = n.value.items[e];
471
- return t === void 0 ? n.value.defaultItemSize || 40 : r(t, e);
472
- }
473
- let i = D.get(e);
474
- return i > 0 ? i - t : n.value.defaultItemSize || 40;
475
- };
476
- function Ue(e, t, a) {
607
+ }), X = (e) => D.value === "both" ? ye(e, n.value.columnWidth, n.value.defaultColumnWidth || 100, n.value.columnGap || 0, N, !0) : ye(e, n.value.itemSize, n.value.defaultItemSize || 40, n.value.columnGap || 0, j, !0), et = (e) => D.value === "horizontal" ? Ge.value : ye(e, n.value.itemSize, n.value.defaultItemSize || 40, n.value.gap || 0, M, !1);
608
+ function tt(e, t, a) {
477
609
  let o = typeof a == "object" && a && "isCorrection" in a ? a.isCorrection : !1, s = n.value.container || window, { targetX: c, targetY: l, effectiveAlignX: u, effectiveAlignY: m } = calculateScrollTarget({
478
610
  rowIndex: e,
479
611
  colIndex: t,
480
612
  options: a,
481
- direction: L.value,
613
+ direction: D.value,
482
614
  viewportWidth: f.value,
483
615
  viewportHeight: p.value,
484
- totalWidth: q.value,
485
- totalHeight: J.value,
616
+ totalWidth: U.value,
617
+ totalHeight: W.value,
486
618
  gap: n.value.gap || 0,
487
619
  columnGap: n.value.columnGap || 0,
488
- fixedSize: z.value,
489
- fixedWidth: B.value,
490
- relativeScrollX: ze.value,
491
- relativeScrollY: Be.value,
492
- getItemSizeY: (e) => D.get(e),
493
- getItemSizeX: (e) => E.get(e),
494
- getItemQueryY: (e) => D.query(e),
495
- getItemQueryX: (e) => E.query(e),
496
- getColumnSize: (e) => O.get(e),
497
- getColumnQuery: (e) => O.query(e),
498
- scaleX: X.value,
499
- scaleY: Z.value,
500
- hostOffsetX: Y.x,
501
- hostOffsetY: Y.y,
502
- stickyIndices: be.value,
503
- stickyStartX: H.value,
504
- stickyStartY: U.value,
505
- stickyEndX: Ee.value,
506
- stickyEndY: De.value,
507
- flowPaddingStartX: W.value,
508
- flowPaddingStartY: K.value,
509
- paddingStartX: Se.value,
510
- paddingStartY: we.value,
511
- paddingEndX: Ce.value,
512
- paddingEndY: Te.value
620
+ fixedSize: O.value,
621
+ fixedWidth: k.value,
622
+ relativeScrollX: J.value,
623
+ relativeScrollY: Y.value,
624
+ getItemSizeY: (e) => M.get(e),
625
+ getItemSizeX: (e) => j.get(e),
626
+ getItemQueryY: (e) => M.query(e),
627
+ getItemQueryX: (e) => j.query(e),
628
+ getColumnSize: (e) => N.get(e),
629
+ getColumnQuery: (e) => N.query(e),
630
+ scaleX: K.value,
631
+ scaleY: q.value,
632
+ hostOffsetX: G.x,
633
+ hostOffsetY: G.y,
634
+ stickyIndices: Ne.value,
635
+ stickyStartX: z.value,
636
+ stickyStartY: B.value,
637
+ stickyEndX: Be.value,
638
+ stickyEndY: Ve.value,
639
+ flowPaddingStartX: V.value,
640
+ flowPaddingStartY: H.value,
641
+ paddingStartX: Ie.value,
642
+ paddingStartY: Re.value,
643
+ paddingEndX: Le.value,
644
+ paddingEndY: ze.value
513
645
  });
514
646
  if (!o) {
515
647
  let n = isScrollToIndexOptions(a) ? a.behavior : void 0;
516
- P.value = {
648
+ R.value = {
517
649
  rowIndex: e,
518
650
  colIndex: t,
519
651
  options: {
@@ -525,97 +657,31 @@ function useVirtualScroll(e) {
525
657
  }
526
658
  };
527
659
  }
528
- let h = virtualToDisplay(c, Y.x, X.value), g = virtualToDisplay(l, Y.y, Z.value), _ = d.value ? -h : h, v = g, y;
660
+ let h = virtualToDisplay(c, G.x, K.value), g = virtualToDisplay(l, G.y, q.value), _ = d.value ? -h : h, v = g, y;
529
661
  isScrollToIndexOptions(a) && (y = a.behavior);
530
662
  let b = o ? "auto" : y || "smooth";
531
663
  x.value = !0;
532
664
  let w = { behavior: b };
533
- if (t != null && (w.left = d.value ? _ : Math.max(0, _)), e != null && (w.top = Math.max(0, v)), scrollTo(s, w), (b === "auto" || b === void 0) && (t != null && (r.value = d.value ? _ : Math.max(0, _), S.value = c), e != null && (i.value = Math.max(0, v), C.value = l), P.value)) {
534
- let e = P.value.options;
535
- isScrollToIndexOptions(e) ? e.behavior = "auto" : P.value.options = {
536
- align: e,
537
- behavior: "auto"
538
- };
665
+ if (t != null && (w.left = d.value ? _ : Math.max(0, _)), e != null && (w.top = Math.max(0, v)), scrollTo(s, w), (b === "auto" || b === void 0) && (t != null && (r.value = d.value ? _ : Math.max(0, _), S.value = c), e != null && (i.value = Math.max(0, v), C.value = l), R.value)) {
666
+ let e = R.value.options;
667
+ isScrollToIndexOptions(e) && (e.behavior = "auto");
539
668
  }
540
669
  }
541
- let We = (e, t, a) => {
670
+ let nt = (e, t, a) => {
542
671
  let o = n.value.container || window;
543
- x.value = !0, P.value = null;
544
- let s = e == null ? null : Math.max(0, Math.min(e, q.value - f.value)), c = t == null ? null : Math.max(0, Math.min(t, J.value - p.value));
672
+ x.value = !0, R.value = null;
673
+ let s = e == null ? null : Math.max(0, Math.min(e, U.value - f.value)), c = t == null ? null : Math.max(0, Math.min(t, W.value - p.value));
545
674
  s !== null && (S.value = s), c !== null && (C.value = c);
546
- let l = typeof window < "u" && o === window ? window.scrollX : o.scrollLeft, u = typeof window < "u" && o === window ? window.scrollY : o.scrollTop, m = s === null ? null : virtualToDisplay(s, Y.x, X.value), h = c === null ? null : virtualToDisplay(c, Y.y, Z.value), g = m === null ? l : d.value ? -m : m, _ = h === null ? u : h, v = { behavior: a?.behavior || "auto" };
675
+ let l = typeof window < "u" && o === window ? window.scrollX : o.scrollLeft, u = typeof window < "u" && o === window ? window.scrollY : o.scrollTop, m = s === null ? null : virtualToDisplay(s, G.x, K.value), h = c === null ? null : virtualToDisplay(c, G.y, q.value), g = m === null ? l : d.value ? -m : m, _ = h === null ? u : h, v = { behavior: a?.behavior || "auto" };
547
676
  e != null && (v.left = g), t != null && (v.top = _), scrollTo(o, v), (a?.behavior === "auto" || a?.behavior === void 0) && (e != null && (r.value = g), t != null && (i.value = _));
548
- }, Ge = (e, t) => {
549
- if (E.resize(e), D.resize(e), O.resize(t), j.length !== e) {
550
- let t = new Uint8Array(e);
551
- t.set(j.subarray(0, Math.min(e, j.length))), j = t;
552
- }
553
- if (N.length !== e) {
554
- let t = new Uint8Array(e);
555
- t.set(N.subarray(0, Math.min(e, N.length))), N = t;
556
- }
557
- if (A.length !== t) {
558
- let e = new Uint8Array(t);
559
- e.set(A.subarray(0, Math.min(t, A.length))), A = e;
560
- }
561
- }, Q = () => {
562
- 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;
563
- if (t > 0) for (let e = 0; e < t; e++) {
564
- let t = O.get(e), r = A[e] === 1;
565
- if (!de.value || !r && t === 0) {
566
- let r = 0;
567
- 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;
568
- let s = r + i;
569
- Math.abs(t - s) > .5 ? (O.set(e, s), A[e] = de.value ? 0 : 1, o = !0) : de.value || (A[e] = 1);
570
- }
571
- }
572
- for (let t = 0; t < e; t++) {
573
- let e = n.value.items[t], a = E.get(t), o = D.get(t), c = j[t] === 1, l = N[t] === 1;
574
- if (L.value === "horizontal") {
575
- if (!R.value || !c && a === 0) {
576
- let r = (typeof n.value.itemSize == "function" ? n.value.itemSize(e, t) : ve.value) + i;
577
- Math.abs(a - r) > .5 ? (E.set(t, r), j[t] = R.value ? 0 : 1, s = !0) : R.value || (j[t] = 1);
578
- }
579
- } else a !== 0 && (E.set(t, 0), j[t] = 0, s = !0);
580
- if (L.value !== "horizontal") {
581
- if (!R.value || !l && o === 0) {
582
- let i = (typeof n.value.itemSize == "function" ? n.value.itemSize(e, t) : ve.value) + r;
583
- Math.abs(o - i) > .5 ? (D.set(t, i), N[t] = R.value ? 0 : 1, s = !0) : R.value || (N[t] = 1);
584
- }
585
- } else o !== 0 && (D.set(t, 0), N[t] = 0, s = !0);
586
- }
587
- o && O.rebuild(), s && (E.rebuild(), D.rebuild());
588
- }, Ke = () => {
589
- let e = n.value.items, t = e.length;
590
- Ge(t, n.value.columnCount || 0);
591
- let r = 0;
592
- if (n.value.restoreScrollOnPrepend && I.length > 0 && t > I.length) {
593
- let n = I[0];
594
- if (n !== void 0) {
595
- for (let i = 1; i <= t - I.length; i++) if (e[i] === n) {
596
- r = i;
597
- break;
598
- }
599
- }
600
- }
601
- if (r > 0) {
602
- E.shift(r), D.shift(r), P.value && P.value.rowIndex !== null && P.value.rowIndex !== void 0 && (P.value.rowIndex += r);
603
- let i = new Uint8Array(t), a = new Uint8Array(t);
604
- i.set(j.subarray(0, Math.min(t - r, j.length)), r), a.set(N.subarray(0, Math.min(t - r, N.length)), r), j = i, N = a;
605
- let o = n.value.gap || 0, s = n.value.columnGap || 0, c = 0, l = 0;
606
- for (let t = 0; t < r; t++) {
607
- let r = typeof n.value.itemSize == "function" ? n.value.itemSize(e[t], t) : ve.value;
608
- L.value === "horizontal" ? c += r + s : l += r + o;
609
- }
610
- (c > 0 || l > 0) && nextTick(() => {
611
- We(c > 0 ? ze.value + c : null, l > 0 ? Be.value + l : null, {
612
- behavior: "auto",
613
- isCorrection: !0
614
- });
677
+ }, rt = (e, t) => {
678
+ nextTick(() => {
679
+ nt(e > 0 ? J.value + e : null, t > 0 ? Y.value + t : null, {
680
+ behavior: "auto",
681
+ isCorrection: !0
615
682
  });
616
- }
617
- Q(), I = [...e], le.value = !0, k.value++;
618
- }, qe = () => {
683
+ });
684
+ }, it = () => De(rt), Z = () => {
619
685
  if (typeof window > "u") return;
620
686
  let e = n.value.container || window, t = (t) => {
621
687
  let n = t.getBoundingClientRect();
@@ -659,61 +725,56 @@ function useVirtualScroll(e) {
659
725
  () => n.value.columnGap,
660
726
  () => n.value.defaultItemSize,
661
727
  () => n.value.defaultColumnWidth
662
- ], Ke, { immediate: !0 }), watch(() => [n.value.container, n.value.hostElement], () => {
663
- qe();
728
+ ], it, { immediate: !0 }), watch(() => [n.value.container, n.value.hostElement], () => {
729
+ Z();
664
730
  }), watch(d, (e, t) => {
665
731
  if (t === void 0 || e === t || !l.value) return;
666
- if (L.value === "vertical") {
667
- qe();
732
+ if (D.value === "vertical") {
733
+ Z();
668
734
  return;
669
735
  }
670
- let n = displayToVirtual(t ? Math.abs(r.value) : r.value, g.x, X.value);
671
- qe(), We(n, null, { behavior: "auto" });
672
- }, { flush: "sync" }), watch([X, Z], () => {
673
- !l.value || a.value || x.value || We(S.value, C.value, { behavior: "auto" });
736
+ let n = displayToVirtual(t ? Math.abs(r.value) : r.value, g.x, K.value);
737
+ Z(), nt(n, null, { behavior: "auto" });
738
+ }, { flush: "sync" }), watch([K, q], () => {
739
+ !l.value || a.value || x.value || nt(S.value, C.value, { behavior: "auto" });
674
740
  }), watch([() => n.value.items.length, () => n.value.columnCount], ([e, t], [n, r]) => {
675
741
  nextTick(() => {
676
- let i = Math.max(0, q.value - f.value), a = Math.max(0, J.value - p.value);
677
- S.value > i || C.value > a ? We(Math.min(S.value, i), Math.min(C.value, a), { behavior: "auto" }) : (e !== n && Z.value !== 1 || t !== r && X.value !== 1) && We(S.value, C.value, { behavior: "auto" }), qe();
742
+ let i = Math.max(0, U.value - f.value), a = Math.max(0, W.value - p.value);
743
+ S.value > i || C.value > a ? nt(Math.min(S.value, i), Math.min(C.value, a), { behavior: "auto" }) : (e !== n && q.value !== 1 || t !== r && K.value !== 1) && nt(S.value, C.value, { behavior: "auto" }), Z();
678
744
  });
679
745
  });
680
- let Je = (e) => {
681
- let t = n.value.gap || 0, r = n.value.columnGap || 0, i = z.value;
682
- if (L.value === "horizontal") {
683
- let t = (i || 0) + r;
684
- return i !== null && t > 0 ? Math.floor(e / t) : E.findLowerBound(e);
685
- }
686
- let a = (i || 0) + t;
687
- return i !== null && a > 0 ? Math.floor(e / a) : D.findLowerBound(e);
688
- }, Ye = (e) => L.value === "both" ? O.findLowerBound(e) : L.value === "horizontal" ? Je(e) : 0, Xe = computed(() => {
689
- if (k.value, (!o.value || c.value) && n.value.ssrRange) return {
746
+ let Q = (e) => {
747
+ let t = D.value === "horizontal";
748
+ return calculateIndexAt(e, O.value, t ? n.value.columnGap || 0 : n.value.gap || 0, (e) => t ? j.findLowerBound(e) : M.findLowerBound(e));
749
+ }, at = (e) => D.value === "both" ? calculateIndexAt(e, k.value, n.value.columnGap || 0, (e) => N.findLowerBound(e)) : D.value === "horizontal" ? Q(e) : 0, ot = computed(() => {
750
+ if (F.value, (!o.value || c.value) && n.value.ssrRange) return {
690
751
  start: n.value.ssrRange.start,
691
752
  end: n.value.ssrRange.end
692
753
  };
693
754
  let e = n.value.ssrRange && !a.value ? 0 : n.value.bufferBefore ?? 5, t = n.value.bufferAfter ?? 5;
694
755
  return calculateRange({
695
- direction: L.value,
696
- relativeScrollX: ze.value,
697
- relativeScrollY: Be.value,
698
- usableWidth: ke.value,
699
- usableHeight: Ae.value,
756
+ direction: D.value,
757
+ relativeScrollX: J.value,
758
+ relativeScrollY: Y.value,
759
+ usableWidth: We.value,
760
+ usableHeight: Ge.value,
700
761
  itemsLength: n.value.items.length,
701
762
  bufferBefore: e,
702
763
  bufferAfter: t,
703
764
  gap: n.value.gap || 0,
704
765
  columnGap: n.value.columnGap || 0,
705
- fixedSize: z.value,
706
- findLowerBoundY: (e) => D.findLowerBound(e),
707
- findLowerBoundX: (e) => E.findLowerBound(e),
708
- queryY: (e) => D.query(e),
709
- queryX: (e) => E.query(e)
766
+ fixedSize: O.value,
767
+ findLowerBoundY: (e) => M.findLowerBound(e),
768
+ findLowerBoundX: (e) => j.findLowerBound(e),
769
+ queryY: (e) => M.query(e),
770
+ queryX: (e) => j.query(e)
710
771
  });
711
- }), Ze = computed(() => {
712
- k.value;
713
- let e = ze.value + H.value, t = Be.value + U.value;
714
- return Je(L.value === "horizontal" ? e : t);
715
- }), Qe = computed(() => {
716
- k.value;
772
+ }), st = computed(() => {
773
+ F.value;
774
+ let e = J.value + z.value, t = Y.value + B.value;
775
+ return Q(D.value === "horizontal" ? e : t);
776
+ }), ct = computed(() => {
777
+ F.value;
717
778
  let e = n.value.columnCount || 0;
718
779
  if (!e) return {
719
780
  start: 0,
@@ -722,98 +783,109 @@ function useVirtualScroll(e) {
722
783
  padEnd: 0
723
784
  };
724
785
  if ((!o.value || c.value) && n.value.ssrRange) {
725
- 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 = B.value === null ? O.query(i) : i * (B.value + o), c = B.value === null ? Math.max(0, O.query(e) - o) : e * (B.value + o) - o, l = B.value === null ? O.query(a) - (a > 0 ? o : 0) : a * (B.value + o) - (a > 0 ? o : 0);
726
- return {
727
- start: i,
728
- end: a,
729
- padStart: s,
730
- padEnd: Math.max(0, c - l)
731
- };
786
+ let { colStart: t = 0, colEnd: r = 0 } = n.value.ssrRange, i = Math.max(0, t), a = Math.min(e, r || e);
787
+ return calculateColumnRange({
788
+ columnCount: e,
789
+ relativeScrollX: calculateOffsetAt(i, k.value, n.value.columnGap || 0, (e) => N.query(e)),
790
+ usableWidth: calculateRangeSize(i, a, k.value, n.value.columnGap || 0, (e) => N.query(e)),
791
+ colBuffer: 0,
792
+ fixedWidth: k.value,
793
+ columnGap: n.value.columnGap || 0,
794
+ findLowerBound: (e) => N.findLowerBound(e),
795
+ query: (e) => N.query(e),
796
+ totalColsQuery: () => N.query(e)
797
+ });
732
798
  }
733
799
  let t = n.value.ssrRange && !a.value ? 0 : 2;
734
800
  return calculateColumnRange({
735
801
  columnCount: e,
736
- relativeScrollX: ze.value,
737
- usableWidth: ke.value,
802
+ relativeScrollX: J.value,
803
+ usableWidth: We.value,
738
804
  colBuffer: t,
739
- fixedWidth: B.value,
805
+ fixedWidth: k.value,
740
806
  columnGap: n.value.columnGap || 0,
741
- findLowerBound: (e) => O.findLowerBound(e),
742
- query: (e) => O.query(e),
743
- totalColsQuery: () => O.query(e)
807
+ findLowerBound: (e) => N.findLowerBound(e),
808
+ query: (e) => N.query(e),
809
+ totalColsQuery: () => N.query(e)
744
810
  });
745
- }), $e = [], et = computed(() => {
746
- k.value;
747
- let { start: e, end: t } = Xe.value, r = [], i = z.value, a = n.value.gap || 0, s = n.value.columnGap || 0, c = be.value, l = xe.value, u = [];
811
+ }), lt = [], ut = computed(() => {
812
+ F.value;
813
+ let { start: e, end: t } = ot.value, r = [], i = Ne.value, a = Fe.value, s = [];
748
814
  if (o.value || !n.value.ssrRange) {
749
- let t = Ze.value, n = findPrevStickyIndex(c, t);
750
- n !== void 0 && n < e && u.push(n);
815
+ let t = st.value, n = findPrevStickyIndex(i, t);
816
+ n !== void 0 && n < e && s.push(n);
751
817
  }
752
- for (let n = e; n < t; n++) u.push(n);
753
- let d = n.value.ssrRange?.start || 0, f = n.value.ssrRange?.colStart || 0, p = 0, m = 0;
754
- !o.value && n.value.ssrRange && (m = L.value === "horizontal" ? 0 : i === null ? D.query(d) : d * (i + a), L.value === "horizontal" ? p = i === null ? E.query(f) : f * (i + s) : L.value === "both" && (p = O.query(f)));
755
- let h = new Map($e.map((e) => [e.index, e])), g = -1, _ = 0, v = -1, y = 0, b = (e) => e === g + 1 ? (_ += E.get(g), g = e, _) : (_ = E.query(e), g = e, _), x = (e) => e === v + 1 ? (y += D.get(v), v = e, y) : (y = D.query(e), v = e, y), w = W.value + H.value + Se.value, T = K.value + U.value + we.value, ee = W.value + H.value, te = K.value + U.value, A = Qe.value;
756
- for (let e of u) {
818
+ for (let n = e; n < t; n++) s.push(n);
819
+ let { x: c, y: l } = !o.value && n.value.ssrRange ? calculateSSROffsets(D.value, n.value.ssrRange, O.value, k.value, n.value.gap || 0, n.value.columnGap || 0, (e) => M.query(e), (e) => j.query(e), (e) => N.query(e)) : {
820
+ x: 0,
821
+ y: 0
822
+ }, u = /* @__PURE__ */ new Map();
823
+ for (let e of lt) u.set(e.index, e);
824
+ let d = -1, f = 0, p = -1, m = 0, h = (e) => e === d + 1 ? (f += j.get(d), d = e, f) : (f = j.query(e), d = e, f), g = (e) => e === p + 1 ? (m += M.get(p), p = e, m) : (m = M.query(e), p = e, m), _ = V.value + z.value + Ie.value, v = H.value + B.value + Re.value, y = V.value + z.value, b = H.value + B.value, x = ct.value, w = 0;
825
+ for (let e of s) {
757
826
  let t = n.value.items[e];
758
827
  if (t === void 0) continue;
759
- let { x: i, y: a, width: s, height: u } = calculateItemPosition({
828
+ let { x: s, y: d, width: f, height: p } = calculateItemPosition({
760
829
  index: e,
761
- direction: L.value,
762
- fixedSize: z.value,
830
+ direction: D.value,
831
+ fixedSize: O.value,
763
832
  gap: n.value.gap || 0,
764
833
  columnGap: n.value.columnGap || 0,
765
- usableWidth: ke.value,
766
- usableHeight: Ae.value,
767
- totalWidth: je.value.width,
768
- queryY: x,
769
- queryX: b,
770
- getSizeY: (e) => D.get(e),
771
- getSizeX: (e) => E.get(e),
772
- columnRange: A
773
- }), d = l.has(e), f = i, g = a, { isStickyActive: _, isStickyActiveX: v, isStickyActiveY: y, stickyOffset: O } = calculateStickyItem({
834
+ usableWidth: We.value,
835
+ usableHeight: Ge.value,
836
+ totalWidth: Ke.value.width,
837
+ queryY: g,
838
+ queryX: h,
839
+ getSizeY: (e) => M.get(e),
840
+ getSizeX: (e) => j.get(e),
841
+ columnRange: x
842
+ }), m = a.has(e), T = s, te = d;
843
+ for (; w < i.length && i[w] <= e;) w++;
844
+ let ne = w < i.length ? i[w] : void 0, { isStickyActive: re, isStickyActiveX: ie, isStickyActiveY: ae, stickyOffset: E } = calculateStickyItem({
774
845
  index: e,
775
- isSticky: d,
776
- direction: L.value,
777
- relativeScrollX: ze.value,
778
- relativeScrollY: Be.value,
779
- originalX: f,
780
- originalY: g,
781
- width: s,
782
- height: u,
783
- stickyIndices: c,
784
- fixedSize: z.value,
785
- fixedWidth: B.value,
846
+ isSticky: m,
847
+ direction: D.value,
848
+ relativeScrollX: J.value,
849
+ relativeScrollY: Y.value,
850
+ originalX: T,
851
+ originalY: te,
852
+ width: f,
853
+ height: p,
854
+ stickyIndices: i,
855
+ fixedSize: O.value,
856
+ fixedWidth: k.value,
786
857
  gap: n.value.gap || 0,
787
858
  columnGap: n.value.columnGap || 0,
788
- getItemQueryY: x,
789
- getItemQueryX: b
790
- }), k = o.value ? S.value / X.value + (i + w - S.value) - ee : i - p, j = o.value ? C.value / Z.value + (a + T - C.value) - te : a - m, M = h.get(e);
791
- M && M.item === t && M.offset.x === k && M.offset.y === j && M.size.width === s && M.size.height === u && M.isSticky === d && M.isStickyActive === _ && M.isStickyActiveX === v && M.isStickyActiveY === y && M.stickyOffset.x === O.x && M.stickyOffset.y === O.y ? r.push(M) : r.push({
859
+ getItemQueryY: (e) => M.query(e),
860
+ getItemQueryX: (e) => j.query(e),
861
+ nextStickyIndex: ne
862
+ }), oe = o.value ? S.value / K.value + (s + _ - S.value) - y : s - c, se = o.value ? C.value / q.value + (d + v - C.value) - b : d - l, A = u.get(e);
863
+ A && A.item === t && A.offset.x === oe && A.offset.y === se && A.size.width === f && A.size.height === p && A.isSticky === m && A.isStickyActive === re && A.isStickyActiveX === ie && A.isStickyActiveY === ae && A.stickyOffset.x === E.x && A.stickyOffset.y === E.y ? r.push(A) : r.push({
792
864
  item: t,
793
865
  index: e,
794
866
  offset: {
795
- x: k,
796
- y: j
867
+ x: oe,
868
+ y: se
797
869
  },
798
870
  size: {
799
- width: s,
800
- height: u
871
+ width: f,
872
+ height: p
801
873
  },
802
- originalX: f,
803
- originalY: g,
804
- isSticky: d,
805
- isStickyActive: _,
806
- isStickyActiveX: v,
807
- isStickyActiveY: y,
808
- stickyOffset: O
874
+ originalX: T,
875
+ originalY: te,
876
+ isSticky: m,
877
+ isStickyActive: re,
878
+ isStickyActiveX: ie,
879
+ isStickyActiveY: ae,
880
+ stickyOffset: E
809
881
  });
810
882
  }
811
- return $e = r, r;
812
- }), tt = computed(() => {
813
- k.value;
814
- let e = ze.value + H.value, t = Be.value + U.value, n = ze.value + (f.value - Ee.value) - 1, o = Be.value + (p.value - De.value) - 1, s = Ye(e), c = Je(t), l = Je(L.value === "horizontal" ? n : o), u = Ye(n);
883
+ return lt = r, r;
884
+ }), dt = computed(() => {
885
+ F.value;
886
+ let e = J.value + z.value, t = Y.value + B.value, n = J.value + (f.value - Be.value) - 1, o = Y.value + (p.value - Ve.value) - 1, s = at(e), c = Q(t), l = Q(D.value === "horizontal" ? n : o), u = at(n);
815
887
  return {
816
- items: et.value,
888
+ items: ut.value,
817
889
  currentIndex: c,
818
890
  currentColIndex: s,
819
891
  currentEndIndex: l,
@@ -835,115 +907,96 @@ function useVirtualScroll(e) {
835
907
  height: p.value
836
908
  },
837
909
  totalSize: {
838
- width: q.value,
839
- height: J.value
910
+ width: U.value,
911
+ height: W.value
840
912
  },
841
913
  isScrolling: a.value,
842
914
  isProgrammaticScroll: x.value,
843
- range: Xe.value,
844
- columnRange: Qe.value
915
+ range: ot.value,
916
+ columnRange: ct.value
845
917
  };
846
- }), nt = () => {
847
- x.value = !1, P.value = null;
848
- }, rt = (e) => {
918
+ }), ft = () => {
919
+ x.value = !1, R.value = null;
920
+ }, pt = (e) => {
849
921
  let t = e.target;
850
- typeof window > "u" || (ee(), t === window || t === document ? (r.value = window.scrollX, i.value = window.scrollY, f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight) : isScrollableElement(t) && (r.value = t.scrollLeft, i.value = t.scrollTop, f.value = t.clientWidth, p.value = t.clientHeight), S.value = displayToVirtual(d.value ? Math.abs(r.value) : r.value, Y.x, X.value), C.value = displayToVirtual(i.value, Y.y, Z.value), a.value ||= (x.value || (P.value = null), !0), clearTimeout(b), b = setTimeout(() => {
851
- a.value = !1, x.value = !1;
852
- }, 250));
853
- }, it = (e) => {
854
- let t = !1, r = 0, i = 0, a = n.value.gap || 0, o = n.value.columnGap || 0, s = ze.value, c = Be.value, l = Je(L.value === "horizontal" ? s : c), u = Ye(s), d = L.value === "horizontal", f = L.value === "both", p = /* @__PURE__ */ new Set(), m = /* @__PURE__ */ new Set(), h = (e, i) => {
855
- if (e >= 0 && e < (n.value.columnCount || 0) && !m.has(e)) {
856
- m.add(e);
857
- let n = O.get(e), a = i + o;
858
- if (!A[e] || Math.abs(n - a) > .1) {
859
- let i = a - n;
860
- Math.abs(i) > .1 && (O.update(e, i), t = !0, e < u && (r += i)), A[e] = 1;
861
- }
862
- }
863
- };
864
- for (let { index: s, inlineSize: c, blockSize: u, element: m } of e) {
865
- if (c <= 0 && u <= 0) continue;
866
- let e = R.value || typeof n.value.itemSize == "function";
867
- if (s >= 0 && !p.has(s) && e && u > 0) {
868
- if (p.add(s), d && c > 0) {
869
- let e = E.get(s), n = c + o;
870
- if (!j[s] || Math.abs(n - e) > .1) {
871
- let i = n - e;
872
- E.update(s, i), j[s] = 1, t = !0, s < l && (r += i);
873
- }
874
- }
875
- if (!d) {
876
- let e = D.get(s), n = u + a;
877
- if (!N[s] || Math.abs(n - e) > .1) {
878
- let r = n - e;
879
- D.update(s, r), N[s] = 1, t = !0, s < l && (i += r);
880
- }
922
+ if (typeof window > "u") return;
923
+ E(), t === window || t === document ? (r.value = window.scrollX, i.value = window.scrollY, f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight) : isScrollableElement(t) && (r.value = t.scrollLeft, i.value = t.scrollTop, f.value = t.clientWidth, p.value = t.clientHeight);
924
+ let o = displayToVirtual(d.value ? Math.abs(r.value) : r.value, G.x, K.value), s = displayToVirtual(i.value, G.y, q.value);
925
+ Math.abs(o - w) > .5 && (ne = o > w ? "end" : "start", w = o), Math.abs(s - te) > .5 && (re = s > te ? "end" : "start", te = s), S.value = o, C.value = s, x.value || (R.value = null), a.value ||= !0, clearTimeout(b), b = setTimeout(() => {
926
+ let e = x.value;
927
+ if (a.value = !1, x.value = !1, n.value.snap && !e) {
928
+ let e = n.value.snap, t = e === !0 ? "auto" : e, r = dt.value, i = n.value.items.length, a = r.currentIndex, o = r.currentColIndex, s = "start", c = "start", l = !1;
929
+ if (D.value !== "horizontal") {
930
+ let e = resolveSnap(t, re, r.currentIndex, r.currentEndIndex, Y.value, p.value, i, (e) => M.get(e), (e) => M.query(e), Q);
931
+ e && (a = e.index, s = e.align, l = !0);
881
932
  }
882
- }
883
- let g = de.value || typeof n.value.columnWidth == "function";
884
- if (f && m && n.value.columnCount && g && (c > 0 || m.dataset.colIndex === void 0)) {
885
- let e = m.dataset.colIndex;
886
- if (e != null) h(Number.parseInt(e, 10), c);
887
- else {
888
- let e = Array.from(m.querySelectorAll("[data-col-index]"));
889
- for (let t of e) h(Number.parseInt(t.dataset.colIndex, 10), t.getBoundingClientRect().width);
933
+ if (D.value !== "vertical") {
934
+ let e = D.value === "both", a = e ? n.value.columnCount || 0 : i, s = resolveSnap(t, ne, r.currentColIndex, r.currentEndColIndex, J.value, f.value, a, (t) => e ? N.get(t) : j.get(t), (t) => e ? N.query(t) : j.query(t), at);
935
+ s && (o = s.index, c = s.align, l = !0);
890
936
  }
937
+ l && tt(a, o, {
938
+ align: {
939
+ x: c,
940
+ y: s
941
+ },
942
+ behavior: "smooth"
943
+ });
891
944
  }
892
- }
893
- if (t && (k.value++, !(P.value !== null || x.value) && (r !== 0 || i !== 0))) {
894
- let e = W.value + H.value + Se.value, t = K.value + U.value + we.value;
895
- We(r === 0 ? null : s + r + e, i === 0 ? null : c + i + t, { behavior: "auto" });
896
- }
897
- }, at = (e, t, n, r) => {
898
- it([{
945
+ }, 250);
946
+ }, mt = (e) => {
947
+ ke(e, Q, at, J.value, Y.value, (e, t) => {
948
+ R.value !== null || x.value || rt(e, t);
949
+ });
950
+ }, $ = (e, t, n, r) => {
951
+ mt([{
899
952
  index: e,
900
953
  inlineSize: t,
901
954
  blockSize: n,
902
955
  element: r
903
956
  }]);
904
957
  };
905
- function ot() {
906
- if (P.value && !c.value) {
907
- let { rowIndex: e, colIndex: t, options: r } = P.value;
958
+ function ht() {
959
+ if (R.value && !c.value) {
960
+ let { rowIndex: e, colIndex: t, options: r } = R.value;
908
961
  if (isScrollToIndexOptions(r) && r.behavior === "smooth" && a.value) return;
909
- 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 = d.value ? Math.abs(o) : o, l = s, u = displayToVirtual(c, 0, X.value), m = displayToVirtual(l, 0, Z.value), { targetX: h, targetY: g } = calculateScrollTarget({
962
+ 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 = d.value ? Math.abs(o) : o, l = s, u = displayToVirtual(c, 0, K.value), m = displayToVirtual(l, 0, q.value), { targetX: h, targetY: g } = calculateScrollTarget({
910
963
  rowIndex: e,
911
964
  colIndex: t,
912
965
  options: r,
913
- direction: L.value,
966
+ direction: D.value,
914
967
  viewportWidth: f.value,
915
968
  viewportHeight: p.value,
916
- totalWidth: Ne.value,
917
- totalHeight: Pe.value,
969
+ totalWidth: Je.value,
970
+ totalHeight: Ye.value,
918
971
  gap: n.value.gap || 0,
919
972
  columnGap: n.value.columnGap || 0,
920
- fixedSize: z.value,
921
- fixedWidth: B.value,
973
+ fixedSize: O.value,
974
+ fixedWidth: k.value,
922
975
  relativeScrollX: u,
923
976
  relativeScrollY: m,
924
- getItemSizeY: (e) => D.get(e),
925
- getItemSizeX: (e) => E.get(e),
926
- getItemQueryY: (e) => D.query(e),
927
- getItemQueryX: (e) => E.query(e),
928
- getColumnSize: (e) => O.get(e),
929
- getColumnQuery: (e) => O.query(e),
930
- scaleX: X.value,
931
- scaleY: Z.value,
932
- hostOffsetX: Y.x,
933
- hostOffsetY: Y.y,
934
- stickyIndices: be.value,
935
- stickyStartX: H.value,
936
- stickyStartY: U.value,
937
- stickyEndX: Ee.value,
938
- stickyEndY: De.value,
939
- flowPaddingStartX: W.value,
940
- flowPaddingStartY: K.value,
941
- paddingStartX: Se.value,
942
- paddingStartY: we.value,
943
- paddingEndX: Ce.value,
944
- paddingEndY: Te.value
945
- }), _ = t == null || Math.abs(u - h) < 2, v = e == null || Math.abs(m - g) < 2, y = t == null || t === void 0 || A[t] === 1, b = e == null || e === void 0 || N[e] === 1;
946
- _ && v ? y && b && !a.value && !x.value && (P.value = null) : Ue(e, t, isScrollToIndexOptions(r) ? {
977
+ getItemSizeY: (e) => M.get(e),
978
+ getItemSizeX: (e) => j.get(e),
979
+ getItemQueryY: (e) => M.query(e),
980
+ getItemQueryX: (e) => j.query(e),
981
+ getColumnSize: (e) => N.get(e),
982
+ getColumnQuery: (e) => N.query(e),
983
+ scaleX: K.value,
984
+ scaleY: q.value,
985
+ hostOffsetX: G.x,
986
+ hostOffsetY: G.y,
987
+ stickyIndices: Ne.value,
988
+ stickyStartX: z.value,
989
+ stickyStartY: B.value,
990
+ stickyEndX: Be.value,
991
+ stickyEndY: Ve.value,
992
+ flowPaddingStartX: V.value,
993
+ flowPaddingStartY: H.value,
994
+ paddingStartX: Ie.value,
995
+ paddingStartY: Re.value,
996
+ paddingEndX: Le.value,
997
+ paddingEndY: ze.value
998
+ }), _ = t == null || Math.abs(u - h) < 2, v = e == null || Math.abs(m - g) < 2, y = t == null || t === void 0 || ge.value[t] === 1, b = e == null || e === void 0 || ve.value[e] === 1;
999
+ _ && v ? y && b && !a.value && !x.value && (R.value = null) : tt(e, t, isScrollToIndexOptions(r) ? {
947
1000
  ...r,
948
1001
  isCorrection: !0
949
1002
  } : {
@@ -953,39 +1006,39 @@ function useVirtualScroll(e) {
953
1006
  }
954
1007
  }
955
1008
  watch([
956
- k,
1009
+ F,
957
1010
  f,
958
1011
  p
959
- ], ot), watch(a, (e) => {
960
- e || ot();
1012
+ ], ht), watch(a, (e) => {
1013
+ e || ht();
961
1014
  });
962
- let st = null, $ = null, ct, lt = (e) => {
1015
+ let gt = null, _t = null, vt, yt = (e) => {
963
1016
  if (typeof window > "u") return;
964
1017
  let t = e || window, n = t === window || isElement(t) && t === document.documentElement ? document : t;
965
- if (n.addEventListener("scroll", rt, { passive: !0 }), T = null, ee(), isElement(t) && ($ = new MutationObserver(() => ee()), $.observe(t, {
1018
+ if (n.addEventListener("scroll", pt, { passive: !0 }), ae = null, E(), isElement(t) && (_t = new MutationObserver(() => E()), _t.observe(t, {
966
1019
  attributes: !0,
967
1020
  attributeFilter: ["dir", "style"]
968
- })), ct = setInterval(ee, 1e3), t === window) {
1021
+ })), vt = setInterval(E, 1e3), t === window) {
969
1022
  f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight, r.value = window.scrollX, i.value = window.scrollY;
970
1023
  let e = () => {
971
- ee(), f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight, qe();
1024
+ E(), f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight, Z();
972
1025
  };
973
1026
  return window.addEventListener("resize", e), () => {
974
- n.removeEventListener("scroll", rt), window.removeEventListener("resize", e), $?.disconnect(), clearInterval(ct), T = null;
1027
+ n.removeEventListener("scroll", pt), window.removeEventListener("resize", e), _t?.disconnect(), clearInterval(vt), ae = null;
975
1028
  };
976
- } else return f.value = t.clientWidth, p.value = t.clientHeight, r.value = t.scrollLeft, i.value = t.scrollTop, st = new ResizeObserver(() => {
977
- ee(), f.value = t.clientWidth, p.value = t.clientHeight, qe();
978
- }), st.observe(t), () => {
979
- n.removeEventListener("scroll", rt), st?.disconnect(), $?.disconnect(), clearInterval(ct), T = null;
1029
+ } else return f.value = t.clientWidth, p.value = t.clientHeight, r.value = t.scrollLeft, i.value = t.scrollTop, gt = new ResizeObserver(() => {
1030
+ E(), f.value = t.clientWidth, p.value = t.clientHeight, Z();
1031
+ }), gt.observe(t), () => {
1032
+ n.removeEventListener("scroll", pt), gt?.disconnect(), _t?.disconnect(), clearInterval(vt), ae = null;
980
1033
  };
981
- }, ut;
1034
+ }, bt;
982
1035
  return getCurrentInstance() && (onMounted(() => {
983
- l.value = !0, ee(), watch(() => n.value.container, (e) => {
984
- ut?.(), ut = lt(e || null);
985
- }, { immediate: !0 }), qe(), nextTick(() => {
986
- if (qe(), n.value.ssrRange || n.value.initialScrollIndex !== void 0) {
1036
+ l.value = !0, E(), watch(() => n.value.container, (e) => {
1037
+ bt?.(), bt = yt(e || null);
1038
+ }, { immediate: !0 }), Z(), nextTick(() => {
1039
+ if (Z(), n.value.ssrRange || n.value.initialScrollIndex !== void 0) {
987
1040
  let e = n.value.initialScrollIndex === void 0 ? n.value.ssrRange?.start : n.value.initialScrollIndex, t = n.value.initialScrollAlign || "start";
988
- e != null && Ue(e, n.value.ssrRange?.colStart, {
1041
+ e != null && tt(e, n.value.ssrRange?.colStart, {
989
1042
  align: t,
990
1043
  behavior: "auto"
991
1044
  }), o.value = !0, c.value = !0, nextTick(() => {
@@ -994,125 +1047,121 @@ function useVirtualScroll(e) {
994
1047
  } else o.value = !0;
995
1048
  });
996
1049
  }), onUnmounted(() => {
997
- ut?.();
1050
+ bt?.();
998
1051
  })), {
999
- renderedItems: et,
1000
- totalWidth: q,
1001
- totalHeight: J,
1002
- renderedWidth: Fe,
1003
- renderedHeight: Ie,
1004
- scrollDetails: tt,
1005
- getRowHeight: He,
1006
- getColumnWidth: Ve,
1007
- getRowOffset: (e) => K.value + U.value + we.value + D.query(e),
1008
- getColumnOffset: (e) => W.value + H.value + Se.value + O.query(e),
1009
- getItemOffset: (e) => L.value === "horizontal" ? W.value + H.value + Se.value + E.query(e) : K.value + U.value + we.value + D.query(e),
1010
- getItemSize: (e) => {
1011
- if (L.value === "horizontal") return Math.max(0, E.get(e) - (n.value.columnGap || 0));
1012
- let t = n.value.itemSize;
1013
- if (typeof t == "number" && t > 0) return t;
1014
- if (typeof t == "function") {
1015
- let r = n.value.items[e];
1016
- return r === void 0 ? n.value.defaultItemSize || 40 : t(r, e);
1017
- }
1018
- return Math.max(0, D.get(e) - (n.value.gap || 0));
1052
+ renderedItems: ut,
1053
+ totalWidth: U,
1054
+ totalHeight: W,
1055
+ renderedWidth: Xe,
1056
+ renderedHeight: Ze,
1057
+ scrollDetails: dt,
1058
+ getRowHeight: et,
1059
+ getColumnWidth: X,
1060
+ getRowOffset: (e) => H.value + B.value + Re.value + calculateOffsetAt(e, O.value, n.value.gap || 0, (e) => M.query(e)),
1061
+ getColumnOffset: (e) => {
1062
+ let t = V.value + z.value + Ie.value;
1063
+ return D.value === "both" ? t + calculateOffsetAt(e, k.value, n.value.columnGap || 0, (e) => N.query(e)) : t + calculateOffsetAt(e, O.value, n.value.columnGap || 0, (e) => j.query(e));
1019
1064
  },
1020
- scrollToIndex: Ue,
1021
- scrollToOffset: We,
1022
- stopProgrammaticScroll: nt,
1023
- updateItemSize: at,
1024
- updateItemSizes: it,
1025
- updateHostOffset: qe,
1026
- updateDirection: ee,
1027
- columnRange: Qe,
1065
+ getItemOffset: (e) => D.value === "horizontal" ? V.value + z.value + Ie.value + calculateOffsetAt(e, O.value, n.value.columnGap || 0, (e) => j.query(e)) : H.value + B.value + Re.value + calculateOffsetAt(e, O.value, n.value.gap || 0, (e) => M.query(e)),
1066
+ getItemSize: (e) => D.value === "horizontal" ? X(e) : et(e),
1067
+ scrollToIndex: tt,
1068
+ scrollToOffset: nt,
1069
+ stopProgrammaticScroll: ft,
1070
+ updateItemSize: $,
1071
+ updateItemSizes: mt,
1072
+ updateHostOffset: Z,
1073
+ updateDirection: E,
1074
+ columnRange: ct,
1028
1075
  refresh: () => {
1029
- E.resize(0), D.resize(0), O.resize(0), A.fill(0), j.fill(0), N.fill(0), Ke();
1076
+ Ae(rt);
1030
1077
  },
1031
1078
  isHydrated: o,
1032
- isWindowContainer: Me,
1079
+ isWindowContainer: qe,
1033
1080
  isRtl: d,
1034
- scaleX: X,
1035
- scaleY: Z,
1036
- componentOffset: Y,
1037
- renderedVirtualWidth: Le,
1038
- renderedVirtualHeight: Re
1081
+ scaleX: K,
1082
+ scaleY: q,
1083
+ componentOffset: G,
1084
+ renderedVirtualWidth: Qe,
1085
+ renderedVirtualHeight: $e,
1086
+ getRowIndexAt: Q,
1087
+ getColIndexAt: at
1039
1088
  };
1040
1089
  }
1041
1090
  function useVirtualScrollbar(e) {
1042
- let n = computed(() => toValue(e.axis)), r = computed(() => toValue(e.totalSize)), i = computed(() => toValue(e.position)), a = computed(() => toValue(e.viewportSize)), o = computed(() => toValue(e.containerId)), c = computed(() => !!toValue(e.isRtl)), l = computed(() => n.value === "horizontal"), u = computed(() => r.value <= 0 ? 0 : Math.min(1, a.value / r.value)), d = computed(() => {
1043
- let e = r.value - a.value;
1044
- return e <= 0 ? 0 : Math.max(0, Math.min(1, i.value / e));
1045
- }), f = computed(() => {
1046
- let e = a.value > 0 ? 32 / a.value : .1;
1047
- return Math.max(Math.min(e, .1), u.value) * 100;
1048
- }), p = computed(() => d.value * (100 - f.value)), m = computed(() => l.value ? {
1049
- inlineSize: `${f.value}%`,
1050
- insetInlineStart: `${p.value}%`
1091
+ let n = computed(() => toValue(e)), r = computed(() => n.value.axis === "horizontal"), i = computed(() => n.value.totalSize <= 0 ? 0 : Math.min(1, n.value.viewportSize / n.value.totalSize)), a = computed(() => {
1092
+ let e = n.value.totalSize - n.value.viewportSize;
1093
+ return e <= 0 ? 0 : Math.max(0, Math.min(1, n.value.position / e));
1094
+ }), o = computed(() => {
1095
+ let e = n.value.viewportSize > 0 ? 32 / n.value.viewportSize : .1;
1096
+ return Math.max(Math.min(e, .1), i.value) * 100;
1097
+ }), c = computed(() => a.value * (100 - o.value)), l = computed(() => r.value ? {
1098
+ inlineSize: `${o.value}%`,
1099
+ insetInlineStart: `${c.value}%`
1051
1100
  } : {
1052
- blockSize: `${f.value}%`,
1053
- insetBlockStart: `${p.value}%`
1054
- }), g = computed(() => {
1055
- 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))";
1056
- return l.value ? { inlineSize: `calc(${Math.max(0, e - 4)}px - ${t})` } : { blockSize: `calc(${Math.max(0, e - 4)}px - ${t})` };
1057
- }), _ = ref(!1), y = 0, b = 0;
1058
- function x(t) {
1059
- let n = t.currentTarget;
1060
- if (t.target !== n) return;
1061
- let i = n.getBoundingClientRect(), o = l.value ? i.width : i.height, s = 0;
1062
- s = l.value ? c.value ? i.right - t.clientX : t.clientX - i.left : t.clientY - i.top;
1063
- let u = f.value / 100 * o, d = (s - u / 2) / (o - u), p = r.value - a.value, m = d * p;
1064
- m > p - 1 && (m = p), e.scrollToOffset(Math.max(0, Math.min(p, m)));
1101
+ blockSize: `${o.value}%`,
1102
+ insetBlockStart: `${c.value}%`
1103
+ }), u = computed(() => {
1104
+ 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))";
1105
+ return r.value ? { inlineSize: `calc(${Math.max(0, e - 4)}px - ${t})` } : { blockSize: `calc(${Math.max(0, e - 4)}px - ${t})` };
1106
+ }), d = ref(!1), f = 0, p = 0;
1107
+ function m(e) {
1108
+ let t = e.currentTarget;
1109
+ if (e.target !== t) return;
1110
+ let i = t.getBoundingClientRect(), a = r.value ? i.width : i.height, s = 0;
1111
+ s = r.value ? n.value.isRtl ? i.right - e.clientX : e.clientX - i.left : e.clientY - i.top;
1112
+ let c = o.value / 100 * a, l = (s - c / 2) / (a - c), u = n.value.totalSize - n.value.viewportSize, d = l * u;
1113
+ d > u - 1 && (d = u), n.value.scrollToOffset(Math.max(0, Math.min(u, d)));
1065
1114
  }
1066
- function S(e) {
1067
- _.value = !0, y = l.value ? c.value ? -e.clientX : e.clientX : e.clientY, b = i.value, e.currentTarget.setPointerCapture(e.pointerId), e.preventDefault(), e.stopPropagation();
1115
+ function g(e) {
1116
+ d.value = !0, f = r.value ? n.value.isRtl ? -e.clientX : e.clientX : e.clientY, p = n.value.position, e.currentTarget.setPointerCapture(e.pointerId), e.preventDefault(), e.stopPropagation();
1068
1117
  }
1069
- function C(t) {
1070
- if (!_.value) return;
1071
- let n = t.currentTarget.parentElement;
1072
- if (!n) return;
1073
- let i = (l.value ? c.value ? -t.clientX : t.clientX : t.clientY) - y, o = n.getBoundingClientRect(), s = l.value ? o.width : o.height, u = s - f.value / 100 * s;
1074
- if (u <= 0) return;
1075
- let d = r.value - a.value, p = b + i / u * d;
1076
- p > d - 1 && (p = d), e.scrollToOffset(Math.max(0, Math.min(d, p)));
1118
+ function _(e) {
1119
+ if (!d.value) return;
1120
+ let t = e.currentTarget.parentElement;
1121
+ if (!t) return;
1122
+ let i = (r.value ? n.value.isRtl ? -e.clientX : e.clientX : e.clientY) - f, a = t.getBoundingClientRect(), s = r.value ? a.width : a.height, c = s - o.value / 100 * s;
1123
+ if (c <= 0) return;
1124
+ let l = n.value.totalSize - n.value.viewportSize, u = p + i / c * l;
1125
+ u > l - 1 && (u = l), n.value.scrollToOffset(Math.max(0, Math.min(l, u)));
1077
1126
  }
1078
- function T(e) {
1079
- _.value && (_.value = !1, e.currentTarget.releasePointerCapture(e.pointerId));
1127
+ function y(e) {
1128
+ d.value && (d.value = !1, e.currentTarget.releasePointerCapture(e.pointerId));
1080
1129
  }
1081
1130
  return getCurrentInstance() && onUnmounted(() => {
1082
- _.value = !1;
1131
+ d.value = !1;
1083
1132
  }), {
1084
- viewportPercent: u,
1085
- positionPercent: d,
1086
- thumbSizePercent: f,
1087
- thumbPositionPercent: p,
1088
- trackStyle: g,
1089
- thumbStyle: m,
1133
+ viewportPercent: i,
1134
+ positionPercent: a,
1135
+ thumbSizePercent: o,
1136
+ thumbPositionPercent: c,
1137
+ trackStyle: u,
1138
+ thumbStyle: l,
1090
1139
  trackProps: computed(() => ({
1091
- class: ["virtual-scrollbar-track", `virtual-scrollbar-track--${l.value ? "horizontal" : "vertical"}`],
1092
- style: g.value,
1140
+ class: ["virtual-scrollbar-track", `virtual-scrollbar-track--${r.value ? "horizontal" : "vertical"}`],
1141
+ style: u.value,
1093
1142
  role: "scrollbar",
1094
- "aria-label": toValue(e.ariaLabel),
1095
- "aria-orientation": n.value,
1096
- "aria-valuenow": Math.round(i.value),
1143
+ "aria-label": n.value.ariaLabel,
1144
+ "aria-orientation": n.value.axis,
1145
+ "aria-valuenow": Math.round(n.value.position),
1097
1146
  "aria-valuemin": 0,
1098
- "aria-valuemax": Math.round(r.value - a.value),
1099
- "aria-controls": o.value,
1147
+ "aria-valuemax": Math.round(n.value.totalSize - n.value.viewportSize),
1148
+ "aria-controls": n.value.containerId,
1100
1149
  tabindex: -1,
1101
- onMousedown: x
1150
+ onMousedown: m
1102
1151
  })),
1103
1152
  thumbProps: computed(() => ({
1104
1153
  class: [
1105
1154
  "virtual-scrollbar-thumb",
1106
- `virtual-scrollbar-thumb--${l.value ? "horizontal" : "vertical"}`,
1107
- { "virtual-scrollbar-thumb--active": _.value }
1155
+ `virtual-scrollbar-thumb--${r.value ? "horizontal" : "vertical"}`,
1156
+ { "virtual-scrollbar-thumb--active": d.value }
1108
1157
  ],
1109
- style: m.value,
1110
- onPointerdown: S,
1111
- onPointermove: C,
1112
- onPointerup: T,
1113
- onPointercancel: T
1158
+ style: l.value,
1159
+ onPointerdown: g,
1160
+ onPointermove: _,
1161
+ onPointerup: y,
1162
+ onPointercancel: y
1114
1163
  })),
1115
- isDragging: _
1164
+ isDragging: d
1116
1165
  };
1117
1166
  }
1118
1167
  var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
@@ -1132,17 +1181,17 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1132
1181
  },
1133
1182
  emits: ["scrollToOffset"],
1134
1183
  setup(e, { emit: t }) {
1135
- let n = e, r = t, { trackProps: o, thumbProps: s } = useVirtualScrollbar({
1136
- axis: () => n.axis,
1137
- totalSize: () => n.totalSize,
1138
- position: () => n.position,
1139
- viewportSize: () => n.viewportSize,
1140
- containerId: () => n.containerId,
1141
- isRtl: () => n.isRtl,
1184
+ let n = e, r = t, { trackProps: o, thumbProps: s } = useVirtualScrollbar(() => ({
1185
+ axis: n.axis,
1186
+ totalSize: n.totalSize,
1187
+ position: n.position,
1188
+ viewportSize: n.viewportSize,
1189
+ containerId: n.containerId,
1190
+ isRtl: n.isRtl,
1142
1191
  scrollToOffset: (e) => {
1143
1192
  n.scrollToOffset?.(e), r("scrollToOffset", e);
1144
1193
  }
1145
- });
1194
+ }));
1146
1195
  return (e, t) => (openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(o))), [createElementVNode("div", normalizeProps(guardReactiveProps(unref(s))), null, 16)], 16));
1147
1196
  }
1148
1197
  }), _hoisted_1 = {
@@ -1208,7 +1257,8 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1208
1257
  role: {},
1209
1258
  ariaLabel: {},
1210
1259
  ariaLabelledby: {},
1211
- itemRole: { default: void 0 }
1260
+ itemRole: { default: void 0 },
1261
+ snap: { type: [Boolean, String] }
1212
1262
  },
1213
1263
  emits: [
1214
1264
  "scroll",
@@ -1216,18 +1266,18 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1216
1266
  "visibleRangeChange"
1217
1267
  ],
1218
1268
  setup(o, { expose: s, emit: c }) {
1219
- let _ = o, w = c, O = useSlots(), k = ref(null), A = ref(null), j = ref(null), M = ref(null), ne = /* @__PURE__ */ new Map(), N = useId(), P = computed(() => `vs-container-${N}`), re = ref(0), ie = ref(0), ae = computed(() => _.container === void 0 ? k.value : _.container), oe = computed(() => {
1220
- let e = ae.value;
1221
- return e === k.value || typeof window < "u" && (e === window || e === null);
1222
- }), F = computed(() => (_.items.length, {
1269
+ let _ = o, S = c, T = useSlots(), E = ref(null), D = ref(null), oe = ref(null), se = ref(null), O = /* @__PURE__ */ new Map(), k = useId(), A = computed(() => `vs-container-${k}`), le = ref(0), ue = ref(0), de = computed(() => _.container === void 0 ? E.value : _.container), fe = computed(() => {
1270
+ let e = de.value;
1271
+ return e === E.value || isWindowLike(e);
1272
+ }), j = computed(() => (_.items.length, {
1223
1273
  items: _.items,
1224
1274
  itemSize: _.itemSize,
1225
1275
  direction: _.direction,
1226
1276
  bufferBefore: _.bufferBefore,
1227
1277
  bufferAfter: _.bufferAfter,
1228
- container: ae.value,
1229
- hostElement: A.value,
1230
- hostRef: k.value,
1278
+ container: de.value,
1279
+ hostElement: D.value,
1280
+ hostRef: E.value,
1231
1281
  ssrRange: _.ssrRange,
1232
1282
  columnCount: _.columnCount,
1233
1283
  columnWidth: _.columnWidth,
@@ -1241,19 +1291,19 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1241
1291
  },
1242
1292
  flowPaddingStart: {
1243
1293
  x: 0,
1244
- y: _.stickyHeader ? 0 : re.value
1294
+ y: _.stickyHeader ? 0 : le.value
1245
1295
  },
1246
1296
  flowPaddingEnd: {
1247
1297
  x: 0,
1248
- y: _.stickyFooter ? 0 : ie.value
1298
+ y: _.stickyFooter ? 0 : ue.value
1249
1299
  },
1250
1300
  stickyStart: {
1251
1301
  x: 0,
1252
- y: _.stickyHeader && oe.value ? re.value : 0
1302
+ y: _.stickyHeader && fe.value ? le.value : 0
1253
1303
  },
1254
1304
  stickyEnd: {
1255
1305
  x: 0,
1256
- y: _.stickyFooter && oe.value ? ie.value : 0
1306
+ y: _.stickyFooter && fe.value ? ue.value : 0
1257
1307
  },
1258
1308
  gap: _.gap,
1259
1309
  columnGap: _.columnGap,
@@ -1265,65 +1315,66 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1265
1315
  initialScrollAlign: _.initialScrollAlign,
1266
1316
  defaultItemSize: _.defaultItemSize,
1267
1317
  defaultColumnWidth: _.defaultColumnWidth,
1268
- debug: _.debug
1269
- })), { isHydrated: le, isRtl: I, columnRange: ue, renderedItems: L, scrollDetails: R, renderedHeight: de, renderedWidth: z, getColumnWidth: B, getRowHeight: pe, scrollToIndex: V, scrollToOffset: me, updateHostOffset: he, updateItemSizes: ge, updateDirection: _e, getItemOffset: ye, getRowOffset: Ee, getColumnOffset: U, getItemSize: De, refresh: W, stopProgrammaticScroll: G, scaleX: K, scaleY: Oe, isWindowContainer: ke, componentOffset: Ae, renderedVirtualWidth: je, renderedVirtualHeight: Me } = useVirtualScroll(F), Ne = computed(() => K.value !== 1 || Oe.value !== 1), Pe = computed(() => ke.value ? !1 : _.virtualScrollbar === !0 || K.value !== 1 || Oe.value !== 1);
1270
- function q(e) {
1271
- let { displayViewportSize: t } = R.value;
1272
- e >= de.value - t.height - .5 ? me(null, Infinity) : me(null, displayToVirtual(e, Ae.y, Oe.value));
1318
+ debug: _.debug,
1319
+ snap: _.snap
1320
+ })), { isHydrated: M, isRtl: he, columnRange: N, renderedItems: ge, scrollDetails: P, renderedHeight: _e, renderedWidth: ve, getColumnWidth: F, getRowHeight: ye, scrollToIndex: I, scrollToOffset: be, updateHostOffset: xe, updateItemSizes: Se, updateDirection: Ce, getItemOffset: we, getRowOffset: Te, getColumnOffset: Ee, getItemSize: Oe, refresh: ke, stopProgrammaticScroll: L, scaleX: je, scaleY: Me, isWindowContainer: Ne, componentOffset: Pe, renderedVirtualWidth: B, renderedVirtualHeight: Ve, getRowIndexAt: V, getColIndexAt: He } = useVirtualScroll(j), H = computed(() => je.value !== 1 || Me.value !== 1), Ue = computed(() => Ne.value ? !1 : _.virtualScrollbar === !0 || je.value !== 1 || Me.value !== 1);
1321
+ function We(e) {
1322
+ let { displayViewportSize: t } = P.value;
1323
+ e >= _e.value - t.height - .5 ? be(null, Infinity) : be(null, displayToVirtual(e, Pe.y, Me.value));
1273
1324
  }
1274
- function J(e) {
1275
- let { displayViewportSize: t } = R.value;
1276
- e >= z.value - t.width - .5 ? me(Infinity, null) : me(displayToVirtual(e, Ae.x, K.value), null);
1325
+ function Ge(e) {
1326
+ let { displayViewportSize: t } = P.value;
1327
+ e >= ve.value - t.width - .5 ? be(Infinity, null) : be(displayToVirtual(e, Pe.x, je.value), null);
1277
1328
  }
1278
- let Y = useVirtualScrollbar({
1329
+ let Ke = useVirtualScrollbar(computed(() => ({
1279
1330
  axis: "vertical",
1280
- totalSize: de,
1281
- position: computed(() => R.value.displayScrollOffset.y),
1282
- viewportSize: computed(() => R.value.displayViewportSize.height),
1283
- scrollToOffset: q,
1284
- containerId: P,
1285
- isRtl: I
1286
- }), Fe = useVirtualScrollbar({
1331
+ totalSize: _e.value,
1332
+ position: P.value.displayScrollOffset.y,
1333
+ viewportSize: P.value.displayViewportSize.height,
1334
+ scrollToOffset: We,
1335
+ containerId: A.value,
1336
+ isRtl: he.value
1337
+ }))), qe = useVirtualScrollbar(computed(() => ({
1287
1338
  axis: "horizontal",
1288
- totalSize: z,
1289
- position: computed(() => R.value.displayScrollOffset.x),
1290
- viewportSize: computed(() => R.value.displayViewportSize.width),
1291
- scrollToOffset: J,
1292
- containerId: P,
1293
- isRtl: I
1294
- }), Ie = computed(() => _.direction === "both" ? {
1295
- ...ue.value,
1339
+ totalSize: ve.value,
1340
+ position: P.value.displayScrollOffset.x,
1341
+ viewportSize: P.value.displayViewportSize.width,
1342
+ scrollToOffset: Ge,
1343
+ containerId: A.value,
1344
+ isRtl: he.value
1345
+ }))), Je = computed(() => _.direction === "both" ? {
1346
+ ...N.value,
1296
1347
  padStart: 0,
1297
1348
  padEnd: 0
1298
- } : ue.value);
1299
- function Le() {
1300
- W(), _e(), nextTick(() => {
1349
+ } : N.value);
1350
+ function Ye() {
1351
+ ke(), Ce(), nextTick(() => {
1301
1352
  let e = [];
1302
- for (let [t, n] of ne.entries()) n && e.push({
1353
+ for (let [t, n] of O.entries()) n && e.push({
1303
1354
  index: t,
1304
1355
  inlineSize: n.offsetWidth,
1305
1356
  blockSize: n.offsetHeight,
1306
1357
  element: n
1307
1358
  });
1308
- e.length > 0 && ge(e);
1359
+ e.length > 0 && Se(e);
1309
1360
  });
1310
1361
  }
1311
- watch(R, (e, t) => {
1312
- !le.value || !e || (w("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) && w("visibleRangeChange", {
1362
+ watch(P, (e, t) => {
1363
+ !M.value || !e || (S("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) && S("visibleRangeChange", {
1313
1364
  start: e.range.start,
1314
1365
  end: e.range.end,
1315
1366
  colStart: e.columnRange.start,
1316
1367
  colEnd: e.columnRange.end
1317
- }), !_.loading && (_.direction !== "horizontal" && e.totalSize && e.totalSize.height - (e.scrollOffset.y + e.viewportSize.height) <= _.loadDistance && w("load", "vertical"), _.direction !== "vertical" && e.totalSize && e.totalSize.width - (e.scrollOffset.x + e.viewportSize.width) <= _.loadDistance && w("load", "horizontal")));
1318
- }), watch(le, (e) => {
1319
- e && R.value?.range && R.value?.columnRange && w("visibleRangeChange", {
1320
- start: R.value.range.start,
1321
- end: R.value.range.end,
1322
- colStart: R.value.columnRange.start,
1323
- colEnd: R.value.columnRange.end
1368
+ }), !_.loading && (_.direction !== "horizontal" && e.totalSize && e.totalSize.height - (e.scrollOffset.y + e.viewportSize.height) <= _.loadDistance && S("load", "vertical"), _.direction !== "vertical" && e.totalSize && e.totalSize.width - (e.scrollOffset.x + e.viewportSize.width) <= _.loadDistance && S("load", "horizontal")));
1369
+ }), watch(M, (e) => {
1370
+ e && P.value?.range && P.value?.columnRange && S("visibleRangeChange", {
1371
+ start: P.value.range.start,
1372
+ end: P.value.range.end,
1373
+ colStart: P.value.columnRange.start,
1374
+ colEnd: P.value.columnRange.end
1324
1375
  });
1325
1376
  }, { once: !0 });
1326
- let Re = typeof window > "u" ? null : new ResizeObserver(he), X = typeof window > "u" ? null : new ResizeObserver((e) => {
1377
+ let U = typeof window > "u" ? null : new ResizeObserver(xe), W = typeof window > "u" ? null : new ResizeObserver((e) => {
1327
1378
  let t = [];
1328
1379
  for (let n of e) {
1329
1380
  let e = n.target, r = Number(e.dataset.index), i = e.dataset.colIndex, a = n.contentRect.width, o = n.contentRect.height;
@@ -1339,229 +1390,232 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1339
1390
  element: e
1340
1391
  });
1341
1392
  }
1342
- t.length > 0 && ge(t);
1343
- }), Z = typeof window > "u" ? null : new ResizeObserver(() => {
1344
- re.value = j.value?.offsetHeight || 0, ie.value = M.value?.offsetHeight || 0, he();
1393
+ t.length > 0 && Se(t);
1394
+ }), G = typeof window > "u" ? null : new ResizeObserver(() => {
1395
+ le.value = oe.value?.offsetHeight || 0, ue.value = se.value?.offsetHeight || 0, xe();
1345
1396
  });
1346
- function ze(e, t) {
1397
+ function Xe(e, t) {
1347
1398
  watch(e, (e, n) => {
1348
- n && Z?.unobserve(n), e ? Z?.observe(e) : t.value = 0;
1399
+ n && G?.unobserve(n), e ? G?.observe(e) : t.value = 0;
1349
1400
  }, { immediate: !0 });
1350
1401
  }
1351
- ze(j, re), ze(M, ie), onMounted(() => {
1352
- k.value && Re?.observe(k.value);
1353
- for (let e of ne.values()) X?.observe(e), _.direction === "both" && e.querySelectorAll("[data-col-index]").forEach((e) => X?.observe(e));
1354
- }), watch([k, A], ([e], [t]) => {
1355
- t && Re?.unobserve(t), e && Re?.observe(e);
1356
- }), watch([k, Ne], ([e, t], [n, r]) => {
1402
+ Xe(oe, le), Xe(se, ue), onMounted(() => {
1403
+ E.value && U?.observe(E.value);
1404
+ for (let e of O.values()) Ze(e, !0);
1405
+ }), watch([E, D], ([e], [t]) => {
1406
+ t && U?.unobserve(t), e && U?.observe(e);
1407
+ }), watch([E, H], ([e, t], [n, r]) => {
1357
1408
  let i = e !== n || t !== r;
1358
- n && i && n.removeEventListener("wheel", Qe), e && i && e.addEventListener("wheel", Qe, { passive: !t });
1409
+ n && i && n.removeEventListener("wheel", Q), e && i && e.addEventListener("wheel", Q, { passive: !t });
1359
1410
  }, { immediate: !0 });
1360
- function Be(e, t) {
1361
- if (e) ne.set(t, e), X?.observe(e), _.direction === "both" && e.querySelectorAll("[data-col-index]").forEach((e) => X?.observe(e));
1362
- else {
1363
- let e = ne.get(t);
1364
- e && (X?.unobserve(e), _.direction === "both" && e.querySelectorAll("[data-col-index]").forEach((e) => X?.unobserve(e)), ne.delete(t));
1411
+ function Ze(e, t) {
1412
+ let n = t ? "observe" : "unobserve";
1413
+ W?.[n](e), _.direction === "both" && e.children.length > 0 && e.querySelectorAll("[data-col-index]").forEach((e) => W?.[n](e));
1414
+ }
1415
+ function Qe(e, t) {
1416
+ if (e) {
1417
+ let n = e;
1418
+ O.set(t, n), Ze(n, !0);
1419
+ } else {
1420
+ let e = O.get(t);
1421
+ e && (Ze(e, !1), O.delete(t));
1365
1422
  }
1366
1423
  }
1367
- let Ve = ref(!1), He = {
1424
+ let $e = ref(!1), K = {
1368
1425
  x: 0,
1369
1426
  y: 0
1370
- }, Ue = {
1427
+ }, q = {
1371
1428
  x: 0,
1372
1429
  y: 0
1373
- }, We = {
1430
+ }, J = {
1374
1431
  x: 0,
1375
1432
  y: 0
1376
- }, Ge = 0, Q = {
1433
+ }, Y = 0, X = {
1377
1434
  x: 0,
1378
1435
  y: 0
1379
- }, Ke = null;
1380
- function qe() {
1436
+ }, et = null;
1437
+ function tt() {
1381
1438
  let e = () => {
1382
- Q.x *= FRICTION, Q.y *= FRICTION;
1383
- let t = R.value.scrollOffset.x, n = R.value.scrollOffset.y;
1384
- me(t + Q.x * 16, n + Q.y * 16, { behavior: "auto" }), Math.abs(Q.x) > MIN_VELOCITY || Math.abs(Q.y) > MIN_VELOCITY ? Ke = requestAnimationFrame(e) : Je();
1439
+ let { nextVelocity: t, delta: n } = calculateInertiaStep(X, FRICTION);
1440
+ X.x = t.x, X.y = t.y;
1441
+ let { x: r, y: i } = P.value.scrollOffset;
1442
+ be(r + n.x, i + n.y, { behavior: "auto" }), Math.abs(X.x) > MIN_VELOCITY || Math.abs(X.y) > MIN_VELOCITY ? et = requestAnimationFrame(e) : nt();
1385
1443
  };
1386
- Ke = requestAnimationFrame(e);
1444
+ et = requestAnimationFrame(e);
1387
1445
  }
1388
- function Je() {
1389
- Ke !== null && (cancelAnimationFrame(Ke), Ke = null), Q = {
1446
+ function nt() {
1447
+ et !== null && (cancelAnimationFrame(et), et = null), X = {
1390
1448
  x: 0,
1391
1449
  y: 0
1392
1450
  };
1393
1451
  }
1394
- function Ye(e) {
1395
- G(), Je(), Ne.value && (e.pointerType === "mouse" && e.button !== 0 || (Ve.value = !0, He = {
1452
+ function rt(e) {
1453
+ L(), nt(), H.value && (e.pointerType === "mouse" && e.button !== 0 || ($e.value = !0, K = {
1396
1454
  x: e.clientX,
1397
1455
  y: e.clientY
1398
- }, We = {
1456
+ }, J = {
1399
1457
  x: e.clientX,
1400
1458
  y: e.clientY
1401
- }, Ge = performance.now(), Ue = {
1402
- x: R.value.scrollOffset.x,
1403
- y: R.value.scrollOffset.y
1459
+ }, Y = performance.now(), q = {
1460
+ x: P.value.scrollOffset.x,
1461
+ y: P.value.scrollOffset.y
1404
1462
  }, e.currentTarget.setPointerCapture(e.pointerId)));
1405
1463
  }
1406
- function Xe(e) {
1407
- if (!Ve.value) return;
1408
- let t = performance.now(), n = t - Ge;
1464
+ function it(e) {
1465
+ if (!$e.value) return;
1466
+ let t = performance.now(), n = t - Y;
1409
1467
  if (n > 0) {
1410
- let t = (We.x - e.clientX) / n, r = (We.y - e.clientY) / n;
1411
- Q.x = Q.x * .2 + t * .8, Q.y = Q.y * .2 + r * .8;
1468
+ let t = calculateInstantaneousVelocity(J, {
1469
+ x: e.clientX,
1470
+ y: e.clientY
1471
+ }, n);
1472
+ X.x = X.x * .2 + t.x * .8, X.y = X.y * .2 + t.y * .8;
1412
1473
  }
1413
- We = {
1474
+ J = {
1414
1475
  x: e.clientX,
1415
1476
  y: e.clientY
1416
- }, Ge = t;
1417
- let r = He.x - e.clientX, i = He.y - e.clientY;
1477
+ }, Y = t;
1478
+ let r = K.x - e.clientX, i = K.y - e.clientY;
1418
1479
  requestAnimationFrame(() => {
1419
- me(Ue.x + r, Ue.y + i, { behavior: "auto" });
1480
+ be(q.x + r, q.y + i, { behavior: "auto" });
1420
1481
  });
1421
1482
  }
1422
- function Ze(e) {
1423
- Ve.value && (Ve.value = !1, e.currentTarget.releasePointerCapture(e.pointerId), (Math.abs(Q.x) > MIN_VELOCITY || Math.abs(Q.y) > MIN_VELOCITY) && (Math.abs(Q.x) > 4 * Math.abs(Q.y) ? Q.y = 0 : Math.abs(Q.y) > 4 * Math.abs(Q.x) && (Q.x = 0), qe()));
1483
+ function Z(e) {
1484
+ $e.value && ($e.value = !1, e.currentTarget.releasePointerCapture(e.pointerId), (Math.abs(X.x) > MIN_VELOCITY || Math.abs(X.y) > MIN_VELOCITY) && (Math.abs(X.x) > 4 * Math.abs(X.y) ? X.y = 0 : Math.abs(X.y) > 4 * Math.abs(X.x) && (X.x = 0), tt()));
1424
1485
  }
1425
- function Qe(e) {
1426
- let { scrollOffset: t } = R.value;
1427
- if (G(), Ne.value) {
1486
+ function Q(e) {
1487
+ let { scrollOffset: t } = P.value;
1488
+ if (L(), H.value) {
1428
1489
  e.preventDefault();
1429
- let n = e.deltaX, r = e.deltaY;
1430
- e.shiftKey && n === 0 && (n = r, r = 0), me(t.x + n, t.y + r, { behavior: "auto" });
1490
+ let { deltaX: n, deltaY: r } = e;
1491
+ e.shiftKey && n === 0 && (n = r, r = 0), be(t.x + n, t.y + r, { behavior: "auto" });
1431
1492
  }
1432
1493
  }
1433
- function $e(e) {
1434
- let { viewportSize: t, scrollOffset: n } = R.value, r = _.direction !== "vertical", i = _.direction !== "horizontal", a = F.value.stickyStart, o = F.value.stickyEnd;
1494
+ function at(e) {
1495
+ let { viewportSize: t, scrollOffset: n } = P.value, r = _.direction !== "vertical", i = _.direction !== "horizontal", a = j.value, o = a.stickyStart, s = a.stickyEnd, c = a.scrollPaddingStart, l = a.scrollPaddingEnd, u = _.snap === !0 ? "auto" : _.snap, d = u && u !== "auto" ? u : null, f = (e) => {
1496
+ let r = (e ? n.x : n.y) + (e ? t.width : t.height) / 2;
1497
+ return e ? He(r) : V(r);
1498
+ }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = P.value, v = (e, t) => {
1499
+ let n = !e, r = e ? p : h, i = e ? m : g, a = Math.max(1, i - r), o = e ? _.items.length - 1 : _.columnCount ? _.columnCount - 1 : _.items.length - 1;
1500
+ return t ? d === "center" ? Math.min(o, f(n) + a) : d === "end" ? Math.min(o, i + a) : i : d === "center" ? Math.max(0, f(n) - a) : d === "start" ? Math.max(0, r - a) : r;
1501
+ }, y = (e, r) => {
1502
+ let i = !e;
1503
+ if (d === "center") {
1504
+ let t = f(i), n = i && _.columnCount ? _.columnCount - 1 : _.items.length - 1, a = r ? Math.min(n, t + 1) : Math.max(0, t - 1);
1505
+ I(e ? a : null, i ? a : null, { align: "center" });
1506
+ return;
1507
+ }
1508
+ if (e) if (r) if (d === "start") I(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1509
+ else {
1510
+ let e = d || "end", r = n.y + t.height - (s.y + l.y);
1511
+ Te(m) + ye(m) > r + 1 ? I(m, null, { align: e }) : m < _.items.length - 1 && I(m + 1, null, { align: e });
1512
+ }
1513
+ else if (d === "end") I(Math.max(0, m - 1), null, { align: "end" });
1514
+ else {
1515
+ let e = d || "start", t = n.y + o.y + c.y;
1516
+ Te(p) < t - 1 ? I(p, null, { align: e }) : p > 0 && I(p - 1, null, { align: e });
1517
+ }
1518
+ else {
1519
+ let e = _.columnCount ? _.columnCount - 1 : _.items.length - 1;
1520
+ if (he.value ? !r : r) if (d === "start") I(null, Math.min(e, h + 1), { align: "start" });
1521
+ else {
1522
+ let r = d || "end", i = n.x + t.width - (s.x + l.x);
1523
+ (_.columnCount ? Ee(g) + F(g) : we(g) + Oe(g)) > i + 1 ? I(null, g, { align: r }) : g < e && I(null, g + 1, { align: r });
1524
+ }
1525
+ else if (d === "end") I(null, Math.max(0, g - 1), { align: "end" });
1526
+ else {
1527
+ let e = d || "start", t = n.x + o.x + c.x;
1528
+ (_.columnCount ? Ee(h) : we(h)) < t - 1 ? I(null, h, { align: e }) : h > 0 && I(null, h - 1, { align: e });
1529
+ }
1530
+ }
1531
+ };
1435
1532
  switch (e.key) {
1436
1533
  case "Home":
1437
- e.preventDefault(), G(), V(0, 0, {
1534
+ e.preventDefault(), L(), I(0, 0, {
1438
1535
  behavior: Math.max(n.x, n.y) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth",
1439
1536
  align: "start"
1440
1537
  });
1441
1538
  break;
1442
1539
  case "End": {
1443
- e.preventDefault(), G();
1444
- let r = _.items.length - 1, i = (_.columnCount || 0) > 0 ? _.columnCount - 1 : 0, { totalSize: a } = R.value, o = Math.max(a.width - n.x - t.width, a.height - n.y - t.height) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth";
1445
- _.direction === "both" ? V(r, i, {
1540
+ e.preventDefault(), L();
1541
+ let r = _.items.length - 1, i = (_.columnCount || 0) > 0 ? _.columnCount - 1 : 0, { totalSize: a } = P.value, o = Math.max(a.width - n.x - t.width, a.height - n.y - t.height) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth";
1542
+ _.direction === "both" ? I(r, i, {
1446
1543
  behavior: o,
1447
1544
  align: "end"
1448
- }) : V(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1545
+ }) : I(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1449
1546
  behavior: o,
1450
1547
  align: "end"
1451
1548
  });
1452
1549
  break;
1453
1550
  }
1454
- case "ArrowUp": {
1455
- if (e.preventDefault(), G(), !i) return;
1456
- let { currentIndex: t, scrollOffset: n } = R.value, r = n.y + a.y + F.value.scrollPaddingStart.y;
1457
- Ee(t) < r - 1 ? V(t, null, { align: "start" }) : t > 0 && V(t - 1, null, { align: "start" });
1551
+ case "ArrowUp":
1552
+ e.preventDefault(), L(), i && y(!0, !1);
1458
1553
  break;
1459
- }
1460
- case "ArrowDown": {
1461
- if (e.preventDefault(), G(), !i) return;
1462
- let { currentEndIndex: r } = R.value, a = n.y + t.height - (o.y + F.value.scrollPaddingEnd.y);
1463
- Ee(r) + pe(r) > a + 1 ? V(r, null, { align: "end" }) : r < _.items.length - 1 && V(r + 1, null, { align: "end" });
1554
+ case "ArrowDown":
1555
+ e.preventDefault(), L(), i && y(!0, !0);
1464
1556
  break;
1465
- }
1466
- case "ArrowLeft": {
1467
- if (e.preventDefault(), G(), !r) return;
1468
- let { currentColIndex: i, currentEndColIndex: s } = R.value;
1469
- if (I.value) {
1470
- let e = n.x + t.width - (o.x + F.value.scrollPaddingEnd.x);
1471
- (_.columnCount ? U(s) + B(s) : ye(s) + De(s)) > e + 1 ? V(null, s, { align: "end" }) : s < (_.columnCount ? _.columnCount - 1 : _.items.length - 1) && V(null, s + 1, { align: "end" });
1472
- } else {
1473
- let e = n.x + a.x + F.value.scrollPaddingStart.x;
1474
- (_.columnCount ? U(i) : ye(i)) < e - 1 ? V(null, i, { align: "start" }) : i > 0 && V(null, i - 1, { align: "start" });
1475
- }
1557
+ case "ArrowLeft":
1558
+ e.preventDefault(), L(), r && y(!1, !1);
1476
1559
  break;
1477
- }
1478
- case "ArrowRight": {
1479
- if (e.preventDefault(), G(), !r) return;
1480
- let { currentColIndex: i, currentEndColIndex: s } = R.value;
1481
- if (I.value) {
1482
- let e = n.x + a.x + F.value.scrollPaddingStart.x;
1483
- (_.columnCount ? U(i) : ye(i)) < e - 1 ? V(null, i, { align: "start" }) : i > 0 && V(null, i - 1, { align: "start" });
1484
- } else {
1485
- let e = n.x + t.width - (o.x + F.value.scrollPaddingEnd.x);
1486
- (_.columnCount ? U(s) + B(s) : ye(s) + De(s)) > e + 1 ? V(null, s, { align: "end" }) : s < (_.columnCount ? _.columnCount - 1 : _.items.length - 1) && V(null, s + 1, { align: "end" });
1487
- }
1560
+ case "ArrowRight":
1561
+ e.preventDefault(), L(), r && y(!1, !0);
1488
1562
  break;
1489
- }
1490
1563
  case "PageUp":
1491
- e.preventDefault(), G(), me(!i && r ? n.x - t.width : null, i ? n.y - t.height : null);
1564
+ e.preventDefault(), L(), _.direction === "horizontal" ? I(null, v(!1, !1), { align: d || "end" }) : I(v(!0, !1), null, { align: d || "end" });
1492
1565
  break;
1493
1566
  case "PageDown":
1494
- e.preventDefault(), G(), me(!i && r ? n.x + t.width : null, i ? n.y + t.height : null);
1567
+ e.preventDefault(), L(), _.direction === "horizontal" ? I(null, v(!1, !0), { align: d || "start" }) : I(v(!0, !0), null, { align: d || "start" });
1495
1568
  break;
1496
1569
  }
1497
1570
  }
1498
1571
  onUnmounted(() => {
1499
- Re?.disconnect(), X?.disconnect(), Z?.disconnect();
1572
+ U?.disconnect(), W?.disconnect(), G?.disconnect();
1500
1573
  });
1501
- let et = computed(() => {
1574
+ let ot = computed(() => {
1502
1575
  let e = { ..._.direction === "vertical" ? {} : { whiteSpace: "nowrap" } };
1503
- return (Pe.value || !ke.value) && (e.overflow = "auto"), Ne.value && (e.touchAction = "none"), ke.value ? e : _.containerTag === "table" ? {
1576
+ return (Ue.value || !Ne.value) && (e.overflow = "auto"), H.value && (e.touchAction = "none"), Ne.value ? e : _.containerTag === "table" ? {
1504
1577
  ...e,
1505
1578
  display: "block",
1506
1579
  minInlineSize: _.direction === "vertical" ? "100%" : "auto"
1507
1580
  } : e;
1508
- }), tt = computed(() => {
1509
- if (_.direction === "horizontal") return null;
1510
- let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1511
- if (de.value <= e.height) return null;
1512
- let n = {
1513
- axis: "vertical",
1514
- totalSize: de.value,
1515
- position: t.y,
1516
- viewportSize: e.height,
1517
- scrollToOffset: q,
1518
- containerId: P.value,
1519
- isRtl: I.value,
1520
- ariaLabel: "Vertical scroll"
1521
- };
1522
- return {
1523
- axis: "vertical",
1524
- positionPercent: Y.positionPercent.value,
1525
- viewportPercent: Y.viewportPercent.value,
1526
- thumbSizePercent: Y.thumbSizePercent.value,
1527
- thumbPositionPercent: Y.thumbPositionPercent.value,
1528
- trackProps: Y.trackProps.value,
1529
- thumbProps: Y.thumbProps.value,
1530
- scrollbarProps: n,
1531
- isDragging: Y.isDragging.value
1581
+ });
1582
+ function st(e, t, n, r, i, a) {
1583
+ return t <= r ? null : {
1584
+ axis: e,
1585
+ positionPercent: a.positionPercent.value,
1586
+ viewportPercent: a.viewportPercent.value,
1587
+ thumbSizePercent: a.thumbSizePercent.value,
1588
+ thumbPositionPercent: a.thumbPositionPercent.value,
1589
+ trackProps: a.trackProps.value,
1590
+ thumbProps: a.thumbProps.value,
1591
+ scrollbarProps: {
1592
+ axis: e,
1593
+ totalSize: t,
1594
+ position: n,
1595
+ viewportSize: r,
1596
+ scrollToOffset: i,
1597
+ containerId: A.value,
1598
+ isRtl: he.value,
1599
+ ariaLabel: `${e === "vertical" ? "Vertical" : "Horizontal"} scroll`
1600
+ },
1601
+ isDragging: a.isDragging.value
1532
1602
  };
1533
- }), nt = computed(() => {
1603
+ }
1604
+ let ct = computed(() => {
1605
+ if (_.direction === "horizontal") return null;
1606
+ let { displayViewportSize: e, displayScrollOffset: t } = P.value;
1607
+ return st("vertical", _e.value, t.y, e.height, We, Ke);
1608
+ }), lt = computed(() => {
1534
1609
  if (_.direction === "vertical") return null;
1535
- let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1536
- if (z.value <= e.width) return null;
1537
- let n = {
1538
- axis: "horizontal",
1539
- totalSize: z.value,
1540
- position: t.x,
1541
- viewportSize: e.width,
1542
- scrollToOffset: J,
1543
- containerId: P.value,
1544
- isRtl: I.value,
1545
- ariaLabel: "Horizontal scroll"
1546
- };
1547
- return {
1548
- axis: "horizontal",
1549
- positionPercent: Fe.positionPercent.value,
1550
- viewportPercent: Fe.viewportPercent.value,
1551
- thumbSizePercent: Fe.thumbSizePercent.value,
1552
- thumbPositionPercent: Fe.thumbPositionPercent.value,
1553
- trackProps: Fe.trackProps.value,
1554
- thumbProps: Fe.thumbProps.value,
1555
- scrollbarProps: n,
1556
- isDragging: Fe.isDragging.value
1557
- };
1558
- }), rt = computed(() => {
1610
+ let { displayViewportSize: e, displayScrollOffset: t } = P.value;
1611
+ return st("horizontal", ve.value, t.x, e.width, Ge, qe);
1612
+ }), ut = computed(() => {
1559
1613
  let e = _.direction === "horizontal", t = _.direction === "vertical", n = _.direction === "both", r = {
1560
- inlineSize: t ? "100%" : `${je.value}px`,
1561
- blockSize: e ? "100%" : `${Me.value}px`
1614
+ inlineSize: t ? "100%" : `${B.value}px`,
1615
+ blockSize: e ? "100%" : `${Ve.value}px`
1562
1616
  };
1563
- return le.value || (r.display = "flex", r.flexDirection = e ? "row" : "column", (e || n) && _.columnGap && (r.columnGap = `${_.columnGap}px`), (t || n) && _.gap && (r.rowGap = `${_.gap}px`)), r;
1564
- }), it = computed(() => {
1617
+ return M.value || (r.display = "flex", r.flexDirection = e ? "row" : "column", (e || n) && _.columnGap && (r.columnGap = `${_.columnGap}px`), (t || n) && _.gap && (r.rowGap = `${_.gap}px`)), r;
1618
+ }), dt = computed(() => {
1565
1619
  let e = _.direction === "horizontal";
1566
1620
  return {
1567
1621
  display: e ? "inline-block" : "block",
@@ -1570,120 +1624,122 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1570
1624
  verticalAlign: "top"
1571
1625
  } : { inlineSize: "100%" }
1572
1626
  };
1573
- }), at = computed(() => ({
1574
- inlineSize: _.direction === "vertical" ? "1px" : `${je.value}px`,
1575
- blockSize: _.direction === "horizontal" ? "1px" : `${Me.value}px`
1627
+ }), ft = computed(() => ({
1628
+ inlineSize: _.direction === "vertical" ? "1px" : `${B.value}px`,
1629
+ blockSize: _.direction === "horizontal" ? "1px" : `${Ve.value}px`
1576
1630
  }));
1577
- function ot(e) {
1631
+ function pt(e) {
1578
1632
  let t = calculateItemStyle({
1579
1633
  containerTag: _.containerTag || "div",
1580
1634
  direction: _.direction,
1581
- isHydrated: le.value,
1635
+ isHydrated: M.value,
1582
1636
  item: e,
1583
1637
  itemSize: _.itemSize,
1584
- paddingStartX: F.value.scrollPaddingStart.x,
1585
- paddingStartY: F.value.scrollPaddingStart.y,
1586
- isRtl: I.value
1638
+ paddingStartX: j.value.scrollPaddingStart.x,
1639
+ paddingStartY: j.value.scrollPaddingStart.y,
1640
+ isRtl: he.value
1587
1641
  });
1588
- return !le.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1642
+ return !M.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1589
1643
  }
1590
- let st = computed(() => _.debug), $ = computed(() => _.containerTag === "table"), ct = computed(() => $.value ? "thead" : "div"), lt = computed(() => $.value ? "tfoot" : "div"), ut = computed(() => _.role ? _.role : $.value ? null : _.direction === "both" ? "grid" : "list"), dt = computed(() => ut.value === "grid" || $.value), ft = computed(() => $.value ? null : _.ariaLabel || _.ariaLabelledby ? "region" : "none"), pt = computed(() => $.value ? null : ut.value), mt = computed(() => {
1591
- if (dt.value) return "row";
1592
- let e = ut.value;
1644
+ let mt = computed(() => _.debug), $ = computed(() => _.containerTag === "table"), ht = computed(() => $.value ? "thead" : "div"), gt = computed(() => $.value ? "tfoot" : "div"), _t = computed(() => _.role ? _.role : $.value ? null : _.direction === "both" ? "grid" : "list"), vt = computed(() => _t.value === "grid" || $.value), yt = computed(() => $.value ? null : _.ariaLabel || _.ariaLabelledby ? "region" : "none"), bt = computed(() => $.value ? null : _t.value), xt = computed(() => {
1645
+ if (vt.value) return "row";
1646
+ let e = _t.value;
1593
1647
  return e === "tree" ? "treeitem" : e === "listbox" ? "option" : e === "menu" ? "menuitem" : "listitem";
1594
- }), ht = computed(() => _.itemRole == null ? mt.value : _.itemRole), gt = computed(() => _.role === "grid" || !_.role && _.direction === "both" ? "gridcell" : $.value ? "cell" : null), _t = computed(() => {
1595
- let e = ht.value;
1648
+ }), St = computed(() => _.itemRole == null ? xt.value : _.itemRole), Ct = computed(() => _.role === "grid" || !_.role && _.direction === "both" ? "gridcell" : $.value ? "cell" : null), wt = computed(() => {
1649
+ let e = St.value;
1596
1650
  return e == null || e !== "none" && e !== "presentation";
1597
- }), vt = computed(() => ({
1651
+ }), Tt = computed(() => ({
1598
1652
  "aria-label": _.ariaLabel,
1599
1653
  "aria-labelledby": _.ariaLabelledby,
1600
1654
  "aria-busy": _.loading ? "true" : void 0
1601
- })), yt = computed(() => {
1602
- let e = {}, t = ut.value;
1655
+ })), Et = computed(() => {
1656
+ let e = {}, t = _t.value;
1603
1657
  return t && [
1604
1658
  "grid",
1605
1659
  "tree",
1606
1660
  "listbox",
1607
1661
  "menu",
1608
1662
  "tablist"
1609
- ].includes(t) && (e["aria-orientation"] = _.direction === "both" ? void 0 : _.direction), dt.value && (e["aria-rowcount"] = _.items.length, _.columnCount > 0 && (e["aria-colcount"] = _.columnCount)), e;
1663
+ ].includes(t) && (e["aria-orientation"] = _.direction === "both" ? void 0 : _.direction), vt.value && (e["aria-rowcount"] = _.items.length, _.columnCount > 0 && (e["aria-colcount"] = _.columnCount)), e;
1610
1664
  });
1611
- function bt(e) {
1665
+ function Dt(e) {
1612
1666
  let t = {};
1613
- dt.value ? t["aria-rowindex"] = e + 1 : (t["aria-setsize"] = _.items.length, t["aria-posinset"] = e + 1);
1614
- let n = ht.value;
1615
- return n !== null && (t.role = n === "none" || n === "presentation" ? mt.value : n), t;
1667
+ vt.value ? t["aria-rowindex"] = e + 1 : (t["aria-setsize"] = _.items.length, t["aria-posinset"] = e + 1);
1668
+ let n = St.value;
1669
+ return n !== null && (t.role = n === "none" || n === "presentation" ? xt.value : n), t;
1616
1670
  }
1617
- function xt(e) {
1618
- let t = gt.value;
1671
+ function Ot(e) {
1672
+ let t = Ct.value;
1619
1673
  if (!t) return {};
1620
1674
  let n = { role: t };
1621
- return dt.value && (n["aria-colindex"] = e + 1), n;
1675
+ return vt.value && (n["aria-colindex"] = e + 1), n;
1622
1676
  }
1623
1677
  return s({
1624
1678
  ...toRefs(_),
1625
- scrollDetails: R,
1626
- columnRange: ue,
1627
- getColumnWidth: B,
1628
- getRowHeight: pe,
1629
- getCellAriaProps: xt,
1630
- getItemAriaProps: bt,
1631
- getRowOffset: Ee,
1632
- getColumnOffset: U,
1633
- getItemOffset: ye,
1634
- getItemSize: De,
1635
- scrollToIndex: V,
1636
- scrollToOffset: me,
1637
- refresh: Le,
1679
+ scrollDetails: P,
1680
+ columnRange: N,
1681
+ getColumnWidth: F,
1682
+ getRowHeight: ye,
1683
+ getCellAriaProps: Ot,
1684
+ getItemAriaProps: Dt,
1685
+ getRowOffset: Te,
1686
+ getColumnOffset: Ee,
1687
+ getItemOffset: we,
1688
+ getItemSize: Oe,
1689
+ getRowIndexAt: V,
1690
+ getColIndexAt: He,
1691
+ scrollToIndex: I,
1692
+ scrollToOffset: be,
1693
+ refresh: Ye,
1638
1694
  stopProgrammaticScroll: () => {
1639
- G(), Je();
1695
+ L(), nt();
1640
1696
  },
1641
- updateDirection: _e,
1642
- isRtl: I,
1643
- isHydrated: le,
1644
- scaleX: K,
1645
- scaleY: Oe,
1646
- renderedWidth: z,
1647
- renderedHeight: de,
1648
- componentOffset: Ae,
1649
- scrollbarPropsVertical: tt,
1650
- scrollbarPropsHorizontal: nt
1697
+ updateDirection: Ce,
1698
+ isRtl: he,
1699
+ isHydrated: M,
1700
+ scaleX: je,
1701
+ scaleY: Me,
1702
+ renderedWidth: ve,
1703
+ renderedHeight: _e,
1704
+ componentOffset: Pe,
1705
+ scrollbarPropsVertical: ct,
1706
+ scrollbarPropsHorizontal: lt
1651
1707
  }), (t, s) => (openBlock(), createBlock(resolveDynamicComponent(o.containerTag), mergeProps({
1652
- id: P.value,
1708
+ id: A.value,
1653
1709
  ref_key: "hostRef",
1654
- ref: k,
1710
+ ref: E,
1655
1711
  class: ["virtual-scroll-container", [`virtual-scroll--${o.direction}`, {
1656
- "virtual-scroll--hydrated": unref(le),
1657
- "virtual-scroll--window": unref(ke),
1712
+ "virtual-scroll--hydrated": unref(M),
1713
+ "virtual-scroll--window": unref(Ne),
1658
1714
  "virtual-scroll--table": $.value,
1659
- "virtual-scroll--hide-scrollbar": Pe.value
1715
+ "virtual-scroll--hide-scrollbar": Ue.value
1660
1716
  }]],
1661
- style: et.value,
1717
+ style: ot.value,
1662
1718
  tabindex: "0",
1663
- role: $.value ? void 0 : ft.value
1719
+ role: $.value ? void 0 : yt.value
1664
1720
  }, $.value ? {
1665
- ...vt.value,
1666
- ...yt.value
1667
- } : vt.value, {
1668
- onKeydown: $e,
1669
- onPointerdown: Ye,
1670
- onPointermove: Xe,
1671
- onPointerup: Ze,
1672
- onPointercancel: Ze
1721
+ ...Tt.value,
1722
+ ...Et.value
1723
+ } : Tt.value, {
1724
+ onKeydown: at,
1725
+ onPointerdown: rt,
1726
+ onPointermove: it,
1727
+ onPointerup: Z,
1728
+ onPointercancel: Z
1673
1729
  }), {
1674
1730
  default: withCtx(() => [
1675
- Pe.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1731
+ Ue.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1676
1732
  class: "virtual-scroll-scrollbar-viewport",
1677
1733
  style: normalizeStyle({
1678
- inlineSize: `${unref(R).displayViewportSize.width}px`,
1679
- blockSize: `${unref(R).displayViewportSize.height}px`,
1734
+ inlineSize: `${unref(P).displayViewportSize.width}px`,
1735
+ blockSize: `${unref(P).displayViewportSize.height}px`,
1680
1736
  "--vsi-scrollbar-has-cross-gap": o.direction === "both" ? 1 : 0
1681
1737
  })
1682
- }, [O.scrollbar && tt.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 0 }, tt.value)), void 0, !0) : tt.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 1 }, tt.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0), O.scrollbar && nt.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 2 }, nt.value)), void 0, !0) : nt.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 3 }, nt.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0)], 4)])) : createCommentVNode("", !0),
1683
- O.header ? (openBlock(), createBlock(resolveDynamicComponent(ct.value), {
1738
+ }, [T.scrollbar && ct.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 0 }, ct.value)), void 0, !0) : ct.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 1 }, ct.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0), T.scrollbar && lt.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 2 }, lt.value)), void 0, !0) : lt.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 3 }, lt.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0)], 4)])) : createCommentVNode("", !0),
1739
+ T.header ? (openBlock(), createBlock(resolveDynamicComponent(ht.value), {
1684
1740
  key: 1,
1685
1741
  ref_key: "headerRef",
1686
- ref: j,
1742
+ ref: oe,
1687
1743
  class: normalizeClass(["virtual-scroll-header", { "virtual-scroll--sticky": o.stickyHeader }]),
1688
1744
  role: $.value ? void 0 : "none"
1689
1745
  }, {
@@ -1692,15 +1748,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1692
1748
  }, 8, ["class", "role"])) : createCommentVNode("", !0),
1693
1749
  (openBlock(), createBlock(resolveDynamicComponent(o.wrapperTag), mergeProps({
1694
1750
  ref_key: "wrapperRef",
1695
- ref: A,
1751
+ ref: D,
1696
1752
  class: "virtual-scroll-wrapper",
1697
- style: rt.value,
1698
- role: $.value ? void 0 : pt.value
1699
- }, $.value ? {} : yt.value), {
1753
+ style: ut.value,
1754
+ role: $.value ? void 0 : bt.value
1755
+ }, $.value ? {} : Et.value), {
1700
1756
  default: withCtx(() => [$.value ? (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), {
1701
1757
  key: 0,
1702
1758
  class: "virtual-scroll-spacer",
1703
- style: normalizeStyle(at.value)
1759
+ style: normalizeStyle(ft.value)
1704
1760
  }, {
1705
1761
  default: withCtx(() => [...s[0] ||= [createElementVNode("td", { style: {
1706
1762
  padding: "0",
@@ -1708,24 +1764,24 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1708
1764
  "block-size": "inherit"
1709
1765
  } }, null, -1)]]),
1710
1766
  _: 1
1711
- }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(L), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1767
+ }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(ge), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1712
1768
  key: e.index,
1713
1769
  ref_for: !0,
1714
- ref: (t) => Be(t, e.index),
1770
+ ref: (t) => Qe(t, e.index),
1715
1771
  "data-index": e.index,
1716
1772
  class: ["virtual-scroll-item", {
1717
1773
  "virtual-scroll--sticky": e.isStickyActive,
1718
- "virtual-scroll--debug": st.value
1774
+ "virtual-scroll--debug": mt.value
1719
1775
  }],
1720
- style: ot(e)
1721
- }, { ref_for: !0 }, _t.value ? bt(e.index) : { role: "none" }), {
1776
+ style: pt(e)
1777
+ }, { ref_for: !0 }, wt.value ? Dt(e.index) : { role: "none" }), {
1722
1778
  default: withCtx(() => [renderSlot(t.$slots, "item", {
1723
1779
  item: e.item,
1724
1780
  index: e.index,
1725
- getItemAriaProps: bt,
1726
- columnRange: Ie.value,
1727
- getColumnWidth: unref(B),
1728
- getCellAriaProps: xt,
1781
+ getItemAriaProps: Dt,
1782
+ columnRange: Je.value,
1783
+ getColumnWidth: unref(F),
1784
+ getCellAriaProps: Ot,
1729
1785
  gap: _.gap,
1730
1786
  columnGap: _.columnGap,
1731
1787
  isSticky: e.isSticky,
@@ -1733,7 +1789,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1733
1789
  isStickyActiveX: e.isStickyActiveX,
1734
1790
  isStickyActiveY: e.isStickyActiveY,
1735
1791
  offset: e.offset
1736
- }, void 0, !0), st.value ? (openBlock(), createElementBlock("div", _hoisted_2, " #" + toDisplayString(e.index) + " (" + toDisplayString(Math.round(e.offset.x)) + ", " + toDisplayString(Math.round(e.offset.y)) + ") ", 1)) : createCommentVNode("", !0)]),
1792
+ }, void 0, !0), mt.value ? (openBlock(), createElementBlock("div", _hoisted_2, " #" + toDisplayString(e.index) + " (" + toDisplayString(Math.round(e.offset.x)) + ", " + toDisplayString(Math.round(e.offset.y)) + ") ", 1)) : createCommentVNode("", !0)]),
1737
1793
  _: 2
1738
1794
  }, 1040, [
1739
1795
  "data-index",
@@ -1742,17 +1798,17 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1742
1798
  ]))), 128))]),
1743
1799
  _: 3
1744
1800
  }, 16, ["style", "role"])),
1745
- o.loading && O.loading ? (openBlock(), createElementBlock("div", {
1801
+ o.loading && T.loading ? (openBlock(), createElementBlock("div", {
1746
1802
  key: 2,
1747
1803
  class: "virtual-scroll-loading",
1748
- style: normalizeStyle(it.value),
1804
+ style: normalizeStyle(dt.value),
1749
1805
  "aria-live": "polite",
1750
1806
  "aria-atomic": "true"
1751
1807
  }, [renderSlot(t.$slots, "loading", {}, void 0, !0)], 4)) : createCommentVNode("", !0),
1752
- O.footer ? (openBlock(), createBlock(resolveDynamicComponent(lt.value), {
1808
+ T.footer ? (openBlock(), createBlock(resolveDynamicComponent(gt.value), {
1753
1809
  key: 3,
1754
1810
  ref_key: "footerRef",
1755
- ref: M,
1811
+ ref: se,
1756
1812
  class: normalizeClass(["virtual-scroll-footer", { "virtual-scroll--sticky": o.stickyFooter }]),
1757
1813
  role: $.value ? void 0 : "none"
1758
1814
  }, {
@@ -1768,7 +1824,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1768
1824
  "role"
1769
1825
  ]));
1770
1826
  }
1771
- }), [["__scopeId", "data-v-184bc0a9"]]);
1772
- export { BROWSER_MAX_SIZE, DEFAULT_BUFFER, DEFAULT_COLUMN_WIDTH, DEFAULT_ITEM_SIZE, EMPTY_SCROLL_DETAILS, FenwickTree, VirtualScroll_default as VirtualScroll, VirtualScrollbar_default as VirtualScrollbar, calculateColumnRange, calculateItemPosition, calculateItemStyle, calculateRange, calculateScrollTarget, calculateStickyItem, calculateTotalSize, displayToVirtual, findPrevStickyIndex, getPaddingX, getPaddingY, isBody, isElement, isItemVisible, isScrollToIndexOptions, isScrollableElement, isWindow, isWindowLike, scrollTo, useVirtualScroll, useVirtualScrollbar, virtualToDisplay };
1827
+ }), [["__scopeId", "data-v-55dd91b2"]]);
1828
+ export { BROWSER_MAX_SIZE, DEFAULT_BUFFER, DEFAULT_COLUMN_WIDTH, DEFAULT_ITEM_SIZE, EMPTY_SCROLL_DETAILS, FenwickTree, VirtualScroll_default as VirtualScroll, VirtualScrollbar_default as VirtualScrollbar, calculateAxisSize, calculateColumnRange, calculateIndexAt, calculateInertiaStep, calculateInstantaneousVelocity, calculateItemPosition, calculateItemStyle, calculateOffsetAt, calculatePrependCount, calculateRange, calculateRangeSize, calculateRenderedSize, calculateSSROffsets, calculateScale, calculateScrollTarget, calculateStickyItem, calculateTotalSize, displayToVirtual, findPrevStickyIndex, getPaddingX, getPaddingY, isBody, isElement, isItemVisible, isScrollToIndexOptions, isScrollableElement, isWindow, isWindowLike, resolveSnap, scrollTo, useVirtualScroll, useVirtualScrollSizes, useVirtualScrollbar, virtualToDisplay };
1773
1829
 
1774
1830
  //# sourceMappingURL=index.mjs.map