react-window 2.3.3 → 2.4.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.
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { jsx as oe } from "react/jsx-runtime";
3
- import { useState as V, useLayoutEffect as ce, useEffect as te, useMemo as H, useRef as q, useCallback as $, memo as fe, useImperativeHandle as de, createElement as C } from "react";
4
- function be(e) {
2
+ import { jsx as re } from "react/jsx-runtime";
3
+ import { useLayoutEffect as Te, useEffect as ne, useState as M, useSyncExternalStore as Re, useMemo as q, useRef as H, useCallback as U, memo as be, useImperativeHandle as xe, createElement as le, Fragment as ue } from "react";
4
+ const W = typeof window < "u" ? Te : ne;
5
+ function we(e) {
5
6
  let t = e;
6
7
  for (; t; ) {
7
8
  if (t.dir)
@@ -10,14 +11,30 @@ function be(e) {
10
11
  }
11
12
  return !1;
12
13
  }
13
- function me(e, t) {
14
- const [s, r] = V(t === "rtl");
15
- return ce(() => {
16
- t ? r(t === "rtl") : e && r(be(e));
14
+ function Ae(e, t) {
15
+ const [s, o] = M(t === "rtl");
16
+ return W(() => {
17
+ t ? o(t === "rtl") : e && o(we(e));
17
18
  }, [t, e]), s;
18
19
  }
19
- const Y = typeof window < "u" ? ce : te;
20
+ function Me() {
21
+ return () => {
22
+ };
23
+ }
24
+ function Ie() {
25
+ return Re(
26
+ Me,
27
+ () => !1,
28
+ () => !0
29
+ );
30
+ }
20
31
  function ae(e) {
32
+ return e?.ownerDocument.defaultView ?? window;
33
+ }
34
+ function Oe(e) {
35
+ return ae(e).ResizeObserver ?? (typeof ResizeObserver < "u" ? ResizeObserver : void 0);
36
+ }
37
+ function de(e) {
21
38
  if (e !== void 0)
22
39
  switch (typeof e) {
23
40
  case "number":
@@ -29,101 +46,105 @@ function ae(e) {
29
46
  }
30
47
  }
31
48
  }
32
- function we({
49
+ function Le({
33
50
  box: e,
34
51
  defaultHeight: t,
35
52
  defaultWidth: s,
36
- disabled: r,
37
- element: n,
38
- mode: o,
39
- style: d
53
+ disabled: o,
54
+ element: r,
55
+ mode: i,
56
+ style: n
40
57
  }) {
41
- const { styleHeight: l, styleWidth: c } = H(
58
+ const { styleHeight: l, styleWidth: a } = q(
42
59
  () => ({
43
- styleHeight: ae(d?.height),
44
- styleWidth: ae(d?.width)
60
+ styleHeight: de(n?.height),
61
+ styleWidth: de(n?.width)
45
62
  }),
46
- [d?.height, d?.width]
47
- ), [f, a] = V({
63
+ [n?.height, n?.width]
64
+ ), [v, f] = M({
48
65
  height: t,
49
66
  width: s
50
- }), i = r || o === "only-height" && l !== void 0 || o === "only-width" && c !== void 0 || l !== void 0 && c !== void 0;
51
- return Y(() => {
52
- if (n === null || i)
67
+ }), c = o || i === "only-height" && l !== void 0 || i === "only-width" && a !== void 0 || l !== void 0 && a !== void 0;
68
+ return W(() => {
69
+ if (r === null || c)
53
70
  return;
54
- const u = new ResizeObserver((h) => {
55
- for (const x of h) {
56
- const { contentRect: p, target: w } = x;
57
- n === w && a((g) => g.height === p.height && g.width === p.width ? g : {
58
- height: p.height,
59
- width: p.width
71
+ const u = Oe(r);
72
+ if (!u)
73
+ return;
74
+ const p = new u((d) => {
75
+ for (const x of d) {
76
+ const { contentRect: h, target: O } = x;
77
+ r === O && f((b) => b.height === h.height && b.width === h.width ? b : {
78
+ height: h.height,
79
+ width: h.width
60
80
  });
61
81
  }
62
82
  });
63
- return u.observe(n, { box: e }), () => {
64
- u?.unobserve(n);
83
+ return p.observe(r, { box: e }), () => {
84
+ p?.unobserve(r);
65
85
  };
66
- }, [e, i, n, l, c]), H(
86
+ }, [e, c, r, l, a]), q(
67
87
  () => ({
68
- height: l ?? f.height,
69
- width: c ?? f.width
88
+ height: l ?? v.height,
89
+ width: a ?? v.width
70
90
  }),
71
- [f, l, c]
91
+ [v, l, a]
72
92
  );
73
93
  }
74
94
  function ee(e) {
75
- const t = q(() => {
95
+ const t = H(() => {
76
96
  throw new Error("Cannot call an event handler while rendering.");
77
97
  });
78
- return Y(() => {
98
+ return W(() => {
79
99
  t.current = e;
80
- }, [e]), $((...s) => t.current?.(...s), [t]);
100
+ }, [e]), U((...s) => t.current?.(...s), [t]);
81
101
  }
82
- let N = null;
83
- function Ie(e = !1) {
84
- if (N === null || e) {
85
- const t = document.createElement("div"), s = t.style;
86
- s.width = "50px", s.height = "50px", s.overflow = "scroll", s.direction = "rtl";
87
- const r = document.createElement("div"), n = r.style;
88
- return n.width = "100px", n.height = "100px", t.appendChild(r), document.body.appendChild(t), t.scrollLeft > 0 ? N = "positive-descending" : (t.scrollLeft = 1, t.scrollLeft === 0 ? N = "negative" : N = "positive-ascending"), document.body.removeChild(t), N;
102
+ const he = /* @__PURE__ */ new WeakMap();
103
+ function Ee(e = !1, t = document) {
104
+ let s = he.get(t);
105
+ if (s === void 0 || e) {
106
+ const o = t.createElement("div"), r = o.style;
107
+ r.width = "50px", r.height = "50px", r.overflow = "scroll", r.direction = "rtl";
108
+ const i = t.createElement("div"), n = i.style;
109
+ n.width = "100px", n.height = "100px", o.appendChild(i), t.body.appendChild(o), o.scrollLeft > 0 ? s = "positive-descending" : (o.scrollLeft = 1, o.scrollLeft === 0 ? s = "negative" : s = "positive-ascending"), t.body.removeChild(o), he.set(t, s);
89
110
  }
90
- return N;
111
+ return s;
91
112
  }
92
- function K({
113
+ function C({
93
114
  containerElement: e,
94
115
  direction: t,
95
116
  isRtl: s,
96
- scrollOffset: r
117
+ scrollOffset: o
97
118
  }) {
98
119
  if (t === "horizontal" && s)
99
- switch (Ie()) {
120
+ switch (Ee(!1, e?.ownerDocument ?? document)) {
100
121
  case "negative":
101
- return -r;
122
+ return -o;
102
123
  case "positive-descending": {
103
124
  if (e) {
104
- const { clientWidth: n, scrollWidth: o } = e;
105
- return o - n - r;
125
+ const { clientWidth: r, scrollWidth: i } = e;
126
+ return i - r - o;
106
127
  }
107
128
  break;
108
129
  }
109
130
  }
110
- return r;
131
+ return o;
111
132
  }
112
- function L(e, t = "Assertion error") {
133
+ function $(e, t = "Assertion error") {
113
134
  if (!e)
114
135
  throw console.error(t), Error(t);
115
136
  }
116
- function _(e, t) {
137
+ function J(e, t) {
117
138
  if (e === t)
118
139
  return !0;
119
- if (!!e != !!t || (L(e !== void 0), L(t !== void 0), Object.keys(e).length !== Object.keys(t).length))
140
+ if (!!e != !!t || ($(e !== void 0), $(t !== void 0), Object.keys(e).length !== Object.keys(t).length))
120
141
  return !1;
121
142
  for (const s in e)
122
143
  if (!Object.hasOwn(t, s) || !Object.is(t[s], e[s]))
123
144
  return !1;
124
145
  return !0;
125
146
  }
126
- function ue({
147
+ function ze({
127
148
  cachedBounds: e,
128
149
  itemCount: t,
129
150
  itemSize: s
@@ -133,162 +154,162 @@ function ue({
133
154
  if (typeof s == "number")
134
155
  return t * s;
135
156
  {
136
- const r = e.get(
157
+ const o = e.get(
137
158
  e.size === 0 ? 0 : e.size - 1
138
159
  );
139
- L(r !== void 0, "Unexpected bounds cache miss");
140
- const n = (r.scrollOffset + r.size) / e.size;
141
- return t * n;
160
+ $(o !== void 0, "Unexpected bounds cache miss");
161
+ const r = (o.scrollOffset + o.size) / e.size;
162
+ return t * r;
142
163
  }
143
164
  }
144
- function Oe({
165
+ function Ve({
145
166
  align: e,
146
167
  cachedBounds: t,
147
168
  index: s,
148
- itemCount: r,
149
- itemSize: n,
150
- containerScrollOffset: o,
151
- containerSize: d
169
+ itemCount: o,
170
+ itemSize: r,
171
+ containerScrollOffset: i,
172
+ containerSize: n
152
173
  }) {
153
- if (s < 0 || s >= r)
174
+ if (s < 0 || s >= o)
154
175
  throw RangeError(`Invalid index specified: ${s}`, {
155
- cause: `Index ${s} is not within the range of 0 - ${r - 1}`
176
+ cause: `Index ${s} is not within the range of 0 - ${o - 1}`
156
177
  });
157
- const l = t.get(s), c = ue({
178
+ const l = t.get(s), a = ze({
158
179
  cachedBounds: t,
159
- itemCount: r,
160
- itemSize: n
161
- }), f = Math.max(
180
+ itemCount: o,
181
+ itemSize: r
182
+ }), v = Math.max(
162
183
  0,
163
- Math.min(c - d, l.scrollOffset)
164
- ), a = Math.max(
184
+ Math.min(a - n, l.scrollOffset)
185
+ ), f = Math.max(
165
186
  0,
166
- l.scrollOffset - d + l.size
167
- ), i = l.size > d ? o >= l.scrollOffset && o <= a : o >= a && o <= l.scrollOffset;
168
- switch (e === "smart" && (e = i ? "auto" : "center"), e) {
187
+ l.scrollOffset - n + l.size
188
+ ), c = l.size > n ? i >= l.scrollOffset && i <= f : i >= f && i <= l.scrollOffset;
189
+ switch (e === "smart" && (e = c ? "auto" : "center"), e) {
169
190
  case "start":
170
- return f;
191
+ return v;
171
192
  case "end":
172
- return a;
193
+ return f;
173
194
  case "center":
174
195
  return Math.max(
175
196
  0,
176
197
  Math.min(
177
- c - d,
178
- l.scrollOffset + l.size / 2 - d / 2
198
+ a - n,
199
+ l.scrollOffset + l.size / 2 - n / 2
179
200
  )
180
201
  );
181
202
  case "auto":
182
203
  default:
183
- return i ? o : o < a ? a : f;
204
+ return c ? i : i < f ? f : v;
184
205
  }
185
206
  }
186
- function re({
207
+ function ce({
187
208
  cachedBounds: e,
188
209
  containerScrollOffset: t,
189
210
  containerSize: s,
190
- itemCount: r,
191
- overscanCount: n
211
+ itemCount: o,
212
+ overscanCount: r
192
213
  }) {
193
- const o = r - 1;
194
- if (r === 0)
214
+ const i = o - 1;
215
+ if (o === 0)
195
216
  return {
196
217
  startIndexVisible: 0,
197
218
  stopIndexVisible: -1,
198
219
  startIndexOverscan: 0,
199
220
  stopIndexOverscan: -1
200
221
  };
201
- let d, l;
202
- const { itemSize: c } = e;
203
- if (c !== void 0 && c > 0)
204
- d = Math.max(
222
+ let n, l;
223
+ const { itemSize: a } = e;
224
+ if (a !== void 0 && a > 0)
225
+ n = Math.max(
205
226
  0,
206
- Math.min(o, Math.floor(t / c))
227
+ Math.min(i, Math.floor(t / a))
207
228
  ), l = Math.max(
208
- d,
229
+ n,
209
230
  Math.min(
210
- o,
211
- Math.ceil((t + s) / c) - 1
231
+ i,
232
+ Math.ceil((t + s) / a) - 1
212
233
  )
213
234
  );
214
235
  else {
215
- let f = 0, a = Math.min(o, Math.max(0, e.size - 1));
216
- for (; f < a; ) {
217
- const i = Math.floor((f + a) / 2), u = e.get(i);
218
- u.scrollOffset + u.size > t ? a = i : f = i + 1;
236
+ let v = 0, f = Math.min(i, Math.max(0, e.size - 1));
237
+ for (; v < f; ) {
238
+ const c = Math.floor((v + f) / 2), u = e.get(c);
239
+ u.scrollOffset + u.size > t ? f = c : v = c + 1;
219
240
  }
220
- for (; f < o; ) {
221
- const i = e.get(f);
222
- if (i.scrollOffset + i.size > t) break;
223
- f++;
241
+ for (; v < i; ) {
242
+ const c = e.get(v);
243
+ if (c.scrollOffset + c.size > t) break;
244
+ v++;
224
245
  }
225
- for (d = f, l = f; l < o; ) {
226
- const i = e.get(l);
227
- if (i.scrollOffset + i.size >= t + s)
246
+ for (n = v, l = v; l < i; ) {
247
+ const c = e.get(l);
248
+ if (c.scrollOffset + c.size >= t + s)
228
249
  break;
229
250
  l++;
230
251
  }
231
252
  }
232
253
  return {
233
- startIndexVisible: d,
254
+ startIndexVisible: n,
234
255
  stopIndexVisible: l,
235
- startIndexOverscan: Math.max(0, d - n),
236
- stopIndexOverscan: Math.min(o, l + n)
256
+ startIndexOverscan: Math.max(0, n - r),
257
+ stopIndexOverscan: Math.min(i, l + r)
237
258
  };
238
259
  }
239
- function ze({
260
+ function ke({
240
261
  itemCount: e,
241
262
  itemProps: t,
242
263
  itemSize: s
243
264
  }) {
244
- const r = /* @__PURE__ */ new Map();
265
+ const o = /* @__PURE__ */ new Map();
245
266
  return {
246
267
  itemSize: typeof s == "number" ? s : void 0,
247
- get(n) {
248
- if (L(n < e, `Invalid index ${n}`), typeof s == "number") {
249
- L(n >= 0, `Invalid index ${n}`);
250
- let d = r.get(n);
251
- return d === void 0 && (d = { size: s, scrollOffset: n * s }, r.set(n, d)), d;
268
+ get(r) {
269
+ if ($(r < e, `Invalid index ${r}`), typeof s == "number") {
270
+ $(r >= 0, `Invalid index ${r}`);
271
+ let n = o.get(r);
272
+ return n === void 0 && (n = { size: s, scrollOffset: r * s }, o.set(r, n)), n;
252
273
  }
253
- for (; r.size - 1 < n; ) {
254
- const d = r.size, l = s(d, t);
255
- if (d === 0)
256
- r.set(d, {
274
+ for (; o.size - 1 < r; ) {
275
+ const n = o.size, l = s(n, t);
276
+ if (n === 0)
277
+ o.set(n, {
257
278
  size: l,
258
279
  scrollOffset: 0
259
280
  });
260
281
  else {
261
- const c = r.get(d - 1);
262
- L(
263
- c !== void 0,
264
- `Unexpected bounds cache miss for index ${n}`
265
- ), r.set(d, {
266
- scrollOffset: c.scrollOffset + c.size,
282
+ const a = o.get(n - 1);
283
+ $(
284
+ a !== void 0,
285
+ `Unexpected bounds cache miss for index ${r}`
286
+ ), o.set(n, {
287
+ scrollOffset: a.scrollOffset + a.size,
267
288
  size: l
268
289
  });
269
290
  }
270
291
  }
271
- const o = r.get(n);
272
- return L(
273
- o !== void 0,
274
- `Unexpected bounds cache miss for index ${n}`
275
- ), o;
292
+ const i = o.get(r);
293
+ return $(
294
+ i !== void 0,
295
+ `Unexpected bounds cache miss for index ${r}`
296
+ ), i;
276
297
  },
277
- set(n, o) {
278
- r.set(n, o);
298
+ set(r, i) {
299
+ o.set(r, i);
279
300
  },
280
301
  get size() {
281
- return r.size;
302
+ return o.size;
282
303
  }
283
304
  };
284
305
  }
285
- function ye({
306
+ function Fe({
286
307
  itemCount: e,
287
308
  itemProps: t,
288
309
  itemSize: s
289
310
  }) {
290
- return H(
291
- () => ze({
311
+ return q(
312
+ () => ke({
292
313
  itemCount: e,
293
314
  itemProps: t,
294
315
  itemSize: s
@@ -296,17 +317,17 @@ function ye({
296
317
  [e, t, s]
297
318
  );
298
319
  }
299
- function Se({
320
+ function We({
300
321
  containerSize: e,
301
322
  itemSize: t
302
323
  }) {
303
324
  let s;
304
325
  switch (typeof t) {
305
326
  case "string": {
306
- L(
327
+ $(
307
328
  t.endsWith("%"),
308
329
  `Invalid item size: "${t}"; string values must be percentages (e.g. "100%")`
309
- ), L(
330
+ ), $(
310
331
  e !== void 0,
311
332
  "Container size must be defined if a percentage item size is specified"
312
333
  ), s = e * parseFloat(t) / 100;
@@ -319,494 +340,564 @@ function Se({
319
340
  }
320
341
  return s;
321
342
  }
322
- function ie({
343
+ function fe({
323
344
  containerElement: e,
324
345
  containerStyle: t,
325
346
  defaultContainerSize: s = 0,
347
+ defaultScrollOffset: o = 0,
326
348
  direction: r,
327
- isRtl: n = !1,
328
- itemCount: o,
329
- itemProps: d,
330
- itemSize: l,
331
- onResize: c,
349
+ isRtl: i = !1,
350
+ itemCount: n,
351
+ itemProps: l,
352
+ itemSize: a,
353
+ onResize: v,
332
354
  overscanCount: f
333
355
  }) {
334
- const { height: a = s, width: i = s } = we({
356
+ const { height: c = s, width: u = s } = Le({
335
357
  defaultHeight: r === "vertical" ? s : void 0,
336
358
  defaultWidth: r === "horizontal" ? s : void 0,
337
359
  element: e,
338
360
  mode: r === "vertical" ? "only-height" : "only-width",
339
361
  style: t
340
- }), u = q({
362
+ }), p = H({
341
363
  height: 0,
342
364
  width: 0
343
- }), h = r === "vertical" ? a : i, x = Se({ containerSize: h, itemSize: l });
344
- ce(() => {
345
- if (typeof c == "function") {
346
- const v = u.current;
347
- (v.height !== a || v.width !== i) && (c({ height: a, width: i }, { ...v }), v.height = a, v.width = i);
365
+ }), d = r === "vertical" ? c : u, x = We({ containerSize: d, itemSize: a });
366
+ W(() => {
367
+ if (typeof v == "function") {
368
+ const g = p.current;
369
+ (g.height !== c || g.width !== u) && (v({ height: c, width: u }, { ...g }), g.height = c, g.width = u);
348
370
  }
349
- }, [a, c, i]);
350
- const p = ye({
351
- itemCount: o,
352
- itemProps: d,
371
+ }, [c, v, u]);
372
+ const h = Fe({
373
+ itemCount: n,
374
+ itemProps: l,
353
375
  itemSize: x
354
- }), w = $(
355
- (v) => p.get(v),
356
- [p]
357
- ), [g, B] = V(
358
- () => re({
359
- cachedBounds: p,
360
- // TODO Potentially support a defaultScrollOffset prop?
361
- containerScrollOffset: 0,
362
- containerSize: h,
363
- itemCount: o,
376
+ }), O = Ie(), [b] = M(
377
+ () => O ? 0 : o
378
+ ), D = U(
379
+ (g) => h.get(g),
380
+ [h]
381
+ ), [m, X] = M(
382
+ () => ce({
383
+ cachedBounds: h,
384
+ containerScrollOffset: b,
385
+ containerSize: d,
386
+ itemCount: n,
364
387
  overscanCount: f
365
388
  })
366
389
  ), {
367
- startIndexVisible: T,
368
- startIndexOverscan: E,
369
- stopIndexVisible: F,
370
- stopIndexOverscan: b
390
+ startIndexVisible: L,
391
+ startIndexOverscan: j,
392
+ stopIndexVisible: I,
393
+ stopIndexOverscan: te
371
394
  } = {
372
- startIndexVisible: Math.min(o - 1, g.startIndexVisible),
373
- startIndexOverscan: Math.min(o - 1, g.startIndexOverscan),
374
- stopIndexVisible: Math.min(o - 1, g.stopIndexVisible),
375
- stopIndexOverscan: Math.min(o - 1, g.stopIndexOverscan)
376
- }, X = $(
377
- () => ue({
378
- cachedBounds: p,
379
- itemCount: o,
395
+ startIndexVisible: Math.min(n - 1, m.startIndexVisible),
396
+ startIndexOverscan: Math.min(n - 1, m.startIndexOverscan),
397
+ stopIndexVisible: Math.min(n - 1, m.stopIndexVisible),
398
+ stopIndexOverscan: Math.min(n - 1, m.stopIndexOverscan)
399
+ }, A = U(
400
+ () => ze({
401
+ cachedBounds: h,
402
+ itemCount: n,
380
403
  itemSize: x
381
404
  }),
382
- [p, o, x]
383
- ), m = $(
384
- (v) => {
385
- const I = K({
405
+ [h, n, x]
406
+ ), G = U(
407
+ (g) => {
408
+ const w = C({
386
409
  containerElement: e,
387
410
  direction: r,
388
- isRtl: n,
389
- scrollOffset: v
411
+ isRtl: i,
412
+ scrollOffset: g
390
413
  });
391
- return re({
392
- cachedBounds: p,
393
- containerScrollOffset: I,
394
- containerSize: h,
395
- itemCount: o,
414
+ return ce({
415
+ cachedBounds: h,
416
+ containerScrollOffset: w,
417
+ containerSize: d,
418
+ itemCount: n,
396
419
  overscanCount: f
397
420
  });
398
421
  },
399
422
  [
400
- p,
401
- e,
402
423
  h,
424
+ e,
425
+ d,
403
426
  r,
427
+ i,
404
428
  n,
405
- o,
406
429
  f
407
430
  ]
408
- );
409
- Y(() => {
410
- const v = (r === "vertical" ? e?.scrollTop : e?.scrollLeft) ?? 0;
411
- B(m(v));
412
- }, [e, r, m]), Y(() => {
431
+ ), Q = H(!1);
432
+ W(() => {
433
+ if (!e || n === 0 || Q.current || (Q.current = !0, o <= 0))
434
+ return;
435
+ const g = r === "horizontal" && we(e);
436
+ if (C({
437
+ containerElement: e,
438
+ direction: r,
439
+ isRtl: g,
440
+ scrollOffset: r === "vertical" ? e.scrollTop : e.scrollLeft
441
+ }) !== 0)
442
+ return;
443
+ const y = C({
444
+ containerElement: e,
445
+ direction: r,
446
+ isRtl: g,
447
+ scrollOffset: o
448
+ });
449
+ typeof e.scrollTo == "function" ? e.scrollTo({
450
+ behavior: "instant",
451
+ [r === "vertical" ? "top" : "left"]: y
452
+ }) : r === "vertical" ? e.scrollTop = y : e.scrollLeft = y;
453
+ }, [e, n]), W(() => {
454
+ const g = e ? G(
455
+ r === "vertical" ? e.scrollTop : e.scrollLeft
456
+ ) : ce({
457
+ cachedBounds: h,
458
+ containerScrollOffset: b,
459
+ containerSize: d,
460
+ itemCount: n,
461
+ overscanCount: f
462
+ });
463
+ X((w) => J(g, w) ? w : g);
464
+ }, [
465
+ h,
466
+ e,
467
+ d,
468
+ r,
469
+ G,
470
+ b,
471
+ n,
472
+ f
473
+ ]), W(() => {
413
474
  if (!e)
414
475
  return;
415
- const v = () => {
416
- B((I) => {
417
- const { scrollLeft: R, scrollTop: z } = e, y = K({
476
+ const g = () => {
477
+ X((w) => {
478
+ const { scrollLeft: y, scrollTop: T } = e, E = C({
418
479
  containerElement: e,
419
480
  direction: r,
420
- isRtl: n,
421
- scrollOffset: r === "vertical" ? z : R
422
- }), G = re({
423
- cachedBounds: p,
424
- containerScrollOffset: y,
425
- containerSize: h,
426
- itemCount: o,
481
+ isRtl: i,
482
+ scrollOffset: r === "vertical" ? T : y
483
+ }), V = ce({
484
+ cachedBounds: h,
485
+ containerScrollOffset: E,
486
+ containerSize: d,
487
+ itemCount: n,
427
488
  overscanCount: f
428
489
  });
429
- return _(G, I) ? I : G;
490
+ return J(V, w) ? w : V;
430
491
  });
431
492
  };
432
- return e.addEventListener("scroll", v), () => {
433
- e.removeEventListener("scroll", v);
493
+ return e.addEventListener("scroll", g), () => {
494
+ e.removeEventListener("scroll", g);
434
495
  };
435
496
  }, [
436
- p,
437
- e,
438
497
  h,
498
+ e,
499
+ d,
439
500
  r,
501
+ i,
440
502
  n,
441
- o,
442
503
  f
443
504
  ]);
444
- const U = ee(
505
+ const z = ee(
445
506
  ({
446
- align: v = "auto",
447
- containerScrollOffset: I,
448
- index: R
507
+ align: g = "auto",
508
+ containerScrollOffset: w,
509
+ index: y
449
510
  }) => {
450
- let z = Oe({
451
- align: v,
452
- cachedBounds: p,
453
- containerScrollOffset: K({
511
+ let T = Ve({
512
+ align: g,
513
+ cachedBounds: h,
514
+ containerScrollOffset: C({
454
515
  containerElement: e,
455
516
  direction: r,
456
- isRtl: n,
457
- scrollOffset: I
517
+ isRtl: i,
518
+ scrollOffset: w
458
519
  }),
459
- containerSize: h,
460
- index: R,
461
- itemCount: o,
520
+ containerSize: d,
521
+ index: y,
522
+ itemCount: n,
462
523
  itemSize: x
463
524
  });
464
525
  if (e) {
465
- if (z = K({
526
+ if (T = C({
466
527
  containerElement: e,
467
528
  direction: r,
468
- isRtl: n,
469
- scrollOffset: z
529
+ isRtl: i,
530
+ scrollOffset: T
470
531
  }), typeof e.scrollTo != "function") {
471
- const y = m(z);
472
- _(g, y) || B(y);
532
+ const E = G(T);
533
+ J(m, E) || X(E);
473
534
  }
474
- return z;
535
+ return T;
475
536
  }
476
537
  }
477
538
  );
478
539
  return {
479
- getCellBounds: w,
480
- getEstimatedSize: X,
481
- scrollToIndex: U,
482
- startIndexOverscan: E,
483
- startIndexVisible: T,
484
- stopIndexOverscan: b,
485
- stopIndexVisible: F
540
+ getCellBounds: D,
541
+ getEstimatedSize: A,
542
+ scrollToIndex: z,
543
+ startIndexOverscan: j,
544
+ startIndexVisible: L,
545
+ stopIndexOverscan: te,
546
+ stopIndexVisible: I
486
547
  };
487
548
  }
488
- function he(e) {
489
- const [t, s] = V(e);
490
- return _(t, e) ? t : (s(e), e);
549
+ function me(e) {
550
+ const [t, s] = M(e);
551
+ return J(t, e) ? t : (s(e), e);
491
552
  }
492
- function pe(e, t) {
553
+ function ye(e, t) {
493
554
  const {
494
555
  ariaAttributes: s,
495
- style: r,
496
- ...n
556
+ style: o,
557
+ ...r
497
558
  } = e, {
498
- ariaAttributes: o,
499
- style: d,
559
+ ariaAttributes: i,
560
+ style: n,
500
561
  ...l
501
562
  } = t;
502
- return _(s, o) && _(r, d) && _(n, l);
563
+ return J(s, i) && J(o, n) && J(r, l);
503
564
  }
504
- function Le({
565
+ function qe({
505
566
  cellComponent: e,
506
567
  cellProps: t,
507
568
  children: s,
508
- className: r,
509
- columnCount: n,
510
- columnKey: o,
511
- columnWidth: d,
569
+ className: o,
570
+ columnCount: r,
571
+ columnKey: i,
572
+ columnWidth: n,
512
573
  defaultHeight: l = 0,
513
- defaultWidth: c = 0,
514
- dir: f,
515
- gridRef: a,
516
- onCellsRendered: i,
517
- onResize: u,
518
- overscanCount: h = 3,
519
- rowCount: x,
520
- rowHeight: p,
521
- rowKey: w,
522
- style: g,
523
- tagName: B = "div",
524
- ...T
574
+ defaultScrollLeft: a = 0,
575
+ defaultScrollTop: v = 0,
576
+ defaultWidth: f = 0,
577
+ dir: c,
578
+ gridRef: u,
579
+ onCellsRendered: p,
580
+ onResize: d,
581
+ overscanCount: x = 3,
582
+ rowCount: h,
583
+ rowHeight: O,
584
+ rowKey: b,
585
+ style: D,
586
+ tagName: m = "div",
587
+ ...X
525
588
  }) {
526
- const E = he(t), F = H(
527
- () => fe(e, pe),
589
+ const L = me(t), j = q(
590
+ () => be(e, ye),
528
591
  [e]
529
- ), [b, X] = V(null), m = me(b, f), {
530
- getCellBounds: U,
531
- getEstimatedSize: v,
532
- startIndexOverscan: I,
533
- startIndexVisible: R,
534
- scrollToIndex: z,
592
+ ), [I, te] = M(null), A = Ae(I, c), {
593
+ getCellBounds: G,
594
+ getEstimatedSize: Q,
595
+ startIndexOverscan: z,
596
+ startIndexVisible: g,
597
+ scrollToIndex: w,
535
598
  stopIndexOverscan: y,
536
- stopIndexVisible: G
537
- } = ie({
538
- containerElement: b,
539
- containerStyle: g,
540
- defaultContainerSize: c,
599
+ stopIndexVisible: T
600
+ } = fe({
601
+ containerElement: I,
602
+ containerStyle: D,
603
+ defaultContainerSize: f,
604
+ defaultScrollOffset: a,
541
605
  direction: "horizontal",
542
- isRtl: m,
543
- itemCount: n,
544
- itemProps: E,
545
- itemSize: d,
546
- onResize: u,
547
- overscanCount: h
606
+ isRtl: A,
607
+ itemCount: r,
608
+ itemProps: L,
609
+ itemSize: n,
610
+ onResize: d,
611
+ overscanCount: x
548
612
  }), {
549
- getCellBounds: M,
550
- getEstimatedSize: S,
551
- startIndexOverscan: A,
552
- startIndexVisible: P,
553
- scrollToIndex: se,
554
- stopIndexOverscan: J,
555
- stopIndexVisible: le
556
- } = ie({
557
- containerElement: b,
558
- containerStyle: g,
613
+ getCellBounds: E,
614
+ getEstimatedSize: V,
615
+ startIndexOverscan: Z,
616
+ startIndexVisible: ie,
617
+ scrollToIndex: K,
618
+ stopIndexOverscan: N,
619
+ stopIndexVisible: k
620
+ } = fe({
621
+ containerElement: I,
622
+ containerStyle: D,
559
623
  defaultContainerSize: l,
624
+ defaultScrollOffset: v,
560
625
  direction: "vertical",
561
- itemCount: x,
562
- itemProps: E,
563
- itemSize: p,
564
- onResize: u,
565
- overscanCount: h
626
+ itemCount: h,
627
+ itemProps: L,
628
+ itemSize: O,
629
+ onResize: d,
630
+ overscanCount: x
566
631
  });
567
- de(
568
- a,
632
+ xe(
633
+ u,
569
634
  () => ({
570
635
  get element() {
571
- return b;
636
+ return I;
572
637
  },
573
638
  scrollToCell({
574
- behavior: W = "auto",
575
- columnAlign: O = "auto",
576
- columnIndex: j,
577
- rowAlign: D = "auto",
578
- rowIndex: k
639
+ behavior: F = "auto",
640
+ columnAlign: S = "auto",
641
+ columnIndex: _,
642
+ rowAlign: Y = "auto",
643
+ rowIndex: B
579
644
  }) {
580
- const Q = z({
581
- align: O,
582
- containerScrollOffset: b?.scrollLeft ?? 0,
583
- index: j
584
- }), xe = se({
585
- align: D,
586
- containerScrollOffset: b?.scrollTop ?? 0,
587
- index: k
645
+ const se = w({
646
+ align: S,
647
+ containerScrollOffset: I?.scrollLeft ?? 0,
648
+ index: _
649
+ }), Se = K({
650
+ align: Y,
651
+ containerScrollOffset: I?.scrollTop ?? 0,
652
+ index: B
588
653
  });
589
- typeof b?.scrollTo == "function" && b.scrollTo({
590
- behavior: W,
591
- left: Q,
592
- top: xe
654
+ typeof I?.scrollTo == "function" && I.scrollTo({
655
+ behavior: F,
656
+ left: se,
657
+ top: Se
593
658
  });
594
659
  },
595
660
  scrollToColumn({
596
- align: W = "auto",
597
- behavior: O = "auto",
598
- index: j
661
+ align: F = "auto",
662
+ behavior: S = "auto",
663
+ index: _
599
664
  }) {
600
- const D = z({
601
- align: W,
602
- containerScrollOffset: b?.scrollLeft ?? 0,
603
- index: j
665
+ const Y = w({
666
+ align: F,
667
+ containerScrollOffset: I?.scrollLeft ?? 0,
668
+ index: _
604
669
  });
605
- typeof b?.scrollTo == "function" && b.scrollTo({
606
- behavior: O,
607
- left: D
670
+ typeof I?.scrollTo == "function" && I.scrollTo({
671
+ behavior: S,
672
+ left: Y
608
673
  });
609
674
  },
610
675
  scrollToRow({
611
- align: W = "auto",
612
- behavior: O = "auto",
613
- index: j
676
+ align: F = "auto",
677
+ behavior: S = "auto",
678
+ index: _
614
679
  }) {
615
- const D = se({
616
- align: W,
617
- containerScrollOffset: b?.scrollTop ?? 0,
618
- index: j
680
+ const Y = K({
681
+ align: F,
682
+ containerScrollOffset: I?.scrollTop ?? 0,
683
+ index: _
619
684
  });
620
- typeof b?.scrollTo == "function" && b.scrollTo({
621
- behavior: O,
622
- top: D
685
+ typeof I?.scrollTo == "function" && I.scrollTo({
686
+ behavior: S,
687
+ top: Y
623
688
  });
624
689
  }
625
690
  }),
626
- [b, z, se]
627
- ), te(() => {
628
- I >= 0 && y >= 0 && A >= 0 && J >= 0 && i && i(
691
+ [I, w, K]
692
+ ), ne(() => {
693
+ z >= 0 && y >= 0 && Z >= 0 && N >= 0 && p && p(
629
694
  {
630
- columnStartIndex: R,
631
- columnStopIndex: G,
632
- rowStartIndex: P,
633
- rowStopIndex: le
695
+ columnStartIndex: g,
696
+ columnStopIndex: T,
697
+ rowStartIndex: ie,
698
+ rowStopIndex: k
634
699
  },
635
700
  {
636
- columnStartIndex: I,
701
+ columnStartIndex: z,
637
702
  columnStopIndex: y,
638
- rowStartIndex: A,
639
- rowStopIndex: J
703
+ rowStartIndex: Z,
704
+ rowStopIndex: N
640
705
  }
641
706
  );
642
707
  }, [
643
- i,
644
- I,
645
- R,
708
+ p,
709
+ z,
710
+ g,
646
711
  y,
647
- G,
648
- A,
649
- P,
650
- J,
651
- le
712
+ T,
713
+ Z,
714
+ ie,
715
+ N,
716
+ k
652
717
  ]);
653
- const ge = H(() => {
654
- const W = [];
655
- if (n > 0 && x > 0)
656
- for (let O = A; O <= J; O++) {
657
- const j = M(O), D = [];
658
- for (let k = I; k <= y; k++) {
659
- const Q = U(k);
660
- D.push(
661
- /* @__PURE__ */ C(
662
- F,
718
+ const R = q(() => {
719
+ const F = [];
720
+ if (r > 0 && h > 0)
721
+ for (let S = Z; S <= N; S++) {
722
+ const _ = E(S), Y = [];
723
+ for (let B = z; B <= y; B++) {
724
+ const se = G(B);
725
+ Y.push(
726
+ /* @__PURE__ */ le(
727
+ j,
663
728
  {
664
- ...E,
729
+ ...L,
665
730
  ariaAttributes: {
666
- "aria-colindex": k + 1,
731
+ "aria-colindex": B + 1,
667
732
  role: "gridcell"
668
733
  },
669
- columnIndex: k,
670
- key: o ? o({
671
- columnIndex: k,
672
- data: E,
673
- rowIndex: O
674
- }) : k,
675
- rowIndex: O,
734
+ columnIndex: B,
735
+ key: i ? i({
736
+ columnIndex: B,
737
+ data: L,
738
+ rowIndex: S
739
+ }) : B,
740
+ rowIndex: S,
676
741
  style: {
677
742
  position: "absolute",
678
- left: m ? void 0 : 0,
679
- right: m ? 0 : void 0,
680
- transform: `translate(${m ? -Q.scrollOffset : Q.scrollOffset}px, ${j.scrollOffset}px)`,
681
- height: j.size,
682
- width: Q.size
743
+ left: A ? void 0 : 0,
744
+ right: A ? 0 : void 0,
745
+ transform: `translate(${A ? -se.scrollOffset : se.scrollOffset}px, ${_.scrollOffset}px)`,
746
+ height: _.size,
747
+ width: se.size
683
748
  }
684
749
  }
685
750
  )
686
751
  );
687
752
  }
688
- W.push(
689
- /* @__PURE__ */ oe(
753
+ F.push(
754
+ /* @__PURE__ */ re(
690
755
  "div",
691
756
  {
692
757
  role: "row",
693
- "aria-rowindex": O + 1,
694
- children: D
758
+ "aria-rowindex": S + 1,
759
+ children: Y
695
760
  },
696
- w ? w({
697
- data: E,
698
- rowIndex: O
699
- }) : O
761
+ b ? b({
762
+ data: L,
763
+ rowIndex: S
764
+ }) : S
700
765
  )
701
766
  );
702
767
  }
703
- return W;
768
+ return F;
704
769
  }, [
705
- F,
706
- E,
707
- n,
708
- o,
709
- I,
770
+ j,
771
+ L,
772
+ r,
773
+ i,
774
+ z,
710
775
  y,
711
- U,
712
- M,
713
- m,
714
- x,
715
- w,
776
+ G,
777
+ E,
716
778
  A,
717
- J
718
- ]), ve = /* @__PURE__ */ oe(
779
+ h,
780
+ b,
781
+ Z,
782
+ N
783
+ ]), P = /* @__PURE__ */ re(
719
784
  "div",
720
785
  {
721
786
  "aria-hidden": !0,
722
787
  style: {
723
- height: S(),
724
- width: v(),
788
+ height: V(),
789
+ width: Q(),
725
790
  zIndex: -1
726
791
  }
727
792
  }
728
793
  );
729
- return C(
730
- B,
794
+ return le(
795
+ m,
731
796
  {
732
- "aria-colcount": n,
733
- "aria-rowcount": x,
797
+ "aria-colcount": r,
798
+ "aria-rowcount": h,
734
799
  role: "grid",
735
- ...T,
736
- className: r,
737
- dir: f,
738
- ref: X,
800
+ ...X,
801
+ className: o,
802
+ dir: c,
803
+ ref: te,
739
804
  style: {
740
805
  position: "relative",
741
806
  maxHeight: "100%",
742
807
  maxWidth: "100%",
743
808
  flexGrow: 1,
744
809
  overflow: "auto",
745
- ...g
810
+ ...D
746
811
  }
747
812
  },
748
- ge,
813
+ R,
749
814
  s,
750
- ve
815
+ P
751
816
  );
752
817
  }
753
- const Ve = V, Re = q;
754
- function Te(e) {
818
+ const Ge = M, Ne = H;
819
+ function $e({
820
+ callback: e,
821
+ element: t,
822
+ enabled: s = !0
823
+ }) {
824
+ const o = ee(e);
825
+ ne(() => {
826
+ if (!s || !t)
827
+ return;
828
+ const r = ae(t);
829
+ let i = r.requestAnimationFrame(() => {
830
+ i = r.requestAnimationFrame(o);
831
+ });
832
+ return () => {
833
+ r.cancelAnimationFrame(i);
834
+ };
835
+ }, [t, s, o]);
836
+ }
837
+ function He(e) {
755
838
  return e != null && typeof e == "object" && "getAverageRowHeight" in e && typeof e.getAverageRowHeight == "function";
756
839
  }
757
- function Ee({
840
+ function je({
758
841
  element: e,
759
842
  getCellBounds: t,
760
843
  isDynamicRowHeight: s,
761
- rowCount: r,
762
- rowElements: n,
763
- scrollToIndex: o
844
+ rowCount: o,
845
+ rowElements: r,
846
+ scrollToIndex: i
764
847
  }) {
765
- const d = q(null), l = q(void 0), c = ee(() => {
766
- d.current = null, l.current !== void 0 && (cancelAnimationFrame(l.current), l.current = void 0);
848
+ const n = H(null), l = H(
849
+ void 0
850
+ ), a = ee(() => {
851
+ n.current = null, l.current !== void 0 && (l.current.view.cancelAnimationFrame(l.current.id), l.current = void 0);
852
+ }), v = ee(() => {
853
+ const c = ae(e);
854
+ l.current = {
855
+ id: c.requestAnimationFrame(f),
856
+ view: c
857
+ };
767
858
  }), f = ee(() => {
768
859
  l.current = void 0;
769
- const a = d.current;
770
- if (!a) return;
771
- if (!e || !s || a.index >= r || performance.now() >= a.deadline) {
772
- c();
860
+ const c = n.current;
861
+ if (!c) return;
862
+ if (!e || !s || c.index >= o || performance.now() >= c.deadline) {
863
+ a();
773
864
  return;
774
865
  }
775
- const i = o({
776
- align: a.align,
866
+ const u = i({
867
+ align: c.align,
777
868
  containerScrollOffset: e.scrollTop,
778
- index: a.index
869
+ index: c.index
779
870
  });
780
- if (i !== void 0) {
781
- const u = Math.max(
871
+ if (u !== void 0) {
872
+ const p = Math.max(
782
873
  0,
783
- Math.min(i, e.scrollHeight - e.clientHeight)
874
+ Math.min(u, e.scrollHeight - e.clientHeight)
784
875
  );
785
- if (Math.abs(u - e.scrollTop) > 1)
786
- a.stableFrames = 0, e.scrollTo({ behavior: "instant", top: u });
876
+ if (Math.abs(p - e.scrollTop) > 1)
877
+ c.stableFrames = 0, e.scrollTo({ behavior: "instant", top: p });
787
878
  else {
788
- const h = n.current;
789
- if (!(h.some(
790
- (w) => w.getAttribute(Z) === `${a.index}`
791
- ) && h.every((w) => {
792
- const g = Number(w.getAttribute(Z));
879
+ const d = r.current;
880
+ if (!(d.some(
881
+ (O) => O.getAttribute(oe) === `${c.index}`
882
+ ) && d.every((O) => {
883
+ const b = Number(O.getAttribute(oe));
793
884
  return Math.abs(
794
- t(g).size - w.offsetHeight
885
+ t(b).size - O.offsetHeight
795
886
  ) <= 1;
796
887
  })))
797
- a.stableFrames = 0;
798
- else if (++a.stableFrames >= 2) {
799
- c();
888
+ c.stableFrames = 0;
889
+ else if (++c.stableFrames >= 2) {
890
+ a();
800
891
  return;
801
892
  }
802
893
  }
803
894
  }
804
- l.current = requestAnimationFrame(f);
895
+ v();
805
896
  });
806
- return Y(() => {
897
+ return W(() => {
807
898
  if (!e) return;
808
- const a = (i) => {
809
- switch (i.key) {
899
+ const c = (u) => {
900
+ switch (u.key) {
810
901
  case "ArrowUp":
811
902
  case "ArrowDown":
812
903
  case "PageUp":
@@ -814,299 +905,344 @@ function Ee({
814
905
  case "Home":
815
906
  case "End":
816
907
  case " ":
817
- c();
908
+ a();
818
909
  }
819
910
  };
820
- return e.addEventListener("wheel", c, { passive: !0 }), e.addEventListener("touchstart", c, { passive: !0 }), e.addEventListener("pointerdown", c), e.addEventListener("keydown", a), () => {
821
- c(), e.removeEventListener("wheel", c), e.removeEventListener("touchstart", c), e.removeEventListener("pointerdown", c), e.removeEventListener("keydown", a);
911
+ return e.addEventListener("wheel", a, { passive: !0 }), e.addEventListener("touchstart", a, { passive: !0 }), e.addEventListener("pointerdown", a), e.addEventListener("keydown", c), () => {
912
+ a(), e.removeEventListener("wheel", a), e.removeEventListener("touchstart", a), e.removeEventListener("pointerdown", a), e.removeEventListener("keydown", c);
822
913
  };
823
- }, [c, e]), $(
914
+ }, [a, e]), U(
824
915
  ({
825
- align: a = "auto",
826
- behavior: i = "auto",
827
- index: u
916
+ align: c = "auto",
917
+ behavior: u = "auto",
918
+ index: p
828
919
  }) => {
829
- s && a === "smart" && (a = o({
920
+ s && c === "smart" && (c = i({
830
921
  align: "auto",
831
922
  containerScrollOffset: e?.scrollTop ?? 0,
832
- index: u
923
+ index: p
833
924
  }) === (e?.scrollTop ?? 0) ? "auto" : "center");
834
- const h = o({
835
- align: a,
925
+ const d = i({
926
+ align: c,
836
927
  containerScrollOffset: e?.scrollTop ?? 0,
837
- index: u
928
+ index: p
838
929
  });
839
- c(), typeof e?.scrollTo == "function" && (s && (d.current = {
840
- align: a,
841
- index: u,
930
+ a(), typeof e?.scrollTo == "function" && (s && (n.current = {
931
+ align: c,
932
+ index: p,
842
933
  deadline: performance.now() + 1e3,
843
934
  stableFrames: 0
844
- }, l.current = requestAnimationFrame(f)), e.scrollTo({
845
- behavior: s ? "instant" : i,
846
- top: h
935
+ }, v()), e.scrollTo({
936
+ behavior: s ? "instant" : u,
937
+ top: d
847
938
  }));
848
939
  },
849
- [c, f, e, s, o]
940
+ [
941
+ a,
942
+ e,
943
+ s,
944
+ v,
945
+ i
946
+ ]
850
947
  );
851
948
  }
852
- const Z = "data-react-window-index";
853
- function ke({
949
+ const oe = "data-react-window-index", ve = "data-react-window-sizer";
950
+ function _e({
854
951
  children: e,
855
952
  className: t,
856
953
  defaultHeight: s = 0,
954
+ defaultScrollOffset: o = 0,
857
955
  listRef: r,
858
- onResize: n,
859
- onRowsRendered: o,
860
- overscanCount: d = 3,
861
- rowComponent: l,
862
- rowCount: c,
956
+ onResize: i,
957
+ onRowsRendered: n,
958
+ overscanCount: l = 3,
959
+ rowComponent: a,
960
+ rowCount: v,
863
961
  rowHeight: f,
864
- rowKey: a,
865
- rowProps: i,
866
- tagName: u = "div",
867
- style: h,
962
+ rowKey: c,
963
+ rowProps: u,
964
+ tagName: p = "div",
965
+ style: d,
868
966
  ...x
869
967
  }) {
870
- const p = he(i), w = H(
871
- () => fe(l, pe),
872
- [l]
873
- ), [g, B] = V(null), T = Te(f), E = H(() => T ? (M) => f.getRowHeight(M) ?? f.getAverageRowHeight() : f, [T, f]), {
874
- getCellBounds: F,
875
- getEstimatedSize: b,
876
- scrollToIndex: X,
877
- startIndexOverscan: m,
878
- startIndexVisible: U,
879
- stopIndexOverscan: v,
880
- stopIndexVisible: I
881
- } = ie({
882
- containerElement: g,
883
- containerStyle: h,
968
+ const h = me(u), O = q(
969
+ () => be(a, ye),
970
+ [a]
971
+ ), [b, D] = M(null), m = He(f), X = q(() => m ? (k) => f.getRowHeight(k) ?? f.getAverageRowHeight() : f, [m, f]), L = Ie(), [j, I] = M(
972
+ () => L && m
973
+ ), te = H(f);
974
+ W(() => {
975
+ j && te.current !== f && I(!1);
976
+ }, [j, f]), $e({
977
+ callback: () => I(!1),
978
+ element: b,
979
+ enabled: j
980
+ });
981
+ const {
982
+ getCellBounds: A,
983
+ getEstimatedSize: G,
984
+ scrollToIndex: Q,
985
+ startIndexOverscan: z,
986
+ startIndexVisible: g,
987
+ stopIndexOverscan: w,
988
+ stopIndexVisible: y
989
+ } = fe({
990
+ containerElement: b,
991
+ containerStyle: d,
884
992
  defaultContainerSize: s,
993
+ defaultScrollOffset: o,
885
994
  direction: "vertical",
886
- itemCount: c,
887
- itemProps: p,
888
- itemSize: E,
889
- onResize: n,
890
- overscanCount: d
891
- }), R = q([]), z = Ee({
892
- element: g,
893
- getCellBounds: F,
894
- isDynamicRowHeight: T,
895
- rowCount: c,
896
- rowElements: R,
897
- scrollToIndex: X
995
+ itemCount: v,
996
+ itemProps: h,
997
+ itemSize: X,
998
+ onResize: i,
999
+ overscanCount: l
1000
+ }), T = H([]), E = je({
1001
+ element: b,
1002
+ getCellBounds: A,
1003
+ isDynamicRowHeight: m,
1004
+ rowCount: v,
1005
+ rowElements: T,
1006
+ scrollToIndex: Q
898
1007
  });
899
- de(
1008
+ xe(
900
1009
  r,
901
1010
  () => ({
902
1011
  get element() {
903
- return g;
1012
+ return b;
904
1013
  },
905
- scrollToRow: z
1014
+ scrollToRow: E
906
1015
  }),
907
- [g, z]
908
- ), Y(() => {
909
- if (!g)
1016
+ [b, E]
1017
+ ), W(() => {
1018
+ if (!b)
910
1019
  return;
911
- const M = Array.from(g.children).slice(
1020
+ const k = Array.from(b.children).slice(
912
1021
  0,
913
- m < 0 ? 0 : v - m + 1
914
- ).filter((S, A) => {
915
- if (S.hasAttribute("aria-hidden"))
1022
+ z < 0 ? 0 : w - z + 1
1023
+ ).filter((R, P) => {
1024
+ if (R.hasAttribute(ve))
916
1025
  return !1;
917
- const P = `${m + A}`;
918
- return S.setAttribute(Z, P), !0;
1026
+ const F = `${z + P}`;
1027
+ return R.setAttribute(oe, F), !0;
919
1028
  });
920
- if (R.current = M, T)
921
- return f.observeRowElements(M);
1029
+ if (T.current = k, m)
1030
+ return f.observeRowElements(k);
922
1031
  }, [
923
- w,
924
- g,
925
- T,
926
- c,
927
- f,
928
- a,
929
- p,
1032
+ O,
1033
+ b,
930
1034
  m,
931
- v
932
- ]), te(() => {
933
- m >= 0 && v >= 0 && o && o(
1035
+ v,
1036
+ f,
1037
+ c,
1038
+ h,
1039
+ z,
1040
+ w
1041
+ ]), ne(() => {
1042
+ z >= 0 && w >= 0 && n && n(
934
1043
  {
935
- startIndex: U,
936
- stopIndex: I
1044
+ startIndex: g,
1045
+ stopIndex: y
937
1046
  },
938
1047
  {
939
- startIndex: m,
940
- stopIndex: v
1048
+ startIndex: z,
1049
+ stopIndex: w
941
1050
  }
942
1051
  );
943
1052
  }, [
944
- o,
945
- m,
946
- U,
947
- v,
948
- I
1053
+ n,
1054
+ z,
1055
+ g,
1056
+ w,
1057
+ y
949
1058
  ]);
950
- const y = H(() => {
951
- const M = [];
952
- if (c > 0)
953
- for (let S = m; S <= v; S++) {
954
- const A = F(S);
955
- M.push(
956
- /* @__PURE__ */ C(
957
- w,
1059
+ const V = j && m && z === 0, Z = q(() => {
1060
+ const k = [];
1061
+ if (v > 0)
1062
+ for (let R = z; R <= w; R++) {
1063
+ const P = A(R);
1064
+ k.push(
1065
+ /* @__PURE__ */ le(
1066
+ O,
958
1067
  {
959
- ...p,
1068
+ ...h,
960
1069
  ariaAttributes: {
961
- "aria-posinset": S + 1,
962
- "aria-setsize": c,
1070
+ "aria-posinset": R + 1,
1071
+ "aria-setsize": v,
963
1072
  role: "listitem"
964
1073
  },
965
- key: a ? a(S, p) : S,
966
- index: S,
967
- style: {
1074
+ key: c ? c(R, h) : R,
1075
+ index: R,
1076
+ style: V ? { width: "100%" } : {
968
1077
  position: "absolute",
969
1078
  left: 0,
970
- transform: `translateY(${A.scrollOffset}px)`,
1079
+ transform: `translateY(${P.scrollOffset}px)`,
971
1080
  // In case of dynamic row heights, don't specify a height style
972
1081
  // otherwise a default/estimated height would mask the actual height
973
- height: T ? void 0 : A.size,
1082
+ height: m ? void 0 : P.size,
974
1083
  width: "100%"
975
1084
  }
976
1085
  }
977
1086
  )
978
1087
  );
979
1088
  }
980
- return M;
1089
+ return k;
981
1090
  }, [
982
- w,
983
- F,
984
- T,
985
- c,
986
- a,
987
- p,
1091
+ O,
1092
+ A,
988
1093
  m,
989
- v
990
- ]), G = /* @__PURE__ */ oe(
1094
+ V,
1095
+ v,
1096
+ c,
1097
+ h,
1098
+ z,
1099
+ w
1100
+ ]), ie = /* @__PURE__ */ re(
991
1101
  "div",
992
1102
  {
993
1103
  "aria-hidden": !0,
1104
+ [ve]: "",
994
1105
  style: {
995
- height: b(),
1106
+ // Rows rendered in flow layout already take up space
1107
+ position: V ? "absolute" : void 0,
1108
+ top: V ? 0 : void 0,
1109
+ height: G(),
996
1110
  width: "100%",
997
1111
  zIndex: -1
998
1112
  }
999
- }
1000
- );
1001
- return C(
1002
- u,
1113
+ },
1114
+ "sizer"
1115
+ ), K = /* @__PURE__ */ re(ue, { children: e }, "children"), N = /* @__PURE__ */ re(ue, { children: Z }, "rows");
1116
+ return le(
1117
+ p,
1003
1118
  {
1004
1119
  role: "list",
1005
1120
  ...x,
1006
1121
  className: t,
1007
- ref: B,
1122
+ ref: D,
1008
1123
  style: {
1009
1124
  position: "relative",
1010
1125
  maxHeight: "100%",
1011
1126
  flexGrow: 1,
1012
1127
  overflowY: "auto",
1013
- ...h
1128
+ ...d
1014
1129
  }
1015
1130
  },
1016
- y,
1017
- e,
1018
- G
1131
+ ...V ? [K, N] : [N, K],
1132
+ ie
1019
1133
  );
1020
1134
  }
1021
- function $e({
1135
+ function pe(e) {
1136
+ const t = /* @__PURE__ */ new Map();
1137
+ return e !== void 0 && e.forEach((s, o) => {
1138
+ Number.isFinite(s) && s > 0 && t.set(o, s);
1139
+ }), t;
1140
+ }
1141
+ function Ye({
1022
1142
  defaultRowHeight: e,
1023
- key: t
1143
+ initialRowHeights: t,
1144
+ key: s
1024
1145
  }) {
1025
- const [s, r] = V({
1026
- key: t,
1027
- map: /* @__PURE__ */ new Map()
1146
+ const [o, r] = M(() => ({
1147
+ key: s,
1148
+ map: pe(t)
1149
+ }));
1150
+ o.key !== s && r({
1151
+ key: s,
1152
+ map: pe(t)
1028
1153
  });
1029
- s.key !== t && r({
1030
- key: t,
1031
- map: /* @__PURE__ */ new Map()
1032
- });
1033
- const { map: n } = s, o = $(() => {
1034
- let i = 0;
1035
- return n.forEach((u) => {
1036
- i += u;
1037
- }), i === 0 ? e : i / n.size;
1038
- }, [e, n]), d = $(
1039
- (i) => {
1040
- const u = n.get(i);
1041
- return u !== void 0 ? u : e;
1154
+ const { map: i } = o, n = U(() => {
1155
+ let u = 0;
1156
+ return i.forEach((p) => {
1157
+ u += p;
1158
+ }), u === 0 ? e : u / i.size;
1159
+ }, [e, i]), l = U(
1160
+ (u) => {
1161
+ const p = i.get(u);
1162
+ return p !== void 0 ? p : e;
1042
1163
  },
1043
- [e, n]
1044
- ), l = $((i, u) => {
1045
- r((h) => {
1046
- if (h.map.get(i) === u)
1047
- return h;
1048
- const x = new Map(h.map);
1049
- return x.set(i, u), {
1050
- ...h,
1164
+ [e, i]
1165
+ ), a = U((u, p) => {
1166
+ r((d) => {
1167
+ if (d.map.get(u) === p)
1168
+ return d;
1169
+ const x = new Map(d.map);
1170
+ return x.set(u, p), {
1171
+ ...d,
1051
1172
  map: x
1052
1173
  };
1053
1174
  });
1054
- }, []), c = ee(
1055
- (i) => {
1056
- i.length !== 0 && i.forEach((u) => {
1057
- const { borderBoxSize: h, target: x } = u, p = x.getAttribute(Z);
1058
- L(
1059
- p !== null,
1060
- `Invalid ${Z} attribute value`
1175
+ }, []), v = ee(
1176
+ (u) => {
1177
+ u.length !== 0 && u.forEach((p) => {
1178
+ const { borderBoxSize: d, target: x } = p, h = x.getAttribute(oe);
1179
+ $(
1180
+ h !== null,
1181
+ `Invalid ${oe} attribute value`
1061
1182
  );
1062
- const w = parseInt(p), { blockSize: g } = h[0];
1063
- g && l(w, g);
1183
+ const O = parseInt(h), { blockSize: b } = d[0];
1184
+ b && a(O, b);
1064
1185
  });
1065
1186
  }
1066
- ), [f] = V(() => {
1067
- if (typeof ResizeObserver < "u")
1068
- return new ResizeObserver(c);
1069
- });
1070
- te(() => {
1071
- if (f)
1072
- return () => {
1073
- f.disconnect();
1187
+ ), f = H(null);
1188
+ ne(
1189
+ () => () => {
1190
+ f.current?.resizeObserver.disconnect(), f.current = null;
1191
+ },
1192
+ []
1193
+ );
1194
+ const c = U(
1195
+ (u) => {
1196
+ const p = [];
1197
+ return u.forEach((d) => {
1198
+ const x = ae(d);
1199
+ if (f.current?.view !== x) {
1200
+ f.current?.resizeObserver.disconnect();
1201
+ const O = Oe(d);
1202
+ f.current = O ? {
1203
+ resizeObserver: new O(v),
1204
+ view: x
1205
+ } : null;
1206
+ }
1207
+ const h = f.current?.resizeObserver;
1208
+ h && (h.observe(d), p.push([d, h]));
1209
+ }), () => {
1210
+ p.forEach(
1211
+ ([d, x]) => x.unobserve(d)
1212
+ );
1074
1213
  };
1075
- }, [f]);
1076
- const a = $(
1077
- (i) => f ? (i.forEach((u) => f.observe(u)), () => {
1078
- i.forEach((u) => f.unobserve(u));
1079
- }) : () => {
1080
1214
  },
1081
- [f]
1215
+ [v]
1082
1216
  );
1083
- return H(
1217
+ return q(
1084
1218
  () => ({
1085
- getAverageRowHeight: o,
1086
- getRowHeight: d,
1087
- setRowHeight: l,
1088
- observeRowElements: a
1219
+ getAverageRowHeight: n,
1220
+ getRowHeight: l,
1221
+ setRowHeight: a,
1222
+ observeRowElements: c
1089
1223
  }),
1090
- [o, d, l, a]
1224
+ [n, l, a, c]
1091
1225
  );
1092
1226
  }
1093
- const He = V, Fe = q;
1094
- let ne = -1;
1095
- function We(e = !1) {
1096
- if (ne === -1 || e) {
1097
- const t = document.createElement("div"), s = t.style;
1098
- s.width = "50px", s.height = "50px", s.overflow = "scroll", document.body.appendChild(t), ne = t.offsetWidth - t.clientWidth, document.body.removeChild(t);
1227
+ const De = M, Xe = H, ge = /* @__PURE__ */ new WeakMap();
1228
+ function Ze(e = !1, t = typeof document < "u" ? document : void 0) {
1229
+ if (t === void 0)
1230
+ return 0;
1231
+ let s = ge.get(t);
1232
+ if (s === void 0 || e) {
1233
+ const o = t.createElement("div"), r = o.style;
1234
+ r.width = "50px", r.height = "50px", r.overflow = "scroll", t.body.appendChild(o), s = o.offsetWidth - o.clientWidth, t.body.removeChild(o), ge.set(t, s);
1099
1235
  }
1100
- return ne;
1236
+ return s;
1101
1237
  }
1102
1238
  export {
1103
- Le as Grid,
1104
- ke as List,
1105
- We as getScrollbarSize,
1106
- $e as useDynamicRowHeight,
1107
- Ve as useGridCallbackRef,
1108
- Re as useGridRef,
1109
- He as useListCallbackRef,
1110
- Fe as useListRef
1239
+ qe as Grid,
1240
+ _e as List,
1241
+ Ze as getScrollbarSize,
1242
+ Ye as useDynamicRowHeight,
1243
+ Ge as useGridCallbackRef,
1244
+ Ne as useGridRef,
1245
+ De as useListCallbackRef,
1246
+ Xe as useListRef
1111
1247
  };
1112
1248
  //# sourceMappingURL=react-window.js.map