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