virtua 0.50.5 → 0.51.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.
@@ -4,23 +4,20 @@ import { ApplicationRef as t, ChangeDetectionStrategy as i, DestroyRef as s, Ele
4
4
 
5
5
  import { NgTemplateOutlet as y } from "@angular/common";
6
6
 
7
- var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R = e => [ ...e ].sort((e, t) => e - t), $ = setTimeout, I = "function" == typeof queueMicrotask ? queueMicrotask : e => {
7
+ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R = e => [ ...e ].sort((e, t) => e - t), I = setTimeout, $ = clearTimeout, q = "function" == typeof queueMicrotask ? queueMicrotask : e => {
8
8
  Promise.resolve().then(e);
9
- }, q = () => {
9
+ }, x = () => {
10
10
  let e;
11
11
  return [ new Promise(t => {
12
12
  e = t;
13
13
  }), e ];
14
- }, x = e => {
14
+ }, k = e => e.ownerDocument, F = e => e.defaultView, w = /*#__PURE__*/ (e => {
15
15
  let t;
16
16
  return () => (e && (t = e(), e = void 0), t);
17
- }, k = e => e.documentElement, F = e => e.ownerDocument, w = e => e.defaultView, O = /*#__PURE__*/ x(() => !!/iP(hone|od|ad)/.test(navigator.userAgent) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 0), T = /*#__PURE__*/ x(() => "scrollBehavior" in k(document).style), C = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setItemSize: n, $isSizeEqual: r, $getTotalSize: o, $getLength: a, $setLength: l, $estimateDefaultSize: c}, u = 0) => {
18
- let m = !!c, h = !!u, p = 1, f = 0, d = 0, g = 0, S = 0, y = 0, N = 0, P = 0, R = 0, $ = null, I = [ 0, h ? z(u - 1, 0) : -1 ], q = 0, x = !1;
19
- const k = /* @__PURE__ */ new Set, F = () => g - d, w = () => F() + y + S, T = (e, t) => {
20
- const n = i(e) - y;
21
- return t ? o() - n - s(e) : n;
22
- }, C = e => {
23
- e && (O() && 0 !== P || $ && 1 === R ? y += e : S += e);
17
+ })(() => !!/iP(hone|od|ad)/.test(navigator.userAgent) || "MacIntel" === navigator.platform && navigator.maxTouchPoints > 0), O = ({$getRange: e, $findIndex: t, $getItemOffset: i, $getItemSize: s, $setItemSize: n, $isSizeEqual: r, $getTotalSize: o, $getLength: a, $setLength: l, $estimateDefaultSize: c}, u = 0) => {
18
+ let m = !!c, h = !!u, p = 1, f = 0, d = 0, g = 0, S = 0, y = 0, N = 0, P = 0, R = 0, I = null, $ = [ 0, h ? z(u - 1, 0) : -1 ], q = 0, x = !1;
19
+ const k = /* @__PURE__ */ new Set, F = () => g - d, O = () => F() + y + S, T = e => i(e) - y, C = e => {
20
+ e && (w() && 0 !== P || I && 1 === R ? y += e : S += e);
24
21
  };
25
22
  return {
26
23
  $dispose: () => {
@@ -28,12 +25,12 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
28
25
  },
29
26
  $getStateVersion: () => p,
30
27
  $getRange: (t = 200) => {
31
- if (!x || h) return I;
28
+ if (!x || h) return $;
32
29
  let i, s;
33
- if (N) [i, s] = I; else {
34
- let n = z(0, w()), r = n + f;
35
- m || (t = z(0, t), 1 !== P && (n -= t), 2 !== P && (r += t)), [i, s] = I = e(z(0, n), z(0, r)),
36
- $ && (i = v(i, $[0]), s = z(s, $[1]));
30
+ if (N) [i, s] = $; else {
31
+ let n = z(0, O()), r = n + f;
32
+ m || (t = z(0, t), 1 !== P && (n -= t), 2 !== P && (r += t)), [i, s] = $ = e(z(0, n), z(0, r)),
33
+ I && (i = v(i, I[0]), s = z(s, I[1]));
37
34
  }
38
35
  return [ z(i, 0), v(s, a() - 1) ];
39
36
  },
@@ -70,7 +67,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
70
67
  }
71
68
 
72
69
  case 2:
73
- z = 8, 0 !== P && (u = !0, z += 1), P = 0, R = 0, $ = null;
70
+ z = 8, 0 !== P && (u = !0, z += 1), P = 0, R = 0, I = null;
74
71
  break;
75
72
 
76
73
  case 3:
@@ -79,7 +76,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
79
76
  if (!e.length) break;
80
77
  C(e.reduce((e, [t, i]) => {
81
78
  let n;
82
- if (2 === R) n = !0; else if ($ && 1 === R) n = t < $[0]; else {
79
+ if (2 === R) n = !0; else if (I && 1 === R) n = t < I[0]; else {
83
80
  const e = F(), i = T(t), r = s(t);
84
81
  n = 1 !== P && 0 === R ? i + r <= e : i < e && i + r < e + f;
85
82
  }
@@ -89,7 +86,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
89
86
  const e = s(t), r = n(t, i);
90
87
  m && (q += r ? i : i - e);
91
88
  }
92
- m && f && q > f && (C(c(t(w()))), m = !1), z = 3, v = !0;
89
+ m && f && q > f && (C(c(t(O()))), m = !1), z = 3, v = !0;
93
90
  break;
94
91
  }
95
92
 
@@ -110,27 +107,27 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
110
107
  break;
111
108
 
112
109
  case 8:
113
- $ = e(a, a + f), z = 1;
110
+ I = e(a, a + f), z = 1;
114
111
  }
115
112
  z && (p = 1 + (2147483647 & p), u && y && (S += y, y = 0), k.forEach(([e, t]) => {
116
113
  z & e && t(v);
117
114
  }));
118
115
  }
119
116
  };
120
- }, M = (e, t, i, s = 0, n = t - 1) => {
117
+ }, T = (e, t, i, s = 0, n = t - 1) => {
121
118
  let r = s;
122
119
  for (;s <= n; ) {
123
120
  const t = N((s + n) / 2);
124
121
  e(t) <= i ? (r = t, s = t + 1) : n = t - 1;
125
122
  }
126
123
  return P(r, 0, t - 1);
127
- }, _ = (e, t, i) => {
124
+ }, C = (e, t, i) => {
128
125
  const s = i ? "unshift" : "push";
129
126
  for (let i = 0; i < t; i++) e[s](-1);
130
127
  return e;
131
- }, K = (e, t, i) => {
128
+ }, M = (e, t, i) => {
132
129
  let s = i && i[1] || t || 40, n = -1, r = 0;
133
- const o = i && i[0], a = o ? _(o.slice(0, v(e, o.length)), z(0, e - o.length)) : _([], e), l = _([], e + 1), c = e => {
130
+ const o = i && i[0], a = o ? C(o.slice(0, v(e, o.length)), z(0, e - o.length)) : C([], e), l = C([], e + 1), c = e => {
134
131
  const t = a[e];
135
132
  return -1 === t ? s : t;
136
133
  }, u = t => {
@@ -144,10 +141,10 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
144
141
  return {
145
142
  $getRange: (t, i) => {
146
143
  let s, n;
147
- return r = v(r, e - 1), u(r) <= t ? (n = M(u, e, i, r), s = M(u, e, t, r, n)) : (s = M(u, e, t, void 0, r),
148
- n = M(u, e, i, s)), r = s, [ s, n ];
144
+ return r = v(r, e - 1), u(r) <= t ? (n = T(u, e, i, r), s = T(u, e, t, r, n)) : (s = T(u, e, t, void 0, r),
145
+ n = T(u, e, i, s)), r = s, [ s, n ];
149
146
  },
150
- $findIndex: t => M(u, e, t),
147
+ $findIndex: t => T(u, e, t),
151
148
  $getItemOffset: u,
152
149
  $getItemSize: c,
153
150
  $setItemSize: (e, t) => {
@@ -159,7 +156,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
159
156
  $getLength: () => e,
160
157
  $setLength: (t, i) => {
161
158
  const r = t - e;
162
- return n = i ? -1 : v(t - 1, n), e = t, r > 0 ? (_(l, r), _(a, r, i), s * r) : (l.splice(r),
159
+ return n = i ? -1 : v(t - 1, n), e = t, r > 0 ? (C(l, r), C(a, r, i), s * r) : (l.splice(r),
163
160
  (i ? a.splice(0, -r) : a.splice(r)).reduce((e, t) => e - (-1 === t ? s : t), 0));
164
161
  },
165
162
  $estimateDefaultSize: t ? void 0 : e => {
@@ -173,11 +170,11 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
173
170
  },
174
171
  $snapshot: () => [ a.slice(), s ]
175
172
  };
176
- }, V = e => {
173
+ }, _ = e => {
177
174
  let t;
178
175
  return {
179
176
  i(i) {
180
- (t || (t = new (w(F(i)).ResizeObserver)(e))).observe(i);
177
+ (t || (t = new (F(k(i)).ResizeObserver)(e))).observe(i);
181
178
  },
182
179
  o(e) {
183
180
  t.unobserve(e);
@@ -186,92 +183,72 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
186
183
  t && t.disconnect();
187
184
  }
188
185
  };
189
- }, E = (e, t) => t ? -e : e, L = (e, t, i, s, n, r) => {
190
- const o = Date.now;
191
- let a = 0, l = !1, c = !1, u = !1, m = !1;
192
- const h = (() => {
193
- let t;
194
- const i = () => {
195
- null != t && clearTimeout(t);
196
- }, s = () => {
197
- i(), t = $(() => {
198
- t = null, (() => {
199
- if (l || c) return l = !1, void h();
200
- u = !1, e.$update(2);
201
- })();
202
- }, 150);
203
- };
204
- return s.u = i, s;
205
- })(), p = () => {
206
- a = o(), u && (m = !0), r && e.$update(6, r()), e.$update(1, s()), h();
207
- }, f = t => {
186
+ }, K = (e, t) => t ? -e : e, V = (e, t, i, s, n, r) => {
187
+ let o, a = 0, l = !1, c = !1, u = !1, m = !1;
188
+ const h = Date.now, p = () => {
189
+ if (l || c) return l = !1, void f();
190
+ u = !1, e.$update(2);
191
+ }, f = () => {
192
+ $(o), o = I(p, 150);
193
+ }, d = () => {
194
+ a = h(), u && (m = !0), r && e.$update(6, r()), e.$update(1, s()), f();
195
+ }, g = t => {
208
196
  if (l || !e.$isScrolling() || t.ctrlKey) return;
209
- const s = o() - a;
197
+ const s = h() - a;
210
198
  150 > s && 50 < s && (i ? t.deltaX : t.deltaY) && (l = !0);
211
- }, d = () => {
199
+ }, S = () => {
212
200
  c = !0, u = m = !1;
213
- }, g = () => {
214
- c = !1, O() && (u = !0);
201
+ }, y = () => {
202
+ c = !1, w() && (u = !0);
215
203
  };
216
- return t.addEventListener("scroll", p), t.addEventListener("wheel", f, {
204
+ return t.addEventListener("scroll", d), t.addEventListener("wheel", g, {
217
205
  passive: !0
218
- }), t.addEventListener("touchstart", d, {
206
+ }), t.addEventListener("touchstart", S, {
219
207
  passive: !0
220
- }), t.addEventListener("touchend", g, {
208
+ }), t.addEventListener("touchend", y, {
221
209
  passive: !0
222
210
  }), {
223
211
  l: () => {
224
- t.removeEventListener("scroll", p), t.removeEventListener("wheel", f), t.removeEventListener("touchstart", d),
225
- t.removeEventListener("touchend", g), h.u();
212
+ t.removeEventListener("scroll", d), t.removeEventListener("wheel", g), t.removeEventListener("touchstart", S),
213
+ t.removeEventListener("touchend", y), $(o);
226
214
  },
227
- m: () => {
215
+ u: () => {
228
216
  const [t, i] = e.t();
229
217
  t && (n(t, i, m), m = !1, i && e.$getViewportSize() > e.$getTotalSize() && e.$update(1, s()));
230
218
  }
231
219
  };
232
- }, D = (e, t, i) => {
220
+ }, E = (e, t, i) => {
233
221
  let s;
234
222
  return [ async (n, r) => {
235
223
  if (!await t()) return;
224
+ let o, a, l;
236
225
  s && s();
237
- const o = () => {
238
- const [t, i] = q();
239
- return s = () => {
240
- i(!1);
241
- }, e.$getViewportSize() && $(s, 150), [ t, e.$subscribe(2, () => {
242
- i(!0);
243
- }) ];
244
- };
245
- if (r && T()) e.$update(8, n()), I(async () => {
246
- for (;;) {
247
- let t = !0;
248
- for (let [i, s] = e.$getRange(); i <= s; i++) if (e.$isUnmeasuredItem(i)) {
249
- t = !1;
250
- break;
251
- }
252
- if (t) break;
253
- const [i, s] = o();
254
- try {
255
- if (!await i) return;
256
- } finally {
257
- s();
226
+ const c = s = () => {
227
+ o = !0, $(a), l && l();
228
+ }, u = () => {
229
+ if (!o) {
230
+ if (e.$getViewportSize() && ($(a), a = I(c, 150)), r) {
231
+ for (let [t, i] = e.$getRange(0); t <= i; t++) if (e.$isUnmeasuredItem(t)) return;
232
+ c();
258
233
  }
234
+ e.$update(7), i(n(), r);
259
235
  }
260
- e.$update(7), i(n(), r);
261
- }); else for (;;) {
262
- const [t, s] = o();
263
- try {
264
- if (e.$update(7), i(n()), !await t) return;
265
- } finally {
266
- s();
267
- }
268
- }
236
+ }, m = () => {
237
+ if (o) return;
238
+ let t;
239
+ l = e.$subscribe(2, () => {
240
+ t || (t = !0, q(() => {
241
+ t = !1, u();
242
+ }));
243
+ }), u();
244
+ };
245
+ r ? (e.$update(8, n()), q(m)) : m();
269
246
  }, () => {
270
247
  s && s();
271
248
  } ];
272
- }, B = (e, t) => {
249
+ }, L = (e, t) => {
273
250
  e.$scroll(() => t);
274
- }, W = (e, t, i, {align: s, smooth: n, offset: r = 0} = {}) => {
251
+ }, D = (e, t, i, {align: s, smooth: n, offset: r = 0} = {}) => {
275
252
  if (i = P(i, 0, t.$getItemsLength() - 1), "nearest" === s) {
276
253
  const e = t.$getItemOffset(i), n = t.$getScrollOffset();
277
254
  if (e < n) s = "start"; else {
@@ -279,8 +256,8 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
279
256
  s = "end";
280
257
  }
281
258
  }
282
- e.$scroll(() => r + e.$getBaseOffset() + t.$getItemOffset(i) + ("end" === s ? t.$getItemSize(i) - (t.$getViewportSize() - e.$getScrollbarSize()) : "center" === s ? (t.$getItemSize(i) - (t.$getViewportSize() - e.$getScrollbarSize())) / 2 : 0), n);
283
- }, j = class t {
259
+ 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);
260
+ }, B = class t {
284
261
  index=p.required();
285
262
  offset=p.required();
286
263
  hide=p.required();
@@ -294,7 +271,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
294
271
  position: t && i ? void 0 : "absolute",
295
272
  [e ? "height" : "width"]: "100%",
296
273
  [e ? "top" : "left"]: "0px",
297
- [e ? "left" : "top"]: this.offset() + "px",
274
+ [e ? "inset-inline-start" : "top"]: this.offset() + "px",
298
275
  visibility: !t || i ? void 0 : "hidden",
299
276
  ...this.attrs()?.style
300
277
  };
@@ -392,9 +369,9 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
392
369
  },
393
370
  ngImport: e
394
371
  });
395
- }, J = (e, t) => "_" + t, X = new r("virtua-item-template"), Y = class i {
372
+ }, W = (e, t) => "_" + t, j = new r("virtua-item-template"), J = class i {
396
373
  data=p.required();
397
- getKey=p(J);
374
+ getKey=p(W);
398
375
  itemProps=p();
399
376
  bufferSize=p();
400
377
  scrollRef=p();
@@ -410,20 +387,20 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
410
387
  scroll=f();
411
388
  scrollEnd=f();
412
389
  contentTemplate=u(o);
413
- h=h(X, {
390
+ m=h(j, {
414
391
  optional: !0
415
392
  });
416
- template=c(() => this.h?.() ?? this.contentTemplate());
393
+ template=c(() => this.m?.() ?? this.contentTemplate());
394
+ h;
417
395
  p;
418
- S;
419
396
  driver;
420
- v=h(n).nativeElement;
421
- N=h(t);
422
- P=d(void 0);
397
+ S=h(n).nativeElement;
398
+ v=h(t);
399
+ N=d(void 0);
423
400
  isSSR=d(!1);
424
- R=c(() => {
425
- this.P();
426
- const e = this.data().length, [t, i] = this.p.$getRange(this.bufferSize()), s = this.keepMounted(), n = [];
401
+ P=c(() => {
402
+ this.N();
403
+ const e = this.data().length, [t, i] = this.h.$getRange(this.bufferSize()), s = this.keepMounted(), n = [];
427
404
  if (s) {
428
405
  const r = new Set(s);
429
406
  for (let e = t; e <= i; e++) r.add(e);
@@ -432,26 +409,26 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
432
409
  return n;
433
410
  });
434
411
  items=c(() => {
435
- this.P();
436
- const e = this.p, t = this.data(), i = this.getKey(), s = this.itemProps(), n = this.driver.$isNegative();
437
- return this.R().map(r => {
438
- const o = t[r];
412
+ this.N();
413
+ const e = this.h, t = this.data(), i = this.getKey(), s = this.itemProps();
414
+ return this.P().map(n => {
415
+ const r = t[n];
439
416
  return {
440
- key: i(o, r),
441
- index: r,
442
- data: o,
443
- offset: e.$getItemOffset(r, n),
444
- hide: e.$isUnmeasuredItem(r),
417
+ key: i(r, n),
418
+ index: n,
419
+ data: r,
420
+ offset: e.$getItemOffset(n),
421
+ hide: e.$isUnmeasuredItem(n),
445
422
  attrs: s?.({
446
- item: o,
447
- index: r
423
+ item: r,
424
+ index: n
448
425
  })
449
426
  };
450
427
  });
451
428
  });
452
429
  containerStyle=c(() => {
453
- this.P();
454
- const e = this.horizontal(), t = this.p.$getTotalSize();
430
+ this.N();
431
+ const e = this.horizontal(), t = this.h.$getTotalSize();
455
432
  return {
456
433
  display: "block",
457
434
  contain: "size style",
@@ -460,113 +437,118 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
460
437
  position: "relative",
461
438
  width: e ? t + "px" : "100%",
462
439
  height: e ? "100%" : t + "px",
463
- "pointer-events": this.p.$isScrolling() ? "none" : void 0
440
+ "pointer-events": this.h.$isScrolling() ? "none" : void 0
464
441
  };
465
442
  });
466
443
  constructor() {
467
444
  m(() => {
468
445
  const e = this.data().length;
469
- this.p && e !== this.p.$getItemsLength() && this.p.$update(5, [ e, g(this.shift) ]);
446
+ this.h && e !== this.h.$getItemsLength() && this.h.$update(5, [ e, g(this.shift) ]);
470
447
  }), m(() => {
471
448
  const e = this.startMargin();
472
- this.p && e !== this.p.$getStartSpacerSize() && this.p.$update(6, e);
449
+ this.h && e !== this.h.$getStartSpacerSize() && this.h.$update(6, e);
473
450
  }), a({
474
451
  read: () => {
475
- this.isSSR.set(!1), this.driver.$observe(this.v, this.scrollRef());
452
+ this.isSSR.set(!1), this.driver.$observe(this.S, this.scrollRef());
476
453
  }
477
454
  }), l({
478
455
  read: () => {
479
- this.P(), this.driver.$effect();
456
+ this.N(), this.driver.$effect();
480
457
  }
481
458
  }), h(s).onDestroy(() => {
482
- this.p?.$dispose(), this.driver?.$dispose();
459
+ this.h?.$dispose(), this.driver?.$dispose();
483
460
  });
484
461
  }
485
462
  ngOnInit() {
486
463
  const e = this.itemSize(), t = this.ssrCount();
487
464
  this.isSSR.set(!!t);
488
- const i = this.S = K(this.data().length, e, this.cacheProp()), s = this.p = C(i, t);
465
+ const i = this.p = M(this.data().length, e, this.cacheProp()), s = this.h = O(i, t);
489
466
  this.driver = ((e, t) => {
490
- let i, s, n = q(), r = !1;
491
- const o = t ? "scrollLeft" : "scrollTop", a = t ? "overflowX" : "overflowY", [l, c] = D(e, () => n[0], (e, s) => {
492
- e = E(e, r), s ? i.scrollTo({
493
- [t ? "left" : "top"]: e,
494
- behavior: "smooth"
495
- }) : i[o] = e;
496
- }), u = t ? "width" : "height", m = /* @__PURE__ */ new WeakMap, h = V(t => {
467
+ let i, s, n = x(), r = !1;
468
+ const o = t ? "scrollLeft" : "scrollTop", a = t ? "left" : "top", l = t ? "overflowX" : "overflowY", [c, u] = E(e, () => n[0], (e, t) => {
469
+ i.scrollTo({
470
+ [a]: K(e, r),
471
+ behavior: t ? "smooth" : "instant"
472
+ });
473
+ }), m = t ? "width" : "height", h = /* @__PURE__ */ new WeakMap, p = _(t => {
497
474
  const s = [];
498
- for (const {target: n, contentRect: r} of t) if (n.offsetParent) if (n === i) e.$update(4, r[u]); else {
499
- const e = m.get(n);
500
- null != e && s.push([ e, r[u] ]);
475
+ for (const {target: n, contentRect: r} of t) if (n.offsetParent) if (n === i) e.$update(4, r[m]); else {
476
+ const e = h.get(n);
477
+ null != e && s.push([ e, r[m] ]);
501
478
  }
502
479
  s.length && e.$update(3, s);
503
480
  });
504
481
  return {
505
- $observe(l, u = l.parentElement) {
506
- h.i(i = u), t && (r = "rtl" === getComputedStyle(u).direction), s = L(e, u, t, () => E(u[o], r), (t, i, s) => {
482
+ $observe(c, m = c.parentElement) {
483
+ p.i(i = m), t && (r = "rtl" === getComputedStyle(m).direction), s = V(e, m, t, () => K(m[o], r), (t, i, s) => {
507
484
  if (s) {
508
- const e = u.style, t = e[a];
509
- e[a] = "hidden", $(() => {
510
- e[a] = t;
485
+ const e = m.style, t = e[l];
486
+ e[l] = "hidden", I(() => {
487
+ e[l] = t;
511
488
  });
512
489
  }
513
- u[o] = E(e.$getScrollOffset() + t, r), i && c();
490
+ const n = e.$getScrollOffset() + t;
491
+ n <= 0 || n >= e.$getStartSpacerSize() + e.$getTotalSize() - e.$getViewportSize() ? m.scrollTo({
492
+ [a]: K(n, r),
493
+ behavior: "instant"
494
+ }) : m.scrollBy({
495
+ [a]: K(t, r),
496
+ behavior: "instant"
497
+ }), i && u();
514
498
  }), n[1](!0);
515
499
  },
516
500
  $dispose() {
517
- h.l(), s && s.l(), n[1](!1), n = q();
501
+ p.l(), s && s.l(), n[1](!1), n = x();
518
502
  },
519
- $observeItem: (e, t) => (m.set(e, t), h.i(e), () => {
520
- m.delete(e), h.o(e);
503
+ $observeItem: (e, t) => (h.set(e, t), p.i(e), () => {
504
+ h.delete(e), p.o(e);
521
505
  }),
522
- $isNegative: () => r,
523
- $scroll: l,
506
+ $scroll: c,
524
507
  $effect() {
525
- s && s.m();
508
+ s && s.u();
526
509
  },
527
- $getBaseOffset: e.$getStartSpacerSize,
528
- $getScrollbarSize: () => 0
510
+ $getBaseOffset: e.$getStartSpacerSize
529
511
  };
530
512
  })(s, this.horizontal()), s.$subscribe(1, e => {
531
- this.P.set(s.$getStateVersion()), e && this.N.tick();
513
+ this.N.set(s.$getStateVersion()), e && this.v.tick();
532
514
  }), s.$subscribe(4, () => {
533
515
  this.scroll.emit(s.$getScrollOffset());
534
516
  }), s.$subscribe(8, () => {
535
517
  this.scrollEnd.emit();
536
- }), this.P.set(s.$getStateVersion());
518
+ }), this.N.set(s.$getStateVersion());
537
519
  }
538
520
  get cache() {
539
- return this.S.$snapshot();
521
+ return this.p.$snapshot();
540
522
  }
541
523
  get scrollOffset() {
542
- return this.p.$getScrollOffset();
524
+ return this.h.$getScrollOffset();
543
525
  }
544
526
  get scrollSize() {
545
- return e = this.p, z(e.$getTotalSize(), e.$getViewportSize());
527
+ return e = this.h, z(e.$getTotalSize(), e.$getViewportSize());
546
528
  var e;
547
529
  }
548
530
  get viewportSize() {
549
- return this.p.$getViewportSize();
531
+ return this.h.$getViewportSize();
550
532
  }
551
533
  findItemIndex(e) {
552
- return this.p.$findItemIndex(e);
534
+ return this.h.$findItemIndex(e);
553
535
  }
554
536
  getItemOffset(e) {
555
- return this.p.$getItemOffset(e);
537
+ return this.h.$getItemOffset(e);
556
538
  }
557
539
  getItemSize(e) {
558
- return this.p.$getItemSize(e);
540
+ return this.h.$getItemSize(e);
559
541
  }
560
542
  scrollToIndex(e, t) {
561
- W(this.driver, this.p, e, t);
543
+ D(this.driver, this.h, e, t);
562
544
  }
563
545
  scrollTo(e) {
564
- B(this.driver, e);
546
+ L(this.driver, e);
565
547
  }
566
548
  scrollBy(e) {
567
549
  ((e, t, i) => {
568
- B(e, i + t.$getScrollOffset());
569
- })(this.driver, this.p, e);
550
+ L(e, i + t.$getScrollOffset());
551
+ })(this.driver, this.h, e);
570
552
  }
571
553
  static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
572
554
  minVersion: "12.0.0",
@@ -690,7 +672,7 @@ var {min: v, max: z, abs: b, floor: N} = Math, P = (e, t, i) => v(i, z(t, e)), R
690
672
  isInline: !0,
691
673
  dependencies: [ {
692
674
  kind: "directive",
693
- type: e.forwardRef(() => j),
675
+ type: e.forwardRef(() => B),
694
676
  selector: "div[virtuaListItem]",
695
677
  inputs: [ "index", "offset", "hide", "horizontal", "isSSR", "resizer", "attrs" ]
696
678
  }, {
@@ -707,7 +689,7 @@ i.OnPush;
707
689
 
708
690
  var Q = class t {
709
691
  data=p.required();
710
- getKey=p(J);
692
+ getKey=p(W);
711
693
  itemProps=p();
712
694
  bufferSize=p();
713
695
  itemSize=p();
@@ -721,10 +703,10 @@ var Q = class t {
721
703
  scroll=f();
722
704
  scrollEnd=f();
723
705
  template=u.required(o);
724
- virtualizer=S.required(Y);
725
- v=h(n).nativeElement;
706
+ virtualizer=S.required(J);
707
+ S=h(n).nativeElement;
726
708
  ngOnInit() {
727
- const e = this.horizontal(), t = this.v;
709
+ const e = this.horizontal(), t = this.S;
728
710
  t.setAttribute("style", `display:${e ? "inline-block" : "block"};${e ? "overflow-x" : "overflow-y"}:auto;contain:strict;width:100%;height:100%;` + (t.getAttribute("style") || ""));
729
711
  }
730
712
  get cache() {
@@ -858,7 +840,7 @@ var Q = class t {
858
840
  viewQueries: [ {
859
841
  propertyName: "virtualizer",
860
842
  first: !0,
861
- predicate: Y,
843
+ predicate: J,
862
844
  emitDistinctChangesOnly: !1,
863
845
  descendants: !0,
864
846
  isSignal: !0
@@ -868,13 +850,13 @@ var Q = class t {
868
850
  isInline: !0,
869
851
  dependencies: [ {
870
852
  kind: "directive",
871
- type: e.forwardRef(() => Y),
853
+ type: e.forwardRef(() => J),
872
854
  selector: "virtua-virtualizer",
873
855
  inputs: [ "data", "getKey", "itemProps", "bufferSize", "scrollRef", "itemSize", "ssrCount", "shift", "horizontal", "keepMounted", "cache", "startMargin" ],
874
856
  outputs: [ "scroll", "scrollEnd" ]
875
857
  } ],
876
858
  viewProviders: [ {
877
- provide: X,
859
+ provide: j,
878
860
  useFactory: () => h(t).template
879
861
  } ],
880
862
  changeDetection: e.ChangeDetectionStrategy.OnPush
@@ -885,7 +867,7 @@ i.OnPush;
885
867
 
886
868
  var U = class i {
887
869
  data=p.required();
888
- getKey=p(J);
870
+ getKey=p(W);
889
871
  bufferSize=p();
890
872
  itemSize=p();
891
873
  ssrCount=p();
@@ -897,31 +879,31 @@ var U = class i {
897
879
  scroll=f();
898
880
  scrollEnd=f();
899
881
  template=u.required(o);
882
+ h;
900
883
  p;
901
- S;
902
884
  driver;
903
- v=h(n).nativeElement;
904
- N=h(t);
905
- P=d(void 0);
885
+ S=h(n).nativeElement;
886
+ v=h(t);
887
+ N=d(void 0);
906
888
  isSSR=d(!1);
907
889
  items=c(() => {
908
- this.P();
909
- const e = this.p, t = this.data(), i = this.getKey(), s = this.driver.$isNegative(), [n, r] = e.$getRange(this.bufferSize()), o = [];
910
- for (let a = n; a <= r && a < t.length; a++) {
911
- const n = t[a];
912
- o.push({
913
- key: i(n, a),
914
- index: a,
915
- data: n,
916
- offset: e.$getItemOffset(a, s),
917
- hide: e.$isUnmeasuredItem(a)
890
+ this.N();
891
+ const e = this.h, t = this.data(), i = this.getKey(), [s, n] = e.$getRange(this.bufferSize()), r = [];
892
+ for (let o = s; o <= n && o < t.length; o++) {
893
+ const s = t[o];
894
+ r.push({
895
+ key: i(s, o),
896
+ index: o,
897
+ data: s,
898
+ offset: e.$getItemOffset(o),
899
+ hide: e.$isUnmeasuredItem(o)
918
900
  });
919
901
  }
920
- return o;
902
+ return r;
921
903
  });
922
904
  containerStyle=c(() => {
923
- this.P();
924
- const e = this.horizontal(), t = this.p.$getTotalSize();
905
+ this.N();
906
+ const e = this.horizontal(), t = this.h.$getTotalSize();
925
907
  return {
926
908
  display: "block",
927
909
  contain: "size style",
@@ -930,116 +912,110 @@ var U = class i {
930
912
  position: "relative",
931
913
  width: e ? t + "px" : "100%",
932
914
  height: e ? "100%" : t + "px",
933
- "pointer-events": this.p.$isScrolling() ? "none" : void 0
915
+ "pointer-events": this.h.$isScrolling() ? "none" : void 0
934
916
  };
935
917
  });
936
918
  constructor() {
937
919
  m(() => {
938
920
  const e = this.data().length;
939
- this.p && e !== this.p.$getItemsLength() && this.p.$update(5, [ e, g(this.shift) ]);
921
+ this.h && e !== this.h.$getItemsLength() && this.h.$update(5, [ e, g(this.shift) ]);
940
922
  }), a({
941
923
  read: () => {
942
- this.isSSR.set(!1), this.driver.$observe(this.v);
924
+ this.isSSR.set(!1), this.driver.$observe(this.S);
943
925
  }
944
926
  }), l({
945
927
  read: () => {
946
- this.P(), this.driver.$effect();
928
+ this.N(), this.driver.$effect();
947
929
  }
948
930
  }), h(s).onDestroy(() => {
949
- this.p?.$dispose(), this.driver?.$dispose();
931
+ this.h?.$dispose(), this.driver?.$dispose();
950
932
  });
951
933
  }
952
934
  ngOnInit() {
953
935
  const e = this.itemSize(), t = this.ssrCount();
954
936
  this.isSSR.set(!!t);
955
- const i = this.S = K(this.data().length, e, this.cacheProp()), s = this.p = C(i, t);
937
+ const i = this.p = M(this.data().length, e, this.cacheProp()), s = this.h = O(i, t);
956
938
  this.driver = ((e, t) => {
957
- let i, s, n, r = q(), o = !1;
958
- const a = t ? "left" : "top", [l] = D(e, () => r[0], (e, t) => {
959
- e = E(e, o);
960
- const s = w(F(i));
961
- t ? s.scroll({
962
- [a]: e,
963
- behavior: "smooth"
964
- }) : s.scroll({
965
- [a]: e
939
+ let i, s, n, r, o, a = x(), l = !1;
940
+ const c = t ? "scrollLeft" : "scrollTop", u = t ? "left" : "top", [m, h] = E(e, () => a[0], (e, t) => {
941
+ i.scrollTo({
942
+ [u]: K(e, l),
943
+ behavior: t ? "smooth" : "instant"
966
944
  });
967
- }), c = t ? "width" : "height", u = /* @__PURE__ */ new WeakMap, m = V(t => {
968
- const i = [];
969
- for (const {target: e, contentRect: s} of t) {
945
+ }), p = t ? "width" : "height", f = /* @__PURE__ */ new WeakMap, d = _(t => {
946
+ const s = [];
947
+ for (const {target: e, contentRect: n} of t) {
948
+ if (e === i) {
949
+ o && o();
950
+ continue;
951
+ }
970
952
  if (!e.offsetParent) continue;
971
- const t = u.get(e);
972
- null != t && i.push([ t, s[c] ]);
953
+ const t = f.get(e);
954
+ null != t && s.push([ t, n[p] ]);
973
955
  }
974
- i.length && e.$update(3, i);
975
- }), h = (e, t, i, s, n = 0) => {
976
- const r = s ? "offsetLeft" : "offsetTop", a = n + (s && o ? i.innerWidth - e[r] - e.offsetWidth : e[r]), l = e.offsetParent;
977
- return e !== t && l ? h(l, t, i, s, a) : a;
956
+ s.length && e.$update(3, s);
957
+ }), g = (e, t, i, s, n = 0) => {
958
+ const r = s ? "offsetLeft" : "offsetTop", o = n + (l ? t.clientWidth - e[r] - e.offsetWidth : e[r]), a = e.offsetParent;
959
+ return e !== i && a ? g(a, t, i, s, o) : o;
978
960
  };
979
961
  return {
980
- $observe(l) {
981
- i = l;
982
- const c = t ? "scrollX" : "scrollY", u = F(l), m = w(u), p = () => {
983
- e.$update(4, m[t ? "innerWidth" : "innerHeight"]);
962
+ $observe(m) {
963
+ const p = k(m), f = F(p), S = i = p.scrollingElement, y = r = () => g(m, S, p.body, t), v = o = () => {
964
+ e.$update(4, S[t ? "clientWidth" : "clientHeight"]);
984
965
  };
985
- m.addEventListener("resize", p), I(p), n = () => {
986
- m.removeEventListener("resize", p);
987
- }, t && (o = "rtl" === getComputedStyle(k(u)).direction), s = L(e, m, t, () => E(m[c], o), (t, i) => {
988
- i ? m.scroll({
989
- [a]: E(e.$getScrollOffset() + t, o)
990
- }) : m.scrollBy({
991
- [a]: E(t, o)
992
- });
993
- }, () => h(l, u.body, m, t)), r[1](!0);
966
+ f.addEventListener("resize", v), d.i(S), n = () => {
967
+ f.removeEventListener("resize", v);
968
+ }, t && (l = "rtl" === getComputedStyle(S).direction), s = V(e, f, t, () => K(S[c], l), (t, i) => {
969
+ const s = e.$getScrollOffset() + t;
970
+ s <= 0 || s >= e.$getStartSpacerSize() + e.$getTotalSize() - e.$getViewportSize() ? S.scrollTo({
971
+ [u]: K(s, l),
972
+ behavior: "instant"
973
+ }) : S.scrollBy({
974
+ [u]: K(t, l),
975
+ behavior: "instant"
976
+ }), i && h();
977
+ }, y), a[1](!0);
994
978
  },
995
979
  $dispose() {
996
- n && n(), m.l(), s && s.l(), i = void 0, r[1](!1), r = q();
980
+ n && n(), d.l(), s && s.l(), i = void 0, a[1](!1), a = x();
997
981
  },
998
- $observeItem: (e, t) => (u.set(e, t), m.i(e), () => {
999
- u.delete(e), m.o(e);
982
+ $observeItem: (e, t) => (f.set(e, t), d.i(e), () => {
983
+ f.delete(e), d.o(e);
1000
984
  }),
1001
- $isNegative: () => o,
1002
- $scroll: l,
985
+ $scroll: m,
1003
986
  $effect() {
1004
- s && s.m();
987
+ s && s.u();
1005
988
  },
1006
- $getBaseOffset() {
1007
- const e = F(i);
1008
- return h(i, e.body, w(e), t);
1009
- },
1010
- $getScrollbarSize() {
1011
- const s = k(F(i));
1012
- return e.$getViewportSize() - (t ? s.clientWidth : s.clientHeight);
1013
- }
989
+ $getBaseOffset: () => r()
1014
990
  };
1015
991
  })(s, this.horizontal()), s.$subscribe(1, e => {
1016
- this.P.set(s.$getStateVersion()), e && this.N.tick();
992
+ this.N.set(s.$getStateVersion()), e && this.v.tick();
1017
993
  }), s.$subscribe(4, () => {
1018
994
  this.scroll.emit();
1019
995
  }), s.$subscribe(8, () => {
1020
996
  this.scrollEnd.emit();
1021
- }), this.P.set(s.$getStateVersion());
997
+ }), this.N.set(s.$getStateVersion());
1022
998
  }
1023
999
  get cache() {
1024
- return this.S.$snapshot();
1000
+ return this.p.$snapshot();
1025
1001
  }
1026
1002
  get scrollOffset() {
1027
- return this.p.$getScrollOffset();
1003
+ return this.h.$getScrollOffset();
1028
1004
  }
1029
1005
  get viewportSize() {
1030
- return this.p.$getViewportSize();
1006
+ return this.h.$getViewportSize();
1031
1007
  }
1032
1008
  findItemIndex(e) {
1033
- return this.p.$findItemIndex(e);
1009
+ return this.h.$findItemIndex(e);
1034
1010
  }
1035
1011
  getItemOffset(e) {
1036
- return this.p.$getItemOffset(e);
1012
+ return this.h.$getItemOffset(e);
1037
1013
  }
1038
1014
  getItemSize(e) {
1039
- return this.p.$getItemSize(e);
1015
+ return this.h.$getItemSize(e);
1040
1016
  }
1041
1017
  scrollToIndex(e, t) {
1042
- W(this.driver, this.p, e, t);
1018
+ D(this.driver, this.h, e, t);
1043
1019
  }
1044
1020
  static ɵfac=/*@__PURE__*/ e.ɵɵngDeclareFactory({
1045
1021
  minVersion: "12.0.0",
@@ -1135,7 +1111,7 @@ var U = class i {
1135
1111
  isInline: !0,
1136
1112
  dependencies: [ {
1137
1113
  kind: "directive",
1138
- type: e.forwardRef(() => j),
1114
+ type: e.forwardRef(() => B),
1139
1115
  selector: "div[virtuaListItem]",
1140
1116
  inputs: [ "index", "offset", "hide", "horizontal", "isSSR", "resizer", "attrs" ]
1141
1117
  }, {
@@ -1150,5 +1126,5 @@ var U = class i {
1150
1126
 
1151
1127
  i.OnPush;
1152
1128
 
1153
- export { Q as VList, Y as Virtualizer, U as WindowVirtualizer };
1129
+ export { Q as VList, J as Virtualizer, U as WindowVirtualizer };
1154
1130
  //# sourceMappingURL=index.js.map