virtua 0.51.3 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +37 -13
  2. package/lib/angular/VGrid.d.ts +249 -0
  3. package/lib/angular/VList.d.ts +3 -3
  4. package/lib/angular/Virtualizer.d.ts +3 -3
  5. package/lib/angular/WindowVirtualizer.d.ts +3 -3
  6. package/lib/angular/index.d.ts +2 -0
  7. package/lib/angular/index.js +1150 -327
  8. package/lib/angular/index.js.map +1 -1
  9. package/lib/core/grid.d.ts +30 -0
  10. package/lib/core/index.cjs +484 -270
  11. package/lib/core/index.cjs.map +1 -1
  12. package/lib/core/index.d.ts +5 -3
  13. package/lib/core/index.js +462 -249
  14. package/lib/core/index.js.map +1 -1
  15. package/lib/core/layouts/grid.d.ts +21 -0
  16. package/lib/core/scroll-to.d.ts +50 -1
  17. package/lib/core/types.d.ts +0 -25
  18. package/lib/index.cjs +761 -558
  19. package/lib/index.cjs.map +1 -1
  20. package/lib/index.d.ts +2 -1
  21. package/lib/index.js +730 -509
  22. package/lib/index.js.map +1 -1
  23. package/lib/react/VGrid.d.ts +105 -80
  24. package/lib/react/index.d.ts +3 -2
  25. package/lib/solid/VGrid.d.ts +193 -0
  26. package/lib/solid/index.cjs +817 -288
  27. package/lib/solid/index.cjs.map +1 -1
  28. package/lib/solid/index.d.ts +3 -0
  29. package/lib/solid/index.js +786 -270
  30. package/lib/solid/index.js.map +1 -1
  31. package/lib/solid/index.jsx +743 -124
  32. package/lib/solid/index.jsx.map +1 -1
  33. package/lib/svelte/GridCell.svelte +44 -0
  34. package/lib/svelte/GridRow.svelte +42 -0
  35. package/lib/svelte/GridRowGroup.svelte +42 -0
  36. package/lib/svelte/VGrid.svelte +238 -0
  37. package/lib/svelte/VGrid.type.d.ts +185 -0
  38. package/lib/svelte/index.d.ts +3 -0
  39. package/lib/svelte/index.js +2 -1
  40. package/lib/vue/VGrid.d.ts +194 -0
  41. package/lib/vue/index.cjs +886 -376
  42. package/lib/vue/index.cjs.map +1 -1
  43. package/lib/vue/index.d.ts +3 -0
  44. package/lib/vue/index.js +858 -349
  45. package/lib/vue/index.js.map +1 -1
  46. package/package.json +4 -3
@@ -1,178 +1,304 @@
1
1
  import * as e from "@angular/core";
2
2
 
3
- import { ApplicationRef as t, ChangeDetectionStrategy as i, DestroyRef as s, ElementRef as n, InjectionToken as r, TemplateRef as o, afterNextRender as a, afterRenderEffect as l, computed as c, contentChild as u, effect as m, inject as h, input as p, output as f, signal as d, untracked as g, viewChild as S } from "@angular/core";
3
+ import { ApplicationRef as t, ChangeDetectionStrategy as i, DestroyRef as s, ElementRef as r, HostAttributeToken as n, InjectionToken as o, TemplateRef as l, afterNextRender as a, afterRenderEffect as c, computed as u, contentChild as p, effect as m, inject as d, input as h, output as f, signal as g, untracked as S, viewChild as y } from "@angular/core";
4
4
 
5
- import { NgTemplateOutlet as y } from "@angular/common";
5
+ import { NgTemplateOutlet as v } from "@angular/common";
6
6
 
7
- var z, {min: v, max: b, abs: N, floor: P} = Math, R = (e, t, i) => v(i, b(t, e)), I = e => [ ...e ].sort((e, t) => e - t), $ = setTimeout, q = clearTimeout, x = "function" == typeof queueMicrotask ? queueMicrotask : e => {
7
+ var w, z = [], {min: b, max: N, abs: $, floor: R} = Math, I = (e, t, i) => b(i, N(t, e)), P = e => e.sort((e, t) => e - t), x = setTimeout, q = clearTimeout, F = "function" == typeof queueMicrotask ? queueMicrotask : e => {
8
8
  Promise.resolve().then(e);
9
9
  }, k = () => {
10
10
  let e;
11
11
  return [ new Promise(t => {
12
12
  e = t;
13
13
  }), e ];
14
- }, F = e => e.ownerDocument, w = e => e.defaultView, O = () => (null == z && (z = /iP(hone|od|ad)/.test(navigator.userAgent) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 0),
15
- z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setItemSize: n, $isSizeEqual: r, $getTotalSize: o, $getLength: a, $setLength: l, $estimateDefaultSize: c}, u = 0) => {
16
- let m = !!c, h = !!u, p = 1, f = 0, d = 0, g = 0, S = 0, y = 0, z = 0, P = 0, R = 0, I = null, $ = [ 0, h ? b(u - 1, 0) : -1 ], q = 0, x = !1;
17
- const k = /* @__PURE__ */ new Set, F = () => g - d, w = () => F() + y + S, T = e => i(e) - y, C = e => {
18
- e && (O() && 0 !== P || I && 1 === R ? y += e : S += e);
14
+ }, C = e => e.ownerDocument, O = e => e.defaultView, T = () => (null == w && (w = /iP(hone|od|ad)/.test(navigator.userAgent) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 0),
15
+ w), M = e => N(e.$getTotalSize(), e.$getViewportSize()), _ = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setItemSize: r, $isSizeEqual: n, $getTotalSize: o, $getLength: l, $setLength: a, $estimateDefaultSize: c}, u = 0) => {
16
+ let p = !!c, m = !!u, d = 1, h = 0, f = 0, g = 0, S = 0, y = 0, v = 0, w = 0, z = 0, R = null, I = [ 0, m ? N(u - 1, 0) : -1 ], P = 0, x = !1;
17
+ const q = /* @__PURE__ */ new Set, F = () => g - f, k = () => F() + y + S, C = e => i(e) - y, O = e => {
18
+ e && (T() && 0 !== w || R && 1 === z ? y += e : S += e);
19
19
  };
20
20
  return {
21
21
  $dispose: () => {
22
- k.clear();
22
+ q.clear();
23
23
  },
24
- $getStateVersion: () => p,
24
+ $getStateVersion: () => d,
25
25
  $getRange: (t = 200) => {
26
- if (!x || h) return $;
26
+ if (!x || m) return I;
27
27
  let i, s;
28
- if (z) [i, s] = $; else {
29
- let n = b(0, w()), r = n + f;
30
- m || (t = b(0, t), 1 !== P && (n -= t), 2 !== P && (r += t)), [i, s] = $ = e(b(0, n), b(0, r)),
31
- I && (i = v(i, I[0]), s = b(s, I[1]));
28
+ if (v) [i, s] = I; else {
29
+ let r = N(0, k()), n = r + h;
30
+ p || (t = N(0, t), 1 !== w && (r -= t), 2 !== w && (n += t)), [i, s] = I = e(N(0, r), N(0, n)),
31
+ R && (i = b(i, R[0]), s = N(s, R[1]));
32
32
  }
33
- return [ b(i, 0), v(s, a() - 1) ];
33
+ return [ N(i, 0), b(s, l() - 1) ];
34
34
  },
35
- $findItemIndex: e => t(e - d),
36
- $isUnmeasuredItem: r,
37
- $getItemOffset: T,
35
+ $findItemIndex: e => t(e - f),
36
+ $isUnmeasuredItem: n,
37
+ $getItemOffset: C,
38
38
  $getItemSize: s,
39
- $getItemsLength: a,
39
+ $getItemsLength: l,
40
40
  $getScrollOffset: () => g,
41
- $isScrolling: () => 0 !== P,
42
- $getViewportSize: () => f,
43
- $getStartSpacerSize: () => d,
41
+ $isScrolling: () => 0 !== w,
42
+ $getViewportSize: () => h,
43
+ $getStartSpacerSize: () => f,
44
44
  $getTotalSize: o,
45
- t: () => (z = S, S = 0, [ z, 2 === R ]),
45
+ t: () => (v = S, S = 0, [ v, 2 === z ]),
46
46
  $subscribe: (e, t) => {
47
47
  const i = [ e, t ];
48
- return k.add(i), () => {
49
- k.delete(i);
48
+ return q.add(i), () => {
49
+ q.delete(i);
50
50
  };
51
51
  },
52
- $update: (i, a) => {
53
- let u, v, b = 0;
52
+ $update: (i, l) => {
53
+ let u, b, N = 0;
54
54
  switch (i) {
55
55
  case 1:
56
56
  {
57
- if (a === g && 0 === R) break;
58
- const e = z;
59
- z = 0;
60
- const t = a - g, i = N(t);
61
- e && i < N(e) + 1 || 0 !== R || (P = t < 0 ? 2 : 1), h && (h = !1), g = a, b = 4;
57
+ if (l === g && 0 === z) break;
58
+ const e = v;
59
+ v = 0;
60
+ const t = l - g, i = $(t);
61
+ e && i < $(e) + 1 || 0 !== z || (w = t < 0 ? 2 : 1), m && (m = !1), g = l, N = 4;
62
62
  const s = F();
63
- s >= -f && s <= o() && (b += 1, v = i > f);
63
+ s >= -h && s <= o() && (N += 1, b = i > h);
64
64
  break;
65
65
  }
66
66
 
67
67
  case 2:
68
- b = 8, 0 !== P && (u = !0, b += 1), P = 0, R = 0, I = null;
68
+ N = 8, 0 !== w && (u = !0, N += 1), w = 0, z = 0, R = null;
69
69
  break;
70
70
 
71
71
  case 3:
72
72
  {
73
- const e = a.filter(([e, t]) => !r(e, t));
73
+ const e = l.filter(([e, t]) => !n(e, t));
74
74
  if (!e.length) break;
75
- C(e.reduce((e, [t, i]) => {
76
- let n;
77
- if (2 === R) n = !0; else if (I && 1 === R) n = t < I[0]; else {
78
- const e = F(), i = T(t), r = s(t);
79
- n = 1 !== P && 0 === R ? i + r <= e : i < e && i + r < e + f;
75
+ O(e.reduce((e, [t, i]) => {
76
+ let r;
77
+ if (2 === z) r = !0; else if (R && 1 === z) r = t < R[0]; else {
78
+ const e = F(), i = C(t), n = s(t);
79
+ r = 1 !== w && 0 === z ? i + n <= e : i < e && i + n < e + h;
80
80
  }
81
- return n && (e += i - s(t)), e;
81
+ return r && (e += i - s(t)), e;
82
82
  }, 0));
83
83
  for (const [t, i] of e) {
84
- const e = s(t), r = n(t, i);
85
- m && (q += r ? i : i - e);
84
+ const e = s(t), n = r(t, i);
85
+ p && (P += n ? i : i - e);
86
86
  }
87
- m && f && q > f && (C(c(t(w()))), m = !1), b = 3, v = !0;
87
+ p && h && P > h && (O(c(t(k()))), p = !1), N = 3, b = !0;
88
88
  break;
89
89
  }
90
90
 
91
91
  case 4:
92
- f !== a && (f || (x = v = !0), f = a, b = 3);
92
+ h !== l && (h || (x = b = !0), h = l, N = 3);
93
93
  break;
94
94
 
95
95
  case 5:
96
- a[1] ? (C(l(a[0], !0)), R = 2, b = 1) : (l(a[0]), b = 1);
96
+ l[1] ? (O(a(l[0], !0)), z = 2, N = 1) : (a(l[0]), N = 1);
97
97
  break;
98
98
 
99
99
  case 6:
100
- d = a;
100
+ f = l;
101
101
  break;
102
102
 
103
103
  case 7:
104
- R = 1;
104
+ z = 1;
105
+ break;
106
+
107
+ case 9:
108
+ O(l), N = 3;
105
109
  break;
106
110
 
107
111
  case 8:
108
- I = e(a, a + f), b = 1;
112
+ R = e(l, l + h), N = 1;
109
113
  }
110
- b && (p = 1 + (2147483647 & p), u && y && (S += y, y = 0), k.forEach(([e, t]) => {
111
- b & e && t(v);
114
+ N && (d = 1 + (2147483647 & d), u && y && (S += y, y = 0), q.forEach(([e, t]) => {
115
+ N & e && t(b);
112
116
  }));
113
117
  }
114
118
  };
115
- }, C = (e, t, i, s = 0, n = t - 1) => {
116
- let r = s;
117
- for (;s <= n; ) {
118
- const t = P((s + n) / 2);
119
- e(t) <= i ? (r = t, s = t + 1) : n = t - 1;
119
+ }, V = (e, t, i, s = 0, r = t - 1) => {
120
+ let n = s;
121
+ for (;s <= r; ) {
122
+ const t = R((s + r) / 2);
123
+ e(t) <= i ? (n = t, s = t + 1) : r = t - 1;
120
124
  }
121
- return R(r, 0, t - 1);
122
- }, M = (e, t, i) => {
125
+ return I(n, 0, t - 1);
126
+ }, E = (e, t, i) => {
123
127
  const s = i ? "unshift" : "push";
124
128
  for (let i = 0; i < t; i++) e[s](-1);
125
129
  return e;
126
- }, _ = (e, t, i) => {
127
- let s = i && i[1] || t || 40, n = -1, r = 0;
128
- const o = i && i[0], a = o ? M(o.slice(0, v(e, o.length)), b(0, e - o.length)) : M([], e), l = M([], e + 1), c = e => {
129
- const t = a[e];
130
+ }, L = (e, t, i) => {
131
+ let s = i && i[1] || t || 40, r = -1, n = 0;
132
+ const o = i && i[0], l = o ? E(o.slice(0, b(e, o.length)), N(0, e - o.length)) : E([], e), a = E([], e + 1), c = e => {
133
+ const t = l[e];
130
134
  return -1 === t ? s : t;
131
135
  }, u = t => {
132
136
  if (!e) return 0;
133
- if (n >= t) return l[t];
134
- n < 0 && (l[0] = 0, n = 0);
135
- let i = n, s = l[i];
136
- for (;i < t; ) s += c(i), l[++i] = s;
137
- return n = t, s;
137
+ if (r >= t) return a[t];
138
+ r < 0 && (a[0] = 0, r = 0);
139
+ let i = r, s = a[i];
140
+ for (;i < t; ) s += c(i), a[++i] = s;
141
+ return r = t, s;
138
142
  };
139
143
  return {
140
144
  $getRange: (t, i) => {
141
- let s, n;
142
- return r = v(r, e - 1), u(r) <= t ? (n = C(u, e, i, r), s = C(u, e, t, r, n)) : (s = C(u, e, t, void 0, r),
143
- n = C(u, e, i, s)), r = s, [ s, n ];
145
+ let s, r;
146
+ return n = b(n, e - 1), u(n) <= t ? (r = V(u, e, i, n), s = V(u, e, t, n, r)) : (s = V(u, e, t, void 0, n),
147
+ r = V(u, e, i, s)), n = s, [ s, r ];
144
148
  },
145
- $findIndex: t => C(u, e, t),
149
+ $findIndex: t => V(u, e, t),
146
150
  $getItemOffset: u,
147
151
  $getItemSize: c,
148
152
  $setItemSize: (e, t) => {
149
- const i = -1 === a[e];
150
- return a[e] = t, n = v(e, n), i;
153
+ const i = -1 === l[e];
154
+ return l[e] = t, r = b(e, r), i;
151
155
  },
152
- $isSizeEqual: (e, t = -1) => a[e] === t,
156
+ $isSizeEqual: (e, t = -1) => l[e] === t,
153
157
  $getTotalSize: () => u(e),
154
158
  $getLength: () => e,
155
159
  $setLength: (t, i) => {
156
- const r = t - e;
157
- return n = i ? -1 : v(t - 1, n), e = t, r > 0 ? (M(l, r), M(a, r, i), s * r) : (l.splice(r),
158
- (i ? a.splice(0, -r) : a.splice(r)).reduce((e, t) => e - (-1 === t ? s : t), 0));
160
+ const n = t - e;
161
+ return r = i ? -1 : b(t - 1, r), e = t, n > 0 ? (E(a, n), E(l, n, i), s * n) : (a.splice(n),
162
+ (i ? l.splice(0, -n) : l.splice(n)).reduce((e, t) => e - (-1 === t ? s : t), 0));
159
163
  },
160
164
  $estimateDefaultSize: t ? void 0 : e => {
161
165
  let t = 0;
162
166
  const i = [];
163
- a.forEach((s, n) => {
164
- -1 !== s && (s && i.push(s), n < e && t++);
165
- }), n = -1;
166
- const r = I(i), o = r.length, l = o / 2 | 0, c = o % 2 == 0 ? (r[l - 1] + r[l]) / 2 : r[l], u = s;
167
- return ((s = c) - u) * b(e - t, 0);
167
+ l.forEach((s, r) => {
168
+ -1 !== s && (s && i.push(s), r < e && t++);
169
+ }), r = -1, P(i);
170
+ const n = i.length, o = n / 2 | 0, a = n % 2 == 0 ? (i[o - 1] + i[o]) / 2 : i[o], c = s;
171
+ return ((s = a) - c) * N(e - t, 0);
168
172
  },
169
- $snapshot: () => [ a.slice(), s ]
173
+ $snapshot: () => [ l.slice(), s ]
174
+ };
175
+ }, D = e => "number" == typeof e ? e : e.length, K = (e, t) => "number" == typeof e ? t : e[t], G = (e, t, i = 0) => {
176
+ if ("number" == typeof t) {
177
+ let s = D(e), r = t;
178
+ const n = e => r + i ? I(R(e / (r + i)), 0, s - 1) : 0;
179
+ return {
180
+ $getRange: (e, t) => [ n(e), n(t) ],
181
+ $findIndex: n,
182
+ $getItemOffset: e => e * (r + i),
183
+ $getItemSize: () => r,
184
+ $setItemSize: () => !1,
185
+ $isSizeEqual: () => !1,
186
+ $getTotalSize: () => s ? s * (r + i) - i : 0,
187
+ $getLength: () => s,
188
+ $setLength: e => (s = e, 0),
189
+ $isMeasurable: () => !1,
190
+ $setAxis: (e, t, i) => {
191
+ if ("number" != typeof t || t === r) return;
192
+ const s = n(i) * (t - r);
193
+ return r = t, s;
194
+ }
195
+ };
196
+ }
197
+ const s = "auto" === t;
198
+ let r, n = t;
199
+ const o = D(e), l = [], a = L(o, void 0, [ [], 40 + i ]), c = e => s || !!l[e], u = {
200
+ $getRange: a.$getRange,
201
+ $findIndex: a.$findIndex,
202
+ $getItemOffset: a.$getItemOffset,
203
+ $getItemSize: e => a.$getItemSize(e) - i,
204
+ $setItemSize: (e, t) => c(e) && a.$setItemSize(e, t + i),
205
+ $isSizeEqual: (e, t) => a.$isSizeEqual(e, t + i),
206
+ $getTotalSize: () => a.$getLength() ? a.$getTotalSize() - i : 0,
207
+ $getLength: a.$getLength,
208
+ $setLength: a.$setLength,
209
+ $estimateDefaultSize: s ? a.$estimateDefaultSize : void 0,
210
+ $isMeasurable: c,
211
+ $setAxis: (e, t, o, c) => {
212
+ if (s) return;
213
+ const u = "number" == typeof t || "auto" === t ? n : t, p = a.$getLength();
214
+ if (!c && e === r && u === n && p === l.length) return;
215
+ r = e, n = u, l.length = p;
216
+ const m = a.$findIndex(o), d = a.$getItemOffset(m);
217
+ let h;
218
+ for (let t = 0; t < p; t++) {
219
+ const s = e[t], r = null !== s && "object" == typeof s ? s[u] : null, n = "number" != typeof r;
220
+ if (!n || !l[t]) {
221
+ l[t] = n;
222
+ const e = n ? -1 : r + i;
223
+ a.$isSizeEqual(t, e) || (a.$setItemSize(t, e), h = !0);
224
+ }
225
+ }
226
+ return h ? a.$getItemOffset(m) - d : void 0;
227
+ }
228
+ };
229
+ return u.$setAxis(e, t, 0), u;
230
+ }, W = (e, t, i, s, r) => {
231
+ const n = D(i);
232
+ n !== e.$getItemsLength() && e.$update(5, [ n ]);
233
+ const o = t.$setAxis(i, s, e.$getScrollOffset() - e.$getItemOffset(0), r);
234
+ null != o && e.$update(9, o);
235
+ }, H = /*#__PURE__*/ new WeakMap, A = (e, t, i, s, r, n, o) => {
236
+ if (t < s || N(t, r) < b(i, n + 1) || o < i) return !0;
237
+ for (const s of e) if (s >= t && s < i) return !0;
238
+ return !1;
239
+ }, B = (e, t, i) => {
240
+ const s = [];
241
+ for (const r of e) r >= t && r < i && s.push(r);
242
+ return P(s);
243
+ }, j = (e, t, i) => {
244
+ if (t >= i) return -1;
245
+ let s = 0, r = e.length;
246
+ for (;s < r; ) {
247
+ const i = s + r >> 1;
248
+ e[i] <= t ? s = i + 1 : r = i;
249
+ }
250
+ return s - 1;
251
+ }, J = (e, t, i, s) => {
252
+ const r = j(t, i, s);
253
+ r >= 0 && e.push(t[r]);
254
+ }, Q = (e, t, i, s, r, n) => {
255
+ const o = [];
256
+ for (let e = 0; e < i; e++) o.push(e);
257
+ const l = e.length;
258
+ let a = 0, c = i - 1;
259
+ for (;a < l && e[a] < s; a++) {
260
+ const t = e[a];
261
+ t > c && (o.push(t), c = t);
262
+ }
263
+ for (let e = s; e <= r; e++) o.push(e);
264
+ for (c = r; a < l && e[a] < n; a++) {
265
+ const t = e[a];
266
+ t > c && (o.push(t), c = t);
267
+ }
268
+ for (let e = n; e < t; e++) o.push(e);
269
+ return o;
270
+ }, X = (e, t) => b(e.rowIndex + (e.rowSpan || 1), t), Y = (e, t) => b(e.colIndex + (e.colSpan || 1), t), U = (e, t, i, s, r, n) => {
271
+ const o = t.length, l = s.length;
272
+ let a = "[l0]", c = 0, u = 0, p = 0;
273
+ for (;u < o || p < l; ) {
274
+ const m = u < o ? t[u] : n, d = p < l ? s[p] : n;
275
+ if (d <= c) p++; else {
276
+ let t, s;
277
+ if (m === c) {
278
+ t = c + 1;
279
+ const n = i[u];
280
+ s = null == n ? e.$getItemSize(c) + "px" : n ? r : "minmax(" + e.$getItemSize(c) + "px,auto)",
281
+ u++;
282
+ } else t = b(m, d), s = "minmax(" + (e.$getItemOffset(t - 1) + e.$getItemSize(t - 1) - e.$getItemOffset(c)) + "px,auto)";
283
+ a += " " + s + " [l" + t + "]", c = t;
284
+ }
285
+ }
286
+ return c < n && (a += " minmax(" + (e.$getTotalSize() - e.$getItemOffset(c)) + "px,auto) [l" + n + "]"),
287
+ a;
288
+ }, Z = (e, t, i, s, r) => {
289
+ const n = {
290
+ display: "grid",
291
+ gridTemplateRows: "subgrid",
292
+ gridTemplateColumns: "subgrid",
293
+ gridColumn: "1/-1",
294
+ gridRow: "l" + e + "/l" + t
170
295
  };
171
- }, K = e => {
296
+ return null != i && (n.position = "sticky", n[s] = i + "px", n.zIndex = r), n;
297
+ }, ee = e => {
172
298
  let t;
173
299
  return {
174
300
  i(i) {
175
- (t || (t = new (w(F(i)).ResizeObserver)(e))).observe(i);
301
+ (t || (t = new (O(C(i)).ResizeObserver)(e))).observe(i);
176
302
  },
177
303
  o(e) {
178
304
  t.unobserve(e);
@@ -181,95 +307,116 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
181
307
  t && t.disconnect();
182
308
  }
183
309
  };
184
- }, V = (e, t, i, s, n, r, o) => {
185
- let a, l, c = 0, u = !1, m = !1, h = !1, p = !1;
186
- const f = Date.now, d = s ? "scrollLeft" : "scrollTop", g = s ? "left" : "top", S = e => n ? -e : e, y = () => S(i[d]), z = (e, t) => {
310
+ }, te = (e, t, i, s, r, n, o) => {
311
+ let l, a, c = 0, u = !1, p = !1, m = !1, d = !1;
312
+ const h = Date.now, f = s ? "scrollLeft" : "scrollTop", g = s ? "left" : "top", S = e => r ? -e : e, y = () => S(i[f]), v = (e, t) => {
187
313
  i.scrollTo({
188
314
  [g]: S(e),
189
315
  behavior: t ? "smooth" : "instant"
190
316
  });
191
- }, v = () => {
192
- if (u || m) return u = !1, void b();
193
- h = !1, e.$update(2);
317
+ }, w = () => {
318
+ if (u || p) return u = !1, void z();
319
+ m = !1, e.$update(2);
320
+ }, z = () => {
321
+ q(a), a = x(w, 150);
194
322
  }, b = () => {
195
- q(l), l = $(v, 150);
196
- }, N = () => {
197
- c = f(), h && (p = !0), o && e.$update(6, o()), e.$update(1, y()), b();
198
- }, P = t => {
323
+ c = h(), m && (d = !0), o && e.$update(6, o()), e.$update(1, y()), z();
324
+ }, N = t => {
199
325
  if (u || !e.$isScrolling() || t.ctrlKey) return;
200
- const i = f() - c;
326
+ const i = h() - c;
201
327
  150 > i && 50 < i && (s ? t.deltaX : t.deltaY) && (u = !0);
328
+ }, $ = () => {
329
+ p = !0, m = d = !1;
202
330
  }, R = () => {
203
- m = !0, h = p = !1;
204
- }, I = () => {
205
- m = !1, O() && (h = !0);
331
+ p = !1, T() && (m = !0);
206
332
  };
207
- return t.addEventListener("scroll", N), t.addEventListener("wheel", P, {
333
+ return t.addEventListener("scroll", b), t.addEventListener("wheel", N, {
208
334
  passive: !0
209
- }), t.addEventListener("touchstart", R, {
335
+ }), t.addEventListener("touchstart", $, {
210
336
  passive: !0
211
- }), t.addEventListener("touchend", I, {
337
+ }), t.addEventListener("touchend", R, {
212
338
  passive: !0
213
339
  }), {
214
340
  l: () => {
215
- t.removeEventListener("scroll", N), t.removeEventListener("wheel", P), t.removeEventListener("touchstart", R),
216
- t.removeEventListener("touchend", I), q(l);
341
+ t.removeEventListener("scroll", b), t.removeEventListener("wheel", N), t.removeEventListener("touchstart", $),
342
+ t.removeEventListener("touchend", R), q(a);
217
343
  },
218
344
  u: () => {
219
345
  const [t, s] = e.t();
220
346
  if (!t) return;
221
- p && r && r(), p = !1;
222
- const n = e.$getScrollOffset() + t;
223
- n <= 0 || n >= e.$getStartSpacerSize() + e.$getTotalSize() - e.$getViewportSize() ? z(n) : i.scrollBy({
347
+ d && n && n(), d = !1;
348
+ const r = e.$getScrollOffset() + t;
349
+ r <= 0 || r >= e.$getStartSpacerSize() + e.$getTotalSize() - e.$getViewportSize() ? v(r) : i.scrollBy({
224
350
  [g]: S(t),
225
351
  behavior: "instant"
226
- }), s && (a && a(), e.$getViewportSize() > e.$getTotalSize() && e.$update(1, y()));
352
+ }), s && (l && l(), e.$getViewportSize() > e.$getTotalSize() && e.$update(1, y()));
227
353
  },
228
- m: (t, i) => {
229
- let s, n, r;
230
- a && a();
231
- const o = a = () => {
232
- s = !0, q(n), r && r();
233
- }, l = () => {
354
+ p: (t, i) => {
355
+ let s, r, n;
356
+ l && l();
357
+ const o = l = () => {
358
+ s = !0, q(r), n && n();
359
+ }, a = () => {
234
360
  if (!s) {
235
- if (e.$getViewportSize() && (q(n), n = $(o, 150)), i) {
361
+ if (e.$getViewportSize() && (q(r), r = x(o, 150)), i) {
236
362
  for (let [t, i] = e.$getRange(0); t <= i; t++) if (e.$isUnmeasuredItem(t)) return;
237
363
  o();
238
364
  }
239
- e.$update(7), z(t(), i);
365
+ e.$update(7), v(t(), i);
240
366
  }
241
367
  }, c = () => {
242
368
  if (s) return;
243
369
  let t;
244
- r = e.$subscribe(2, () => {
245
- t || (t = !0, x(() => {
246
- t = !1, l();
370
+ n = e.$subscribe(2, () => {
371
+ t || (t = !0, F(() => {
372
+ t = !1, a();
247
373
  }));
248
- }), l();
374
+ }), a();
249
375
  };
250
- i ? (e.$update(8, t()), x(c)) : c();
376
+ i ? (e.$update(8, t()), F(c)) : c();
251
377
  }
252
378
  };
253
- }, E = (e, t) => {
379
+ }, ie = (e, t) => {
254
380
  e.$scroll(() => t);
255
- }, L = (e, t, i, {align: s, smooth: n, offset: r = 0} = {}) => {
256
- if (i = R(i, 0, t.$getItemsLength() - 1), "nearest" === s) {
257
- const e = t.$getItemOffset(i), n = t.$getScrollOffset();
258
- if (e < n) s = "start"; else {
259
- if (!(e + t.$getItemSize(i) > n + t.$getViewportSize())) return;
381
+ }, se = (e, t, i, {align: s, smooth: r, offset: n = 0} = {}) => {
382
+ if (i = I(i, 0, t.$getItemsLength() - 1), "nearest" === s) {
383
+ const e = t.$getItemOffset(i), r = t.$getScrollOffset();
384
+ if (e < r) s = "start"; else {
385
+ if (!(e + t.$getItemSize(i) > r + t.$getViewportSize())) return;
260
386
  s = "end";
261
387
  }
262
388
  }
263
- e.$scroll(() => r + e.$getBaseOffset() + t.$getItemOffset(i) + ("end" === s ? t.$getItemSize(i) - t.$getViewportSize() : "center" === s ? (t.$getItemSize(i) - t.$getViewportSize()) / 2 : 0), n);
264
- }, D = class t {
265
- index=p.required();
266
- offset=p.required();
267
- hide=p.required();
268
- horizontal=p.required();
269
- isSSR=p(!1);
270
- resizer=p.required();
271
- attrs=p();
272
- style=c(() => {
389
+ e.$scroll(() => n + e.$getBaseOffset() + t.$getItemOffset(i) + ("end" === s ? t.$getItemSize(i) - t.$getViewportSize() : "center" === s ? (t.$getItemSize(i) - t.$getViewportSize()) / 2 : 0), r);
390
+ }, re = (e, t, i, s, r, n, o, l) => {
391
+ const a = t.$getItemsLength(), c = b(i, a), u = N(a - r, c);
392
+ n = I(n, 0, a - 1);
393
+ const p = B(s, c, u), m = j(p, n, u), d = m < 0 ? -1 : p[m], h = () => [ t.$getItemOffset(c) - t.$getItemOffset(0) + (d < 0 || d === n ? 0 : t.$getItemOffset(d + 1) - t.$getItemOffset(d)), t.$getItemOffset(a) - t.$getItemOffset(u) ];
394
+ if ("nearest" === o) {
395
+ if (n < c || n >= u) return;
396
+ const [e, i] = h(), s = t.$getScrollOffset(), r = t.$getItemSize(n);
397
+ let l = t.$getItemOffset(n);
398
+ if (d === n) {
399
+ const i = (m + 1 < p.length ? p[m + 1] : u) - 1;
400
+ l = N(l, b(s + e, t.$getItemOffset(i) + t.$getItemSize(i) - r));
401
+ }
402
+ if (l < s + e) o = "start"; else {
403
+ if (!(l + r > s + t.$getViewportSize() - i)) return;
404
+ o = "end";
405
+ }
406
+ }
407
+ e.$scroll(l, () => {
408
+ const [e, i] = h(), s = t.$getItemSize(n) - t.$getViewportSize();
409
+ return t.$getItemOffset(n) + ("end" === o ? s + i : "center" === o ? (s + i - e) / 2 : -e);
410
+ });
411
+ }, ne = class t {
412
+ index=h.required();
413
+ offset=h.required();
414
+ hide=h.required();
415
+ horizontal=h.required();
416
+ isSSR=h(!1);
417
+ resizer=h.required();
418
+ attrs=h();
419
+ style=u(() => {
273
420
  const e = this.horizontal(), t = this.hide(), i = this.isSSR(), s = {
274
421
  contain: "layout style",
275
422
  position: t && i ? void 0 : "absolute",
@@ -282,12 +429,12 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
282
429
  return e && (s.display = "inline-flex"), s;
283
430
  });
284
431
  constructor() {
285
- const e = h(n).nativeElement;
432
+ const e = d(r).nativeElement;
286
433
  let t;
287
- l({
434
+ c({
288
435
  read: () => {
289
436
  const i = this.index();
290
- t && t(), t = g(this.resizer)(e, i);
437
+ t && t(), t = S(this.resizer)(e, i);
291
438
  }
292
439
  });
293
440
  let i = [];
@@ -296,7 +443,7 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
296
443
  for (const t of i) e.removeAttribute(t);
297
444
  i = [];
298
445
  for (const s in t) "style" !== s && "class" !== s && (e.setAttribute(s, t[s]), i.push(s));
299
- }), h(s).onDestroy(() => {
446
+ }), d(s).onDestroy(() => {
300
447
  t && t();
301
448
  });
302
449
  }
@@ -373,66 +520,66 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
373
520
  },
374
521
  ngImport: e
375
522
  });
376
- }, B = (e, t) => "_" + t, W = new r("virtua-item-template"), j = class i {
377
- data=p.required();
378
- getKey=p(B);
379
- itemProps=p();
380
- bufferSize=p();
381
- scrollRef=p();
382
- itemSize=p();
383
- ssrCount=p();
384
- shift=p(!1);
385
- horizontal=p(!1);
386
- keepMounted=p();
387
- cacheProp=p(void 0, {
523
+ }, oe = (e, t) => "_" + t, le = /*#__PURE__*/ new o("virtua-item-template"), ae = class i {
524
+ data=h.required();
525
+ getKey=h(oe);
526
+ itemProps=h();
527
+ bufferSize=h();
528
+ scrollRef=h();
529
+ itemSize=h();
530
+ ssrCount=h();
531
+ shift=h(!1);
532
+ horizontal=h(!1);
533
+ keepMounted=h();
534
+ cacheProp=h(void 0, {
388
535
  alias: "cache"
389
536
  });
390
- startMargin=p(0);
391
- scroll=f();
392
- scrollEnd=f();
393
- contentTemplate=u(o);
394
- h=h(W, {
537
+ startMargin=h(0);
538
+ scrolled=f();
539
+ scrollEnded=f();
540
+ contentTemplate=p(l);
541
+ m=d(le, {
395
542
  optional: !0
396
543
  });
397
- template=c(() => this.h?.() ?? this.contentTemplate());
398
- p;
544
+ template=u(() => this.m?.() ?? this.contentTemplate());
545
+ h;
399
546
  S;
400
547
  driver;
401
- v=h(n).nativeElement;
402
- N=h(t);
403
- P=d(void 0);
404
- isSSR=d(!1);
405
- R=c(() => {
406
- this.P();
407
- const e = this.data().length, [t, i] = this.p.$getRange(this.bufferSize()), s = this.keepMounted(), n = [];
548
+ v=d(r).nativeElement;
549
+ N=d(t);
550
+ $=g(void 0);
551
+ isSSR=g(!1);
552
+ R=u(() => {
553
+ this.$();
554
+ const e = this.data().length, [t, i] = this.h.$getRange(this.bufferSize()), s = this.keepMounted(), r = [];
408
555
  if (s) {
409
- const r = new Set(s);
410
- for (let e = t; e <= i; e++) r.add(e);
411
- for (const t of I([ ...r ])) t < e && n.push(t);
412
- } else for (let e = t; e <= i; e++) n.push(e);
413
- return n;
556
+ const n = new Set(s);
557
+ for (let e = t; e <= i; e++) n.add(e);
558
+ for (const t of P([ ...n ])) t < e && r.push(t);
559
+ } else for (let e = t; e <= i; e++) r.push(e);
560
+ return r;
414
561
  });
415
- items=c(() => {
416
- this.P();
417
- const e = this.p, t = this.data(), i = this.getKey(), s = this.itemProps();
418
- return this.R().map(n => {
419
- const r = t[n];
562
+ items=u(() => {
563
+ this.$();
564
+ const e = this.h, t = this.data(), i = this.getKey(), s = this.itemProps();
565
+ return this.R().map(r => {
566
+ const n = t[r];
420
567
  return {
421
- key: i(r, n),
422
- index: n,
423
- data: r,
424
- offset: e.$getItemOffset(n),
425
- hide: e.$isUnmeasuredItem(n),
568
+ key: i(n, r),
569
+ index: r,
570
+ data: n,
571
+ offset: e.$getItemOffset(r),
572
+ hide: e.$isUnmeasuredItem(r),
426
573
  attrs: s?.({
427
- item: r,
428
- index: n
574
+ item: n,
575
+ index: r
429
576
  })
430
577
  };
431
578
  });
432
579
  });
433
- containerStyle=c(() => {
434
- this.P();
435
- const e = this.horizontal(), t = this.p.$getTotalSize();
580
+ containerStyle=u(() => {
581
+ this.$();
582
+ const e = this.horizontal(), t = this.h.$getTotalSize();
436
583
  return {
437
584
  display: "block",
438
585
  contain: "size style",
@@ -441,59 +588,59 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
441
588
  position: "relative",
442
589
  width: e ? t + "px" : "100%",
443
590
  height: e ? "100%" : t + "px",
444
- "pointer-events": this.p.$isScrolling() ? "none" : void 0
591
+ "pointer-events": this.h.$isScrolling() ? "none" : void 0
445
592
  };
446
593
  });
447
594
  constructor() {
448
595
  m(() => {
449
596
  const e = this.data().length;
450
- this.p && e !== this.p.$getItemsLength() && this.p.$update(5, [ e, g(this.shift) ]);
597
+ this.h && e !== this.h.$getItemsLength() && this.h.$update(5, [ e, S(this.shift) ]);
451
598
  }), m(() => {
452
599
  const e = this.startMargin();
453
- this.p && e !== this.p.$getStartSpacerSize() && this.p.$update(6, e);
600
+ this.h && e !== this.h.$getStartSpacerSize() && this.h.$update(6, e);
454
601
  }), a({
455
602
  read: () => {
456
603
  this.isSSR.set(!1), this.driver.$observe(this.v, this.scrollRef());
457
604
  }
458
- }), l({
605
+ }), c({
459
606
  read: () => {
460
- this.P(), this.driver.$effect();
607
+ this.$(), this.driver.$effect();
461
608
  }
462
- }), h(s).onDestroy(() => {
463
- this.p?.$dispose(), this.driver?.$dispose();
609
+ }), d(s).onDestroy(() => {
610
+ this.h?.$dispose(), this.driver?.$dispose();
464
611
  });
465
612
  }
466
613
  ngOnInit() {
467
614
  const e = this.itemSize(), t = this.ssrCount();
468
615
  this.isSSR.set(!!t);
469
- const i = this.S = _(this.data().length, e, this.cacheProp()), s = this.p = T(i, t);
616
+ const i = this.S = L(this.data().length, e, this.cacheProp()), s = this.h = _(i, t);
470
617
  this.driver = ((e, t) => {
471
- let i, s, n = k();
472
- const r = /* @__PURE__ */ new WeakMap, o = K(s => {
473
- const n = [];
474
- for (const {target: o, contentRect: {width: a, height: l}} of s) if (o === i) (a || l) && e.$update(4, t ? a : l); else if (o.offsetParent) {
475
- const e = r.get(o);
476
- null != e && n.push([ e, t ? a : l ]);
618
+ let i, s, r = k();
619
+ const n = /* @__PURE__ */ new WeakMap, o = ee(s => {
620
+ const r = [];
621
+ for (const {target: o, contentRect: {width: l, height: a}} of s) if (o === i) (l || a) && e.$update(4, t ? l : a); else if (o.offsetParent) {
622
+ const e = n.get(o);
623
+ null != e && r.push([ e, t ? l : a ]);
477
624
  }
478
- n.length && e.$update(3, n);
625
+ r.length && e.$update(3, r);
479
626
  });
480
627
  return {
481
- $observe(r, a = r.parentElement) {
482
- o.i(i = a), s = V(e, a, a, t, t && "rtl" === getComputedStyle(a).direction, () => {
483
- const e = t ? "overflowX" : "overflowY", i = a.style, s = i[e];
484
- i[e] = "hidden", $(() => {
628
+ $observe(n, l = n.parentElement) {
629
+ o.i(i = l), s = te(e, l, l, t, t && "rtl" === getComputedStyle(l).direction, () => {
630
+ const e = t ? "overflowX" : "overflowY", i = l.style, s = i[e];
631
+ i[e] = "hidden", x(() => {
485
632
  i[e] = s;
486
633
  });
487
- }), n[1](!0);
634
+ }), r[1](!0);
488
635
  },
489
636
  $dispose() {
490
- o.l(), s && s.l(), n[1](!1), n = k();
637
+ o.l(), s && s.l(), r[1](!1), r = k();
491
638
  },
492
- $observeItem: (e, t) => (r.set(e, t), o.i(e), () => {
493
- r.delete(e), o.o(e);
639
+ $observeItem: (e, t) => (n.set(e, t), o.i(e), () => {
640
+ n.delete(e), o.o(e);
494
641
  }),
495
642
  async $scroll(e, t) {
496
- await n[0] && s.m(e, t);
643
+ await r[0] && s.p(e, t);
497
644
  },
498
645
  $effect() {
499
646
  s && s.u();
@@ -501,45 +648,44 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
501
648
  $getBaseOffset: e.$getStartSpacerSize
502
649
  };
503
650
  })(s, this.horizontal()), s.$subscribe(1, e => {
504
- this.P.set(s.$getStateVersion()), e && this.N.tick();
651
+ this.$.set(s.$getStateVersion()), e && this.N.tick();
505
652
  }), s.$subscribe(4, () => {
506
- this.scroll.emit(s.$getScrollOffset());
653
+ this.scrolled.emit(s.$getScrollOffset());
507
654
  }), s.$subscribe(8, () => {
508
- this.scrollEnd.emit();
509
- }), this.P.set(s.$getStateVersion());
655
+ this.scrollEnded.emit();
656
+ }), this.$.set(s.$getStateVersion());
510
657
  }
511
658
  get cache() {
512
659
  return this.S.$snapshot();
513
660
  }
514
661
  get scrollOffset() {
515
- return this.p.$getScrollOffset();
662
+ return this.h.$getScrollOffset();
516
663
  }
517
664
  get scrollSize() {
518
- return e = this.p, b(e.$getTotalSize(), e.$getViewportSize());
519
- var e;
665
+ return M(this.h);
520
666
  }
521
667
  get viewportSize() {
522
- return this.p.$getViewportSize();
668
+ return this.h.$getViewportSize();
523
669
  }
524
670
  findItemIndex(e) {
525
- return this.p.$findItemIndex(e);
671
+ return this.h.$findItemIndex(e);
526
672
  }
527
673
  getItemOffset(e) {
528
- return this.p.$getItemOffset(e);
674
+ return this.h.$getItemOffset(e);
529
675
  }
530
676
  getItemSize(e) {
531
- return this.p.$getItemSize(e);
677
+ return this.h.$getItemSize(e);
532
678
  }
533
679
  scrollToIndex(e, t) {
534
- L(this.driver, this.p, e, t);
680
+ se(this.driver, this.h, e, t);
535
681
  }
536
682
  scrollTo(e) {
537
- E(this.driver, e);
683
+ ie(this.driver, e);
538
684
  }
539
685
  scrollBy(e) {
540
686
  ((e, t, i) => {
541
- E(e, i + t.$getScrollOffset());
542
- })(this.driver, this.p, e);
687
+ ie(e, i + t.$getScrollOffset());
688
+ })(this.driver, this.h, e);
543
689
  }
544
690
  static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
545
691
  minVersion: "12.0.0",
@@ -642,8 +788,8 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
642
788
  }
643
789
  },
644
790
  outputs: {
645
- scroll: "scroll",
646
- scrollEnd: "scrollEnd"
791
+ scrolled: "scrolled",
792
+ scrollEnded: "scrollEnded"
647
793
  },
648
794
  host: {
649
795
  properties: {
@@ -653,7 +799,7 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
653
799
  queries: [ {
654
800
  propertyName: "contentTemplate",
655
801
  first: !0,
656
- predicate: o,
802
+ predicate: l,
657
803
  emitDistinctChangesOnly: !1,
658
804
  descendants: !0,
659
805
  isSignal: !0
@@ -663,12 +809,12 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
663
809
  isInline: !0,
664
810
  dependencies: [ {
665
811
  kind: "directive",
666
- type: e.forwardRef(() => D),
812
+ type: e.forwardRef(() => ne),
667
813
  selector: "div[virtuaListItem]",
668
814
  inputs: [ "index", "offset", "hide", "horizontal", "isSSR", "resizer", "attrs" ]
669
815
  }, {
670
816
  kind: "directive",
671
- type: e.forwardRef(() => y),
817
+ type: e.forwardRef(() => v),
672
818
  selector: "[ngTemplateOutlet]",
673
819
  inputs: [ "ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector" ]
674
820
  } ],
@@ -678,24 +824,24 @@ z), T = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setI
678
824
 
679
825
  i.OnPush;
680
826
 
681
- var J = class t {
682
- data=p.required();
683
- getKey=p(B);
684
- itemProps=p();
685
- bufferSize=p();
686
- itemSize=p();
687
- ssrCount=p();
688
- shift=p(!1);
689
- horizontal=p(!1);
690
- keepMounted=p();
691
- cacheProp=p(void 0, {
827
+ var ce = class t {
828
+ data=h.required();
829
+ getKey=h(oe);
830
+ itemProps=h();
831
+ bufferSize=h();
832
+ itemSize=h();
833
+ ssrCount=h();
834
+ shift=h(!1);
835
+ horizontal=h(!1);
836
+ keepMounted=h();
837
+ cacheProp=h(void 0, {
692
838
  alias: "cache"
693
839
  });
694
- scroll=f();
695
- scrollEnd=f();
696
- template=u.required(o);
697
- virtualizer=S.required(j);
698
- v=h(n).nativeElement;
840
+ scrolled=f();
841
+ scrollEnded=f();
842
+ template=p.required(l);
843
+ virtualizer=y.required(ae);
844
+ v=d(r).nativeElement;
699
845
  ngOnInit() {
700
846
  const e = this.horizontal(), t = this.v;
701
847
  t.setAttribute("style", `display:${e ? "inline-block" : "block"};${e ? "overflow-x" : "overflow-y"}:auto;contain:strict;width:100%;height:100%;` + (t.getAttribute("style") || ""));
@@ -817,13 +963,13 @@ var J = class t {
817
963
  }
818
964
  },
819
965
  outputs: {
820
- scroll: "scroll",
821
- scrollEnd: "scrollEnd"
966
+ scrolled: "scrolled",
967
+ scrollEnded: "scrollEnded"
822
968
  },
823
969
  queries: [ {
824
970
  propertyName: "template",
825
971
  first: !0,
826
- predicate: o,
972
+ predicate: l,
827
973
  emitDistinctChangesOnly: !1,
828
974
  descendants: !0,
829
975
  isSignal: !0
@@ -831,24 +977,24 @@ var J = class t {
831
977
  viewQueries: [ {
832
978
  propertyName: "virtualizer",
833
979
  first: !0,
834
- predicate: j,
980
+ predicate: ae,
835
981
  emitDistinctChangesOnly: !1,
836
982
  descendants: !0,
837
983
  isSignal: !0
838
984
  } ],
839
985
  ngImport: e,
840
- template: '\n <div\n virtuaVirtualizer\n [data]="data()"\n [getKey]="getKey()"\n [itemProps]="itemProps()"\n [bufferSize]="bufferSize()"\n [itemSize]="itemSize()"\n [ssrCount]="ssrCount()"\n [shift]="shift()"\n [horizontal]="horizontal()"\n [keepMounted]="keepMounted()"\n [cache]="cacheProp()"\n (scroll)="scroll.emit($event)"\n (scrollEnd)="scrollEnd.emit()"\n ></div>\n ',
986
+ template: '\n <div\n virtuaVirtualizer\n [data]="data()"\n [getKey]="getKey()"\n [itemProps]="itemProps()"\n [bufferSize]="bufferSize()"\n [itemSize]="itemSize()"\n [ssrCount]="ssrCount()"\n [shift]="shift()"\n [horizontal]="horizontal()"\n [keepMounted]="keepMounted()"\n [cache]="cacheProp()"\n (scrolled)="scrolled.emit($event)"\n (scrollEnded)="scrollEnded.emit()"\n ></div>\n ',
841
987
  isInline: !0,
842
988
  dependencies: [ {
843
989
  kind: "directive",
844
- type: e.forwardRef(() => j),
990
+ type: e.forwardRef(() => ae),
845
991
  selector: "virtua-virtualizer",
846
992
  inputs: [ "data", "getKey", "itemProps", "bufferSize", "scrollRef", "itemSize", "ssrCount", "shift", "horizontal", "keepMounted", "cache", "startMargin" ],
847
- outputs: [ "scroll", "scrollEnd" ]
993
+ outputs: [ "scrolled", "scrollEnded" ]
848
994
  } ],
849
995
  viewProviders: [ {
850
- provide: W,
851
- useFactory: () => h(t).template
996
+ provide: le,
997
+ useFactory: () => d(t).template
852
998
  } ],
853
999
  changeDetection: e.ChangeDetectionStrategy.OnPush
854
1000
  });
@@ -856,33 +1002,33 @@ var J = class t {
856
1002
 
857
1003
  i.OnPush;
858
1004
 
859
- var Q = class i {
860
- data=p.required();
861
- getKey=p(B);
862
- bufferSize=p();
863
- itemSize=p();
864
- ssrCount=p();
865
- shift=p(!1);
866
- horizontal=p(!1);
867
- cacheProp=p(void 0, {
1005
+ var ue = class i {
1006
+ data=h.required();
1007
+ getKey=h(oe);
1008
+ bufferSize=h();
1009
+ itemSize=h();
1010
+ ssrCount=h();
1011
+ shift=h(!1);
1012
+ horizontal=h(!1);
1013
+ cacheProp=h(void 0, {
868
1014
  alias: "cache"
869
1015
  });
870
- scroll=f();
871
- scrollEnd=f();
872
- template=u.required(o);
873
- p;
1016
+ scrolled=f();
1017
+ scrollEnded=f();
1018
+ template=p.required(l);
1019
+ h;
874
1020
  S;
875
1021
  driver;
876
- v=h(n).nativeElement;
877
- N=h(t);
878
- P=d(void 0);
879
- isSSR=d(!1);
880
- items=c(() => {
881
- this.P();
882
- const e = this.p, t = this.data(), i = this.getKey(), [s, n] = e.$getRange(this.bufferSize()), r = [];
883
- for (let o = s; o <= n; o++) {
1022
+ v=d(r).nativeElement;
1023
+ N=d(t);
1024
+ $=g(void 0);
1025
+ isSSR=g(!1);
1026
+ items=u(() => {
1027
+ this.$();
1028
+ const e = this.h, t = this.data(), i = this.getKey(), [s, r] = e.$getRange(this.bufferSize()), n = [];
1029
+ for (let o = s; o <= r; o++) {
884
1030
  const s = t[o];
885
- r.push({
1031
+ n.push({
886
1032
  key: i(s, o),
887
1033
  index: o,
888
1034
  data: s,
@@ -890,11 +1036,11 @@ var Q = class i {
890
1036
  hide: e.$isUnmeasuredItem(o)
891
1037
  });
892
1038
  }
893
- return r;
1039
+ return n;
894
1040
  });
895
- containerStyle=c(() => {
896
- this.P();
897
- const e = this.horizontal(), t = this.p.$getTotalSize();
1041
+ containerStyle=u(() => {
1042
+ this.$();
1043
+ const e = this.horizontal(), t = this.h.$getTotalSize();
898
1044
  return {
899
1045
  display: "block",
900
1046
  contain: "size style",
@@ -903,93 +1049,93 @@ var Q = class i {
903
1049
  position: "relative",
904
1050
  width: e ? t + "px" : "100%",
905
1051
  height: e ? "100%" : t + "px",
906
- "pointer-events": this.p.$isScrolling() ? "none" : void 0
1052
+ "pointer-events": this.h.$isScrolling() ? "none" : void 0
907
1053
  };
908
1054
  });
909
1055
  constructor() {
910
1056
  m(() => {
911
1057
  const e = this.data().length;
912
- this.p && e !== this.p.$getItemsLength() && this.p.$update(5, [ e, g(this.shift) ]);
1058
+ this.h && e !== this.h.$getItemsLength() && this.h.$update(5, [ e, S(this.shift) ]);
913
1059
  }), a({
914
1060
  read: () => {
915
1061
  this.isSSR.set(!1), this.driver.$observe(this.v);
916
1062
  }
917
- }), l({
1063
+ }), c({
918
1064
  read: () => {
919
- this.P(), this.driver.$effect();
1065
+ this.$(), this.driver.$effect();
920
1066
  }
921
- }), h(s).onDestroy(() => {
922
- this.p?.$dispose(), this.driver?.$dispose();
1067
+ }), d(s).onDestroy(() => {
1068
+ this.h?.$dispose(), this.driver?.$dispose();
923
1069
  });
924
1070
  }
925
1071
  ngOnInit() {
926
1072
  const e = this.itemSize(), t = this.ssrCount();
927
1073
  this.isSSR.set(!!t);
928
- const i = this.S = _(this.data().length, e, this.cacheProp()), s = this.p = T(i, t);
1074
+ const i = this.S = L(this.data().length, e, this.cacheProp()), s = this.h = _(i, t);
929
1075
  this.driver = ((e, t) => {
930
- let i, s, n, r, o, a = k();
931
- const l = /* @__PURE__ */ new WeakMap, c = K(s => {
932
- const n = [];
933
- for (const {target: e, contentRect: {width: r, height: a}} of s) if (e === i) o && o(); else if (e.offsetParent) {
934
- const i = l.get(e);
935
- null != i && n.push([ i, t ? r : a ]);
1076
+ let i, s, r, n, o, l = k();
1077
+ const a = /* @__PURE__ */ new WeakMap, c = ee(s => {
1078
+ const r = [];
1079
+ for (const {target: e, contentRect: {width: n, height: l}} of s) if (e === i) o && o(); else if (e.offsetParent) {
1080
+ const i = a.get(e);
1081
+ null != i && r.push([ i, t ? n : l ]);
936
1082
  }
937
- n.length && e.$update(3, n);
1083
+ r.length && e.$update(3, r);
938
1084
  });
939
1085
  return {
940
- $observe(l) {
941
- const u = F(l), m = w(u), h = i = u.scrollingElement, p = t && "rtl" === getComputedStyle(h).direction, f = (e, t, i, s, n = 0) => {
942
- const r = s ? "offsetLeft" : "offsetTop", o = n + (p ? t.clientWidth - e[r] - e.offsetWidth : e[r]), a = e.offsetParent;
943
- return e !== i && a ? f(a, t, i, s, o) : o;
944
- }, d = r = () => f(l, h, u.body, t), g = o = () => {
945
- e.$update(4, h[t ? "clientWidth" : "clientHeight"]);
1086
+ $observe(a) {
1087
+ const u = C(a), p = O(u), m = i = u.scrollingElement, d = t && "rtl" === getComputedStyle(m).direction, h = (e, t, i, s, r = 0) => {
1088
+ const n = s ? "offsetLeft" : "offsetTop", o = r + (d ? t.clientWidth - e[n] - e.offsetWidth : e[n]), l = e.offsetParent;
1089
+ return e !== i && l ? h(l, t, i, s, o) : o;
1090
+ }, f = n = () => h(a, m, u.body, t), g = o = () => {
1091
+ e.$update(4, m[t ? "clientWidth" : "clientHeight"]);
946
1092
  };
947
- m.addEventListener("resize", g), c.i(h), n = () => {
948
- m.removeEventListener("resize", g);
949
- }, s = V(e, m, h, t, p, null, d), a[1](!0);
1093
+ p.addEventListener("resize", g), c.i(m), r = () => {
1094
+ p.removeEventListener("resize", g);
1095
+ }, s = te(e, p, m, t, d, null, f), l[1](!0);
950
1096
  },
951
1097
  $dispose() {
952
- n && n(), c.l(), s && s.l(), a[1](!1), a = k();
1098
+ r && r(), c.l(), s && s.l(), l[1](!1), l = k();
953
1099
  },
954
- $observeItem: (e, t) => (l.set(e, t), c.i(e), () => {
955
- l.delete(e), c.o(e);
1100
+ $observeItem: (e, t) => (a.set(e, t), c.i(e), () => {
1101
+ a.delete(e), c.o(e);
956
1102
  }),
957
1103
  async $scroll(e, t) {
958
- await a[0] && s.m(e, t);
1104
+ await l[0] && s.p(e, t);
959
1105
  },
960
1106
  $effect() {
961
1107
  s && s.u();
962
1108
  },
963
- $getBaseOffset: () => r()
1109
+ $getBaseOffset: () => n()
964
1110
  };
965
1111
  })(s, this.horizontal()), s.$subscribe(1, e => {
966
- this.P.set(s.$getStateVersion()), e && this.N.tick();
1112
+ this.$.set(s.$getStateVersion()), e && this.N.tick();
967
1113
  }), s.$subscribe(4, () => {
968
- this.scroll.emit();
1114
+ this.scrolled.emit();
969
1115
  }), s.$subscribe(8, () => {
970
- this.scrollEnd.emit();
971
- }), this.P.set(s.$getStateVersion());
1116
+ this.scrollEnded.emit();
1117
+ }), this.$.set(s.$getStateVersion());
972
1118
  }
973
1119
  get cache() {
974
1120
  return this.S.$snapshot();
975
1121
  }
976
1122
  get scrollOffset() {
977
- return this.p.$getScrollOffset();
1123
+ return this.h.$getScrollOffset();
978
1124
  }
979
1125
  get viewportSize() {
980
- return this.p.$getViewportSize();
1126
+ return this.h.$getViewportSize();
981
1127
  }
982
1128
  findItemIndex(e) {
983
- return this.p.$findItemIndex(e);
1129
+ return this.h.$findItemIndex(e);
984
1130
  }
985
1131
  getItemOffset(e) {
986
- return this.p.$getItemOffset(e);
1132
+ return this.h.$getItemOffset(e);
987
1133
  }
988
1134
  getItemSize(e) {
989
- return this.p.$getItemSize(e);
1135
+ return this.h.$getItemSize(e);
990
1136
  }
991
1137
  scrollToIndex(e, t) {
992
- L(this.driver, this.p, e, t);
1138
+ se(this.driver, this.h, e, t);
993
1139
  }
994
1140
  static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
995
1141
  minVersion: "12.0.0",
@@ -1064,8 +1210,8 @@ var Q = class i {
1064
1210
  }
1065
1211
  },
1066
1212
  outputs: {
1067
- scroll: "scroll",
1068
- scrollEnd: "scrollEnd"
1213
+ scrolled: "scrolled",
1214
+ scrollEnded: "scrollEnded"
1069
1215
  },
1070
1216
  host: {
1071
1217
  properties: {
@@ -1075,7 +1221,7 @@ var Q = class i {
1075
1221
  queries: [ {
1076
1222
  propertyName: "template",
1077
1223
  first: !0,
1078
- predicate: o,
1224
+ predicate: l,
1079
1225
  emitDistinctChangesOnly: !1,
1080
1226
  descendants: !0,
1081
1227
  isSignal: !0
@@ -1085,12 +1231,12 @@ var Q = class i {
1085
1231
  isInline: !0,
1086
1232
  dependencies: [ {
1087
1233
  kind: "directive",
1088
- type: e.forwardRef(() => D),
1234
+ type: e.forwardRef(() => ne),
1089
1235
  selector: "div[virtuaListItem]",
1090
1236
  inputs: [ "index", "offset", "hide", "horizontal", "isSSR", "resizer", "attrs" ]
1091
1237
  }, {
1092
1238
  kind: "directive",
1093
- type: e.forwardRef(() => y),
1239
+ type: e.forwardRef(() => v),
1094
1240
  selector: "[ngTemplateOutlet]",
1095
1241
  inputs: [ "ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector" ]
1096
1242
  } ],
@@ -1100,5 +1246,682 @@ var Q = class i {
1100
1246
 
1101
1247
  i.OnPush;
1102
1248
 
1103
- export { J as VList, j as Virtualizer, Q as WindowVirtualizer };
1249
+ var pe = class t {
1250
+ state=h.required();
1251
+ resizer=h.required();
1252
+ constructor() {
1253
+ const e = d(r).nativeElement, t = u(() => this.state().$measureRow), i = u(() => this.state().$measureCol);
1254
+ let n;
1255
+ c({
1256
+ read: () => {
1257
+ const s = t(), r = i();
1258
+ n && n(), n = null == s && null == r ? void 0 : S(this.resizer)(e, s, r);
1259
+ }
1260
+ }), d(s).onDestroy(() => {
1261
+ n && n();
1262
+ });
1263
+ }
1264
+ static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
1265
+ minVersion: "12.0.0",
1266
+ version: "22.0.8",
1267
+ ngImport: e,
1268
+ type: t,
1269
+ deps: [],
1270
+ target: e.ɵɵFactoryTarget.Directive
1271
+ });
1272
+ static ɵdir=/*@__PURE__*/ e.ɵɵngDeclareDirective({
1273
+ minVersion: "17.1.0",
1274
+ version: "22.0.8",
1275
+ type: t,
1276
+ isStandalone: !0,
1277
+ selector: "div[virtuaGridCell]",
1278
+ inputs: {
1279
+ state: {
1280
+ classPropertyName: "state",
1281
+ publicName: "state",
1282
+ isSignal: !0,
1283
+ isRequired: !0,
1284
+ transformFunction: null
1285
+ },
1286
+ resizer: {
1287
+ classPropertyName: "resizer",
1288
+ publicName: "resizer",
1289
+ isSignal: !0,
1290
+ isRequired: !0,
1291
+ transformFunction: null
1292
+ }
1293
+ },
1294
+ host: {
1295
+ properties: {
1296
+ style: "state().$style",
1297
+ "attr.role": "state().$role",
1298
+ "attr.aria-colindex": "state().$col + 1",
1299
+ "attr.aria-rowspan": "state().$rowSpan",
1300
+ "attr.aria-colspan": "state().$colSpan",
1301
+ "attr.aria-sort": "state().$sort"
1302
+ }
1303
+ },
1304
+ ngImport: e
1305
+ });
1306
+ }, me = class t {
1307
+ state=h.required();
1308
+ template=h.required();
1309
+ row=h.required();
1310
+ cols=h.required();
1311
+ resizer=h.required();
1312
+ colItem(e) {
1313
+ return K(this.cols(), e);
1314
+ }
1315
+ static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
1316
+ minVersion: "12.0.0",
1317
+ version: "22.0.8",
1318
+ ngImport: e,
1319
+ type: t,
1320
+ deps: [],
1321
+ target: e.ɵɵFactoryTarget.Component
1322
+ });
1323
+ static ɵcmp=/*@__PURE__*/ e.ɵɵngDeclareComponent({
1324
+ minVersion: "17.0.0",
1325
+ version: "22.0.8",
1326
+ type: t,
1327
+ isStandalone: !0,
1328
+ selector: "div[virtuaGridRow]",
1329
+ inputs: {
1330
+ state: {
1331
+ classPropertyName: "state",
1332
+ publicName: "state",
1333
+ isSignal: !0,
1334
+ isRequired: !0,
1335
+ transformFunction: null
1336
+ },
1337
+ template: {
1338
+ classPropertyName: "template",
1339
+ publicName: "template",
1340
+ isSignal: !0,
1341
+ isRequired: !0,
1342
+ transformFunction: null
1343
+ },
1344
+ row: {
1345
+ classPropertyName: "row",
1346
+ publicName: "row",
1347
+ isSignal: !0,
1348
+ isRequired: !0,
1349
+ transformFunction: null
1350
+ },
1351
+ cols: {
1352
+ classPropertyName: "cols",
1353
+ publicName: "cols",
1354
+ isSignal: !0,
1355
+ isRequired: !0,
1356
+ transformFunction: null
1357
+ },
1358
+ resizer: {
1359
+ classPropertyName: "resizer",
1360
+ publicName: "resizer",
1361
+ isSignal: !0,
1362
+ isRequired: !0,
1363
+ transformFunction: null
1364
+ }
1365
+ },
1366
+ host: {
1367
+ attributes: {
1368
+ role: "row"
1369
+ },
1370
+ properties: {
1371
+ "attr.aria-rowindex": "state().$row + 1",
1372
+ style: "state().$style"
1373
+ }
1374
+ },
1375
+ ngImport: e,
1376
+ template: '\n @for (cell of state().$cells; track cell.$col) {\n <div virtuaGridCell [state]="cell" [resizer]="resizer()">\n <ng-container\n [ngTemplateOutlet]="template()"\n [ngTemplateOutletContext]="{\n $implicit: row(),\n row: row(),\n col: colItem(cell.$col),\n cell: { rowIndex: state().$row, colIndex: cell.$col },\n }"\n />\n </div>\n }\n ',
1377
+ isInline: !0,
1378
+ dependencies: [ {
1379
+ kind: "directive",
1380
+ type: e.forwardRef(() => pe),
1381
+ selector: "div[virtuaGridCell]",
1382
+ inputs: [ "state", "resizer" ]
1383
+ }, {
1384
+ kind: "directive",
1385
+ type: e.forwardRef(() => v),
1386
+ selector: "[ngTemplateOutlet]",
1387
+ inputs: [ "ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector" ]
1388
+ } ],
1389
+ changeDetection: e.ChangeDetectionStrategy.OnPush
1390
+ });
1391
+ }, de = class t {
1392
+ state=h.required();
1393
+ template=h.required();
1394
+ rows=h.required();
1395
+ cols=h.required();
1396
+ resizer=h.required();
1397
+ rowItem(e) {
1398
+ return K(this.rows(), e);
1399
+ }
1400
+ static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
1401
+ minVersion: "12.0.0",
1402
+ version: "22.0.8",
1403
+ ngImport: e,
1404
+ type: t,
1405
+ deps: [],
1406
+ target: e.ɵɵFactoryTarget.Component
1407
+ });
1408
+ static ɵcmp=/*@__PURE__*/ e.ɵɵngDeclareComponent({
1409
+ minVersion: "17.0.0",
1410
+ version: "22.0.8",
1411
+ type: t,
1412
+ isStandalone: !0,
1413
+ selector: "div[virtuaGridRowGroup]",
1414
+ inputs: {
1415
+ state: {
1416
+ classPropertyName: "state",
1417
+ publicName: "state",
1418
+ isSignal: !0,
1419
+ isRequired: !0,
1420
+ transformFunction: null
1421
+ },
1422
+ template: {
1423
+ classPropertyName: "template",
1424
+ publicName: "template",
1425
+ isSignal: !0,
1426
+ isRequired: !0,
1427
+ transformFunction: null
1428
+ },
1429
+ rows: {
1430
+ classPropertyName: "rows",
1431
+ publicName: "rows",
1432
+ isSignal: !0,
1433
+ isRequired: !0,
1434
+ transformFunction: null
1435
+ },
1436
+ cols: {
1437
+ classPropertyName: "cols",
1438
+ publicName: "cols",
1439
+ isSignal: !0,
1440
+ isRequired: !0,
1441
+ transformFunction: null
1442
+ },
1443
+ resizer: {
1444
+ classPropertyName: "resizer",
1445
+ publicName: "resizer",
1446
+ isSignal: !0,
1447
+ isRequired: !0,
1448
+ transformFunction: null
1449
+ }
1450
+ },
1451
+ host: {
1452
+ attributes: {
1453
+ role: "rowgroup"
1454
+ },
1455
+ properties: {
1456
+ style: "state().$style"
1457
+ }
1458
+ },
1459
+ ngImport: e,
1460
+ template: '\n @for (row of state().$rows; track row.$row) {\n <div\n virtuaGridRow\n [state]="row"\n [template]="template()"\n [row]="rowItem(row.$row)"\n [cols]="cols()"\n [resizer]="resizer()"\n ></div>\n }\n ',
1461
+ isInline: !0,
1462
+ dependencies: [ {
1463
+ kind: "directive",
1464
+ type: e.forwardRef(() => me),
1465
+ selector: "div[virtuaGridRow]",
1466
+ inputs: [ "state", "template", "row", "cols", "resizer" ]
1467
+ } ],
1468
+ changeDetection: e.ChangeDetectionStrategy.OnPush
1469
+ });
1470
+ }, he = class i {
1471
+ rows=h.required();
1472
+ cols=h.required();
1473
+ rowHeight=h.required();
1474
+ colWidth=h.required();
1475
+ headerRows=h();
1476
+ sectionRows=h();
1477
+ footerRows=h();
1478
+ headerCols=h();
1479
+ footerCols=h();
1480
+ spans=h();
1481
+ keepMounted=h();
1482
+ bufferSize=h();
1483
+ gap=h(0);
1484
+ ariaSort=h();
1485
+ verticalScrolled=f();
1486
+ horizontalScrolled=f();
1487
+ scrollEnded=f();
1488
+ template=p.required(l);
1489
+ container=y.required("container");
1490
+ I;
1491
+ P;
1492
+ q;
1493
+ F;
1494
+ driver;
1495
+ v=d(r).nativeElement;
1496
+ N=d(t);
1497
+ $=g(void 0);
1498
+ ariaRowCount=d(new n("aria-rowcount"), {
1499
+ optional: !0
1500
+ });
1501
+ ariaColCount=d(new n("aria-colcount"), {
1502
+ optional: !0
1503
+ });
1504
+ rowCount=u(() => this.$() && this.I.$getItemsLength());
1505
+ colCount=u(() => this.$() && this.P.$getItemsLength());
1506
+ plan=u(() => (this.$(), ((e, t, i, s, r = 0, n = z, o = 0, l = 0, a = 0, c = z, u = z, p) => {
1507
+ const m = e.$getLength(), d = t.$getLength(), h = b(r, m), f = N(m - o, h), g = b(l, d), S = N(d - a, g), y = I(i[0], h, f), v = b(i[1], f - 1), w = I(s[0], g, S), $ = b(s[1], S - 1), R = B(n, h, f), x = N(g - 1, 0), q = [], F = [], k = [];
1508
+ for (const e of u) e.rowIndex < m && e.colIndex < d && k.push(e);
1509
+ const C = R.length;
1510
+ C && (J(q, R, y, f), F.push(x));
1511
+ let O = c, T = 0;
1512
+ do {
1513
+ for (;T < k.length; T++) {
1514
+ const {rowIndex: e, colIndex: t} = k[T];
1515
+ q.push(e), J(q, R, e, f), F.push(t);
1516
+ }
1517
+ const e = [];
1518
+ for (const t of O) {
1519
+ const i = t.rowIndex, s = t.colIndex, r = X(t, m), n = Y(t, d);
1520
+ if (i < m && s < d && (r - i > 1 || n - s > 1)) if (A(q, i, r, h, y, v, f)) if (A(F, s, n, g, w, $, S)) k.push(t); else {
1521
+ const s = j(R, r - 1, f);
1522
+ (i < h || s >= 0 && R[s] >= i) && e.push(t);
1523
+ } else s < g && e.push(t);
1524
+ }
1525
+ O = e;
1526
+ } while (T < k.length);
1527
+ P(q), P(F);
1528
+ const M = Q(q, m, h, y, v, f), _ = Q(F, d, g, w, $, S), V = M.length, E = _.length, L = /* @__PURE__ */ new Map, D = [], K = [];
1529
+ for (const e of k) {
1530
+ const t = X(e, m), i = Y(e, d);
1531
+ D.push(t), K.push(i);
1532
+ const s = _.indexOf(e.colIndex);
1533
+ for (let r = M.indexOf(e.rowIndex); r < V && M[r] < t; r++) {
1534
+ const t = M[r] * d;
1535
+ for (let r = s; r < E && _[r] < i; r++) L.set(t + _[r], e);
1536
+ }
1537
+ }
1538
+ const G = [];
1539
+ for (const e of _) G.push(!t.$isMeasurable(e) && null);
1540
+ const W = [], ee = e.$getItemOffset(h), te = [];
1541
+ let ie = te;
1542
+ const se = H.get(e), re = /* @__PURE__ */ new Map;
1543
+ for (const i of M) {
1544
+ const s = i < h, r = i >= f, n = r || i >= y && i <= v, o = j(R, i, f), l = s ? 0 : r ? f : o < 0 ? -1 : R[o];
1545
+ if (i === l) {
1546
+ const e = s ? h : r ? m : o + 1 < C ? R[o + 1] : f;
1547
+ D.push(e);
1548
+ const t = [];
1549
+ te.push({
1550
+ $key: s ? -1 : r ? -2 : -3 - l,
1551
+ $rows: t,
1552
+ $style: Z(l, e, s || r ? 0 : null, r ? "bottom" : "top", 4)
1553
+ }), ie = t;
1554
+ } else l < 0 && (ie = te);
1555
+ const a = o >= 0 && i === l, c = a ? ee : null, u = i * d, z = se && se.get(i), b = z && z.$cells, I = [];
1556
+ let P = 0, q = !e.$isMeasurable(i) && null, F = i + 1, k = !1;
1557
+ for (let e = 0; e < E; e++) {
1558
+ const r = _[e], o = r < g, l = r >= S, c = l || r >= w && r <= $, h = L.get(u + r);
1559
+ if (h ? h.rowIndex !== i || h.colIndex !== r : !(n && c || s || a || o)) continue;
1560
+ const f = h ? X(h, m) : i + 1, y = h ? Y(h, d) : r + 1, v = f - i > 1, z = y - r > 1, R = v || z, C = R ? f - i : void 0, O = R ? y - r : void 0;
1561
+ let T, M;
1562
+ F = N(F, f);
1563
+ const V = o ? t.$getItemOffset(r) : null, E = l ? t.$getTotalSize() - t.$getItemOffset(y - 1) - t.$getItemSize(y - 1) : null;
1564
+ !1 !== q || v || (T = i, q = !0), !1 !== G[e] || z || (M = r, G[e] = !0);
1565
+ const D = s ? "columnheader" : r === x && (o || a) ? "rowheader" : "cell", K = "cell" !== D && p && p.rowIndex === i && p.colIndex === r ? p.order : void 0;
1566
+ let W;
1567
+ if (b) {
1568
+ for (;P < b.length && b[P].$col < r; ) P++;
1569
+ P < b.length && (W = b[P]);
1570
+ }
1571
+ if (!W || W.$col !== r || W.$rowSpan !== C || W.$colSpan !== O || W.$start !== V || W.$end !== E || W.$measureRow !== T || W.$measureCol !== M || W.$role !== D || W.$sort !== K) {
1572
+ const e = {
1573
+ contain: "layout style",
1574
+ display: "grid",
1575
+ gridArea: R ? "1/l" + r + "/l" + f + "/l" + y : "1/l" + r
1576
+ };
1577
+ v && (e.height = "0px", e.minHeight = "100%", e.zIndex = 1), z && (e.width = "0px",
1578
+ e.minWidth = "100%"), (o || l) && (o ? e.insetInlineStart = V + "px" : e.insetInlineEnd = E + "px",
1579
+ e.position = "sticky", e.zIndex = 2), W = {
1580
+ $col: r,
1581
+ $rowSpan: C,
1582
+ $colSpan: O,
1583
+ $measureRow: T,
1584
+ $measureCol: M,
1585
+ $role: D,
1586
+ $sort: K,
1587
+ $style: e,
1588
+ $start: V,
1589
+ $end: E
1590
+ }, k = !0;
1591
+ }
1592
+ I.push(W);
1593
+ }
1594
+ if (W.push(q), !I.length) continue;
1595
+ const O = z && !k && z.$cells.length === I.length && z.$top === c ? z : {
1596
+ $row: i,
1597
+ $cells: I,
1598
+ $style: Z(i, F, c, "top", 3),
1599
+ $top: c
1600
+ };
1601
+ re.set(i, O), ie.push(O);
1602
+ }
1603
+ return H.set(e, re), {
1604
+ $rowTemplate: U(e, M, W, P(D), "max-content", m),
1605
+ $colTemplate: U(t, _, G, P(K), "minmax(max-content,auto)", d),
1606
+ $groups: te
1607
+ };
1608
+ })(this.q, this.F, this.I.$getRange(this.bufferSize()), this.P.$getRange(this.bufferSize()), this.headerRows(), this.sectionRows(), this.footerRows(), this.headerCols(), this.footerCols(), this.spans(), this.keepMounted(), this.ariaSort())));
1609
+ rowItem(e) {
1610
+ return K(this.rows(), e);
1611
+ }
1612
+ containerStyle=u(() => {
1613
+ this.$();
1614
+ const {$rowTemplate: e, $colTemplate: t} = this.plan(), i = this.I.$getItemOffset(0), s = this.P.$getItemOffset(0);
1615
+ return {
1616
+ contain: "size style",
1617
+ "overflow-anchor": "none",
1618
+ flex: "none",
1619
+ display: "grid",
1620
+ "grid-template-rows": e,
1621
+ "grid-template-columns": t,
1622
+ gap: this.gap() + "px",
1623
+ "margin-top": i + "px",
1624
+ "margin-inline-start": s + "px",
1625
+ height: M(this.I) - i + "px",
1626
+ "pointer-events": this.I.$isScrolling() || this.P.$isScrolling() ? "none" : void 0
1627
+ };
1628
+ });
1629
+ constructor() {
1630
+ m(() => {
1631
+ const e = this.rows(), t = this.cols(), i = this.rowHeight(), s = this.colWidth();
1632
+ this.I && S(() => {
1633
+ W(this.I, this.q, e, i), W(this.P, this.F, t, s);
1634
+ });
1635
+ }), a({
1636
+ read: () => {
1637
+ this.driver.$observe(this.container().nativeElement);
1638
+ }
1639
+ }), c({
1640
+ read: () => {
1641
+ this.$(), this.driver.$effect();
1642
+ }
1643
+ }), d(s).onDestroy(() => {
1644
+ this.I?.$dispose(), this.P?.$dispose(), this.driver?.$dispose();
1645
+ });
1646
+ }
1647
+ ngOnInit() {
1648
+ const e = this.v;
1649
+ e.setAttribute("style", "display:block;overflow:auto;contain:strict;width:100%;height:100%;" + (e.getAttribute("style") || ""));
1650
+ const t = this.gap(), i = this.q = G(this.rows(), this.rowHeight(), t), s = this.F = G(this.cols(), this.colWidth(), t), r = this.I = _(i), n = this.P = _(s);
1651
+ this.driver = ((e, t) => {
1652
+ let i, s, r, n = k();
1653
+ const o = /* @__PURE__ */ new WeakMap, l = /* @__PURE__ */ new WeakMap, a = ee(s => {
1654
+ const r = [], n = [];
1655
+ for (const {target: a, contentRect: {width: c, height: u}} of s) if (a === i) (c || u) && (e.$update(4, u),
1656
+ t.$update(4, c)); else if (a.offsetParent) {
1657
+ const e = o.get(a), t = l.get(a);
1658
+ null != e && r.push([ e, u ]), null != t && n.push([ t, c ]);
1659
+ }
1660
+ r.length && e.$update(3, r), n.length && t.$update(3, n);
1661
+ });
1662
+ return {
1663
+ async $scroll(e, t) {
1664
+ await n[0] && (e ? r : s).p(t);
1665
+ },
1666
+ $observe(o) {
1667
+ const l = i = o.parentElement;
1668
+ a.i(l);
1669
+ const c = (e, t) => te(e, l, l, t, t && "rtl" === getComputedStyle(l).direction, () => {
1670
+ const e = t ? "overflowX" : "overflowY", i = l.style, s = i[e];
1671
+ i[e] = "hidden", x(() => {
1672
+ i[e] = s;
1673
+ });
1674
+ });
1675
+ s = c(e, !1), r = c(t, !0), n[1](!0);
1676
+ },
1677
+ $dispose() {
1678
+ a.l(), s && s.l(), r && r.l(), n[1](!1), n = k();
1679
+ },
1680
+ $observeItem: (e, t, i) => (null != t && o.set(e, t), null != i && l.set(e, i),
1681
+ a.i(e), () => {
1682
+ o.delete(e), l.delete(e), a.o(e);
1683
+ }),
1684
+ $effect() {
1685
+ s && s.u(), r && r.u();
1686
+ }
1687
+ };
1688
+ })(r, n);
1689
+ const o = e => {
1690
+ this.$.set(r.$getStateVersion() + n.$getStateVersion()), e && this.N.tick();
1691
+ };
1692
+ r.$subscribe(1, o), n.$subscribe(1, o);
1693
+ let l = !1;
1694
+ r.$subscribe(4, () => {
1695
+ l = !0, this.verticalScrolled.emit(r.$getScrollOffset());
1696
+ }), n.$subscribe(4, () => {
1697
+ l = !0, this.horizontalScrolled.emit(n.$getScrollOffset());
1698
+ });
1699
+ const a = () => {
1700
+ !l || r.$isScrolling() || n.$isScrolling() || (l = !1, this.scrollEnded.emit());
1701
+ };
1702
+ r.$subscribe(8, a), n.$subscribe(8, a), o();
1703
+ }
1704
+ get verticalScrollOffset() {
1705
+ return this.I.$getScrollOffset();
1706
+ }
1707
+ get horizontalScrollOffset() {
1708
+ return this.P.$getScrollOffset();
1709
+ }
1710
+ get scrollHeight() {
1711
+ return M(this.I);
1712
+ }
1713
+ get scrollWidth() {
1714
+ return M(this.P);
1715
+ }
1716
+ get viewportHeight() {
1717
+ return this.I.$getViewportSize();
1718
+ }
1719
+ get viewportWidth() {
1720
+ return this.P.$getViewportSize();
1721
+ }
1722
+ findRowIndex(e) {
1723
+ return this.I.$findItemIndex(e);
1724
+ }
1725
+ findColIndex(e) {
1726
+ return this.P.$findItemIndex(e);
1727
+ }
1728
+ getRowOffset(e) {
1729
+ return this.I.$getItemOffset(e);
1730
+ }
1731
+ getColOffset(e) {
1732
+ return this.P.$getItemOffset(e);
1733
+ }
1734
+ getRowSize(e) {
1735
+ return this.I.$getItemSize(e);
1736
+ }
1737
+ getColSize(e) {
1738
+ return this.P.$getItemSize(e);
1739
+ }
1740
+ scrollToIndex(e) {
1741
+ ((e, t, i, s = 0, r = z, n = 0, o = 0, l = 0, {rowIndex: a, colIndex: c, rowAlign: u, colAlign: p}) => {
1742
+ null != a && re(e, t, s, r, n, a, u, !1), null != c && re(e, i, o, z, l, c, p, !0);
1743
+ })(this.driver, this.I, this.P, this.headerRows(), this.sectionRows(), this.footerRows(), this.headerCols(), this.footerCols(), e);
1744
+ }
1745
+ scrollTo({vertical: e, horizontal: t}) {
1746
+ ((e, t, i) => {
1747
+ null != t && e.$scroll(!1, () => t), null != i && e.$scroll(!0, () => i);
1748
+ })(this.driver, e, t);
1749
+ }
1750
+ scrollBy({vertical: e, horizontal: t}) {
1751
+ ((e, t, i, s, r) => {
1752
+ if (null != s) {
1753
+ const i = s + t.$getScrollOffset();
1754
+ e.$scroll(!1, () => i);
1755
+ }
1756
+ if (null != r) {
1757
+ const t = r + i.$getScrollOffset();
1758
+ e.$scroll(!0, () => t);
1759
+ }
1760
+ })(this.driver, this.I, this.P, e, t);
1761
+ }
1762
+ static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
1763
+ minVersion: "12.0.0",
1764
+ version: "22.0.8",
1765
+ ngImport: e,
1766
+ type: i,
1767
+ deps: [],
1768
+ target: e.ɵɵFactoryTarget.Component
1769
+ });
1770
+ static ɵcmp=/*@__PURE__*/ e.ɵɵngDeclareComponent({
1771
+ minVersion: "17.0.0",
1772
+ version: "22.0.8",
1773
+ type: i,
1774
+ isStandalone: !0,
1775
+ selector: "virtua-vgrid",
1776
+ inputs: {
1777
+ rows: {
1778
+ classPropertyName: "rows",
1779
+ publicName: "rows",
1780
+ isSignal: !0,
1781
+ isRequired: !0,
1782
+ transformFunction: null
1783
+ },
1784
+ cols: {
1785
+ classPropertyName: "cols",
1786
+ publicName: "cols",
1787
+ isSignal: !0,
1788
+ isRequired: !0,
1789
+ transformFunction: null
1790
+ },
1791
+ rowHeight: {
1792
+ classPropertyName: "rowHeight",
1793
+ publicName: "rowHeight",
1794
+ isSignal: !0,
1795
+ isRequired: !0,
1796
+ transformFunction: null
1797
+ },
1798
+ colWidth: {
1799
+ classPropertyName: "colWidth",
1800
+ publicName: "colWidth",
1801
+ isSignal: !0,
1802
+ isRequired: !0,
1803
+ transformFunction: null
1804
+ },
1805
+ headerRows: {
1806
+ classPropertyName: "headerRows",
1807
+ publicName: "headerRows",
1808
+ isSignal: !0,
1809
+ isRequired: !1,
1810
+ transformFunction: null
1811
+ },
1812
+ sectionRows: {
1813
+ classPropertyName: "sectionRows",
1814
+ publicName: "sectionRows",
1815
+ isSignal: !0,
1816
+ isRequired: !1,
1817
+ transformFunction: null
1818
+ },
1819
+ footerRows: {
1820
+ classPropertyName: "footerRows",
1821
+ publicName: "footerRows",
1822
+ isSignal: !0,
1823
+ isRequired: !1,
1824
+ transformFunction: null
1825
+ },
1826
+ headerCols: {
1827
+ classPropertyName: "headerCols",
1828
+ publicName: "headerCols",
1829
+ isSignal: !0,
1830
+ isRequired: !1,
1831
+ transformFunction: null
1832
+ },
1833
+ footerCols: {
1834
+ classPropertyName: "footerCols",
1835
+ publicName: "footerCols",
1836
+ isSignal: !0,
1837
+ isRequired: !1,
1838
+ transformFunction: null
1839
+ },
1840
+ spans: {
1841
+ classPropertyName: "spans",
1842
+ publicName: "spans",
1843
+ isSignal: !0,
1844
+ isRequired: !1,
1845
+ transformFunction: null
1846
+ },
1847
+ keepMounted: {
1848
+ classPropertyName: "keepMounted",
1849
+ publicName: "keepMounted",
1850
+ isSignal: !0,
1851
+ isRequired: !1,
1852
+ transformFunction: null
1853
+ },
1854
+ bufferSize: {
1855
+ classPropertyName: "bufferSize",
1856
+ publicName: "bufferSize",
1857
+ isSignal: !0,
1858
+ isRequired: !1,
1859
+ transformFunction: null
1860
+ },
1861
+ gap: {
1862
+ classPropertyName: "gap",
1863
+ publicName: "gap",
1864
+ isSignal: !0,
1865
+ isRequired: !1,
1866
+ transformFunction: null
1867
+ },
1868
+ ariaSort: {
1869
+ classPropertyName: "ariaSort",
1870
+ publicName: "ariaSort",
1871
+ isSignal: !0,
1872
+ isRequired: !1,
1873
+ transformFunction: null
1874
+ }
1875
+ },
1876
+ outputs: {
1877
+ verticalScrolled: "verticalScrolled",
1878
+ horizontalScrolled: "horizontalScrolled",
1879
+ scrollEnded: "scrollEnded"
1880
+ },
1881
+ host: {
1882
+ attributes: {
1883
+ role: "table"
1884
+ },
1885
+ properties: {
1886
+ "attr.aria-rowcount": "ariaRowCount ?? rowCount()",
1887
+ "attr.aria-colcount": "ariaColCount ?? colCount()"
1888
+ }
1889
+ },
1890
+ queries: [ {
1891
+ propertyName: "template",
1892
+ first: !0,
1893
+ predicate: l,
1894
+ emitDistinctChangesOnly: !1,
1895
+ descendants: !0,
1896
+ isSignal: !0
1897
+ } ],
1898
+ viewQueries: [ {
1899
+ propertyName: "container",
1900
+ first: !0,
1901
+ predicate: [ "container" ],
1902
+ emitDistinctChangesOnly: !1,
1903
+ descendants: !0,
1904
+ isSignal: !0
1905
+ } ],
1906
+ ngImport: e,
1907
+ template: '\n <div #container [style]="containerStyle()">\n @for (\n state of plan().$groups;\n track "$rows" in state ? state.$key : state.$row\n ) {\n @if ("$rows" in state) {\n <div\n virtuaGridRowGroup\n [state]="state"\n [template]="template()"\n [rows]="rows()"\n [cols]="cols()"\n [resizer]="driver.$observeItem"\n ></div>\n } @else {\n <div\n virtuaGridRow\n [state]="state"\n [template]="template()"\n [row]="rowItem(state.$row)"\n [cols]="cols()"\n [resizer]="driver.$observeItem"\n ></div>\n }\n }\n </div>\n ',
1908
+ isInline: !0,
1909
+ dependencies: [ {
1910
+ kind: "directive",
1911
+ type: e.forwardRef(() => de),
1912
+ selector: "div[virtuaGridRowGroup]",
1913
+ inputs: [ "state", "template", "rows", "cols", "resizer" ]
1914
+ }, {
1915
+ kind: "directive",
1916
+ type: e.forwardRef(() => me),
1917
+ selector: "div[virtuaGridRow]",
1918
+ inputs: [ "state", "template", "row", "cols", "resizer" ]
1919
+ } ],
1920
+ changeDetection: e.ChangeDetectionStrategy.OnPush
1921
+ });
1922
+ };
1923
+
1924
+ i.OnPush, i.OnPush, i.OnPush;
1925
+
1926
+ export { he as VGrid, ce as VList, ae as Virtualizer, ue as WindowVirtualizer };
1104
1927
  //# sourceMappingURL=index.js.map