@pdanpdan/virtual-scroll 0.10.0 → 0.10.2

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
@@ -57,7 +57,7 @@ function scrollTo(e, t) {
57
57
  isWindow(e) ? window.scrollTo(t) : e != null && isScrollableElement(e) && (typeof e.scrollTo == "function" ? e.scrollTo(t) : (t.left !== void 0 && (e.scrollLeft = t.left), t.top !== void 0 && (e.scrollTop = t.top)));
58
58
  }
59
59
  function isScrollToIndexOptions(e) {
60
- return typeof e == "object" && !!e && ("align" in e || "behavior" in e || "isCorrection" in e);
60
+ return typeof e == "object" && !!e && ("align" in e || "behavior" in e || "isCorrection" in e || "dryRun" in e);
61
61
  }
62
62
  function getPaddingX(e, t) {
63
63
  return typeof e == "object" && e ? e.x || 0 : (t === "horizontal" || t === "both") && e || 0;
@@ -188,14 +188,14 @@ function displayToVirtual(e, t, n) {
188
188
  function virtualToDisplay(e, t, n) {
189
189
  return e / n + t;
190
190
  }
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: E = 0, stickyEndX: D = 0, stickyEndY: te = 0, flowPaddingStartX: ne = 0, flowPaddingStartY: O = 0, paddingStartX: k = 0, paddingStartY: A = 0, paddingEndX: re = 0, paddingEndY: ie = 0 }) {
192
- let j;
193
- j = isScrollToIndexOptions(n) ? n.align : n;
194
- let N = (j && typeof j == "object" ? j.x : j) || "auto", ae = (j && typeof j == "object" ? j.y : j) || "auto", oe = f, se = p, ce = 0, le = 0, de = "auto", fe = "auto", P = b === 1 ? o : BROWSER_MAX_SIZE, F = x === 1 ? s : BROWSER_MAX_SIZE, pe = Math.max(0, S + P - i), me = Math.max(0, C + F - a), I = (pe - S) * b, L = (me - C) * x, he = ne + T + k, z = O + E + 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: E = 0, stickyEndX: D = 0, stickyEndY: O = 0, flowPaddingStartX: te = 0, flowPaddingStartY: k = 0, paddingStartX: A = 0, paddingStartY: j = 0, paddingEndX: ne = 0, paddingEndY: re = 0 }) {
192
+ let M;
193
+ M = isScrollToIndexOptions(n) ? n.align : n;
194
+ let P = (M && typeof M == "object" ? M.x : M) || "auto", ie = (M && typeof M == "object" ? M.y : M) || "auto", ae = f, oe = p, se = 0, ce = 0, ue = "auto", de = "auto", F = b === 1 ? o : BROWSER_MAX_SIZE, I = x === 1 ? s : BROWSER_MAX_SIZE, fe = Math.max(0, S + F - i), pe = Math.max(0, C + I - a), L = (fe - S) * b, R = (pe - C) * x, me = te + T + A, B = k + E + j;
195
195
  if (e != null) {
196
196
  let t = calculateAxisTarget({
197
197
  index: e,
198
- align: ae,
198
+ align: ie,
199
199
  viewSize: a,
200
200
  scrollPos: p,
201
201
  fixedSize: u,
@@ -203,15 +203,15 @@ function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction
203
203
  query: g,
204
204
  getSize: m,
205
205
  stickyIndices: w,
206
- stickyStart: E + A,
207
- stickyEnd: te + ie
206
+ stickyStart: E + j,
207
+ stickyEnd: O + re
208
208
  });
209
- se = t.target + z, le = t.itemSize, fe = t.effectiveAlign;
209
+ oe = t.target + B, ce = t.itemSize, de = t.effectiveAlign;
210
210
  }
211
211
  if (t != null) {
212
212
  let e = r === "both", n = calculateAxisTarget({
213
213
  index: t,
214
- align: N,
214
+ align: P,
215
215
  viewSize: i,
216
216
  scrollPos: f,
217
217
  fixedSize: e ? d : u,
@@ -219,18 +219,18 @@ function calculateScrollTarget({ rowIndex: e, colIndex: t, options: n, direction
219
219
  query: e ? y : _,
220
220
  getSize: e ? v : h,
221
221
  stickyIndices: w,
222
- stickyStart: T + k,
223
- stickyEnd: D + re
222
+ stickyStart: T + A,
223
+ stickyEnd: D + ne
224
224
  });
225
- oe = n.target + he, ce = n.itemSize, de = n.effectiveAlign;
225
+ ae = n.target + me, se = n.itemSize, ue = n.effectiveAlign;
226
226
  }
227
- return oe = Math.max(0, Math.min(oe, I)), se = Math.max(0, Math.min(se, L)), {
228
- targetX: oe,
229
- targetY: se,
230
- itemWidth: ce,
231
- itemHeight: le,
232
- effectiveAlignX: de,
233
- effectiveAlignY: fe
227
+ return ae = Math.max(0, Math.min(ae, L)), oe = Math.max(0, Math.min(oe, R)), {
228
+ targetX: ae,
229
+ targetY: oe,
230
+ itemWidth: se,
231
+ itemHeight: ce,
232
+ effectiveAlignX: ue,
233
+ effectiveAlignY: de
234
234
  };
235
235
  }
236
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 }) {
@@ -364,19 +364,25 @@ function resolveSnap(e, t, n, r, i, a, o, s, c, l) {
364
364
  if (e === "auto") if (t === "start") u = "end";
365
365
  else if (t === "end") u = "start";
366
366
  else return null;
367
- if (e === "next") {
368
- if (t === "start") u = "end";
369
- else if (t === "end") u = "start";
370
- else return null;
371
- if (u === "start") return s(n) > a ? null : {
367
+ if (e === "next") if (t === "end") {
368
+ let e = s(n);
369
+ return e > a ? null : i - c(n) <= Math.min(5, e * .1) ? {
370
+ index: n,
371
+ align: "start"
372
+ } : {
372
373
  index: Math.min(o - 1, n + 1),
373
374
  align: "start"
374
375
  };
375
- if (u === "end") return s(r) > a ? null : {
376
+ } else if (t === "start") {
377
+ let e = s(r);
378
+ return e > a ? null : c(r) + e - (i + a) <= Math.min(5, e * .1) ? {
379
+ index: r,
380
+ align: "end"
381
+ } : {
376
382
  index: Math.max(0, r - 1),
377
383
  align: "end"
378
384
  };
379
- }
385
+ } else return null;
380
386
  if (u === "start") {
381
387
  let e = s(n);
382
388
  if (e > a) return null;
@@ -570,47 +576,47 @@ function useVirtualScroll(e, n = []) {
570
576
  }), S = reactive({
571
577
  x: 0,
572
578
  y: 0
573
- }), C, w = ref(1), E = ref(1), D = ref(null), te = ref(null), O = ref(null), k = ref(!1), A, re = () => {
574
- k.value = !1, clearTimeout(A), O.value = null;
575
- }, ie = 0, j = 0, M = computed(() => [
579
+ }), C, w = ref(1), E = ref(1), D = ref(null), O = ref(null), k = ref(null), A = ref(!1), j, ne = () => {
580
+ A.value = !1, clearTimeout(j), k.value = null;
581
+ }, re = 0, M = 0, N = computed(() => [
576
582
  "vertical",
577
583
  "horizontal",
578
584
  "both"
579
- ].includes(r.value.direction) ? r.value.direction : "vertical"), N = computed(() => r.value.itemSize === void 0 || r.value.itemSize === null || r.value.itemSize === 0), ae = computed(() => r.value.columnWidth === void 0 || r.value.columnWidth === null || r.value.columnWidth === 0), P = computed(() => typeof r.value.itemSize == "number" && r.value.itemSize > 0 ? r.value.itemSize : null), F = computed(() => typeof r.value.columnWidth == "number" && r.value.columnWidth > 0 ? r.value.columnWidth : null), me = computed(() => r.value.defaultItemSize || P.value || 40), { itemSizesX: I, itemSizesY: R, columnSizes: z, measuredColumns: ge, measuredItemsY: B, treeUpdateFlag: we, getSizeAt: Ee, getItemBaseSize: De, initializeSizes: Oe, updateItemSizes: ke, refresh: je } = useVirtualScrollSizes(computed(() => ({
585
+ ].includes(r.value.direction) ? r.value.direction : "vertical"), P = computed(() => r.value.itemSize === void 0 || r.value.itemSize === null || r.value.itemSize === 0), ie = computed(() => r.value.columnWidth === void 0 || r.value.columnWidth === null || r.value.columnWidth === 0), F = computed(() => typeof r.value.itemSize == "number" && r.value.itemSize > 0 ? r.value.itemSize : null), I = computed(() => typeof r.value.columnWidth == "number" && r.value.columnWidth > 0 ? r.value.columnWidth : null), pe = computed(() => r.value.defaultItemSize || F.value || 40), { itemSizesX: L, itemSizesY: z, columnSizes: B, measuredColumns: he, measuredItemsY: V, treeUpdateFlag: Ce, getSizeAt: Te, getItemBaseSize: Ee, initializeSizes: De, updateItemSizes: Oe, refresh: Ae } = useVirtualScrollSizes(computed(() => ({
580
586
  props: r.value,
581
- isDynamicItemSize: N.value,
582
- isDynamicColumnWidth: ae.value,
583
- defaultSize: me.value,
584
- fixedItemSize: P.value,
585
- direction: M.value
586
- }))), Ne = computed(() => getPaddingX(r.value.scrollPaddingStart, r.value.direction)), Pe = computed(() => getPaddingX(r.value.scrollPaddingEnd, r.value.direction)), Fe = computed(() => getPaddingY(r.value.scrollPaddingStart, r.value.direction)), Ie = computed(() => getPaddingY(r.value.scrollPaddingEnd, r.value.direction)), H = computed(() => getPaddingX(r.value.stickyStart, r.value.direction)), Le = computed(() => getPaddingX(r.value.stickyEnd, r.value.direction)), U = computed(() => getPaddingY(r.value.stickyStart, r.value.direction)), Re = computed(() => getPaddingY(r.value.stickyEnd, r.value.direction)), W = computed(() => getPaddingX(r.value.flowPaddingStart, r.value.direction)), ze = computed(() => getPaddingX(r.value.flowPaddingEnd, r.value.direction)), Be = computed(() => getPaddingY(r.value.flowPaddingStart, r.value.direction)), Ve = computed(() => getPaddingY(r.value.flowPaddingEnd, r.value.direction)), He = computed(() => y.value - (M.value === "vertical" ? 0 : H.value + Le.value)), Ue = computed(() => b.value - (M.value === "horizontal" ? 0 : U.value + Re.value)), We = computed(() => (we.value, calculateTotalSize({
587
- direction: M.value,
587
+ isDynamicItemSize: P.value,
588
+ isDynamicColumnWidth: ie.value,
589
+ defaultSize: pe.value,
590
+ fixedItemSize: F.value,
591
+ direction: N.value
592
+ }))), Me = computed(() => getPaddingX(r.value.scrollPaddingStart, r.value.direction)), Ne = computed(() => getPaddingX(r.value.scrollPaddingEnd, r.value.direction)), Pe = computed(() => getPaddingY(r.value.scrollPaddingStart, r.value.direction)), Fe = computed(() => getPaddingY(r.value.scrollPaddingEnd, r.value.direction)), U = computed(() => getPaddingX(r.value.stickyStart, r.value.direction)), Ie = computed(() => getPaddingX(r.value.stickyEnd, r.value.direction)), W = computed(() => getPaddingY(r.value.stickyStart, r.value.direction)), Le = computed(() => getPaddingY(r.value.stickyEnd, r.value.direction)), Re = computed(() => getPaddingX(r.value.flowPaddingStart, r.value.direction)), ze = computed(() => getPaddingX(r.value.flowPaddingEnd, r.value.direction)), Be = computed(() => getPaddingY(r.value.flowPaddingStart, r.value.direction)), Ve = computed(() => getPaddingY(r.value.flowPaddingEnd, r.value.direction)), He = computed(() => y.value - (N.value === "vertical" ? 0 : U.value + Ie.value)), Ue = computed(() => b.value - (N.value === "horizontal" ? 0 : W.value + Le.value)), We = computed(() => (Ce.value, calculateTotalSize({
593
+ direction: N.value,
588
594
  itemsLength: r.value.items.length,
589
595
  columnCount: r.value.columnCount || 0,
590
- fixedSize: P.value,
591
- fixedWidth: F.value,
596
+ fixedSize: F.value,
597
+ fixedWidth: I.value,
592
598
  gap: r.value.gap || 0,
593
599
  columnGap: r.value.columnGap || 0,
594
600
  usableWidth: He.value,
595
601
  usableHeight: Ue.value,
596
- queryY: (e) => R.query(e),
597
- queryX: (e) => I.query(e),
598
- queryColumn: (e) => z.query(e)
599
- }))), Ge = computed(() => isWindowLike(r.value.container)), Ke = computed(() => We.value.width + Ne.value + Pe.value), qe = computed(() => We.value.height + Fe.value + Ie.value), G = computed(() => W.value + H.value + Le.value + ze.value + Ke.value), Je = computed(() => Be.value + U.value + Re.value + Ve.value + qe.value), K = reactive({
600
- x: computed(() => Math.max(0, x.x - (W.value + H.value))),
601
- y: computed(() => Math.max(0, x.y - (Be.value + U.value)))
602
+ queryY: (e) => z.query(e),
603
+ queryX: (e) => L.query(e),
604
+ queryColumn: (e) => B.query(e)
605
+ }))), Ge = computed(() => isWindowLike(r.value.container)), Ke = computed(() => We.value.width + Me.value + Ne.value), qe = computed(() => We.value.height + Pe.value + Fe.value), G = computed(() => Re.value + U.value + Ie.value + ze.value + Ke.value), Je = computed(() => Be.value + W.value + Le.value + Ve.value + qe.value), K = reactive({
606
+ x: computed(() => Math.max(0, x.x - (Re.value + U.value))),
607
+ y: computed(() => Math.max(0, x.y - (Be.value + W.value)))
602
608
  }), Ye = computed(() => calculateRenderedSize(Ge.value, G.value)), Xe = computed(() => calculateRenderedSize(Ge.value, Je.value)), Ze = computed(() => calculateRenderedSize(Ge.value, Ke.value)), Qe = computed(() => calculateRenderedSize(Ge.value, qe.value)), q = computed(() => {
603
- if (M.value === "vertical") return 0;
604
- let e = W.value + H.value + Ne.value;
609
+ if (N.value === "vertical") return 0;
610
+ let e = Re.value + U.value + Me.value;
605
611
  return o.value - e;
606
612
  }), J = computed(() => {
607
- if (M.value === "horizontal") return 0;
608
- let e = Be.value + U.value + Fe.value;
613
+ if (N.value === "horizontal") return 0;
614
+ let e = Be.value + W.value + Pe.value;
609
615
  return c.value - e;
610
616
  }), Y = (e) => {
611
- let t = M.value === "horizontal";
612
- return calculateIndexAt(e, P.value, t ? r.value.columnGap || 0 : r.value.gap || 0, (e) => t ? I.findLowerBound(e) : R.findLowerBound(e));
613
- }, $e = (e) => M.value === "both" ? calculateIndexAt(e, F.value, r.value.columnGap || 0, (e) => z.findLowerBound(e)) : M.value === "horizontal" ? Y(e) : 0, et = (e) => M.value === "both" ? Ee(e, r.value.columnWidth, r.value.defaultColumnWidth || 100, r.value.columnGap || 0, z, !0) : Ee(e, r.value.itemSize, r.value.defaultItemSize || 40, r.value.columnGap || 0, I, !0), tt = (e) => M.value === "horizontal" ? Ue.value : Ee(e, r.value.itemSize, r.value.defaultItemSize || 40, r.value.gap || 0, R, !1), nt = (e) => M.value === "horizontal" ? W.value + H.value + Ne.value + calculateOffsetAt(e, P.value, r.value.columnGap || 0, (e) => I.query(e)) : Be.value + U.value + Fe.value + calculateOffsetAt(e, P.value, r.value.gap || 0, (e) => R.query(e)), rt = (e) => M.value === "horizontal" ? et(e) : tt(e), X = () => {
617
+ let t = N.value === "horizontal";
618
+ return calculateIndexAt(e, F.value, t ? r.value.columnGap || 0 : r.value.gap || 0, (e) => t ? L.findLowerBound(e) : z.findLowerBound(e));
619
+ }, $e = (e) => N.value === "both" ? calculateIndexAt(e, I.value, r.value.columnGap || 0, (e) => B.findLowerBound(e)) : N.value === "horizontal" ? Y(e) : 0, et = (e) => N.value === "both" ? Te(e, r.value.columnWidth, r.value.defaultColumnWidth || 100, r.value.columnGap || 0, B, !0) : Te(e, r.value.itemSize, r.value.defaultItemSize || 40, r.value.columnGap || 0, L, !0), tt = (e) => N.value === "horizontal" ? Ue.value : Te(e, r.value.itemSize, r.value.defaultItemSize || 40, r.value.gap || 0, z, !1), nt = (e) => N.value === "horizontal" ? Re.value + U.value + Me.value + calculateOffsetAt(e, F.value, r.value.columnGap || 0, (e) => L.query(e)) : Be.value + W.value + Pe.value + calculateOffsetAt(e, F.value, r.value.gap || 0, (e) => z.query(e)), rt = (e) => N.value === "horizontal" ? et(e) : tt(e), X = () => {
614
620
  if (typeof window > "u") return;
615
621
  let e = r.value.container || r.value.hostRef || window, t = isElement(e) ? e : document.documentElement, n = window.getComputedStyle(t).direction === "rtl";
616
622
  g.value !== n && (g.value = n);
@@ -620,84 +626,93 @@ function useVirtualScroll(e, n = []) {
620
626
  });
621
627
  };
622
628
  function at(e, t, n) {
623
- let s = typeof n == "object" && n && "isCorrection" in n ? n.isCorrection : !1, l = r.value.container || window, { targetX: u, targetY: d, effectiveAlignX: f, effectiveAlignY: p } = calculateScrollTarget({
629
+ let s = isScrollToIndexOptions(n) ? n.isCorrection : !1, l = isScrollToIndexOptions(n) ? n.dryRun : !1, u = r.value.container || window, { targetX: d, targetY: f, effectiveAlignX: p, effectiveAlignY: m } = calculateScrollTarget({
624
630
  rowIndex: e,
625
631
  colIndex: t,
626
632
  options: n,
627
- direction: M.value,
633
+ direction: N.value,
628
634
  viewportWidth: y.value,
629
635
  viewportHeight: b.value,
630
636
  totalWidth: G.value,
631
637
  totalHeight: Je.value,
632
638
  gap: r.value.gap || 0,
633
639
  columnGap: r.value.columnGap || 0,
634
- fixedSize: P.value,
635
- fixedWidth: F.value,
640
+ fixedSize: F.value,
641
+ fixedWidth: I.value,
636
642
  relativeScrollX: q.value,
637
643
  relativeScrollY: J.value,
638
- getItemSizeY: (e) => R.get(e),
639
- getItemSizeX: (e) => I.get(e),
640
- getItemQueryY: (e) => R.query(e),
641
- getItemQueryX: (e) => I.query(e),
642
- getColumnSize: (e) => z.get(e),
643
- getColumnQuery: (e) => z.query(e),
644
+ getItemSizeY: (e) => z.get(e),
645
+ getItemSizeX: (e) => L.get(e),
646
+ getItemQueryY: (e) => z.query(e),
647
+ getItemQueryX: (e) => L.query(e),
648
+ getColumnSize: (e) => B.get(e),
649
+ getColumnQuery: (e) => B.query(e),
644
650
  scaleX: w.value,
645
651
  scaleY: E.value,
646
652
  hostOffsetX: K.x,
647
653
  hostOffsetY: K.y,
648
654
  stickyIndices: r.value.stickyIndices || [],
649
- stickyStartX: H.value,
650
- stickyStartY: U.value,
651
- stickyEndX: Le.value,
652
- stickyEndY: Re.value,
653
- flowPaddingStartX: W.value,
655
+ stickyStartX: U.value,
656
+ stickyStartY: W.value,
657
+ stickyEndX: Ie.value,
658
+ stickyEndY: Le.value,
659
+ flowPaddingStartX: Re.value,
654
660
  flowPaddingStartY: Be.value,
655
- paddingStartX: Ne.value,
656
- paddingStartY: Fe.value,
657
- paddingEndX: Pe.value,
658
- paddingEndY: Ie.value
661
+ paddingStartX: Me.value,
662
+ paddingStartY: Pe.value,
663
+ paddingEndX: Ne.value,
664
+ paddingEndY: Fe.value
659
665
  });
660
- if (!s) {
666
+ if (!s && !l) {
661
667
  let r = isScrollToIndexOptions(n) ? n.behavior : void 0;
662
- O.value = {
668
+ k.value = {
663
669
  rowIndex: e,
664
670
  colIndex: t,
665
671
  options: {
666
672
  align: {
667
- x: f,
668
- y: p
673
+ x: p,
674
+ y: m
669
675
  },
670
676
  ...r == null ? {} : { behavior: r }
671
677
  }
672
678
  };
673
679
  }
674
- let m = virtualToDisplay(u, K.x, w.value), h = virtualToDisplay(d, K.y, E.value), _ = g.value ? -m : m, v = h, x;
675
- isScrollToIndexOptions(n) && (x = n.behavior);
676
- let S = s ? "auto" : x || "smooth";
677
- k.value = !0, clearTimeout(A), S === "smooth" && (A = setTimeout(() => {
678
- k.value = !1, A = void 0, gt();
679
- }, 500));
680
- let C = { behavior: S };
681
- t != null && (C.left = g.value ? _ : Math.max(0, _)), e != null && (C.top = Math.max(0, v)), scrollTo(l, C), (S === "auto" || S === void 0) && (t != null && (i.value = g.value ? _ : Math.max(0, _), o.value = u), e != null && (a.value = Math.max(0, v), c.value = d));
680
+ let h = virtualToDisplay(d, K.x, w.value), _ = virtualToDisplay(f, K.y, E.value), v = g.value ? -h : h, x = _, S;
681
+ isScrollToIndexOptions(n) && (S = n.behavior);
682
+ let C = s ? "auto" : S || "smooth";
683
+ l || (C === "smooth" || !s) && (A.value = !0, clearTimeout(j), j = C === "smooth" ? setTimeout(() => {
684
+ A.value = !1, j = void 0, gt();
685
+ }, 1e3) : setTimeout(() => {
686
+ A.value = !1, j = void 0;
687
+ }, 150));
688
+ let T = { behavior: C };
689
+ return t != null && (T.left = g.value ? v : Math.max(0, v)), e != null && (T.top = Math.max(0, x)), !s && !l && scrollTo(u, T), !l && (C === "auto" || C === void 0) && (t != null && (i.value = g.value ? v : Math.max(0, v), o.value = d), e != null && (a.value = Math.max(0, x), c.value = f)), {
690
+ targetX: d,
691
+ targetY: f,
692
+ displayTargetX: h,
693
+ displayTargetY: _
694
+ };
682
695
  }
683
696
  function Z(e, t, n) {
684
697
  let s = r.value.container || window;
685
- k.value = !0, clearTimeout(A), n?.behavior === "smooth" && (A = setTimeout(() => {
686
- k.value = !1, A = void 0, gt();
687
- }, 500)), O.value = null;
698
+ A.value = !0, clearTimeout(j), j = n?.behavior === "smooth" ? setTimeout(() => {
699
+ A.value = !1, j = void 0, gt();
700
+ }, 1e3) : setTimeout(() => {
701
+ A.value = !1, j = void 0;
702
+ }, 150), k.value = null;
688
703
  let l = e == null ? null : Math.max(0, Math.min(e, G.value - y.value)), u = t == null ? null : Math.max(0, Math.min(t, Je.value - b.value));
689
704
  l !== null && (o.value = l), u !== null && (c.value = u);
690
705
  let d = typeof window < "u" && s === window ? window.scrollX : s.scrollLeft, f = typeof window < "u" && s === window ? window.scrollY : s.scrollTop, p = l === null ? null : virtualToDisplay(l, K.x, w.value), m = u === null ? null : virtualToDisplay(u, K.y, E.value), h = p === null ? d : g.value ? -p : p, _ = m === null ? f : m, v = { behavior: n?.behavior || "auto" };
691
706
  e != null && (v.left = h), t != null && (v.top = _), scrollTo(s, v), (n?.behavior === "auto" || n?.behavior === void 0) && (e != null && (i.value = h), t != null && (a.value = _));
692
707
  }
693
708
  let ot = computed(() => {
694
- if (we.value, (!d.value || f.value) && r.value.ssrRange) return {
709
+ if (Ce.value, (!d.value || f.value) && r.value.ssrRange) return {
695
710
  start: r.value.ssrRange.start,
696
711
  end: r.value.ssrRange.end
697
712
  };
698
713
  let e = r.value.ssrRange && !l.value ? 0 : r.value.bufferBefore ?? 5, t = r.value.bufferAfter ?? 5;
699
714
  return calculateRange({
700
- direction: M.value,
715
+ direction: N.value,
701
716
  relativeScrollX: q.value,
702
717
  relativeScrollY: J.value,
703
718
  usableWidth: He.value,
@@ -707,18 +722,18 @@ function useVirtualScroll(e, n = []) {
707
722
  bufferAfter: t,
708
723
  gap: r.value.gap || 0,
709
724
  columnGap: r.value.columnGap || 0,
710
- fixedSize: P.value,
711
- findLowerBoundY: (e) => R.findLowerBound(e),
712
- findLowerBoundX: (e) => I.findLowerBound(e),
713
- queryY: (e) => R.query(e),
714
- queryX: (e) => I.query(e)
725
+ fixedSize: F.value,
726
+ findLowerBoundY: (e) => z.findLowerBound(e),
727
+ findLowerBoundX: (e) => L.findLowerBound(e),
728
+ queryY: (e) => z.query(e),
729
+ queryX: (e) => L.query(e)
715
730
  });
716
731
  }), st = computed(() => {
717
- we.value;
718
- let e = q.value + H.value, t = J.value + U.value;
719
- return Y(M.value === "horizontal" ? e : t);
732
+ Ce.value;
733
+ let e = q.value + U.value, t = J.value + W.value;
734
+ return Y(N.value === "horizontal" ? e : t);
720
735
  }), ct = computed(() => {
721
- we.value;
736
+ Ce.value;
722
737
  let e = r.value.columnCount || 0;
723
738
  if (!e) return {
724
739
  start: 0,
@@ -730,14 +745,14 @@ function useVirtualScroll(e, n = []) {
730
745
  let { colStart: t = 0, colEnd: n = 0 } = r.value.ssrRange, i = Math.max(0, t), a = Math.min(e, n || e);
731
746
  return calculateColumnRange({
732
747
  columnCount: e,
733
- relativeScrollX: calculateOffsetAt(i, F.value, r.value.columnGap || 0, (e) => z.query(e)),
734
- usableWidth: calculateRangeSize(i, a, F.value, r.value.columnGap || 0, (e) => z.query(e)),
748
+ relativeScrollX: calculateOffsetAt(i, I.value, r.value.columnGap || 0, (e) => B.query(e)),
749
+ usableWidth: calculateRangeSize(i, a, I.value, r.value.columnGap || 0, (e) => B.query(e)),
735
750
  colBuffer: 0,
736
- fixedWidth: F.value,
751
+ fixedWidth: I.value,
737
752
  columnGap: r.value.columnGap || 0,
738
- findLowerBound: (e) => z.findLowerBound(e),
739
- query: (e) => z.query(e),
740
- totalColsQuery: () => z.query(e)
753
+ findLowerBound: (e) => B.findLowerBound(e),
754
+ query: (e) => B.query(e),
755
+ totalColsQuery: () => B.query(e)
741
756
  });
742
757
  }
743
758
  let t = r.value.ssrRange && !l.value ? 0 : 2;
@@ -746,11 +761,11 @@ function useVirtualScroll(e, n = []) {
746
761
  relativeScrollX: q.value,
747
762
  usableWidth: He.value,
748
763
  colBuffer: t,
749
- fixedWidth: F.value,
764
+ fixedWidth: I.value,
750
765
  columnGap: r.value.columnGap || 0,
751
- findLowerBound: (e) => z.findLowerBound(e),
752
- query: (e) => z.query(e),
753
- totalColsQuery: () => z.query(e)
766
+ findLowerBound: (e) => B.findLowerBound(e),
767
+ query: (e) => B.query(e),
768
+ totalColsQuery: () => B.query(e)
754
769
  });
755
770
  }), lt = {
756
771
  props: r,
@@ -768,13 +783,13 @@ function useVirtualScroll(e, n = []) {
768
783
  internalScrollY: c,
769
784
  isRtl: g,
770
785
  isScrolling: l,
771
- isProgrammaticScroll: k,
786
+ isProgrammaticScroll: A,
772
787
  viewportWidth: y,
773
788
  viewportHeight: b,
774
789
  scaleX: w,
775
790
  scaleY: E,
776
791
  scrollDirectionX: D,
777
- scrollDirectionY: te,
792
+ scrollDirectionY: O,
778
793
  relativeScrollX: q,
779
794
  relativeScrollY: J
780
795
  },
@@ -785,31 +800,31 @@ function useVirtualScroll(e, n = []) {
785
800
  getRowIndexAt: Y,
786
801
  getColIndexAt: $e,
787
802
  getItemSize: rt,
788
- getItemBaseSize: De,
803
+ getItemBaseSize: Ee,
789
804
  getItemOffset: nt,
790
805
  handleScrollCorrection: it
791
806
  }
792
807
  }, ut = [], dt = computed(() => {
793
- we.value;
808
+ Ce.value;
794
809
  let { start: e, end: t } = ot.value, i = [], a = [...r.value.stickyIndices || []].sort((e, t) => e - t), s = new Set(a), l = [];
795
810
  if (d.value || !r.value.ssrRange) {
796
811
  let t = st.value, n = findPrevStickyIndex(a, t);
797
812
  n !== void 0 && n < e && l.push(n);
798
813
  }
799
814
  for (let n = e; n < t; n++) l.push(n);
800
- let { x: u, y: f } = !d.value && r.value.ssrRange ? calculateSSROffsets(M.value, r.value.ssrRange, P.value, F.value, r.value.gap || 0, r.value.columnGap || 0, (e) => R.query(e), (e) => I.query(e), (e) => z.query(e)) : {
815
+ let { x: u, y: f } = !d.value && r.value.ssrRange ? calculateSSROffsets(N.value, r.value.ssrRange, F.value, I.value, r.value.gap || 0, r.value.columnGap || 0, (e) => z.query(e), (e) => L.query(e), (e) => B.query(e)) : {
801
816
  x: 0,
802
817
  y: 0
803
818
  }, p = /* @__PURE__ */ new Map();
804
819
  for (let e of ut) p.set(e.index, e);
805
- let m = -1, h = 0, g = -1, _ = 0, v = (e) => e === m + 1 ? (h += I.get(m), m = e, h) : (h = I.query(e), m = e, h), y = (e) => e === g + 1 ? (_ += R.get(g), g = e, _) : (_ = R.query(e), g = e, _), b = W.value + H.value + Ne.value, x = Be.value + U.value + Fe.value, S = W.value + H.value, C = Be.value + U.value, T = ct.value, D = 0;
820
+ let m = -1, h = 0, g = -1, _ = 0, v = (e) => e === m + 1 ? (h += L.get(m), m = e, h) : (h = L.query(e), m = e, h), y = (e) => e === g + 1 ? (_ += z.get(g), g = e, _) : (_ = z.query(e), g = e, _), b = Re.value + U.value + Me.value, x = Be.value + W.value + Pe.value, S = Re.value + U.value, C = Be.value + W.value, T = ct.value, D = 0;
806
821
  for (let e of l) {
807
822
  let t = r.value.items[e];
808
823
  if (t === void 0) continue;
809
824
  let { x: n, y: l, width: m, height: h } = calculateItemPosition({
810
825
  index: e,
811
- direction: M.value,
812
- fixedSize: P.value,
826
+ direction: N.value,
827
+ fixedSize: F.value,
813
828
  gap: r.value.gap || 0,
814
829
  columnGap: r.value.columnGap || 0,
815
830
  usableWidth: He.value,
@@ -817,57 +832,57 @@ function useVirtualScroll(e, n = []) {
817
832
  totalWidth: We.value.width,
818
833
  queryY: y,
819
834
  queryX: v,
820
- getSizeY: (e) => R.get(e),
821
- getSizeX: (e) => I.get(e),
835
+ getSizeY: (e) => z.get(e),
836
+ getSizeX: (e) => L.get(e),
822
837
  columnRange: T
823
- }), g = s.has(e), _ = n, te = l;
838
+ }), g = s.has(e), _ = n, O = l;
824
839
  for (; D < a.length && a[D] <= e;) D++;
825
- let ne = D < a.length ? a[D] : void 0, { isStickyActive: O, isStickyActiveX: k, isStickyActiveY: A, stickyOffset: re } = calculateStickyItem({
840
+ let te = D < a.length ? a[D] : void 0, { isStickyActive: k, isStickyActiveX: A, isStickyActiveY: j, stickyOffset: ne } = calculateStickyItem({
826
841
  index: e,
827
842
  isSticky: g,
828
- direction: M.value,
843
+ direction: N.value,
829
844
  relativeScrollX: q.value,
830
845
  relativeScrollY: J.value,
831
846
  originalX: _,
832
- originalY: te,
847
+ originalY: O,
833
848
  width: m,
834
849
  height: h,
835
850
  stickyIndices: a,
836
- fixedSize: P.value,
837
- fixedWidth: F.value,
851
+ fixedSize: F.value,
852
+ fixedWidth: I.value,
838
853
  gap: r.value.gap || 0,
839
854
  columnGap: r.value.columnGap || 0,
840
- getItemQueryY: (e) => R.query(e),
841
- getItemQueryX: (e) => I.query(e),
842
- nextStickyIndex: ne
843
- }), ie = d.value ? o.value / w.value + (n + b - o.value) - S : n - u, j = d.value ? c.value / E.value + (l + x - c.value) - C : l - f, N = p.get(e);
844
- N && N.item === t && N.offset.x === ie && N.offset.y === j && N.size.width === m && N.size.height === h && N.isSticky === g && N.isStickyActive === O && N.isStickyActiveX === k && N.isStickyActiveY === A && N.stickyOffset.x === re.x && N.stickyOffset.y === re.y ? i.push(N) : i.push({
855
+ getItemQueryY: (e) => z.query(e),
856
+ getItemQueryX: (e) => L.query(e),
857
+ nextStickyIndex: te
858
+ }), re = d.value ? o.value / w.value + (n + b - o.value) - S : n - u, M = d.value ? c.value / E.value + (l + x - c.value) - C : l - f, P = p.get(e);
859
+ P && P.item === t && P.offset.x === re && P.offset.y === M && P.size.width === m && P.size.height === h && P.isSticky === g && P.isStickyActive === k && P.isStickyActiveX === A && P.isStickyActiveY === j && P.stickyOffset.x === ne.x && P.stickyOffset.y === ne.y ? i.push(P) : i.push({
845
860
  item: t,
846
861
  index: e,
847
862
  offset: {
848
- x: ie,
849
- y: j
863
+ x: re,
864
+ y: M
850
865
  },
851
866
  size: {
852
867
  width: m,
853
868
  height: h
854
869
  },
855
870
  originalX: _,
856
- originalY: te,
871
+ originalY: O,
857
872
  isSticky: g,
858
- isStickyActive: O,
859
- isStickyActiveX: k,
860
- isStickyActiveY: A,
861
- stickyOffset: re
873
+ isStickyActive: k,
874
+ isStickyActiveX: A,
875
+ isStickyActiveY: j,
876
+ stickyOffset: ne
862
877
  });
863
878
  }
864
- let te = i;
879
+ let O = i;
865
880
  return n.forEach((e) => {
866
- e.transformRenderedItems && (te = e.transformRenderedItems(te, lt));
867
- }), ut = te, te;
881
+ e.transformRenderedItems && (O = e.transformRenderedItems(O, lt));
882
+ }), ut = O, O;
868
883
  }), ft = computed(() => {
869
- we.value;
870
- let e = q.value + H.value, t = J.value + U.value, n = q.value + (y.value - Le.value) - 1, r = J.value + (b.value - Re.value) - 1, s = $e(e), u = Y(t), d = Y(M.value === "horizontal" ? n : r), f = $e(n);
884
+ Ce.value;
885
+ let e = q.value + U.value, t = J.value + W.value, n = q.value + (y.value - Ie.value) - 1, r = J.value + (b.value - Le.value) - 1, s = $e(e), u = Y(t), d = Y(N.value === "horizontal" ? n : r), f = $e(n);
871
886
  return {
872
887
  items: dt.value,
873
888
  currentIndex: u,
@@ -895,7 +910,7 @@ function useVirtualScroll(e, n = []) {
895
910
  height: Je.value
896
911
  },
897
912
  isScrolling: l.value,
898
- isProgrammaticScroll: k.value,
913
+ isProgrammaticScroll: A.value,
899
914
  range: ot.value,
900
915
  columnRange: ct.value
901
916
  };
@@ -906,12 +921,17 @@ function useVirtualScroll(e, n = []) {
906
921
  if (typeof window > "u") return;
907
922
  X(), t === window || t === document ? (i.value = window.scrollX, a.value = window.scrollY, y.value = document.documentElement.clientWidth, b.value = document.documentElement.clientHeight) : isScrollableElement(t) && (i.value = t.scrollLeft, a.value = t.scrollTop, y.value = t.clientWidth, b.value = t.clientHeight);
908
923
  let r = displayToVirtual(g.value ? Math.abs(i.value) : i.value, K.x, w.value), s = displayToVirtual(a.value, K.y, E.value);
909
- Math.abs(r - ie) > .5 && (D.value = r > ie ? "end" : "start", ie = r), Math.abs(s - j) > .5 && (te.value = s > j ? "end" : "start", j = s), o.value = r, c.value = s, k.value || (O.value = null), l.value ||= !0, n.forEach((t) => t.onScroll?.(lt, e)), clearTimeout(C), C = setTimeout(() => {
910
- l.value = !1, n.forEach((e) => e.onScrollEnd?.(lt)), A === void 0 && (k.value = !1);
924
+ if (!A.value) {
925
+ l.value || (re = o.value, M = c.value);
926
+ let e = r - re, t = s - M;
927
+ Math.abs(e) > .5 && (D.value = e > 0 ? "end" : "start"), Math.abs(t) > .5 && (O.value = t > 0 ? "end" : "start");
928
+ }
929
+ o.value = r, c.value = s, A.value || (k.value = null), l.value ||= !0, n.forEach((t) => t.onScroll?.(lt, e)), clearTimeout(C), C = setTimeout(() => {
930
+ l.value = !1, n.forEach((e) => e.onScrollEnd?.(lt)), j === void 0 && (A.value = !1);
911
931
  }, 150);
912
932
  }, mt = (e) => {
913
- ke(e, Y, $e, q.value, J.value, (e, t) => {
914
- !O.value && !k.value && it(e, t);
933
+ Oe(e, Y, $e, q.value, J.value, (e, t) => {
934
+ !k.value && !A.value && it(e, t);
915
935
  });
916
936
  }, ht = (e, t, n, r) => {
917
937
  mt([{
@@ -922,49 +942,49 @@ function useVirtualScroll(e, n = []) {
922
942
  }]);
923
943
  };
924
944
  function gt() {
925
- if (O.value && !f.value) {
926
- let { rowIndex: e, colIndex: t, options: n } = O.value;
927
- if (isScrollToIndexOptions(n) && n.behavior === "smooth" && (l.value || k.value)) return;
945
+ if (k.value && !f.value) {
946
+ let { rowIndex: e, colIndex: t, options: n } = k.value;
947
+ if (isScrollToIndexOptions(n) && n.behavior === "smooth" && (l.value || A.value)) return;
928
948
  let i = r.value.container || window, a = typeof window < "u" && i === window ? window.scrollX : i.scrollLeft, o = typeof window < "u" && i === window ? window.scrollY : i.scrollTop, s = g.value ? Math.abs(a) : a, c = o, u = displayToVirtual(s, 0, w.value), d = displayToVirtual(c, 0, E.value), { targetX: f, targetY: p } = calculateScrollTarget({
929
949
  rowIndex: e,
930
950
  colIndex: t,
931
951
  options: n,
932
- direction: M.value,
952
+ direction: N.value,
933
953
  viewportWidth: y.value,
934
954
  viewportHeight: b.value,
935
955
  totalWidth: Ke.value,
936
956
  totalHeight: qe.value,
937
957
  gap: r.value.gap || 0,
938
958
  columnGap: r.value.columnGap || 0,
939
- fixedSize: P.value,
940
- fixedWidth: F.value,
959
+ fixedSize: F.value,
960
+ fixedWidth: I.value,
941
961
  relativeScrollX: u,
942
962
  relativeScrollY: d,
943
- getItemSizeY: (e) => R.get(e),
944
- getItemSizeX: (e) => I.get(e),
945
- getItemQueryY: (e) => R.query(e),
946
- getItemQueryX: (e) => I.query(e),
947
- getColumnSize: (e) => z.get(e),
948
- getColumnQuery: (e) => z.query(e),
963
+ getItemSizeY: (e) => z.get(e),
964
+ getItemSizeX: (e) => L.get(e),
965
+ getItemQueryY: (e) => z.query(e),
966
+ getItemQueryX: (e) => L.query(e),
967
+ getColumnSize: (e) => B.get(e),
968
+ getColumnQuery: (e) => B.query(e),
949
969
  scaleX: w.value,
950
970
  scaleY: E.value,
951
971
  hostOffsetX: K.x,
952
972
  hostOffsetY: K.y,
953
973
  stickyIndices: r.value.stickyIndices || [],
954
- stickyStartX: H.value,
955
- stickyStartY: U.value,
956
- stickyEndX: Le.value,
957
- stickyEndY: Re.value,
958
- flowPaddingStartX: W.value,
974
+ stickyStartX: U.value,
975
+ stickyStartY: W.value,
976
+ stickyEndX: Ie.value,
977
+ stickyEndY: Le.value,
978
+ flowPaddingStartX: Re.value,
959
979
  flowPaddingStartY: Be.value,
960
- paddingStartX: Ne.value,
961
- paddingStartY: Fe.value,
962
- paddingEndX: Pe.value,
963
- paddingEndY: Ie.value
964
- }), m = 2 * w.value, h = 2 * E.value, _ = t == null || Math.abs(u - f) < m, v = e == null || Math.abs(d - p) < h;
980
+ paddingStartX: Me.value,
981
+ paddingStartY: Pe.value,
982
+ paddingEndX: Ne.value,
983
+ paddingEndY: Fe.value
984
+ }), m = 2 * w.value, h = 2 * E.value, _ = t == null || y.value > 0 && Math.abs(u - f) < m, v = e == null || b.value > 0 && Math.abs(d - p) < h;
965
985
  if (_ && v) {
966
- let n = t == null || t === void 0 || ge.value[t] === 1, r = e == null || e === void 0 || B.value[e] === 1;
967
- n && r && !l.value && !k.value && (O.value = null);
986
+ let n = t == null || t === void 0 || he.value[t] === 1, r = e == null || e === void 0 || V.value[e] === 1;
987
+ n && r && !l.value && !A.value && (k.value = null);
968
988
  } else at(e, t, isScrollToIndexOptions(n) ? {
969
989
  ...n,
970
990
  isCorrection: !0
@@ -975,7 +995,7 @@ function useVirtualScroll(e, n = []) {
975
995
  }
976
996
  }
977
997
  watch([
978
- we,
998
+ Ce,
979
999
  y,
980
1000
  b
981
1001
  ], gt), watch(l, (e) => {
@@ -1068,18 +1088,18 @@ function useVirtualScroll(e, n = []) {
1068
1088
  () => r.value.columnGap,
1069
1089
  () => r.value.defaultItemSize,
1070
1090
  () => r.value.defaultColumnWidth
1071
- ], () => Oe(), { immediate: !0 }), watch(() => [r.value.container, r.value.hostElement], () => {
1091
+ ], () => De(), { immediate: !0 }), watch(() => [r.value.container, r.value.hostElement], () => {
1072
1092
  Q();
1073
1093
  }), watch(g, (e, t) => {
1074
1094
  if (t === void 0 || e === t || !p.value) return;
1075
- if (M.value === "vertical") {
1095
+ if (N.value === "vertical") {
1076
1096
  Q();
1077
1097
  return;
1078
1098
  }
1079
1099
  let n = displayToVirtual(t ? Math.abs(i.value) : i.value, x.x, w.value);
1080
1100
  Q(), Z(n, null, { behavior: "auto" });
1081
1101
  }, { flush: "sync" }), watch([w, E], () => {
1082
- !p.value || l.value || k.value || Z(o.value, c.value, { behavior: "auto" });
1102
+ !p.value || l.value || A.value || Z(o.value, c.value, { behavior: "auto" });
1083
1103
  }), watch([() => r.value.items.length, () => r.value.columnCount], ([e, t], [n, r]) => {
1084
1104
  nextTick(() => {
1085
1105
  let i = Math.max(0, G.value - y.value), a = Math.max(0, Je.value - b.value);
@@ -1094,23 +1114,23 @@ function useVirtualScroll(e, n = []) {
1094
1114
  scrollDetails: ft,
1095
1115
  getRowHeight: tt,
1096
1116
  getColumnWidth: et,
1097
- getRowOffset: (e) => Be.value + U.value + Fe.value + calculateOffsetAt(e, P.value, r.value.gap || 0, (e) => R.query(e)),
1117
+ getRowOffset: (e) => Be.value + W.value + Pe.value + calculateOffsetAt(e, F.value, r.value.gap || 0, (e) => z.query(e)),
1098
1118
  getColumnOffset: (e) => {
1099
- let t = W.value + H.value + Ne.value;
1100
- return M.value === "both" ? t + calculateOffsetAt(e, F.value, r.value.columnGap || 0, (e) => z.query(e)) : t + calculateOffsetAt(e, P.value, r.value.columnGap || 0, (e) => I.query(e));
1119
+ let t = Re.value + U.value + Me.value;
1120
+ return N.value === "both" ? t + calculateOffsetAt(e, I.value, r.value.columnGap || 0, (e) => B.query(e)) : t + calculateOffsetAt(e, F.value, r.value.columnGap || 0, (e) => L.query(e));
1101
1121
  },
1102
1122
  getItemOffset: nt,
1103
1123
  getItemSize: rt,
1104
1124
  scrollToIndex: at,
1105
1125
  scrollToOffset: Z,
1106
- stopProgrammaticScroll: re,
1126
+ stopProgrammaticScroll: ne,
1107
1127
  handleScrollCorrection: it,
1108
1128
  updateItemSize: ht,
1109
1129
  updateItemSizes: mt,
1110
1130
  updateHostOffset: Q,
1111
1131
  updateDirection: X,
1112
1132
  columnRange: ct,
1113
- refresh: () => je(),
1133
+ refresh: () => Ae(),
1114
1134
  isHydrated: d,
1115
1135
  isWindowContainer: Ge,
1116
1136
  isRtl: g,
@@ -1120,7 +1140,8 @@ function useVirtualScroll(e, n = []) {
1120
1140
  renderedVirtualWidth: Ze,
1121
1141
  renderedVirtualHeight: Qe,
1122
1142
  getRowIndexAt: Y,
1123
- getColIndexAt: $e
1143
+ getColIndexAt: $e,
1144
+ __internalState: lt.internalState
1124
1145
  };
1125
1146
  }
1126
1147
  function useVirtualScrollbar(e) {
@@ -1230,13 +1251,22 @@ function useSnappingExtension() {
1230
1251
  let t = a === "both" ? e.props.value.columnCount || 0 : i, o = resolveSnap(n, e.internalState.scrollDirectionX.value, r.currentColIndex, r.currentEndColIndex, e.internalState.relativeScrollX.value, e.internalState.viewportWidth.value, t, (t) => e.methods.getItemSize(t), (t) => e.methods.getItemOffset(t), e.methods.getColIndexAt);
1231
1252
  o && (s = o.index, l = o.align, u = !0);
1232
1253
  }
1233
- u && e.methods.scrollToIndex(o, s, {
1234
- align: {
1235
- x: l,
1236
- y: c
1237
- },
1238
- behavior: "smooth"
1239
- });
1254
+ if (u) {
1255
+ let { targetX: t, targetY: n } = e.methods.scrollToIndex(o, s, {
1256
+ align: {
1257
+ x: l,
1258
+ y: c
1259
+ },
1260
+ dryRun: !0
1261
+ }), r = e.internalState.internalScrollX.value, i = e.internalState.internalScrollY.value, a = s === null ? 0 : Math.abs(t - r), u = o === null ? 0 : Math.abs(n - i);
1262
+ (a > .5 || u > .5) && e.methods.scrollToIndex(o, s, {
1263
+ align: {
1264
+ x: l,
1265
+ y: c
1266
+ },
1267
+ behavior: "smooth"
1268
+ });
1269
+ }
1240
1270
  }
1241
1271
  };
1242
1272
  }
@@ -1398,25 +1428,25 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1398
1428
  "visibleRangeChange"
1399
1429
  ],
1400
1430
  setup(o, { expose: s, emit: c }) {
1401
- let _ = o, S = c, T = useSlots(), O = ref(null), A = ref(null), re = ref(null), ie = ref(null), j = /* @__PURE__ */ new Map(), M = useId(), N = computed(() => `vs-container-${M}`), ae = [
1431
+ let _ = o, S = c, T = useSlots(), k = ref(null), j = ref(null), ne = ref(null), re = ref(null), M = /* @__PURE__ */ new Map(), N = useId(), P = computed(() => `vs-container-${N}`), ie = [
1402
1432
  useRtlExtension(),
1403
1433
  useSnappingExtension(),
1404
1434
  useStickyExtension(),
1405
1435
  useInfiniteLoadingExtension({ onLoad: (e) => S("load", e) }),
1406
1436
  usePrependRestorationExtension(),
1407
1437
  useCoordinateScalingExtension()
1408
- ], se = ref(0), ce = ref(0), le = computed(() => _.container === void 0 ? O.value : _.container), ue = computed(() => {
1409
- let e = le.value;
1410
- return e === O.value || isWindowLike(e);
1411
- }), P = computed(() => (_.items.length, {
1438
+ ], oe = ref(0), se = ref(0), ce = computed(() => _.container === void 0 ? k.value : _.container), le = computed(() => {
1439
+ let e = ce.value;
1440
+ return e === k.value || isWindowLike(e);
1441
+ }), F = computed(() => (_.items.length, {
1412
1442
  items: _.items,
1413
1443
  itemSize: _.itemSize,
1414
1444
  direction: _.direction,
1415
1445
  bufferBefore: _.bufferBefore,
1416
1446
  bufferAfter: _.bufferAfter,
1417
- container: le.value,
1418
- hostElement: A.value,
1419
- hostRef: O.value,
1447
+ container: ce.value,
1448
+ hostElement: j.value,
1449
+ hostRef: k.value,
1420
1450
  ssrRange: _.ssrRange,
1421
1451
  columnCount: _.columnCount,
1422
1452
  columnWidth: _.columnWidth,
@@ -1430,19 +1460,19 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1430
1460
  },
1431
1461
  flowPaddingStart: {
1432
1462
  x: 0,
1433
- y: _.stickyHeader ? 0 : se.value
1463
+ y: _.stickyHeader ? 0 : oe.value
1434
1464
  },
1435
1465
  flowPaddingEnd: {
1436
1466
  x: 0,
1437
- y: _.stickyFooter ? 0 : ce.value
1467
+ y: _.stickyFooter ? 0 : se.value
1438
1468
  },
1439
1469
  stickyStart: {
1440
1470
  x: 0,
1441
- y: _.stickyHeader && ue.value ? se.value : 0
1471
+ y: _.stickyHeader && le.value ? oe.value : 0
1442
1472
  },
1443
1473
  stickyEnd: {
1444
1474
  x: 0,
1445
- y: _.stickyFooter && ue.value ? ce.value : 0
1475
+ y: _.stickyFooter && le.value ? se.value : 0
1446
1476
  },
1447
1477
  gap: _.gap,
1448
1478
  columnGap: _.columnGap,
@@ -1456,64 +1486,64 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1456
1486
  defaultColumnWidth: _.defaultColumnWidth,
1457
1487
  debug: _.debug,
1458
1488
  snap: _.snap
1459
- })), { isHydrated: F, isRtl: pe, columnRange: me, renderedItems: I, scrollDetails: L, renderedHeight: he, renderedWidth: R, getColumnWidth: z, getRowHeight: ge, scrollToIndex: B, scrollToOffset: _e, updateHostOffset: ve, updateItemSizes: ye, updateDirection: be, getItemOffset: xe, getRowOffset: Se, getColumnOffset: Ce, getItemSize: Te, refresh: Ee, stopProgrammaticScroll: V, scaleX: ke, scaleY: Ae, isWindowContainer: je, componentOffset: Me, renderedVirtualWidth: Ue, renderedVirtualHeight: We, getRowIndexAt: Ge, getColIndexAt: Ke } = useVirtualScroll(P, ae), qe = computed(() => ke.value !== 1 || Ae.value !== 1), G = computed(() => je.value ? !1 : _.virtualScrollbar === !0 || ke.value !== 1 || Ae.value !== 1);
1489
+ })), { isHydrated: I, isRtl: fe, columnRange: pe, renderedItems: L, scrollDetails: R, renderedHeight: me, renderedWidth: z, getColumnWidth: B, getRowHeight: he, scrollToIndex: V, scrollToOffset: ge, updateHostOffset: _e, updateItemSizes: ve, updateDirection: ye, getItemOffset: be, getRowOffset: xe, getColumnOffset: Se, getItemSize: we, refresh: Te, stopProgrammaticScroll: H, scaleX: Oe, scaleY: ke, isWindowContainer: Ae, componentOffset: je, renderedVirtualWidth: Ue, renderedVirtualHeight: We, getRowIndexAt: Ge, getColIndexAt: Ke } = useVirtualScroll(F, ie), qe = computed(() => Oe.value !== 1 || ke.value !== 1), G = computed(() => Ae.value ? !1 : _.virtualScrollbar === !0 || Oe.value !== 1 || ke.value !== 1);
1460
1490
  function Je(e) {
1461
- let { displayViewportSize: t } = L.value;
1462
- e >= he.value - t.height - .5 ? _e(null, Infinity) : _e(null, displayToVirtual(e, Me.y, Ae.value));
1491
+ let { displayViewportSize: t } = R.value;
1492
+ e >= me.value - t.height - .5 ? ge(null, Infinity) : ge(null, displayToVirtual(e, je.y, ke.value));
1463
1493
  }
1464
1494
  function K(e) {
1465
- let { displayViewportSize: t } = L.value;
1466
- e >= R.value - t.width - .5 ? _e(Infinity, null) : _e(displayToVirtual(e, Me.x, ke.value), null);
1495
+ let { displayViewportSize: t } = R.value;
1496
+ e >= z.value - t.width - .5 ? ge(Infinity, null) : ge(displayToVirtual(e, je.x, Oe.value), null);
1467
1497
  }
1468
1498
  let Ye = useVirtualScrollbar(computed(() => ({
1469
1499
  axis: "vertical",
1470
- totalSize: he.value,
1471
- position: L.value.displayScrollOffset.y,
1472
- viewportSize: L.value.displayViewportSize.height,
1500
+ totalSize: me.value,
1501
+ position: R.value.displayScrollOffset.y,
1502
+ viewportSize: R.value.displayViewportSize.height,
1473
1503
  scrollToOffset: Je,
1474
- containerId: N.value,
1475
- isRtl: pe.value
1504
+ containerId: P.value,
1505
+ isRtl: fe.value
1476
1506
  }))), Xe = useVirtualScrollbar(computed(() => ({
1477
1507
  axis: "horizontal",
1478
- totalSize: R.value,
1479
- position: L.value.displayScrollOffset.x,
1480
- viewportSize: L.value.displayViewportSize.width,
1508
+ totalSize: z.value,
1509
+ position: R.value.displayScrollOffset.x,
1510
+ viewportSize: R.value.displayViewportSize.width,
1481
1511
  scrollToOffset: K,
1482
- containerId: N.value,
1483
- isRtl: pe.value
1512
+ containerId: P.value,
1513
+ isRtl: fe.value
1484
1514
  }))), Ze = computed(() => _.direction === "both" ? {
1485
- ...me.value,
1515
+ ...pe.value,
1486
1516
  padStart: 0,
1487
1517
  padEnd: 0
1488
- } : me.value);
1518
+ } : pe.value);
1489
1519
  function Qe() {
1490
- Ee(), be(), nextTick(() => {
1520
+ Te(), ye(), nextTick(() => {
1491
1521
  let e = [];
1492
- for (let [t, n] of j.entries()) n && e.push({
1522
+ for (let [t, n] of M.entries()) n && e.push({
1493
1523
  index: t,
1494
1524
  inlineSize: n.offsetWidth,
1495
1525
  blockSize: n.offsetHeight,
1496
1526
  element: n
1497
1527
  });
1498
- e.length > 0 && ye(e);
1528
+ e.length > 0 && ve(e);
1499
1529
  });
1500
1530
  }
1501
- watch(L, (e, t) => {
1502
- !F.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", {
1531
+ watch(R, (e, t) => {
1532
+ !I.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", {
1503
1533
  start: e.range.start,
1504
1534
  end: e.range.end,
1505
1535
  colStart: e.columnRange.start,
1506
1536
  colEnd: e.columnRange.end
1507
1537
  }));
1508
- }), watch(F, (e) => {
1509
- e && L.value?.range && L.value?.columnRange && S("visibleRangeChange", {
1510
- start: L.value.range.start,
1511
- end: L.value.range.end,
1512
- colStart: L.value.columnRange.start,
1513
- colEnd: L.value.columnRange.end
1538
+ }), watch(I, (e) => {
1539
+ e && R.value?.range && R.value?.columnRange && S("visibleRangeChange", {
1540
+ start: R.value.range.start,
1541
+ end: R.value.range.end,
1542
+ colStart: R.value.columnRange.start,
1543
+ colEnd: R.value.columnRange.end
1514
1544
  });
1515
1545
  }, { once: !0 });
1516
- let q = typeof window > "u" ? null : new ResizeObserver(ve), J = typeof window > "u" ? null : new ResizeObserver((e) => {
1546
+ let q = typeof window > "u" ? null : new ResizeObserver(_e), J = typeof window > "u" ? null : new ResizeObserver((e) => {
1517
1547
  let t = [];
1518
1548
  for (let n of e) {
1519
1549
  let e = n.target, r = Number(e.dataset.index), i = e.dataset.colIndex, a = n.contentRect.width, o = n.contentRect.height;
@@ -1529,21 +1559,21 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1529
1559
  element: e
1530
1560
  });
1531
1561
  }
1532
- t.length > 0 && ye(t);
1562
+ t.length > 0 && ve(t);
1533
1563
  }), Y = typeof window > "u" ? null : new ResizeObserver(() => {
1534
- se.value = re.value?.offsetHeight || 0, ce.value = ie.value?.offsetHeight || 0, ve();
1564
+ oe.value = ne.value?.offsetHeight || 0, se.value = re.value?.offsetHeight || 0, _e();
1535
1565
  });
1536
1566
  function $e(e, t) {
1537
1567
  watch(e, (e, n) => {
1538
1568
  n && Y?.unobserve(n), e ? Y?.observe(e) : t.value = 0;
1539
1569
  }, { immediate: !0 });
1540
1570
  }
1541
- $e(re, se), $e(ie, ce), onMounted(() => {
1542
- O.value && q?.observe(O.value);
1543
- for (let e of j.values()) et(e, !0);
1544
- }), watch([O, A], ([e], [t]) => {
1571
+ $e(ne, oe), $e(re, se), onMounted(() => {
1572
+ k.value && q?.observe(k.value);
1573
+ for (let e of M.values()) et(e, !0);
1574
+ }), watch([k, j], ([e], [t]) => {
1545
1575
  t && q?.unobserve(t), e && q?.observe(e);
1546
- }), watch([O, qe], ([e, t], [n, r]) => {
1576
+ }), watch([k, qe], ([e, t], [n, r]) => {
1547
1577
  let i = e !== n || t !== r;
1548
1578
  n && i && n.removeEventListener("wheel", ft), e && i && e.addEventListener("wheel", ft, { passive: !t });
1549
1579
  }, { immediate: !0 });
@@ -1554,10 +1584,10 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1554
1584
  function tt(e, t) {
1555
1585
  if (e) {
1556
1586
  let n = e;
1557
- j.set(t, n), et(n, !0);
1587
+ M.set(t, n), et(n, !0);
1558
1588
  } else {
1559
- let e = j.get(t);
1560
- e && (et(e, !1), j.delete(t));
1589
+ let e = M.get(t);
1590
+ e && (et(e, !1), M.delete(t));
1561
1591
  }
1562
1592
  }
1563
1593
  let nt = ref(!1), rt = {
@@ -1577,8 +1607,8 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1577
1607
  let e = () => {
1578
1608
  let { nextVelocity: t, delta: n } = calculateInertiaStep(Z, FRICTION);
1579
1609
  Z.x = t.x, Z.y = t.y;
1580
- let { x: r, y: i } = L.value.scrollOffset;
1581
- _e(r + n.x, i + n.y, { behavior: "auto" }), Math.abs(Z.x) > MIN_VELOCITY || Math.abs(Z.y) > MIN_VELOCITY ? ot = requestAnimationFrame(e) : ct();
1610
+ let { x: r, y: i } = R.value.scrollOffset;
1611
+ ge(r + n.x, i + n.y, { behavior: "auto" }), Math.abs(Z.x) > MIN_VELOCITY || Math.abs(Z.y) > MIN_VELOCITY ? ot = requestAnimationFrame(e) : ct();
1582
1612
  };
1583
1613
  ot = requestAnimationFrame(e);
1584
1614
  }
@@ -1589,15 +1619,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1589
1619
  };
1590
1620
  }
1591
1621
  function lt(e) {
1592
- V(), ct(), qe.value && (e.pointerType === "mouse" && e.button !== 0 || (nt.value = !0, rt = {
1622
+ H(), ct(), qe.value && (e.pointerType === "mouse" && e.button !== 0 || (nt.value = !0, rt = {
1593
1623
  x: e.clientX,
1594
1624
  y: e.clientY
1595
1625
  }, it = {
1596
1626
  x: e.clientX,
1597
1627
  y: e.clientY
1598
1628
  }, at = performance.now(), X = {
1599
- x: L.value.scrollOffset.x,
1600
- y: L.value.scrollOffset.y
1629
+ x: R.value.scrollOffset.x,
1630
+ y: R.value.scrollOffset.y
1601
1631
  }, e.currentTarget.setPointerCapture(e.pointerId)));
1602
1632
  }
1603
1633
  function ut(e) {
@@ -1616,94 +1646,94 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1616
1646
  }, at = t;
1617
1647
  let r = rt.x - e.clientX, i = rt.y - e.clientY;
1618
1648
  requestAnimationFrame(() => {
1619
- _e(X.x + r, X.y + i, { behavior: "auto" });
1649
+ ge(X.x + r, X.y + i, { behavior: "auto" });
1620
1650
  });
1621
1651
  }
1622
1652
  function dt(e) {
1623
1653
  nt.value && (nt.value = !1, e.currentTarget.releasePointerCapture(e.pointerId), (Math.abs(Z.x) > MIN_VELOCITY || Math.abs(Z.y) > MIN_VELOCITY) && (Math.abs(Z.x) > 4 * Math.abs(Z.y) ? Z.y = 0 : Math.abs(Z.y) > 4 * Math.abs(Z.x) && (Z.x = 0), st()));
1624
1654
  }
1625
1655
  function ft(e) {
1626
- let { scrollOffset: t } = L.value;
1627
- if (V(), qe.value) {
1656
+ let { scrollOffset: t } = R.value;
1657
+ if (H(), qe.value) {
1628
1658
  e.preventDefault();
1629
1659
  let { deltaX: n, deltaY: r } = e;
1630
- e.shiftKey && n === 0 && (n = r, r = 0), _e(t.x + n, t.y + r, { behavior: "auto" });
1660
+ e.shiftKey && n === 0 && (n = r, r = 0), ge(t.x + n, t.y + r, { behavior: "auto" });
1631
1661
  }
1632
1662
  }
1633
1663
  function pt(e) {
1634
- let { viewportSize: t, scrollOffset: n } = L.value, r = _.direction !== "vertical", i = _.direction !== "horizontal", a = P.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) => {
1664
+ let { viewportSize: t, scrollOffset: n } = R.value, r = _.direction !== "vertical", i = _.direction !== "horizontal", a = F.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) => {
1635
1665
  let r = (e ? n.x : n.y) + (e ? t.width : t.height) / 2;
1636
1666
  return e ? Ke(r) : Ge(r);
1637
- }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = L.value, v = (e, t) => {
1667
+ }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = R.value, v = (e, t) => {
1638
1668
  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;
1639
1669
  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;
1640
1670
  }, y = (e, r) => {
1641
1671
  let i = !e;
1642
1672
  if (d === "center") {
1643
1673
  let t = f(i), n = i && _.columnCount ? _.columnCount - 1 : _.items.length - 1, a = r ? Math.min(n, t + 1) : Math.max(0, t - 1);
1644
- B(e ? a : null, i ? a : null, { align: "center" });
1674
+ V(e ? a : null, i ? a : null, { align: "center" });
1645
1675
  return;
1646
1676
  }
1647
- if (e) if (r) if (d === "start") B(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1677
+ if (e) if (r) if (d === "start") V(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1648
1678
  else {
1649
1679
  let e = d || "end", r = n.y + t.height - (s.y + l.y);
1650
- Se(m) + ge(m) > r + 1 ? B(m, null, { align: e }) : m < _.items.length - 1 && B(m + 1, null, { align: e });
1680
+ xe(m) + he(m) > r + 1 ? V(m, null, { align: e }) : m < _.items.length - 1 && V(m + 1, null, { align: e });
1651
1681
  }
1652
- else if (d === "end") B(Math.max(0, m - 1), null, { align: "end" });
1682
+ else if (d === "end") V(Math.max(0, m - 1), null, { align: "end" });
1653
1683
  else {
1654
1684
  let e = d || "start", t = n.y + o.y + c.y;
1655
- Se(p) < t - 1 ? B(p, null, { align: e }) : p > 0 && B(p - 1, null, { align: e });
1685
+ xe(p) < t - 1 ? V(p, null, { align: e }) : p > 0 && V(p - 1, null, { align: e });
1656
1686
  }
1657
1687
  else {
1658
1688
  let e = _.columnCount ? _.columnCount - 1 : _.items.length - 1;
1659
- if (pe.value ? !r : r) if (d === "start") B(null, Math.min(e, h + 1), { align: "start" });
1689
+ if (fe.value ? !r : r) if (d === "start") V(null, Math.min(e, h + 1), { align: "start" });
1660
1690
  else {
1661
1691
  let r = d || "end", i = n.x + t.width - (s.x + l.x);
1662
- (_.columnCount ? Ce(g) + z(g) : xe(g) + Te(g)) > i + 1 ? B(null, g, { align: r }) : g < e && B(null, g + 1, { align: r });
1692
+ (_.columnCount ? Se(g) + B(g) : be(g) + we(g)) > i + 1 ? V(null, g, { align: r }) : g < e && V(null, g + 1, { align: r });
1663
1693
  }
1664
- else if (d === "end") B(null, Math.max(0, g - 1), { align: "end" });
1694
+ else if (d === "end") V(null, Math.max(0, g - 1), { align: "end" });
1665
1695
  else {
1666
1696
  let e = d || "start", t = n.x + o.x + c.x;
1667
- (_.columnCount ? Ce(h) : xe(h)) < t - 1 ? B(null, h, { align: e }) : h > 0 && B(null, h - 1, { align: e });
1697
+ (_.columnCount ? Se(h) : be(h)) < t - 1 ? V(null, h, { align: e }) : h > 0 && V(null, h - 1, { align: e });
1668
1698
  }
1669
1699
  }
1670
1700
  };
1671
1701
  switch (e.key) {
1672
1702
  case "Home":
1673
- e.preventDefault(), V(), B(0, 0, {
1703
+ e.preventDefault(), H(), V(0, 0, {
1674
1704
  behavior: Math.max(n.x, n.y) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth",
1675
1705
  align: "start"
1676
1706
  });
1677
1707
  break;
1678
1708
  case "End": {
1679
- e.preventDefault(), V();
1680
- let r = _.items.length - 1, i = (_.columnCount || 0) > 0 ? _.columnCount - 1 : 0, { totalSize: a } = L.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";
1681
- _.direction === "both" ? B(r, i, {
1709
+ e.preventDefault(), H();
1710
+ 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";
1711
+ _.direction === "both" ? V(r, i, {
1682
1712
  behavior: o,
1683
1713
  align: "end"
1684
- }) : B(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1714
+ }) : V(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1685
1715
  behavior: o,
1686
1716
  align: "end"
1687
1717
  });
1688
1718
  break;
1689
1719
  }
1690
1720
  case "ArrowUp":
1691
- e.preventDefault(), V(), i && y(!0, !1);
1721
+ e.preventDefault(), H(), i && y(!0, !1);
1692
1722
  break;
1693
1723
  case "ArrowDown":
1694
- e.preventDefault(), V(), i && y(!0, !0);
1724
+ e.preventDefault(), H(), i && y(!0, !0);
1695
1725
  break;
1696
1726
  case "ArrowLeft":
1697
- e.preventDefault(), V(), r && y(!1, !1);
1727
+ e.preventDefault(), H(), r && y(!1, !1);
1698
1728
  break;
1699
1729
  case "ArrowRight":
1700
- e.preventDefault(), V(), r && y(!1, !0);
1730
+ e.preventDefault(), H(), r && y(!1, !0);
1701
1731
  break;
1702
1732
  case "PageUp":
1703
- e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !1), { align: d || "end" }) : B(v(!0, !1), null, { align: d || "end" });
1733
+ e.preventDefault(), H(), _.direction === "horizontal" ? V(null, v(!1, !1), { align: d || "end" }) : V(v(!0, !1), null, { align: d || "end" });
1704
1734
  break;
1705
1735
  case "PageDown":
1706
- e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !0), { align: d || "start" }) : B(v(!0, !0), null, { align: d || "start" });
1736
+ e.preventDefault(), H(), _.direction === "horizontal" ? V(null, v(!1, !0), { align: d || "start" }) : V(v(!0, !0), null, { align: d || "start" });
1707
1737
  break;
1708
1738
  }
1709
1739
  }
@@ -1712,7 +1742,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1712
1742
  });
1713
1743
  let mt = computed(() => {
1714
1744
  let e = { ..._.direction === "vertical" ? {} : { whiteSpace: "nowrap" } };
1715
- return (G.value || !je.value) && (e.overflow = "auto"), qe.value && (e.touchAction = "none"), je.value ? e : _.containerTag === "table" ? {
1745
+ return (G.value || !Ae.value) && (e.overflow = "auto"), qe.value && (e.touchAction = "none"), Ae.value ? e : _.containerTag === "table" ? {
1716
1746
  ...e,
1717
1747
  display: "block",
1718
1748
  minInlineSize: _.direction === "vertical" ? "100%" : "auto"
@@ -1733,8 +1763,8 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1733
1763
  position: n,
1734
1764
  viewportSize: r,
1735
1765
  scrollToOffset: i,
1736
- containerId: N.value,
1737
- isRtl: pe.value,
1766
+ containerId: P.value,
1767
+ isRtl: fe.value,
1738
1768
  ariaLabel: `${e === "vertical" ? "Vertical" : "Horizontal"} scroll`
1739
1769
  },
1740
1770
  isDragging: a.isDragging.value
@@ -1742,18 +1772,18 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1742
1772
  }
1743
1773
  let gt = computed(() => {
1744
1774
  if (_.direction === "horizontal") return null;
1745
- let { displayViewportSize: e, displayScrollOffset: t } = L.value;
1746
- return ht("vertical", he.value, t.y, e.height, Je, Ye);
1775
+ let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1776
+ return ht("vertical", me.value, t.y, e.height, Je, Ye);
1747
1777
  }), Q = computed(() => {
1748
1778
  if (_.direction === "vertical") return null;
1749
- let { displayViewportSize: e, displayScrollOffset: t } = L.value;
1750
- return ht("horizontal", R.value, t.x, e.width, K, Xe);
1779
+ let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1780
+ return ht("horizontal", z.value, t.x, e.width, K, Xe);
1751
1781
  }), _t = computed(() => {
1752
1782
  let e = _.direction === "horizontal", t = _.direction === "vertical", n = _.direction === "both", r = {
1753
1783
  inlineSize: t ? "100%" : `${Ue.value}px`,
1754
1784
  blockSize: e ? "100%" : `${We.value}px`
1755
1785
  };
1756
- return F.value || (r.display = "flex", r.flexDirection = e ? "row" : "column", (e || n) && _.columnGap && (r.columnGap = `${_.columnGap}px`), (t || n) && _.gap && (r.rowGap = `${_.gap}px`)), r;
1786
+ return I.value || (r.display = "flex", r.flexDirection = e ? "row" : "column", (e || n) && _.columnGap && (r.columnGap = `${_.columnGap}px`), (t || n) && _.gap && (r.rowGap = `${_.gap}px`)), r;
1757
1787
  }), vt = computed(() => {
1758
1788
  let e = _.direction === "horizontal";
1759
1789
  return {
@@ -1771,14 +1801,14 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1771
1801
  let t = calculateItemStyle({
1772
1802
  containerTag: _.containerTag || "div",
1773
1803
  direction: _.direction,
1774
- isHydrated: F.value,
1804
+ isHydrated: I.value,
1775
1805
  item: e,
1776
1806
  itemSize: _.itemSize,
1777
- paddingStartX: P.value.scrollPaddingStart.x,
1778
- paddingStartY: P.value.scrollPaddingStart.y,
1779
- isRtl: pe.value
1807
+ paddingStartX: F.value.scrollPaddingStart.x,
1808
+ paddingStartY: F.value.scrollPaddingStart.y,
1809
+ isRtl: fe.value
1780
1810
  });
1781
- return !F.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1811
+ return !I.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1782
1812
  }
1783
1813
  let xt = computed(() => _.debug), $ = computed(() => _.containerTag === "table"), St = computed(() => $.value ? "thead" : "div"), Ct = computed(() => $.value ? "tfoot" : "div"), wt = computed(() => _.role ? _.role : $.value ? null : _.direction === "both" ? "grid" : "list"), Tt = computed(() => wt.value === "grid" || $.value), Et = computed(() => $.value ? null : _.ariaLabel || _.ariaLabelledby ? "region" : "none"), Dt = computed(() => $.value ? null : wt.value), Ot = computed(() => {
1784
1814
  if (Tt.value) return "row";
@@ -1815,43 +1845,43 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1815
1845
  }
1816
1846
  return s({
1817
1847
  ...toRefs(_),
1818
- scrollDetails: L,
1819
- columnRange: me,
1820
- getColumnWidth: z,
1821
- getRowHeight: ge,
1848
+ scrollDetails: R,
1849
+ columnRange: pe,
1850
+ getColumnWidth: B,
1851
+ getRowHeight: he,
1822
1852
  getCellAriaProps: Ft,
1823
1853
  getItemAriaProps: Pt,
1824
- getRowOffset: Se,
1825
- getColumnOffset: Ce,
1826
- getItemOffset: xe,
1827
- getItemSize: Te,
1854
+ getRowOffset: xe,
1855
+ getColumnOffset: Se,
1856
+ getItemOffset: be,
1857
+ getItemSize: we,
1828
1858
  isTable: $,
1829
1859
  itemTag: computed(() => _.itemTag || "div"),
1830
1860
  getRowIndexAt: Ge,
1831
1861
  getColIndexAt: Ke,
1832
- scrollToIndex: B,
1833
- scrollToOffset: _e,
1862
+ scrollToIndex: V,
1863
+ scrollToOffset: ge,
1834
1864
  refresh: Qe,
1835
1865
  stopProgrammaticScroll: () => {
1836
- V(), ct();
1866
+ H(), ct();
1837
1867
  },
1838
- updateDirection: be,
1839
- isRtl: pe,
1840
- isHydrated: F,
1841
- scaleX: ke,
1842
- scaleY: Ae,
1843
- renderedWidth: R,
1844
- renderedHeight: he,
1845
- componentOffset: Me,
1868
+ updateDirection: ye,
1869
+ isRtl: fe,
1870
+ isHydrated: I,
1871
+ scaleX: Oe,
1872
+ scaleY: ke,
1873
+ renderedWidth: z,
1874
+ renderedHeight: me,
1875
+ componentOffset: je,
1846
1876
  scrollbarPropsVertical: gt,
1847
1877
  scrollbarPropsHorizontal: Q
1848
1878
  }), (t, s) => (openBlock(), createBlock(resolveDynamicComponent(o.containerTag), mergeProps({
1849
- id: N.value,
1879
+ id: P.value,
1850
1880
  ref_key: "hostRef",
1851
- ref: O,
1881
+ ref: k,
1852
1882
  class: ["virtual-scroll-container", [`virtual-scroll--${o.direction}`, {
1853
- "virtual-scroll--hydrated": unref(F),
1854
- "virtual-scroll--window": unref(je),
1883
+ "virtual-scroll--hydrated": unref(I),
1884
+ "virtual-scroll--window": unref(Ae),
1855
1885
  "virtual-scroll--table": $.value,
1856
1886
  "virtual-scroll--hide-scrollbar": G.value
1857
1887
  }]],
@@ -1872,15 +1902,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1872
1902
  G.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1873
1903
  class: "virtual-scroll-scrollbar-viewport",
1874
1904
  style: normalizeStyle({
1875
- inlineSize: `${unref(L).displayViewportSize.width}px`,
1876
- blockSize: `${unref(L).displayViewportSize.height}px`,
1905
+ inlineSize: `${unref(R).displayViewportSize.width}px`,
1906
+ blockSize: `${unref(R).displayViewportSize.height}px`,
1877
1907
  "--vsi-scrollbar-has-cross-gap": o.direction === "both" ? 1 : 0
1878
1908
  })
1879
1909
  }, [T.scrollbar && gt.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 0 }, gt.value)), void 0, !0) : gt.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 1 }, gt.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0), T.scrollbar && Q.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 2 }, Q.value)), void 0, !0) : Q.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 3 }, Q.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0)], 4)])) : createCommentVNode("", !0),
1880
1910
  T.header ? (openBlock(), createBlock(resolveDynamicComponent(St.value), {
1881
1911
  key: 1,
1882
1912
  ref_key: "headerRef",
1883
- ref: re,
1913
+ ref: ne,
1884
1914
  class: normalizeClass(["virtual-scroll-header", { "virtual-scroll--sticky": o.stickyHeader }]),
1885
1915
  role: $.value ? void 0 : "none"
1886
1916
  }, {
@@ -1889,7 +1919,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1889
1919
  }, 8, ["class", "role"])) : createCommentVNode("", !0),
1890
1920
  (openBlock(), createBlock(resolveDynamicComponent(o.wrapperTag), mergeProps({
1891
1921
  ref_key: "wrapperRef",
1892
- ref: A,
1922
+ ref: j,
1893
1923
  class: "virtual-scroll-wrapper",
1894
1924
  style: _t.value,
1895
1925
  role: $.value ? void 0 : Dt.value
@@ -1905,7 +1935,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1905
1935
  "block-size": "inherit"
1906
1936
  } }, null, -1)]]),
1907
1937
  _: 1
1908
- }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(I), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1938
+ }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(L), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1909
1939
  key: e.index,
1910
1940
  ref_for: !0,
1911
1941
  ref: (t) => tt(t, e.index),
@@ -1921,7 +1951,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1921
1951
  index: e.index,
1922
1952
  getItemAriaProps: Pt,
1923
1953
  columnRange: Ze.value,
1924
- getColumnWidth: unref(z),
1954
+ getColumnWidth: unref(B),
1925
1955
  getCellAriaProps: Ft,
1926
1956
  gap: _.gap,
1927
1957
  columnGap: _.columnGap,
@@ -1949,7 +1979,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1949
1979
  T.footer ? (openBlock(), createBlock(resolveDynamicComponent(Ct.value), {
1950
1980
  key: 3,
1951
1981
  ref_key: "footerRef",
1952
- ref: ie,
1982
+ ref: re,
1953
1983
  class: normalizeClass(["virtual-scroll-footer", { "virtual-scroll--sticky": o.stickyFooter }]),
1954
1984
  role: $.value ? void 0 : "none"
1955
1985
  }, {