@pdanpdan/virtual-scroll 0.10.0 → 0.10.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
@@ -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,89 @@ 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), C === "smooth" && (j = setTimeout(() => {
684
+ A.value = !1, j = void 0, gt();
685
+ }, 1e3)));
686
+ let T = { behavior: C };
687
+ 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)), {
688
+ targetX: d,
689
+ targetY: f,
690
+ displayTargetX: h,
691
+ displayTargetY: _
692
+ };
682
693
  }
683
694
  function Z(e, t, n) {
684
695
  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;
696
+ A.value = !0, clearTimeout(j), n?.behavior === "smooth" && (j = setTimeout(() => {
697
+ A.value = !1, j = void 0, gt();
698
+ }, 1e3)), k.value = null;
688
699
  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
700
  l !== null && (o.value = l), u !== null && (c.value = u);
690
701
  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
702
  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
703
  }
693
704
  let ot = computed(() => {
694
- if (we.value, (!d.value || f.value) && r.value.ssrRange) return {
705
+ if (Ce.value, (!d.value || f.value) && r.value.ssrRange) return {
695
706
  start: r.value.ssrRange.start,
696
707
  end: r.value.ssrRange.end
697
708
  };
698
709
  let e = r.value.ssrRange && !l.value ? 0 : r.value.bufferBefore ?? 5, t = r.value.bufferAfter ?? 5;
699
710
  return calculateRange({
700
- direction: M.value,
711
+ direction: N.value,
701
712
  relativeScrollX: q.value,
702
713
  relativeScrollY: J.value,
703
714
  usableWidth: He.value,
@@ -707,18 +718,18 @@ function useVirtualScroll(e, n = []) {
707
718
  bufferAfter: t,
708
719
  gap: r.value.gap || 0,
709
720
  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)
721
+ fixedSize: F.value,
722
+ findLowerBoundY: (e) => z.findLowerBound(e),
723
+ findLowerBoundX: (e) => L.findLowerBound(e),
724
+ queryY: (e) => z.query(e),
725
+ queryX: (e) => L.query(e)
715
726
  });
716
727
  }), 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);
728
+ Ce.value;
729
+ let e = q.value + U.value, t = J.value + W.value;
730
+ return Y(N.value === "horizontal" ? e : t);
720
731
  }), ct = computed(() => {
721
- we.value;
732
+ Ce.value;
722
733
  let e = r.value.columnCount || 0;
723
734
  if (!e) return {
724
735
  start: 0,
@@ -730,14 +741,14 @@ function useVirtualScroll(e, n = []) {
730
741
  let { colStart: t = 0, colEnd: n = 0 } = r.value.ssrRange, i = Math.max(0, t), a = Math.min(e, n || e);
731
742
  return calculateColumnRange({
732
743
  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)),
744
+ relativeScrollX: calculateOffsetAt(i, I.value, r.value.columnGap || 0, (e) => B.query(e)),
745
+ usableWidth: calculateRangeSize(i, a, I.value, r.value.columnGap || 0, (e) => B.query(e)),
735
746
  colBuffer: 0,
736
- fixedWidth: F.value,
747
+ fixedWidth: I.value,
737
748
  columnGap: r.value.columnGap || 0,
738
- findLowerBound: (e) => z.findLowerBound(e),
739
- query: (e) => z.query(e),
740
- totalColsQuery: () => z.query(e)
749
+ findLowerBound: (e) => B.findLowerBound(e),
750
+ query: (e) => B.query(e),
751
+ totalColsQuery: () => B.query(e)
741
752
  });
742
753
  }
743
754
  let t = r.value.ssrRange && !l.value ? 0 : 2;
@@ -746,11 +757,11 @@ function useVirtualScroll(e, n = []) {
746
757
  relativeScrollX: q.value,
747
758
  usableWidth: He.value,
748
759
  colBuffer: t,
749
- fixedWidth: F.value,
760
+ fixedWidth: I.value,
750
761
  columnGap: r.value.columnGap || 0,
751
- findLowerBound: (e) => z.findLowerBound(e),
752
- query: (e) => z.query(e),
753
- totalColsQuery: () => z.query(e)
762
+ findLowerBound: (e) => B.findLowerBound(e),
763
+ query: (e) => B.query(e),
764
+ totalColsQuery: () => B.query(e)
754
765
  });
755
766
  }), lt = {
756
767
  props: r,
@@ -768,13 +779,13 @@ function useVirtualScroll(e, n = []) {
768
779
  internalScrollY: c,
769
780
  isRtl: g,
770
781
  isScrolling: l,
771
- isProgrammaticScroll: k,
782
+ isProgrammaticScroll: A,
772
783
  viewportWidth: y,
773
784
  viewportHeight: b,
774
785
  scaleX: w,
775
786
  scaleY: E,
776
787
  scrollDirectionX: D,
777
- scrollDirectionY: te,
788
+ scrollDirectionY: O,
778
789
  relativeScrollX: q,
779
790
  relativeScrollY: J
780
791
  },
@@ -785,31 +796,31 @@ function useVirtualScroll(e, n = []) {
785
796
  getRowIndexAt: Y,
786
797
  getColIndexAt: $e,
787
798
  getItemSize: rt,
788
- getItemBaseSize: De,
799
+ getItemBaseSize: Ee,
789
800
  getItemOffset: nt,
790
801
  handleScrollCorrection: it
791
802
  }
792
803
  }, ut = [], dt = computed(() => {
793
- we.value;
804
+ Ce.value;
794
805
  let { start: e, end: t } = ot.value, i = [], a = [...r.value.stickyIndices || []].sort((e, t) => e - t), s = new Set(a), l = [];
795
806
  if (d.value || !r.value.ssrRange) {
796
807
  let t = st.value, n = findPrevStickyIndex(a, t);
797
808
  n !== void 0 && n < e && l.push(n);
798
809
  }
799
810
  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)) : {
811
+ 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
812
  x: 0,
802
813
  y: 0
803
814
  }, p = /* @__PURE__ */ new Map();
804
815
  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;
816
+ 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
817
  for (let e of l) {
807
818
  let t = r.value.items[e];
808
819
  if (t === void 0) continue;
809
820
  let { x: n, y: l, width: m, height: h } = calculateItemPosition({
810
821
  index: e,
811
- direction: M.value,
812
- fixedSize: P.value,
822
+ direction: N.value,
823
+ fixedSize: F.value,
813
824
  gap: r.value.gap || 0,
814
825
  columnGap: r.value.columnGap || 0,
815
826
  usableWidth: He.value,
@@ -817,57 +828,57 @@ function useVirtualScroll(e, n = []) {
817
828
  totalWidth: We.value.width,
818
829
  queryY: y,
819
830
  queryX: v,
820
- getSizeY: (e) => R.get(e),
821
- getSizeX: (e) => I.get(e),
831
+ getSizeY: (e) => z.get(e),
832
+ getSizeX: (e) => L.get(e),
822
833
  columnRange: T
823
- }), g = s.has(e), _ = n, te = l;
834
+ }), g = s.has(e), _ = n, O = l;
824
835
  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({
836
+ let te = D < a.length ? a[D] : void 0, { isStickyActive: k, isStickyActiveX: A, isStickyActiveY: j, stickyOffset: ne } = calculateStickyItem({
826
837
  index: e,
827
838
  isSticky: g,
828
- direction: M.value,
839
+ direction: N.value,
829
840
  relativeScrollX: q.value,
830
841
  relativeScrollY: J.value,
831
842
  originalX: _,
832
- originalY: te,
843
+ originalY: O,
833
844
  width: m,
834
845
  height: h,
835
846
  stickyIndices: a,
836
- fixedSize: P.value,
837
- fixedWidth: F.value,
847
+ fixedSize: F.value,
848
+ fixedWidth: I.value,
838
849
  gap: r.value.gap || 0,
839
850
  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({
851
+ getItemQueryY: (e) => z.query(e),
852
+ getItemQueryX: (e) => L.query(e),
853
+ nextStickyIndex: te
854
+ }), 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);
855
+ 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
856
  item: t,
846
857
  index: e,
847
858
  offset: {
848
- x: ie,
849
- y: j
859
+ x: re,
860
+ y: M
850
861
  },
851
862
  size: {
852
863
  width: m,
853
864
  height: h
854
865
  },
855
866
  originalX: _,
856
- originalY: te,
867
+ originalY: O,
857
868
  isSticky: g,
858
- isStickyActive: O,
859
- isStickyActiveX: k,
860
- isStickyActiveY: A,
861
- stickyOffset: re
869
+ isStickyActive: k,
870
+ isStickyActiveX: A,
871
+ isStickyActiveY: j,
872
+ stickyOffset: ne
862
873
  });
863
874
  }
864
- let te = i;
875
+ let O = i;
865
876
  return n.forEach((e) => {
866
- e.transformRenderedItems && (te = e.transformRenderedItems(te, lt));
867
- }), ut = te, te;
877
+ e.transformRenderedItems && (O = e.transformRenderedItems(O, lt));
878
+ }), ut = O, O;
868
879
  }), 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);
880
+ Ce.value;
881
+ 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
882
  return {
872
883
  items: dt.value,
873
884
  currentIndex: u,
@@ -895,7 +906,7 @@ function useVirtualScroll(e, n = []) {
895
906
  height: Je.value
896
907
  },
897
908
  isScrolling: l.value,
898
- isProgrammaticScroll: k.value,
909
+ isProgrammaticScroll: A.value,
899
910
  range: ot.value,
900
911
  columnRange: ct.value
901
912
  };
@@ -906,12 +917,17 @@ function useVirtualScroll(e, n = []) {
906
917
  if (typeof window > "u") return;
907
918
  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
919
  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);
920
+ if (!A.value) {
921
+ l.value || (re = o.value, M = c.value);
922
+ let e = r - re, t = s - M;
923
+ Math.abs(e) > .5 && (D.value = e > 0 ? "end" : "start"), Math.abs(t) > .5 && (O.value = t > 0 ? "end" : "start");
924
+ }
925
+ 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(() => {
926
+ l.value = !1, n.forEach((e) => e.onScrollEnd?.(lt)), j === void 0 && (A.value = !1);
911
927
  }, 150);
912
928
  }, mt = (e) => {
913
- ke(e, Y, $e, q.value, J.value, (e, t) => {
914
- !O.value && !k.value && it(e, t);
929
+ Oe(e, Y, $e, q.value, J.value, (e, t) => {
930
+ !k.value && !A.value && it(e, t);
915
931
  });
916
932
  }, ht = (e, t, n, r) => {
917
933
  mt([{
@@ -922,49 +938,49 @@ function useVirtualScroll(e, n = []) {
922
938
  }]);
923
939
  };
924
940
  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;
941
+ if (k.value && !f.value) {
942
+ let { rowIndex: e, colIndex: t, options: n } = k.value;
943
+ if (isScrollToIndexOptions(n) && n.behavior === "smooth" && (l.value || A.value)) return;
928
944
  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
945
  rowIndex: e,
930
946
  colIndex: t,
931
947
  options: n,
932
- direction: M.value,
948
+ direction: N.value,
933
949
  viewportWidth: y.value,
934
950
  viewportHeight: b.value,
935
951
  totalWidth: Ke.value,
936
952
  totalHeight: qe.value,
937
953
  gap: r.value.gap || 0,
938
954
  columnGap: r.value.columnGap || 0,
939
- fixedSize: P.value,
940
- fixedWidth: F.value,
955
+ fixedSize: F.value,
956
+ fixedWidth: I.value,
941
957
  relativeScrollX: u,
942
958
  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),
959
+ getItemSizeY: (e) => z.get(e),
960
+ getItemSizeX: (e) => L.get(e),
961
+ getItemQueryY: (e) => z.query(e),
962
+ getItemQueryX: (e) => L.query(e),
963
+ getColumnSize: (e) => B.get(e),
964
+ getColumnQuery: (e) => B.query(e),
949
965
  scaleX: w.value,
950
966
  scaleY: E.value,
951
967
  hostOffsetX: K.x,
952
968
  hostOffsetY: K.y,
953
969
  stickyIndices: r.value.stickyIndices || [],
954
- stickyStartX: H.value,
955
- stickyStartY: U.value,
956
- stickyEndX: Le.value,
957
- stickyEndY: Re.value,
958
- flowPaddingStartX: W.value,
970
+ stickyStartX: U.value,
971
+ stickyStartY: W.value,
972
+ stickyEndX: Ie.value,
973
+ stickyEndY: Le.value,
974
+ flowPaddingStartX: Re.value,
959
975
  flowPaddingStartY: Be.value,
960
- paddingStartX: Ne.value,
961
- paddingStartY: Fe.value,
962
- paddingEndX: Pe.value,
963
- paddingEndY: Ie.value
976
+ paddingStartX: Me.value,
977
+ paddingStartY: Pe.value,
978
+ paddingEndX: Ne.value,
979
+ paddingEndY: Fe.value
964
980
  }), m = 2 * w.value, h = 2 * E.value, _ = t == null || Math.abs(u - f) < m, v = e == null || Math.abs(d - p) < h;
965
981
  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);
982
+ let n = t == null || t === void 0 || he.value[t] === 1, r = e == null || e === void 0 || V.value[e] === 1;
983
+ n && r && !l.value && !A.value && (k.value = null);
968
984
  } else at(e, t, isScrollToIndexOptions(n) ? {
969
985
  ...n,
970
986
  isCorrection: !0
@@ -975,7 +991,7 @@ function useVirtualScroll(e, n = []) {
975
991
  }
976
992
  }
977
993
  watch([
978
- we,
994
+ Ce,
979
995
  y,
980
996
  b
981
997
  ], gt), watch(l, (e) => {
@@ -1068,18 +1084,18 @@ function useVirtualScroll(e, n = []) {
1068
1084
  () => r.value.columnGap,
1069
1085
  () => r.value.defaultItemSize,
1070
1086
  () => r.value.defaultColumnWidth
1071
- ], () => Oe(), { immediate: !0 }), watch(() => [r.value.container, r.value.hostElement], () => {
1087
+ ], () => De(), { immediate: !0 }), watch(() => [r.value.container, r.value.hostElement], () => {
1072
1088
  Q();
1073
1089
  }), watch(g, (e, t) => {
1074
1090
  if (t === void 0 || e === t || !p.value) return;
1075
- if (M.value === "vertical") {
1091
+ if (N.value === "vertical") {
1076
1092
  Q();
1077
1093
  return;
1078
1094
  }
1079
1095
  let n = displayToVirtual(t ? Math.abs(i.value) : i.value, x.x, w.value);
1080
1096
  Q(), Z(n, null, { behavior: "auto" });
1081
1097
  }, { flush: "sync" }), watch([w, E], () => {
1082
- !p.value || l.value || k.value || Z(o.value, c.value, { behavior: "auto" });
1098
+ !p.value || l.value || A.value || Z(o.value, c.value, { behavior: "auto" });
1083
1099
  }), watch([() => r.value.items.length, () => r.value.columnCount], ([e, t], [n, r]) => {
1084
1100
  nextTick(() => {
1085
1101
  let i = Math.max(0, G.value - y.value), a = Math.max(0, Je.value - b.value);
@@ -1094,23 +1110,23 @@ function useVirtualScroll(e, n = []) {
1094
1110
  scrollDetails: ft,
1095
1111
  getRowHeight: tt,
1096
1112
  getColumnWidth: et,
1097
- getRowOffset: (e) => Be.value + U.value + Fe.value + calculateOffsetAt(e, P.value, r.value.gap || 0, (e) => R.query(e)),
1113
+ getRowOffset: (e) => Be.value + W.value + Pe.value + calculateOffsetAt(e, F.value, r.value.gap || 0, (e) => z.query(e)),
1098
1114
  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));
1115
+ let t = Re.value + U.value + Me.value;
1116
+ 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
1117
  },
1102
1118
  getItemOffset: nt,
1103
1119
  getItemSize: rt,
1104
1120
  scrollToIndex: at,
1105
1121
  scrollToOffset: Z,
1106
- stopProgrammaticScroll: re,
1122
+ stopProgrammaticScroll: ne,
1107
1123
  handleScrollCorrection: it,
1108
1124
  updateItemSize: ht,
1109
1125
  updateItemSizes: mt,
1110
1126
  updateHostOffset: Q,
1111
1127
  updateDirection: X,
1112
1128
  columnRange: ct,
1113
- refresh: () => je(),
1129
+ refresh: () => Ae(),
1114
1130
  isHydrated: d,
1115
1131
  isWindowContainer: Ge,
1116
1132
  isRtl: g,
@@ -1120,7 +1136,8 @@ function useVirtualScroll(e, n = []) {
1120
1136
  renderedVirtualWidth: Ze,
1121
1137
  renderedVirtualHeight: Qe,
1122
1138
  getRowIndexAt: Y,
1123
- getColIndexAt: $e
1139
+ getColIndexAt: $e,
1140
+ __internalState: lt.internalState
1124
1141
  };
1125
1142
  }
1126
1143
  function useVirtualScrollbar(e) {
@@ -1230,13 +1247,22 @@ function useSnappingExtension() {
1230
1247
  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
1248
  o && (s = o.index, l = o.align, u = !0);
1232
1249
  }
1233
- u && e.methods.scrollToIndex(o, s, {
1234
- align: {
1235
- x: l,
1236
- y: c
1237
- },
1238
- behavior: "smooth"
1239
- });
1250
+ if (u) {
1251
+ let { targetX: t, targetY: n } = e.methods.scrollToIndex(o, s, {
1252
+ align: {
1253
+ x: l,
1254
+ y: c
1255
+ },
1256
+ dryRun: !0
1257
+ }), 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);
1258
+ (a > .5 || u > .5) && e.methods.scrollToIndex(o, s, {
1259
+ align: {
1260
+ x: l,
1261
+ y: c
1262
+ },
1263
+ behavior: "smooth"
1264
+ });
1265
+ }
1240
1266
  }
1241
1267
  };
1242
1268
  }
@@ -1398,25 +1424,25 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1398
1424
  "visibleRangeChange"
1399
1425
  ],
1400
1426
  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 = [
1427
+ 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
1428
  useRtlExtension(),
1403
1429
  useSnappingExtension(),
1404
1430
  useStickyExtension(),
1405
1431
  useInfiniteLoadingExtension({ onLoad: (e) => S("load", e) }),
1406
1432
  usePrependRestorationExtension(),
1407
1433
  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, {
1434
+ ], oe = ref(0), se = ref(0), ce = computed(() => _.container === void 0 ? k.value : _.container), le = computed(() => {
1435
+ let e = ce.value;
1436
+ return e === k.value || isWindowLike(e);
1437
+ }), F = computed(() => (_.items.length, {
1412
1438
  items: _.items,
1413
1439
  itemSize: _.itemSize,
1414
1440
  direction: _.direction,
1415
1441
  bufferBefore: _.bufferBefore,
1416
1442
  bufferAfter: _.bufferAfter,
1417
- container: le.value,
1418
- hostElement: A.value,
1419
- hostRef: O.value,
1443
+ container: ce.value,
1444
+ hostElement: j.value,
1445
+ hostRef: k.value,
1420
1446
  ssrRange: _.ssrRange,
1421
1447
  columnCount: _.columnCount,
1422
1448
  columnWidth: _.columnWidth,
@@ -1430,19 +1456,19 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1430
1456
  },
1431
1457
  flowPaddingStart: {
1432
1458
  x: 0,
1433
- y: _.stickyHeader ? 0 : se.value
1459
+ y: _.stickyHeader ? 0 : oe.value
1434
1460
  },
1435
1461
  flowPaddingEnd: {
1436
1462
  x: 0,
1437
- y: _.stickyFooter ? 0 : ce.value
1463
+ y: _.stickyFooter ? 0 : se.value
1438
1464
  },
1439
1465
  stickyStart: {
1440
1466
  x: 0,
1441
- y: _.stickyHeader && ue.value ? se.value : 0
1467
+ y: _.stickyHeader && le.value ? oe.value : 0
1442
1468
  },
1443
1469
  stickyEnd: {
1444
1470
  x: 0,
1445
- y: _.stickyFooter && ue.value ? ce.value : 0
1471
+ y: _.stickyFooter && le.value ? se.value : 0
1446
1472
  },
1447
1473
  gap: _.gap,
1448
1474
  columnGap: _.columnGap,
@@ -1456,64 +1482,64 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1456
1482
  defaultColumnWidth: _.defaultColumnWidth,
1457
1483
  debug: _.debug,
1458
1484
  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);
1485
+ })), { 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
1486
  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));
1487
+ let { displayViewportSize: t } = R.value;
1488
+ e >= me.value - t.height - .5 ? ge(null, Infinity) : ge(null, displayToVirtual(e, je.y, ke.value));
1463
1489
  }
1464
1490
  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);
1491
+ let { displayViewportSize: t } = R.value;
1492
+ e >= z.value - t.width - .5 ? ge(Infinity, null) : ge(displayToVirtual(e, je.x, Oe.value), null);
1467
1493
  }
1468
1494
  let Ye = useVirtualScrollbar(computed(() => ({
1469
1495
  axis: "vertical",
1470
- totalSize: he.value,
1471
- position: L.value.displayScrollOffset.y,
1472
- viewportSize: L.value.displayViewportSize.height,
1496
+ totalSize: me.value,
1497
+ position: R.value.displayScrollOffset.y,
1498
+ viewportSize: R.value.displayViewportSize.height,
1473
1499
  scrollToOffset: Je,
1474
- containerId: N.value,
1475
- isRtl: pe.value
1500
+ containerId: P.value,
1501
+ isRtl: fe.value
1476
1502
  }))), Xe = useVirtualScrollbar(computed(() => ({
1477
1503
  axis: "horizontal",
1478
- totalSize: R.value,
1479
- position: L.value.displayScrollOffset.x,
1480
- viewportSize: L.value.displayViewportSize.width,
1504
+ totalSize: z.value,
1505
+ position: R.value.displayScrollOffset.x,
1506
+ viewportSize: R.value.displayViewportSize.width,
1481
1507
  scrollToOffset: K,
1482
- containerId: N.value,
1483
- isRtl: pe.value
1508
+ containerId: P.value,
1509
+ isRtl: fe.value
1484
1510
  }))), Ze = computed(() => _.direction === "both" ? {
1485
- ...me.value,
1511
+ ...pe.value,
1486
1512
  padStart: 0,
1487
1513
  padEnd: 0
1488
- } : me.value);
1514
+ } : pe.value);
1489
1515
  function Qe() {
1490
- Ee(), be(), nextTick(() => {
1516
+ Te(), ye(), nextTick(() => {
1491
1517
  let e = [];
1492
- for (let [t, n] of j.entries()) n && e.push({
1518
+ for (let [t, n] of M.entries()) n && e.push({
1493
1519
  index: t,
1494
1520
  inlineSize: n.offsetWidth,
1495
1521
  blockSize: n.offsetHeight,
1496
1522
  element: n
1497
1523
  });
1498
- e.length > 0 && ye(e);
1524
+ e.length > 0 && ve(e);
1499
1525
  });
1500
1526
  }
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", {
1527
+ watch(R, (e, t) => {
1528
+ !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
1529
  start: e.range.start,
1504
1530
  end: e.range.end,
1505
1531
  colStart: e.columnRange.start,
1506
1532
  colEnd: e.columnRange.end
1507
1533
  }));
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
1534
+ }), watch(I, (e) => {
1535
+ e && R.value?.range && R.value?.columnRange && S("visibleRangeChange", {
1536
+ start: R.value.range.start,
1537
+ end: R.value.range.end,
1538
+ colStart: R.value.columnRange.start,
1539
+ colEnd: R.value.columnRange.end
1514
1540
  });
1515
1541
  }, { once: !0 });
1516
- let q = typeof window > "u" ? null : new ResizeObserver(ve), J = typeof window > "u" ? null : new ResizeObserver((e) => {
1542
+ let q = typeof window > "u" ? null : new ResizeObserver(_e), J = typeof window > "u" ? null : new ResizeObserver((e) => {
1517
1543
  let t = [];
1518
1544
  for (let n of e) {
1519
1545
  let e = n.target, r = Number(e.dataset.index), i = e.dataset.colIndex, a = n.contentRect.width, o = n.contentRect.height;
@@ -1529,21 +1555,21 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1529
1555
  element: e
1530
1556
  });
1531
1557
  }
1532
- t.length > 0 && ye(t);
1558
+ t.length > 0 && ve(t);
1533
1559
  }), Y = typeof window > "u" ? null : new ResizeObserver(() => {
1534
- se.value = re.value?.offsetHeight || 0, ce.value = ie.value?.offsetHeight || 0, ve();
1560
+ oe.value = ne.value?.offsetHeight || 0, se.value = re.value?.offsetHeight || 0, _e();
1535
1561
  });
1536
1562
  function $e(e, t) {
1537
1563
  watch(e, (e, n) => {
1538
1564
  n && Y?.unobserve(n), e ? Y?.observe(e) : t.value = 0;
1539
1565
  }, { immediate: !0 });
1540
1566
  }
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]) => {
1567
+ $e(ne, oe), $e(re, se), onMounted(() => {
1568
+ k.value && q?.observe(k.value);
1569
+ for (let e of M.values()) et(e, !0);
1570
+ }), watch([k, j], ([e], [t]) => {
1545
1571
  t && q?.unobserve(t), e && q?.observe(e);
1546
- }), watch([O, qe], ([e, t], [n, r]) => {
1572
+ }), watch([k, qe], ([e, t], [n, r]) => {
1547
1573
  let i = e !== n || t !== r;
1548
1574
  n && i && n.removeEventListener("wheel", ft), e && i && e.addEventListener("wheel", ft, { passive: !t });
1549
1575
  }, { immediate: !0 });
@@ -1554,10 +1580,10 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1554
1580
  function tt(e, t) {
1555
1581
  if (e) {
1556
1582
  let n = e;
1557
- j.set(t, n), et(n, !0);
1583
+ M.set(t, n), et(n, !0);
1558
1584
  } else {
1559
- let e = j.get(t);
1560
- e && (et(e, !1), j.delete(t));
1585
+ let e = M.get(t);
1586
+ e && (et(e, !1), M.delete(t));
1561
1587
  }
1562
1588
  }
1563
1589
  let nt = ref(!1), rt = {
@@ -1577,8 +1603,8 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1577
1603
  let e = () => {
1578
1604
  let { nextVelocity: t, delta: n } = calculateInertiaStep(Z, FRICTION);
1579
1605
  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();
1606
+ let { x: r, y: i } = R.value.scrollOffset;
1607
+ 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
1608
  };
1583
1609
  ot = requestAnimationFrame(e);
1584
1610
  }
@@ -1589,15 +1615,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1589
1615
  };
1590
1616
  }
1591
1617
  function lt(e) {
1592
- V(), ct(), qe.value && (e.pointerType === "mouse" && e.button !== 0 || (nt.value = !0, rt = {
1618
+ H(), ct(), qe.value && (e.pointerType === "mouse" && e.button !== 0 || (nt.value = !0, rt = {
1593
1619
  x: e.clientX,
1594
1620
  y: e.clientY
1595
1621
  }, it = {
1596
1622
  x: e.clientX,
1597
1623
  y: e.clientY
1598
1624
  }, at = performance.now(), X = {
1599
- x: L.value.scrollOffset.x,
1600
- y: L.value.scrollOffset.y
1625
+ x: R.value.scrollOffset.x,
1626
+ y: R.value.scrollOffset.y
1601
1627
  }, e.currentTarget.setPointerCapture(e.pointerId)));
1602
1628
  }
1603
1629
  function ut(e) {
@@ -1616,94 +1642,94 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1616
1642
  }, at = t;
1617
1643
  let r = rt.x - e.clientX, i = rt.y - e.clientY;
1618
1644
  requestAnimationFrame(() => {
1619
- _e(X.x + r, X.y + i, { behavior: "auto" });
1645
+ ge(X.x + r, X.y + i, { behavior: "auto" });
1620
1646
  });
1621
1647
  }
1622
1648
  function dt(e) {
1623
1649
  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
1650
  }
1625
1651
  function ft(e) {
1626
- let { scrollOffset: t } = L.value;
1627
- if (V(), qe.value) {
1652
+ let { scrollOffset: t } = R.value;
1653
+ if (H(), qe.value) {
1628
1654
  e.preventDefault();
1629
1655
  let { deltaX: n, deltaY: r } = e;
1630
- e.shiftKey && n === 0 && (n = r, r = 0), _e(t.x + n, t.y + r, { behavior: "auto" });
1656
+ e.shiftKey && n === 0 && (n = r, r = 0), ge(t.x + n, t.y + r, { behavior: "auto" });
1631
1657
  }
1632
1658
  }
1633
1659
  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) => {
1660
+ 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
1661
  let r = (e ? n.x : n.y) + (e ? t.width : t.height) / 2;
1636
1662
  return e ? Ke(r) : Ge(r);
1637
- }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = L.value, v = (e, t) => {
1663
+ }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = R.value, v = (e, t) => {
1638
1664
  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
1665
  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
1666
  }, y = (e, r) => {
1641
1667
  let i = !e;
1642
1668
  if (d === "center") {
1643
1669
  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" });
1670
+ V(e ? a : null, i ? a : null, { align: "center" });
1645
1671
  return;
1646
1672
  }
1647
- if (e) if (r) if (d === "start") B(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1673
+ if (e) if (r) if (d === "start") V(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1648
1674
  else {
1649
1675
  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 });
1676
+ xe(m) + he(m) > r + 1 ? V(m, null, { align: e }) : m < _.items.length - 1 && V(m + 1, null, { align: e });
1651
1677
  }
1652
- else if (d === "end") B(Math.max(0, m - 1), null, { align: "end" });
1678
+ else if (d === "end") V(Math.max(0, m - 1), null, { align: "end" });
1653
1679
  else {
1654
1680
  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 });
1681
+ xe(p) < t - 1 ? V(p, null, { align: e }) : p > 0 && V(p - 1, null, { align: e });
1656
1682
  }
1657
1683
  else {
1658
1684
  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" });
1685
+ if (fe.value ? !r : r) if (d === "start") V(null, Math.min(e, h + 1), { align: "start" });
1660
1686
  else {
1661
1687
  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 });
1688
+ (_.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
1689
  }
1664
- else if (d === "end") B(null, Math.max(0, g - 1), { align: "end" });
1690
+ else if (d === "end") V(null, Math.max(0, g - 1), { align: "end" });
1665
1691
  else {
1666
1692
  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 });
1693
+ (_.columnCount ? Se(h) : be(h)) < t - 1 ? V(null, h, { align: e }) : h > 0 && V(null, h - 1, { align: e });
1668
1694
  }
1669
1695
  }
1670
1696
  };
1671
1697
  switch (e.key) {
1672
1698
  case "Home":
1673
- e.preventDefault(), V(), B(0, 0, {
1699
+ e.preventDefault(), H(), V(0, 0, {
1674
1700
  behavior: Math.max(n.x, n.y) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth",
1675
1701
  align: "start"
1676
1702
  });
1677
1703
  break;
1678
1704
  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, {
1705
+ e.preventDefault(), H();
1706
+ 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";
1707
+ _.direction === "both" ? V(r, i, {
1682
1708
  behavior: o,
1683
1709
  align: "end"
1684
- }) : B(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1710
+ }) : V(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1685
1711
  behavior: o,
1686
1712
  align: "end"
1687
1713
  });
1688
1714
  break;
1689
1715
  }
1690
1716
  case "ArrowUp":
1691
- e.preventDefault(), V(), i && y(!0, !1);
1717
+ e.preventDefault(), H(), i && y(!0, !1);
1692
1718
  break;
1693
1719
  case "ArrowDown":
1694
- e.preventDefault(), V(), i && y(!0, !0);
1720
+ e.preventDefault(), H(), i && y(!0, !0);
1695
1721
  break;
1696
1722
  case "ArrowLeft":
1697
- e.preventDefault(), V(), r && y(!1, !1);
1723
+ e.preventDefault(), H(), r && y(!1, !1);
1698
1724
  break;
1699
1725
  case "ArrowRight":
1700
- e.preventDefault(), V(), r && y(!1, !0);
1726
+ e.preventDefault(), H(), r && y(!1, !0);
1701
1727
  break;
1702
1728
  case "PageUp":
1703
- e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !1), { align: d || "end" }) : B(v(!0, !1), null, { align: d || "end" });
1729
+ e.preventDefault(), H(), _.direction === "horizontal" ? V(null, v(!1, !1), { align: d || "end" }) : V(v(!0, !1), null, { align: d || "end" });
1704
1730
  break;
1705
1731
  case "PageDown":
1706
- e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !0), { align: d || "start" }) : B(v(!0, !0), null, { align: d || "start" });
1732
+ e.preventDefault(), H(), _.direction === "horizontal" ? V(null, v(!1, !0), { align: d || "start" }) : V(v(!0, !0), null, { align: d || "start" });
1707
1733
  break;
1708
1734
  }
1709
1735
  }
@@ -1712,7 +1738,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1712
1738
  });
1713
1739
  let mt = computed(() => {
1714
1740
  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" ? {
1741
+ return (G.value || !Ae.value) && (e.overflow = "auto"), qe.value && (e.touchAction = "none"), Ae.value ? e : _.containerTag === "table" ? {
1716
1742
  ...e,
1717
1743
  display: "block",
1718
1744
  minInlineSize: _.direction === "vertical" ? "100%" : "auto"
@@ -1733,8 +1759,8 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1733
1759
  position: n,
1734
1760
  viewportSize: r,
1735
1761
  scrollToOffset: i,
1736
- containerId: N.value,
1737
- isRtl: pe.value,
1762
+ containerId: P.value,
1763
+ isRtl: fe.value,
1738
1764
  ariaLabel: `${e === "vertical" ? "Vertical" : "Horizontal"} scroll`
1739
1765
  },
1740
1766
  isDragging: a.isDragging.value
@@ -1742,18 +1768,18 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1742
1768
  }
1743
1769
  let gt = computed(() => {
1744
1770
  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);
1771
+ let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1772
+ return ht("vertical", me.value, t.y, e.height, Je, Ye);
1747
1773
  }), Q = computed(() => {
1748
1774
  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);
1775
+ let { displayViewportSize: e, displayScrollOffset: t } = R.value;
1776
+ return ht("horizontal", z.value, t.x, e.width, K, Xe);
1751
1777
  }), _t = computed(() => {
1752
1778
  let e = _.direction === "horizontal", t = _.direction === "vertical", n = _.direction === "both", r = {
1753
1779
  inlineSize: t ? "100%" : `${Ue.value}px`,
1754
1780
  blockSize: e ? "100%" : `${We.value}px`
1755
1781
  };
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;
1782
+ 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
1783
  }), vt = computed(() => {
1758
1784
  let e = _.direction === "horizontal";
1759
1785
  return {
@@ -1771,14 +1797,14 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1771
1797
  let t = calculateItemStyle({
1772
1798
  containerTag: _.containerTag || "div",
1773
1799
  direction: _.direction,
1774
- isHydrated: F.value,
1800
+ isHydrated: I.value,
1775
1801
  item: e,
1776
1802
  itemSize: _.itemSize,
1777
- paddingStartX: P.value.scrollPaddingStart.x,
1778
- paddingStartY: P.value.scrollPaddingStart.y,
1779
- isRtl: pe.value
1803
+ paddingStartX: F.value.scrollPaddingStart.x,
1804
+ paddingStartY: F.value.scrollPaddingStart.y,
1805
+ isRtl: fe.value
1780
1806
  });
1781
- return !F.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1807
+ return !I.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1782
1808
  }
1783
1809
  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
1810
  if (Tt.value) return "row";
@@ -1815,43 +1841,43 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1815
1841
  }
1816
1842
  return s({
1817
1843
  ...toRefs(_),
1818
- scrollDetails: L,
1819
- columnRange: me,
1820
- getColumnWidth: z,
1821
- getRowHeight: ge,
1844
+ scrollDetails: R,
1845
+ columnRange: pe,
1846
+ getColumnWidth: B,
1847
+ getRowHeight: he,
1822
1848
  getCellAriaProps: Ft,
1823
1849
  getItemAriaProps: Pt,
1824
- getRowOffset: Se,
1825
- getColumnOffset: Ce,
1826
- getItemOffset: xe,
1827
- getItemSize: Te,
1850
+ getRowOffset: xe,
1851
+ getColumnOffset: Se,
1852
+ getItemOffset: be,
1853
+ getItemSize: we,
1828
1854
  isTable: $,
1829
1855
  itemTag: computed(() => _.itemTag || "div"),
1830
1856
  getRowIndexAt: Ge,
1831
1857
  getColIndexAt: Ke,
1832
- scrollToIndex: B,
1833
- scrollToOffset: _e,
1858
+ scrollToIndex: V,
1859
+ scrollToOffset: ge,
1834
1860
  refresh: Qe,
1835
1861
  stopProgrammaticScroll: () => {
1836
- V(), ct();
1862
+ H(), ct();
1837
1863
  },
1838
- updateDirection: be,
1839
- isRtl: pe,
1840
- isHydrated: F,
1841
- scaleX: ke,
1842
- scaleY: Ae,
1843
- renderedWidth: R,
1844
- renderedHeight: he,
1845
- componentOffset: Me,
1864
+ updateDirection: ye,
1865
+ isRtl: fe,
1866
+ isHydrated: I,
1867
+ scaleX: Oe,
1868
+ scaleY: ke,
1869
+ renderedWidth: z,
1870
+ renderedHeight: me,
1871
+ componentOffset: je,
1846
1872
  scrollbarPropsVertical: gt,
1847
1873
  scrollbarPropsHorizontal: Q
1848
1874
  }), (t, s) => (openBlock(), createBlock(resolveDynamicComponent(o.containerTag), mergeProps({
1849
- id: N.value,
1875
+ id: P.value,
1850
1876
  ref_key: "hostRef",
1851
- ref: O,
1877
+ ref: k,
1852
1878
  class: ["virtual-scroll-container", [`virtual-scroll--${o.direction}`, {
1853
- "virtual-scroll--hydrated": unref(F),
1854
- "virtual-scroll--window": unref(je),
1879
+ "virtual-scroll--hydrated": unref(I),
1880
+ "virtual-scroll--window": unref(Ae),
1855
1881
  "virtual-scroll--table": $.value,
1856
1882
  "virtual-scroll--hide-scrollbar": G.value
1857
1883
  }]],
@@ -1872,15 +1898,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1872
1898
  G.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1873
1899
  class: "virtual-scroll-scrollbar-viewport",
1874
1900
  style: normalizeStyle({
1875
- inlineSize: `${unref(L).displayViewportSize.width}px`,
1876
- blockSize: `${unref(L).displayViewportSize.height}px`,
1901
+ inlineSize: `${unref(R).displayViewportSize.width}px`,
1902
+ blockSize: `${unref(R).displayViewportSize.height}px`,
1877
1903
  "--vsi-scrollbar-has-cross-gap": o.direction === "both" ? 1 : 0
1878
1904
  })
1879
1905
  }, [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
1906
  T.header ? (openBlock(), createBlock(resolveDynamicComponent(St.value), {
1881
1907
  key: 1,
1882
1908
  ref_key: "headerRef",
1883
- ref: re,
1909
+ ref: ne,
1884
1910
  class: normalizeClass(["virtual-scroll-header", { "virtual-scroll--sticky": o.stickyHeader }]),
1885
1911
  role: $.value ? void 0 : "none"
1886
1912
  }, {
@@ -1889,7 +1915,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1889
1915
  }, 8, ["class", "role"])) : createCommentVNode("", !0),
1890
1916
  (openBlock(), createBlock(resolveDynamicComponent(o.wrapperTag), mergeProps({
1891
1917
  ref_key: "wrapperRef",
1892
- ref: A,
1918
+ ref: j,
1893
1919
  class: "virtual-scroll-wrapper",
1894
1920
  style: _t.value,
1895
1921
  role: $.value ? void 0 : Dt.value
@@ -1905,7 +1931,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1905
1931
  "block-size": "inherit"
1906
1932
  } }, null, -1)]]),
1907
1933
  _: 1
1908
- }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(I), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1934
+ }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(L), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1909
1935
  key: e.index,
1910
1936
  ref_for: !0,
1911
1937
  ref: (t) => tt(t, e.index),
@@ -1921,7 +1947,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1921
1947
  index: e.index,
1922
1948
  getItemAriaProps: Pt,
1923
1949
  columnRange: Ze.value,
1924
- getColumnWidth: unref(z),
1950
+ getColumnWidth: unref(B),
1925
1951
  getCellAriaProps: Ft,
1926
1952
  gap: _.gap,
1927
1953
  columnGap: _.columnGap,
@@ -1949,7 +1975,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1949
1975
  T.footer ? (openBlock(), createBlock(resolveDynamicComponent(Ct.value), {
1950
1976
  key: 3,
1951
1977
  ref_key: "footerRef",
1952
- ref: ie,
1978
+ ref: re,
1953
1979
  class: normalizeClass(["virtual-scroll-footer", { "virtual-scroll--sticky": o.stickyFooter }]),
1954
1980
  role: $.value ? void 0 : "none"
1955
1981
  }, {