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