virtua 0.52.9 → 0.53.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 (55) hide show
  1. package/README.md +286 -193
  2. package/lib/angular/VList.d.ts +3 -1
  3. package/lib/angular/VMasonry.d.ts +114 -0
  4. package/lib/angular/Virtualizer.d.ts +3 -1
  5. package/lib/angular/WindowVirtualizer.d.ts +3 -1
  6. package/lib/angular/index.d.ts +1 -0
  7. package/lib/angular/index.js +812 -429
  8. package/lib/angular/index.js.map +1 -1
  9. package/lib/core/index.cjs +215 -137
  10. package/lib/core/index.cjs.map +1 -1
  11. package/lib/core/index.d.ts +1 -0
  12. package/lib/core/index.js +282 -204
  13. package/lib/core/index.js.map +1 -1
  14. package/lib/core/layouts/masonry.d.ts +1 -0
  15. package/lib/index.cjs +595 -423
  16. package/lib/index.cjs.map +1 -1
  17. package/lib/index.js +594 -424
  18. package/lib/index.js.map +1 -1
  19. package/lib/react/VMasonry.d.ts +105 -0
  20. package/lib/react/Virtualizer.d.ts +3 -1
  21. package/lib/react/WindowVirtualizer.d.ts +3 -1
  22. package/lib/react/index.d.ts +2 -0
  23. package/lib/react/types.d.ts +1 -1
  24. package/lib/solid/VMasonry.d.ts +107 -0
  25. package/lib/solid/Virtualizer.d.ts +3 -1
  26. package/lib/solid/WindowVirtualizer.d.ts +3 -1
  27. package/lib/solid/index.cjs +749 -541
  28. package/lib/solid/index.cjs.map +1 -1
  29. package/lib/solid/index.d.ts +2 -0
  30. package/lib/solid/index.js +704 -505
  31. package/lib/solid/index.js.map +1 -1
  32. package/lib/solid/index.jsx +345 -8
  33. package/lib/solid/index.jsx.map +1 -1
  34. package/lib/solid/types.d.ts +1 -1
  35. package/lib/svelte/MasonryItem.svelte +49 -0
  36. package/lib/svelte/VGrid.svelte +1 -1
  37. package/lib/svelte/VList.svelte +1 -1
  38. package/lib/svelte/VMasonry.svelte +182 -0
  39. package/lib/svelte/VMasonry.type.d.ts +104 -0
  40. package/lib/svelte/Virtualizer.svelte +1 -1
  41. package/lib/svelte/Virtualizer.type.d.ts +3 -1
  42. package/lib/svelte/WindowVirtualizer.svelte +1 -1
  43. package/lib/svelte/WindowVirtualizer.type.d.ts +3 -1
  44. package/lib/svelte/index.d.ts +2 -0
  45. package/lib/svelte/index.js +2 -1
  46. package/lib/svelte/types.d.ts +2 -2
  47. package/lib/vue/VMasonry.d.ts +110 -0
  48. package/lib/vue/Virtualizer.d.ts +3 -1
  49. package/lib/vue/WindowVirtualizer.d.ts +3 -1
  50. package/lib/vue/index.cjs +666 -442
  51. package/lib/vue/index.cjs.map +1 -1
  52. package/lib/vue/index.d.ts +2 -0
  53. package/lib/vue/index.js +695 -476
  54. package/lib/vue/index.js.map +1 -1
  55. package/package.json +6 -16
@@ -48,7 +48,7 @@ t), m = (t, e, o) => {
48
48
  v(l, t, c, s, r);
49
49
  for (let t = s; t < e; t++) l.push(t);
50
50
  return l;
51
- }, I = (t, e) => o(t.rowIndex + (t.rowSpan || 1), e), k = (t, e) => o(t.colIndex + (t.colSpan || 1), e), z = (t, e, n, r, s, l) => {
51
+ }, I = (t, e) => o(t.rowIndex + (t.rowSpan || 1), e), z = (t, e) => o(t.colIndex + (t.colSpan || 1), e), k = (t, e, n, r, s, l) => {
52
52
  const c = e.length, i = r.length;
53
53
  let f = "[l0]", u = 0, a = 0, $ = 0;
54
54
  for (;u < l; ) {
@@ -86,7 +86,7 @@ t), m = (t, e, o) => {
86
86
  e && e.disconnect();
87
87
  }
88
88
  };
89
- }, R = (t, e, o, n, r, s, l) => {
89
+ }, L = (t, e, o, n, r, s, l) => {
90
90
  let c, a, $ = 0, p = !1, g = !1, m = !1, x = !1;
91
91
  const w = Date.now, h = n ? "scrollLeft" : "scrollTop", b = n ? "left" : "top", S = t => r ? -t : t, v = () => S(o[h]), y = (t, e) => {
92
92
  o.scrollTo({
@@ -94,34 +94,35 @@ t), m = (t, e, o) => {
94
94
  behavior: e ? "smooth" : "instant"
95
95
  });
96
96
  }, I = () => {
97
- if (p || g) return p = !1, void k();
97
+ if (p || g) return p = !1, void z();
98
98
  m = !1, t.$update(2);
99
- }, k = () => {
100
- f(a), a = i(I, 150);
101
99
  }, z = () => {
102
- $ = w(), m && (x = !0), l && t.$update(6, l()), t.$update(1, v()), k();
100
+ f(a), a = i(I, 150);
101
+ }, k = () => {
102
+ $ = w(), m && (x = !0), l && t.$update(6, l()), t.$update(1, v()), z();
103
103
  }, M = e => {
104
104
  if (p || !t.$isScrolling() || e.ctrlKey) return;
105
105
  const o = w() - $;
106
106
  150 > o && 50 < o && (n ? e.deltaX : e.deltaY) && (p = !0);
107
107
  }, T = () => {
108
108
  g = !0, m = x = !1;
109
- }, R = () => {
109
+ }, L = () => {
110
110
  g = !1, d() && (m = !0);
111
111
  };
112
- return e.addEventListener("scroll", z), e.addEventListener("wheel", M, {
112
+ return e.addEventListener("scroll", k), e.addEventListener("wheel", M, {
113
113
  passive: !0
114
114
  }), e.addEventListener("touchstart", T, {
115
115
  passive: !0
116
- }), e.addEventListener("touchend", R, {
116
+ }), e.addEventListener("touchend", L, {
117
117
  passive: !0
118
118
  }), {
119
+ i: k,
119
120
  l: () => {
120
- e.removeEventListener("scroll", z), e.removeEventListener("wheel", M), e.removeEventListener("touchstart", T),
121
- e.removeEventListener("touchend", R), f(a);
121
+ e.removeEventListener("scroll", k), e.removeEventListener("wheel", M), e.removeEventListener("touchstart", T),
122
+ e.removeEventListener("touchend", L), f(a);
122
123
  },
123
- i: () => {
124
- const [e, n] = t.u();
124
+ u: () => {
125
+ const [e, n] = t.$();
125
126
  if (!e) return;
126
127
  x && s && s(), x = !1;
127
128
  const r = t.$getScrollOffset(), l = r + e, i = t.$getStartSpacerSize() + t.$getTotalSize() - t.$getViewportSize();
@@ -130,7 +131,7 @@ t), m = (t, e, o) => {
130
131
  behavior: "instant"
131
132
  }), n && (c && c(), t.$getViewportSize() > t.$getTotalSize() && t.$update(1, v()));
132
133
  },
133
- $: (e, o) => {
134
+ p: (e, o) => {
134
135
  let n, r, s;
135
136
  c && c();
136
137
  const l = c = () => {
@@ -143,7 +144,8 @@ t), m = (t, e, o) => {
143
144
  }
144
145
  t.$update(7), y(e(), o);
145
146
  }
146
- }, $ = () => {
147
+ };
148
+ o && t.$update(8, e()), (() => {
147
149
  if (n) return;
148
150
  let e;
149
151
  s = t.$subscribe(2, () => {
@@ -151,11 +153,10 @@ t), m = (t, e, o) => {
151
153
  e = !1, a();
152
154
  }));
153
155
  }), a();
154
- };
155
- o ? (t.$update(8, e()), u($)) : $();
156
+ })();
156
157
  }
157
158
  };
158
- }, L = (t, e) => {
159
+ }, R = (t, e) => {
159
160
  t.$scroll(() => e);
160
161
  }, O = (t, e, r, s, c, i, f) => {
161
162
  const u = e.$getItemsLength(), a = r.$getPinnedStart(), $ = r.$getTrailStart();
@@ -183,82 +184,82 @@ t), m = (t, e, o) => {
183
184
  exports.ACTION_ITEMS_LENGTH_CHANGE = 5, exports.ACTION_RELAYOUT = 9, exports.ACTION_START_OFFSET_CHANGE = 6,
184
185
  exports.UPDATE_SCROLL_END_EVENT = 8, exports.UPDATE_SCROLL_EVENT = 4, exports.UPDATE_VIRTUAL_STATE = 1,
185
186
  exports.createContainerDriver = (t, e) => {
186
- let o, n, r = a();
187
- const s = /* @__PURE__ */ new WeakMap, l = T(n => {
188
- const r = [];
189
- for (const {target: l, contentRect: {width: c, height: i}} of n) if (l === o) (c || i) && t.$update(4, e ? c : i); else if (l.offsetParent) {
190
- const t = s.get(l);
191
- null != t && r.push([ t, e ? c : i ]);
187
+ let o, n, r = a(), s = !0;
188
+ const l = /* @__PURE__ */ new WeakMap, c = T(r => {
189
+ const c = [];
190
+ for (const {target: i, contentRect: {width: f, height: u}} of r) if (i === o) f || u ? (s || n.i(),
191
+ s = !0, t.$update(4, e ? f : u)) : s = !1; else if (i.offsetParent) {
192
+ const t = l.get(i);
193
+ null != t && c.push([ t, e ? f : u ]);
192
194
  }
193
- r.length && t.$update(3, r);
195
+ c.length && t.$update(3, c);
194
196
  });
195
197
  return {
196
- $observe(s, c = s.parentElement) {
197
- l.t(o = c), n = R(t, c, c, e, e && "rtl" === getComputedStyle(c).direction, () => {
198
- const t = e ? "overflowX" : "overflowY", o = c.style, n = o[t];
198
+ $observe(s, l = s.parentElement) {
199
+ c.t(o = l), n = L(t, l, l, e, e && "rtl" === getComputedStyle(l).direction, () => {
200
+ const t = e ? "overflowX" : "overflowY", o = l.style, n = o[t];
199
201
  o[t] = "hidden", i(() => {
200
202
  o[t] = n;
201
203
  });
202
204
  }), r[1](!0);
203
205
  },
204
206
  $dispose() {
205
- l.l(), n && n.l(), r[1](!1), r = a();
207
+ c.l(), n && n.l(), r[1](!1), r = a();
206
208
  },
207
- $observeItem: (t, e) => (s.set(t, e), l.t(t), () => {
208
- s.delete(t), l.o(t);
209
+ $observeItem: (t, e) => (l.set(t, e), c.t(t), () => {
210
+ l.delete(t), c.o(t);
209
211
  }),
210
212
  async $scroll(t, e) {
211
- await r[0] && n.$(t, e);
213
+ await r[0] && n.p(t, e);
212
214
  },
213
215
  $effect() {
214
- n && n.i();
216
+ n && n.u();
215
217
  },
216
218
  $getBaseOffset: t.$getStartSpacerSize
217
219
  };
218
220
  }, exports.createContainerGridDriver = (t, e) => {
219
- let o, n, r, s = a();
220
- const l = /* @__PURE__ */ new WeakMap, c = /* @__PURE__ */ new WeakMap, f = T(n => {
221
- const r = [], s = [];
222
- for (const {target: i, contentRect: {width: f, height: u}} of n) if (i === o) (f || u) && (t.$update(4, u),
223
- e.$update(4, f)); else if (i.offsetParent) {
224
- const t = l.get(i), e = c.get(i);
225
- null != t && r.push([ t, u ]), null != e && s.push([ e, f ]);
221
+ let o, n, r, s = a(), l = !0;
222
+ const c = /* @__PURE__ */ new WeakMap, f = /* @__PURE__ */ new WeakMap, u = T(s => {
223
+ const i = [], u = [];
224
+ for (const {target: a, contentRect: {width: $, height: p}} of s) if (a === o) $ || p ? (l || (n.i(),
225
+ r.i()), l = !0, t.$update(4, p), e.$update(4, $)) : l = !1; else if (a.offsetParent) {
226
+ const t = c.get(a), e = f.get(a);
227
+ null != t && i.push([ t, p ]), null != e && u.push([ e, $ ]);
226
228
  }
227
- r.length && t.$update(3, r), s.length && e.$update(3, s);
229
+ i.length && t.$update(3, i), u.length && e.$update(3, u);
228
230
  });
229
231
  return {
230
232
  async $scroll(t, e) {
231
- await s[0] && (t ? r : n).$(e);
233
+ await s[0] && (t ? r : n).p(e);
232
234
  },
233
- $observe(l) {
234
- const c = o = l.parentElement;
235
- f.t(c);
236
- const u = (t, e) => R(t, c, c, e, e && "rtl" === getComputedStyle(c).direction, () => {
235
+ $observe(l, c = l.parentElement) {
236
+ u.t(o = c);
237
+ const f = (t, e) => L(t, c, c, e, e && "rtl" === getComputedStyle(c).direction, () => {
237
238
  const t = e ? "overflowX" : "overflowY", o = c.style, n = o[t];
238
239
  o[t] = "hidden", i(() => {
239
240
  o[t] = n;
240
241
  });
241
242
  });
242
- n = u(t, !1), r = u(e, !0), s[1](!0);
243
+ n = f(t, !1), r = f(e, !0), s[1](!0);
243
244
  },
244
245
  $dispose() {
245
- f.l(), n && n.l(), r && r.l(), s[1](!1), s = a();
246
+ u.l(), n && n.l(), r && r.l(), s[1](!1), s = a();
246
247
  },
247
- $observeItem: (t, e, o) => (null != e && l.set(t, e), null != o && c.set(t, o),
248
- f.t(t), () => {
249
- l.delete(t), c.delete(t), f.o(t);
248
+ $observeItem: (t, e, o) => (null != e && c.set(t, e), null != o && f.set(t, o),
249
+ u.t(t), () => {
250
+ c.delete(t), f.delete(t), u.o(t);
250
251
  }),
251
252
  $effect() {
252
- n && n.i(), r && r.i();
253
+ n && n.u(), r && r.u();
253
254
  }
254
255
  };
255
256
  }, exports.createGridLayout = (t, e, r = 0) => {
256
257
  let i = w(t);
257
258
  const f = "number" == typeof e, u = "auto" === e;
258
259
  let a = (f ? e : 40) + r, $ = -1, p = 0, g = u, d = 0, h = 0, b = null;
259
- const S = [], v = [], y = [], I = t => u || !!y[t], k = () => {
260
+ const S = [], v = [], y = [], I = t => u || !!y[t], z = () => {
260
261
  S.length || m(S, i);
261
- }, z = t => {
262
+ }, k = t => {
262
263
  const e = S[t];
263
264
  return -1 === e ? a : e;
264
265
  }, M = t => {
@@ -267,25 +268,25 @@ exports.createContainerDriver = (t, e) => {
267
268
  if ($ >= t) return v[t];
268
269
  $ < 0 && (v[0] = 0, $ = 0);
269
270
  let e = $, o = v[e];
270
- for (;e < t; ) o += z(e), v[++e] = o;
271
+ for (;e < t; ) o += k(e), v[++e] = o;
271
272
  return $ = t, o;
272
273
  }, T = (t, e) => {
273
274
  S[t] = e, $ = o(t, $);
274
- }, R = t => S.length ? x(M, i, t) : a ? l(s(t / a), 0, i - 1) : 0, L = () => o(d, i), O = () => n(i - h, L()), _ = t => (S.length ? z(t) : a) - r;
275
+ }, L = t => S.length ? x(M, i, t) : a ? l(s(t / a), 0, i - 1) : 0, R = () => o(d, i), O = () => n(i - h, R()), E = t => (S.length ? k(t) : a) - r;
275
276
  return {
276
277
  $getRange: (t, e) => {
277
- const o = M(L()), s = M(i) - M(O()), l = t + (o ? o - r : 0);
278
- return [ R(l), R(n(l, e - (s ? s - r : 0))) ];
278
+ const o = M(R()), s = M(i) - M(O()), l = t + (o ? o - r : 0);
279
+ return [ L(l), L(n(l, e - (s ? s - r : 0))) ];
279
280
  },
280
- $findIndex: R,
281
+ $findIndex: L,
281
282
  $getItemOffset: M,
282
- $getItemSize: _,
283
+ $getItemSize: E,
283
284
  $resize: (t, e, o, s) => {
284
- let l = t.reduce((t, [o, n]) => I(o) && e(o) ? t + (n - _(o)) : t, 0);
285
- for (const [e, o] of t) I(e) && (k(), p += -1 === S[e] ? o : o - _(e), T(e, o + r));
285
+ let l = t.reduce((t, [o, n]) => I(o) && e(o) ? t + (n - E(o)) : t, 0);
286
+ for (const [e, o] of t) I(e) && (z(), p += -1 === S[e] ? o : o - E(e), T(e, o + r));
286
287
  if (g && s && p > s) {
287
288
  let t = 0;
288
- const e = R(o + l), r = [];
289
+ const e = L(o + l), r = [];
289
290
  S.forEach((o, n) => {
290
291
  -1 !== o && (o && r.push(o), n < e && t++);
291
292
  }), $ = -1, c(r);
@@ -309,7 +310,7 @@ exports.createContainerDriver = (t, e) => {
309
310
  $setPinned: (t = 0, e = 0) => {
310
311
  d = t, h = e;
311
312
  },
312
- $getPinnedStart: L,
313
+ $getPinnedStart: R,
313
314
  $getTrailStart: O,
314
315
  $getSizes: (t, e) => "number" == typeof e ? f ? e : null : f || u || "auto" === e ? null : t.map(t => null != t ? t[e] : null),
315
316
  $relayout: (t, e) => {
@@ -317,12 +318,12 @@ exports.createContainerDriver = (t, e) => {
317
318
  if ("number" == typeof t) {
318
319
  const o = t + r;
319
320
  if (o === a) return;
320
- const n = R(e) * (o - a);
321
+ const n = L(e) * (o - a);
321
322
  return a = o, n;
322
323
  }
323
324
  if (t === b && i === y.length) return;
324
- b = t, y.length = i, k();
325
- const o = R(e), n = M(o);
325
+ b = t, y.length = i, z();
326
+ const o = L(e), n = M(o);
326
327
  let s;
327
328
  for (let e = 0; e < i; e++) {
328
329
  const o = t[e], n = "number" != typeof o;
@@ -338,30 +339,30 @@ exports.createContainerDriver = (t, e) => {
338
339
  }, exports.createGridPlan = (t, r, [s, i], [f, u], a, $ = e, p = e, g) => {
339
340
  const d = t.$getLength(), m = r.$getLength(), x = t.$getPinnedStart(), w = t.$getTrailStart(), v = r.$getPinnedStart(), T = r.$getTrailStart();
340
341
  s = l(s, x, w), i = o(i, w - 1), f = l(f, v, T), u = o(u, T - 1);
341
- const R = b($, x, w), L = n(v - 1, 0), O = [], _ = [], C = [];
342
- for (const t of p) t.rowIndex < d && t.colIndex < m && (C.push(t), O.push(t.rowIndex));
343
- const E = C.length, q = S(R, s, w), P = q < 0 ? -1 : R[q];
342
+ const L = b($, x, w), R = n(v - 1, 0), O = [], E = [], _ = [];
343
+ for (const t of p) t.rowIndex < d && t.colIndex < m && (_.push(t), O.push(t.rowIndex));
344
+ const q = _.length, C = S(L, s, w), P = C < 0 ? -1 : L[C];
344
345
  P >= 0 && O.push(P);
345
346
  const W = y(c(O), d, x, s, i, w);
346
347
  for (let t = 0; t < W.length; t++) for (const r of a.get(W[t]) || e) {
347
- const {rowIndex: e, colIndex: l} = r, c = I(r, d), a = k(r, m);
348
+ const {rowIndex: e, colIndex: l} = r, c = I(r, d), a = z(r, m);
348
349
  if ((t < 1 || W[t - 1] < e) && l < m && (c - e > 1 || a - l > 1)) {
349
350
  let t = (e < x || n(e, s) < o(c, i + 1) || w < c || P >= e && P < c) && (l < v || n(l, f) < o(a, u + 1) || T < a);
350
- for (let o = 0; !t && o < E; o++) {
351
- const n = C[o];
351
+ for (let o = 0; !t && o < q; o++) {
352
+ const n = _[o];
352
353
  t = n.rowIndex >= e && n.rowIndex < c && n.colIndex >= l && n.colIndex < a;
353
354
  }
354
- t && C.push(r);
355
+ t && _.push(r);
355
356
  }
356
357
  }
357
- for (const {rowIndex: t, colIndex: e} of C) {
358
- const o = S(R, t, w);
359
- O.push(t), o >= 0 && O.push(R[o]), _.push(e);
358
+ for (const {rowIndex: t, colIndex: e} of _) {
359
+ const o = S(L, t, w);
360
+ O.push(t), o >= 0 && O.push(L[o]), E.push(e);
360
361
  }
361
- c(O), c(_);
362
- const A = y(O, d, x, s, i, w), B = y(_, m, v, f, u, T), J = A.length, V = B.length, X = /* @__PURE__ */ new Map, Y = [], j = [];
363
- for (const t of C) {
364
- const e = I(t, d), o = k(t, m);
362
+ c(O), c(E);
363
+ const A = y(O, d, x, s, i, w), B = y(E, m, v, f, u, T), J = A.length, V = B.length, X = /* @__PURE__ */ new Map, Y = [], j = [];
364
+ for (const t of _) {
365
+ const e = I(t, d), o = z(t, m);
365
366
  Y.push(e), j.push(o);
366
367
  const n = B.indexOf(t.colIndex);
367
368
  for (let r = A.indexOf(t.rowIndex); r < J && A[r] < e; r++) {
@@ -371,39 +372,39 @@ exports.createContainerDriver = (t, e) => {
371
372
  }
372
373
  const D = [];
373
374
  for (const t of B) D.push(!r.$isMeasurable(t) && null);
374
- const U = [], Z = t.$getItemOffset(x), F = [];
375
- let G = F;
375
+ const G = [], U = t.$getItemOffset(x), Z = [];
376
+ let F = Z;
376
377
  const H = h.get(t), K = /* @__PURE__ */ new Map;
377
378
  for (const e of A) {
378
- const o = e < x, l = e >= w, c = S(R, e, w), a = o ? 0 : l ? w : c < 0 ? -1 : R[c];
379
+ const o = e < x, l = e >= w, c = S(L, e, w), a = o ? 0 : l ? w : c < 0 ? -1 : L[c];
379
380
  if (e === a) {
380
- const t = o ? x : l ? d : c + 1 < R.length ? R[c + 1] : w;
381
+ const t = o ? x : l ? d : c + 1 < L.length ? L[c + 1] : w;
381
382
  Y.push(t);
382
383
  const e = [];
383
- F.push({
384
+ Z.push({
384
385
  $key: o ? -1 : l ? -2 : -3 - a,
385
386
  $rows: e,
386
387
  $style: M(a, t, o || l ? 0 : null, l ? "bottom" : "top", 4)
387
- }), G = e;
388
- } else a < 0 && (G = F);
389
- const $ = c >= 0 && e === a, p = o || l || e === P || e >= s && e <= i, h = $ ? Z : null, b = e * m, y = H && H.get(e), z = y && y.$cells, O = [];
390
- let _ = 0, C = !t.$isMeasurable(e) && null, E = e + 1, q = !1;
388
+ }), F = e;
389
+ } else a < 0 && (F = Z);
390
+ const $ = c >= 0 && e === a, p = o || l || e === P || e >= s && e <= i, h = $ ? U : null, b = e * m, y = H && H.get(e), k = y && y.$cells, O = [];
391
+ let E = 0, _ = !t.$isMeasurable(e) && null, q = e + 1, C = !1;
391
392
  for (let t = 0; t < V; t++) {
392
393
  const s = B[t], l = s < v, c = s >= T, i = l || c || s >= f && s <= u, a = X.get(b + s);
393
394
  if (a ? a.rowIndex === e && a.colIndex === s : p && i) {
394
- const i = a ? I(a, d) : e + 1, f = a ? k(a, m) : s + 1, u = i - e, p = f - s, x = u > 1, w = p > 1, h = x || w;
395
+ const i = a ? I(a, d) : e + 1, f = a ? z(a, m) : s + 1, u = i - e, p = f - s, x = u > 1, w = p > 1, h = x || w;
395
396
  let b, S;
396
- E = n(E, i);
397
+ q = n(q, i);
397
398
  const v = l ? r.$getItemOffset(s) : null, y = c ? r.$getItemOffset(m) - r.$getItemOffset(f) : null;
398
- !1 !== C || x || (b = e, C = !0), !1 !== D[t] || w || (S = s, D[t] = !0);
399
- const M = o ? "columnheader" : s === L && (l || $) ? "rowheader" : "cell", T = h ? u : void 0, R = h ? p : void 0, P = "cell" !== M && g && g.rowIndex === e && g.colIndex === s ? g.order : void 0;
399
+ !1 !== _ || x || (b = e, _ = !0), !1 !== D[t] || w || (S = s, D[t] = !0);
400
+ const M = o ? "columnheader" : s === R && (l || $) ? "rowheader" : "cell", T = h ? u : void 0, L = h ? p : void 0, P = "cell" !== M && g && g.rowIndex === e && g.colIndex === s ? g.order : void 0;
400
401
  let W;
401
- if (z) {
402
- const t = z.length;
403
- for (;_ < t && z[_].$col < s; ) _++;
404
- _ < t && z[_].$col === s && (W = z[_]);
402
+ if (k) {
403
+ const t = k.length;
404
+ for (;E < t && k[E].$col < s; ) E++;
405
+ E < t && k[E].$col === s && (W = k[E]);
405
406
  }
406
- if (!W || W.$rowSpan !== T || W.$colSpan !== R || W.$start !== v || W.$end !== y || W.$measureRow !== b || W.$measureCol !== S || W.$role !== M || W.$sort !== P) {
407
+ if (!W || W.$rowSpan !== T || W.$colSpan !== L || W.$start !== v || W.$end !== y || W.$measureRow !== b || W.$measureCol !== S || W.$role !== M || W.$sort !== P) {
407
408
  let t = "1/l" + s;
408
409
  h && (t += "/l" + i + "/l" + f);
409
410
  const e = {
@@ -416,7 +417,7 @@ exports.createContainerDriver = (t, e) => {
416
417
  e.position = "sticky", e.zIndex = 2), W = {
417
418
  $col: s,
418
419
  $rowSpan: T,
419
- $colSpan: R,
420
+ $colSpan: L,
420
421
  $measureRow: b,
421
422
  $measureCol: S,
422
423
  $role: M,
@@ -424,25 +425,25 @@ exports.createContainerDriver = (t, e) => {
424
425
  $style: e,
425
426
  $start: v,
426
427
  $end: y
427
- }, q = !0;
428
+ }, C = !0;
428
429
  }
429
430
  O.push(W);
430
431
  }
431
432
  }
432
- if (U.push(C), O.length) {
433
- const t = y && !q && y.$cells.length === O.length && y.$top === h ? y : {
433
+ if (G.push(_), O.length) {
434
+ const t = y && !C && y.$cells.length === O.length && y.$top === h ? y : {
434
435
  $row: e,
435
436
  $cells: O,
436
- $style: M(e, E, h, "top", 3),
437
+ $style: M(e, q, h, "top", 3),
437
438
  $top: h
438
439
  };
439
- K.set(e, t), G.push(t);
440
+ K.set(e, t), F.push(t);
440
441
  }
441
442
  }
442
443
  return h.set(t, K), {
443
- $rowTemplate: z(t, A, U, c(Y), "max-content", d),
444
- $colTemplate: z(r, B, D, c(j), "minmax(max-content,auto)", m),
445
- $groups: F
444
+ $rowTemplate: k(t, A, G, c(Y), "max-content", d),
445
+ $colTemplate: k(r, B, D, c(j), "minmax(max-content,auto)", m),
446
+ $groups: Z
446
447
  };
447
448
  }, exports.createGridSpanIndex = (t = e) => {
448
449
  const o = /* @__PURE__ */ new Map;
@@ -501,19 +502,96 @@ exports.createContainerDriver = (t, e) => {
501
502
  $isEstimating: () => f,
502
503
  $snapshot: () => [ $.slice(), s ]
503
504
  };
505
+ }, exports.createMasonryLayout = (t, e, r = 0, s, l) => {
506
+ let i = n(e, 1), f = i, u = r, a = l && l[1] || s || 40, $ = -1, p = s ? void 0 : /* @__PURE__ */ new Set, g = !s;
507
+ const d = l && l[0], w = d ? m(d.slice(0, o(t, d.length)), n(0, t - d.length)) : m([], t), h = [], b = [], S = [], v = t => {
508
+ const e = w[t];
509
+ return -1 === e ? a : e;
510
+ }, y = e => {
511
+ if (e = o(e, t - 1), $ >= e) return;
512
+ const s = [], l = [];
513
+ for (let t = 0; t < i; t++) s.push(0), l.push(-1);
514
+ for (let t = $, e = i; t >= 0 && e; t--) {
515
+ const o = b[t];
516
+ -1 === l[o] && (l[o] = t, s[o] = h[t] + v(t), e--);
517
+ }
518
+ for (;$ < e; ) {
519
+ const t = ++$;
520
+ let e = 0, o = 1 / 0, c = 1 / 0;
521
+ for (let t = 0; t < i; t++) {
522
+ const n = s[t] + (l[t] >= 0 ? r : 0);
523
+ (n < o || n === o && l[t] < c) && (e = t, o = n, c = l[t]);
524
+ }
525
+ h[t] = o, b[t] = e, s[e] = o + v(t), l[e] = t, S[t] = n(t ? S[t - 1] : 0, s[e]);
526
+ }
527
+ }, I = e => e >= t ? k() : (y(e), h[e]), z = t => (y(t), S[t]), k = () => t ? z(t - 1) : 0, M = e => {
528
+ if (!t) return 0;
529
+ const o = x(z, t, e);
530
+ return z(o) <= e ? o + 1 : o;
531
+ };
532
+ return {
533
+ $getRange: (e, n) => {
534
+ const r = x(I, t, n);
535
+ return [ o(M(e), r), r ];
536
+ },
537
+ $findIndex: e => x(I, t, e),
538
+ $getItemOffset: I,
539
+ $getItemSize: v,
540
+ $isSizeEqual: (t, e = -1) => w[t] === e,
541
+ $resize: (e, n, s, l) => {
542
+ let f = M(s);
543
+ for (;f > 0 && !n(f - 1); ) f--;
544
+ for (;f < t && n(f); ) f++;
545
+ const u = I(f);
546
+ for (const [t, n] of e) w[t] = n, p && p.add(t), $ = o(t - 1, $);
547
+ let d = I(f) - u;
548
+ if (p && l) {
549
+ const t = [];
550
+ let e = 0;
551
+ if (p.forEach(o => {
552
+ const n = w[o];
553
+ n > 0 && (t.push(n), e += n + r);
554
+ }), e > l * i) {
555
+ c(t);
556
+ const e = t.length, o = e / 2 | 0, n = e % 2 == 0 ? (t[o - 1] + t[o]) / 2 : t[o], r = M(s + d), l = I(r);
557
+ a = n, $ = -1, d += I(r) - l, p = void 0, g = !1;
558
+ }
559
+ }
560
+ return d;
561
+ },
562
+ $getTotalSize: k,
563
+ $getLength: () => t,
564
+ $setLength: e => {
565
+ const n = e - t;
566
+ return $ = o(e - 1, $), t = e, n > 0 ? m(w, n) : w.splice(n), 0;
567
+ },
568
+ $relayout: (t, e) => {
569
+ if (f === i && u === r) return;
570
+ const o = M(e), n = I(o);
571
+ return i = f, r = u, $ = -1, p = s ? void 0 : /* @__PURE__ */ new Set, I(o) - n;
572
+ },
573
+ $setOptions: (t, e = 0) => {
574
+ f = n(t, 1), u = e;
575
+ },
576
+ $isEstimating: () => g,
577
+ $snapshot: () => [ w.slice(), a ],
578
+ $getLanes: () => i,
579
+ $getGap: () => r,
580
+ $getItemLane: t => (y(t), b[t])
581
+ };
504
582
  }, exports.createVirtualStore = ({$getRange: t, $findIndex: e, $getItemOffset: s, $getItemSize: l, $isSizeEqual: c, $getTotalSize: i, $getLength: f, $setLength: u, $isEstimating: a, $resize: $, $relayout: p}, g = 0) => {
505
- let m = !!g, x = 1, w = 0, h = 0, b = 0, S = 0, v = 0, y = 0, I = 0, k = 0, z = null, M = [ 0, m ? n(g - 1, 0) : -1 ], T = !1;
506
- const R = /* @__PURE__ */ new Set, L = () => b - h, O = () => L() + v + S, _ = t => s(t) - v, C = t => {
507
- if (2 === k) return !0;
508
- if (z && 1 === k) return t < z[0];
509
- const e = L(), o = _(t), n = l(t);
510
- return 1 !== I && 0 === k ? o + n <= e : o < e && o + n < e + w;
511
- }, E = t => {
512
- t && (d() && 0 !== I || z && 1 === k ? v += t : S += t);
583
+ let m = !!g, x = 1, w = 0, h = 0, b = 0, S = 0, v = 0, y = 0, I = 0, z = 0, k = null, M = [ 0, m ? n(g - 1, 0) : -1 ], T = !1;
584
+ const L = /* @__PURE__ */ new Set, R = () => b - h, O = () => R() + v + S, E = t => s(t) - v, _ = t => {
585
+ if (2 === z) return !0;
586
+ if (k && 1 === z) return t < k[0];
587
+ const e = R(), o = E(t), n = l(t);
588
+ return 1 !== I && 0 === z ? o + n <= e : o < e && o + n < e + w;
589
+ }, q = t => {
590
+ t && (d() && 0 !== I || k && 1 === z ? v += t : S += t);
513
591
  };
514
592
  return {
515
593
  $dispose: () => {
516
- R.clear();
594
+ L.clear();
517
595
  },
518
596
  $getStateVersion: () => x,
519
597
  $getRange: (e = 200) => {
@@ -522,13 +600,13 @@ exports.createContainerDriver = (t, e) => {
522
600
  if (y) [r, s] = M; else {
523
601
  let l = n(0, O()), c = l + w;
524
602
  a() || (e = n(0, e), 1 !== I && (l -= e), 2 !== I && (c += e)), [r, s] = M = t(n(0, l), n(0, c)),
525
- z && (r = o(r, z[0]), s = n(s, z[1]));
603
+ k && (r = o(r, k[0]), s = n(s, k[1]));
526
604
  }
527
605
  return [ n(r, 0), o(s, f() - 1) ];
528
606
  },
529
607
  $findItemIndex: t => e(t - h),
530
608
  $isUnmeasuredItem: c,
531
- $getItemOffset: _,
609
+ $getItemOffset: E,
532
610
  $getItemSize: l,
533
611
  $getItemsLength: f,
534
612
  $getScrollOffset: () => b,
@@ -536,11 +614,11 @@ exports.createContainerDriver = (t, e) => {
536
614
  $getViewportSize: () => w,
537
615
  $getStartSpacerSize: () => h,
538
616
  $getTotalSize: i,
539
- u: () => (y = S, S = 0, [ y, 2 === k ]),
617
+ $: () => (y = S, S = 0, [ y, 2 === z ]),
540
618
  $subscribe: (t, e) => {
541
619
  const o = [ t, e ];
542
- return R.add(o), () => {
543
- R.delete(o);
620
+ return L.add(o), () => {
621
+ L.delete(o);
544
622
  };
545
623
  },
546
624
  $update: (e, o) => {
@@ -548,25 +626,25 @@ exports.createContainerDriver = (t, e) => {
548
626
  switch (e) {
549
627
  case 1:
550
628
  {
551
- if (o === b && 0 === k) break;
629
+ if (o === b && 0 === z) break;
552
630
  const t = y;
553
631
  y = 0;
554
632
  const e = o - b, n = r(e);
555
- t && n < r(t) + 1 || 0 !== k || (I = e < 0 ? 2 : 1), m && (m = !1), b = o, l = 4;
556
- const c = L();
633
+ t && n < r(t) + 1 || 0 !== z || (I = e < 0 ? 2 : 1), m && (m = !1), b = o, l = 4;
634
+ const c = R();
557
635
  c >= -w && c <= i() && (l += 1, s = n > w);
558
636
  break;
559
637
  }
560
638
 
561
639
  case 2:
562
- l = 8, 0 !== I && (n = !0, l += 1), I = 0, k = 0, z = null;
640
+ l = 8, 0 !== I && (n = !0, l += 1), I = 0, z = 0, k = null;
563
641
  break;
564
642
 
565
643
  case 3:
566
644
  {
567
645
  const t = o.filter(([t, e]) => !c(t, e));
568
646
  if (!t.length) break;
569
- E($(t, C, O(), w)), l = 3, s = !0;
647
+ q($(t, _, O(), w)), l = 3, s = !0;
570
648
  break;
571
649
  }
572
650
 
@@ -575,7 +653,7 @@ exports.createContainerDriver = (t, e) => {
575
653
  break;
576
654
 
577
655
  case 5:
578
- o[1] ? (E(u(o[0], !0)), k = 2, l = 1) : (u(o[0]), l = 1);
656
+ o[1] ? (q(u(o[0], !0)), z = 2, l = 1) : (u(o[0]), l = 1);
579
657
  break;
580
658
 
581
659
  case 6:
@@ -583,20 +661,20 @@ exports.createContainerDriver = (t, e) => {
583
661
  break;
584
662
 
585
663
  case 7:
586
- k = 1;
664
+ z = 1;
587
665
  break;
588
666
 
589
667
  case 9:
590
668
  {
591
669
  const t = p(o, O());
592
- null != t && (E(t), l = 3);
670
+ null != t && (q(t), l = 3);
593
671
  break;
594
672
  }
595
673
 
596
674
  case 8:
597
- z = t(o, o + w), l = 1;
675
+ k = t(o, o + w), l = 1;
598
676
  }
599
- l && (x = 1 + (2147483647 & x), n && v && (S += v, v = 0), R.forEach(([t, e]) => {
677
+ l && (x = 1 + (2147483647 & x), n && v && (S += v, v = 0), L.forEach(([t, e]) => {
600
678
  l & t && e(s);
601
679
  }));
602
680
  }
@@ -621,7 +699,7 @@ exports.createContainerDriver = (t, e) => {
621
699
  };
622
700
  a.addEventListener("resize", w), f.t($), r = () => {
623
701
  a.removeEventListener("resize", w);
624
- }, n = R(t, a, $, e, d, null, x), c[1](!0);
702
+ }, n = L(t, a, $, e, d, null, x), c[1](!0);
625
703
  },
626
704
  $dispose() {
627
705
  r && r(), f.l(), n && n.l(), c[1](!1), c = a();
@@ -630,10 +708,10 @@ exports.createContainerDriver = (t, e) => {
630
708
  i.delete(t), f.o(t);
631
709
  }),
632
710
  async $scroll(t, e) {
633
- await c[0] && n.$(t, e);
711
+ await c[0] && n.p(t, e);
634
712
  },
635
713
  $effect() {
636
- n && n.i();
714
+ n && n.u();
637
715
  },
638
716
  $getBaseOffset: () => s()
639
717
  };
@@ -656,8 +734,8 @@ exports.getScrollSize = t => n(t.$getTotalSize(), t.$getViewportSize()), exports
656
734
  for (const o in t) e += o.replace(/[A-Z]/g, t => "-" + t.toLowerCase()) + ":" + t[o] + ";";
657
735
  return e;
658
736
  }, exports.isBrowser = $, exports.microtask = u, exports.scrollBy = (t, e, o) => {
659
- L(t, o + e.$getScrollOffset());
660
- }, exports.scrollTo = L, exports.scrollToIndex = (t, e, o, {align: n, smooth: r, offset: s = 0} = {}) => {
737
+ R(t, o + e.$getScrollOffset());
738
+ }, exports.scrollTo = R, exports.scrollToIndex = (t, e, o, {align: n, smooth: r, offset: s = 0} = {}) => {
661
739
  if (o = l(o, 0, e.$getItemsLength() - 1), "nearest" === n) {
662
740
  const t = e.$getItemOffset(o), r = e.$getScrollOffset();
663
741
  if (t < r) n = "start"; else {