@pdanpdan/virtual-scroll 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRefs, toValue, unref, useId, useSlots, watch, withCtx } from "vue";
1
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, guardReactiveProps, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRefs, toValue, unref, useId, useSlots, watch, watchEffect, withCtx } from "vue";
2
2
  const DEFAULT_ITEM_SIZE = 40, DEFAULT_COLUMN_WIDTH = 100, DEFAULT_BUFFER = 5, EMPTY_SCROLL_DETAILS = {
3
3
  items: [],
4
4
  currentIndex: 0,
@@ -39,7 +39,7 @@ const DEFAULT_ITEM_SIZE = 40, DEFAULT_COLUMN_WIDTH = 100, DEFAULT_BUFFER = 5, EM
39
39
  }
40
40
  }, BROWSER_MAX_SIZE = 1e7;
41
41
  function isWindow(e) {
42
- return e === null || e === document.documentElement || typeof window < "u" && e === window;
42
+ return e === null || typeof document < "u" && e === document.documentElement || typeof window < "u" && e === window;
43
43
  }
44
44
  function isBody(e) {
45
45
  return typeof e == "object" && !!e && "tagName" in e && e.tagName === "BODY";
@@ -151,23 +151,23 @@ function calculateAxisTarget({ index: e, align: t, viewSize: n, scrollPos: r, fi
151
151
  effectiveAlign: h
152
152
  };
153
153
  }
154
- function calculateAxisSticky(e, t, n, r, i, a) {
154
+ function calculateAxisSticky(e, t, n, r, i, a, o) {
155
155
  if (e <= t) return {
156
156
  isActive: !1,
157
157
  offset: 0
158
158
  };
159
- let o = findNextStickyIndex(i, r);
160
- if (o === void 0) return {
159
+ let s = o === void 0 ? findNextStickyIndex(i, r) : o;
160
+ if (s === void 0) return {
161
161
  isActive: !0,
162
162
  offset: 0
163
163
  };
164
- let s = a(o);
165
- return e >= s ? {
164
+ let c = a(s);
165
+ return e >= c ? {
166
166
  isActive: !1,
167
167
  offset: 0
168
168
  } : {
169
169
  isActive: !0,
170
- offset: Math.max(0, Math.min(n, s - e)) - n
170
+ offset: Math.max(0, Math.min(n, c - e)) - n
171
171
  };
172
172
  }
173
173
  function isItemVisible(e, t, n, r, i = 0, a = 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: te = 0, stickyEndY: ne = 0, flowPaddingStartX: re = 0, flowPaddingStartY: ie = 0, paddingStartX: D = 0, paddingStartY: O = 0, paddingEndX: k = 0, paddingEndY: ae = 0 }) {
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
192
  let j;
193
193
  j = isScrollToIndexOptions(n) ? n.align : n;
194
- let oe = (j && typeof j == "object" ? j.x : j) || "auto", se = (j && typeof j == "object" ? j.y : j) || "auto", ce = f, le = p, ue = 0, fe = 0, pe = "auto", M = "auto", N = b === 1 ? o : BROWSER_MAX_SIZE, me = x === 1 ? s : BROWSER_MAX_SIZE, P = Math.max(0, S + N - i), he = Math.max(0, C + me - a), F = (P - S) * b, ge = (he - C) * x, I = re + T + D, ve = ie + E + O;
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;
195
195
  if (e != null) {
196
196
  let t = calculateAxisTarget({
197
197
  index: e,
198
- align: se,
198
+ align: ae,
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 + O,
207
- stickyEnd: ne + ae
206
+ stickyStart: E + A,
207
+ stickyEnd: te + ie
208
208
  });
209
- le = t.target + ve, fe = t.itemSize, M = t.effectiveAlign;
209
+ se = t.target + z, le = t.itemSize, fe = t.effectiveAlign;
210
210
  }
211
211
  if (t != null) {
212
212
  let e = r === "both", n = calculateAxisTarget({
213
213
  index: t,
214
- align: oe,
214
+ align: N,
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 + D,
223
- stickyEnd: te + k
222
+ stickyStart: T + k,
223
+ stickyEnd: D + re
224
224
  });
225
- ce = n.target + I, ue = n.itemSize, pe = n.effectiveAlign;
225
+ oe = n.target + he, ce = n.itemSize, de = n.effectiveAlign;
226
226
  }
227
- return ce = Math.max(0, Math.min(ce, F)), le = Math.max(0, Math.min(le, ge)), {
228
- targetX: ce,
229
- targetY: le,
230
- itemWidth: ue,
231
- itemHeight: fe,
232
- effectiveAlignX: pe,
233
- effectiveAlignY: M
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
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 }) {
@@ -272,30 +272,30 @@ function calculateColumnRange({ columnCount: e, relativeScrollX: t, usableWidth:
272
272
  padEnd: Math.max(0, m - h)
273
273
  };
274
274
  }
275
- function calculateStickyItem({ index: e, isSticky: t, direction: n, relativeScrollX: r, relativeScrollY: i, originalX: a, originalY: o, width: s, height: c, stickyIndices: l, fixedSize: u, gap: d, columnGap: f, getItemQueryY: p, getItemQueryX: m }) {
276
- let h = !1, g = !1, _ = {
275
+ function calculateStickyItem({ index: e, isSticky: t, direction: n, relativeScrollX: r, relativeScrollY: i, originalX: a, originalY: o, width: s, height: c, stickyIndices: l, fixedSize: u, gap: d, columnGap: f, getItemQueryY: p, getItemQueryX: m, nextStickyIndex: h }) {
276
+ let g = !1, _ = !1, v = {
277
277
  x: 0,
278
278
  y: 0
279
279
  };
280
280
  if (!t) return {
281
- isStickyActiveX: h,
282
- isStickyActiveY: g,
281
+ isStickyActiveX: g,
282
+ isStickyActiveY: _,
283
283
  isStickyActive: !1,
284
- stickyOffset: _
284
+ stickyOffset: v
285
285
  };
286
286
  if (n === "vertical" || n === "both") {
287
- let t = calculateAxisSticky(i, o, c, e, l, (e) => u === null ? p(e) : e * (u + d));
288
- g = t.isActive, _.y = t.offset;
287
+ let t = calculateAxisSticky(i, o, c, e, l, (e) => u === null ? p(e) : e * (u + d), h);
288
+ _ = t.isActive, v.y = t.offset;
289
289
  }
290
290
  if (n === "horizontal") {
291
- let t = calculateAxisSticky(r, a, s, e, l, (e) => u === null ? m(e) : e * (u + f));
292
- t.isActive && (h = !0, _.x = t.offset);
291
+ let t = calculateAxisSticky(r, a, s, e, l, (e) => u === null ? m(e) : e * (u + f), h);
292
+ t.isActive && (g = !0, v.x = t.offset);
293
293
  }
294
294
  return {
295
- isStickyActiveX: h,
296
- isStickyActiveY: g,
297
- isStickyActive: h || g,
298
- stickyOffset: _
295
+ isStickyActiveX: g,
296
+ isStickyActiveY: _,
297
+ isStickyActive: g || _,
298
+ stickyOffset: v
299
299
  };
300
300
  }
301
301
  function calculateItemPosition({ index: e, direction: t, fixedSize: n, gap: r, columnGap: i, usableWidth: a, usableHeight: o, totalWidth: s, queryY: c, queryX: l, getSizeY: u, getSizeX: d, columnRange: f }) {
@@ -364,6 +364,19 @@ 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 : {
372
+ index: Math.min(o - 1, n + 1),
373
+ align: "start"
374
+ };
375
+ if (u === "end") return s(r) > a ? null : {
376
+ index: Math.max(0, r - 1),
377
+ align: "end"
378
+ };
379
+ }
367
380
  if (u === "start") {
368
381
  let e = s(n);
369
382
  if (e > a) return null;
@@ -455,7 +468,7 @@ var FenwickTree = class {
455
468
  function useVirtualScrollSizes(e) {
456
469
  let n = computed(() => toValue(e)), r = new FenwickTree(n.value.props.items?.length || 0), i = new FenwickTree(n.value.props.items?.length || 0), a = new FenwickTree(n.value.props.columnCount || 0), o = shallowRef(new Uint8Array()), s = shallowRef(new Uint8Array()), c = shallowRef(new Uint8Array()), l = ref(0), u = ref(!1), d = [], f = (e, t) => typeof n.value.props.itemSize == "function" ? n.value.props.itemSize(e, t) : n.value.defaultSize, p = (e, t, r, i, a, o) => {
457
470
  if (l.value, typeof t == "number" && t > 0) return t;
458
- if (o && Array.isArray(t) && t.length > 0) {
471
+ if (Array.isArray(t) && t.length > 0) {
459
472
  let n = t[e % t.length];
460
473
  return n != null && n > 0 ? n : r;
461
474
  }
@@ -478,49 +491,40 @@ function useVirtualScrollSizes(e) {
478
491
  let e = new Uint8Array(t);
479
492
  e.set(o.value.subarray(0, Math.min(t, o.value.length))), o.value = e;
480
493
  }
481
- }, h = () => {
482
- let e = n.value.props, t = e.items.length, l = e.columnCount || 0, u = e.gap || 0, d = e.columnGap || 0, p = e.columnWidth, m = !1, h = !1;
483
- if (l > 0) for (let t = 0; t < l; t++) {
484
- let r = a.get(t), i = o.value[t] === 1;
485
- if (!n.value.isDynamicColumnWidth || !i && r === 0) {
486
- let i = 0;
487
- i = typeof p == "number" && p > 0 ? p : Array.isArray(p) && p.length > 0 ? p[t % p.length] || e.defaultColumnWidth || 100 : typeof p == "function" ? p(t) : e.defaultColumnWidth || 100;
488
- let s = i + d;
489
- Math.abs(r - s) > .5 ? (a.set(t, s), o.value[t] = n.value.isDynamicColumnWidth ? 0 : 1, m = !0) : n.value.isDynamicColumnWidth || (o.value[t] = 1);
494
+ }, h = (e, t, n, r, i, a, o, s, c) => {
495
+ let l = !1;
496
+ if (c) {
497
+ for (let r = 0; r < e; r++) t.get(r) !== 0 && (t.set(r, 0), n[r] = 0, l = !0);
498
+ return l;
499
+ }
500
+ for (let c = 0; c < e; c++) {
501
+ let e = t.get(c), u = n[c] === 1;
502
+ if (!o || !u && e === 0) {
503
+ let u = p(c, r, i, a, t, s) + a;
504
+ Math.abs(e - u) > .5 ? (t.set(c, u), n[c] = o ? 0 : 1, l = !0) : o || (n[c] = 1);
490
505
  }
491
506
  }
492
- for (let a = 0; a < t; a++) {
493
- let t = e.items[a], o = r.get(a), l = i.get(a), p = s.value[a] === 1, m = c.value[a] === 1;
494
- if (n.value.direction === "horizontal") {
495
- if (!n.value.isDynamicItemSize || !p && o === 0) {
496
- let e = f(t, a) + d;
497
- Math.abs(o - e) > .5 ? (r.set(a, e), s.value[a] = n.value.isDynamicItemSize ? 0 : 1, h = !0) : n.value.isDynamicItemSize || (s.value[a] = 1);
498
- }
499
- } else o !== 0 && (r.set(a, 0), s.value[a] = 0, h = !0);
500
- if (n.value.direction !== "horizontal") {
501
- if (!n.value.isDynamicItemSize || !m && l === 0) {
502
- let e = f(t, a) + u;
503
- Math.abs(l - e) > .5 ? (i.set(a, e), c.value[a] = n.value.isDynamicItemSize ? 0 : 1, h = !0) : n.value.isDynamicItemSize || (c.value[a] = 1);
504
- }
505
- } else l !== 0 && (i.set(a, 0), c.value[a] = 0, h = !0);
507
+ return l;
508
+ }, g = () => {
509
+ let e = n.value.props, t = e.items.length, l = e.columnCount || 0, u = e.gap || 0, d = e.columnGap || 0, f = e.columnWidth, p = e.itemSize, m = e.defaultColumnWidth || 100, g = e.defaultItemSize || n.value.defaultSize, _ = h(l, a, o.value, f, m, d, n.value.isDynamicColumnWidth, !0, !1), v = h(t, r, s.value, p, g, d, n.value.isDynamicItemSize, !0, n.value.direction !== "horizontal"), y = h(t, i, c.value, p, g, u, n.value.isDynamicItemSize, !1, n.value.direction === "horizontal");
510
+ _ && a.rebuild(), v && r.rebuild(), y && i.rebuild();
511
+ }, _ = (e, t, n, r, i, a, o) => {
512
+ let s = n.get(e), c = t + i, l = !1;
513
+ if (!r[e] || Math.abs(c - s) > .1) {
514
+ let t = c - s;
515
+ n.update(e, t), r[e] = 1, l = !0, e < a && s > 0 && (o.val += t);
506
516
  }
507
- m && a.rebuild(), h && (r.rebuild(), i.rebuild());
508
- }, g = (e) => {
509
- let t = n.value.props, a = t.items, o = a.length;
510
- m(o, t.columnCount || 0);
511
- let p = t.restoreScrollOnPrepend ? calculatePrependCount(d, a) : 0;
512
- if (p > 0) {
513
- r.shift(p), i.shift(p);
514
- let l = new Uint8Array(o), u = new Uint8Array(o);
515
- l.set(s.value.subarray(0, Math.min(o - p, s.value.length)), p), u.set(c.value.subarray(0, Math.min(o - p, c.value.length)), p), s.value = l, c.value = u;
516
- let d = t.gap || 0, m = t.columnGap || 0, h = 0, g = 0;
517
- for (let e = 0; e < p; e++) {
518
- let t = f(a[e], e);
519
- n.value.direction === "horizontal" ? h += t + m : g += t + d;
520
- }
521
- (h > 0 || g > 0) && e && e(h, g);
517
+ return l;
518
+ }, y = () => {
519
+ let e = n.value.props, t = e.items, a = t.length;
520
+ m(a, e.columnCount || 0);
521
+ let o = e.restoreScrollOnPrepend ? calculatePrependCount(d, t) : 0;
522
+ if (o > 0) {
523
+ r.shift(o), i.shift(o);
524
+ let e = new Uint8Array(a), t = new Uint8Array(a);
525
+ e.set(s.value.subarray(0, Math.min(a - o, s.value.length)), o), t.set(c.value.subarray(0, Math.min(a - o, c.value.length)), o), s.value = e, c.value = t;
522
526
  }
523
- h(), d = [...a], u.value = !0, l.value++;
527
+ g(), d = [...t], u.value = !0, l.value++;
524
528
  };
525
529
  return {
526
530
  itemSizesX: r,
@@ -533,441 +537,383 @@ function useVirtualScrollSizes(e) {
533
537
  sizesInitialized: u,
534
538
  getItemBaseSize: f,
535
539
  getSizeAt: p,
536
- initializeSizes: g,
540
+ initializeSizes: y,
537
541
  updateItemSizes: (e, t, u, d, f, p) => {
538
- let m = !1, h = 0, g = 0, _ = n.value.props, v = _.gap || 0, y = _.columnGap || 0, b = t(n.value.direction === "horizontal" ? d : f), x = u(d), S = n.value.direction === "horizontal", C = n.value.direction === "both", w = /* @__PURE__ */ new Set(), T = /* @__PURE__ */ new Set(), E = (e, t) => {
539
- if (e >= 0 && e < (_.columnCount || 0) && !T.has(e)) {
540
- T.add(e);
541
- let n = a.get(e), r = t + y;
542
- if (!o.value[e] || Math.abs(n - r) > .1) {
543
- let t = r - n;
544
- Math.abs(t) > .1 && (a.update(e, t), m = !0, e < x && n > 0 && (h += t)), o.value[e] = 1;
545
- }
546
- }
542
+ let m = !1, h = { val: 0 }, g = { val: 0 }, v = n.value.props, y = v.gap || 0, b = v.columnGap || 0, x = t(n.value.direction === "horizontal" ? d : f), S = u(d), C = n.value.direction === "horizontal", w = n.value.direction === "both", T = /* @__PURE__ */ new Set(), E = /* @__PURE__ */ new Set(), D = (e, t) => {
543
+ e >= 0 && e < (v.columnCount || 0) && !E.has(e) && (E.add(e), _(e, t, a, o.value, b, S, h) && (m = !0));
547
544
  };
548
545
  for (let { index: t, inlineSize: a, blockSize: o, element: l } of e) {
549
546
  if (a <= 0 && o <= 0) continue;
550
- let e = n.value.isDynamicItemSize || typeof _.itemSize == "function";
551
- if (t >= 0 && !w.has(t) && e && o > 0) {
552
- if (w.add(t), S && a > 0) {
553
- let e = r.get(t), n = a + y;
554
- if (!s.value[t] || Math.abs(n - e) > .1) {
555
- let i = n - e;
556
- r.update(t, i), s.value[t] = 1, m = !0, t < b && e > 0 && (h += i);
557
- }
558
- }
559
- if (!S) {
560
- let e = i.get(t), n = o + v;
561
- if (!c.value[t] || Math.abs(n - e) > .1) {
562
- let r = n - e;
563
- i.update(t, r), c.value[t] = 1, m = !0, t < b && e > 0 && (g += r);
564
- }
565
- }
566
- }
567
- let u = n.value.isDynamicColumnWidth || typeof _.columnWidth == "function";
568
- if (C && l && _.columnCount && u && (a > 0 || l.dataset.colIndex === void 0)) {
547
+ let e = n.value.isDynamicItemSize || typeof v.itemSize == "function";
548
+ t >= 0 && !T.has(t) && e && o > 0 && (T.add(t), C && a > 0 && _(t, a, r, s.value, b, x, h) && (m = !0), C || _(t, o, i, c.value, y, x, g) && (m = !0));
549
+ let u = n.value.isDynamicColumnWidth || typeof v.columnWidth == "function";
550
+ if (w && l && v.columnCount && u && (a > 0 || l.dataset.colIndex === void 0)) {
569
551
  let e = l.dataset.colIndex;
570
- if (e != null) E(Number.parseInt(e, 10), a);
552
+ if (e != null) D(Number.parseInt(e, 10), a);
571
553
  else {
572
554
  let e = Array.from(l.querySelectorAll("[data-col-index]"));
573
- for (let t of e) E(Number.parseInt(t.dataset.colIndex, 10), t.getBoundingClientRect().width);
555
+ for (let t of e) D(Number.parseInt(t.dataset.colIndex, 10), t.getBoundingClientRect().width);
574
556
  }
575
557
  }
576
558
  }
577
- m && (l.value++, (h !== 0 || g !== 0) && p(h, g));
559
+ m && (l.value++, (h.val !== 0 || g.val !== 0) && p(h.val, g.val));
578
560
  },
579
- refresh: (e) => {
580
- r.resize(0), i.resize(0), a.resize(0), o.value.fill(0), s.value.fill(0), c.value.fill(0), g(e);
561
+ refresh: () => {
562
+ r.resize(0), i.resize(0), a.resize(0), o.value.fill(0), s.value.fill(0), c.value.fill(0), y();
581
563
  }
582
564
  };
583
565
  }
584
- function useVirtualScroll(e) {
585
- let n = computed(() => toValue(e)), r = ref(0), i = ref(0), a = ref(!1), o = ref(!1), c = ref(!1), l = ref(!1), d = ref(!1), f = ref(0), p = ref(0), g = reactive({
566
+ function useVirtualScroll(e, n = []) {
567
+ let r = computed(() => toValue(e)), i = ref(0), a = ref(0), o = ref(0), c = ref(0), l = ref(!1), d = ref(!1), f = ref(!1), p = ref(!1), g = ref(!1), y = ref(0), b = ref(0), x = reactive({
586
568
  x: 0,
587
569
  y: 0
588
- }), y = reactive({
570
+ }), S = reactive({
589
571
  x: 0,
590
572
  y: 0
591
- }), b, x = ref(!1), S = ref(0), C = ref(0), w = 0, E = 0, te = null, ne = null, ie = null, D = () => {
592
- if (typeof window > "u") return;
593
- let e = n.value.container || n.value.hostRef || window, t = isElement(e) ? e : document.documentElement;
594
- ie = window.getComputedStyle(t);
595
- let r = ie.direction === "rtl";
596
- d.value !== r && (d.value = r);
597
- }, O = computed(() => [
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(() => [
598
576
  "vertical",
599
577
  "horizontal",
600
578
  "both"
601
- ].includes(n.value.direction) ? n.value.direction : "vertical"), k = computed(() => n.value.itemSize === void 0 || n.value.itemSize === null || n.value.itemSize === 0), ae = computed(() => n.value.columnWidth === void 0 || n.value.columnWidth === null || n.value.columnWidth === 0), A = computed(() => typeof n.value.itemSize == "number" && n.value.itemSize > 0 ? n.value.itemSize : null), j = computed(() => typeof n.value.columnWidth == "number" && n.value.columnWidth > 0 ? n.value.columnWidth : null), oe = computed(() => n.value.defaultItemSize || A.value || 40), { itemSizesX: M, itemSizesY: N, columnSizes: P, measuredColumns: he, measuredItemsY: _e, treeUpdateFlag: I, getSizeAt: ve, initializeSizes: Ee, updateItemSizes: Oe, refresh: ke } = useVirtualScrollSizes(computed(() => ({
602
- props: n.value,
603
- isDynamicItemSize: k.value,
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(() => ({
580
+ props: r.value,
581
+ isDynamicItemSize: N.value,
604
582
  isDynamicColumnWidth: ae.value,
605
- defaultSize: oe.value,
606
- fixedItemSize: A.value,
607
- direction: O.value
608
- }))), z = ref(null), Me = computed(() => [...n.value.stickyIndices || []].sort((e, t) => e - t)), Pe = computed(() => new Set(Me.value)), Fe = computed(() => getPaddingX(n.value.scrollPaddingStart, n.value.direction)), Ie = computed(() => getPaddingX(n.value.scrollPaddingEnd, n.value.direction)), Le = computed(() => getPaddingY(n.value.scrollPaddingStart, n.value.direction)), Re = computed(() => getPaddingY(n.value.scrollPaddingEnd, n.value.direction)), B = computed(() => getPaddingX(n.value.stickyStart, n.value.direction)), ze = computed(() => getPaddingX(n.value.stickyEnd, n.value.direction)), V = computed(() => getPaddingY(n.value.stickyStart, n.value.direction)), Be = computed(() => getPaddingY(n.value.stickyEnd, n.value.direction)), H = computed(() => getPaddingX(n.value.flowPaddingStart, n.value.direction)), Ve = computed(() => getPaddingX(n.value.flowPaddingEnd, n.value.direction)), U = computed(() => getPaddingY(n.value.flowPaddingStart, n.value.direction)), He = computed(() => getPaddingY(n.value.flowPaddingEnd, n.value.direction)), Ue = computed(() => f.value - (O.value === "vertical" ? 0 : B.value + ze.value)), We = computed(() => p.value - (O.value === "horizontal" ? 0 : V.value + Be.value)), Ge = computed(() => (I.value, calculateTotalSize({
609
- direction: O.value,
610
- itemsLength: n.value.items.length,
611
- columnCount: n.value.columnCount || 0,
612
- fixedSize: A.value,
613
- fixedWidth: j.value,
614
- gap: n.value.gap || 0,
615
- columnGap: n.value.columnGap || 0,
616
- usableWidth: Ue.value,
617
- usableHeight: We.value,
618
- queryY: (e) => N.query(e),
619
- queryX: (e) => M.query(e),
620
- queryColumn: (e) => P.query(e)
621
- }))), Ke = computed(() => isWindowLike(n.value.container)), qe = computed(() => Ge.value.width + Fe.value + Ie.value), Je = computed(() => Ge.value.height + Le.value + Re.value), W = computed(() => H.value + B.value + ze.value + Ve.value + qe.value), G = computed(() => U.value + V.value + Be.value + He.value + Je.value), K = reactive({
622
- x: computed(() => Math.max(0, g.x - (H.value + B.value))),
623
- y: computed(() => Math.max(0, g.y - (U.value + V.value)))
624
- }), Ye = computed(() => calculateRenderedSize(Ke.value, W.value)), Xe = computed(() => calculateRenderedSize(Ke.value, G.value)), Ze = computed(() => calculateRenderedSize(Ke.value, qe.value)), Qe = computed(() => calculateRenderedSize(Ke.value, Je.value)), q = computed(() => calculateScale(Ke.value, W.value, f.value)), J = computed(() => calculateScale(Ke.value, G.value, p.value)), Y = computed(() => {
625
- if (O.value === "vertical") return 0;
626
- let e = H.value + B.value + Fe.value;
627
- return S.value - e;
628
- }), X = computed(() => {
629
- if (O.value === "horizontal") return 0;
630
- let e = U.value + V.value + Le.value;
631
- return C.value - e;
632
- }), Z = (e) => O.value === "both" ? ve(e, n.value.columnWidth, n.value.defaultColumnWidth || 100, n.value.columnGap || 0, P, !0) : ve(e, n.value.itemSize, n.value.defaultItemSize || 40, n.value.columnGap || 0, M, !0), $e = (e) => O.value === "horizontal" ? We.value : ve(e, n.value.itemSize, n.value.defaultItemSize || 40, n.value.gap || 0, N, !1);
633
- function et(e, t, a) {
634
- let o = typeof a == "object" && a && "isCorrection" in a ? a.isCorrection : !1, s = n.value.container || window, { targetX: c, targetY: l, effectiveAlignX: u, effectiveAlignY: m } = calculateScrollTarget({
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,
588
+ itemsLength: r.value.items.length,
589
+ columnCount: r.value.columnCount || 0,
590
+ fixedSize: P.value,
591
+ fixedWidth: F.value,
592
+ gap: r.value.gap || 0,
593
+ columnGap: r.value.columnGap || 0,
594
+ usableWidth: He.value,
595
+ 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
+ }), 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;
605
+ return o.value - e;
606
+ }), J = computed(() => {
607
+ if (M.value === "horizontal") return 0;
608
+ let e = Be.value + U.value + Fe.value;
609
+ return c.value - e;
610
+ }), 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 = () => {
614
+ if (typeof window > "u") return;
615
+ let e = r.value.container || r.value.hostRef || window, t = isElement(e) ? e : document.documentElement, n = window.getComputedStyle(t).direction === "rtl";
616
+ g.value !== n && (g.value = n);
617
+ }, it = (e, t) => {
618
+ nextTick(() => {
619
+ Z(e > 0 ? q.value + e : null, t > 0 ? J.value + t : null, { behavior: "auto" });
620
+ });
621
+ };
622
+ 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({
635
624
  rowIndex: e,
636
625
  colIndex: t,
637
- options: a,
638
- direction: O.value,
639
- viewportWidth: f.value,
640
- viewportHeight: p.value,
641
- totalWidth: W.value,
642
- totalHeight: G.value,
643
- gap: n.value.gap || 0,
644
- columnGap: n.value.columnGap || 0,
645
- fixedSize: A.value,
646
- fixedWidth: j.value,
647
- relativeScrollX: Y.value,
648
- relativeScrollY: X.value,
649
- getItemSizeY: (e) => N.get(e),
650
- getItemSizeX: (e) => M.get(e),
651
- getItemQueryY: (e) => N.query(e),
652
- getItemQueryX: (e) => M.query(e),
653
- getColumnSize: (e) => P.get(e),
654
- getColumnQuery: (e) => P.query(e),
655
- scaleX: q.value,
656
- scaleY: J.value,
626
+ options: n,
627
+ direction: M.value,
628
+ viewportWidth: y.value,
629
+ viewportHeight: b.value,
630
+ totalWidth: G.value,
631
+ totalHeight: Je.value,
632
+ gap: r.value.gap || 0,
633
+ columnGap: r.value.columnGap || 0,
634
+ fixedSize: P.value,
635
+ fixedWidth: F.value,
636
+ relativeScrollX: q.value,
637
+ 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
+ scaleX: w.value,
645
+ scaleY: E.value,
657
646
  hostOffsetX: K.x,
658
647
  hostOffsetY: K.y,
659
- stickyIndices: Me.value,
660
- stickyStartX: B.value,
661
- stickyStartY: V.value,
662
- stickyEndX: ze.value,
663
- stickyEndY: Be.value,
664
- flowPaddingStartX: H.value,
665
- flowPaddingStartY: U.value,
666
- paddingStartX: Fe.value,
667
- paddingStartY: Le.value,
668
- paddingEndX: Ie.value,
669
- paddingEndY: Re.value
648
+ stickyIndices: r.value.stickyIndices || [],
649
+ stickyStartX: H.value,
650
+ stickyStartY: U.value,
651
+ stickyEndX: Le.value,
652
+ stickyEndY: Re.value,
653
+ flowPaddingStartX: W.value,
654
+ flowPaddingStartY: Be.value,
655
+ paddingStartX: Ne.value,
656
+ paddingStartY: Fe.value,
657
+ paddingEndX: Pe.value,
658
+ paddingEndY: Ie.value
670
659
  });
671
- if (!o) {
672
- let n = isScrollToIndexOptions(a) ? a.behavior : void 0;
673
- z.value = {
660
+ if (!s) {
661
+ let r = isScrollToIndexOptions(n) ? n.behavior : void 0;
662
+ O.value = {
674
663
  rowIndex: e,
675
664
  colIndex: t,
676
665
  options: {
677
666
  align: {
678
- x: u,
679
- y: m
667
+ x: f,
668
+ y: p
680
669
  },
681
- ...n == null ? {} : { behavior: n }
670
+ ...r == null ? {} : { behavior: r }
682
671
  }
683
672
  };
684
673
  }
685
- let h = virtualToDisplay(c, K.x, q.value), g = virtualToDisplay(l, K.y, J.value), _ = d.value ? -h : h, v = g, y;
686
- isScrollToIndexOptions(a) && (y = a.behavior);
687
- let b = o ? "auto" : y || "smooth";
688
- x.value = !0;
689
- let w = { behavior: b };
690
- if (t != null && (w.left = d.value ? _ : Math.max(0, _)), e != null && (w.top = Math.max(0, v)), scrollTo(s, w), (b === "auto" || b === void 0) && (t != null && (r.value = d.value ? _ : Math.max(0, _), S.value = c), e != null && (i.value = Math.max(0, v), C.value = l), z.value)) {
691
- let e = z.value.options;
692
- isScrollToIndexOptions(e) && (e.behavior = "auto");
693
- }
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));
694
682
  }
695
- let tt = (e, t, a) => {
696
- let o = n.value.container || window;
697
- x.value = !0, z.value = null;
698
- let s = e == null ? null : Math.max(0, Math.min(e, W.value - f.value)), c = t == null ? null : Math.max(0, Math.min(t, G.value - p.value));
699
- s !== null && (S.value = s), c !== null && (C.value = c);
700
- let l = typeof window < "u" && o === window ? window.scrollX : o.scrollLeft, u = typeof window < "u" && o === window ? window.scrollY : o.scrollTop, m = s === null ? null : virtualToDisplay(s, K.x, q.value), h = c === null ? null : virtualToDisplay(c, K.y, J.value), g = m === null ? l : d.value ? -m : m, _ = h === null ? u : h, v = { behavior: a?.behavior || "auto" };
701
- e != null && (v.left = g), t != null && (v.top = _), scrollTo(o, v), (a?.behavior === "auto" || a?.behavior === void 0) && (e != null && (r.value = g), t != null && (i.value = _));
702
- }, nt = (e, t) => {
703
- nextTick(() => {
704
- tt(e > 0 ? Y.value + e : null, t > 0 ? X.value + t : null, {
705
- behavior: "auto",
706
- isCorrection: !0
707
- });
708
- });
709
- }, rt = () => Ee(nt), Q = () => {
710
- if (typeof window > "u") return;
711
- let e = n.value.container || window, t = (t) => {
712
- let n = t.getBoundingClientRect();
713
- if (e === window) return {
714
- x: d.value ? document.documentElement.clientWidth - n.right - window.scrollX : n.left + window.scrollX,
715
- y: n.top + window.scrollY
716
- };
717
- if (e === t) return {
718
- x: 0,
719
- y: 0
720
- };
721
- if (isElement(e)) {
722
- let t = e.getBoundingClientRect();
723
- return {
724
- x: d.value ? t.right - n.right - e.scrollLeft : n.left - t.left + e.scrollLeft,
725
- y: n.top - t.top + e.scrollTop
726
- };
727
- }
728
- return {
729
- x: 0,
730
- y: 0
731
- };
732
- };
733
- if (n.value.hostElement) {
734
- let e = t(n.value.hostElement);
735
- (Math.abs(g.x - e.x) > .1 || Math.abs(g.y - e.y) > .1) && (g.x = e.x, g.y = e.y);
736
- }
737
- if (n.value.hostRef) {
738
- let e = t(n.value.hostRef);
739
- (Math.abs(y.x - e.x) > .1 || Math.abs(y.y - e.y) > .1) && (y.x = e.x, y.y = e.y);
740
- }
741
- };
742
- watch([
743
- () => n.value.items,
744
- () => n.value.items.length,
745
- () => n.value.direction,
746
- () => n.value.columnCount,
747
- () => n.value.columnWidth,
748
- () => n.value.itemSize,
749
- () => n.value.gap,
750
- () => n.value.columnGap,
751
- () => n.value.defaultItemSize,
752
- () => n.value.defaultColumnWidth
753
- ], rt, { immediate: !0 }), watch(() => [n.value.container, n.value.hostElement], () => {
754
- Q();
755
- }), watch(d, (e, t) => {
756
- if (t === void 0 || e === t || !l.value) return;
757
- if (O.value === "vertical") {
758
- Q();
759
- return;
760
- }
761
- let n = displayToVirtual(t ? Math.abs(r.value) : r.value, g.x, q.value);
762
- Q(), tt(n, null, { behavior: "auto" });
763
- }, { flush: "sync" }), watch([q, J], () => {
764
- !l.value || a.value || x.value || tt(S.value, C.value, { behavior: "auto" });
765
- }), watch([() => n.value.items.length, () => n.value.columnCount], ([e, t], [n, r]) => {
766
- nextTick(() => {
767
- let i = Math.max(0, W.value - f.value), a = Math.max(0, G.value - p.value);
768
- S.value > i || C.value > a ? tt(Math.min(S.value, i), Math.min(C.value, a), { behavior: "auto" }) : (e !== n && J.value !== 1 || t !== r && q.value !== 1) && tt(S.value, C.value, { behavior: "auto" }), Q();
769
- });
770
- });
771
- let it = (e) => {
772
- let t = O.value === "horizontal";
773
- return calculateIndexAt(e, A.value, t ? n.value.columnGap || 0 : n.value.gap || 0, (e) => t ? M.findLowerBound(e) : N.findLowerBound(e));
774
- }, at = (e) => O.value === "both" ? calculateIndexAt(e, j.value, n.value.columnGap || 0, (e) => P.findLowerBound(e)) : O.value === "horizontal" ? it(e) : 0, ot = computed(() => {
775
- if (I.value, (!o.value || c.value) && n.value.ssrRange) return {
776
- start: n.value.ssrRange.start,
777
- end: n.value.ssrRange.end
683
+ function Z(e, t, n) {
684
+ 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;
688
+ 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
+ l !== null && (o.value = l), u !== null && (c.value = u);
690
+ 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
+ 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
+ }
693
+ let ot = computed(() => {
694
+ if (we.value, (!d.value || f.value) && r.value.ssrRange) return {
695
+ start: r.value.ssrRange.start,
696
+ end: r.value.ssrRange.end
778
697
  };
779
- let e = n.value.ssrRange && !a.value ? 0 : n.value.bufferBefore ?? 5, t = n.value.bufferAfter ?? 5;
698
+ let e = r.value.ssrRange && !l.value ? 0 : r.value.bufferBefore ?? 5, t = r.value.bufferAfter ?? 5;
780
699
  return calculateRange({
781
- direction: O.value,
782
- relativeScrollX: Y.value,
783
- relativeScrollY: X.value,
784
- usableWidth: Ue.value,
785
- usableHeight: We.value,
786
- itemsLength: n.value.items.length,
700
+ direction: M.value,
701
+ relativeScrollX: q.value,
702
+ relativeScrollY: J.value,
703
+ usableWidth: He.value,
704
+ usableHeight: Ue.value,
705
+ itemsLength: r.value.items.length,
787
706
  bufferBefore: e,
788
707
  bufferAfter: t,
789
- gap: n.value.gap || 0,
790
- columnGap: n.value.columnGap || 0,
791
- fixedSize: A.value,
792
- findLowerBoundY: (e) => N.findLowerBound(e),
793
- findLowerBoundX: (e) => M.findLowerBound(e),
794
- queryY: (e) => N.query(e),
795
- queryX: (e) => M.query(e)
708
+ gap: r.value.gap || 0,
709
+ 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)
796
715
  });
797
716
  }), st = computed(() => {
798
- I.value;
799
- let e = Y.value + B.value, t = X.value + V.value;
800
- return it(O.value === "horizontal" ? e : t);
717
+ we.value;
718
+ let e = q.value + H.value, t = J.value + U.value;
719
+ return Y(M.value === "horizontal" ? e : t);
801
720
  }), ct = computed(() => {
802
- I.value;
803
- let e = n.value.columnCount || 0;
721
+ we.value;
722
+ let e = r.value.columnCount || 0;
804
723
  if (!e) return {
805
724
  start: 0,
806
725
  end: 0,
807
726
  padStart: 0,
808
727
  padEnd: 0
809
728
  };
810
- if ((!o.value || c.value) && n.value.ssrRange) {
811
- let { colStart: t = 0, colEnd: r = 0 } = n.value.ssrRange, i = Math.max(0, t), a = Math.min(e, r || e);
729
+ if ((!d.value || f.value) && r.value.ssrRange) {
730
+ let { colStart: t = 0, colEnd: n = 0 } = r.value.ssrRange, i = Math.max(0, t), a = Math.min(e, n || e);
812
731
  return calculateColumnRange({
813
732
  columnCount: e,
814
- relativeScrollX: calculateOffsetAt(i, j.value, n.value.columnGap || 0, (e) => P.query(e)),
815
- usableWidth: calculateRangeSize(i, a, j.value, n.value.columnGap || 0, (e) => P.query(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)),
816
735
  colBuffer: 0,
817
- fixedWidth: j.value,
818
- columnGap: n.value.columnGap || 0,
819
- findLowerBound: (e) => P.findLowerBound(e),
820
- query: (e) => P.query(e),
821
- totalColsQuery: () => P.query(e)
736
+ fixedWidth: F.value,
737
+ columnGap: r.value.columnGap || 0,
738
+ findLowerBound: (e) => z.findLowerBound(e),
739
+ query: (e) => z.query(e),
740
+ totalColsQuery: () => z.query(e)
822
741
  });
823
742
  }
824
- let t = n.value.ssrRange && !a.value ? 0 : 2;
743
+ let t = r.value.ssrRange && !l.value ? 0 : 2;
825
744
  return calculateColumnRange({
826
745
  columnCount: e,
827
- relativeScrollX: Y.value,
828
- usableWidth: Ue.value,
746
+ relativeScrollX: q.value,
747
+ usableWidth: He.value,
829
748
  colBuffer: t,
830
- fixedWidth: j.value,
831
- columnGap: n.value.columnGap || 0,
832
- findLowerBound: (e) => P.findLowerBound(e),
833
- query: (e) => P.query(e),
834
- totalColsQuery: () => P.query(e)
749
+ fixedWidth: F.value,
750
+ columnGap: r.value.columnGap || 0,
751
+ findLowerBound: (e) => z.findLowerBound(e),
752
+ query: (e) => z.query(e),
753
+ totalColsQuery: () => z.query(e)
835
754
  });
836
- }), lt = [], ut = computed(() => {
837
- I.value;
838
- let { start: e, end: t } = ot.value, r = [], i = Me.value, a = Pe.value, s = [];
839
- if (o.value || !n.value.ssrRange) {
840
- let t = st.value, n = findPrevStickyIndex(i, t);
841
- n !== void 0 && n < e && s.push(n);
755
+ }), lt = {
756
+ props: r,
757
+ scrollDetails: null,
758
+ totalSize: computed(() => ({
759
+ width: G.value,
760
+ height: Je.value
761
+ })),
762
+ range: ot,
763
+ currentIndex: st,
764
+ internalState: {
765
+ scrollX: i,
766
+ scrollY: a,
767
+ internalScrollX: o,
768
+ internalScrollY: c,
769
+ isRtl: g,
770
+ isScrolling: l,
771
+ isProgrammaticScroll: k,
772
+ viewportWidth: y,
773
+ viewportHeight: b,
774
+ scaleX: w,
775
+ scaleY: E,
776
+ scrollDirectionX: D,
777
+ scrollDirectionY: te,
778
+ relativeScrollX: q,
779
+ relativeScrollY: J
780
+ },
781
+ methods: {
782
+ scrollToIndex: at,
783
+ scrollToOffset: Z,
784
+ updateDirection: X,
785
+ getRowIndexAt: Y,
786
+ getColIndexAt: $e,
787
+ getItemSize: rt,
788
+ getItemBaseSize: De,
789
+ getItemOffset: nt,
790
+ handleScrollCorrection: it
842
791
  }
843
- for (let n = e; n < t; n++) s.push(n);
844
- let { x: c, y: l } = !o.value && n.value.ssrRange ? calculateSSROffsets(O.value, n.value.ssrRange, A.value, j.value, n.value.gap || 0, n.value.columnGap || 0, (e) => N.query(e), (e) => M.query(e), (e) => P.query(e)) : {
792
+ }, ut = [], dt = computed(() => {
793
+ we.value;
794
+ let { start: e, end: t } = ot.value, i = [], a = [...r.value.stickyIndices || []].sort((e, t) => e - t), s = new Set(a), l = [];
795
+ if (d.value || !r.value.ssrRange) {
796
+ let t = st.value, n = findPrevStickyIndex(a, t);
797
+ n !== void 0 && n < e && l.push(n);
798
+ }
799
+ 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)) : {
845
801
  x: 0,
846
802
  y: 0
847
- }, u = new Map(lt.map((e) => [e.index, e])), d = -1, f = 0, p = -1, m = 0, h = (e) => e === d + 1 ? (f += M.get(d), d = e, f) : (f = M.query(e), d = e, f), g = (e) => e === p + 1 ? (m += N.get(p), p = e, m) : (m = N.query(e), p = e, m), _ = H.value + B.value + Fe.value, v = U.value + V.value + Le.value, y = H.value + B.value, b = U.value + V.value, x = ct.value;
848
- for (let e of s) {
849
- let t = n.value.items[e];
803
+ }, p = /* @__PURE__ */ new Map();
804
+ 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;
806
+ for (let e of l) {
807
+ let t = r.value.items[e];
850
808
  if (t === void 0) continue;
851
- let { x: s, y: d, width: f, height: p } = calculateItemPosition({
809
+ let { x: n, y: l, width: m, height: h } = calculateItemPosition({
852
810
  index: e,
853
- direction: O.value,
854
- fixedSize: A.value,
855
- gap: n.value.gap || 0,
856
- columnGap: n.value.columnGap || 0,
857
- usableWidth: Ue.value,
858
- usableHeight: We.value,
859
- totalWidth: Ge.value.width,
860
- queryY: g,
861
- queryX: h,
862
- getSizeY: (e) => N.get(e),
863
- getSizeX: (e) => M.get(e),
864
- columnRange: x
865
- }), m = a.has(e), w = s, T = d, { isStickyActive: E, isStickyActiveX: te, isStickyActiveY: ne, stickyOffset: re } = calculateStickyItem({
811
+ direction: M.value,
812
+ fixedSize: P.value,
813
+ gap: r.value.gap || 0,
814
+ columnGap: r.value.columnGap || 0,
815
+ usableWidth: He.value,
816
+ usableHeight: Ue.value,
817
+ totalWidth: We.value.width,
818
+ queryY: y,
819
+ queryX: v,
820
+ getSizeY: (e) => R.get(e),
821
+ getSizeX: (e) => I.get(e),
822
+ columnRange: T
823
+ }), g = s.has(e), _ = n, te = l;
824
+ 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({
866
826
  index: e,
867
- isSticky: m,
868
- direction: O.value,
869
- relativeScrollX: Y.value,
870
- relativeScrollY: X.value,
871
- originalX: w,
872
- originalY: T,
873
- width: f,
874
- height: p,
875
- stickyIndices: i,
876
- fixedSize: A.value,
877
- fixedWidth: j.value,
878
- gap: n.value.gap || 0,
879
- columnGap: n.value.columnGap || 0,
880
- getItemQueryY: g,
881
- getItemQueryX: h
882
- }), ie = o.value ? S.value / q.value + (s + _ - S.value) - y : s - c, D = o.value ? C.value / J.value + (d + v - C.value) - b : d - l, k = u.get(e);
883
- k && k.item === t && k.offset.x === ie && k.offset.y === D && k.size.width === f && k.size.height === p && k.isSticky === m && k.isStickyActive === E && k.isStickyActiveX === te && k.isStickyActiveY === ne && k.stickyOffset.x === re.x && k.stickyOffset.y === re.y ? r.push(k) : r.push({
827
+ isSticky: g,
828
+ direction: M.value,
829
+ relativeScrollX: q.value,
830
+ relativeScrollY: J.value,
831
+ originalX: _,
832
+ originalY: te,
833
+ width: m,
834
+ height: h,
835
+ stickyIndices: a,
836
+ fixedSize: P.value,
837
+ fixedWidth: F.value,
838
+ gap: r.value.gap || 0,
839
+ 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({
884
845
  item: t,
885
846
  index: e,
886
847
  offset: {
887
848
  x: ie,
888
- y: D
849
+ y: j
889
850
  },
890
851
  size: {
891
- width: f,
892
- height: p
852
+ width: m,
853
+ height: h
893
854
  },
894
- originalX: w,
895
- originalY: T,
896
- isSticky: m,
897
- isStickyActive: E,
898
- isStickyActiveX: te,
899
- isStickyActiveY: ne,
855
+ originalX: _,
856
+ originalY: te,
857
+ isSticky: g,
858
+ isStickyActive: O,
859
+ isStickyActiveX: k,
860
+ isStickyActiveY: A,
900
861
  stickyOffset: re
901
862
  });
902
863
  }
903
- return lt = r, r;
904
- }), dt = computed(() => {
905
- I.value;
906
- let e = Y.value + B.value, t = X.value + V.value, n = Y.value + (f.value - ze.value) - 1, o = X.value + (p.value - Be.value) - 1, s = at(e), c = it(t), l = it(O.value === "horizontal" ? n : o), u = at(n);
864
+ let te = i;
865
+ return n.forEach((e) => {
866
+ e.transformRenderedItems && (te = e.transformRenderedItems(te, lt));
867
+ }), ut = te, te;
868
+ }), 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);
907
871
  return {
908
- items: ut.value,
909
- currentIndex: c,
872
+ items: dt.value,
873
+ currentIndex: u,
910
874
  currentColIndex: s,
911
- currentEndIndex: l,
912
- currentEndColIndex: u,
875
+ currentEndIndex: d,
876
+ currentEndColIndex: f,
913
877
  scrollOffset: {
914
- x: S.value,
915
- y: C.value
878
+ x: o.value,
879
+ y: c.value
916
880
  },
917
881
  displayScrollOffset: {
918
- x: d.value ? Math.abs(r.value + y.x) : Math.max(0, r.value - y.x),
919
- y: Math.max(0, i.value - y.y)
882
+ x: g.value ? Math.abs(i.value + S.x) : Math.max(0, i.value - S.x),
883
+ y: Math.max(0, a.value - S.y)
920
884
  },
921
885
  viewportSize: {
922
- width: f.value,
923
- height: p.value
886
+ width: y.value,
887
+ height: b.value
924
888
  },
925
889
  displayViewportSize: {
926
- width: f.value,
927
- height: p.value
890
+ width: y.value,
891
+ height: b.value
928
892
  },
929
893
  totalSize: {
930
- width: W.value,
931
- height: G.value
894
+ width: G.value,
895
+ height: Je.value
932
896
  },
933
- isScrolling: a.value,
934
- isProgrammaticScroll: x.value,
897
+ isScrolling: l.value,
898
+ isProgrammaticScroll: k.value,
935
899
  range: ot.value,
936
900
  columnRange: ct.value
937
901
  };
938
- }), ft = () => {
939
- x.value = !1, z.value = null;
940
- }, pt = (e) => {
902
+ });
903
+ lt.scrollDetails = ft, n.forEach((e) => e.onInit?.(lt));
904
+ let pt = (e) => {
941
905
  let t = e.target;
942
906
  if (typeof window > "u") return;
943
- D(), t === window || t === document ? (r.value = window.scrollX, i.value = window.scrollY, f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight) : isScrollableElement(t) && (r.value = t.scrollLeft, i.value = t.scrollTop, f.value = t.clientWidth, p.value = t.clientHeight);
944
- let o = displayToVirtual(d.value ? Math.abs(r.value) : r.value, K.x, q.value), s = displayToVirtual(i.value, K.y, J.value);
945
- Math.abs(o - w) > .5 && (te = o > w ? "end" : "start", w = o), Math.abs(s - E) > .5 && (ne = s > E ? "end" : "start", E = s), S.value = o, C.value = s, x.value || (z.value = null), a.value ||= !0, clearTimeout(b), b = setTimeout(() => {
946
- let e = x.value;
947
- if (a.value = !1, x.value = !1, n.value.snap && !e) {
948
- let e = n.value.snap, t = e === !0 ? "auto" : e, r = dt.value, i = n.value.items.length, a = r.currentIndex, o = r.currentColIndex, s = "start", c = "start", l = !1;
949
- if (O.value !== "horizontal") {
950
- let e = resolveSnap(t, ne, r.currentIndex, r.currentEndIndex, X.value, p.value, i, (e) => N.get(e), (e) => N.query(e), it);
951
- e && (a = e.index, s = e.align, l = !0);
952
- }
953
- if (O.value !== "vertical") {
954
- let e = O.value === "both", a = e ? n.value.columnCount || 0 : i, s = resolveSnap(t, te, r.currentColIndex, r.currentEndColIndex, Y.value, f.value, a, (t) => e ? P.get(t) : M.get(t), (t) => e ? P.query(t) : M.query(t), at);
955
- s && (o = s.index, c = s.align, l = !0);
956
- }
957
- l && et(a, o, {
958
- align: {
959
- x: c,
960
- y: s
961
- },
962
- behavior: "smooth"
963
- });
964
- }
965
- }, 250);
907
+ 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
+ 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);
911
+ }, 150);
966
912
  }, mt = (e) => {
967
- Oe(e, it, at, Y.value, X.value, (e, t) => {
968
- z.value !== null || x.value || nt(e, t);
913
+ ke(e, Y, $e, q.value, J.value, (e, t) => {
914
+ !O.value && !k.value && it(e, t);
969
915
  });
970
- }, $ = (e, t, n, r) => {
916
+ }, ht = (e, t, n, r) => {
971
917
  mt([{
972
918
  index: e,
973
919
  inlineSize: t,
@@ -975,136 +921,206 @@ function useVirtualScroll(e) {
975
921
  element: r
976
922
  }]);
977
923
  };
978
- function ht() {
979
- if (z.value && !c.value) {
980
- let { rowIndex: e, colIndex: t, options: r } = z.value;
981
- if (isScrollToIndexOptions(r) && r.behavior === "smooth" && a.value) return;
982
- let i = n.value.container || window, o = typeof window < "u" && i === window ? window.scrollX : i.scrollLeft, s = typeof window < "u" && i === window ? window.scrollY : i.scrollTop, c = d.value ? Math.abs(o) : o, l = s, u = displayToVirtual(c, 0, q.value), m = displayToVirtual(l, 0, J.value), { targetX: h, targetY: g } = calculateScrollTarget({
924
+ 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;
928
+ 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({
983
929
  rowIndex: e,
984
930
  colIndex: t,
985
- options: r,
986
- direction: O.value,
987
- viewportWidth: f.value,
988
- viewportHeight: p.value,
989
- totalWidth: qe.value,
990
- totalHeight: Je.value,
991
- gap: n.value.gap || 0,
992
- columnGap: n.value.columnGap || 0,
993
- fixedSize: A.value,
994
- fixedWidth: j.value,
931
+ options: n,
932
+ direction: M.value,
933
+ viewportWidth: y.value,
934
+ viewportHeight: b.value,
935
+ totalWidth: Ke.value,
936
+ totalHeight: qe.value,
937
+ gap: r.value.gap || 0,
938
+ columnGap: r.value.columnGap || 0,
939
+ fixedSize: P.value,
940
+ fixedWidth: F.value,
995
941
  relativeScrollX: u,
996
- relativeScrollY: m,
997
- getItemSizeY: (e) => N.get(e),
998
- getItemSizeX: (e) => M.get(e),
999
- getItemQueryY: (e) => N.query(e),
1000
- getItemQueryX: (e) => M.query(e),
1001
- getColumnSize: (e) => P.get(e),
1002
- getColumnQuery: (e) => P.query(e),
1003
- scaleX: q.value,
1004
- scaleY: J.value,
942
+ 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),
949
+ scaleX: w.value,
950
+ scaleY: E.value,
1005
951
  hostOffsetX: K.x,
1006
952
  hostOffsetY: K.y,
1007
- stickyIndices: Me.value,
1008
- stickyStartX: B.value,
1009
- stickyStartY: V.value,
1010
- stickyEndX: ze.value,
1011
- stickyEndY: Be.value,
1012
- flowPaddingStartX: H.value,
1013
- flowPaddingStartY: U.value,
1014
- paddingStartX: Fe.value,
1015
- paddingStartY: Le.value,
1016
- paddingEndX: Ie.value,
1017
- paddingEndY: Re.value
1018
- }), _ = t == null || Math.abs(u - h) < 2, v = e == null || Math.abs(m - g) < 2, y = t == null || t === void 0 || he.value[t] === 1, b = e == null || e === void 0 || _e.value[e] === 1;
1019
- _ && v ? y && b && !a.value && !x.value && (z.value = null) : et(e, t, isScrollToIndexOptions(r) ? {
1020
- ...r,
953
+ stickyIndices: r.value.stickyIndices || [],
954
+ stickyStartX: H.value,
955
+ stickyStartY: U.value,
956
+ stickyEndX: Le.value,
957
+ stickyEndY: Re.value,
958
+ flowPaddingStartX: W.value,
959
+ 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;
965
+ 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);
968
+ } else at(e, t, isScrollToIndexOptions(n) ? {
969
+ ...n,
1021
970
  isCorrection: !0
1022
971
  } : {
1023
- align: r,
972
+ align: n,
1024
973
  isCorrection: !0
1025
974
  });
1026
975
  }
1027
976
  }
1028
977
  watch([
1029
- I,
1030
- f,
1031
- p
1032
- ], ht), watch(a, (e) => {
1033
- e || ht();
978
+ we,
979
+ y,
980
+ b
981
+ ], gt), watch(l, (e) => {
982
+ e || gt();
1034
983
  });
1035
- let gt = null, _t = null, vt, yt = (e) => {
984
+ let Q = () => {
985
+ if (typeof window > "u") return;
986
+ let e = r.value.container || window, t = (t) => {
987
+ let n = t.getBoundingClientRect();
988
+ if (e === window) return {
989
+ x: g.value ? document.documentElement.clientWidth - n.right - window.scrollX : n.left + window.scrollX,
990
+ y: n.top + window.scrollY
991
+ };
992
+ if (e === t) return {
993
+ x: 0,
994
+ y: 0
995
+ };
996
+ if (isElement(e)) {
997
+ let t = e.getBoundingClientRect();
998
+ return {
999
+ x: g.value ? t.right - n.right - e.scrollLeft : n.left - t.left + e.scrollLeft,
1000
+ y: n.top - t.top + e.scrollTop
1001
+ };
1002
+ }
1003
+ return {
1004
+ x: 0,
1005
+ y: 0
1006
+ };
1007
+ };
1008
+ if (r.value.hostElement) {
1009
+ let e = t(r.value.hostElement);
1010
+ (Math.abs(x.x - e.x) > .1 || Math.abs(x.y - e.y) > .1) && (x.x = e.x, x.y = e.y);
1011
+ }
1012
+ if (r.value.hostRef) {
1013
+ let e = t(r.value.hostRef);
1014
+ (Math.abs(S.x - e.x) > .1 || Math.abs(S.y - e.y) > .1) && (S.x = e.x, S.y = e.y);
1015
+ }
1016
+ }, _t = (e) => {
1036
1017
  if (typeof window > "u") return;
1037
1018
  let t = e || window, n = t === window || isElement(t) && t === document.documentElement ? document : t;
1038
- if (n.addEventListener("scroll", pt, { passive: !0 }), ie = null, D(), isElement(t) && (_t = new MutationObserver(() => D()), _t.observe(t, {
1019
+ n.addEventListener("scroll", pt, { passive: !0 }), X();
1020
+ let r = null;
1021
+ isElement(t) && (r = new MutationObserver(() => X()), r.observe(t, {
1039
1022
  attributes: !0,
1040
1023
  attributeFilter: ["dir", "style"]
1041
- })), vt = setInterval(D, 1e3), t === window) {
1042
- f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight, r.value = window.scrollX, i.value = window.scrollY;
1024
+ }));
1025
+ let o = setInterval(X, 1e3);
1026
+ if (t === window) {
1027
+ y.value = document.documentElement.clientWidth, b.value = document.documentElement.clientHeight, i.value = window.scrollX, a.value = window.scrollY;
1043
1028
  let e = () => {
1044
- D(), f.value = document.documentElement.clientWidth, p.value = document.documentElement.clientHeight, Q();
1029
+ X(), y.value = document.documentElement.clientWidth, b.value = document.documentElement.clientHeight, Q();
1045
1030
  };
1046
1031
  return window.addEventListener("resize", e), () => {
1047
- n.removeEventListener("scroll", pt), window.removeEventListener("resize", e), _t?.disconnect(), clearInterval(vt), ie = null;
1032
+ n.removeEventListener("scroll", pt), window.removeEventListener("resize", e), r?.disconnect(), clearInterval(o);
1048
1033
  };
1049
- } else return f.value = t.clientWidth, p.value = t.clientHeight, r.value = t.scrollLeft, i.value = t.scrollTop, gt = new ResizeObserver(() => {
1050
- D(), f.value = t.clientWidth, p.value = t.clientHeight, Q();
1051
- }), gt.observe(t), () => {
1052
- n.removeEventListener("scroll", pt), gt?.disconnect(), _t?.disconnect(), clearInterval(vt), ie = null;
1053
- };
1054
- }, bt;
1034
+ } else {
1035
+ y.value = t.clientWidth, b.value = t.clientHeight, i.value = t.scrollLeft, a.value = t.scrollTop;
1036
+ let e = new ResizeObserver(() => {
1037
+ X(), y.value = t.clientWidth, b.value = t.clientHeight, Q();
1038
+ });
1039
+ return e.observe(t), () => {
1040
+ n.removeEventListener("scroll", pt), e.disconnect(), r?.disconnect(), clearInterval(o);
1041
+ };
1042
+ }
1043
+ }, vt;
1055
1044
  return getCurrentInstance() && (onMounted(() => {
1056
- l.value = !0, D(), watch(() => n.value.container, (e) => {
1057
- bt?.(), bt = yt(e || null);
1045
+ p.value = !0, X(), watch(() => r.value.container, (e) => {
1046
+ vt?.(), vt = _t(e || null);
1058
1047
  }, { immediate: !0 }), Q(), nextTick(() => {
1059
- if (Q(), n.value.ssrRange || n.value.initialScrollIndex !== void 0) {
1060
- let e = n.value.initialScrollIndex === void 0 ? n.value.ssrRange?.start : n.value.initialScrollIndex, t = n.value.initialScrollAlign || "start";
1061
- e != null && et(e, n.value.ssrRange?.colStart, {
1048
+ if (Q(), r.value.ssrRange || r.value.initialScrollIndex !== void 0) {
1049
+ let e = r.value.initialScrollIndex === void 0 ? r.value.ssrRange?.start : r.value.initialScrollIndex, t = r.value.initialScrollAlign || "start";
1050
+ e != null && at(e, r.value.ssrRange?.colStart, {
1062
1051
  align: t,
1063
1052
  behavior: "auto"
1064
- }), o.value = !0, c.value = !0, nextTick(() => {
1065
- c.value = !1;
1053
+ }), d.value = !0, f.value = !0, nextTick(() => {
1054
+ f.value = !1;
1066
1055
  });
1067
- } else o.value = !0;
1056
+ } else d.value = !0;
1068
1057
  });
1069
1058
  }), onUnmounted(() => {
1070
- bt?.();
1071
- })), {
1072
- renderedItems: ut,
1073
- totalWidth: W,
1074
- totalHeight: G,
1059
+ vt?.();
1060
+ })), watch([
1061
+ () => r.value.items,
1062
+ () => r.value.items.length,
1063
+ () => r.value.direction,
1064
+ () => r.value.columnCount,
1065
+ () => r.value.columnWidth,
1066
+ () => r.value.itemSize,
1067
+ () => r.value.gap,
1068
+ () => r.value.columnGap,
1069
+ () => r.value.defaultItemSize,
1070
+ () => r.value.defaultColumnWidth
1071
+ ], () => Oe(), { immediate: !0 }), watch(() => [r.value.container, r.value.hostElement], () => {
1072
+ Q();
1073
+ }), watch(g, (e, t) => {
1074
+ if (t === void 0 || e === t || !p.value) return;
1075
+ if (M.value === "vertical") {
1076
+ Q();
1077
+ return;
1078
+ }
1079
+ let n = displayToVirtual(t ? Math.abs(i.value) : i.value, x.x, w.value);
1080
+ Q(), Z(n, null, { behavior: "auto" });
1081
+ }, { flush: "sync" }), watch([w, E], () => {
1082
+ !p.value || l.value || k.value || Z(o.value, c.value, { behavior: "auto" });
1083
+ }), watch([() => r.value.items.length, () => r.value.columnCount], ([e, t], [n, r]) => {
1084
+ nextTick(() => {
1085
+ let i = Math.max(0, G.value - y.value), a = Math.max(0, Je.value - b.value);
1086
+ o.value > i || c.value > a ? Z(Math.min(o.value, i), Math.min(c.value, a), { behavior: "auto" }) : (e !== n && E.value !== 1 || t !== r && w.value !== 1) && Z(o.value, c.value, { behavior: "auto" }), Q();
1087
+ });
1088
+ }), {
1089
+ renderedItems: dt,
1090
+ totalWidth: G,
1091
+ totalHeight: Je,
1075
1092
  renderedWidth: Ye,
1076
1093
  renderedHeight: Xe,
1077
- scrollDetails: dt,
1078
- getRowHeight: $e,
1079
- getColumnWidth: Z,
1080
- getRowOffset: (e) => U.value + V.value + Le.value + calculateOffsetAt(e, A.value, n.value.gap || 0, (e) => N.query(e)),
1094
+ scrollDetails: ft,
1095
+ getRowHeight: tt,
1096
+ getColumnWidth: et,
1097
+ getRowOffset: (e) => Be.value + U.value + Fe.value + calculateOffsetAt(e, P.value, r.value.gap || 0, (e) => R.query(e)),
1081
1098
  getColumnOffset: (e) => {
1082
- let t = H.value + B.value + Fe.value;
1083
- return O.value === "both" ? t + calculateOffsetAt(e, j.value, n.value.columnGap || 0, (e) => P.query(e)) : t + calculateOffsetAt(e, A.value, n.value.columnGap || 0, (e) => M.query(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));
1084
1101
  },
1085
- getItemOffset: (e) => O.value === "horizontal" ? H.value + B.value + Fe.value + calculateOffsetAt(e, A.value, n.value.columnGap || 0, (e) => M.query(e)) : U.value + V.value + Le.value + calculateOffsetAt(e, A.value, n.value.gap || 0, (e) => N.query(e)),
1086
- getItemSize: (e) => O.value === "horizontal" ? Z(e) : $e(e),
1087
- scrollToIndex: et,
1088
- scrollToOffset: tt,
1089
- stopProgrammaticScroll: ft,
1090
- updateItemSize: $,
1102
+ getItemOffset: nt,
1103
+ getItemSize: rt,
1104
+ scrollToIndex: at,
1105
+ scrollToOffset: Z,
1106
+ stopProgrammaticScroll: re,
1107
+ handleScrollCorrection: it,
1108
+ updateItemSize: ht,
1091
1109
  updateItemSizes: mt,
1092
1110
  updateHostOffset: Q,
1093
- updateDirection: D,
1111
+ updateDirection: X,
1094
1112
  columnRange: ct,
1095
- refresh: () => {
1096
- ke(nt);
1097
- },
1098
- isHydrated: o,
1099
- isWindowContainer: Ke,
1100
- isRtl: d,
1101
- scaleX: q,
1102
- scaleY: J,
1113
+ refresh: () => je(),
1114
+ isHydrated: d,
1115
+ isWindowContainer: Ge,
1116
+ isRtl: g,
1117
+ scaleX: w,
1118
+ scaleY: E,
1103
1119
  componentOffset: K,
1104
1120
  renderedVirtualWidth: Ze,
1105
1121
  renderedVirtualHeight: Qe,
1106
- getRowIndexAt: it,
1107
- getColIndexAt: at
1122
+ getRowIndexAt: Y,
1123
+ getColIndexAt: $e
1108
1124
  };
1109
1125
  }
1110
1126
  function useVirtualScrollbar(e) {
@@ -1184,6 +1200,102 @@ function useVirtualScrollbar(e) {
1184
1200
  isDragging: d
1185
1201
  };
1186
1202
  }
1203
+ function useRtlExtension() {
1204
+ let e = ref(!1);
1205
+ return {
1206
+ name: "rtl",
1207
+ onInit(t) {
1208
+ let n = () => {
1209
+ if (typeof window > "u") return;
1210
+ let n = t.props.value.container || t.props.value.hostRef || window, r = isElement(n) ? n : document.documentElement, i = window.getComputedStyle(r).direction === "rtl";
1211
+ e.value !== i && (e.value = i, t.internalState.isRtl.value = i);
1212
+ }, r = t.methods.updateDirection;
1213
+ t.methods.updateDirection = () => {
1214
+ n(), r();
1215
+ }, n();
1216
+ }
1217
+ };
1218
+ }
1219
+ function useSnappingExtension() {
1220
+ return {
1221
+ name: "snapping",
1222
+ onScrollEnd(e) {
1223
+ if (!e.props.value.snap || e.internalState.isProgrammaticScroll.value) return;
1224
+ let t = e.props.value.snap, n = t === !0 ? "auto" : t, r = e.scrollDetails.value, i = e.props.value.items.length, a = e.props.value.direction || "vertical", o = r.currentIndex, s = r.currentColIndex, c = "start", l = "start", u = !1;
1225
+ if (a !== "horizontal") {
1226
+ let t = resolveSnap(n, e.internalState.scrollDirectionY.value, r.currentIndex, r.currentEndIndex, e.internalState.relativeScrollY.value, e.internalState.viewportHeight.value, i, (t) => e.methods.getItemSize(t), (t) => e.methods.getItemOffset(t), e.methods.getRowIndexAt);
1227
+ t && (o = t.index, c = t.align, u = !0);
1228
+ }
1229
+ if (a !== "vertical") {
1230
+ 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
+ o && (s = o.index, l = o.align, u = !0);
1232
+ }
1233
+ u && e.methods.scrollToIndex(o, s, {
1234
+ align: {
1235
+ x: l,
1236
+ y: c
1237
+ },
1238
+ behavior: "smooth"
1239
+ });
1240
+ }
1241
+ };
1242
+ }
1243
+ function useStickyExtension() {
1244
+ let e = (e) => computed(() => [...e.props.value.stickyIndices || []].sort((e, t) => e - t));
1245
+ return {
1246
+ name: "sticky",
1247
+ transformRenderedItems(t, n) {
1248
+ let r = e(n).value;
1249
+ if (r.length === 0) return t;
1250
+ let { start: i } = n.range.value, a = n.currentIndex.value, o = findPrevStickyIndex(r, a), s = [...t];
1251
+ return o !== void 0 && o < i && t.some((e) => e.index === o), s;
1252
+ }
1253
+ };
1254
+ }
1255
+ function useInfiniteLoadingExtension(e) {
1256
+ return {
1257
+ name: "infinite-loading",
1258
+ onInit(t) {
1259
+ watch(t.scrollDetails, (n) => {
1260
+ if (t.props.value.loading || !n || !n.totalSize || n.totalSize.width === 0 && n.totalSize.height === 0) return;
1261
+ let r = t.props.value.direction || "vertical", i = t.props.value.loadDistance ?? 200;
1262
+ r !== "horizontal" && n.totalSize.height - (n.scrollOffset.y + n.viewportSize.height) <= i && e.onLoad("vertical"), r !== "vertical" && n.totalSize.width - (n.scrollOffset.x + n.viewportSize.width) <= i && e.onLoad("horizontal");
1263
+ });
1264
+ }
1265
+ };
1266
+ }
1267
+ function usePrependRestorationExtension() {
1268
+ let e = [];
1269
+ return {
1270
+ name: "prepend-restoration",
1271
+ onInit(t) {
1272
+ e = [...t.props.value.items], watch(() => t.props.value.items, (n) => {
1273
+ if (!t.props.value.restoreScrollOnPrepend) {
1274
+ e = [...n];
1275
+ return;
1276
+ }
1277
+ let r = calculatePrependCount(e, n);
1278
+ if (r > 0) {
1279
+ let e = t.props.value.direction || "vertical", i = (e === "horizontal" ? t.props.value.columnGap : t.props.value.gap) || 0, a = 0;
1280
+ for (let e = 0; e < r; e++) a += t.methods.getItemBaseSize(n[e], e) + i;
1281
+ a > 0 && t.methods.handleScrollCorrection(e === "horizontal" ? a : 0, e === "horizontal" ? 0 : a);
1282
+ }
1283
+ e = [...n];
1284
+ }, { deep: !1 });
1285
+ }
1286
+ };
1287
+ }
1288
+ function useCoordinateScalingExtension() {
1289
+ return {
1290
+ name: "coordinate-scaling",
1291
+ onInit(e) {
1292
+ watchEffect(() => {
1293
+ let t = e.props.value.container, n = e.totalSize.value, r = e.internalState.viewportWidth.value, i = e.internalState.viewportHeight.value, a = typeof window < "u" && t === window || t === void 0;
1294
+ n && r && i && (e.internalState.scaleX.value = calculateScale(a, n.width, r), e.internalState.scaleY.value = calculateScale(a, n.height, i));
1295
+ });
1296
+ }
1297
+ };
1298
+ }
1187
1299
  var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1188
1300
  __name: "VirtualScrollbar",
1189
1301
  props: {
@@ -1286,18 +1398,25 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1286
1398
  "visibleRangeChange"
1287
1399
  ],
1288
1400
  setup(o, { expose: s, emit: c }) {
1289
- let _ = o, S = c, T = useSlots(), D = ref(null), O = ref(null), k = ref(null), ae = ref(null), A = /* @__PURE__ */ new Map(), j = useId(), oe = computed(() => `vs-container-${j}`), ce = ref(0), le = ref(0), ue = computed(() => _.container === void 0 ? D.value : _.container), de = computed(() => {
1290
- let e = ue.value;
1291
- return e === D.value || isWindowLike(e);
1292
- }), M = computed(() => (_.items.length, {
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 = [
1402
+ useRtlExtension(),
1403
+ useSnappingExtension(),
1404
+ useStickyExtension(),
1405
+ useInfiniteLoadingExtension({ onLoad: (e) => S("load", e) }),
1406
+ usePrependRestorationExtension(),
1407
+ 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, {
1293
1412
  items: _.items,
1294
1413
  itemSize: _.itemSize,
1295
1414
  direction: _.direction,
1296
1415
  bufferBefore: _.bufferBefore,
1297
1416
  bufferAfter: _.bufferAfter,
1298
- container: ue.value,
1299
- hostElement: O.value,
1300
- hostRef: D.value,
1417
+ container: le.value,
1418
+ hostElement: A.value,
1419
+ hostRef: O.value,
1301
1420
  ssrRange: _.ssrRange,
1302
1421
  columnCount: _.columnCount,
1303
1422
  columnWidth: _.columnWidth,
@@ -1311,19 +1430,19 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1311
1430
  },
1312
1431
  flowPaddingStart: {
1313
1432
  x: 0,
1314
- y: _.stickyHeader ? 0 : ce.value
1433
+ y: _.stickyHeader ? 0 : se.value
1315
1434
  },
1316
1435
  flowPaddingEnd: {
1317
1436
  x: 0,
1318
- y: _.stickyFooter ? 0 : le.value
1437
+ y: _.stickyFooter ? 0 : ce.value
1319
1438
  },
1320
1439
  stickyStart: {
1321
1440
  x: 0,
1322
- y: _.stickyHeader && de.value ? ce.value : 0
1441
+ y: _.stickyHeader && ue.value ? se.value : 0
1323
1442
  },
1324
1443
  stickyEnd: {
1325
1444
  x: 0,
1326
- y: _.stickyFooter && de.value ? le.value : 0
1445
+ y: _.stickyFooter && ue.value ? ce.value : 0
1327
1446
  },
1328
1447
  gap: _.gap,
1329
1448
  columnGap: _.columnGap,
@@ -1337,64 +1456,64 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1337
1456
  defaultColumnWidth: _.defaultColumnWidth,
1338
1457
  debug: _.debug,
1339
1458
  snap: _.snap
1340
- })), { isHydrated: N, isRtl: me, columnRange: P, renderedItems: he, scrollDetails: F, renderedHeight: ge, renderedWidth: _e, getColumnWidth: I, getRowHeight: ve, scrollToIndex: L, scrollToOffset: ye, updateHostOffset: be, updateItemSizes: xe, updateDirection: Se, getItemOffset: Ce, getRowOffset: we, getColumnOffset: Te, getItemSize: De, refresh: Oe, stopProgrammaticScroll: R, scaleX: Ae, scaleY: je, isWindowContainer: Me, componentOffset: Ne, renderedVirtualWidth: V, renderedVirtualHeight: Be, getRowIndexAt: H, getColIndexAt: Ve } = useVirtualScroll(M), U = computed(() => Ae.value !== 1 || je.value !== 1), He = computed(() => Me.value ? !1 : _.virtualScrollbar === !0 || Ae.value !== 1 || je.value !== 1);
1341
- function Ue(e) {
1342
- let { displayViewportSize: t } = F.value;
1343
- e >= ge.value - t.height - .5 ? ye(null, Infinity) : ye(null, displayToVirtual(e, Ne.y, je.value));
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);
1460
+ 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));
1344
1463
  }
1345
- function We(e) {
1346
- let { displayViewportSize: t } = F.value;
1347
- e >= _e.value - t.width - .5 ? ye(Infinity, null) : ye(displayToVirtual(e, Ne.x, Ae.value), null);
1464
+ 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);
1348
1467
  }
1349
- let Ge = useVirtualScrollbar(computed(() => ({
1468
+ let Ye = useVirtualScrollbar(computed(() => ({
1350
1469
  axis: "vertical",
1351
- totalSize: ge.value,
1352
- position: F.value.displayScrollOffset.y,
1353
- viewportSize: F.value.displayViewportSize.height,
1354
- scrollToOffset: Ue,
1355
- containerId: oe.value,
1356
- isRtl: me.value
1357
- }))), Ke = useVirtualScrollbar(computed(() => ({
1470
+ totalSize: he.value,
1471
+ position: L.value.displayScrollOffset.y,
1472
+ viewportSize: L.value.displayViewportSize.height,
1473
+ scrollToOffset: Je,
1474
+ containerId: N.value,
1475
+ isRtl: pe.value
1476
+ }))), Xe = useVirtualScrollbar(computed(() => ({
1358
1477
  axis: "horizontal",
1359
- totalSize: _e.value,
1360
- position: F.value.displayScrollOffset.x,
1361
- viewportSize: F.value.displayViewportSize.width,
1362
- scrollToOffset: We,
1363
- containerId: oe.value,
1364
- isRtl: me.value
1365
- }))), qe = computed(() => _.direction === "both" ? {
1366
- ...P.value,
1478
+ totalSize: R.value,
1479
+ position: L.value.displayScrollOffset.x,
1480
+ viewportSize: L.value.displayViewportSize.width,
1481
+ scrollToOffset: K,
1482
+ containerId: N.value,
1483
+ isRtl: pe.value
1484
+ }))), Ze = computed(() => _.direction === "both" ? {
1485
+ ...me.value,
1367
1486
  padStart: 0,
1368
1487
  padEnd: 0
1369
- } : P.value);
1370
- function Je() {
1371
- Oe(), Se(), nextTick(() => {
1488
+ } : me.value);
1489
+ function Qe() {
1490
+ Ee(), be(), nextTick(() => {
1372
1491
  let e = [];
1373
- for (let [t, n] of A.entries()) n && e.push({
1492
+ for (let [t, n] of j.entries()) n && e.push({
1374
1493
  index: t,
1375
1494
  inlineSize: n.offsetWidth,
1376
1495
  blockSize: n.offsetHeight,
1377
1496
  element: n
1378
1497
  });
1379
- e.length > 0 && xe(e);
1498
+ e.length > 0 && ye(e);
1380
1499
  });
1381
1500
  }
1382
- watch(F, (e, t) => {
1383
- !N.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", {
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", {
1384
1503
  start: e.range.start,
1385
1504
  end: e.range.end,
1386
1505
  colStart: e.columnRange.start,
1387
1506
  colEnd: e.columnRange.end
1388
- }), !_.loading && (_.direction !== "horizontal" && e.totalSize && e.totalSize.height - (e.scrollOffset.y + e.viewportSize.height) <= _.loadDistance && S("load", "vertical"), _.direction !== "vertical" && e.totalSize && e.totalSize.width - (e.scrollOffset.x + e.viewportSize.width) <= _.loadDistance && S("load", "horizontal")));
1389
- }), watch(N, (e) => {
1390
- e && F.value?.range && F.value?.columnRange && S("visibleRangeChange", {
1391
- start: F.value.range.start,
1392
- end: F.value.range.end,
1393
- colStart: F.value.columnRange.start,
1394
- colEnd: F.value.columnRange.end
1507
+ }));
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
1395
1514
  });
1396
1515
  }, { once: !0 });
1397
- let W = typeof window > "u" ? null : new ResizeObserver(be), G = typeof window > "u" ? null : new ResizeObserver((e) => {
1516
+ let q = typeof window > "u" ? null : new ResizeObserver(ve), J = typeof window > "u" ? null : new ResizeObserver((e) => {
1398
1517
  let t = [];
1399
1518
  for (let n of e) {
1400
1519
  let e = n.target, r = Number(e.dataset.index), i = e.dataset.colIndex, a = n.contentRect.width, o = n.contentRect.height;
@@ -1410,196 +1529,196 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1410
1529
  element: e
1411
1530
  });
1412
1531
  }
1413
- t.length > 0 && xe(t);
1414
- }), K = typeof window > "u" ? null : new ResizeObserver(() => {
1415
- ce.value = k.value?.offsetHeight || 0, le.value = ae.value?.offsetHeight || 0, be();
1532
+ t.length > 0 && ye(t);
1533
+ }), Y = typeof window > "u" ? null : new ResizeObserver(() => {
1534
+ se.value = re.value?.offsetHeight || 0, ce.value = ie.value?.offsetHeight || 0, ve();
1416
1535
  });
1417
- function Ye(e, t) {
1536
+ function $e(e, t) {
1418
1537
  watch(e, (e, n) => {
1419
- n && K?.unobserve(n), e ? K?.observe(e) : t.value = 0;
1538
+ n && Y?.unobserve(n), e ? Y?.observe(e) : t.value = 0;
1420
1539
  }, { immediate: !0 });
1421
1540
  }
1422
- Ye(k, ce), Ye(ae, le), onMounted(() => {
1423
- D.value && W?.observe(D.value);
1424
- for (let e of A.values()) Xe(e, !0);
1425
- }), watch([D, O], ([e], [t]) => {
1426
- t && W?.unobserve(t), e && W?.observe(e);
1427
- }), watch([D, U], ([e, t], [n, r]) => {
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]) => {
1545
+ t && q?.unobserve(t), e && q?.observe(e);
1546
+ }), watch([O, qe], ([e, t], [n, r]) => {
1428
1547
  let i = e !== n || t !== r;
1429
- n && i && n.removeEventListener("wheel", it), e && i && e.addEventListener("wheel", it, { passive: !t });
1548
+ n && i && n.removeEventListener("wheel", ft), e && i && e.addEventListener("wheel", ft, { passive: !t });
1430
1549
  }, { immediate: !0 });
1431
- function Xe(e, t) {
1550
+ function et(e, t) {
1432
1551
  let n = t ? "observe" : "unobserve";
1433
- G?.[n](e), _.direction === "both" && e.children.length > 0 && e.querySelectorAll("[data-col-index]").forEach((e) => G?.[n](e));
1552
+ J?.[n](e), _.direction === "both" && e.children.length > 0 && e.querySelectorAll("[data-col-index]").forEach((e) => J?.[n](e));
1434
1553
  }
1435
- function Ze(e, t) {
1554
+ function tt(e, t) {
1436
1555
  if (e) {
1437
1556
  let n = e;
1438
- A.set(t, n), Xe(n, !0);
1557
+ j.set(t, n), et(n, !0);
1439
1558
  } else {
1440
- let e = A.get(t);
1441
- e && (Xe(e, !1), A.delete(t));
1559
+ let e = j.get(t);
1560
+ e && (et(e, !1), j.delete(t));
1442
1561
  }
1443
1562
  }
1444
- let Qe = ref(!1), q = {
1563
+ let nt = ref(!1), rt = {
1445
1564
  x: 0,
1446
1565
  y: 0
1447
- }, J = {
1566
+ }, X = {
1448
1567
  x: 0,
1449
1568
  y: 0
1450
- }, Y = {
1569
+ }, it = {
1451
1570
  x: 0,
1452
1571
  y: 0
1453
- }, X = 0, Z = {
1572
+ }, at = 0, Z = {
1454
1573
  x: 0,
1455
1574
  y: 0
1456
- }, $e = null;
1457
- function et() {
1575
+ }, ot = null;
1576
+ function st() {
1458
1577
  let e = () => {
1459
1578
  let { nextVelocity: t, delta: n } = calculateInertiaStep(Z, FRICTION);
1460
1579
  Z.x = t.x, Z.y = t.y;
1461
- let { x: r, y: i } = F.value.scrollOffset;
1462
- ye(r + n.x, i + n.y, { behavior: "auto" }), Math.abs(Z.x) > MIN_VELOCITY || Math.abs(Z.y) > MIN_VELOCITY ? $e = requestAnimationFrame(e) : tt();
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();
1463
1582
  };
1464
- $e = requestAnimationFrame(e);
1583
+ ot = requestAnimationFrame(e);
1465
1584
  }
1466
- function tt() {
1467
- $e !== null && (cancelAnimationFrame($e), $e = null), Z = {
1585
+ function ct() {
1586
+ ot !== null && (cancelAnimationFrame(ot), ot = null), Z = {
1468
1587
  x: 0,
1469
1588
  y: 0
1470
1589
  };
1471
1590
  }
1472
- function nt(e) {
1473
- R(), tt(), U.value && (e.pointerType === "mouse" && e.button !== 0 || (Qe.value = !0, q = {
1591
+ function lt(e) {
1592
+ V(), ct(), qe.value && (e.pointerType === "mouse" && e.button !== 0 || (nt.value = !0, rt = {
1474
1593
  x: e.clientX,
1475
1594
  y: e.clientY
1476
- }, Y = {
1595
+ }, it = {
1477
1596
  x: e.clientX,
1478
1597
  y: e.clientY
1479
- }, X = performance.now(), J = {
1480
- x: F.value.scrollOffset.x,
1481
- y: F.value.scrollOffset.y
1598
+ }, at = performance.now(), X = {
1599
+ x: L.value.scrollOffset.x,
1600
+ y: L.value.scrollOffset.y
1482
1601
  }, e.currentTarget.setPointerCapture(e.pointerId)));
1483
1602
  }
1484
- function rt(e) {
1485
- if (!Qe.value) return;
1486
- let t = performance.now(), n = t - X;
1603
+ function ut(e) {
1604
+ if (!nt.value) return;
1605
+ let t = performance.now(), n = t - at;
1487
1606
  if (n > 0) {
1488
- let t = calculateInstantaneousVelocity(Y, {
1607
+ let t = calculateInstantaneousVelocity(it, {
1489
1608
  x: e.clientX,
1490
1609
  y: e.clientY
1491
1610
  }, n);
1492
1611
  Z.x = Z.x * .2 + t.x * .8, Z.y = Z.y * .2 + t.y * .8;
1493
1612
  }
1494
- Y = {
1613
+ it = {
1495
1614
  x: e.clientX,
1496
1615
  y: e.clientY
1497
- }, X = t;
1498
- let r = q.x - e.clientX, i = q.y - e.clientY;
1616
+ }, at = t;
1617
+ let r = rt.x - e.clientX, i = rt.y - e.clientY;
1499
1618
  requestAnimationFrame(() => {
1500
- ye(J.x + r, J.y + i, { behavior: "auto" });
1619
+ _e(X.x + r, X.y + i, { behavior: "auto" });
1501
1620
  });
1502
1621
  }
1503
- function Q(e) {
1504
- Qe.value && (Qe.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), et()));
1622
+ function dt(e) {
1623
+ 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()));
1505
1624
  }
1506
- function it(e) {
1507
- let { scrollOffset: t } = F.value;
1508
- if (R(), U.value) {
1625
+ function ft(e) {
1626
+ let { scrollOffset: t } = L.value;
1627
+ if (V(), qe.value) {
1509
1628
  e.preventDefault();
1510
1629
  let { deltaX: n, deltaY: r } = e;
1511
- e.shiftKey && n === 0 && (n = r, r = 0), ye(t.x + n, t.y + r, { behavior: "auto" });
1630
+ e.shiftKey && n === 0 && (n = r, r = 0), _e(t.x + n, t.y + r, { behavior: "auto" });
1512
1631
  }
1513
1632
  }
1514
- function at(e) {
1515
- let { viewportSize: t, scrollOffset: n } = F.value, r = _.direction !== "vertical", i = _.direction !== "horizontal", a = M.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) => {
1633
+ 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) => {
1516
1635
  let r = (e ? n.x : n.y) + (e ? t.width : t.height) / 2;
1517
- return e ? Ve(r) : H(r);
1518
- }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = F.value, v = (e, t) => {
1636
+ return e ? Ke(r) : Ge(r);
1637
+ }, { currentIndex: p, currentEndIndex: m, currentColIndex: h, currentEndColIndex: g } = L.value, v = (e, t) => {
1519
1638
  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;
1520
1639
  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;
1521
1640
  }, y = (e, r) => {
1522
1641
  let i = !e;
1523
1642
  if (d === "center") {
1524
1643
  let t = f(i), n = i && _.columnCount ? _.columnCount - 1 : _.items.length - 1, a = r ? Math.min(n, t + 1) : Math.max(0, t - 1);
1525
- L(e ? a : null, i ? a : null, { align: "center" });
1644
+ B(e ? a : null, i ? a : null, { align: "center" });
1526
1645
  return;
1527
1646
  }
1528
- if (e) if (r) if (d === "start") L(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1647
+ if (e) if (r) if (d === "start") B(Math.min(_.items.length - 1, p + 1), null, { align: "start" });
1529
1648
  else {
1530
1649
  let e = d || "end", r = n.y + t.height - (s.y + l.y);
1531
- we(m) + ve(m) > r + 1 ? L(m, null, { align: e }) : m < _.items.length - 1 && L(m + 1, null, { align: e });
1650
+ Se(m) + ge(m) > r + 1 ? B(m, null, { align: e }) : m < _.items.length - 1 && B(m + 1, null, { align: e });
1532
1651
  }
1533
- else if (d === "end") L(Math.max(0, m - 1), null, { align: "end" });
1652
+ else if (d === "end") B(Math.max(0, m - 1), null, { align: "end" });
1534
1653
  else {
1535
1654
  let e = d || "start", t = n.y + o.y + c.y;
1536
- we(p) < t - 1 ? L(p, null, { align: e }) : p > 0 && L(p - 1, null, { align: e });
1655
+ Se(p) < t - 1 ? B(p, null, { align: e }) : p > 0 && B(p - 1, null, { align: e });
1537
1656
  }
1538
1657
  else {
1539
1658
  let e = _.columnCount ? _.columnCount - 1 : _.items.length - 1;
1540
- if (me.value ? !r : r) if (d === "start") L(null, Math.min(e, h + 1), { align: "start" });
1659
+ if (pe.value ? !r : r) if (d === "start") B(null, Math.min(e, h + 1), { align: "start" });
1541
1660
  else {
1542
1661
  let r = d || "end", i = n.x + t.width - (s.x + l.x);
1543
- (_.columnCount ? Te(g) + I(g) : Ce(g) + De(g)) > i + 1 ? L(null, g, { align: r }) : g < e && L(null, g + 1, { align: r });
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 });
1544
1663
  }
1545
- else if (d === "end") L(null, Math.max(0, g - 1), { align: "end" });
1664
+ else if (d === "end") B(null, Math.max(0, g - 1), { align: "end" });
1546
1665
  else {
1547
1666
  let e = d || "start", t = n.x + o.x + c.x;
1548
- (_.columnCount ? Te(h) : Ce(h)) < t - 1 ? L(null, h, { align: e }) : h > 0 && L(null, h - 1, { align: e });
1667
+ (_.columnCount ? Ce(h) : xe(h)) < t - 1 ? B(null, h, { align: e }) : h > 0 && B(null, h - 1, { align: e });
1549
1668
  }
1550
1669
  }
1551
1670
  };
1552
1671
  switch (e.key) {
1553
1672
  case "Home":
1554
- e.preventDefault(), R(), L(0, 0, {
1673
+ e.preventDefault(), V(), B(0, 0, {
1555
1674
  behavior: Math.max(n.x, n.y) > 10 * (_.direction === "horizontal" ? t.width : t.height) ? "auto" : "smooth",
1556
1675
  align: "start"
1557
1676
  });
1558
1677
  break;
1559
1678
  case "End": {
1560
- e.preventDefault(), R();
1561
- let r = _.items.length - 1, i = (_.columnCount || 0) > 0 ? _.columnCount - 1 : 0, { totalSize: a } = F.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";
1562
- _.direction === "both" ? L(r, i, {
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, {
1563
1682
  behavior: o,
1564
1683
  align: "end"
1565
- }) : L(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1684
+ }) : B(_.direction === "vertical" ? r : 0, _.direction === "horizontal" ? r : 0, {
1566
1685
  behavior: o,
1567
1686
  align: "end"
1568
1687
  });
1569
1688
  break;
1570
1689
  }
1571
1690
  case "ArrowUp":
1572
- e.preventDefault(), R(), i && y(!0, !1);
1691
+ e.preventDefault(), V(), i && y(!0, !1);
1573
1692
  break;
1574
1693
  case "ArrowDown":
1575
- e.preventDefault(), R(), i && y(!0, !0);
1694
+ e.preventDefault(), V(), i && y(!0, !0);
1576
1695
  break;
1577
1696
  case "ArrowLeft":
1578
- e.preventDefault(), R(), r && y(!1, !1);
1697
+ e.preventDefault(), V(), r && y(!1, !1);
1579
1698
  break;
1580
1699
  case "ArrowRight":
1581
- e.preventDefault(), R(), r && y(!1, !0);
1700
+ e.preventDefault(), V(), r && y(!1, !0);
1582
1701
  break;
1583
1702
  case "PageUp":
1584
- e.preventDefault(), R(), _.direction === "horizontal" ? L(null, v(!1, !1), { align: d || "end" }) : L(v(!0, !1), null, { align: d || "end" });
1703
+ e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !1), { align: d || "end" }) : B(v(!0, !1), null, { align: d || "end" });
1585
1704
  break;
1586
1705
  case "PageDown":
1587
- e.preventDefault(), R(), _.direction === "horizontal" ? L(null, v(!1, !0), { align: d || "start" }) : L(v(!0, !0), null, { align: d || "start" });
1706
+ e.preventDefault(), V(), _.direction === "horizontal" ? B(null, v(!1, !0), { align: d || "start" }) : B(v(!0, !0), null, { align: d || "start" });
1588
1707
  break;
1589
1708
  }
1590
1709
  }
1591
1710
  onUnmounted(() => {
1592
- W?.disconnect(), G?.disconnect(), K?.disconnect();
1711
+ q?.disconnect(), J?.disconnect(), Y?.disconnect();
1593
1712
  });
1594
- let ot = computed(() => {
1713
+ let mt = computed(() => {
1595
1714
  let e = { ..._.direction === "vertical" ? {} : { whiteSpace: "nowrap" } };
1596
- return (He.value || !Me.value) && (e.overflow = "auto"), U.value && (e.touchAction = "none"), Me.value ? e : _.containerTag === "table" ? {
1715
+ return (G.value || !je.value) && (e.overflow = "auto"), qe.value && (e.touchAction = "none"), je.value ? e : _.containerTag === "table" ? {
1597
1716
  ...e,
1598
1717
  display: "block",
1599
1718
  minInlineSize: _.direction === "vertical" ? "100%" : "auto"
1600
1719
  } : e;
1601
1720
  });
1602
- function st(e, t, n, r, i, a) {
1721
+ function ht(e, t, n, r, i, a) {
1603
1722
  return t <= r ? null : {
1604
1723
  axis: e,
1605
1724
  positionPercent: a.positionPercent.value,
@@ -1614,28 +1733,28 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1614
1733
  position: n,
1615
1734
  viewportSize: r,
1616
1735
  scrollToOffset: i,
1617
- containerId: oe.value,
1618
- isRtl: me.value,
1736
+ containerId: N.value,
1737
+ isRtl: pe.value,
1619
1738
  ariaLabel: `${e === "vertical" ? "Vertical" : "Horizontal"} scroll`
1620
1739
  },
1621
1740
  isDragging: a.isDragging.value
1622
1741
  };
1623
1742
  }
1624
- let ct = computed(() => {
1743
+ let gt = computed(() => {
1625
1744
  if (_.direction === "horizontal") return null;
1626
- let { displayViewportSize: e, displayScrollOffset: t } = F.value;
1627
- return st("vertical", ge.value, t.y, e.height, Ue, Ge);
1628
- }), lt = computed(() => {
1745
+ let { displayViewportSize: e, displayScrollOffset: t } = L.value;
1746
+ return ht("vertical", he.value, t.y, e.height, Je, Ye);
1747
+ }), Q = computed(() => {
1629
1748
  if (_.direction === "vertical") return null;
1630
- let { displayViewportSize: e, displayScrollOffset: t } = F.value;
1631
- return st("horizontal", _e.value, t.x, e.width, We, Ke);
1632
- }), ut = computed(() => {
1749
+ let { displayViewportSize: e, displayScrollOffset: t } = L.value;
1750
+ return ht("horizontal", R.value, t.x, e.width, K, Xe);
1751
+ }), _t = computed(() => {
1633
1752
  let e = _.direction === "horizontal", t = _.direction === "vertical", n = _.direction === "both", r = {
1634
- inlineSize: t ? "100%" : `${V.value}px`,
1635
- blockSize: e ? "100%" : `${Be.value}px`
1753
+ inlineSize: t ? "100%" : `${Ue.value}px`,
1754
+ blockSize: e ? "100%" : `${We.value}px`
1636
1755
  };
1637
- return N.value || (r.display = "flex", r.flexDirection = e ? "row" : "column", (e || n) && _.columnGap && (r.columnGap = `${_.columnGap}px`), (t || n) && _.gap && (r.rowGap = `${_.gap}px`)), r;
1638
- }), dt = computed(() => {
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;
1757
+ }), vt = computed(() => {
1639
1758
  let e = _.direction === "horizontal";
1640
1759
  return {
1641
1760
  display: e ? "inline-block" : "block",
@@ -1644,122 +1763,124 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1644
1763
  verticalAlign: "top"
1645
1764
  } : { inlineSize: "100%" }
1646
1765
  };
1647
- }), ft = computed(() => ({
1648
- inlineSize: _.direction === "vertical" ? "1px" : `${V.value}px`,
1649
- blockSize: _.direction === "horizontal" ? "1px" : `${Be.value}px`
1766
+ }), yt = computed(() => ({
1767
+ inlineSize: _.direction === "vertical" ? "1px" : `${Ue.value}px`,
1768
+ blockSize: _.direction === "horizontal" ? "1px" : `${We.value}px`
1650
1769
  }));
1651
- function pt(e) {
1770
+ function bt(e) {
1652
1771
  let t = calculateItemStyle({
1653
1772
  containerTag: _.containerTag || "div",
1654
1773
  direction: _.direction,
1655
- isHydrated: N.value,
1774
+ isHydrated: F.value,
1656
1775
  item: e,
1657
1776
  itemSize: _.itemSize,
1658
- paddingStartX: M.value.scrollPaddingStart.x,
1659
- paddingStartY: M.value.scrollPaddingStart.y,
1660
- isRtl: me.value
1777
+ paddingStartX: P.value.scrollPaddingStart.x,
1778
+ paddingStartY: P.value.scrollPaddingStart.y,
1779
+ isRtl: pe.value
1661
1780
  });
1662
- return !N.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1781
+ return !F.value && _.direction === "both" && (t.display = "flex", _.columnGap && (t.columnGap = `${_.columnGap}px`)), t;
1663
1782
  }
1664
- let mt = computed(() => _.debug), $ = computed(() => _.containerTag === "table"), ht = computed(() => $.value ? "thead" : "div"), gt = computed(() => $.value ? "tfoot" : "div"), _t = computed(() => _.role ? _.role : $.value ? null : _.direction === "both" ? "grid" : "list"), vt = computed(() => _t.value === "grid" || $.value), yt = computed(() => $.value ? null : _.ariaLabel || _.ariaLabelledby ? "region" : "none"), bt = computed(() => $.value ? null : _t.value), xt = computed(() => {
1665
- if (vt.value) return "row";
1666
- let e = _t.value;
1783
+ 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
+ if (Tt.value) return "row";
1785
+ let e = wt.value;
1667
1786
  return e === "tree" ? "treeitem" : e === "listbox" ? "option" : e === "menu" ? "menuitem" : "listitem";
1668
- }), St = computed(() => _.itemRole == null ? xt.value : _.itemRole), Ct = computed(() => _.role === "grid" || !_.role && _.direction === "both" ? "gridcell" : $.value ? "cell" : null), wt = computed(() => {
1669
- let e = St.value;
1787
+ }), kt = computed(() => _.itemRole == null ? Ot.value : _.itemRole), At = computed(() => _.role === "grid" || !_.role && _.direction === "both" ? "gridcell" : $.value ? "cell" : null), jt = computed(() => {
1788
+ let e = kt.value;
1670
1789
  return e == null || e !== "none" && e !== "presentation";
1671
- }), Tt = computed(() => ({
1790
+ }), Mt = computed(() => ({
1672
1791
  "aria-label": _.ariaLabel,
1673
1792
  "aria-labelledby": _.ariaLabelledby,
1674
1793
  "aria-busy": _.loading ? "true" : void 0
1675
- })), Et = computed(() => {
1676
- let e = {}, t = _t.value;
1794
+ })), Nt = computed(() => {
1795
+ let e = {}, t = wt.value;
1677
1796
  return t && [
1678
1797
  "grid",
1679
1798
  "tree",
1680
1799
  "listbox",
1681
1800
  "menu",
1682
1801
  "tablist"
1683
- ].includes(t) && (e["aria-orientation"] = _.direction === "both" ? void 0 : _.direction), vt.value && (e["aria-rowcount"] = _.items.length, _.columnCount > 0 && (e["aria-colcount"] = _.columnCount)), e;
1802
+ ].includes(t) && (e["aria-orientation"] = _.direction === "both" ? void 0 : _.direction), Tt.value && (e["aria-rowcount"] = _.items.length, _.columnCount > 0 && (e["aria-colcount"] = _.columnCount)), e;
1684
1803
  });
1685
- function Dt(e) {
1804
+ function Pt(e) {
1686
1805
  let t = {};
1687
- vt.value ? t["aria-rowindex"] = e + 1 : (t["aria-setsize"] = _.items.length, t["aria-posinset"] = e + 1);
1688
- let n = St.value;
1689
- return n !== null && (t.role = n === "none" || n === "presentation" ? xt.value : n), t;
1806
+ Tt.value ? t["aria-rowindex"] = e + 1 : (t["aria-setsize"] = _.items.length, t["aria-posinset"] = e + 1);
1807
+ let n = kt.value;
1808
+ return n !== null && (t.role = n === "none" || n === "presentation" ? Ot.value : n), t;
1690
1809
  }
1691
- function Ot(e) {
1692
- let t = Ct.value;
1810
+ function Ft(e) {
1811
+ let t = At.value;
1693
1812
  if (!t) return {};
1694
1813
  let n = { role: t };
1695
- return vt.value && (n["aria-colindex"] = e + 1), n;
1814
+ return Tt.value && (n["aria-colindex"] = e + 1), n;
1696
1815
  }
1697
1816
  return s({
1698
1817
  ...toRefs(_),
1699
- scrollDetails: F,
1700
- columnRange: P,
1701
- getColumnWidth: I,
1702
- getRowHeight: ve,
1703
- getCellAriaProps: Ot,
1704
- getItemAriaProps: Dt,
1705
- getRowOffset: we,
1706
- getColumnOffset: Te,
1707
- getItemOffset: Ce,
1708
- getItemSize: De,
1709
- getRowIndexAt: H,
1710
- getColIndexAt: Ve,
1711
- scrollToIndex: L,
1712
- scrollToOffset: ye,
1713
- refresh: Je,
1818
+ scrollDetails: L,
1819
+ columnRange: me,
1820
+ getColumnWidth: z,
1821
+ getRowHeight: ge,
1822
+ getCellAriaProps: Ft,
1823
+ getItemAriaProps: Pt,
1824
+ getRowOffset: Se,
1825
+ getColumnOffset: Ce,
1826
+ getItemOffset: xe,
1827
+ getItemSize: Te,
1828
+ isTable: $,
1829
+ itemTag: computed(() => _.itemTag || "div"),
1830
+ getRowIndexAt: Ge,
1831
+ getColIndexAt: Ke,
1832
+ scrollToIndex: B,
1833
+ scrollToOffset: _e,
1834
+ refresh: Qe,
1714
1835
  stopProgrammaticScroll: () => {
1715
- R(), tt();
1836
+ V(), ct();
1716
1837
  },
1717
- updateDirection: Se,
1718
- isRtl: me,
1719
- isHydrated: N,
1720
- scaleX: Ae,
1721
- scaleY: je,
1722
- renderedWidth: _e,
1723
- renderedHeight: ge,
1724
- componentOffset: Ne,
1725
- scrollbarPropsVertical: ct,
1726
- scrollbarPropsHorizontal: lt
1838
+ updateDirection: be,
1839
+ isRtl: pe,
1840
+ isHydrated: F,
1841
+ scaleX: ke,
1842
+ scaleY: Ae,
1843
+ renderedWidth: R,
1844
+ renderedHeight: he,
1845
+ componentOffset: Me,
1846
+ scrollbarPropsVertical: gt,
1847
+ scrollbarPropsHorizontal: Q
1727
1848
  }), (t, s) => (openBlock(), createBlock(resolveDynamicComponent(o.containerTag), mergeProps({
1728
- id: oe.value,
1849
+ id: N.value,
1729
1850
  ref_key: "hostRef",
1730
- ref: D,
1851
+ ref: O,
1731
1852
  class: ["virtual-scroll-container", [`virtual-scroll--${o.direction}`, {
1732
- "virtual-scroll--hydrated": unref(N),
1733
- "virtual-scroll--window": unref(Me),
1853
+ "virtual-scroll--hydrated": unref(F),
1854
+ "virtual-scroll--window": unref(je),
1734
1855
  "virtual-scroll--table": $.value,
1735
- "virtual-scroll--hide-scrollbar": He.value
1856
+ "virtual-scroll--hide-scrollbar": G.value
1736
1857
  }]],
1737
- style: ot.value,
1858
+ style: mt.value,
1738
1859
  tabindex: "0",
1739
- role: $.value ? void 0 : yt.value
1860
+ role: $.value ? void 0 : Et.value
1740
1861
  }, $.value ? {
1741
- ...Tt.value,
1742
- ...Et.value
1743
- } : Tt.value, {
1744
- onKeydown: at,
1745
- onPointerdown: nt,
1746
- onPointermove: rt,
1747
- onPointerup: Q,
1748
- onPointercancel: Q
1862
+ ...Mt.value,
1863
+ ...Nt.value
1864
+ } : Mt.value, {
1865
+ onKeydown: pt,
1866
+ onPointerdown: lt,
1867
+ onPointermove: ut,
1868
+ onPointerup: dt,
1869
+ onPointercancel: dt
1749
1870
  }), {
1750
1871
  default: withCtx(() => [
1751
- He.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1872
+ G.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
1752
1873
  class: "virtual-scroll-scrollbar-viewport",
1753
1874
  style: normalizeStyle({
1754
- inlineSize: `${unref(F).displayViewportSize.width}px`,
1755
- blockSize: `${unref(F).displayViewportSize.height}px`,
1875
+ inlineSize: `${unref(L).displayViewportSize.width}px`,
1876
+ blockSize: `${unref(L).displayViewportSize.height}px`,
1756
1877
  "--vsi-scrollbar-has-cross-gap": o.direction === "both" ? 1 : 0
1757
1878
  })
1758
- }, [T.scrollbar && ct.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 0 }, ct.value)), void 0, !0) : ct.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 1 }, ct.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0), T.scrollbar && lt.value ? renderSlot(t.$slots, "scrollbar", normalizeProps(mergeProps({ key: 2 }, lt.value)), void 0, !0) : lt.value ? (openBlock(), createBlock(VirtualScrollbar_default, normalizeProps(mergeProps({ key: 3 }, lt.value.scrollbarProps)), null, 16)) : createCommentVNode("", !0)], 4)])) : createCommentVNode("", !0),
1759
- T.header ? (openBlock(), createBlock(resolveDynamicComponent(ht.value), {
1879
+ }, [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
+ T.header ? (openBlock(), createBlock(resolveDynamicComponent(St.value), {
1760
1881
  key: 1,
1761
1882
  ref_key: "headerRef",
1762
- ref: k,
1883
+ ref: re,
1763
1884
  class: normalizeClass(["virtual-scroll-header", { "virtual-scroll--sticky": o.stickyHeader }]),
1764
1885
  role: $.value ? void 0 : "none"
1765
1886
  }, {
@@ -1768,15 +1889,15 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1768
1889
  }, 8, ["class", "role"])) : createCommentVNode("", !0),
1769
1890
  (openBlock(), createBlock(resolveDynamicComponent(o.wrapperTag), mergeProps({
1770
1891
  ref_key: "wrapperRef",
1771
- ref: O,
1892
+ ref: A,
1772
1893
  class: "virtual-scroll-wrapper",
1773
- style: ut.value,
1774
- role: $.value ? void 0 : bt.value
1775
- }, $.value ? {} : Et.value), {
1894
+ style: _t.value,
1895
+ role: $.value ? void 0 : Dt.value
1896
+ }, $.value ? {} : Nt.value), {
1776
1897
  default: withCtx(() => [$.value ? (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), {
1777
1898
  key: 0,
1778
1899
  class: "virtual-scroll-spacer",
1779
- style: normalizeStyle(ft.value)
1900
+ style: normalizeStyle(yt.value)
1780
1901
  }, {
1781
1902
  default: withCtx(() => [...s[0] ||= [createElementVNode("td", { style: {
1782
1903
  padding: "0",
@@ -1784,24 +1905,24 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1784
1905
  "block-size": "inherit"
1785
1906
  } }, null, -1)]]),
1786
1907
  _: 1
1787
- }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(he), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1908
+ }, 8, ["style"])) : createCommentVNode("", !0), (openBlock(!0), createElementBlock(Fragment, null, renderList(unref(I), (e) => (openBlock(), createBlock(resolveDynamicComponent(o.itemTag), mergeProps({
1788
1909
  key: e.index,
1789
1910
  ref_for: !0,
1790
- ref: (t) => Ze(t, e.index),
1911
+ ref: (t) => tt(t, e.index),
1791
1912
  "data-index": e.index,
1792
1913
  class: ["virtual-scroll-item", {
1793
1914
  "virtual-scroll--sticky": e.isStickyActive,
1794
- "virtual-scroll--debug": mt.value
1915
+ "virtual-scroll--debug": xt.value
1795
1916
  }],
1796
- style: pt(e)
1797
- }, { ref_for: !0 }, wt.value ? Dt(e.index) : { role: "none" }), {
1917
+ style: bt(e)
1918
+ }, { ref_for: !0 }, jt.value ? Pt(e.index) : { role: "none" }), {
1798
1919
  default: withCtx(() => [renderSlot(t.$slots, "item", {
1799
1920
  item: e.item,
1800
1921
  index: e.index,
1801
- getItemAriaProps: Dt,
1802
- columnRange: qe.value,
1803
- getColumnWidth: unref(I),
1804
- getCellAriaProps: Ot,
1922
+ getItemAriaProps: Pt,
1923
+ columnRange: Ze.value,
1924
+ getColumnWidth: unref(z),
1925
+ getCellAriaProps: Ft,
1805
1926
  gap: _.gap,
1806
1927
  columnGap: _.columnGap,
1807
1928
  isSticky: e.isSticky,
@@ -1809,7 +1930,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1809
1930
  isStickyActiveX: e.isStickyActiveX,
1810
1931
  isStickyActiveY: e.isStickyActiveY,
1811
1932
  offset: e.offset
1812
- }, void 0, !0), mt.value ? (openBlock(), createElementBlock("div", _hoisted_2, " #" + toDisplayString(e.index) + " (" + toDisplayString(Math.round(e.offset.x)) + ", " + toDisplayString(Math.round(e.offset.y)) + ") ", 1)) : createCommentVNode("", !0)]),
1933
+ }, void 0, !0), xt.value ? (openBlock(), createElementBlock("div", _hoisted_2, " #" + toDisplayString(e.index) + " (" + toDisplayString(Math.round(e.offset.x)) + ", " + toDisplayString(Math.round(e.offset.y)) + ") ", 1)) : createCommentVNode("", !0)]),
1813
1934
  _: 2
1814
1935
  }, 1040, [
1815
1936
  "data-index",
@@ -1821,14 +1942,14 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1821
1942
  o.loading && T.loading ? (openBlock(), createElementBlock("div", {
1822
1943
  key: 2,
1823
1944
  class: "virtual-scroll-loading",
1824
- style: normalizeStyle(dt.value),
1945
+ style: normalizeStyle(vt.value),
1825
1946
  "aria-live": "polite",
1826
1947
  "aria-atomic": "true"
1827
1948
  }, [renderSlot(t.$slots, "loading", {}, void 0, !0)], 4)) : createCommentVNode("", !0),
1828
- T.footer ? (openBlock(), createBlock(resolveDynamicComponent(gt.value), {
1949
+ T.footer ? (openBlock(), createBlock(resolveDynamicComponent(Ct.value), {
1829
1950
  key: 3,
1830
1951
  ref_key: "footerRef",
1831
- ref: ae,
1952
+ ref: ie,
1832
1953
  class: normalizeClass(["virtual-scroll-footer", { "virtual-scroll--sticky": o.stickyFooter }]),
1833
1954
  role: $.value ? void 0 : "none"
1834
1955
  }, {
@@ -1844,7 +1965,7 @@ var VirtualScrollbar_default = /* @__PURE__ */ defineComponent({
1844
1965
  "role"
1845
1966
  ]));
1846
1967
  }
1847
- }), [["__scopeId", "data-v-55dd91b2"]]);
1968
+ }), [["__scopeId", "data-v-a75851a5"]]);
1848
1969
  export { BROWSER_MAX_SIZE, DEFAULT_BUFFER, DEFAULT_COLUMN_WIDTH, DEFAULT_ITEM_SIZE, EMPTY_SCROLL_DETAILS, FenwickTree, VirtualScroll_default as VirtualScroll, VirtualScrollbar_default as VirtualScrollbar, calculateAxisSize, calculateColumnRange, calculateIndexAt, calculateInertiaStep, calculateInstantaneousVelocity, calculateItemPosition, calculateItemStyle, calculateOffsetAt, calculatePrependCount, calculateRange, calculateRangeSize, calculateRenderedSize, calculateSSROffsets, calculateScale, calculateScrollTarget, calculateStickyItem, calculateTotalSize, displayToVirtual, findPrevStickyIndex, getPaddingX, getPaddingY, isBody, isElement, isItemVisible, isScrollToIndexOptions, isScrollableElement, isWindow, isWindowLike, resolveSnap, scrollTo, useVirtualScroll, useVirtualScrollSizes, useVirtualScrollbar, virtualToDisplay };
1849
1970
 
1850
1971
  //# sourceMappingURL=index.mjs.map