vue-virtual-flow 0.0.3 → 0.0.4

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.
@@ -1,51 +1,51 @@
1
- import { watch as Z, defineComponent as ge, ref as D, computed as s, nextTick as I, onMounted as pe, onUpdated as Se, onBeforeUnmount as ye, openBlock as x, createElementBlock as T, normalizeStyle as R, createElementVNode as $e, renderSlot as te, createTextVNode as he, createCommentVNode as ve, Fragment as me, renderList as Me, unref as v, normalizeClass as Ie, toDisplayString as ze } from "vue";
2
- function Ve(n) {
3
- return typeof n == "string" || typeof n == "number" || typeof n == "symbol";
1
+ import { watch as ee, defineComponent as be, ref as N, computed as i, nextTick as R, onMounted as Se, onUpdated as Ce, onBeforeUnmount as Ie, openBlock as x, createElementBlock as T, normalizeStyle as D, createElementVNode as De, renderSlot as ne, createTextVNode as Me, createCommentVNode as me, Fragment as we, renderList as ze, unref as r, normalizeClass as Ee, toDisplayString as Le } from "vue";
2
+ function Ae(o) {
3
+ return typeof o == "string" || typeof o == "number" || typeof o == "symbol";
4
4
  }
5
- function be(n, W) {
6
- const k = n[W];
7
- return Ve(k) ? k : void 0;
5
+ function Ke(o, X) {
6
+ const K = o[X];
7
+ return Ae(K) ? K : void 0;
8
8
  }
9
- function Be(n) {
10
- return be(n, "id") ?? be(n, "key");
9
+ function We(o) {
10
+ return Ke(o, "id") ?? Ke(o, "key");
11
11
  }
12
- function xe(n) {
13
- function W(e, w) {
14
- const g = n.itemKey();
15
- if (typeof g == "function")
16
- return g(e, w);
12
+ function $e(o) {
13
+ function X(e, $) {
14
+ const f = o.itemKey();
15
+ if (typeof f == "function")
16
+ return f(e, $);
17
17
  if (e !== null && typeof e == "object") {
18
- if (g !== void 0) {
19
- const r = be(e, g);
20
- if (r !== void 0) return r;
18
+ if (f !== void 0) {
19
+ const s = Ke(e, f);
20
+ if (s !== void 0) return s;
21
21
  }
22
- const b = Be(e);
23
- if (b !== void 0) return b;
22
+ const M = We(e);
23
+ if (M !== void 0) return M;
24
24
  }
25
- return w;
25
+ return $;
26
26
  }
27
- function k() {
27
+ function K() {
28
28
  }
29
- return Z(
30
- () => [n.itemKey(), n.items()],
31
- k,
29
+ return ee(
30
+ () => [o.itemKey(), o.items()],
31
+ K,
32
32
  { immediate: !0 }
33
- ), { getItemKey: W };
33
+ ), { getItemKey: X };
34
34
  }
35
- function Te(n) {
36
- return n === "fill" ? "100%" : typeof n == "number" ? `${n}px` : n;
35
+ function Be(o) {
36
+ return o === "fill" ? "100%" : typeof o == "number" ? `${o}px` : o;
37
37
  }
38
- function we(n) {
39
- return (W, k) => {
40
- typeof k == "string" && (k === "fill" || k.trim().endsWith("%"));
38
+ function Re(o) {
39
+ return (X, K) => {
40
+ typeof K == "string" && (K === "fill" || K.trim().endsWith("%"));
41
41
  };
42
42
  }
43
- const Ee = ["aria-label"], Le = {
43
+ const Fe = ["aria-label"], Ye = {
44
44
  key: 0,
45
45
  class: "vue-chat-virtual-scroll__loading-older",
46
46
  role: "status",
47
47
  "aria-live": "polite"
48
- }, Ke = ["aria-posinset", "aria-setsize"], Oe = /* @__PURE__ */ ge({
48
+ }, Ne = ["aria-posinset", "aria-setsize"], Ge = /* @__PURE__ */ be({
49
49
  name: "ChatVirtualScroll",
50
50
  __name: "ChatVirtualScroll",
51
51
  props: {
@@ -63,301 +63,301 @@ const Ee = ["aria-label"], Le = {
63
63
  loadOlderThreshold: { default: 120 }
64
64
  },
65
65
  emits: ["scroll", "loadOlder", "bottomChange"],
66
- setup(n, { expose: W, emit: k }) {
67
- const e = n, w = k, g = D(), b = D(0), r = D(0), H = D(0), N = D(!0), C = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Map();
68
- let A, h, V = -1, M = !1;
69
- const S = we(), { getItemKey: P } = xe({
66
+ setup(o, { expose: X, emit: K }) {
67
+ const e = o, $ = K, f = N(), M = N(0), s = N(0), B = N(0), G = N(!0), F = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Map();
68
+ let _, p, k = -1, S = !1;
69
+ const I = Re(), { getItemKey: A } = $e({
70
70
  componentName: "ChatVirtualScroll",
71
71
  items: () => e.items,
72
72
  itemKey: () => e.itemKey
73
- }), Y = s(
73
+ }), W = i(
74
74
  () => Math.max(1, e.estimatedItemSize)
75
- ), _ = s(() => Math.max(0, Math.floor(e.overscan))), ae = s(() => r.value > 0 ? r.value : typeof e.height == "number" ? Math.max(0, e.height) : Y.value), K = s(() => {
76
- H.value;
77
- const o = new Array(e.items.length + 1), c = new Array(e.items.length);
78
- o[0] = 0;
79
- for (let u = 0; u < e.items.length; u += 1) {
80
- const E = P(e.items[u], u), $ = C.get(E) ?? Y.value;
81
- c[u] = $, o[u + 1] = o[u] + $;
75
+ ), Z = i(() => Math.max(0, Math.floor(e.overscan))), te = i(() => s.value > 0 ? s.value : typeof e.height == "number" ? Math.max(0, e.height) : W.value), Y = i(() => {
76
+ B.value;
77
+ const l = new Array(e.items.length + 1), u = new Array(e.items.length);
78
+ l[0] = 0;
79
+ for (let c = 0; c < e.items.length; c += 1) {
80
+ const E = A(e.items[c], c), P = F.get(E) ?? W.value;
81
+ u[c] = P, l[c + 1] = l[c] + P;
82
82
  }
83
83
  return {
84
- offsets: o,
85
- sizes: c,
86
- total: o[e.items.length] ?? 0
84
+ offsets: l,
85
+ sizes: u,
86
+ total: l[e.items.length] ?? 0
87
87
  };
88
- }), z = s(() => {
89
- const o = /* @__PURE__ */ new Map();
90
- return e.items.forEach((c, u) => {
91
- o.set(P(c, u), u);
92
- }), o;
88
+ }), H = i(() => {
89
+ const l = /* @__PURE__ */ new Map();
90
+ return e.items.forEach((u, c) => {
91
+ l.set(A(u, c), c);
92
+ }), l;
93
93
  });
94
- function Q(o) {
94
+ function q(l) {
95
95
  if (e.items.length === 0) return 0;
96
- const c = K.value.offsets;
97
- let u = 0, E = e.items.length;
98
- for (; u < E; ) {
99
- const $ = Math.floor((u + E) / 2);
100
- c[$ + 1] <= o ? u = $ + 1 : E = $;
96
+ const u = Y.value.offsets;
97
+ let c = 0, E = e.items.length;
98
+ for (; c < E; ) {
99
+ const P = Math.floor((c + E) / 2);
100
+ u[P + 1] <= l ? c = P + 1 : E = P;
101
101
  }
102
- return Math.min(u, e.items.length - 1);
102
+ return Math.min(c, e.items.length - 1);
103
103
  }
104
- const B = s(
104
+ const O = i(
105
105
  () => Math.max(
106
106
  0,
107
- Q(b.value) - _.value
107
+ q(M.value) - Z.value
108
108
  )
109
- ), q = s(() => {
109
+ ), J = i(() => {
110
110
  if (e.items.length === 0) return 0;
111
- const o = Q(b.value + ae.value) + 1;
111
+ const l = q(M.value + te.value) + 1;
112
112
  return Math.min(
113
113
  e.items.length,
114
- o + _.value
114
+ l + Z.value
115
115
  );
116
- }), U = s(
117
- () => e.items.slice(B.value, q.value).map((o, c) => {
118
- const u = B.value + c;
116
+ }), le = i(
117
+ () => e.items.slice(O.value, J.value).map((l, u) => {
118
+ const c = O.value + u;
119
119
  return {
120
- item: o,
121
- index: u,
122
- key: P(o, u),
123
- top: K.value.offsets[u]
120
+ item: l,
121
+ index: c,
122
+ key: A(l, c),
123
+ top: Y.value.offsets[c]
124
124
  };
125
125
  })
126
- ), ie = s(() => ({
127
- height: Te(e.height)
126
+ ), ue = i(() => ({
127
+ height: Be(e.height)
128
128
  }));
129
- function F() {
130
- const o = g.value;
131
- if (!o) return;
132
- const u = Math.max(
129
+ function j() {
130
+ const l = f.value;
131
+ if (!l) return;
132
+ const c = Math.max(
133
133
  0,
134
- K.value.total - o.scrollTop - o.clientHeight
134
+ Y.value.total - l.scrollTop - l.clientHeight
135
135
  ) <= Math.max(0, e.bottomThreshold);
136
- u !== N.value && (N.value = u, M && w("bottomChange", u));
136
+ c !== G.value && (G.value = c, S && $("bottomChange", c));
137
137
  }
138
- function f() {
139
- var o;
140
- r.value = ((o = g.value) == null ? void 0 : o.clientHeight) ?? 0, S(g.value, e.height), I(() => {
141
- F(), O();
138
+ function m() {
139
+ var l;
140
+ s.value = ((l = f.value) == null ? void 0 : l.clientHeight) ?? 0, I(f.value, e.height), R(() => {
141
+ j(), C();
142
142
  });
143
143
  }
144
- function m(o) {
145
- b.value = o.currentTarget.scrollTop, F(), w("scroll", {
146
- scrollTop: b.value,
147
- startIndex: B.value,
148
- endIndex: q.value
149
- }), O();
150
- }
151
- function O() {
152
- const o = g.value;
153
- !M || !o || !e.hasOlder || e.loadingOlder || V === e.items.length || o.scrollTop <= Math.max(0, e.loadOlderThreshold) && (V = e.items.length, w("loadOlder"));
154
- }
155
- function oe(o) {
156
- const c = o.borderBoxSize;
157
- if (c) {
158
- const u = Array.isArray(c) ? c[0] : c;
159
- if (u != null && u.blockSize) return u.blockSize;
144
+ function g(l) {
145
+ M.value = l.currentTarget.scrollTop, j(), $("scroll", {
146
+ scrollTop: M.value,
147
+ startIndex: O.value,
148
+ endIndex: J.value
149
+ }), C();
150
+ }
151
+ function C() {
152
+ const l = f.value;
153
+ !S || !l || !e.hasOlder || e.loadingOlder || k === e.items.length || l.scrollTop <= Math.max(0, e.loadOlderThreshold) && (k = e.items.length, $("loadOlder"));
154
+ }
155
+ function se(l) {
156
+ const u = l.borderBoxSize;
157
+ if (u) {
158
+ const c = Array.isArray(u) ? u[0] : u;
159
+ if (c != null && c.blockSize) return c.blockSize;
160
160
  }
161
- return o.contentRect.height;
162
- }
163
- function le(o) {
164
- const c = K.value, u = N.value && e.stickToBottom;
165
- let E = 0, $ = !1;
166
- for (const j of o) {
167
- const se = j.target, a = L.get(se), t = oe(j);
168
- if (a === void 0 || t <= 0) continue;
169
- const l = C.get(a) ?? Y.value;
170
- if (Math.abs(l - t) < 0.5) continue;
171
- const i = z.value.get(a);
172
- i !== void 0 && c.offsets[i + 1] <= b.value && (E += t - l), C.set(a, t), $ = !0;
161
+ return l.contentRect.height;
162
+ }
163
+ function ae(l) {
164
+ const u = Y.value, c = G.value && e.stickToBottom;
165
+ let E = 0, P = !1;
166
+ for (const b of l) {
167
+ const L = b.target, n = U.get(L), t = se(b);
168
+ if (n === void 0 || t <= 0) continue;
169
+ const a = F.get(n) ?? W.value;
170
+ if (Math.abs(a - t) < 0.5) continue;
171
+ const v = H.value.get(n);
172
+ v !== void 0 && u.offsets[v + 1] <= M.value && (E += t - a), F.set(n, t), P = !0;
173
173
  }
174
- $ && (H.value += 1, I(() => {
175
- const j = g.value;
176
- j && (u ? p("auto") : E !== 0 && (j.scrollTop += E, b.value = j.scrollTop, F()));
174
+ P && (B.value += 1, R(() => {
175
+ const b = f.value;
176
+ b && (c ? h("auto") : E !== 0 && (b.scrollTop += E, M.value = b.scrollTop, j()));
177
177
  }));
178
178
  }
179
- function ue(o, c) {
180
- o instanceof HTMLElement && (L.set(o, c), h == null || h.observe(o));
179
+ function fe(l, u) {
180
+ l instanceof HTMLElement && (U.set(l, u), p == null || p.observe(l));
181
181
  }
182
- function X() {
183
- for (const [o] of L)
184
- o.isConnected || (h == null || h.unobserve(o), L.delete(o));
182
+ function oe() {
183
+ for (const [l] of U)
184
+ l.isConnected || (p == null || p.unobserve(l), U.delete(l));
185
185
  }
186
- function ce(o, c = {}) {
187
- const u = g.value;
188
- if (!u) return;
189
- const E = Math.max(0, K.value.total - u.clientHeight), $ = Math.min(
190
- Math.max(0, Number.isFinite(o) ? o : 0),
186
+ function ie(l, u = {}) {
187
+ const c = f.value;
188
+ if (!c) return;
189
+ const E = Math.max(0, Y.value.total - c.clientHeight), P = Math.min(
190
+ Math.max(0, Number.isFinite(l) ? l : 0),
191
191
  E
192
- ), j = c.behavior ?? "auto";
193
- j === "auto" && (b.value = $), u.scrollTo({ ...c, top: $, behavior: j }), I(F);
192
+ ), b = u.behavior ?? "auto";
193
+ b === "auto" && (M.value = P), c.scrollTo({ ...u, top: P, behavior: b }), R(j);
194
194
  }
195
- function G(o, c = {}) {
196
- const u = g.value;
197
- if (!u || e.items.length === 0) return;
195
+ function re(l, u = {}) {
196
+ const c = f.value;
197
+ if (!c || e.items.length === 0) return;
198
198
  const E = Math.min(
199
199
  e.items.length - 1,
200
- Math.max(0, Math.floor(o))
201
- ), { align: $ = "start", ...j } = c, se = K.value.sizes[E];
202
- let a = K.value.offsets[E];
203
- $ === "center" ? a -= (u.clientHeight - se) / 2 : $ === "end" && (a -= u.clientHeight - se);
200
+ Math.max(0, Math.floor(l))
201
+ ), { align: P = "start", ...b } = u, L = Y.value.sizes[E];
202
+ let n = Y.value.offsets[E];
203
+ P === "center" ? n -= (c.clientHeight - L) / 2 : P === "end" && (n -= c.clientHeight - L);
204
204
  const t = Math.max(
205
205
  0,
206
- Math.min(a, K.value.total - u.clientHeight)
207
- ), l = j.behavior ?? "auto";
208
- l === "auto" && (b.value = t), u.scrollTo({
209
- ...j,
206
+ Math.min(n, Y.value.total - c.clientHeight)
207
+ ), a = b.behavior ?? "auto";
208
+ a === "auto" && (M.value = t), c.scrollTo({
209
+ ...b,
210
210
  top: t,
211
- behavior: l
212
- }), I(F);
211
+ behavior: a
212
+ }), R(j);
213
213
  }
214
- function ne(o = "auto") {
215
- const c = g.value;
216
- c && (o === "auto" && (b.value = 0), c.scrollTo({ top: 0, behavior: o }), I(F));
214
+ function de(l = "auto") {
215
+ const u = f.value;
216
+ u && (l === "auto" && (M.value = 0), u.scrollTo({ top: 0, behavior: l }), R(j));
217
217
  }
218
- function p(o = "auto") {
219
- const c = g.value;
220
- if (!c) return;
221
- const u = Math.max(0, K.value.total - c.clientHeight);
222
- o === "auto" ? (c.scrollTop = u, b.value = u) : c.scrollTo({ top: u, behavior: o }), I(F);
223
- }
224
- let y = e.items.map((o, c) => P(o, c));
225
- return Z(
226
- () => e.items.map((o, c) => P(o, c)),
227
- async (o) => {
228
- const c = y;
229
- y = o;
230
- const u = g.value, E = (u == null ? void 0 : u.scrollTop) ?? 0, $ = N.value && e.stickToBottom, j = c[0], se = j === void 0 ? 0 : o.indexOf(j), a = se > 0 ? o.slice(0, se).reduce(
231
- (l, i) => l + (C.get(i) ?? Y.value),
218
+ function h(l = "auto") {
219
+ const u = f.value;
220
+ if (!u) return;
221
+ const c = Math.max(0, Y.value.total - u.clientHeight);
222
+ l === "auto" ? (u.scrollTop = c, M.value = c) : u.scrollTo({ top: c, behavior: l }), R(j);
223
+ }
224
+ let z = e.items.map((l, u) => A(l, u));
225
+ return ee(
226
+ () => e.items.map((l, u) => A(l, u)),
227
+ async (l) => {
228
+ const u = z;
229
+ z = l;
230
+ const c = f.value, E = (c == null ? void 0 : c.scrollTop) ?? 0, P = G.value && e.stickToBottom, b = u[0], L = b === void 0 ? 0 : l.indexOf(b), n = L > 0 ? l.slice(0, L).reduce(
231
+ (a, v) => a + (F.get(v) ?? W.value),
232
232
  0
233
- ) : 0, t = new Set(o);
234
- for (const l of C.keys())
235
- t.has(l) || C.delete(l);
236
- H.value += 1, await I(), u && (a > 0 ? (u.scrollTop = E + a, b.value = u.scrollTop) : o.length > c.length && $ && p("auto"), F(), O());
233
+ ) : 0, t = new Set(l);
234
+ for (const a of F.keys())
235
+ t.has(a) || F.delete(a);
236
+ B.value += 1, await R(), c && (n > 0 ? (c.scrollTop = E + n, M.value = c.scrollTop) : l.length > u.length && P && h("auto"), j(), C());
237
237
  }
238
- ), Z(
238
+ ), ee(
239
239
  () => [e.hasOlder, e.loadingOlder],
240
- async ([o]) => {
241
- o || (V = -1), await I(), O();
240
+ async ([l]) => {
241
+ l || (k = -1), await R(), C();
242
242
  }
243
- ), pe(() => {
244
- if (f(), typeof ResizeObserver < "u") {
245
- A = new ResizeObserver(f), h = new ResizeObserver(le), g.value && A.observe(g.value);
246
- for (const [o] of L)
247
- h.observe(o);
243
+ ), Se(() => {
244
+ if (m(), typeof ResizeObserver < "u") {
245
+ _ = new ResizeObserver(m), p = new ResizeObserver(ae), f.value && _.observe(f.value);
246
+ for (const [l] of U)
247
+ p.observe(l);
248
248
  }
249
- I(() => {
250
- e.initialScroll === "bottom" && p("auto"), M = !0, F(), O();
249
+ R(() => {
250
+ e.initialScroll === "bottom" && h("auto"), S = !0, j(), C();
251
251
  });
252
- }), Se(X), ye(() => {
253
- A && (A.disconnect(), A = void 0), h && (h.disconnect(), h = void 0), L.clear();
254
- }), W({
255
- isAtBottom: N,
256
- scrollTo: ce,
257
- scrollToIndex: G,
258
- scrollToTop: ne,
259
- scrollToBottom: p
260
- }), (o, c) => (x(), T("div", {
252
+ }), Ce(oe), Ie(() => {
253
+ _ && (_.disconnect(), _ = void 0), p && (p.disconnect(), p = void 0), U.clear();
254
+ }), X({
255
+ isAtBottom: G,
256
+ scrollTo: ie,
257
+ scrollToIndex: re,
258
+ scrollToTop: de,
259
+ scrollToBottom: h
260
+ }), (l, u) => (x(), T("div", {
261
261
  ref_key: "viewport",
262
- ref: g,
262
+ ref: f,
263
263
  class: "vue-chat-virtual-scroll",
264
- style: R(ie.value),
264
+ style: D(ue.value),
265
265
  role: "log",
266
- "aria-label": n.ariaLabel,
266
+ "aria-label": o.ariaLabel,
267
267
  "aria-live": "polite",
268
268
  tabindex: "0",
269
- onScrollPassive: m
269
+ onScrollPassive: g
270
270
  }, [
271
- n.loadingOlder ? (x(), T("div", Le, [
272
- $e("div", null, [
273
- te(o.$slots, "loadingOlder", {}, () => [
274
- c[0] || (c[0] = he("Loading older messages…", -1))
271
+ o.loadingOlder ? (x(), T("div", Ye, [
272
+ De("div", null, [
273
+ ne(l.$slots, "loadingOlder", {}, () => [
274
+ u[0] || (u[0] = Me("Loading older messages…", -1))
275
275
  ])
276
276
  ])
277
- ])) : ve("", !0),
278
- n.items.length ? (x(), T("div", {
277
+ ])) : me("", !0),
278
+ o.items.length ? (x(), T("div", {
279
279
  key: 1,
280
280
  class: "vue-chat-virtual-scroll__spacer",
281
- style: R({ height: `${K.value.total}px` })
281
+ style: D({ height: `${Y.value.total}px` })
282
282
  }, [
283
- (x(!0), T(me, null, Me(U.value, ({ item: u, index: E, key: $, top: j }) => (x(), T("div", {
284
- key: $,
283
+ (x(!0), T(we, null, ze(le.value, ({ item: c, index: E, key: P, top: b }) => (x(), T("div", {
284
+ key: P,
285
285
  ref_for: !0,
286
- ref: (se) => ue(se, $),
286
+ ref: (L) => fe(L, P),
287
287
  class: "vue-chat-virtual-scroll__item",
288
- style: R({ transform: `translateY(${j}px)` }),
288
+ style: D({ transform: `translateY(${b}px)` }),
289
289
  role: "article",
290
290
  "aria-posinset": E + 1,
291
- "aria-setsize": n.items.length
291
+ "aria-setsize": o.items.length
292
292
  }, [
293
- te(o.$slots, "default", {
294
- item: u,
293
+ ne(l.$slots, "default", {
294
+ item: c,
295
295
  index: E
296
296
  })
297
- ], 12, Ke))), 128))
298
- ], 4)) : te(o.$slots, "empty", {}, void 0, void 0, 2)
299
- ], 44, Ee));
297
+ ], 12, Ne))), 128))
298
+ ], 4)) : ne(l.$slots, "empty", {}, void 0, void 0, 2)
299
+ ], 44, Fe));
300
300
  }
301
301
  });
302
- function ke(n) {
303
- const W = D(), k = D(0), e = D(!1), w = D(!1), g = s(() => Math.max(1, n.threshold())), b = s(
304
- () => n.refreshing() || w.value ? g.value : k.value
305
- ), r = s(
306
- () => Math.min(1, k.value / g.value)
307
- ), H = s(() => n.refreshing() || w.value ? "Refreshing…" : r.value >= 1 ? "Release to refresh" : "Pull to refresh");
308
- function N() {
309
- W.value = void 0, e.value = !1, k.value = 0;
302
+ function Oe(o) {
303
+ const X = N(), K = N(0), e = N(!1), $ = N(!1), f = i(() => Math.max(1, o.threshold())), M = i(
304
+ () => o.refreshing() || $.value ? f.value : K.value
305
+ ), s = i(
306
+ () => Math.min(1, K.value / f.value)
307
+ ), B = i(() => o.refreshing() || $.value ? "Refreshing…" : s.value >= 1 ? "Release to refresh" : "Pull to refresh");
308
+ function G() {
309
+ X.value = void 0, e.value = !1, K.value = 0;
310
310
  }
311
- function C(h) {
312
- var S;
313
- const V = h.currentTarget, M = ((S = n.scrollTop) == null ? void 0 : S.call(n)) ?? V.scrollTop;
314
- !n.enabled() || n.refreshing() || M > 0 || h.touches.length !== 1 || (W.value = h.touches[0].clientY, e.value = !0);
311
+ function F(p) {
312
+ var I;
313
+ const k = p.currentTarget, S = ((I = o.scrollTop) == null ? void 0 : I.call(o)) ?? k.scrollTop;
314
+ !o.enabled() || o.refreshing() || S > 0 || p.touches.length !== 1 || (X.value = p.touches[0].clientY, e.value = !0);
315
315
  }
316
- function L(h) {
317
- var P;
318
- if (W.value === void 0 || !e.value) return;
319
- const V = h.currentTarget;
320
- if ((((P = n.scrollTop) == null ? void 0 : P.call(n)) ?? V.scrollTop) > 0 || h.touches.length !== 1) {
321
- N();
316
+ function U(p) {
317
+ var A;
318
+ if (X.value === void 0 || !e.value) return;
319
+ const k = p.currentTarget;
320
+ if ((((A = o.scrollTop) == null ? void 0 : A.call(o)) ?? k.scrollTop) > 0 || p.touches.length !== 1) {
321
+ G();
322
322
  return;
323
323
  }
324
- const S = h.touches[0].clientY - W.value;
325
- if (S <= 0) {
326
- k.value = 0;
324
+ const I = p.touches[0].clientY - X.value;
325
+ if (I <= 0) {
326
+ K.value = 0;
327
327
  return;
328
328
  }
329
- h.preventDefault(), k.value = Math.min(S * 0.5, g.value * 2);
329
+ p.preventDefault(), K.value = Math.min(I * 0.5, f.value * 2);
330
330
  }
331
- function A() {
332
- if (W.value === void 0) return;
333
- const h = k.value >= g.value && n.enabled() && !n.refreshing();
334
- if (W.value = void 0, e.value = !1, !h) {
335
- k.value = 0;
331
+ function _() {
332
+ if (X.value === void 0) return;
333
+ const p = K.value >= f.value && o.enabled() && !o.refreshing();
334
+ if (X.value = void 0, e.value = !1, !p) {
335
+ K.value = 0;
336
336
  return;
337
337
  }
338
- k.value = g.value, w.value = !0, n.onRefresh(), I(() => {
339
- n.refreshing() || (w.value = !1, k.value = 0);
338
+ K.value = f.value, $.value = !0, o.onRefresh(), R(() => {
339
+ o.refreshing() || ($.value = !1, K.value = 0);
340
340
  });
341
341
  }
342
- return Z(
343
- () => n.refreshing(),
344
- (h, V) => {
345
- h ? (w.value = !1, k.value = g.value) : V && (w.value = !1, k.value = 0);
342
+ return ee(
343
+ () => o.refreshing(),
344
+ (p, k) => {
345
+ p ? ($.value = !1, K.value = f.value) : k && ($.value = !1, K.value = 0);
346
346
  }
347
347
  ), {
348
348
  pulling: e,
349
- pullDistance: k,
350
- pullOffset: b,
351
- pullProgress: r,
352
- refreshMessage: H,
353
- refreshThreshold: g,
354
- handleTouchStart: C,
355
- handleTouchMove: L,
356
- handleTouchEnd: A,
357
- handleTouchCancel: N
349
+ pullDistance: K,
350
+ pullOffset: M,
351
+ pullProgress: s,
352
+ refreshMessage: B,
353
+ refreshThreshold: f,
354
+ handleTouchStart: F,
355
+ handleTouchMove: U,
356
+ handleTouchEnd: _,
357
+ handleTouchCancel: G
358
358
  };
359
359
  }
360
- const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PURE__ */ ge({
360
+ const Ue = ["aria-label"], je = ["aria-posinset", "aria-setsize"], Pe = /* @__PURE__ */ be({
361
361
  name: "DynamicVirtualScroll",
362
362
  __name: "DynamicVirtualScroll",
363
363
  props: {
@@ -376,294 +376,294 @@ const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PU
376
376
  pullRefreshThreshold: { default: 64 }
377
377
  },
378
378
  emits: ["scroll", "loadMore", "refresh"],
379
- setup(n, { expose: W, emit: k }) {
380
- const e = n, w = k, {
381
- pulling: g,
382
- pullDistance: b,
383
- pullOffset: r,
384
- pullProgress: H,
385
- refreshMessage: N,
386
- refreshThreshold: C,
387
- handleTouchStart: L,
388
- handleTouchMove: A,
389
- handleTouchEnd: h,
390
- handleTouchCancel: V
391
- } = ke({
379
+ setup(o, { expose: X, emit: K }) {
380
+ const e = o, $ = K, {
381
+ pulling: f,
382
+ pullDistance: M,
383
+ pullOffset: s,
384
+ pullProgress: B,
385
+ refreshMessage: G,
386
+ refreshThreshold: F,
387
+ handleTouchStart: U,
388
+ handleTouchMove: _,
389
+ handleTouchEnd: p,
390
+ handleTouchCancel: k
391
+ } = Oe({
392
392
  enabled: () => e.pullToRefresh,
393
393
  refreshing: () => e.refreshing,
394
394
  threshold: () => e.pullRefreshThreshold,
395
- onRefresh: () => w("refresh")
396
- }), M = D(), S = D(0), P = D(0), Y = D(0), _ = /* @__PURE__ */ new Map(), ae = /* @__PURE__ */ new Map();
397
- let K, z, Q = -1;
398
- const B = we(), { getItemKey: q } = xe({
395
+ onRefresh: () => $("refresh")
396
+ }), S = N(), I = N(0), A = N(0), W = N(0), Z = /* @__PURE__ */ new Map(), te = /* @__PURE__ */ new Map();
397
+ let Y, H, q = -1;
398
+ const O = Re(), { getItemKey: J } = $e({
399
399
  componentName: "DynamicVirtualScroll",
400
400
  items: () => e.items,
401
401
  itemKey: () => e.itemKey
402
- }), U = s(
402
+ }), le = i(
403
403
  () => Math.max(1, e.estimatedItemSize)
404
- ), ie = s(
405
- () => Math.max(1, e.loadingItemSize ?? U.value)
406
- ), F = s(() => Math.max(0, Math.floor(e.overscan))), f = s(() => P.value > 0 ? P.value : typeof e.height == "number" ? Math.max(0, e.height) : U.value), m = s(() => {
407
- Y.value;
408
- const a = new Array(e.items.length + 1), t = new Array(e.items.length);
409
- a[0] = 0;
410
- for (let l = 0; l < e.items.length; l += 1) {
411
- const i = q(e.items[l], l), d = _.get(i) ?? U.value;
412
- t[l] = d, a[l + 1] = a[l] + d;
404
+ ), ue = i(
405
+ () => Math.max(1, e.loadingItemSize ?? le.value)
406
+ ), j = i(() => Math.max(0, Math.floor(e.overscan))), m = i(() => A.value > 0 ? A.value : typeof e.height == "number" ? Math.max(0, e.height) : le.value), g = i(() => {
407
+ W.value;
408
+ const n = new Array(e.items.length + 1), t = new Array(e.items.length);
409
+ n[0] = 0;
410
+ for (let a = 0; a < e.items.length; a += 1) {
411
+ const v = J(e.items[a], a), V = Z.get(v) ?? le.value;
412
+ t[a] = V, n[a + 1] = n[a] + V;
413
413
  }
414
414
  return {
415
- offsets: a,
415
+ offsets: n,
416
416
  sizes: t,
417
- total: a[e.items.length] ?? 0
417
+ total: n[e.items.length] ?? 0
418
418
  };
419
- }), O = s(
420
- () => m.value.total + (e.loading ? ie.value : 0)
421
- ), oe = s(() => {
422
- const a = /* @__PURE__ */ new Map();
423
- return e.items.forEach((t, l) => {
424
- a.set(q(t, l), l);
425
- }), a;
419
+ }), C = i(
420
+ () => g.value.total + (e.loading ? ue.value : 0)
421
+ ), se = i(() => {
422
+ const n = /* @__PURE__ */ new Map();
423
+ return e.items.forEach((t, a) => {
424
+ n.set(J(t, a), a);
425
+ }), n;
426
426
  });
427
- function le(a) {
427
+ function ae(n) {
428
428
  if (e.items.length === 0) return 0;
429
- const t = m.value.offsets;
430
- let l = 0, i = e.items.length;
431
- for (; l < i; ) {
432
- const d = Math.floor((l + i) / 2);
433
- t[d + 1] <= a ? l = d + 1 : i = d;
429
+ const t = g.value.offsets;
430
+ let a = 0, v = e.items.length;
431
+ for (; a < v; ) {
432
+ const V = Math.floor((a + v) / 2);
433
+ t[V + 1] <= n ? a = V + 1 : v = V;
434
434
  }
435
- return Math.min(l, e.items.length - 1);
435
+ return Math.min(a, e.items.length - 1);
436
436
  }
437
- const ue = s(
437
+ const fe = i(
438
438
  () => Math.max(
439
439
  0,
440
- le(S.value) - F.value
440
+ ae(I.value) - j.value
441
441
  )
442
- ), X = s(() => {
442
+ ), oe = i(() => {
443
443
  if (e.items.length === 0) return 0;
444
- const a = le(S.value + f.value) + 1;
444
+ const n = ae(I.value + m.value) + 1;
445
445
  return Math.min(
446
446
  e.items.length,
447
- a + F.value
447
+ n + j.value
448
448
  );
449
- }), ce = s(
450
- () => e.items.slice(ue.value, X.value).map((a, t) => {
451
- const l = ue.value + t;
449
+ }), ie = i(
450
+ () => e.items.slice(fe.value, oe.value).map((n, t) => {
451
+ const a = fe.value + t;
452
452
  return {
453
- item: a,
454
- index: l,
455
- key: q(a, l),
456
- top: m.value.offsets[l]
453
+ item: n,
454
+ index: a,
455
+ key: J(n, a),
456
+ top: g.value.offsets[a]
457
457
  };
458
458
  })
459
- ), G = s(() => ({
460
- height: Te(e.height)
459
+ ), re = i(() => ({
460
+ height: Be(e.height)
461
461
  }));
462
- function ne() {
463
- var a;
464
- P.value = ((a = M.value) == null ? void 0 : a.clientHeight) ?? 0, B(M.value, e.height), I(y);
465
- }
466
- function p(a) {
467
- S.value = a.currentTarget.scrollTop, w("scroll", {
468
- scrollTop: S.value,
469
- startIndex: ue.value,
470
- endIndex: X.value
471
- }), y();
472
- }
473
- function y() {
474
- const a = M.value;
475
- if (!a || !e.hasMore || e.loading || Q === e.items.length)
462
+ function de() {
463
+ var n;
464
+ A.value = ((n = S.value) == null ? void 0 : n.clientHeight) ?? 0, O(S.value, e.height), R(z);
465
+ }
466
+ function h(n) {
467
+ I.value = n.currentTarget.scrollTop, $("scroll", {
468
+ scrollTop: I.value,
469
+ startIndex: fe.value,
470
+ endIndex: oe.value
471
+ }), z();
472
+ }
473
+ function z() {
474
+ const n = S.value;
475
+ if (!n || !e.hasMore || e.loading || q === e.items.length)
476
476
  return;
477
477
  const t = Math.max(0, e.loadMoreThreshold);
478
- O.value - a.scrollTop - a.clientHeight <= t && (Q = e.items.length, w("loadMore"));
478
+ C.value - n.scrollTop - n.clientHeight <= t && (q = e.items.length, $("loadMore"));
479
479
  }
480
- function o(a) {
481
- const t = a.borderBoxSize;
480
+ function l(n) {
481
+ const t = n.borderBoxSize;
482
482
  if (t) {
483
- const l = Array.isArray(t) ? t[0] : t;
484
- if (l != null && l.blockSize) return l.blockSize;
483
+ const a = Array.isArray(t) ? t[0] : t;
484
+ if (a != null && a.blockSize) return a.blockSize;
485
485
  }
486
- return a.contentRect.height;
487
- }
488
- function c(a) {
489
- const t = m.value;
490
- let l = 0, i = !1;
491
- for (const d of a) {
492
- const ee = d.target, J = ae.get(ee), re = o(d);
493
- if (J === void 0 || re <= 0) continue;
494
- const de = _.get(J) ?? U.value;
495
- if (Math.abs(de - re) < 0.5) continue;
496
- const fe = oe.value.get(J);
497
- fe !== void 0 && t.offsets[fe + 1] <= S.value && (l += re - de), _.set(J, re), i = !0;
486
+ return n.contentRect.height;
487
+ }
488
+ function u(n) {
489
+ const t = g.value;
490
+ let a = 0, v = !1;
491
+ for (const V of n) {
492
+ const he = V.target, ve = te.get(he), ge = l(V);
493
+ if (ve === void 0 || ge <= 0) continue;
494
+ const xe = Z.get(ve) ?? le.value;
495
+ if (Math.abs(xe - ge) < 0.5) continue;
496
+ const Te = se.value.get(ve);
497
+ Te !== void 0 && t.offsets[Te + 1] <= I.value && (a += ge - xe), Z.set(ve, ge), v = !0;
498
498
  }
499
- i && (Y.value += 1, I(y), l !== 0 && I(() => {
500
- const d = M.value;
501
- d && (d.scrollTop += l, S.value = d.scrollTop);
499
+ v && (W.value += 1, R(z), a !== 0 && R(() => {
500
+ const V = S.value;
501
+ V && (V.scrollTop += a, I.value = V.scrollTop);
502
502
  }));
503
503
  }
504
- function u(a, t) {
505
- a instanceof HTMLElement && (ae.set(a, t), z == null || z.observe(a));
504
+ function c(n, t) {
505
+ n instanceof HTMLElement && (te.set(n, t), H == null || H.observe(n));
506
506
  }
507
507
  function E() {
508
- for (const [a] of ae)
509
- a.isConnected || (z == null || z.unobserve(a), ae.delete(a));
510
- }
511
- function $(a, t = {}) {
512
- const l = M.value;
513
- if (!l) return;
514
- const i = Math.max(0, O.value - l.clientHeight), d = Math.min(
515
- Math.max(0, Number.isFinite(a) ? a : 0),
516
- i
517
- ), ee = t.behavior ?? "auto";
518
- ee === "auto" && (S.value = d), l.scrollTo({ ...t, top: d, behavior: ee });
519
- }
520
- function j(a, t = {}) {
521
- const l = M.value;
522
- if (!l || e.items.length === 0) return;
523
- const i = Math.min(
508
+ for (const [n] of te)
509
+ n.isConnected || (H == null || H.unobserve(n), te.delete(n));
510
+ }
511
+ function P(n, t = {}) {
512
+ const a = S.value;
513
+ if (!a) return;
514
+ const v = Math.max(0, C.value - a.clientHeight), V = Math.min(
515
+ Math.max(0, Number.isFinite(n) ? n : 0),
516
+ v
517
+ ), he = t.behavior ?? "auto";
518
+ he === "auto" && (I.value = V), a.scrollTo({ ...t, top: V, behavior: he });
519
+ }
520
+ function b(n, t = {}) {
521
+ const a = S.value;
522
+ if (!a || e.items.length === 0) return;
523
+ const v = Math.min(
524
524
  e.items.length - 1,
525
- Math.max(0, Math.floor(a))
526
- ), { align: d = "start", ...ee } = t;
527
- let J = m.value.offsets[i];
528
- const re = m.value.sizes[i];
529
- d === "center" ? J -= (l.clientHeight - re) / 2 : d === "end" && (J -= l.clientHeight - re);
530
- const de = Math.max(
525
+ Math.max(0, Math.floor(n))
526
+ ), { align: V = "start", ...he } = t;
527
+ let ve = g.value.offsets[v];
528
+ const ge = g.value.sizes[v];
529
+ V === "center" ? ve -= (a.clientHeight - ge) / 2 : V === "end" && (ve -= a.clientHeight - ge);
530
+ const xe = Math.max(
531
531
  0,
532
- Math.min(J, O.value - l.clientHeight)
533
- ), fe = ee.behavior ?? "auto";
534
- fe === "auto" && (S.value = de), l.scrollTo({
535
- ...ee,
536
- top: de,
537
- behavior: fe
532
+ Math.min(ve, C.value - a.clientHeight)
533
+ ), Te = he.behavior ?? "auto";
534
+ Te === "auto" && (I.value = xe), a.scrollTo({
535
+ ...he,
536
+ top: xe,
537
+ behavior: Te
538
538
  });
539
539
  }
540
- function se(a = "auto") {
540
+ function L(n = "auto") {
541
541
  var t;
542
- (t = M.value) == null || t.scrollTo({ top: 0, behavior: a });
542
+ (t = S.value) == null || t.scrollTo({ top: 0, behavior: n });
543
543
  }
544
- return Z(
544
+ return ee(
545
545
  () => e.itemKey,
546
546
  () => {
547
- _.clear(), Y.value += 1;
547
+ Z.clear(), W.value += 1;
548
548
  }
549
- ), Z(
549
+ ), ee(
550
550
  () => e.items.length,
551
551
  async () => {
552
- const a = new Set(
553
- e.items.map((i, d) => q(i, d))
552
+ const n = new Set(
553
+ e.items.map((v, V) => J(v, V))
554
554
  );
555
- for (const i of _.keys())
556
- a.has(i) || _.delete(i);
557
- Y.value += 1, await I();
558
- const t = M.value;
555
+ for (const v of Z.keys())
556
+ n.has(v) || Z.delete(v);
557
+ W.value += 1, await R();
558
+ const t = S.value;
559
559
  if (!t) return;
560
- const l = Math.max(0, O.value - t.clientHeight);
561
- t.scrollTop > l && (t.scrollTop = l, S.value = l), y();
560
+ const a = Math.max(0, C.value - t.clientHeight);
561
+ t.scrollTop > a && (t.scrollTop = a, I.value = a), z();
562
562
  }
563
- ), Z(
563
+ ), ee(
564
564
  () => [e.hasMore, e.loading],
565
- async ([a]) => {
566
- a || (Q = -1), await I(), y();
565
+ async ([n]) => {
566
+ n || (q = -1), await R(), z();
567
567
  }
568
- ), pe(() => {
569
- if (ne(), typeof ResizeObserver < "u") {
570
- K = new ResizeObserver(ne), z = new ResizeObserver(c), M.value && K.observe(M.value);
571
- for (const [a] of ae)
572
- z.observe(a);
568
+ ), Se(() => {
569
+ if (de(), typeof ResizeObserver < "u") {
570
+ Y = new ResizeObserver(de), H = new ResizeObserver(u), S.value && Y.observe(S.value);
571
+ for (const [n] of te)
572
+ H.observe(n);
573
573
  }
574
- I(y);
575
- }), Se(E), ye(() => {
576
- K && (K.disconnect(), K = void 0), z && (z.disconnect(), z = void 0), ae.clear();
577
- }), W({
578
- scrollTo: $,
579
- scrollToIndex: j,
580
- scrollToTop: se
581
- }), (a, t) => (x(), T("div", {
574
+ R(z);
575
+ }), Ce(E), Ie(() => {
576
+ Y && (Y.disconnect(), Y = void 0), H && (H.disconnect(), H = void 0), te.clear();
577
+ }), X({
578
+ scrollTo: P,
579
+ scrollToIndex: b,
580
+ scrollToTop: L
581
+ }), (n, t) => (x(), T("div", {
582
582
  ref_key: "viewport",
583
- ref: M,
584
- class: Ie(["vue-dynamic-virtual-scroll", { "vue-dynamic-virtual-scroll--pulling": v(g) }]),
585
- style: R(G.value),
583
+ ref: S,
584
+ class: Ee(["vue-dynamic-virtual-scroll", { "vue-dynamic-virtual-scroll--pulling": r(f) }]),
585
+ style: D(re.value),
586
586
  role: "list",
587
- "aria-label": n.ariaLabel,
587
+ "aria-label": o.ariaLabel,
588
588
  tabindex: "0",
589
- onScrollPassive: p,
589
+ onScrollPassive: h,
590
590
  onTouchstartPassive: t[0] || (t[0] = //@ts-ignore
591
- (...l) => v(L) && v(L)(...l)),
591
+ (...a) => r(U) && r(U)(...a)),
592
592
  onTouchmove: t[1] || (t[1] = //@ts-ignore
593
- (...l) => v(A) && v(A)(...l)),
593
+ (...a) => r(_) && r(_)(...a)),
594
594
  onTouchend: t[2] || (t[2] = //@ts-ignore
595
- (...l) => v(h) && v(h)(...l)),
595
+ (...a) => r(p) && r(p)(...a)),
596
596
  onTouchcancel: t[3] || (t[3] = //@ts-ignore
597
- (...l) => v(V) && v(V)(...l))
597
+ (...a) => r(k) && r(k)(...a))
598
598
  }, [
599
- n.pullToRefresh || n.refreshing ? (x(), T("div", {
599
+ o.pullToRefresh || o.refreshing ? (x(), T("div", {
600
600
  key: 0,
601
601
  class: "vue-dynamic-virtual-scroll__refresh",
602
- style: R({
603
- height: `${v(C)}px`,
604
- transform: `translateY(${v(r) - v(C)}px)`
602
+ style: D({
603
+ height: `${r(F)}px`,
604
+ transform: `translateY(${r(s) - r(F)}px)`
605
605
  }),
606
606
  role: "status",
607
607
  "aria-live": "polite"
608
608
  }, [
609
- te(a.$slots, "refresh", {
610
- pullDistance: v(b),
611
- progress: v(H),
612
- refreshing: n.refreshing
609
+ ne(n.$slots, "refresh", {
610
+ pullDistance: r(M),
611
+ progress: r(B),
612
+ refreshing: o.refreshing
613
613
  }, () => [
614
- he(ze(v(N)), 1)
614
+ Me(Le(r(G)), 1)
615
615
  ])
616
- ], 4)) : ve("", !0),
617
- n.items.length || n.loading ? (x(), T("div", {
616
+ ], 4)) : me("", !0),
617
+ o.items.length || o.loading ? (x(), T("div", {
618
618
  key: 1,
619
619
  class: "vue-dynamic-virtual-scroll__spacer",
620
- style: R({
621
- height: `${O.value}px`,
622
- transform: `translateY(${v(r)}px)`
620
+ style: D({
621
+ height: `${C.value}px`,
622
+ transform: `translateY(${r(s)}px)`
623
623
  })
624
624
  }, [
625
- (x(!0), T(me, null, Me(ce.value, ({ item: l, index: i, key: d, top: ee }) => (x(), T("div", {
626
- key: d,
625
+ (x(!0), T(we, null, ze(ie.value, ({ item: a, index: v, key: V, top: he }) => (x(), T("div", {
626
+ key: V,
627
627
  ref_for: !0,
628
- ref: (J) => u(J, d),
628
+ ref: (ve) => c(ve, V),
629
629
  class: "vue-dynamic-virtual-scroll__item",
630
- style: R({ transform: `translateY(${ee}px)` }),
630
+ style: D({ transform: `translateY(${he}px)` }),
631
631
  role: "listitem",
632
- "aria-posinset": i + 1,
633
- "aria-setsize": n.items.length
632
+ "aria-posinset": v + 1,
633
+ "aria-setsize": o.items.length
634
634
  }, [
635
- te(a.$slots, "default", {
636
- item: l,
637
- index: i
635
+ ne(n.$slots, "default", {
636
+ item: a,
637
+ index: v
638
638
  })
639
- ], 12, Ce))), 128)),
640
- n.loading ? (x(), T("div", {
639
+ ], 12, je))), 128)),
640
+ o.loading ? (x(), T("div", {
641
641
  key: 0,
642
642
  class: "vue-dynamic-virtual-scroll__loading",
643
- style: R({
644
- height: `${ie.value}px`,
645
- transform: `translateY(${m.value.total}px)`
643
+ style: D({
644
+ height: `${ue.value}px`,
645
+ transform: `translateY(${g.value.total}px)`
646
646
  }),
647
647
  role: "status",
648
648
  "aria-live": "polite"
649
649
  }, [
650
- te(a.$slots, "loading", {}, () => [
651
- t[4] || (t[4] = he("Loading more…", -1))
650
+ ne(n.$slots, "loading", {}, () => [
651
+ t[4] || (t[4] = Me("Loading more…", -1))
652
652
  ])
653
- ], 4)) : ve("", !0)
653
+ ], 4)) : me("", !0)
654
654
  ], 4)) : (x(), T("div", {
655
655
  key: 2,
656
656
  class: "vue-dynamic-virtual-scroll__empty",
657
- style: R({ transform: `translateY(${v(r)}px)` })
657
+ style: D({ transform: `translateY(${r(s)}px)` })
658
658
  }, [
659
- te(a.$slots, "empty")
659
+ ne(n.$slots, "empty")
660
660
  ], 4))
661
- ], 46, Re));
661
+ ], 46, Ue));
662
662
  }
663
- }), De = ["aria-label"], Pe = ["aria-current", "aria-posinset", "aria-setsize"], Ae = {
663
+ }), Ze = ["aria-label"], _e = ["aria-current", "aria-posinset", "aria-setsize"], qe = {
664
664
  key: 1,
665
665
  class: "vue-short-media-feed__empty"
666
- }, Ne = /* @__PURE__ */ ge({
666
+ }, Je = /* @__PURE__ */ be({
667
667
  name: "ShortMediaFeed",
668
668
  __name: "ShortMediaFeed",
669
669
  props: {
@@ -678,162 +678,162 @@ const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PU
678
678
  loadMoreThreshold: { default: 2 }
679
679
  },
680
680
  emits: ["update:activeIndex", "change", "reachStart", "reachEnd", "loadMore"],
681
- setup(n, { expose: W, emit: k }) {
682
- const e = n, w = k, g = D(), b = D(0), r = D(K(e.activeIndex));
683
- let H, N = -1;
684
- const C = we(), { getItemKey: L } = xe({
681
+ setup(o, { expose: X, emit: K }) {
682
+ const e = o, $ = K, f = N(), M = N(0), s = N(Y(e.activeIndex));
683
+ let B, G = -1;
684
+ const F = Re(), { getItemKey: U } = $e({
685
685
  componentName: "ShortMediaFeed",
686
686
  items: () => e.items,
687
687
  itemKey: () => e.itemKey
688
- }), A = s(
688
+ }), _ = i(
689
689
  () => Math.max(0, Math.floor(e.buffer))
690
- ), h = s(
690
+ ), p = i(
691
691
  () => Math.max(
692
692
  0,
693
693
  Math.floor(
694
694
  Number.isFinite(e.loadMoreThreshold) ? e.loadMoreThreshold : 0
695
695
  )
696
696
  )
697
- ), V = s(() => b.value > 0 ? b.value : typeof e.height == "number" ? Math.max(1, e.height) : 0), M = s(
698
- () => Math.max(0, r.value - A.value)
699
- ), S = s(
697
+ ), k = i(() => M.value > 0 ? M.value : typeof e.height == "number" ? Math.max(1, e.height) : 0), S = i(
698
+ () => Math.max(0, s.value - _.value)
699
+ ), I = i(
700
700
  () => Math.min(
701
701
  e.items.length,
702
- r.value + A.value + 1
702
+ s.value + _.value + 1
703
703
  )
704
- ), P = s(
705
- () => e.items.slice(M.value, S.value).map((f, m) => ({
706
- item: f,
707
- index: M.value + m
704
+ ), A = i(
705
+ () => e.items.slice(S.value, I.value).map((m, g) => ({
706
+ item: m,
707
+ index: S.value + g
708
708
  }))
709
- ), Y = s(() => M.value * V.value), _ = s(
710
- () => (e.items.length - S.value) * V.value
711
- ), ae = s(() => ({
712
- height: Te(e.height)
709
+ ), W = i(() => S.value * k.value), Z = i(
710
+ () => (e.items.length - I.value) * k.value
711
+ ), te = i(() => ({
712
+ height: Be(e.height)
713
713
  }));
714
- function K(f) {
714
+ function Y(m) {
715
715
  return e.items.length === 0 ? 0 : Math.min(
716
716
  e.items.length - 1,
717
- Math.max(0, Math.floor(Number.isFinite(f) ? f : 0))
717
+ Math.max(0, Math.floor(Number.isFinite(m) ? m : 0))
718
718
  );
719
719
  }
720
- function z() {
721
- if (!e.hasMore || e.loading || N === e.items.length)
720
+ function H() {
721
+ if (!e.hasMore || e.loading || G === e.items.length)
722
722
  return;
723
- (e.items.length === 0 ? 0 : e.items.length - 1 - r.value) <= h.value && (N = e.items.length, w("loadMore"));
723
+ (e.items.length === 0 ? 0 : e.items.length - 1 - s.value) <= p.value && (G = e.items.length, $("loadMore"));
724
724
  }
725
- function Q(f) {
726
- const m = K(f);
727
- m === r.value || e.items.length === 0 || (r.value = m, w("update:activeIndex", m), w("change", {
728
- index: m,
729
- item: e.items[m]
730
- }), m === 0 && w("reachStart"), m === e.items.length - 1 && w("reachEnd"), z());
725
+ function q(m) {
726
+ const g = Y(m);
727
+ g === s.value || e.items.length === 0 || (s.value = g, $("update:activeIndex", g), $("change", {
728
+ index: g,
729
+ item: e.items[g]
730
+ }), g === 0 && $("reachStart"), g === e.items.length - 1 && $("reachEnd"), H());
731
731
  }
732
- function B(f, m = {}) {
733
- const O = g.value;
734
- O && (typeof O.scrollTo == "function" ? O.scrollTo({ ...m, top: f }) : O.scrollTop = f);
732
+ function O(m, g = {}) {
733
+ const C = f.value;
734
+ C && (typeof C.scrollTo == "function" ? C.scrollTo({ ...g, top: m }) : C.scrollTop = m);
735
735
  }
736
- function q(f, m = {}) {
736
+ function J(m, g = {}) {
737
737
  if (e.items.length === 0) return;
738
- const O = K(f);
739
- Q(O), B(O * V.value, m);
740
- }
741
- function U(f) {
742
- if (V.value <= 0) return;
743
- const m = f.currentTarget.scrollTop;
744
- Q(Math.round(m / V.value));
745
- }
746
- function ie(f) {
747
- let m;
748
- f.key === "ArrowDown" || f.key === "PageDown" ? m = r.value + 1 : f.key === "ArrowUp" || f.key === "PageUp" ? m = r.value - 1 : f.key === "Home" ? m = 0 : f.key === "End" && (m = e.items.length - 1), m !== void 0 && (f.preventDefault(), q(m, { behavior: "smooth" }));
749
- }
750
- function F() {
751
- var m;
752
- const f = ((m = g.value) == null ? void 0 : m.clientHeight) ?? 0;
753
- C(g.value, e.height), !(f <= 0 || f === b.value) && (b.value = f, I(() => {
754
- B(r.value * f);
738
+ const C = Y(m);
739
+ q(C), O(C * k.value, g);
740
+ }
741
+ function le(m) {
742
+ if (k.value <= 0) return;
743
+ const g = m.currentTarget.scrollTop;
744
+ q(Math.round(g / k.value));
745
+ }
746
+ function ue(m) {
747
+ let g;
748
+ m.key === "ArrowDown" || m.key === "PageDown" ? g = s.value + 1 : m.key === "ArrowUp" || m.key === "PageUp" ? g = s.value - 1 : m.key === "Home" ? g = 0 : m.key === "End" && (g = e.items.length - 1), g !== void 0 && (m.preventDefault(), J(g, { behavior: "smooth" }));
749
+ }
750
+ function j() {
751
+ var g;
752
+ const m = ((g = f.value) == null ? void 0 : g.clientHeight) ?? 0;
753
+ F(f.value, e.height), !(m <= 0 || m === M.value) && (M.value = m, R(() => {
754
+ O(s.value * m);
755
755
  }));
756
756
  }
757
- return Z(
757
+ return ee(
758
758
  () => e.activeIndex,
759
- async (f) => {
760
- const m = K(f);
761
- m !== r.value && (r.value = m, await I(), B(m * V.value), z());
759
+ async (m) => {
760
+ const g = Y(m);
761
+ g !== s.value && (s.value = g, await R(), O(g * k.value), H());
762
762
  }
763
- ), Z(
763
+ ), ee(
764
764
  () => [
765
765
  e.hasMore,
766
766
  e.loading,
767
767
  e.loadMoreThreshold
768
768
  ],
769
- async ([f]) => {
770
- f || (N = -1), await I(), z();
769
+ async ([m]) => {
770
+ m || (G = -1), await R(), H();
771
771
  }
772
- ), Z(
772
+ ), ee(
773
773
  () => e.items.length,
774
774
  async () => {
775
- const f = K(r.value);
776
- e.items.length === 0 ? r.value !== 0 && (r.value = 0, w("update:activeIndex", 0)) : Q(f), await I(), B(f * V.value), z();
775
+ const m = Y(s.value);
776
+ e.items.length === 0 ? s.value !== 0 && (s.value = 0, $("update:activeIndex", 0)) : q(m), await R(), O(m * k.value), H();
777
777
  }
778
- ), pe(async () => {
779
- F(), typeof ResizeObserver < "u" && g.value && (H = new ResizeObserver(F), H.observe(g.value)), await I(), B(r.value * V.value), z();
780
- }), ye(() => {
781
- H && (H.disconnect(), H = void 0);
782
- }), W({
783
- scrollToIndex: q
784
- }), (f, m) => (x(), T("div", {
778
+ ), Se(async () => {
779
+ j(), typeof ResizeObserver < "u" && f.value && (B = new ResizeObserver(j), B.observe(f.value)), await R(), O(s.value * k.value), H();
780
+ }), Ie(() => {
781
+ B && (B.disconnect(), B = void 0);
782
+ }), X({
783
+ scrollToIndex: J
784
+ }), (m, g) => (x(), T("div", {
785
785
  ref_key: "viewport",
786
- ref: g,
786
+ ref: f,
787
787
  class: "vue-short-media-feed",
788
- style: R(ae.value),
788
+ style: D(te.value),
789
789
  role: "list",
790
790
  "aria-orientation": "vertical",
791
- "aria-label": n.ariaLabel,
791
+ "aria-label": o.ariaLabel,
792
792
  tabindex: "0",
793
- onScrollPassive: U,
794
- onKeydown: ie
793
+ onScrollPassive: le,
794
+ onKeydown: ue
795
795
  }, [
796
- n.items.length ? (x(), T(me, { key: 0 }, [
797
- Y.value > 0 ? (x(), T("div", {
796
+ o.items.length ? (x(), T(we, { key: 0 }, [
797
+ W.value > 0 ? (x(), T("div", {
798
798
  key: 0,
799
799
  class: "vue-short-media-feed__spacer",
800
- style: R({ height: `${Y.value}px` }),
800
+ style: D({ height: `${W.value}px` }),
801
801
  "aria-hidden": "true"
802
- }, null, 4)) : ve("", !0),
803
- (x(!0), T(me, null, Me(P.value, ({ item: O, index: oe }) => (x(), T("div", {
804
- key: v(L)(O, oe),
802
+ }, null, 4)) : me("", !0),
803
+ (x(!0), T(we, null, ze(A.value, ({ item: C, index: se }) => (x(), T("div", {
804
+ key: r(U)(C, se),
805
805
  class: "vue-short-media-feed__item",
806
- style: R({ height: `${V.value}px` }),
806
+ style: D({ height: `${k.value}px` }),
807
807
  role: "listitem",
808
- "aria-current": oe === r.value ? "true" : void 0,
809
- "aria-posinset": oe + 1,
810
- "aria-setsize": n.items.length
808
+ "aria-current": se === s.value ? "true" : void 0,
809
+ "aria-posinset": se + 1,
810
+ "aria-setsize": o.items.length
811
811
  }, [
812
- te(f.$slots, "default", {
813
- item: O,
814
- index: oe,
815
- active: oe === r.value
812
+ ne(m.$slots, "default", {
813
+ item: C,
814
+ index: se,
815
+ active: se === s.value
816
816
  })
817
- ], 12, Pe))), 128)),
818
- _.value > 0 ? (x(), T("div", {
817
+ ], 12, _e))), 128)),
818
+ Z.value > 0 ? (x(), T("div", {
819
819
  key: 1,
820
820
  class: "vue-short-media-feed__spacer",
821
- style: R({ height: `${_.value}px` }),
821
+ style: D({ height: `${Z.value}px` }),
822
822
  "aria-hidden": "true"
823
- }, null, 4)) : ve("", !0)
824
- ], 64)) : (x(), T("div", Ae, [
825
- te(f.$slots, "empty")
823
+ }, null, 4)) : me("", !0)
824
+ ], 64)) : (x(), T("div", qe, [
825
+ ne(m.$slots, "empty")
826
826
  ]))
827
- ], 44, De));
827
+ ], 44, Ze));
828
828
  }
829
- }), Ye = ["aria-label"], Fe = {
829
+ }), Qe = ["aria-label"], Xe = {
830
830
  key: 0,
831
831
  class: "vue-virtual-carousel__track",
832
832
  role: "list"
833
- }, We = ["aria-label", "aria-current"], _e = {
833
+ }, et = ["aria-label", "aria-current"], tt = {
834
834
  key: 1,
835
835
  class: "vue-virtual-carousel__empty"
836
- }, Ue = /* @__PURE__ */ ge({
836
+ }, lt = /* @__PURE__ */ be({
837
837
  name: "VirtualCarousel",
838
838
  __name: "VirtualCarousel",
839
839
  props: {
@@ -856,307 +856,307 @@ const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PU
856
856
  responsive: { default: void 0 }
857
857
  },
858
858
  emits: ["update:activeIndex", "change", "reachStart", "reachEnd", "loadMore"],
859
- setup(n, { expose: W, emit: k }) {
860
- const e = n, w = k, g = D(), b = D(0), r = D(0);
861
- let H, N = -1, C, L, A = !1;
862
- const h = D(!1), { getItemKey: V } = xe({
859
+ setup(o, { expose: X, emit: K }) {
860
+ const e = o, $ = K, f = N(), M = N(0), s = N(0);
861
+ let B, G = -1, F, U, _ = !1;
862
+ const p = N(!1), { getItemKey: k } = $e({
863
863
  componentName: "VirtualCarousel",
864
864
  items: () => e.items,
865
865
  itemKey: () => e.itemKey
866
- }), M = s(() => Math.max(0, b.value)), S = s(() => {
866
+ }), S = i(() => Math.max(0, M.value)), I = i(() => {
867
867
  if (!e.responsive || e.responsive.length === 0)
868
868
  return {
869
869
  slidesPerView: e.slidesPerView,
870
870
  slidesToScroll: e.slidesToScroll,
871
871
  gap: e.gap
872
872
  };
873
- const t = M.value, l = [...e.responsive].sort(
874
- (i, d) => d.breakpoint - i.breakpoint
873
+ const t = S.value, a = [...e.responsive].sort(
874
+ (v, V) => V.breakpoint - v.breakpoint
875
875
  );
876
- for (const i of l)
877
- if (t >= i.breakpoint)
876
+ for (const v of a)
877
+ if (t >= v.breakpoint)
878
878
  return {
879
- slidesPerView: i.slidesPerView ?? e.slidesPerView,
880
- slidesToScroll: i.slidesToScroll ?? e.slidesToScroll,
881
- gap: i.gap ?? e.gap
879
+ slidesPerView: v.slidesPerView ?? e.slidesPerView,
880
+ slidesToScroll: v.slidesToScroll ?? e.slidesToScroll,
881
+ gap: v.gap ?? e.gap
882
882
  };
883
883
  return {
884
884
  slidesPerView: e.slidesPerView,
885
885
  slidesToScroll: e.slidesToScroll,
886
886
  gap: e.gap
887
887
  };
888
- }), P = s(
888
+ }), A = i(
889
889
  () => Math.max(
890
890
  1,
891
891
  Math.floor(
892
- Number.isFinite(S.value.slidesPerView) ? S.value.slidesPerView : 1
892
+ Number.isFinite(I.value.slidesPerView) ? I.value.slidesPerView : 1
893
893
  )
894
894
  )
895
- ), Y = s(
895
+ ), W = i(
896
896
  () => Math.max(
897
897
  1,
898
898
  Math.floor(
899
- Number.isFinite(S.value.slidesToScroll) ? S.value.slidesToScroll : 1
899
+ Number.isFinite(I.value.slidesToScroll) ? I.value.slidesToScroll : 1
900
900
  )
901
901
  )
902
- ), _ = s(
903
- () => Math.max(0, Number.isFinite(S.value.gap) ? S.value.gap : 0)
904
- ), ae = s(
902
+ ), Z = i(
903
+ () => Math.max(0, Number.isFinite(I.value.gap) ? I.value.gap : 0)
904
+ ), te = i(
905
905
  () => Math.max(
906
906
  0,
907
907
  Math.floor(Number.isFinite(e.buffer) ? e.buffer : 0)
908
908
  )
909
- ), K = s(
909
+ ), Y = i(
910
910
  () => Math.max(
911
911
  0,
912
912
  Math.floor(
913
913
  Number.isFinite(e.loadMoreThreshold) ? e.loadMoreThreshold : 0
914
914
  )
915
915
  )
916
- ), z = s(() => Number.isFinite(e.autoplayDelay) ? Math.max(1, e.autoplayDelay) : 3e3), Q = s(() => {
917
- if (M.value <= 0) return 0;
918
- const t = (P.value - 1) * _.value;
916
+ ), H = i(() => Number.isFinite(e.autoplayDelay) ? Math.max(1, e.autoplayDelay) : 3e3), q = i(() => {
917
+ if (S.value <= 0) return 0;
918
+ const t = (A.value - 1) * Z.value;
919
919
  return Math.max(
920
920
  1,
921
- (M.value - t) / P.value
921
+ (S.value - t) / A.value
922
922
  );
923
- }), B = s(() => Q.value + _.value), q = s(
923
+ }), O = i(() => q.value + Z.value), J = i(
924
924
  () => Math.max(
925
925
  0,
926
- e.items.length - P.value
926
+ e.items.length - A.value
927
927
  )
928
- ), U = s(
929
- () => Math.max(0, r.value - ae.value)
930
- ), ie = s(
928
+ ), le = i(
929
+ () => Math.max(0, s.value - te.value)
930
+ ), ue = i(
931
931
  () => Math.min(
932
932
  e.items.length,
933
- r.value + P.value + ae.value
933
+ s.value + A.value + te.value
934
934
  )
935
- ), F = s(
936
- () => e.items.slice(U.value, ie.value).map((t, l) => ({
935
+ ), j = i(
936
+ () => e.items.slice(le.value, ue.value).map((t, a) => ({
937
937
  item: t,
938
- index: U.value + l
938
+ index: le.value + a
939
939
  }))
940
- ), f = s(() => e.items.length === 0 ? 0 : e.items.length * Q.value + (e.items.length - 1) * _.value), m = s(
941
- () => U.value * B.value
942
- ), O = s(
940
+ ), m = i(() => e.items.length === 0 ? 0 : e.items.length * q.value + (e.items.length - 1) * Z.value), g = i(
941
+ () => le.value * O.value
942
+ ), C = i(
943
943
  () => Math.max(
944
944
  0,
945
- f.value - ie.value * B.value
945
+ m.value - ue.value * O.value
946
946
  )
947
- ), oe = s(() => ({
948
- height: Te(e.height)
947
+ ), se = i(() => ({
948
+ height: Be(e.height)
949
949
  }));
950
- function le(t) {
950
+ function ae(t) {
951
951
  return Math.min(
952
- q.value,
952
+ J.value,
953
953
  Math.max(0, Math.floor(Number.isFinite(t) ? t : 0))
954
954
  );
955
955
  }
956
- r.value = le(e.activeIndex);
957
- function ue(t) {
958
- return t >= r.value && t < Math.min(
956
+ s.value = ae(e.activeIndex);
957
+ function fe(t) {
958
+ return t >= s.value && t < Math.min(
959
959
  e.items.length,
960
- r.value + P.value
960
+ s.value + A.value
961
961
  );
962
962
  }
963
- function X() {
964
- if (!e.hasMore || e.loading || N === e.items.length)
963
+ function oe() {
964
+ if (!e.hasMore || e.loading || G === e.items.length)
965
965
  return;
966
966
  const t = e.items.length === 0 ? -1 : Math.min(
967
967
  e.items.length - 1,
968
- r.value + P.value - 1
968
+ s.value + A.value - 1
969
969
  );
970
- e.items.length - 1 - t <= K.value && (N = e.items.length, w("loadMore"));
971
- }
972
- function ce(t) {
973
- const l = le(t);
974
- l === r.value || e.items.length === 0 || (r.value = l, w("update:activeIndex", l), w("change", {
975
- index: l,
976
- item: e.items[l]
977
- }), l === 0 && w("reachStart"), l === q.value && w("reachEnd"), X(), e.autoplay && !h.value && o());
978
- }
979
- function G(t, l = {}) {
980
- const i = g.value;
981
- i && (typeof i.scrollTo == "function" ? i.scrollTo({ ...l, left: t }) : i.scrollLeft = t);
982
- }
983
- function ne(t, l = {}) {
984
- if (e.items.length === 0 || B.value <= 0) return;
985
- const i = le(t);
986
- L = l.behavior === "smooth" ? i : void 0, ce(i), G(i * B.value, {
987
- ...l,
988
- behavior: l.behavior
970
+ e.items.length - 1 - t <= Y.value && (G = e.items.length, $("loadMore"));
971
+ }
972
+ function ie(t) {
973
+ const a = ae(t);
974
+ a === s.value || e.items.length === 0 || (s.value = a, $("update:activeIndex", a), $("change", {
975
+ index: a,
976
+ item: e.items[a]
977
+ }), a === 0 && $("reachStart"), a === J.value && $("reachEnd"), oe(), e.autoplay && !p.value && l());
978
+ }
979
+ function re(t, a = {}) {
980
+ const v = f.value;
981
+ v && (typeof v.scrollTo == "function" ? v.scrollTo({ ...a, left: t }) : v.scrollLeft = t);
982
+ }
983
+ function de(t, a = {}) {
984
+ if (e.items.length === 0 || O.value <= 0) return;
985
+ const v = ae(t);
986
+ U = a.behavior === "smooth" ? v : void 0, ie(v), re(v * O.value, {
987
+ ...a,
988
+ behavior: a.behavior
989
989
  });
990
990
  }
991
- function p(t = "smooth") {
992
- ne(
993
- r.value + Y.value,
991
+ function h(t = "smooth") {
992
+ de(
993
+ s.value + W.value,
994
994
  { behavior: t }
995
995
  );
996
996
  }
997
- function y(t = "smooth") {
998
- ne(
999
- r.value - Y.value,
997
+ function z(t = "smooth") {
998
+ de(
999
+ s.value - W.value,
1000
1000
  { behavior: t }
1001
1001
  );
1002
1002
  }
1003
- function o() {
1004
- c(), !(!e.autoplay || e.items.length === 0) && (C = setTimeout(() => {
1005
- r.value >= q.value ? e.autoplayLoop ? ne(0, { behavior: "smooth" }) : c() : p("smooth");
1006
- }, z.value));
1007
- }
1008
- function c() {
1009
- C !== void 0 && (clearTimeout(C), C = void 0);
1003
+ function l() {
1004
+ u(), !(!e.autoplay || e.items.length === 0) && (F = setTimeout(() => {
1005
+ s.value >= J.value ? e.autoplayLoop ? de(0, { behavior: "smooth" }) : u() : h("smooth");
1006
+ }, H.value));
1010
1007
  }
1011
1008
  function u() {
1012
- h.value = !0, e.pauseOnHover && c();
1009
+ F !== void 0 && (clearTimeout(F), F = void 0);
1010
+ }
1011
+ function c() {
1012
+ p.value = !0, e.pauseOnHover && u();
1013
1013
  }
1014
1014
  function E() {
1015
- h.value = !1, e.autoplay && o();
1016
- }
1017
- function $() {
1018
- L = void 0;
1019
- }
1020
- function j(t) {
1021
- if (B.value <= 0 || A) return;
1022
- const l = t.currentTarget.scrollLeft;
1023
- if (L !== void 0) {
1024
- const i = L * B.value;
1025
- if (Math.abs(l - i) > 1) return;
1026
- L = void 0;
1015
+ p.value = !1, e.autoplay && l();
1016
+ }
1017
+ function P() {
1018
+ U = void 0;
1019
+ }
1020
+ function b(t) {
1021
+ if (O.value <= 0 || _) return;
1022
+ const a = t.currentTarget.scrollLeft;
1023
+ if (U !== void 0) {
1024
+ const v = U * O.value;
1025
+ if (Math.abs(a - v) > 1) return;
1026
+ U = void 0;
1027
1027
  }
1028
- ce(Math.round(l / B.value));
1028
+ ie(Math.round(a / O.value));
1029
1029
  }
1030
- function se(t) {
1031
- t.key === "ArrowRight" || t.key === "PageDown" ? (t.preventDefault(), p()) : t.key === "ArrowLeft" || t.key === "PageUp" ? (t.preventDefault(), y()) : t.key === "Home" ? (t.preventDefault(), ne(0, { behavior: "smooth" })) : t.key === "End" && (t.preventDefault(), ne(q.value, { behavior: "auto" }));
1030
+ function L(t) {
1031
+ t.key === "ArrowRight" || t.key === "PageDown" ? (t.preventDefault(), h()) : t.key === "ArrowLeft" || t.key === "PageUp" ? (t.preventDefault(), z()) : t.key === "Home" ? (t.preventDefault(), de(0, { behavior: "smooth" })) : t.key === "End" && (t.preventDefault(), de(J.value, { behavior: "auto" }));
1032
1032
  }
1033
- function a() {
1034
- var l;
1035
- const t = ((l = g.value) == null ? void 0 : l.clientWidth) ?? 0;
1036
- t <= 0 || t === b.value || (A = !0, b.value = t, I(() => {
1037
- const i = le(r.value);
1038
- G(i * B.value), A = !1;
1033
+ function n() {
1034
+ var a;
1035
+ const t = ((a = f.value) == null ? void 0 : a.clientWidth) ?? 0;
1036
+ t <= 0 || t === M.value || (_ = !0, M.value = t, R(() => {
1037
+ const v = ae(s.value);
1038
+ re(v * O.value), _ = !1;
1039
1039
  }));
1040
1040
  }
1041
- return Z(
1041
+ return ee(
1042
1042
  () => e.activeIndex,
1043
1043
  async (t) => {
1044
- const l = le(t);
1045
- l !== r.value && ($(), r.value = l, await I(), G(l * B.value), X());
1044
+ const a = ae(t);
1045
+ a !== s.value && (P(), s.value = a, await R(), re(a * O.value), oe());
1046
1046
  }
1047
- ), Z(
1047
+ ), ee(
1048
1048
  () => [
1049
1049
  e.items.length,
1050
- S.value.slidesPerView,
1051
- S.value.gap,
1052
- S.value.slidesToScroll
1050
+ I.value.slidesPerView,
1051
+ I.value.gap,
1052
+ I.value.slidesToScroll
1053
1053
  ],
1054
1054
  async () => {
1055
- const t = le(r.value);
1056
- e.items.length === 0 ? r.value !== 0 && (r.value = 0, w("update:activeIndex", 0)) : ce(t), await I(), G(t * B.value), X(), e.autoplay && e.items.length > 0 && !h.value && o();
1055
+ const t = ae(s.value);
1056
+ e.items.length === 0 ? s.value !== 0 && (s.value = 0, $("update:activeIndex", 0)) : ie(t), await R(), re(t * O.value), oe(), e.autoplay && e.items.length > 0 && !p.value && l();
1057
1057
  }
1058
- ), Z(
1058
+ ), ee(
1059
1059
  () => e.responsive,
1060
1060
  () => {
1061
- I(() => {
1062
- const t = le(r.value);
1063
- G(t * B.value);
1061
+ R(() => {
1062
+ const t = ae(s.value);
1063
+ re(t * O.value);
1064
1064
  });
1065
1065
  },
1066
1066
  { deep: !0 }
1067
- ), Z(
1067
+ ), ee(
1068
1068
  () => [
1069
1069
  e.hasMore,
1070
1070
  e.loading,
1071
1071
  e.loadMoreThreshold
1072
1072
  ],
1073
1073
  async ([t]) => {
1074
- t || (N = -1), await I(), X();
1074
+ t || (G = -1), await R(), oe();
1075
1075
  }
1076
- ), Z(
1076
+ ), ee(
1077
1077
  () => e.autoplay,
1078
1078
  (t) => {
1079
- t && !h.value ? o() : c();
1079
+ t && !p.value ? l() : u();
1080
1080
  }
1081
- ), Z(
1081
+ ), ee(
1082
1082
  () => e.autoplayDelay,
1083
1083
  () => {
1084
- e.autoplay && !h.value && o();
1084
+ e.autoplay && !p.value && l();
1085
1085
  }
1086
- ), Z(
1086
+ ), ee(
1087
1087
  () => e.autoplayLoop,
1088
1088
  (t) => {
1089
- !e.autoplay || h.value || (!t && r.value >= q.value ? c() : o());
1089
+ !e.autoplay || p.value || (!t && s.value >= J.value ? u() : l());
1090
1090
  }
1091
- ), Z(
1091
+ ), ee(
1092
1092
  () => e.pauseOnHover,
1093
1093
  (t) => {
1094
- t && h.value ? c() : !t && e.autoplay && o();
1094
+ t && p.value ? u() : !t && e.autoplay && l();
1095
1095
  }
1096
- ), pe(async () => {
1097
- a(), typeof ResizeObserver < "u" && g.value && (H = new ResizeObserver(a), H.observe(g.value)), await I(), G(r.value * B.value), X(), e.autoplay && o();
1098
- }), ye(() => {
1099
- H && (H.disconnect(), H = void 0), c();
1100
- }), W({
1101
- next: p,
1102
- previous: y,
1103
- scrollToIndex: ne,
1104
- startAutoplay: o,
1105
- stopAutoplay: c
1106
- }), (t, l) => (x(), T("div", {
1096
+ ), Se(async () => {
1097
+ n(), typeof ResizeObserver < "u" && f.value && (B = new ResizeObserver(n), B.observe(f.value)), await R(), re(s.value * O.value), oe(), e.autoplay && l();
1098
+ }), Ie(() => {
1099
+ B && (B.disconnect(), B = void 0), u();
1100
+ }), X({
1101
+ next: h,
1102
+ previous: z,
1103
+ scrollToIndex: de,
1104
+ startAutoplay: l,
1105
+ stopAutoplay: u
1106
+ }), (t, a) => (x(), T("div", {
1107
1107
  ref_key: "viewport",
1108
- ref: g,
1108
+ ref: f,
1109
1109
  class: "vue-virtual-carousel",
1110
- style: R(oe.value),
1110
+ style: D(se.value),
1111
1111
  role: "region",
1112
1112
  "aria-roledescription": "carousel",
1113
- "aria-label": n.ariaLabel,
1113
+ "aria-label": o.ariaLabel,
1114
1114
  tabindex: "0",
1115
- onScrollPassive: j,
1116
- onPointerdown: $,
1117
- onWheelPassive: $,
1118
- onKeydown: se,
1119
- onMouseenter: u,
1115
+ onScrollPassive: b,
1116
+ onPointerdown: P,
1117
+ onWheelPassive: P,
1118
+ onKeydown: L,
1119
+ onMouseenter: c,
1120
1120
  onMouseleave: E
1121
1121
  }, [
1122
- n.items.length ? (x(), T("div", Fe, [
1123
- m.value > 0 ? (x(), T("div", {
1122
+ o.items.length ? (x(), T("div", Xe, [
1123
+ g.value > 0 ? (x(), T("div", {
1124
1124
  key: 0,
1125
1125
  class: "vue-virtual-carousel__spacer",
1126
- style: R({ flexBasis: `${m.value}px` }),
1126
+ style: D({ flexBasis: `${g.value}px` }),
1127
1127
  "aria-hidden": "true"
1128
- }, null, 4)) : ve("", !0),
1129
- (x(!0), T(me, null, Me(F.value, ({ item: i, index: d }) => (x(), T("div", {
1130
- key: v(V)(i, d),
1128
+ }, null, 4)) : me("", !0),
1129
+ (x(!0), T(we, null, ze(j.value, ({ item: v, index: V }) => (x(), T("div", {
1130
+ key: r(k)(v, V),
1131
1131
  class: "vue-virtual-carousel__item",
1132
- style: R({
1133
- flexBasis: `${Q.value}px`,
1134
- marginRight: d < n.items.length - 1 ? `${_.value}px` : "0px"
1132
+ style: D({
1133
+ flexBasis: `${q.value}px`,
1134
+ marginRight: V < o.items.length - 1 ? `${Z.value}px` : "0px"
1135
1135
  }),
1136
1136
  role: "listitem",
1137
1137
  "aria-roledescription": "slide",
1138
- "aria-label": `${d + 1} of ${n.items.length}`,
1139
- "aria-current": d === r.value ? "true" : void 0
1138
+ "aria-label": `${V + 1} of ${o.items.length}`,
1139
+ "aria-current": V === s.value ? "true" : void 0
1140
1140
  }, [
1141
- te(t.$slots, "default", {
1142
- item: i,
1143
- index: d,
1144
- active: d === r.value,
1145
- visible: ue(d)
1141
+ ne(t.$slots, "default", {
1142
+ item: v,
1143
+ index: V,
1144
+ active: V === s.value,
1145
+ visible: fe(V)
1146
1146
  })
1147
- ], 12, We))), 128)),
1148
- O.value > 0 ? (x(), T("div", {
1147
+ ], 12, et))), 128)),
1148
+ C.value > 0 ? (x(), T("div", {
1149
1149
  key: 1,
1150
1150
  class: "vue-virtual-carousel__spacer",
1151
- style: R({ flexBasis: `${O.value}px` }),
1151
+ style: D({ flexBasis: `${C.value}px` }),
1152
1152
  "aria-hidden": "true"
1153
- }, null, 4)) : ve("", !0)
1154
- ])) : (x(), T("div", _e, [
1155
- te(t.$slots, "empty")
1153
+ }, null, 4)) : me("", !0)
1154
+ ])) : (x(), T("div", tt, [
1155
+ ne(t.$slots, "empty")
1156
1156
  ]))
1157
- ], 44, Ye));
1157
+ ], 44, Qe));
1158
1158
  }
1159
- }), je = ["aria-label"], Ze = ["aria-posinset", "aria-setsize"], qe = /* @__PURE__ */ ge({
1159
+ }), at = ["aria-label"], ot = ["aria-posinset", "aria-setsize"], nt = /* @__PURE__ */ be({
1160
1160
  name: "VirtualScroll",
1161
1161
  __name: "VirtualScroll",
1162
1162
  props: {
@@ -1175,210 +1175,210 @@ const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PU
1175
1175
  pullRefreshThreshold: { default: 64 }
1176
1176
  },
1177
1177
  emits: ["scroll", "loadMore", "refresh"],
1178
- setup(n, { expose: W, emit: k }) {
1179
- const e = n, w = k, {
1180
- pulling: g,
1181
- pullDistance: b,
1182
- pullOffset: r,
1183
- pullProgress: H,
1184
- refreshMessage: N,
1185
- refreshThreshold: C,
1186
- handleTouchStart: L,
1187
- handleTouchMove: A,
1188
- handleTouchEnd: h,
1189
- handleTouchCancel: V
1190
- } = ke({
1178
+ setup(o, { expose: X, emit: K }) {
1179
+ const e = o, $ = K, {
1180
+ pulling: f,
1181
+ pullDistance: M,
1182
+ pullOffset: s,
1183
+ pullProgress: B,
1184
+ refreshMessage: G,
1185
+ refreshThreshold: F,
1186
+ handleTouchStart: U,
1187
+ handleTouchMove: _,
1188
+ handleTouchEnd: p,
1189
+ handleTouchCancel: k
1190
+ } = Oe({
1191
1191
  enabled: () => e.pullToRefresh,
1192
1192
  refreshing: () => e.refreshing,
1193
1193
  threshold: () => e.pullRefreshThreshold,
1194
- onRefresh: () => w("refresh")
1195
- }), M = D(), S = D(0), P = D(0);
1196
- let Y, _ = -1;
1197
- const ae = we(), { getItemKey: K } = xe({
1194
+ onRefresh: () => $("refresh")
1195
+ }), S = N(), I = N(0), A = N(0);
1196
+ let W, Z = -1;
1197
+ const te = Re(), { getItemKey: Y } = $e({
1198
1198
  componentName: "VirtualScroll",
1199
1199
  items: () => e.items,
1200
1200
  itemKey: () => e.itemKey
1201
- }), z = s(() => Math.max(1, e.itemSize)), Q = s(() => Math.max(0, Math.floor(e.overscan))), B = s(
1202
- () => e.items.length * z.value
1203
- ), q = s(
1204
- () => Math.max(1, e.loadingItemSize ?? z.value)
1205
- ), U = s(
1206
- () => B.value + (e.loading ? q.value : 0)
1207
- ), ie = s(() => P.value > 0 ? P.value : typeof e.height == "number" ? e.height : 0), F = s(
1201
+ }), H = i(() => Math.max(1, e.itemSize)), q = i(() => Math.max(0, Math.floor(e.overscan))), O = i(
1202
+ () => e.items.length * H.value
1203
+ ), J = i(
1204
+ () => Math.max(1, e.loadingItemSize ?? H.value)
1205
+ ), le = i(
1206
+ () => O.value + (e.loading ? J.value : 0)
1207
+ ), ue = i(() => A.value > 0 ? A.value : typeof e.height == "number" ? e.height : 0), j = i(
1208
1208
  () => Math.max(
1209
1209
  0,
1210
- Math.floor(S.value / z.value) - Q.value
1210
+ Math.floor(I.value / H.value) - q.value
1211
1211
  )
1212
- ), f = s(() => {
1213
- const p = Math.ceil(
1214
- (S.value + ie.value) / z.value
1212
+ ), m = i(() => {
1213
+ const h = Math.ceil(
1214
+ (I.value + ue.value) / H.value
1215
1215
  );
1216
1216
  return Math.min(
1217
1217
  e.items.length,
1218
- p + Q.value
1218
+ h + q.value
1219
1219
  );
1220
- }), m = s(
1221
- () => e.items.slice(F.value, f.value).map((p, y) => ({
1222
- item: p,
1223
- index: F.value + y
1220
+ }), g = i(
1221
+ () => e.items.slice(j.value, m.value).map((h, z) => ({
1222
+ item: h,
1223
+ index: j.value + z
1224
1224
  }))
1225
- ), O = s(() => ({
1226
- height: Te(e.height)
1227
- })), oe = s(() => ({
1228
- transform: `translateY(${F.value * z.value}px)`
1225
+ ), C = i(() => ({
1226
+ height: Be(e.height)
1227
+ })), se = i(() => ({
1228
+ transform: `translateY(${j.value * H.value}px)`
1229
1229
  }));
1230
- function le() {
1231
- var p;
1232
- P.value = ((p = M.value) == null ? void 0 : p.clientHeight) ?? 0, ae(M.value, e.height), I(X);
1233
- }
1234
- function ue(p) {
1235
- S.value = p.currentTarget.scrollTop, w("scroll", {
1236
- scrollTop: S.value,
1237
- startIndex: F.value,
1238
- endIndex: f.value
1239
- }), X();
1240
- }
1241
- function X() {
1242
- const p = M.value;
1243
- if (!p || !e.hasMore || e.loading || _ === e.items.length)
1230
+ function ae() {
1231
+ var h;
1232
+ A.value = ((h = S.value) == null ? void 0 : h.clientHeight) ?? 0, te(S.value, e.height), R(oe);
1233
+ }
1234
+ function fe(h) {
1235
+ I.value = h.currentTarget.scrollTop, $("scroll", {
1236
+ scrollTop: I.value,
1237
+ startIndex: j.value,
1238
+ endIndex: m.value
1239
+ }), oe();
1240
+ }
1241
+ function oe() {
1242
+ const h = S.value;
1243
+ if (!h || !e.hasMore || e.loading || Z === e.items.length)
1244
1244
  return;
1245
- const y = Math.max(0, e.loadMoreThreshold);
1246
- U.value - p.scrollTop - p.clientHeight <= y && (_ = e.items.length, w("loadMore"));
1247
- }
1248
- function ce(p, y = {}) {
1249
- const o = M.value;
1250
- if (!o) return;
1251
- const c = Math.max(0, U.value - o.clientHeight), u = Math.min(
1252
- Math.max(0, Number.isFinite(p) ? p : 0),
1253
- c
1254
- ), E = y.behavior ?? "auto";
1255
- E === "auto" && (S.value = u), o.scrollTo({ ...y, top: u, behavior: E });
1256
- }
1257
- function G(p, y = {}) {
1258
- const o = M.value;
1259
- if (!o || e.items.length === 0) return;
1260
- const c = Math.min(
1245
+ const z = Math.max(0, e.loadMoreThreshold);
1246
+ le.value - h.scrollTop - h.clientHeight <= z && (Z = e.items.length, $("loadMore"));
1247
+ }
1248
+ function ie(h, z = {}) {
1249
+ const l = S.value;
1250
+ if (!l) return;
1251
+ const u = Math.max(0, le.value - l.clientHeight), c = Math.min(
1252
+ Math.max(0, Number.isFinite(h) ? h : 0),
1253
+ u
1254
+ ), E = z.behavior ?? "auto";
1255
+ E === "auto" && (I.value = c), l.scrollTo({ ...z, top: c, behavior: E });
1256
+ }
1257
+ function re(h, z = {}) {
1258
+ const l = S.value;
1259
+ if (!l || e.items.length === 0) return;
1260
+ const u = Math.min(
1261
1261
  e.items.length - 1,
1262
- Math.max(0, Math.floor(p))
1263
- ), { align: u = "start", ...E } = y;
1264
- let $ = c * z.value;
1265
- u === "center" ? $ -= (o.clientHeight - z.value) / 2 : u === "end" && ($ -= o.clientHeight - z.value), o.scrollTo({
1262
+ Math.max(0, Math.floor(h))
1263
+ ), { align: c = "start", ...E } = z;
1264
+ let P = u * H.value;
1265
+ c === "center" ? P -= (l.clientHeight - H.value) / 2 : c === "end" && (P -= l.clientHeight - H.value), l.scrollTo({
1266
1266
  ...E,
1267
- top: Math.max(0, Math.min($, U.value - o.clientHeight))
1267
+ top: Math.max(0, Math.min(P, le.value - l.clientHeight))
1268
1268
  });
1269
1269
  }
1270
- function ne(p = "auto") {
1271
- var y;
1272
- (y = M.value) == null || y.scrollTo({ top: 0, behavior: p });
1270
+ function de(h = "auto") {
1271
+ var z;
1272
+ (z = S.value) == null || z.scrollTo({ top: 0, behavior: h });
1273
1273
  }
1274
- return Z(
1274
+ return ee(
1275
1275
  () => [e.items.length, e.itemSize],
1276
1276
  async () => {
1277
- await I();
1278
- const p = M.value;
1279
- if (!p) return;
1280
- const y = Math.max(0, U.value - p.clientHeight);
1281
- p.scrollTop > y && (p.scrollTop = y, S.value = y), X();
1277
+ await R();
1278
+ const h = S.value;
1279
+ if (!h) return;
1280
+ const z = Math.max(0, le.value - h.clientHeight);
1281
+ h.scrollTop > z && (h.scrollTop = z, I.value = z), oe();
1282
1282
  }
1283
- ), Z(
1283
+ ), ee(
1284
1284
  () => [e.hasMore, e.loading],
1285
- async ([p]) => {
1286
- p || (_ = -1), await I(), X();
1285
+ async ([h]) => {
1286
+ h || (Z = -1), await R(), oe();
1287
1287
  }
1288
- ), pe(() => {
1289
- le(), typeof ResizeObserver < "u" && M.value && (Y = new ResizeObserver(le), Y.observe(M.value)), I(X);
1290
- }), ye(() => {
1291
- Y && (Y.disconnect(), Y = void 0);
1292
- }), W({
1293
- scrollTo: ce,
1294
- scrollToIndex: G,
1295
- scrollToTop: ne
1296
- }), (p, y) => (x(), T("div", {
1288
+ ), Se(() => {
1289
+ ae(), typeof ResizeObserver < "u" && S.value && (W = new ResizeObserver(ae), W.observe(S.value)), R(oe);
1290
+ }), Ie(() => {
1291
+ W && (W.disconnect(), W = void 0);
1292
+ }), X({
1293
+ scrollTo: ie,
1294
+ scrollToIndex: re,
1295
+ scrollToTop: de
1296
+ }), (h, z) => (x(), T("div", {
1297
1297
  ref_key: "viewport",
1298
- ref: M,
1299
- class: Ie(["vue-virtual-scroll", { "vue-virtual-scroll--pulling": v(g) }]),
1300
- style: R(O.value),
1298
+ ref: S,
1299
+ class: Ee(["vue-virtual-scroll", { "vue-virtual-scroll--pulling": r(f) }]),
1300
+ style: D(C.value),
1301
1301
  role: "list",
1302
- "aria-label": n.ariaLabel,
1302
+ "aria-label": o.ariaLabel,
1303
1303
  tabindex: "0",
1304
- onScrollPassive: ue,
1305
- onTouchstartPassive: y[0] || (y[0] = //@ts-ignore
1306
- (...o) => v(L) && v(L)(...o)),
1307
- onTouchmove: y[1] || (y[1] = //@ts-ignore
1308
- (...o) => v(A) && v(A)(...o)),
1309
- onTouchend: y[2] || (y[2] = //@ts-ignore
1310
- (...o) => v(h) && v(h)(...o)),
1311
- onTouchcancel: y[3] || (y[3] = //@ts-ignore
1312
- (...o) => v(V) && v(V)(...o))
1304
+ onScrollPassive: fe,
1305
+ onTouchstartPassive: z[0] || (z[0] = //@ts-ignore
1306
+ (...l) => r(U) && r(U)(...l)),
1307
+ onTouchmove: z[1] || (z[1] = //@ts-ignore
1308
+ (...l) => r(_) && r(_)(...l)),
1309
+ onTouchend: z[2] || (z[2] = //@ts-ignore
1310
+ (...l) => r(p) && r(p)(...l)),
1311
+ onTouchcancel: z[3] || (z[3] = //@ts-ignore
1312
+ (...l) => r(k) && r(k)(...l))
1313
1313
  }, [
1314
- n.pullToRefresh || n.refreshing ? (x(), T("div", {
1314
+ o.pullToRefresh || o.refreshing ? (x(), T("div", {
1315
1315
  key: 0,
1316
1316
  class: "vue-virtual-scroll__refresh",
1317
- style: R({
1318
- height: `${v(C)}px`,
1319
- transform: `translateY(${v(r) - v(C)}px)`
1317
+ style: D({
1318
+ height: `${r(F)}px`,
1319
+ transform: `translateY(${r(s) - r(F)}px)`
1320
1320
  }),
1321
1321
  role: "status",
1322
1322
  "aria-live": "polite"
1323
1323
  }, [
1324
- te(p.$slots, "refresh", {
1325
- pullDistance: v(b),
1326
- progress: v(H),
1327
- refreshing: n.refreshing
1324
+ ne(h.$slots, "refresh", {
1325
+ pullDistance: r(M),
1326
+ progress: r(B),
1327
+ refreshing: o.refreshing
1328
1328
  }, () => [
1329
- he(ze(v(N)), 1)
1329
+ Me(Le(r(G)), 1)
1330
1330
  ])
1331
- ], 4)) : ve("", !0),
1332
- n.items.length || n.loading ? (x(), T("div", {
1331
+ ], 4)) : me("", !0),
1332
+ o.items.length || o.loading ? (x(), T("div", {
1333
1333
  key: 1,
1334
1334
  class: "vue-virtual-scroll__spacer",
1335
- style: R({
1336
- height: `${U.value}px`,
1337
- transform: `translateY(${v(r)}px)`
1335
+ style: D({
1336
+ height: `${le.value}px`,
1337
+ transform: `translateY(${r(s)}px)`
1338
1338
  })
1339
1339
  }, [
1340
- $e("div", {
1340
+ De("div", {
1341
1341
  class: "vue-virtual-scroll__content",
1342
- style: R(oe.value)
1342
+ style: D(se.value)
1343
1343
  }, [
1344
- (x(!0), T(me, null, Me(m.value, ({ item: o, index: c }) => (x(), T("div", {
1345
- key: v(K)(o, c),
1344
+ (x(!0), T(we, null, ze(g.value, ({ item: l, index: u }) => (x(), T("div", {
1345
+ key: r(Y)(l, u),
1346
1346
  class: "vue-virtual-scroll__item",
1347
- style: R({ height: `${z.value}px` }),
1347
+ style: D({ height: `${H.value}px` }),
1348
1348
  role: "listitem",
1349
- "aria-posinset": c + 1,
1350
- "aria-setsize": n.items.length
1349
+ "aria-posinset": u + 1,
1350
+ "aria-setsize": o.items.length
1351
1351
  }, [
1352
- te(p.$slots, "default", {
1353
- item: o,
1354
- index: c
1352
+ ne(h.$slots, "default", {
1353
+ item: l,
1354
+ index: u
1355
1355
  })
1356
- ], 12, Ze))), 128))
1356
+ ], 12, ot))), 128))
1357
1357
  ], 4),
1358
- n.loading ? (x(), T("div", {
1358
+ o.loading ? (x(), T("div", {
1359
1359
  key: 0,
1360
1360
  class: "vue-virtual-scroll__loading",
1361
- style: R({
1362
- height: `${q.value}px`,
1363
- transform: `translateY(${B.value}px)`
1361
+ style: D({
1362
+ height: `${J.value}px`,
1363
+ transform: `translateY(${O.value}px)`
1364
1364
  }),
1365
1365
  role: "status",
1366
1366
  "aria-live": "polite"
1367
1367
  }, [
1368
- te(p.$slots, "loading", {}, () => [
1369
- y[4] || (y[4] = he("Loading more…", -1))
1368
+ ne(h.$slots, "loading", {}, () => [
1369
+ z[4] || (z[4] = Me("Loading more…", -1))
1370
1370
  ])
1371
- ], 4)) : ve("", !0)
1371
+ ], 4)) : me("", !0)
1372
1372
  ], 4)) : (x(), T("div", {
1373
1373
  key: 2,
1374
1374
  class: "vue-virtual-scroll__empty",
1375
- style: R({ transform: `translateY(${v(r)}px)` })
1375
+ style: D({ transform: `translateY(${r(s)}px)` })
1376
1376
  }, [
1377
- te(p.$slots, "empty")
1377
+ ne(h.$slots, "empty")
1378
1378
  ], 4))
1379
- ], 46, je));
1379
+ ], 46, at));
1380
1380
  }
1381
- }), Ge = ["aria-label"], Je = ["aria-posinset", "aria-setsize"], Qe = /* @__PURE__ */ ge({
1381
+ }), it = ["aria-label"], st = ["aria-posinset", "aria-setsize"], rt = /* @__PURE__ */ be({
1382
1382
  name: "WindowDynamicVirtualScroll",
1383
1383
  __name: "WindowDynamicVirtualScroll",
1384
1384
  props: {
@@ -1396,310 +1396,603 @@ const Re = ["aria-label"], Ce = ["aria-posinset", "aria-setsize"], He = /* @__PU
1396
1396
  pullRefreshThreshold: { default: 64 }
1397
1397
  },
1398
1398
  emits: ["scroll", "loadMore", "refresh"],
1399
- setup(n, { expose: W, emit: k }) {
1400
- const e = n, w = k, g = D(), b = D(0), r = D(0), H = D(0), N = D(0), C = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Map();
1401
- let A, h, V = -1;
1402
- const { getItemKey: M } = xe({
1399
+ setup(o, { expose: X, emit: K }) {
1400
+ const e = o, $ = K, f = N(), M = N(0), s = N(0), B = N(0), G = N(0), F = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map();
1401
+ let p, k, S, I, A = !1, W = !1, Z = -1;
1402
+ const { getItemKey: te } = $e({
1403
1403
  componentName: "WindowDynamicVirtualScroll",
1404
1404
  items: () => e.items,
1405
1405
  itemKey: () => e.itemKey
1406
- }), {
1407
- pulling: S,
1408
- pullDistance: P,
1409
- pullOffset: Y,
1410
- pullProgress: _,
1411
- refreshMessage: ae,
1412
- refreshThreshold: K,
1413
- handleTouchStart: z,
1414
- handleTouchMove: Q,
1415
- handleTouchEnd: B,
1416
- handleTouchCancel: q
1417
- } = ke({
1406
+ });
1407
+ function Y(d) {
1408
+ return typeof window.requestAnimationFrame == "function" ? {
1409
+ id: window.requestAnimationFrame(d),
1410
+ type: "animation"
1411
+ } : {
1412
+ id: window.setTimeout(d, 0),
1413
+ type: "timeout"
1414
+ };
1415
+ }
1416
+ function H(d) {
1417
+ d && (d.type === "animation" ? window.cancelAnimationFrame(d.id) : window.clearTimeout(d.id));
1418
+ }
1419
+ const {
1420
+ pulling: q,
1421
+ pullDistance: O,
1422
+ pullOffset: J,
1423
+ pullProgress: le,
1424
+ refreshMessage: ue,
1425
+ refreshThreshold: j,
1426
+ handleTouchStart: m,
1427
+ handleTouchMove: g,
1428
+ handleTouchEnd: C,
1429
+ handleTouchCancel: se
1430
+ } = Oe({
1418
1431
  enabled: () => e.pullToRefresh,
1419
1432
  refreshing: () => e.refreshing,
1420
1433
  threshold: () => e.pullRefreshThreshold,
1421
- onRefresh: () => w("refresh"),
1434
+ onRefresh: () => $("refresh"),
1422
1435
  scrollTop: () => typeof window > "u" ? 0 : Math.max(0, window.scrollY)
1423
- }), U = s(
1436
+ }), ae = i(
1424
1437
  () => Math.max(1, e.estimatedItemSize)
1425
- ), ie = s(
1426
- () => Math.max(1, e.loadingItemSize ?? U.value)
1427
- ), F = s(() => Math.max(0, Math.floor(e.overscan))), f = s(() => {
1428
- N.value;
1429
- const a = new Array(e.items.length + 1), t = new Array(e.items.length);
1430
- a[0] = 0;
1431
- for (let l = 0; l < e.items.length; l += 1) {
1432
- const i = M(e.items[l], l), d = C.get(i) ?? U.value;
1433
- t[l] = d, a[l + 1] = a[l] + d;
1438
+ ), fe = i(
1439
+ () => Math.max(1, e.loadingItemSize ?? ae.value)
1440
+ ), oe = i(() => Math.max(0, Math.floor(e.overscan))), ie = i(() => {
1441
+ G.value;
1442
+ const d = new Array(e.items.length + 1), w = new Array(e.items.length);
1443
+ d[0] = 0;
1444
+ for (let y = 0; y < e.items.length; y += 1) {
1445
+ const ce = te(e.items[y], y), Q = F.get(ce) ?? ae.value;
1446
+ w[y] = Q, d[y + 1] = d[y] + Q;
1434
1447
  }
1435
1448
  return {
1436
- offsets: a,
1437
- sizes: t,
1438
- total: a[e.items.length] ?? 0
1449
+ offsets: d,
1450
+ sizes: w,
1451
+ total: d[e.items.length] ?? 0
1439
1452
  };
1440
- }), m = s(
1441
- () => f.value.total + (e.loading ? ie.value : 0)
1442
- ), O = s(() => {
1443
- const a = /* @__PURE__ */ new Map();
1444
- return e.items.forEach((t, l) => {
1445
- a.set(M(t, l), l);
1446
- }), a;
1447
- }), oe = s(
1448
- () => Math.max(0, b.value - H.value)
1453
+ }), re = i(
1454
+ () => ie.value.total + (e.loading ? fe.value : 0)
1455
+ ), de = i(() => {
1456
+ const d = /* @__PURE__ */ new Map();
1457
+ return e.items.forEach((w, y) => {
1458
+ d.set(te(w, y), y);
1459
+ }), d;
1460
+ }), h = i(
1461
+ () => Math.max(0, M.value - B.value)
1449
1462
  );
1450
- function le(a) {
1463
+ function z(d) {
1451
1464
  if (e.items.length === 0) return 0;
1452
- const t = f.value.offsets;
1453
- let l = 0, i = e.items.length;
1454
- for (; l < i; ) {
1455
- const d = Math.floor((l + i) / 2);
1456
- t[d + 1] <= a ? l = d + 1 : i = d;
1465
+ const w = ie.value.offsets;
1466
+ let y = 0, ce = e.items.length;
1467
+ for (; y < ce; ) {
1468
+ const Q = Math.floor((y + ce) / 2);
1469
+ w[Q + 1] <= d ? y = Q + 1 : ce = Q;
1457
1470
  }
1458
- return Math.min(l, e.items.length - 1);
1471
+ return Math.min(y, e.items.length - 1);
1459
1472
  }
1460
- const ue = s(
1473
+ const l = i(
1461
1474
  () => Math.max(
1462
1475
  0,
1463
- le(oe.value) - F.value
1476
+ z(h.value) - oe.value
1464
1477
  )
1465
- ), X = s(() => {
1478
+ ), u = i(() => {
1466
1479
  if (e.items.length === 0) return 0;
1467
- const a = b.value + r.value - H.value, t = Math.max(
1468
- U.value,
1469
- a
1470
- ), l = le(t) + 1;
1480
+ const d = M.value + s.value - B.value, w = Math.max(
1481
+ ae.value,
1482
+ d
1483
+ ), y = z(w) + 1;
1471
1484
  return Math.min(
1472
1485
  e.items.length,
1473
- l + F.value
1486
+ y + oe.value
1474
1487
  );
1475
- }), ce = s(
1476
- () => e.items.slice(ue.value, X.value).map((a, t) => {
1477
- const l = ue.value + t;
1488
+ }), c = i(
1489
+ () => e.items.slice(l.value, u.value).map((d, w) => {
1490
+ const y = l.value + w;
1478
1491
  return {
1479
- item: a,
1480
- index: l,
1481
- key: M(a, l),
1482
- top: f.value.offsets[l]
1492
+ item: d,
1493
+ index: y,
1494
+ key: te(d, y),
1495
+ top: ie.value.offsets[y]
1483
1496
  };
1484
1497
  })
1485
1498
  );
1486
- function G() {
1487
- typeof window > "u" || (b.value = Math.max(0, window.scrollY), r.value = window.innerHeight, g.value && (H.value = g.value.getBoundingClientRect().top + b.value));
1488
- }
1489
- function ne() {
1490
- w("scroll", {
1491
- scrollTop: oe.value,
1492
- startIndex: ue.value,
1493
- endIndex: X.value
1499
+ function E() {
1500
+ typeof window > "u" || (M.value = Math.max(0, window.scrollY), s.value = window.innerHeight, f.value && (B.value = f.value.getBoundingClientRect().top + M.value));
1501
+ }
1502
+ function P() {
1503
+ $("scroll", {
1504
+ scrollTop: h.value,
1505
+ startIndex: l.value,
1506
+ endIndex: u.value
1494
1507
  });
1495
1508
  }
1496
- function p() {
1497
- G(), ne(), y();
1509
+ function b(d = !1) {
1510
+ W && (A || (A = d), !S && (S = Y(() => {
1511
+ S = void 0, E(), A && (A = !1, P()), t();
1512
+ })));
1498
1513
  }
1499
- function y() {
1500
- if (typeof window > "u" || !e.hasMore || e.loading || V === e.items.length)
1501
- return;
1502
- const a = Math.max(0, e.loadMoreThreshold), t = H.value + m.value, l = b.value + r.value;
1503
- t - l <= a && (V = e.items.length, w("loadMore"));
1514
+ function L() {
1515
+ b(!0);
1504
1516
  }
1505
- function o(a) {
1506
- const t = a.borderBoxSize;
1507
- if (t) {
1508
- const l = Array.isArray(t) ? t[0] : t;
1509
- if (l != null && l.blockSize) return l.blockSize;
1517
+ function n() {
1518
+ b();
1519
+ }
1520
+ function t() {
1521
+ if (typeof window > "u" || !e.hasMore || e.loading || Z === e.items.length)
1522
+ return;
1523
+ const d = Math.max(0, e.loadMoreThreshold), w = B.value + re.value, y = M.value + s.value;
1524
+ w - y <= d && (Z = e.items.length, $("loadMore"));
1525
+ }
1526
+ function a(d) {
1527
+ const w = d.borderBoxSize;
1528
+ if (w) {
1529
+ const y = Array.isArray(w) ? w[0] : w;
1530
+ if (y != null && y.blockSize) return y.blockSize;
1510
1531
  }
1511
- return a.contentRect.height;
1512
- }
1513
- function c(a) {
1514
- const t = f.value;
1515
- let l = 0, i = !1;
1516
- for (const d of a) {
1517
- const ee = d.target, J = L.get(ee), re = o(d);
1518
- if (J === void 0 || re <= 0) continue;
1519
- const de = C.get(J) ?? U.value;
1520
- if (Math.abs(de - re) < 0.5) continue;
1521
- const fe = O.value.get(J);
1522
- fe !== void 0 && t.offsets[fe + 1] <= oe.value && (l += re - de), C.set(J, re), i = !0;
1532
+ return d.contentRect.height;
1533
+ }
1534
+ function v(d) {
1535
+ const w = ie.value;
1536
+ let y = 0, ce = !1;
1537
+ for (const Q of d) {
1538
+ const pe = Q.target, ye = U.get(pe), ke = a(Q);
1539
+ if (ye === void 0 || ke <= 0) continue;
1540
+ const He = F.get(ye) ?? ae.value;
1541
+ if (Math.abs(He - ke) < 0.5) continue;
1542
+ const Ve = de.value.get(ye);
1543
+ Ve !== void 0 && w.offsets[Ve + 1] <= h.value && (y += ke - He), F.set(ye, ke), ce = !0;
1523
1544
  }
1524
- i && (N.value += 1, I(() => {
1525
- if (l !== 0 && typeof window < "u") {
1526
- const d = Math.max(
1527
- 0,
1528
- b.value + l
1529
- );
1530
- b.value = d, window.scrollTo({ top: d, behavior: "auto" });
1545
+ ce && (G.value += 1, R(() => {
1546
+ if (W) {
1547
+ if (y !== 0 && typeof window < "u") {
1548
+ const Q = Math.max(
1549
+ 0,
1550
+ M.value + y
1551
+ );
1552
+ M.value = Q, window.scrollTo({ top: Q, behavior: "auto" });
1553
+ }
1554
+ E(), t();
1531
1555
  }
1532
- G(), y();
1533
1556
  }));
1534
1557
  }
1535
- function u(a, t) {
1536
- a instanceof HTMLElement && (L.set(a, t), h == null || h.observe(a));
1558
+ function V(d) {
1559
+ if (W) {
1560
+ for (const w of d)
1561
+ _.set(w.target, w);
1562
+ I || (I = Y(() => {
1563
+ I = void 0;
1564
+ const w = Array.from(_.values());
1565
+ _.clear(), v(w);
1566
+ }));
1567
+ }
1537
1568
  }
1538
- function E() {
1539
- for (const [a] of L)
1540
- a.isConnected || (h == null || h.unobserve(a), L.delete(a));
1569
+ function he(d, w) {
1570
+ d instanceof HTMLElement && (U.set(d, w), k == null || k.observe(d));
1541
1571
  }
1542
- function $(a, t = {}) {
1543
- if (typeof window > "u") return;
1544
- G();
1545
- const l = Math.max(0, m.value - r.value), i = Math.min(
1546
- Math.max(0, Number.isFinite(a) ? a : 0),
1547
- l
1548
- ), d = Math.max(0, H.value + i), ee = t.behavior ?? "auto";
1549
- ee === "auto" && (b.value = d), window.scrollTo({ ...t, top: d, behavior: ee });
1572
+ function ve() {
1573
+ for (const [d] of U)
1574
+ d.isConnected || (k == null || k.unobserve(d), U.delete(d));
1550
1575
  }
1551
- function j(a, t = {}) {
1576
+ function ge(d, w = {}) {
1577
+ if (typeof window > "u") return;
1578
+ E();
1579
+ const y = Math.max(0, re.value - s.value), ce = Math.min(
1580
+ Math.max(0, Number.isFinite(d) ? d : 0),
1581
+ y
1582
+ ), Q = Math.max(0, B.value + ce), pe = w.behavior ?? "auto";
1583
+ pe === "auto" && (M.value = Q), window.scrollTo({ ...w, top: Q, behavior: pe });
1584
+ }
1585
+ function xe(d, w = {}) {
1552
1586
  if (typeof window > "u" || e.items.length === 0) return;
1553
- G();
1554
- const l = Math.min(
1587
+ E();
1588
+ const y = Math.min(
1555
1589
  e.items.length - 1,
1556
- Math.max(0, Math.floor(a))
1557
- ), { align: i = "start", ...d } = t, ee = f.value.sizes[l];
1558
- let J = H.value + f.value.offsets[l];
1559
- i === "center" ? J -= (r.value - ee) / 2 : i === "end" && (J -= r.value - ee);
1560
- const re = Math.max(
1561
- H.value,
1562
- H.value + m.value - r.value
1563
- ), de = Math.max(0, Math.min(J, re)), fe = d.behavior ?? "auto";
1564
- fe === "auto" && (b.value = de), window.scrollTo({
1565
- ...d,
1566
- top: de,
1567
- behavior: fe
1590
+ Math.max(0, Math.floor(d))
1591
+ ), { align: ce = "start", ...Q } = w, pe = ie.value.sizes[y];
1592
+ let ye = B.value + ie.value.offsets[y];
1593
+ ce === "center" ? ye -= (s.value - pe) / 2 : ce === "end" && (ye -= s.value - pe);
1594
+ const ke = Math.max(
1595
+ B.value,
1596
+ B.value + re.value - s.value
1597
+ ), He = Math.max(0, Math.min(ye, ke)), Ve = Q.behavior ?? "auto";
1598
+ Ve === "auto" && (M.value = He), window.scrollTo({
1599
+ ...Q,
1600
+ top: He,
1601
+ behavior: Ve
1568
1602
  });
1569
1603
  }
1570
- function se(a = "auto") {
1571
- typeof window > "u" || (G(), window.scrollTo({ top: Math.max(0, H.value), behavior: a }));
1604
+ function Te(d = "auto") {
1605
+ typeof window > "u" || (E(), window.scrollTo({ top: Math.max(0, B.value), behavior: d }));
1572
1606
  }
1573
- return Z(
1607
+ return ee(
1574
1608
  () => e.itemKey,
1575
1609
  () => {
1576
- C.clear(), N.value += 1;
1610
+ F.clear(), G.value += 1, Z = -1;
1577
1611
  }
1578
- ), Z(
1579
- () => e.items.length,
1580
- async () => {
1581
- const a = new Set(
1582
- e.items.map((t, l) => M(t, l))
1583
- );
1584
- for (const t of C.keys())
1585
- a.has(t) || C.delete(t);
1586
- N.value += 1, await I(), G(), y();
1612
+ ), ee(
1613
+ () => e.items.map((d, w) => te(d, w)),
1614
+ async (d, w) => {
1615
+ const y = d.length !== w.length || d.some((Q, pe) => Q !== w[pe]), ce = new Set(d);
1616
+ for (const Q of F.keys())
1617
+ ce.has(Q) || F.delete(Q);
1618
+ y && (Z = -1), G.value += 1, await R(), W && (E(), t());
1587
1619
  }
1588
- ), Z(
1620
+ ), ee(
1589
1621
  () => [e.hasMore, e.loading],
1590
- async ([a]) => {
1591
- a || (V = -1), await I(), G(), y();
1622
+ async ([d]) => {
1623
+ d || (Z = -1), await R(), W && (E(), t());
1592
1624
  }
1593
- ), pe(() => {
1594
- if (G(), window.addEventListener("scroll", p, { passive: !0 }), window.addEventListener("resize", p, { passive: !0 }), typeof ResizeObserver < "u") {
1595
- A = new ResizeObserver(() => {
1596
- G(), y();
1597
- }), h = new ResizeObserver(c), g.value && A.observe(g.value);
1598
- for (const [a] of L)
1599
- h.observe(a);
1625
+ ), Se(() => {
1626
+ if (W = !0, E(), window.addEventListener("scroll", L, { passive: !0 }), window.addEventListener("resize", n, { passive: !0 }), typeof ResizeObserver < "u") {
1627
+ p = new ResizeObserver(() => {
1628
+ b();
1629
+ }), k = new ResizeObserver(V), f.value && p.observe(f.value);
1630
+ for (const [d] of U)
1631
+ k.observe(d);
1600
1632
  }
1601
- I(y);
1602
- }), Se(E), ye(() => {
1603
- window.removeEventListener("scroll", p), window.removeEventListener("resize", p), A && (A.disconnect(), A = void 0), h && (h.disconnect(), h = void 0), L.clear();
1604
- }), W({
1605
- scrollTo: $,
1606
- scrollToIndex: j,
1607
- scrollToTop: se
1608
- }), (a, t) => (x(), T("div", {
1633
+ R(() => {
1634
+ W && t();
1635
+ });
1636
+ }), Ce(ve), Ie(() => {
1637
+ W = !1, window.removeEventListener("scroll", L), window.removeEventListener("resize", n), H(S), H(I), S = void 0, I = void 0, A = !1, _.clear(), p && (p.disconnect(), p = void 0), k && (k.disconnect(), k = void 0), U.clear();
1638
+ }), X({
1639
+ scrollTo: ge,
1640
+ scrollToIndex: xe,
1641
+ scrollToTop: Te
1642
+ }), (d, w) => (x(), T("div", {
1609
1643
  ref_key: "root",
1610
- ref: g,
1611
- class: Ie(["vue-window-dynamic-virtual-scroll", { "vue-window-dynamic-virtual-scroll--pulling": v(S) }]),
1644
+ ref: f,
1645
+ class: Ee(["vue-window-dynamic-virtual-scroll", { "vue-window-dynamic-virtual-scroll--pulling": r(q) }]),
1612
1646
  role: "list",
1613
- "aria-label": n.ariaLabel,
1614
- onTouchstartPassive: t[0] || (t[0] = //@ts-ignore
1615
- (...l) => v(z) && v(z)(...l)),
1616
- onTouchmove: t[1] || (t[1] = //@ts-ignore
1617
- (...l) => v(Q) && v(Q)(...l)),
1618
- onTouchend: t[2] || (t[2] = //@ts-ignore
1619
- (...l) => v(B) && v(B)(...l)),
1620
- onTouchcancel: t[3] || (t[3] = //@ts-ignore
1621
- (...l) => v(q) && v(q)(...l))
1647
+ "aria-label": o.ariaLabel,
1648
+ onTouchstartPassive: w[0] || (w[0] = //@ts-ignore
1649
+ (...y) => r(m) && r(m)(...y)),
1650
+ onTouchmove: w[1] || (w[1] = //@ts-ignore
1651
+ (...y) => r(g) && r(g)(...y)),
1652
+ onTouchend: w[2] || (w[2] = //@ts-ignore
1653
+ (...y) => r(C) && r(C)(...y)),
1654
+ onTouchcancel: w[3] || (w[3] = //@ts-ignore
1655
+ (...y) => r(se) && r(se)(...y))
1622
1656
  }, [
1623
- n.pullToRefresh || n.refreshing ? (x(), T("div", {
1657
+ o.pullToRefresh || o.refreshing ? (x(), T("div", {
1624
1658
  key: 0,
1625
1659
  class: "vue-window-dynamic-virtual-scroll__refresh",
1626
- style: R({
1627
- height: `${v(K)}px`,
1628
- transform: `translateY(${v(Y) - v(K)}px)`
1660
+ style: D({
1661
+ height: `${r(j)}px`,
1662
+ transform: `translateY(${r(J) - r(j)}px)`
1629
1663
  }),
1630
1664
  role: "status",
1631
1665
  "aria-live": "polite"
1632
1666
  }, [
1633
- te(a.$slots, "refresh", {
1634
- pullDistance: v(P),
1635
- progress: v(_),
1636
- refreshing: n.refreshing
1667
+ ne(d.$slots, "refresh", {
1668
+ pullDistance: r(O),
1669
+ progress: r(le),
1670
+ refreshing: o.refreshing
1637
1671
  }, () => [
1638
- he(ze(v(ae)), 1)
1672
+ Me(Le(r(ue)), 1)
1639
1673
  ])
1640
- ], 4)) : ve("", !0),
1641
- n.items.length || n.loading ? (x(), T("div", {
1674
+ ], 4)) : me("", !0),
1675
+ o.items.length || o.loading ? (x(), T("div", {
1642
1676
  key: 1,
1643
1677
  class: "vue-window-dynamic-virtual-scroll__spacer",
1644
- style: R({
1645
- height: `${m.value}px`,
1646
- transform: `translateY(${v(Y)}px)`
1678
+ style: D({
1679
+ height: `${re.value}px`,
1680
+ transform: `translateY(${r(J)}px)`
1647
1681
  })
1648
1682
  }, [
1649
- (x(!0), T(me, null, Me(ce.value, ({ item: l, index: i, key: d, top: ee }) => (x(), T("div", {
1650
- key: d,
1683
+ (x(!0), T(we, null, ze(c.value, ({ item: y, index: ce, key: Q, top: pe }) => (x(), T("div", {
1684
+ key: Q,
1651
1685
  ref_for: !0,
1652
- ref: (J) => u(J, d),
1686
+ ref: (ye) => he(ye, Q),
1653
1687
  class: "vue-window-dynamic-virtual-scroll__item",
1654
- style: R({ transform: `translateY(${ee}px)` }),
1688
+ style: D({ transform: `translateY(${pe}px)` }),
1655
1689
  role: "listitem",
1656
- "aria-posinset": i + 1,
1657
- "aria-setsize": n.items.length
1690
+ "aria-posinset": ce + 1,
1691
+ "aria-setsize": o.items.length
1658
1692
  }, [
1659
- te(a.$slots, "default", {
1660
- item: l,
1661
- index: i
1693
+ ne(d.$slots, "default", {
1694
+ item: y,
1695
+ index: ce
1662
1696
  })
1663
- ], 12, Je))), 128)),
1664
- n.loading ? (x(), T("div", {
1697
+ ], 12, st))), 128)),
1698
+ o.loading ? (x(), T("div", {
1665
1699
  key: 0,
1666
1700
  class: "vue-window-dynamic-virtual-scroll__loading",
1667
- style: R({
1668
- height: `${ie.value}px`,
1669
- transform: `translateY(${f.value.total}px)`
1701
+ style: D({
1702
+ height: `${fe.value}px`,
1703
+ transform: `translateY(${ie.value.total}px)`
1670
1704
  }),
1671
1705
  role: "status",
1672
1706
  "aria-live": "polite"
1673
1707
  }, [
1674
- te(a.$slots, "loading", {}, () => [
1675
- t[4] || (t[4] = he("Loading more…", -1))
1708
+ ne(d.$slots, "loading", {}, () => [
1709
+ w[4] || (w[4] = Me("Loading more…", -1))
1676
1710
  ])
1677
- ], 4)) : ve("", !0)
1711
+ ], 4)) : me("", !0)
1678
1712
  ], 4)) : (x(), T("div", {
1679
1713
  key: 2,
1680
1714
  class: "vue-window-dynamic-virtual-scroll__empty",
1681
- style: R({ transform: `translateY(${v(Y)}px)` })
1715
+ style: D({ transform: `translateY(${r(J)}px)` })
1716
+ }, [
1717
+ ne(d.$slots, "empty")
1718
+ ], 4))
1719
+ ], 42, it));
1720
+ }
1721
+ }), ut = ["aria-label"], ct = ["aria-posinset", "aria-setsize"], dt = /* @__PURE__ */ be({
1722
+ name: "WindowGirdVirtualScroll",
1723
+ __name: "WindowGirdVirtualScroll",
1724
+ props: {
1725
+ items: {},
1726
+ itemSize: {},
1727
+ columns: { default: 2 },
1728
+ gap: { default: 0 },
1729
+ overscan: { default: 1 },
1730
+ itemKey: { default: void 0 },
1731
+ ariaLabel: { default: "Window virtual grid" },
1732
+ hasMore: { type: Boolean, default: !1 },
1733
+ loading: { type: Boolean, default: !1 },
1734
+ loadingItemSize: { default: void 0 },
1735
+ loadMoreThreshold: { default: 200 },
1736
+ pullToRefresh: { type: Boolean, default: !1 },
1737
+ refreshing: { type: Boolean, default: !1 },
1738
+ pullRefreshThreshold: { default: 64 }
1739
+ },
1740
+ emits: ["scroll", "loadMore", "refresh"],
1741
+ setup(o, { expose: X, emit: K }) {
1742
+ const e = o, $ = K, f = N(), M = N(0), s = N(0), B = N(0);
1743
+ let G, F = -1;
1744
+ const { getItemKey: U } = $e({
1745
+ componentName: "WindowGirdVirtualScroll",
1746
+ items: () => e.items,
1747
+ itemKey: () => e.itemKey
1748
+ }), {
1749
+ pulling: _,
1750
+ pullDistance: p,
1751
+ pullOffset: k,
1752
+ pullProgress: S,
1753
+ refreshMessage: I,
1754
+ refreshThreshold: A,
1755
+ handleTouchStart: W,
1756
+ handleTouchMove: Z,
1757
+ handleTouchEnd: te,
1758
+ handleTouchCancel: Y
1759
+ } = Oe({
1760
+ enabled: () => e.pullToRefresh,
1761
+ refreshing: () => e.refreshing,
1762
+ threshold: () => e.pullRefreshThreshold,
1763
+ onRefresh: () => $("refresh"),
1764
+ scrollTop: () => typeof window > "u" ? 0 : Math.max(0, window.scrollY)
1765
+ }), H = i(() => Math.max(1, e.itemSize)), q = i(
1766
+ () => Math.max(1, Math.floor(e.columns))
1767
+ ), O = i(() => Math.max(0, e.gap)), J = i(() => Math.max(0, Math.floor(e.overscan))), le = i(
1768
+ () => Math.max(1, e.loadingItemSize ?? H.value)
1769
+ ), ue = i(
1770
+ () => H.value + O.value
1771
+ ), j = i(
1772
+ () => Math.ceil(e.items.length / q.value)
1773
+ ), m = i(() => j.value === 0 ? 0 : j.value * H.value + (j.value - 1) * O.value), g = i(
1774
+ () => m.value + (e.items.length ? O.value : 0)
1775
+ ), C = i(
1776
+ () => m.value + (e.loading ? le.value + (e.items.length ? O.value : 0) : 0)
1777
+ ), se = i(
1778
+ () => Math.max(0, M.value - B.value)
1779
+ ), ae = i(
1780
+ () => Math.max(
1781
+ 0,
1782
+ Math.floor(se.value / ue.value) - J.value
1783
+ )
1784
+ ), fe = i(() => {
1785
+ if (j.value === 0) return 0;
1786
+ const b = Math.max(
1787
+ H.value,
1788
+ M.value + s.value - B.value
1789
+ ), L = Math.ceil(
1790
+ (b + O.value) / ue.value
1791
+ );
1792
+ return Math.min(
1793
+ j.value,
1794
+ L + J.value
1795
+ );
1796
+ }), oe = i(
1797
+ () => Math.min(e.items.length, ae.value * q.value)
1798
+ ), ie = i(
1799
+ () => Math.min(e.items.length, fe.value * q.value)
1800
+ ), re = i(
1801
+ () => e.items.slice(oe.value, ie.value).map((b, L) => {
1802
+ const n = oe.value + L;
1803
+ return {
1804
+ item: b,
1805
+ index: n,
1806
+ key: U(b, n),
1807
+ rowIndex: Math.floor(n / q.value),
1808
+ columnIndex: n % q.value
1809
+ };
1810
+ })
1811
+ ), de = i(() => ({
1812
+ gridTemplateColumns: `repeat(${q.value}, minmax(0, 1fr))`,
1813
+ columnGap: `${O.value}px`,
1814
+ rowGap: `${O.value}px`,
1815
+ transform: `translateY(${ae.value * ue.value}px)`
1816
+ }));
1817
+ function h() {
1818
+ typeof window > "u" || (M.value = Math.max(0, window.scrollY), s.value = window.innerHeight, f.value && (B.value = f.value.getBoundingClientRect().top + M.value));
1819
+ }
1820
+ function z() {
1821
+ $("scroll", {
1822
+ scrollTop: se.value,
1823
+ startIndex: oe.value,
1824
+ endIndex: ie.value
1825
+ });
1826
+ }
1827
+ function l() {
1828
+ h(), z(), u();
1829
+ }
1830
+ function u() {
1831
+ if (typeof window > "u" || !e.hasMore || e.loading || F === e.items.length)
1832
+ return;
1833
+ const b = Math.max(0, e.loadMoreThreshold), L = B.value + C.value, n = M.value + s.value;
1834
+ L - n <= b && (F = e.items.length, $("loadMore"));
1835
+ }
1836
+ function c(b, L = {}) {
1837
+ if (typeof window > "u") return;
1838
+ h();
1839
+ const n = Math.max(0, C.value - s.value), t = Math.min(
1840
+ Math.max(0, Number.isFinite(b) ? b : 0),
1841
+ n
1842
+ ), a = Math.max(0, B.value + t), v = L.behavior ?? "auto";
1843
+ v === "auto" && (M.value = a), window.scrollTo({ ...L, top: a, behavior: v });
1844
+ }
1845
+ function E(b, L = {}) {
1846
+ if (typeof window > "u" || e.items.length === 0) return;
1847
+ h();
1848
+ const n = Math.min(
1849
+ e.items.length - 1,
1850
+ Math.max(0, Math.floor(b))
1851
+ ), t = Math.floor(n / q.value), { align: a = "start", ...v } = L;
1852
+ let V = B.value + t * ue.value;
1853
+ a === "center" ? V -= (s.value - H.value) / 2 : a === "end" && (V -= s.value - H.value);
1854
+ const he = Math.max(
1855
+ B.value,
1856
+ B.value + C.value - s.value
1857
+ ), ve = Math.max(0, Math.min(V, he)), ge = v.behavior ?? "auto";
1858
+ ge === "auto" && (M.value = ve), window.scrollTo({
1859
+ ...v,
1860
+ top: ve,
1861
+ behavior: ge
1862
+ });
1863
+ }
1864
+ function P(b = "auto") {
1865
+ typeof window > "u" || (h(), window.scrollTo({ top: Math.max(0, B.value), behavior: b }));
1866
+ }
1867
+ return ee(
1868
+ () => [
1869
+ e.items.length,
1870
+ e.itemSize,
1871
+ e.columns,
1872
+ e.gap
1873
+ ],
1874
+ async () => {
1875
+ await R(), h(), u();
1876
+ }
1877
+ ), ee(
1878
+ () => [e.hasMore, e.loading],
1879
+ async ([b]) => {
1880
+ b || (F = -1), await R(), h(), u();
1881
+ }
1882
+ ), Se(() => {
1883
+ h(), window.addEventListener("scroll", l, { passive: !0 }), window.addEventListener("resize", l, { passive: !0 }), typeof ResizeObserver < "u" && (G = new ResizeObserver(() => {
1884
+ h(), u();
1885
+ }), f.value && G.observe(f.value)), R(u);
1886
+ }), Ie(() => {
1887
+ window.removeEventListener("scroll", l), window.removeEventListener("resize", l), G && (G.disconnect(), G = void 0);
1888
+ }), X({
1889
+ scrollTo: c,
1890
+ scrollToIndex: E,
1891
+ scrollToTop: P
1892
+ }), (b, L) => (x(), T("div", {
1893
+ ref_key: "root",
1894
+ ref: f,
1895
+ class: Ee(["vue-window-gird-virtual-scroll", { "vue-window-gird-virtual-scroll--pulling": r(_) }]),
1896
+ role: "list",
1897
+ "aria-label": o.ariaLabel,
1898
+ onTouchstartPassive: L[0] || (L[0] = //@ts-ignore
1899
+ (...n) => r(W) && r(W)(...n)),
1900
+ onTouchmove: L[1] || (L[1] = //@ts-ignore
1901
+ (...n) => r(Z) && r(Z)(...n)),
1902
+ onTouchend: L[2] || (L[2] = //@ts-ignore
1903
+ (...n) => r(te) && r(te)(...n)),
1904
+ onTouchcancel: L[3] || (L[3] = //@ts-ignore
1905
+ (...n) => r(Y) && r(Y)(...n))
1906
+ }, [
1907
+ o.pullToRefresh || o.refreshing ? (x(), T("div", {
1908
+ key: 0,
1909
+ class: "vue-window-gird-virtual-scroll__refresh",
1910
+ style: D({
1911
+ height: `${r(A)}px`,
1912
+ transform: `translateY(${r(k) - r(A)}px)`
1913
+ }),
1914
+ role: "status",
1915
+ "aria-live": "polite"
1916
+ }, [
1917
+ ne(b.$slots, "refresh", {
1918
+ pullDistance: r(p),
1919
+ progress: r(S),
1920
+ refreshing: o.refreshing
1921
+ }, () => [
1922
+ Me(Le(r(I)), 1)
1923
+ ])
1924
+ ], 4)) : me("", !0),
1925
+ o.items.length || o.loading ? (x(), T("div", {
1926
+ key: 1,
1927
+ class: "vue-window-gird-virtual-scroll__spacer",
1928
+ style: D({
1929
+ height: `${C.value}px`,
1930
+ transform: `translateY(${r(k)}px)`
1931
+ })
1932
+ }, [
1933
+ De("div", {
1934
+ class: "vue-window-gird-virtual-scroll__content",
1935
+ style: D(de.value)
1936
+ }, [
1937
+ (x(!0), T(we, null, ze(re.value, ({ item: n, index: t, key: a, rowIndex: v, columnIndex: V }) => (x(), T("div", {
1938
+ key: a,
1939
+ class: "vue-window-gird-virtual-scroll__item",
1940
+ style: D({ height: `${H.value}px` }),
1941
+ role: "listitem",
1942
+ "aria-posinset": t + 1,
1943
+ "aria-setsize": o.items.length
1944
+ }, [
1945
+ ne(b.$slots, "default", {
1946
+ item: n,
1947
+ index: t,
1948
+ rowIndex: v,
1949
+ columnIndex: V
1950
+ })
1951
+ ], 12, ct))), 128))
1952
+ ], 4),
1953
+ o.loading ? (x(), T("div", {
1954
+ key: 0,
1955
+ class: "vue-window-gird-virtual-scroll__loading",
1956
+ style: D({
1957
+ height: `${le.value}px`,
1958
+ transform: `translateY(${g.value}px)`
1959
+ }),
1960
+ role: "status",
1961
+ "aria-live": "polite"
1962
+ }, [
1963
+ ne(b.$slots, "loading", {}, () => [
1964
+ L[4] || (L[4] = Me("Loading more…", -1))
1965
+ ])
1966
+ ], 4)) : me("", !0)
1967
+ ], 4)) : (x(), T("div", {
1968
+ key: 2,
1969
+ class: "vue-window-gird-virtual-scroll__empty",
1970
+ style: D({ transform: `translateY(${r(k)}px)` })
1682
1971
  }, [
1683
- te(a.$slots, "empty")
1972
+ ne(b.$slots, "empty")
1684
1973
  ], 4))
1685
- ], 42, Ge));
1974
+ ], 42, ut));
1686
1975
  }
1687
- }), Xe = He, tt = {
1688
- install(n) {
1689
- n.component("ChatVirtualScroll", Oe), n.component("DynamicVirtualScroll", He), n.component("ShortMediaFeed", Ne), n.component("VirtualCarousel", Ue), n.component("VirtualList", Xe), n.component("VirtualScroll", qe), n.component(
1976
+ }), vt = Pe, ht = {
1977
+ install(o) {
1978
+ o.component("ChatVirtualScroll", Ge), o.component("DynamicVirtualScroll", Pe), o.component("ShortMediaFeed", Je), o.component("VirtualCarousel", lt), o.component("VirtualList", vt), o.component("VirtualScroll", nt), o.component(
1690
1979
  "WindowDynamicVirtualScroll",
1691
- Qe
1980
+ rt
1981
+ ), o.component(
1982
+ "WindowGirdVirtualScroll",
1983
+ dt
1692
1984
  );
1693
1985
  }
1694
1986
  };
1695
1987
  export {
1696
- Oe as ChatVirtualScroll,
1697
- He as DynamicVirtualScroll,
1698
- Ne as ShortMediaFeed,
1699
- Ue as VirtualCarousel,
1700
- Xe as VirtualList,
1701
- qe as VirtualScroll,
1702
- tt as VueVirtualScroll,
1703
- Qe as WindowDynamicVirtualScroll,
1704
- tt as default
1988
+ Ge as ChatVirtualScroll,
1989
+ Pe as DynamicVirtualScroll,
1990
+ Je as ShortMediaFeed,
1991
+ lt as VirtualCarousel,
1992
+ vt as VirtualList,
1993
+ nt as VirtualScroll,
1994
+ ht as VueVirtualScroll,
1995
+ rt as WindowDynamicVirtualScroll,
1996
+ dt as WindowGirdVirtualScroll,
1997
+ ht as default
1705
1998
  };